import { ApiClient } from '../utils/api'; /** Options accepted by RemoteConfigService constructor */ interface RemoteConfigOptions { apiClient: ApiClient; pollIntervalMs?: number; } type Subscriber = (value: T) => void; /** * RemoteConfigService * ------------------- * • Fetches staged config blob from `/config`. * • Polls every `pollIntervalMs` (default 60 s) with ETag / version optimization. * • Notifies per‑key subscribers on change. * • Persists last known config to localStorage for fast cold‑start. */ export declare class RemoteConfigService { private apiClient; private pollIntervalMs; private timer; private version; private store; private subscribers; constructor(opts: RemoteConfigOptions); /** Initial fetch + start polling */ bootstrap(): Promise; /** Typed getter with optional fallback */ get(key: string, fallback?: T): Promise; /** Get entire config store */ getConfig(): Promise>; /** Subscribe to updates for a single key; returns unsubscribe fn */ subscribe(key: string, cb: Subscriber): () => void; /** Fetch config; apply if version changed */ private fetchAndApply; /** Notify subscribers only for keys whose values changed */ private notifyDiff; /** Persist current store & version */ private persistStore; /** Load persisted store */ private loadPersistedStore; } export {}; //# sourceMappingURL=RemoteConfigService.d.ts.map