import { FeatureFlag, Segment, SegmentId } from '../advanced/types'; import { FlagProvider, WebSocketProviderConfig, FlagChangeListener, ProviderStats } from './types'; /** * Connection state. */ type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting'; /** * WebSocket provider for real-time flag updates. */ export declare class WebSocketProvider implements FlagProvider { readonly name: string; readonly priority: number; private socket; private flags; private segments; private listeners; private ready; private config; private connectionState; private reconnectAttempts; private reconnectTimer; private pingTimer; private messageQueue; private lastMessageTime; constructor(config: WebSocketProviderConfig); /** * Initialize the provider. */ initialize(): Promise; /** * Connect to the WebSocket server. */ connect(): void; /** * Disconnect from the WebSocket server. */ disconnect(): void; /** * Get all flags. */ getFlags(): Promise; /** * Get a flag by key. */ getFlag(key: string): Promise; /** * Get all segments. */ getSegments(): Promise; /** * Get a segment by ID. */ getSegment(id: SegmentId): Promise; /** * Check if the provider is ready. */ isReady(): boolean; /** * Check if the provider is healthy. */ isHealthy(): Promise; /** * Get connection state. */ getConnectionState(): ConnectionState; /** * Get connection status. */ getConnectionStatus(): { state: ConnectionState; reconnectAttempts: number; lastMessageTime: Date | null; queuedMessages: number; }; /** * Get provider statistics. */ getStats(): ProviderStats; /** * Subscribe to flag changes. */ subscribe(listener: FlagChangeListener): () => void; /** * Shutdown the provider. */ shutdown(): Promise; private setupSocketHandlers; private handleMessage; private handleFlagsMessage; private handleFlagUpdate; private handleFlagDelete; private handleSegmentsMessage; private handleSegmentUpdate; private handleDisconnect; private scheduleReconnect; private stopReconnect; private startPing; private stopPing; private send; private flushMessageQueue; private deserializeFlag; private deserializeSegment; private emitChange; private log; } /** * Create a WebSocket provider instance. */ export declare function createWebSocketProvider(config: WebSocketProviderConfig): WebSocketProvider; export {};