/// <reference types="node" />
import { ILogger } from '../logger';
import { StoreService } from '../store';
import { HookInterface, HookRule } from '../../types/hook';
import { JobCompletionOptions, JobState } from '../../types/job';
import { ProviderClient, ProviderTransaction } from '../../types/provider';
import { WorkListTaskType } from '../../types/task';
declare class TaskService {
    store: StoreService<ProviderClient, ProviderTransaction>;
    logger: ILogger;
    cleanupTimeout: NodeJS.Timeout | null;
    isScout: boolean;
    errorCount: number;
    constructor(store: StoreService<ProviderClient, ProviderTransaction>, logger: ILogger);
    processWebHooks(hookEventCallback: HookInterface): Promise<void>;
    enqueueWorkItems(keys: string[]): Promise<void>;
    registerJobForCleanup(jobId: string, inSeconds: number, options: JobCompletionOptions): Promise<void>;
    registerTimeHook(jobId: string, gId: string, activityId: string, type: WorkListTaskType, inSeconds: number, dad: string, transaction?: ProviderTransaction): Promise<void>;
    /**
     * Should this engine instance play the role of 'scout' on behalf
     * of the entire quorum? The scout role is responsible for processing
     * task lists on behalf of the collective.
     */
    shouldScout(): Promise<boolean>;
    /**
     * Callback handler that takes an item from a work list and
     * processes according to its type
     */
    processTimeHooks(timeEventCallback: (jobId: string, gId: string, activityId: string, type: WorkListTaskType) => Promise<void>, listKey?: string): Promise<void>;
    cancelCleanup(): void;
    getHookRule(topic: string): Promise<HookRule | undefined>;
    registerWebHook(topic: string, context: JobState, dad: string, expire: number, transaction?: ProviderTransaction): Promise<string>;
    processWebHookSignal(topic: string, data: Record<string, unknown>): Promise<[string, string, string, string] | undefined>;
    deleteWebHookSignal(topic: string, data: Record<string, unknown>): Promise<number>;
}
export { TaskService };
