import type { SessionSnapshot, SessionState } from "../models/session-state"; import type { SessionActionDelays, SessionTimeoutConfig, DomActivityEventName } from "../models/session-timeout-config"; export interface StorageAdapter { read(key: string): string | null; write(key: string, value: string): void; remove(key: string): void; } export interface PersistedSnapshot { state: SessionState; idleStartAt: number | null; countdownEndAt: number | null; lastActivityAt: number | null; remainingMs: number; paused: boolean; updatedAt: number; } export interface PersistedConfig { version: 1; updatedAt: number; config: SerializedConfig; } interface SerializedConfig { idleGraceMs: number; countdownMs: number; warnBeforeMs: number; pollingMs: number; activityResetCooldownMs?: number; storageKeyPrefix: string; strategy: SessionTimeoutConfig["strategy"]; httpActivity: SerializedHttpConfig; actionDelays?: Partial; openNewTabBehavior: SessionTimeoutConfig["openNewTabBehavior"]; routerCountsAsActivity: boolean; domActivityEvents?: DomActivityEventName[]; debounceMouseMs: number; debounceKeyMs: number; maxExtendPerSession: number; onExpire: SessionTimeoutConfig["onExpire"]; timeSource: SessionTimeoutConfig["timeSource"]; serverTimeEndpoint?: string; logging: SessionTimeoutConfig["logging"]; resetOnWarningActivity: boolean; ignoreUserActivityWhenPaused: boolean; allowManualExtendWhenExpired: boolean; } interface SerializedHttpConfig { enabled: boolean; strategy: SessionTimeoutConfig["httpActivity"]["strategy"]; allowlist: Array<{ source: string; flags: string; }>; denylist: Array<{ source: string; flags: string; }>; headerFlag?: string; contextToken?: string; ignoreOnInitMs: number; cooldownMs: number; onlyWhenTabFocused: boolean; primaryTabOnly: boolean; } export declare function createStorage(): StorageAdapter; export declare function persistSnapshot(adapter: StorageAdapter, prefix: string, snapshot: SessionSnapshot): void; export declare function readSnapshot(adapter: StorageAdapter, prefix: string): PersistedSnapshot | null; export declare function clearSnapshot(adapter: StorageAdapter, prefix: string): void; export declare function persistConfig(adapter: StorageAdapter, prefix: string, config: SessionTimeoutConfig): void; export declare function readPersistedConfig(adapter: StorageAdapter, prefix: string): SessionTimeoutConfig | null; export {};