/// import { IUnsubscribe, IWorkerEventBus } from '../common/contracts'; import { TransferListItem } from 'worker_threads'; import { IAbortSignalFast } from '@flemist/abort-controller-fast'; declare type ErrorSerialized = { error: any; props: any; }; 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 WorkerFunctionServerResult = PromiseOrValue>; export declare type WorkerFunctionServerResultSync = WorkerData; export declare type WorkerFunctionServerResultAsync = Promise>; export declare type TaskFunctionRequest = { task: string; } & ({ action: 'start'; request: TRequest; } | { action: 'abort'; reason: any; }); export declare type TaskFunctionResponse = { event: 'started'; } | { event: 'callback'; data: TCallbackData; } | { event: 'completed'; result: TResult; } | { event: 'error'; error: ErrorSerialized; }; export declare type AbortFunc = (reason: any) => void; export declare type WorkerFunctionServerEventBus = IWorkerEventBus, TaskFunctionRequest>; export declare function workerFunctionServer({ eventBus, task, name, debug, }: { eventBus: WorkerFunctionServerEventBus; task: WorkerTaskFunc; name?: string; debug?: boolean; }): IUnsubscribe; export declare type WorkerFunctionClientEventBus = IWorkerEventBus, TaskFunctionResponse>; export declare type WorkerFunctionClient = (request: WorkerData, abortSignal?: IAbortSignalFast, callback?: (data: WorkerData) => void) => Promise>; export declare function workerFunctionClient({ eventBus, name, debug, }: { eventBus: WorkerFunctionClientEventBus; name: string; debug?: boolean; }): (request: WorkerData, abortSignal?: IAbortSignalFast, callback?: (data: WorkerData) => void) => Promise>; export {};