import { EvaluationContext } from './interfaces/evaluation-context.interface'; import { BooleanEvaluationDetails, EvaluateBooleanOptions } from './interfaces/evaluation-details.interface'; import { FeatureFlagGuardOptions } from './interfaces/feature-flag.interface'; import { FeatureFlagLifecycleMetadata, FlagKey, FlagRegistry } from './interfaces/flag-registry.interface'; import { FeatureFlagService } from './services/feature-flag.service'; export interface TypedFeatureFlagClient { isEnabled>(flagKey: K, context?: EvaluationContext, options?: EvaluateBooleanOptions): Promise; evaluateBoolean>(flagKey: K, context?: EvaluationContext, options?: EvaluateBooleanOptions): Promise; registry: TFlags; } export interface TypedFeatureFlagDecorators { FeatureFlag>(flagKey: K, options?: FeatureFlagGuardOptions): ClassDecorator & MethodDecorator; } export type FlagLifecycleStatusName = 'active' | 'stale' | 'expired'; export interface FlagLifecycleStatus extends FeatureFlagLifecycleMetadata { status: FlagLifecycleStatusName; tags: string[]; staleAt?: Date; expiresAt?: Date; } export declare function defineFlags(flags: TFlags): TFlags; export declare function createFeatureFlagClient(service: FeatureFlagService, registry: TFlags): TypedFeatureFlagClient; export declare function createFeatureFlagDecorators(registry: TFlags): TypedFeatureFlagDecorators; export declare function getFlagLifecycleStatus(metadata: FeatureFlagLifecycleMetadata, now?: Date): FlagLifecycleStatus;