export interface HttpLogHeaders { headers: Record; meta: { redactedHeaders: string[]; hasAuthHeader: boolean; }; } export interface HttpLogBody { bodySample?: string; bodyLength?: number; bodyTruncated?: boolean; } export interface HttpCompleteEvent { stage: "request-complete"; requestId: string; ts: number; durationMs: number; success: boolean; request: { method: string; url: string; credentials?: RequestCredentials; headers: HttpLogHeaders; } & HttpLogBody; response?: { status: number; ok: boolean; headers: HttpLogHeaders; } & HttpLogBody; error?: { message?: string; name?: string; stackSample?: string; }; } export interface CallbackLogEvent { stage: "callback-url"; ts: number; success: boolean; context?: string; message: string; reason: string; suggestion: string; rawCallbackUrl?: string; fallbackUrl?: string; fallbackApplied: boolean; } type LogEvent = HttpCompleteEvent | CallbackLogEvent; declare function redactHeaders(headers: HeadersInit | undefined): HttpLogHeaders; export declare function sampleRequestBody(body: BodyInit | null | undefined): HttpLogBody; export declare function sampleResponseBody(res: Response): Promise; export declare function buildCompleteEvent(params: { requestId: string; start: number; input: RequestInfo | URL; init: RequestInit; res?: Response; error?: unknown; responseBody?: HttpLogBody; }): HttpCompleteEvent; export declare const logger: { debug: (event: LogEvent) => void; info: (event: LogEvent) => void; warn: (event: LogEvent) => void; error: (event: LogEvent) => void; redactHeaders: typeof redactHeaders; sampleRequestBody: typeof sampleRequestBody; sampleResponseBody: typeof sampleResponseBody; buildCompleteEvent: typeof buildCompleteEvent; }; export {};