/// <reference types="node" />
import { ILogger } from '../logger';
import { Router } from '../router';
import { StoreService } from '../store';
import { StreamService } from '../stream';
import { SubService } from '../sub';
import { HotMeshConfig, HotMeshWorker } from '../../types/hotmesh';
import { ProviderClient, ProviderTransaction } from '../../types/provider';
import { RollCallMessage, SubscriptionCallback } from '../../types/quorum';
import { StreamData, StreamDataResponse } from '../../types/stream';
declare class WorkerService {
    namespace: string;
    appId: string;
    guid: string;
    topic: string;
    config: HotMeshConfig;
    callback: (streamData: StreamData) => Promise<StreamDataResponse | void>;
    store: StoreService<ProviderClient, ProviderTransaction> | null;
    stream: StreamService<ProviderClient, ProviderTransaction> | null;
    subscribe: SubService<ProviderClient> | null;
    router: Router<typeof this.stream> | null;
    logger: ILogger;
    reporting: boolean;
    inited: string;
    rollCallInterval: NodeJS.Timeout;
    /**
     * @private
     */
    constructor();
    /**
     * @private
     */
    static init(namespace: string, appId: string, guid: string, config: HotMeshConfig, logger: ILogger): Promise<WorkerService[]>;
    /**
     * @private
     */
    verifyWorkerFields(worker: HotMeshWorker): void;
    /**
     * @private
     */
    initStoreChannel(service: WorkerService, store: ProviderClient): Promise<void>;
    /**
     * @private
     */
    initSubChannel(service: WorkerService, sub: ProviderClient, store: ProviderClient): Promise<void>;
    /**
     * @private
     */
    initStreamChannel(service: WorkerService, stream: ProviderClient, store: ProviderClient): Promise<void>;
    /**
     * @private
     */
    initRouter(worker: HotMeshWorker, logger: ILogger): Promise<Router<StreamService<ProviderClient, ProviderTransaction>>>;
    /**
     * @private
     */
    subscriptionHandler(): SubscriptionCallback;
    /**
     * A quorum-wide command to broadcaset system details.
     *
     */
    doRollCall(message: RollCallMessage): Promise<void>;
    cancelRollCall(): void;
    /**
     * @private
     */
    stop(): void;
    /**
     * @private
     */
    sayPong(appId: string, guid: string, originator?: string, details?: boolean, signature?: boolean): Promise<void>;
    /**
     * @private
     */
    throttle(delayInMillis: number): Promise<void>;
}
export { WorkerService };
