import { Worker as WorkerThread } from 'worker_threads';
import { ICallback } from '../async/index.js';
import { EventEmitter } from '../event/index.js';
import { EWorkerType, TWorkerThreadParentMessage } from './types/index.js';
export type TWorkerEvent = {
    'worker.error': (err: Error) => void;
    'worker.data': (payload: unknown) => void;
};
export declare abstract class Worker<Payload, Reply> extends EventEmitter<TWorkerEvent> {
    protected abstract readonly type: EWorkerType;
    protected readonly id: `${string}-${string}-${string}-${string}-${string}`;
    protected readonly workerFilename: string;
    protected readonly initialPayload: unknown;
    protected workerThread: WorkerThread | null;
    protected logger: import("../logger/index.js").ILogger;
    protected constructor(workerFilename: string, initialPayload?: unknown);
    getId(): string;
    protected getWorkerThread(): WorkerThread;
    protected registerEvents(cb: ICallback<Reply> | Worker<Payload, Reply>): void;
    postMessage(message: TWorkerThreadParentMessage): void;
    shutdown(cb: ICallback<void>): void;
}
//# sourceMappingURL=worker.d.ts.map