type WidgetTokenFetcher = () => Promise<{ widgetToken: string; exp?: number; }>; type WidgetTokenState = { status: 'loading'; } | { status: 'ready'; widgetToken: string; exp?: number; isRefreshing: boolean; lastError?: unknown; } | { status: 'error'; error: unknown; }; interface WidgetTokenManager { start(): void; stop(): void; refresh(): Promise; getState(): WidgetTokenState; subscribe(listener: () => void): () => void; } interface CreateWidgetTokenManagerOptions { fetcher: WidgetTokenFetcher; /** Refresh `leadSeconds` before `exp`. Default 60. */ leadSeconds?: number; } declare function createWidgetTokenManager(options: CreateWidgetTokenManagerOptions): WidgetTokenManager; export { createWidgetTokenManager }; export type { CreateWidgetTokenManagerOptions, WidgetTokenFetcher, WidgetTokenManager, WidgetTokenState };