import { SendFn, WorkerInboundMessage, WorkerOutboundMessage } from './protocol.js';
export type InvokeTarget = Extract<WorkerInboundMessage, {
    type: 'invoke';
}>['target'];
export declare class WorkerInvoker {
    private send;
    private readonly workerId;
    private readonly connectionId;
    constructor(send: SendFn, workerId: string, connectionId: string);
    private _nextId;
    private _released;
    private _releasedError;
    private _pending;
    private _close;
    connect(): void;
    heartbeat(): void;
    release(): void;
    expire(): void;
    private _invoke;
    invoke(target: InvokeTarget, method: string, args: unknown[]): Promise<unknown>;
    invokeVoid(target: InvokeTarget, method: string, args: unknown[]): void;
    invokeWithAbort(target: InvokeTarget, method: string, args: unknown[], abortSignal: AbortSignal): Promise<unknown>;
    handleResult(msg: Extract<WorkerOutboundMessage, {
        type: 'result';
    }>): void;
    makeBinder<T>(target: InvokeTarget): <K extends keyof T>(method: K, isVoid?: boolean) => T[K];
}
