import { PrismaService } from '@hed-hog/api-prisma';
import { InboxEvent, InboxEventStatus } from '../types';
export declare class InboxService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    private toDomainEvent;
    private toDatabaseId;
    private toDatabaseUpdate;
    /**
     * Get or create inbox event for idempotency tracking
     * Returns existing if already processed, otherwise creates new
     */
    getOrCreate(outboxEventId: string | number, consumerName: string): Promise<InboxEvent>;
    /**
     * Update inbox event status
     */
    updateStatus(inboxEventId: string | number, status: InboxEventStatus, partialUpdate?: {
        attemptCount?: number;
        lastError?: string | null;
        processedAt?: Date | null;
    }): Promise<InboxEvent>;
    /**
     * Mark inbox event as processing
     */
    markProcessing(inboxEventId: string | number): Promise<InboxEvent>;
    /**
     * Mark inbox event as successfully processed
     */
    markProcessed(inboxEventId: string | number): Promise<InboxEvent>;
    /**
     * Mark inbox event as failed
     */
    markFailed(inboxEventId: string | number, error: string): Promise<InboxEvent>;
    /**
     * Mark inbox event as skipped
     */
    markSkipped(inboxEventId: string | number): Promise<InboxEvent>;
    /**
     * Increment attempt count
     */
    incrementAttempt(inboxEventId: string | number): Promise<InboxEvent>;
    /**
     * Get inbox event by ID
     */
    getById(inboxEventId: string | number): Promise<InboxEvent | null>;
    /**
     * Check if event was already processed by consumer
     */
    isProcessed(outboxEventId: string | number, consumerName: string): Promise<boolean>;
    /**
     * Count unprocessed items for a consumer
     */
    countUnprocessed(consumerName: string): Promise<number>;
}
//# sourceMappingURL=inbox.service.d.ts.map