import { EventListener, IEventManager } from "@shahadul-17/event-manager";
import { IProcess } from "./process.i";
import { ProcessEventType } from "./process-event-type.e";
import { IProcessEventArguments } from "./process-event-args.i";
import { ProcessOptions } from "./process-options.t";
export declare class Process implements IProcess {
    private readonly process;
    constructor(options?: ProcessOptions);
    get isChildProcess(): boolean;
    get taskCount(): number;
    get processId(): undefined | number;
    get options(): ProcessOptions;
    incrementTaskCount(step?: number): number;
    decrementTaskCount(step?: number): number;
    spawnAsync(): Promise<IProcess>;
    sendAsync<Type>(data: Type): Promise<boolean>;
    addEventListener(type: ProcessEventType, listener: EventListener<ProcessEventType, IProcessEventArguments>): boolean;
    removeEventListener(listener: EventListener<ProcessEventType, IProcessEventArguments>, type?: ProcessEventType | undefined, removeAll?: boolean | undefined): boolean;
    removeEventListeners(type?: ProcessEventType | undefined): void;
    copyEventListeners(eventManager: IEventManager<ProcessEventType, IProcessEventArguments>, type?: ProcessEventType | undefined): boolean;
}
//# sourceMappingURL=process.d.ts.map