import { INDIVIDUAL_WORKER, TRANSPARENT_POOL } from './worker_constants';
export interface IConstructable<T> {
    new (): T;
}
export interface IWorkerSet {
    readonly worker: Worker;
    readonly worker_name: string;
}
export interface ICustomWorkerPort {
    postMessage: PromisedPostMessage;
    createResponse: (event: MessageEvent) => (message: any) => void;
}
export interface IMessage {
    from?: string;
}
export interface ApiConfiguration {
    readonly [dispatch_name: string]: DispatchHandler;
}
export interface Dictionary<T> {
    [key: string]: T;
}
export declare type IHasToJSON = any;
export declare type ResponseCallback = (message: any, err?: any) => void;
export declare type UUID = string;
export declare type Maybe<T> = T | undefined;
export declare type Transferable = ArrayBuffer | MessagePort | ImageBitmap;
export declare type PromisedPostMessage = (message: any, transferables?: Array<Transferable>) => Promise<MessageEvent>;
export declare type ResponseFunction = (message: any) => void;
export declare type DispatchHandler = (event: MessageEvent, respond: ResponseFunction) => void;
export declare type WorkerConstructor = IConstructable<Worker>;
export declare type WorkerList = Array<{
    WorkerConstructor: WorkerConstructor;
    worker_name: string;
    type: INDIVIDUAL_WORKER | TRANSPARENT_POOL;
}>;
export declare function isMessagePort(potential_port: Maybe<MessagePort>): potential_port is MessagePort;
export declare function isCustomPort(potential_port: Maybe<ICustomWorkerPort>): potential_port is ICustomWorkerPort;
export declare function isPromisedPostMessage(potential_func: Maybe<PromisedPostMessage>): potential_func is PromisedPostMessage;
