import { type AtomicFaultInjector } from "./atomic-json.js"; import { ReceiverLeaseManager } from "./receiver-lease.js"; export type BridgePhase = "pending" | "injected" | "dlq"; export type BridgeDelivery = "steer" | "followUp" | "nextTurn" | "fresh-session"; export interface BridgeBinding { readonly rootId: string; readonly handle: string; } export interface BridgeJournalRecordV1 { readonly schema: 1; readonly id: string; readonly attempt: number; readonly phase: BridgePhase; readonly binding: BridgeBinding; readonly leaseGeneration: string; readonly targetSessionId: string | null; readonly delivery: BridgeDelivery | null; readonly claimedAt: string | null; readonly receiptWarning: string | null; readonly updatedAt: string; } export interface DiskProjectionEvidence { readonly messageId: string; readonly sessionId: string; readonly diskVisible: boolean; } export interface BridgeRetryAuditEvidence { readonly auditId: string; readonly originalMessageId: string; readonly retryCount: number; readonly retryState: "delivered"; readonly visibleMessageId: string; } export interface BridgeAttemptHistoryV1 { readonly schema: "pi-amq-attempt-history/v1"; readonly record: BridgeJournalRecordV1; readonly retryAudit: BridgeRetryAuditEvidence; } export interface BridgeJournalOptions { readonly namespaceDirectory: string; readonly leaseManager: ReceiverLeaseManager; readonly now?: () => Date; readonly atomicFault?: AtomicFaultInjector; } export interface CreatePendingInput { readonly id: string; readonly attempt: number; readonly binding: BridgeBinding; readonly leaseGeneration: string; } export type BridgeRecoveryPlan = { readonly kind: "exact-read"; readonly emitDrainedReceipt: boolean; } | { readonly kind: "mark-injected"; } | { readonly kind: "mark-dlq"; } | { readonly kind: "terminal-dlq"; } | { readonly kind: "already-injected"; } | { readonly kind: "needs-attention"; readonly reason: "message-not-found"; } | { readonly kind: "diagnostic"; readonly reason: "injected-projection-missing"; }; export interface BridgeRecoveryFacts { readonly amqLocation: "new" | "cur" | "missing" | "dlq"; readonly projection?: DiskProjectionEvidence; } /** Generation-fenced durable intent across the AMQ-to-pi delivery boundary. */ export declare class BridgeJournal { #private; constructor(options: BridgeJournalOptions); createPending(input: CreatePendingInput): Promise; read(id: string): Promise; list(): Promise; readHistory(id: string, attempt: number): Promise; adoptPending(id: string, generation: string, binding: BridgeBinding): Promise; recordClaim(id: string, generation: string, claim: { readonly claimedAt: string; readonly receiptWarning?: string | null; }): Promise; setTarget(id: string, generation: string, target: { readonly targetSessionId: string; readonly delivery: BridgeDelivery; }): Promise; markInjected(id: string, generation: string, evidence: DiskProjectionEvidence): Promise; markDlq(id: string, generation: string, evidence: { readonly messageId: string; readonly diagnostic: string; }): Promise; promoteVerifiedRetry(id: string, generation: string, evidence: BridgeRetryAuditEvidence): Promise; } export declare function planBridgeRecovery(record: BridgeJournalRecordV1, facts: BridgeRecoveryFacts): BridgeRecoveryPlan; export declare function parseBridgeJournalRecordV1(value: unknown): BridgeJournalRecordV1; export declare function parseBridgeAttemptHistoryV1(value: unknown): BridgeAttemptHistoryV1; //# sourceMappingURL=bridge-journal.d.ts.map