/** * Feature Flag Service * * Domain service that wraps the provider and provides a unified API * for feature flag operations. This is the main entry point for * feature flag functionality. * * @fileoverview Domain service for feature flags * @version 1.0.0 */ import type { FeatureFlagProvider, FeatureFlagConfig, FeatureFlagContext, FeatureFlagEvaluation, FeatureFlagValue, FeatureFlag, FeatureFlagRule, CreateFlagRequest } from '@plyaz/types'; /** * Feature Flag Service * * The main service for feature flag operations. Wraps the provider * and adds logging, error handling, and lifecycle management. * * @example * ```typescript * // Create via factory * const service = await FeatureFlagServiceFactory.createAndInitialize(config, FEATURES); * * // Use directly * const isEnabled = await service.isEnabled('MY_FEATURE'); * const flag = await service.createFlag({ key: 'NEW_FLAG', value: true, name: 'New Flag' }); * ``` */ export declare class FeatureFlagService { private readonly provider; private readonly config; private readonly logger; private isInitialized; constructor(provider: FeatureFlagProvider, config: FeatureFlagConfig); /** * Initializes the service and underlying provider. */ initialize(): Promise; /** * Disposes the service and underlying provider. */ dispose(): void; /** * Refreshes the provider cache. */ refresh(): Promise; /** * Gets whether the service is initialized. */ getIsInitialized(): boolean; /** * Gets the provider type. */ getProviderType(): string; /** * Evaluates a feature flag. */ getFlag(key: FeatureFlagKey, context?: FeatureFlagContext): Promise>; /** * Gets all feature flag evaluations. */ getAllFlags(context?: FeatureFlagContext): Promise>>; /** * Checks if a feature flag is enabled. */ isEnabled(key: FeatureFlagKey, context?: FeatureFlagContext): Promise; /** * Gets the value of a feature flag. */ getValue(key: FeatureFlagKey, context?: FeatureFlagContext): Promise; /** * Creates a new feature flag. */ createFlag(data: CreateFlagRequest): Promise>; /** * Updates an existing feature flag. */ updateFlag(key: FeatureFlagKey, data: Partial>): Promise>; /** * Deletes a feature flag. */ deleteFlag(key: FeatureFlagKey): Promise; /** * Gets all rules for a specific flag. */ getRules(key: FeatureFlagKey): Promise[]>; /** * Gets all enabled rules. */ getAllRules(): Promise[]>; /** * Sets a runtime override for a flag. */ setOverride(key: FeatureFlagKey, value: FeatureFlagValue): void; /** * Removes a runtime override for a flag. */ removeOverride(key: FeatureFlagKey): void; /** * Clears all runtime overrides. */ clearOverrides(): void; /** * Subscribes to flag changes. */ subscribe(callback: () => void): () => void; /** * Gets the underlying provider instance. * Use with caution - prefer service methods. */ getProvider(): FeatureFlagProvider; } //# sourceMappingURL=service.d.ts.map