///
import { TransferListItem } from 'worker_threads';
import { IAbortSignalFast } from '@flemist/abort-controller-fast';
export declare type PromiseOrValue = Promise | T;
export declare type TaskFunc = (request: TRequest, abortSignal?: IAbortSignalFast, callback?: (data: TCallbackData) => void) => PromiseOrValue;
export declare type WorkerData = {
data?: TData;
transferList?: ReadonlyArray;
};
export declare type WorkerTaskFunc = TaskFunc, WorkerData, WorkerData>;
export declare type WorkerTaskFuncResult = PromiseOrValue>;
export declare type IUnsubscribe = () => void;
export declare type IUnsubscribeAsync = (abortSignal: IAbortSignalFast) => PromiseOrValue;
export declare type Callback = (data: TData, error?: TError) => void;
export interface IEventEmitter {
emit(event: TEmitEvent): any;
}
export interface IEventSubscriber {
subscribe(callback: (event: TSubscribeEvent) => void): IUnsubscribe;
}
export interface IEventBus extends IEventEmitter, IEventSubscriber {
}
export declare type WorkerCallback = Callback>;
export declare type WorkerEvent = {
data?: WorkerData;
error?: Error;
route?: string[];
};
export interface IWorkerEventEmitter extends IEventEmitter> {
}
export interface IWorkerEventSubscriber extends IEventSubscriber> {
}
export interface IWorkerEventBus extends IWorkerEventEmitter, IWorkerEventSubscriber {
}
declare type WorkerFuncPromise = (data: WorkerData, abortSignal?: IAbortSignalFast) => PromiseOrValue>;
declare type WorkerFuncSubscribe = (data: WorkerData, abortSignal: IAbortSignalFast, callback: WorkerCallback) => PromiseOrValue;
export declare type WorkerFunc = WorkerFuncPromise | WorkerFuncSubscribe;
export {};