/** * Adaptive, application-path connection measurement for preflight. * * The transport is deliberately injectable: production uses HTTP requests to * the ProctorKit API while tests supply deterministic samples without moving * real bytes. The result distinguishes representative throughput from a * conservative lower percentile; pass/fail policy should use the conservative * value so one unusually fast request cannot hide an unstable connection. */ export interface ConnectionTransferSample { bytes: number; durationMs: number; mbps: number; } export interface ConnectionProbeTransport { latency(timeoutMs: number): Promise; download(bytes: number, timeoutMs: number): Promise; upload(bytes: number, timeoutMs: number): Promise; } export interface ConnectionQualityOptions { /** Hard ceiling for latency + download + upload together. Default: 10s. */ maxDurationMs?: number; /** Number of idle round-trip samples. Default: 5. */ latencySamples?: number; /** Adaptive payload ladder. Default targets readiness around 2 Mbps. */ payloadSizes?: number[]; /** A transfer lasting this long is considered representative. Default: 750ms. */ stableSampleMs?: number; /** Injectable monotonic clock. */ now?: () => number; } export interface ConnectionQualityResult { downloadMbps: number | null; uploadMbps: number | null; conservativeDownloadMbps: number | null; conservativeUploadMbps: number | null; latencyMs: number | null; jitterMs: number | null; downloadSamples: ConnectionTransferSample[]; uploadSamples: ConnectionTransferSample[]; latencySamples: number[]; totalDurationMs: number; } export interface HttpConnectionProbeOptions { downloadUrl: string; uploadUrl: string; headers?: Record; fetchFn?: typeof fetch; now?: () => number; } /** Measure connection quality without letting a stalled transport freeze the UI. */ export declare function measureConnectionQuality(transport: ConnectionProbeTransport, options?: ConnectionQualityOptions): Promise; /** Build the real browser transport for the ProctorKit network-test routes. */ export declare function createHttpConnectionProbe(options: HttpConnectionProbeOptions): ConnectionProbeTransport; export declare function transferSample(bytes: number, durationMs: number): ConnectionTransferSample; //# sourceMappingURL=connection-quality.d.ts.map