import { Agent } from "node:http"; import { DatabaseSync } from "node:sqlite"; //#region src/proxy-capture/env.d.ts type DebugProxySettings = { enabled: boolean; required: boolean; proxyUrl?: string; dbPath: string; blobDir: string; certDir: string; sessionId: string; sourceProcess: string; }; declare function resolveDebugProxySettings(env?: NodeJS.ProcessEnv): DebugProxySettings; declare function createDebugProxyWebSocketAgent(settings: DebugProxySettings): Agent | undefined; declare function resolveEffectiveDebugProxyUrl(configuredProxyUrl?: string): string | undefined; //#endregion //#region src/proxy-capture/types.d.ts type CaptureProtocol = "http" | "https" | "sse" | "ws" | "wss" | "connect"; type CaptureDirection = "outbound" | "inbound" | "local"; type CaptureEventKind = "connect" | "tls-handshake" | "request" | "response" | "ws-open" | "ws-frame" | "ws-close" | "error" | "retry-link"; type CaptureSessionRecord = { id: string; startedAt: number; endedAt?: number; mode: string; sourceScope: "openclaw"; sourceProcess: string; proxyUrl?: string; dbPath: string; blobDir: string; }; type CaptureBlobRecord = { blobId: string; path: string; encoding: "gzip"; sizeBytes: number; sha256: string; contentType?: string; }; type CaptureEventRecord = { sessionId: string; ts: number; sourceScope: "openclaw"; sourceProcess: string; protocol: CaptureProtocol; direction: CaptureDirection; kind: CaptureEventKind; flowId: string; method?: string; host?: string; path?: string; status?: number; closeCode?: number; contentType?: string; headersJson?: string; dataText?: string; dataBlobId?: string; dataSha256?: string; errorText?: string; metaJson?: string; }; type CaptureQueryPreset = "double-sends" | "retry-storms" | "cache-busting" | "ws-duplicate-frames" | "missing-ack" | "error-bursts"; type CaptureQueryRow = Record; type CaptureSessionSummary = { id: string; startedAt: number; endedAt?: number; mode: string; sourceProcess: string; proxyUrl?: string; eventCount: number; }; type CaptureObservedDimension = { value: string; count: number; }; type CaptureSessionCoverageSummary = { sessionId: string; totalEvents: number; unlabeledEventCount: number; providers: CaptureObservedDimension[]; apis: CaptureObservedDimension[]; models: CaptureObservedDimension[]; hosts: CaptureObservedDimension[]; localPeers: CaptureObservedDimension[]; }; //#endregion //#region src/proxy-capture/store.sqlite.d.ts declare class DebugProxyCaptureStore { readonly dbPath: string; readonly blobDir: string; readonly db: DatabaseSync; private readonly walMaintenance; private closed; constructor(dbPath: string, blobDir: string); close(): void; get isClosed(): boolean; upsertSession(session: CaptureSessionRecord): void; endSession(sessionId: string, endedAt?: number): void; persistPayload(data: Buffer, contentType?: string): CaptureBlobRecord; recordEvent(event: CaptureEventRecord): void; listSessions(limit?: number): CaptureSessionSummary[]; getSessionEvents(sessionId: string, limit?: number): Array>; summarizeSessionCoverage(sessionId: string): CaptureSessionCoverageSummary; readBlob(blobId: string): string | null; queryPreset(preset: CaptureQueryPreset, sessionId?: string): CaptureQueryRow[]; purgeAll(): { sessions: number; events: number; blobs: number; }; deleteSessions(sessionIds: string[]): { sessions: number; events: number; blobs: number; }; } declare function getDebugProxyCaptureStore(dbPath: string, blobDir: string): DebugProxyCaptureStore; declare function closeDebugProxyCaptureStore(): void; declare function acquireDebugProxyCaptureStore(dbPath: string, blobDir: string): { store: DebugProxyCaptureStore; release: () => void; }; declare function persistEventPayload(store: DebugProxyCaptureStore, params: { data?: Buffer | string | null; contentType?: string; previewLimit?: number; }): { dataText?: string; dataBlobId?: string; dataSha256?: string; }; declare function safeJsonString(value: unknown): string | undefined; //#endregion //#region src/proxy-capture/runtime.d.ts type DebugProxyCaptureStoreLike = Pick, "upsertSession" | "endSession" | "recordEvent">; type DebugProxyCaptureRuntimeDeps = { getStore?: (dbPath: string, blobDir: string) => DebugProxyCaptureStoreLike; closeStore?: typeof closeDebugProxyCaptureStore; persistEventPayload?: (store: DebugProxyCaptureStoreLike, payload: Parameters[1]) => ReturnType; safeJsonString?: typeof safeJsonString; fetchTarget?: typeof globalThis; }; declare function isDebugProxyGlobalFetchPatchInstalled(): boolean; declare function initializeDebugProxyCapture(mode: string, resolved?: DebugProxySettings, deps?: DebugProxyCaptureRuntimeDeps): void; declare function finalizeDebugProxyCapture(resolved?: DebugProxySettings, deps?: DebugProxyCaptureRuntimeDeps): void; declare function captureHttpExchange(params: { url: string; method: string; requestHeaders?: Headers | Record | undefined; requestBody?: BodyInit | Buffer | string | null; response: Response; transport?: "http" | "sse"; flowId?: string; meta?: Record; }, resolved?: DebugProxySettings, deps?: DebugProxyCaptureRuntimeDeps): void; declare function captureWsEvent(params: { url: string; direction: "outbound" | "inbound" | "local"; kind: "ws-open" | "ws-frame" | "ws-close" | "error"; flowId: string; payload?: string | Buffer; closeCode?: number; errorText?: string; meta?: Record; }): void; //#endregion export { type CaptureEventRecord, type CaptureQueryPreset, type CaptureQueryRow, type CaptureSessionSummary, DebugProxyCaptureStore, acquireDebugProxyCaptureStore, captureHttpExchange, captureWsEvent, closeDebugProxyCaptureStore, createDebugProxyWebSocketAgent, finalizeDebugProxyCapture, getDebugProxyCaptureStore, initializeDebugProxyCapture, isDebugProxyGlobalFetchPatchInstalled, resolveDebugProxySettings, resolveEffectiveDebugProxyUrl };