import type { FeatureId } from "./config"; /** * Interface for the core FeaturesRepository. * This interface defines methods for checking feature flags and team feature access. */ export interface IFeaturesRepository { checkIfFeatureIsEnabledGlobally(slug: FeatureId): Promise; checkIfUserHasFeature(userId: number, slug: string): Promise; checkIfUserHasFeatureNonHierarchical(userId: number, slug: string): Promise; checkIfTeamHasFeature(teamId: number, slug: FeatureId): Promise; getTeamsWithFeatureEnabled(slug: FeatureId): Promise; setUserFeatureState( input: | { userId: number; featureId: FeatureId; state: "enabled" | "disabled"; assignedBy: string } | { userId: number; featureId: FeatureId; state: "inherit" } ): Promise; setTeamFeatureState( input: | { teamId: number; featureId: FeatureId; state: "enabled" | "disabled"; assignedBy: string } | { teamId: number; featureId: FeatureId; state: "inherit" } ): Promise; }