import type { QueueItem, QueuePriority, QueueStatus } from './queue.js';
export interface ExtendedQueueStorage<T = unknown> {
    enqueue(item: QueueItem<T>): Promise<void>;
    enqueueOnce(id: string, data: T, opts?: Partial<QueueItem<T>>): Promise<boolean>;
    updateStatus(id: string, status: QueueStatus): Promise<void>;
    complete(id: string, success: boolean): Promise<void>;
    moveToDeadLetter(id: string, reason: string): Promise<void>;
    getProcessingCounts(): Promise<Record<QueuePriority, number>>;
    findStuckProcessing(since: Date): Promise<QueueItem<T>[]>;
    dequeue(limit: number): Promise<QueueItem<T>[]>;
    getDeadLetterItems(limit: number): Promise<QueueItem<T>[]>;
    getItem(id: string): Promise<QueueItem<T> | null>;
    isPaused(): Promise<boolean>;
    pause(): Promise<void>;
    resume(): Promise<void>;
}
export declare class InMemoryStorage<T = unknown> implements ExtendedQueueStorage<T> {
    private items;
    private paused;
    enqueue(item: QueueItem<T>): Promise<void>;
    enqueueOnce(id: string, data: T, opts?: Partial<QueueItem<T>>): Promise<boolean>;
    updateStatus(id: string, status: QueueStatus): Promise<void>;
    complete(id: string, _success: boolean): Promise<void>;
    moveToDeadLetter(id: string, reason: string): Promise<void>;
    getProcessingCounts(): Promise<Record<QueuePriority, number>>;
    findStuckProcessing(since: Date): Promise<QueueItem<T>[]>;
    dequeue(limit: number): Promise<QueueItem<T>[]>;
    getDeadLetterItems(limit: number): Promise<QueueItem<T>[]>;
    getItem(id: string): Promise<QueueItem<T> | null>;
    isPaused(): Promise<boolean>;
    pause(): Promise<void>;
    resume(): Promise<void>;
}
//# sourceMappingURL=storage.d.ts.map