import { FlagProvider, BaseProviderConfig } from './types'; /** * @fileoverview Feature flag provider module exports. * * This module provides multiple flag data source implementations: * - Local/static provider for offline-first * - Remote provider for API-based flags * - Cached provider for performance * - Composite provider for combining sources * - Polling provider for periodic updates * - WebSocket provider for real-time updates * * @module flags/providers * * @example * ```typescript * import { * LocalProvider, * RemoteProvider, * CachedProvider, * CompositeProvider, * } from '@/lib/flags/providers'; * * // Create a robust provider setup * const localProvider = new LocalProvider({ * flags: defaultFlags, * persistToStorage: true, * }); * * const remoteProvider = new RemoteProvider({ * endpoint: 'https://api.example.com/flags', * apiKey: process.env.FLAG_API_KEY, * }); * * const cachedRemote = new CachedProvider({ * provider: remoteProvider, * ttl: 60000, * }); * * const composite = new CompositeProvider({ * providers: [localProvider, cachedRemote], * strategy: 'priority', * }); * * await composite.initialize(); * ``` */ export type { FlagProvider, WritableFlagProvider, FlagChangeType, FlagChangeEvent, FlagChangeListener, BaseProviderConfig, LocalProviderConfig, RemoteProviderConfig, CachedProviderConfig, CompositeProviderConfig, PollingProviderConfig, WebSocketProviderConfig, RetryConfig, ReconnectConfig, ProviderHealth, ProviderStats, ProviderFactory, ProviderRegistryEntry, } from './types'; export { LocalProvider, createLocalProvider } from './local-provider'; export { RemoteProvider, createRemoteProvider } from './remote-provider'; export { CachedProvider, createCachedProvider } from './cached-provider'; export { CompositeProvider, createCompositeProvider } from './composite-provider'; export { PollingProvider, createPollingProvider } from './polling-provider'; export { WebSocketProvider, createWebSocketProvider } from './websocket-provider'; /** * Provider type names. */ export type ProviderType = 'local' | 'remote' | 'cached' | 'composite' | 'polling' | 'websocket'; /** * Create a provider by type. */ export declare function createProvider(type: ProviderType, config: BaseProviderConfig & Record): FlagProvider; /** * Create a provider chain with caching and fallback. */ export declare function createProviderChain(options: { remote: { endpoint: string; apiKey?: string; timeout?: number; }; local?: { flags?: readonly import('../advanced/types').FeatureFlag[]; persistToStorage?: boolean; }; cache?: { ttl?: number; staleWhileRevalidate?: number; }; polling?: { interval?: number; pauseWhenHidden?: boolean; }; debug?: boolean; }): FlagProvider;