import { FConfiguration, FExecutionContext, FDisposable } from "@freemework/common";
export declare function flauncher(runtimeFactory: FConfiglessRuntimeFactory): void;
/**
 * Launch an application using `defaultConfigurationLoader`
 * @param configurationParser User's function that provides configuration parser
 * @param runtimeFactory User's function that compose and start runtime
 */
export declare function flauncher<TConfiguration>(configurationParser: ConfigurationParser<TConfiguration>, runtimeFactory: FLauncherRuntimeFactory<TConfiguration>): void;
/**
 * Launch an application
 * @param configurationLoader User's function that provides configuration loader
 * @param configurationParser User's function that provides configuration parser
 * @param runtimeFactory User's function that compose and start runtime
 */
export declare function flauncher<TConfiguration>(configurationLoader: RawConfigurationLoader, configurationParser: ConfigurationParser<TConfiguration>, runtimeFactory: FLauncherRuntimeFactory<TConfiguration>): void;
export type RawConfigurationLoader = (executionContext: FExecutionContext) => Promise<FConfiguration>;
export type ConfigurationParser<TConfiguration> = (rawConfiguration: FConfiguration) => TConfiguration;
export type FLauncherRuntimeFactory<TConfiguration> = (executionContext: FExecutionContext, configuration: TConfiguration) => Promise<FDisposable>;
export type FConfiglessRuntimeFactory = (executionContext: FExecutionContext) => Promise<FDisposable>;
export declare function defaultConfigurationLoader(_executionContext: FExecutionContext): Promise<FConfiguration>;
export declare namespace defaultConfigurationLoader {
    const CONFIG_ENV_ARG = "--config-env";
    const CONFIG_FILE_ARG = "--config-file=";
    const CONFIG_TOML_FILE_ARG = "--config-toml-file=";
    const CONFIG_SECRET_DIR_ARG = "--config-secrets-dir=";
}
export declare function registerShutdownHook(cb: () => Promise<void>): void;
