import { Plugin } from "node-resque";
import * as TaskModule from "./../modules/task";
import { Initializer } from "../index";
import { Task } from "../classes/task";
export interface TaskApi {
    tasks: {
        [key: string]: Task;
    };
    jobs: {
        [key: string]: any;
    };
    middleware: {
        [key: string]: TaskModule.task.TaskMiddleware;
    };
    globalMiddleware: Array<string>;
    loadFile: TasksInitializer["loadFile"];
    jobWrapper: TasksInitializer["jobWrapper"];
    loadTasks: TasksInitializer["loadTasks"];
}
/**
 * Tools for enqueuing and inspecting the task system (delayed jobs).
 */
export declare class TasksInitializer extends Initializer {
    constructor();
    loadFile: (fullFilePath: string, reload?: boolean) => Promise<void>;
    jobWrapper: (taskName: string) => {
        plugins: (string | (new (args: ConstructorParameters<typeof Plugin>) => Plugin))[];
        pluginOptions: {
            [key: string]: any;
        };
        perform: () => Promise<any>;
    };
    loadTasks: (reload: boolean) => Promise<void>;
    initialize(): Promise<void>;
    start(): Promise<void>;
}
