import type Database from 'better-sqlite3';
import type { EventBus } from './EventBus.js';
interface StorageProvider {
    getDatabase(): Database.Database;
}
export declare class EventOutbox {
    private readonly db;
    private readonly eventBus;
    private readonly enqueueStmt;
    private readonly markProcessingStmt;
    private readonly markPublishedStmt;
    private readonly markPendingRetryStmt;
    private readonly markFailedStmt;
    private readonly moveToDeadLetterStmt;
    private intervalId;
    private processing;
    constructor(storage: StorageProvider, eventBus: EventBus);
    private initTables;
    enqueue(event: {
        eventType: string;
        payload: Record<string, unknown>;
    }): string;
    start(): void;
    stop(): void;
    processOutbox(): void;
    getPendingCount(): number;
    getDeadLetterCount(): number;
    private processOne;
    private recoverProcessing;
}
export {};
//# sourceMappingURL=EventOutbox.d.ts.map