import { PDMQTask } from './../interfaces/task.interface';
import { PDMQInitialOptions } from "../interfaces/initial-options.interface";
import { Subject } from "rxjs";
export declare class PDMQConsumer {
    private InitialOptions;
    taskQueue: Subject<PDMQTask>;
    private redisClient;
    private redisService;
    private taskService;
    private consumerIdentity;
    private selectedObserver;
    private instanceId;
    constructor(InitialOptions: PDMQInitialOptions);
    /**
     * Initial Client and Consumer
     */
    private init;
    /**
     * Disconnect Redis
     *
     * @returns {void}
     */
    disconnect(): boolean;
    /**
     * Rotate Expired Tasks
     *
     * @returns {void}
     */
    lookupExpiredTasks(): Promise<void>;
    /**
     * Delete All Tasks
     */
    clean(): Promise<void>;
    /**
     * Rotate Task
     *
     * @param task
     * @returns {PDMQTask}
     */
    rotateTask(task: PDMQTask): Promise<void>;
    /**
     * Run Instant Task
     *
     * @returns {void}
     */
    private processInstantTask;
    /**
     * Log Consumer
     */
    private logConsumer;
    /**
     * Lookup Tasks
     *
     * @returns {void}
     */
    private lookup;
    /**
     * Handle Task Failure
     *
     * @param task PDMQ Task
     */
    handleTaskFailure(task: PDMQTask): Promise<void>;
    /**
     * Add Task
     *
     * @param task
     * @returns {PDMQTask}
     */
    private addTask;
    /**
     *
     * Format task callback
     *
     * @param task
     * @returns
     */
    private formatTaskCallback;
}
