/**
 * @author Martin Karkowski
 * @email m.karkowski@zema.de
 * @create date 2020-11-11 13:27:58
 * @modify date 2021-10-19 09:15:38
 * @desc [description]
 *
 */
import { ArgumentParser } from "argparse";
import "reflect-metadata";
import { validLayerOrMirror } from "../communication/index.nodejs";
import { LoggerLevel } from "../logger/nopeLogger";
import { INopeINopeConnectivityTimeOptions, ValidDefaultSelectors } from "../types/nope";
import { INopePackageLoader } from "../types/nope/nopePackageLoader.interface";
export interface RunArgs {
    file: string;
    channel: validLayerOrMirror;
    channelParams: string;
    skipLoadingConfig: boolean;
    log: LoggerLevel;
    singleton: boolean;
    defaultSelector: ValidDefaultSelectors;
    dispatcherLogLevel: LoggerLevel;
    communicationLogLevel: LoggerLevel;
    logToFile: boolean;
    delay: number;
    forceUsingSelectors: boolean;
    preventVarifiedNames: boolean;
    timings: Partial<INopeINopeConnectivityTimeOptions>;
    id: string;
    profile: boolean;
    useBaseServices: boolean;
}
export declare const DEFAULT_SETTINGS: RunArgs;
/**
 * Helper Function to Read-In the Arguments used by the
 * cli-tool `run`
 *
 * @export
 * @async
 * @param additionalArguments arguments for the `ArgumentParser`
 * @param {Partial<RunArgs>} [forcedArgs={}] The settings to run the args.
 * @param {ArgumentParser} [parser=null] An additional `ArgumentParser`. If not provided its created
 * @returns {Promise<RunArgs>}
 */
export declare function readInArgs(additionalArguments?: {
    help: string;
    type: "string" | "number";
    name: string | string;
    defaultValue?: any;
}[], forcedArgs?: Partial<RunArgs>, defaultArgs?: Partial<RunArgs>, parser?: ArgumentParser): Promise<RunArgs>;
/**
 * Main tool to create a runtime. Returns a {@link INopePackageLoader}.
 *
 *
 * @async
 * @param {Partial<RunArgs>} [_args={}] Arguments to configure the runtime.
 * @returns {Promise<INopePackageLoader>} The central logger.
 */
export declare function runNopeBackend(_args?: Partial<RunArgs>): Promise<INopePackageLoader>;
/**
 * Main Function.
 *
 * @export
 */
export declare function main(additionalArguments?: {
    help: string;
    type: "string" | "number";
    name: string | string;
    defaultValue?: any;
}[], forcedArgs?: Partial<RunArgs>, quiet?: boolean): Promise<INopePackageLoader>;
export default main;
