import { Repository } from 'typeorm'; import { FeatureFlag } from '../entities/feature-flag.entity'; import { TenantFlag } from '../entities/tenant-flag.entity'; import { UserFlag } from '../entities/user-flag.entity'; import { CreateFlagDto } from '../dto/create-flag.dto'; import { UpdateFlagDto } from '../dto/update-flag.dto'; import { SetTenantFlagDto, SetUserFlagDto } from '../dto/set-tenant-flag.dto'; export interface EvaluationContext { tenantId?: string; userId?: string; planId?: string; attributes?: Record; } export interface FlagEvaluation { key: string; enabled: boolean; value: any; source: 'default' | 'global' | 'tenant' | 'user' | 'rollout'; } export declare class FeatureFlagsService { private readonly flagRepository; private readonly tenantFlagRepository; private readonly userFlagRepository; constructor(flagRepository: Repository, tenantFlagRepository: Repository, userFlagRepository: Repository); createFlag(dto: CreateFlagDto): Promise; updateFlag(id: string, dto: UpdateFlagDto): Promise; deleteFlag(id: string): Promise; getAllFlags(): Promise; getFlagByKey(key: string): Promise; getFlagById(id: string): Promise; toggleFlag(id: string, enabled: boolean): Promise; setTenantFlag(tenantId: string, dto: SetTenantFlagDto): Promise; removeTenantFlag(tenantId: string, flagId: string): Promise; getTenantFlags(tenantId: string): Promise; setUserFlag(tenantId: string, dto: SetUserFlagDto): Promise; removeUserFlag(userId: string, flagId: string): Promise; getUserFlags(tenantId: string, userId: string): Promise; evaluateFlag(key: string, context: EvaluationContext): Promise; evaluateAllFlags(context: EvaluationContext): Promise>; isEnabled(key: string, context: EvaluationContext): Promise; getValue(key: string, context: EvaluationContext, defaultValue: T): Promise; private isInRollout; }