/** * Shared "wait until the network is quiet" primitive used by every * BrowserAdapter. Adapters feed their native request-lifecycle events into a * NetworkIdleTracker; the scanner calls waitForNetworkIdle() before reading * page HTML so late-arriving XHR/JS content is captured. */ export interface NetworkIdleOptions { /** Quiet window: required ms of zero busy requests before resolving. */ idleMs?: number; /** Minimum ms before idle may be declared (absorbs click->request race). */ floorMs?: number; /** A request still open after this many ms stops counting (hung/long-poll). */ staleMs?: number; /** Hard cap: resolve anyway after this many ms. */ timeout?: number; /** Poll cadence. */ pollMs?: number; } export interface NetworkIdleDeps { now?: () => number; sleep?: (ms: number) => Promise; /** Invoked when the hard cap is hit before idle was reached. */ onTimeout?: () => void; } export declare const NETWORK_IDLE_DEFAULTS: Required; export declare class NetworkIdleTracker { private readonly now; private inflight; constructor(now?: () => number); start(requestId: string, resourceType: string): void; end(requestId: string): void; clear(): void; /** In-flight requests that should gate idle: not persistent, not stale. */ activeCount(now: number, staleMs: number): number; } export declare function waitForNetworkIdle(tracker: NetworkIdleTracker, options?: NetworkIdleOptions, deps?: NetworkIdleDeps): Promise; //# sourceMappingURL=network-idle.d.ts.map