import { EntityManager, Repository } from 'typeorm';
import { OutboxEvent } from '../entities';
import { OutboxResolvedModuleOptions } from '../types';
export declare class OutboxService {
    private readonly outboxRepository;
    private readonly options;
    constructor(outboxRepository: Repository<OutboxEvent>, options: OutboxResolvedModuleOptions);
    getOperationalPolicy(): OutboxResolvedModuleOptions['operationalPolicy'];
    createEvent(eventType: string, payload: Record<string, any>, manager?: EntityManager): Promise<OutboxEvent>;
    claimById(eventId: string): Promise<OutboxEvent | null>;
    claimPendingEventsByTypes(eventTypes: string[], limit?: number): Promise<OutboxEvent[]>;
    claimPendingEvents(eventType: string, limit?: number): Promise<OutboxEvent[]>;
    markAsProcessing(eventId: string): Promise<void>;
    markAsProcessed(eventId: string, expectedProcessingStartedAt?: Date | null): Promise<boolean>;
    incrementRetry(eventId: string, error: string, maxRetries?: number, expectedProcessingStartedAt?: Date | null): Promise<boolean>;
    markAsFailed(eventId: string, error: string, expectedProcessingStartedAt?: Date | null): Promise<boolean>;
    deleteProcessed(olderThanHours?: number): Promise<number>;
    resetStaleProcessingEvents(staleMinutes?: number): Promise<number>;
    private findEventForProcessingUpdate;
    private updateEvent;
    private addProcessingOwnershipCondition;
}
