import type { DoctorCheck } from "./doctor-types.js"; export interface BuzzDoctorInventory { target: "buzz"; runtime: { node: string; webSocket: "native" | "missing"; }; identity: { kind: "nostr-key"; credentialSource: "BUZZ_PRIVATE_KEY"; configured: boolean; }; relay: { protocol?: "ws:" | "wss:"; host?: string; requiredNips: number[]; liveChecked: boolean; }; scope: { communityConfigured: boolean; channelCount: number; }; forwarding: { signedEnvelope: "hmac-sha256-v1"; urlOrigin?: string; secretSource: "BUZZ_SHARED_SECRET"; }; persistence: { mode: "postgres-lakebase" | "missing"; credentialSource?: "DATABASE_URL" | "PGHOST"; durable: boolean; }; certification?: BuzzDoctorCertificationEvidence; recipe: { version: 3; files: string[]; }; } interface BuzzDoctorOperationalEvidence { checkedAt: string; cursor: { positionSeconds?: number; relayLagSeconds?: number; updateAgeSeconds?: number; }; deadLetters: { unreconciled: number; oldestAgeSeconds?: number; }; deliveries: { prepared: number; published: number; }; } interface BuzzDoctorCertificationEvidence { profile: "live-read-only-v1"; relayAuthenticated: boolean; relayMember: boolean; channelMembership: { checked: number; admitted: number; }; databaseConnected: boolean; operational?: BuzzDoctorOperationalEvidence; } interface BuzzEventLike { id: string; pubkey: string; created_at: number; kind: number; tags: string[][]; content: string; sig: string; } interface BuzzRelayCertificationClient { publicKey(secretKey: string): string; verifyEvent(event: BuzzEventLike): boolean; queryEvents(options: { relayUrl: string; secretKey: string; filters: ReadonlyArray>; requestTimeoutMs: number; }): Promise; } interface BuzzDatabaseCertificationClient { inspect(options: { consumerId: string; tablePrefix?: string; }): Promise; close(): Promise; } export interface BuzzDoctorDeps { cwd?: string; env?: Record; fetchImpl?: typeof fetch; readFile?: (filePath: string) => Promise; nodeVersion?: string; hasNativeWebSocket?: boolean; live?: boolean; requestTimeoutMs?: number; relayCertificationClient?: BuzzRelayCertificationClient; databaseCertificationClient?: BuzzDatabaseCertificationClient; } export interface BuzzDoctorReport { checks: DoctorCheck[]; inventory: BuzzDoctorInventory; } export declare function runBuzzDoctor(deps?: BuzzDoctorDeps): Promise; export declare function runBuzzDoctorChecks(deps?: BuzzDoctorDeps): Promise; export declare function inspectBuzzDoctorInventory(deps?: BuzzDoctorDeps): BuzzDoctorInventory; export {}; //# sourceMappingURL=doctor-buzz.d.ts.map