import type { Database } from '@adonisjs/lucid/database';
import type { DatabaseDriverConfig, JobRecord, QueueDriver, StoreOptions } from '../types.js';
export default class DatabaseDriver implements QueueDriver {
    #private;
    protected config: DatabaseDriverConfig;
    pollingDelay: number;
    constructor(config: DatabaseDriverConfig, database: Database);
    /**
     * Store job to database
     */
    store(path: string, payload: any, options?: StoreOptions): Promise<{
        id: any;
    }>;
    /**
     * Get next job from database
     */
    getNext(): Promise<JobRecord | null>;
    /**
     * Get job from database by its ID
     */
    getJob(id: number | string): Promise<JobRecord | null>;
    /**
     * Re-schedule job (update attempts and available_at) in Database
     */
    reSchedule(job: JobRecord, retryAfter: number): Promise<void>;
    /**
     * Mark job as failed in database
     */
    markFailed(job: JobRecord): Promise<void>;
    /**
     * Remove job from database
     */
    remove(id: number | string): Promise<void>;
}
