/// <reference types="node" />
import { SecureVersion } from "tls";
import { Config } from "convict";
import { LogLevelDesc } from "@hyperledger/cactus-common";
import { PluginImport } from "@hyperledger/cactus-core-api";
export interface ICactusApiServerOptions {
    configFile: string;
    cactusNodeId: string;
    consortiumId: string;
    logLevel: LogLevelDesc;
    tlsDefaultMaxVersion: SecureVersion;
    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;
    plugins: PluginImport[];
    keyPairPem: string;
    keychainSuffixKeyPairPem: string;
    minNodeVersion: string;
}
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): {
        [key: string]: string;
    };
    newExampleConfigConvict(cactusApiServerOptions?: ICactusApiServerOptions): Config<ICactusApiServerOptions>;
    newExampleConfig(): ICactusApiServerOptions;
    getOrCreate(options?: {
        env?: any;
        args?: string[];
    }): Config<ICactusApiServerOptions>;
    /**
     * Validation that prevents operators from mistakenly deploying a key pair
     * that they may not be operational for whatever reason.
     *
     * @throws If a dummy sign+verification operation fails for any reason.
     */
    validateKeyPairMatch(): void;
}
