export type DatabaseOperationKind = "connect" | "query"; export interface DatabaseRequestTelemetry { operationCount: number; queryCount: number; rowsReturned: number; connectCount: number; catalogQueryCount: number; migrationTableQueryCount: number; retryCount: number; errorCount: number; timeoutCount: number; operationTotalMs: number; operationWallMs: number; queryTotalMs: number; connectTotalMs: number; slowestOperationMs: number; activeOperationCount: number; activeWindowStartedAt?: number; } export declare function createDatabaseRequestTelemetry(): DatabaseRequestTelemetry; export declare function claimStartupDatabaseTelemetry(): DatabaseRequestTelemetry | undefined; export declare function runWithDatabaseRequestTelemetry(telemetry: DatabaseRequestTelemetry, fn: () => T): T; /** * Returns false when the runtime cannot scope telemetry to the rest of the * request. workerd's AsyncLocalStorage implements `run()` but throws from * `enterWith()`, and a throw here escapes the Nitro request hook and skips * every hook after it, including the framework route readiness gate. */ export declare function enterDatabaseRequestTelemetry(telemetry: DatabaseRequestTelemetry): boolean; export declare function beginDatabaseOperation(operation: DatabaseOperationKind): (outcome: "success" | "error" | "timeout") => void; export declare function recordDatabaseRetry(): void; export declare function recordDatabaseQueryResult(sql: string, rowsReturned: number): void;