///
import { DefaultListener, ListenerSignature } from "tiny-typed-emitter";
import { MessagePort } from "worker_threads";
import type { Thread } from "./Thread";
export declare type InternalFunctions = {
runQueue: Thread["_runQueue"];
stopExecution: Thread["stopExecution"];
require: Thread["require"];
_getThreadReferenceData: Thread["_getThreadReferenceData"];
};
declare type UnsafeReturnType = T extends (...args: any[]) => infer R ? R : any;
declare type UnsafeParameters = T extends (...args: infer P) => any ? P : never;
export declare type PromisefulModule = {
[K in keyof M]: M[K] extends Function ? UnsafeReturnType extends PromiseLike ? (...args: UnsafeParameters) => UnsafeReturnType : (...args: UnsafeParameters) => Promise> : () => Promise;
} & InternalFunctions;
export declare type ThreadExports = {
[key: string]: unknown;
};
export declare type ThreadData = undefined | unknown;
export declare type ThreadExitInfo = {
code?: number;
err?: Error;
};
export declare type ThreadModule = DefaultListener> = NodeJS.Module & {
thread: Thread<{}, Data, E>;
};
export declare type ThreadOptions = {
threadModule?: string;
eval?: boolean;
sharedArrayBuffer?: SharedArrayBuffer;
data?: T;
count?: number;
};
export declare type UnknownFunction = (...args: any[]) => Promise;
export declare type threadModule = {
workerPort: MessagePort;
workerData: {
sharedArrayBuffer: SharedArrayBuffer;
};
transfers: [MessagePort];
};
export declare type Messages = {
Reject: {
type: "reject";
data: Error;
promiseKey: number;
};
Resolve: {
type: "resolve";
data: Array;
promiseKey: number;
};
Event: {
type: "event";
eventName: string;
args: Array;
promiseKey: number;
};
Call: {
func: keyof ThreadExports;
type: "call";
data: Array;
promiseKey: number;
};
Queue: {
func: keyof ThreadExports;
type: "queue";
data: Array;
promiseKey: number;
};
Exit: {
type: "exit";
exitInfo: ThreadExitInfo;
};
};
export declare type AnyMessage = Messages[keyof Messages];
export declare type RequiredThread = Thread & Omit, "require">;
export {};
//# sourceMappingURL=Types.d.ts.map