export interface OutboxEntry { name: string; revision: string; enqueuedAt: string; attempts: number; lastError: string | null; lastErrorAt: string | null; } export interface OutboxStatus { depth: number; oldestEnqueuedAt: string | null; stuck: OutboxEntry[]; } export declare class SyncOutbox { private readonly db; private readonly enqueueStmt; private readonly getStmt; private readonly getRevisionStmt; private readonly removeIfRevisionMatchesStmt; private readonly recordFailureStmt; private readonly listPendingStmt; private readonly countStmt; private readonly oldestStmt; private readonly listStuckStmt; constructor(storageLocation: string); /** Queue (or re-queue, coalescing) a pending push for `name` at `revision`. */ enqueue(name: string, revision: string, now?: () => string): void; /** All pages with a pending push, oldest first. */ listPending(): OutboxEntry[]; /** The revision currently queued for `name`, or null if nothing is pending. */ currentRevision(name: string): string | null; get(name: string): OutboxEntry | null; /** * Clear the pending push for `name`, but only if it is still at `revision` — * if a newer edit coalesced into this row while the push was in flight, the * row is left in place so the newer revision gets its own drain pass. */ removeIfRevisionMatches(name: string, revision: string): boolean; recordFailure(name: string, error: string, now?: () => string): void; getStatus(): OutboxStatus; close(): void; private static resolveDbPath; private initializeSchema; } //# sourceMappingURL=outbox.d.ts.map