import { SecureVersion } from "tls";
import { Config } from "convict";
import { LogLevelDesc } from "@hyperledger/cactus-common";
import { PluginImport } from "@hyperledger/cactus-core-api";
import { AuthorizationProtocol } from "./authorization-protocol";
import { IAuthorizationConfig } from "../authzn/i-authorization-config";
export interface ICactusApiServerOptions {
    crpcPort: number;
    crpcHost: string;
    pluginManagerOptionsJson: string;
    authorizationProtocol: AuthorizationProtocol;
    authorizationConfigJson: IAuthorizationConfig;
    configFile: string;
    logLevel: LogLevelDesc;
    tlsDefaultMaxVersion: SecureVersion;
    cockpitEnabled: boolean;
    cockpitHost: string;
    cockpitPort: number;
    cockpitCorsDomainCsv: string;
    cockpitApiProxyRejectUnauthorized: boolean;
    cockpitTlsEnabled: boolean;
    cockpitMtlsEnabled: boolean;
    cockpitWwwRoot: string;
    cockpitTlsCertPem: string;
    cockpitTlsKeyPem: string;
    cockpitTlsClientCaPem: string;
    apiHost: string;
    apiPort: number;
    apiCorsDomainCsv: string;
    apiTlsEnabled: boolean;
    apiMtlsEnabled: boolean;
    apiTlsCertPem: string;
    apiTlsKeyPem: string;
    apiTlsClientCaPem: string;
    grpcPort: number;
    grpcMtlsEnabled: boolean;
    plugins: PluginImport[];
    minNodeVersion: string;
    enableShutdownHook: boolean;
}
export declare class ConfigService {
    private static config;
    private static readonly HELP_TEXT_HEADER;
    static getHelpText(): string;
    private static getConfigSchema;
    private static formatNonBlankString;
    private static filePathOrFileContents;
    /**
     * Remaps the example config returned by `newExampleConfig()` into a similar object whose keys are the designated
     * environment variable names. As an example it returns something like this:
     *
     * ```json
     * {
     *   "HTTP_PORT": "3000"
     * }
     * ```
     *
     * Where the output of `newExampleConfig()` would be something like this (example)
     *
     * ```json
     * {
     *   "httpPort": "3000"
     * }
     * ```
     */
    newExampleConfigEnv(cactusApiServerOptions?: ICactusApiServerOptions): Promise<{
        [key: string]: string;
    }>;
    newExampleConfigConvict(cactusApiServerOptions?: ICactusApiServerOptions, overrides?: boolean): Promise<Config<ICactusApiServerOptions>>;
    newExampleConfig(): Promise<ICactusApiServerOptions>;
    getOrCreate(options?: {
        env?: NodeJS.ProcessEnv;
        args?: string[];
    }): Promise<Config<ICactusApiServerOptions>>;
    create(options?: {
        env?: NodeJS.ProcessEnv;
        args?: string[];
    }): Config<ICactusApiServerOptions>;
}
