import { InvokeHandlers } from './command';

interface WorkerrEventMap<IContext> {
    "context:update": [IContext];
}
interface WorkerrConstructor<IContext extends object> {
    invokeHandler: InvokeHandlers<IContext>;
}
export declare class Workerr<IContext extends object> {
    context: IContext;
    private invokeHandler;
    private emitter;
    private constructor();
    static create<IContext extends object>(cb: () => Promise<WorkerrConstructor<IContext>>): Promise<Workerr<IContext> | undefined>;
    private static postMessage;
    addListener<K extends keyof WorkerrEventMap<IContext>>(eventName: K, listener: K extends "context:update" ? WorkerrEventMap<IContext>[K] extends unknown[] ? (...args: WorkerrEventMap<IContext>[K]) => void : never : never): void;
    removeListener<K extends keyof WorkerrEventMap<IContext>>(eventName: K, listener: K extends "context:update" ? WorkerrEventMap<IContext>[K] extends unknown[] ? (...args: WorkerrEventMap<IContext>[K]) => void : never : never): void;
    removeAllListeners(eventName?: unknown): void;
}
export {};
