import type { Logger } from '@adonisjs/core/logger';
import type { QueueManagerFactory, QueueDriver, StoreOptions } from './types.js';
/**
 * Config for manager looks like this
 *
 * {
 *    default: 'somename',
 *    queues: {
 *       somename: () => new DatabaseDrive({
 *          table_name: 'sjdasjk',
 *       })
 *    }
 * }
 */
export declare class QueueManager<Mappings extends Record<string, QueueManagerFactory>> {
    #private;
    protected config: {
        default: keyof Mappings;
        queues: Mappings;
    };
    protected logger: Logger;
    protected jobsRoot: string;
    constructor(config: {
        default: keyof Mappings;
        queues: Mappings;
    }, logger: Logger, jobsRoot: string);
    use<K extends keyof Mappings>(queue?: K): QueueDriver;
    /**
     * Starts up given queue jobs execution
     *
     * @param queue Queue name to start
     */
    start<K extends keyof Mappings>(queue: K): Promise<void>;
    /**
     * Executes next job in queue
     */
    execute(): Promise<void>;
    /**
     * Stores job to queue for future execution
     *
     * @param path Path to class file
     * @param payload Job payload
     * @param options Store options
     */
    store(path: string, payload: any, options?: StoreOptions): Promise<{
        id: number | string;
    }>;
}
