import { type AuditSafeCookie } from "./redact.js"; import type { HeaderMap, ResponseMode, SearchProviderId, WebFetchOutcome, WebSearchOutcome } from "./types.js"; export interface AuditError { kind: string; message: string; status?: number; } export interface AuditTlsInfo { protocol: string; cipher: string; subjectCN: string; issuerCN: string; notAfter: string; fingerprintSha256: string; } export interface AuditTimingInfo { dnsMs: number; tcpMs: number; tlsMs?: number; ttfbMs: number; totalMs: number; } /** * Single redirect hop entry in the audit log. Per Requirement 5.10 the * audit payload only carries `url` and `status` — the `Location` header * value is dropped because it can echo a session-bearing query string * that the redact pass would not otherwise classify as sensitive. */ export interface AuditRedirectHop { url: string; status: number; } export interface SearchAuditPayload { ok: boolean; provider: SearchProviderId; queryLength: number; resultCount: number; error?: AuditError; } export declare function buildSearchAuditPayload(outcome: WebSearchOutcome, queryLength: number): SearchAuditPayload; export interface FetchAuditPayload { ok: boolean; requestedUrl: string; finalUrl: string; status: number; bytesReceived: number; resolvedIp: string; finalHostname: string; responseMode: ResponseMode; hopCount: number; headers?: HeaderMap; cookies?: AuditSafeCookie[]; tls?: AuditTlsInfo; timing?: AuditTimingInfo; redirectChain?: AuditRedirectHop[]; error?: AuditError; } export declare function buildFetchAuditPayload(outcome: WebFetchOutcome): FetchAuditPayload;