/// <reference types="node" />
import { ListenerFn } from 'eventemitter2';
import { BaseChannel, InvokeRequest } from './base_channel';
import { EndpointHandlers } from '../../types';
import { Logger } from '../../logger';
interface ChildProcessOptions {
    socketsPath: string;
}
export declare class IPCChannel extends BaseChannel {
    private readonly _emitter;
    private readonly _ipcClient;
    private readonly _rpcRequestIds;
    private readonly _chainID;
    constructor(logger: Logger, namespace: string, events: ReadonlyArray<string>, endpoints: EndpointHandlers, chainID: Buffer, options: ChildProcessOptions);
    startAndListen(): Promise<void>;
    registerToBus(): Promise<void>;
    subscribe(eventName: string, cb: ListenerFn): void;
    unsubscribe(eventName: string, cb: ListenerFn): void;
    once(eventName: string, cb: ListenerFn): void;
    publish(eventName: string, data?: Record<string, unknown>): void;
    invoke<T>(req: InvokeRequest): Promise<T>;
    cleanup(_status?: number, _message?: string): void;
    private get _pubSocket();
    private get _subSocket();
    private get _rpcServer();
    private get _rpcClient();
}
export {};
