import { Stream } from "../stream/stream.js";
import { EngineProcessAPI } from "./engineProcessAPI.js";
import { ListenerFn } from "eventemitter2";
import { EngineConfig, EngineExtraConfig } from "../config/types.js";
declare type EventObj = {
    msg: string;
    time: string;
    stream?: Stream;
    error?: any;
    level?: string;
};
declare type engineEventsTypes = "engine.active" | "engine.inactive" | "engine.warn" | "engine.error" | "engine.fatal" | "engine.stream.add" | "engine.stream.update" | "engine.stream.remove" | "engine.stream.error" | "engineProcess.stream.fatal" | "engineProcess.stream.error" | "engineProcess.stream.warn" | "engineProcess.stream.info" | "engineProcess.stream.debug" | "engineProcess.stream.trace";
declare enum engineEventsEnums {
    "engine.**" = "engine.**",
    "engine.*.*" = "engine.*.*",
    "engine.active" = "engine.active",
    "engine.inactive" = "engine.inactive",
    "engine.warn" = "engine.warn",
    "engine.error" = "engine.error",
    "engine.fatal" = "engine.fatal",
    "engine.stream.add" = "engine.stream.add",
    "engine.stream.update" = "engine.stream.update",
    "engine.stream.remove" = "engine.stream.remove",
    "engine.stream.error" = "engine.stream.error",
    "engineProcess.stream.fatal" = "engineProcess.stream.fatal",
    "engineProcess.stream.error" = "engineProcess.stream.error",
    "engineProcess.stream.warn" = "engineProcess.stream.warn",
    "engineProcess.stream.info" = "engineProcess.stream.info",
    "engineProcess.stream.debug" = "engineProcess.stream.debug",
    "engineProcess.stream.trace" = "engineProcess.stream.trace"
}
declare class Engine extends EngineProcessAPI {
    #private;
    waitForActiveEventMs: number;
    engineEvents: typeof engineEventsEnums;
    constructor(engineConfig?: Partial<EngineConfig>, engineExtraConfig?: Partial<EngineExtraConfig>);
    emit: (event: engineEventsTypes, eventObj: EventObj, ...values: any[]) => boolean;
    get numStreams(): number;
    updateEngineConfigs(receivedEngineConfig?: Partial<EngineConfig>, receivedEngineExtraConfig?: Partial<EngineExtraConfig>): Promise<void>;
    start(): Promise<Engine>;
    stop(): Promise<Engine>;
    stop(reason: string): Promise<Engine>;
    stop(reason: string, force: boolean): Promise<Engine>;
    add(...streams: Stream[]): Promise<Engine>;
    update(...streams: Stream[]): Promise<Engine>;
    remove(): Promise<Engine>;
    remove(...streams: Stream[]): Promise<Engine>;
    remove(reason: string, ...streams: Stream[]): Promise<Engine>;
    useDefaultEventHandler(addnEventHandlers?: {
        [eventName: string]: ListenerFn;
    }): void;
}
export { Engine };
//# sourceMappingURL=engine.d.ts.map