import type { QueueMessage } from '../../queue/Queue';
export interface DatabaseQueueConfig {
    connection?: string;
    table?: string;
    retryAttempts?: number;
    visibilityTimeout?: number;
}
export interface IDatabaseQueueDriver {
    enqueue<T = unknown>(queue: string, payload: T, connectionName?: string): Promise<string>;
    dequeue<T = unknown>(queue: string, connectionName?: string): Promise<QueueMessage<T> | undefined>;
    ack(queue: string, id: string, connectionName?: string): Promise<void>;
    length(queue: string, connectionName?: string): Promise<number>;
    drain(queue: string, connectionName?: string): Promise<void>;
}
export declare const DatabaseQueue: {
    readonly enqueue: <T = unknown>(queue: string, payload: T, connectionName?: string) => Promise<string>;
    readonly dequeue: <T = unknown>(queue: string, connectionName?: string) => Promise<QueueMessage<T> | undefined>;
    readonly ack: (queue: string, id: string, connectionName?: string) => Promise<void>;
    readonly length: (queue: string, connectionName?: string) => Promise<number>;
    readonly drain: (queue: string, connectionName?: string) => Promise<void>;
};
export default DatabaseQueue;
//# sourceMappingURL=Database.d.ts.map