/**
 * Copyright (c) 2023. Broadcom.  All rights reserved.
 *
 * This software and all information contained therein is confidential and
 * proprietary and shall not be duplicated, used, disclosed or disseminated
 * in any way except as authorized by the applicable license agreement,
 * without the express written permission of BROADCOM. All authorized reproductions
 * must be marked with this language.
 *
 * EXCEPT AS SET FORTH IN THE APPLICABLE LICENSE AGREEMENT, TO THE EXTENT
 * PERMITTED BY APPLICABLE LAW, BROADCOM PROVIDES THIS SOFTWARE WITHOUT
 * WARRANTY OF ANY KIND, INCLUDING WITHOUT LIMITATION, ANY IMPLIED
 * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  IN
 * NO EVENT WILL BROADCOM BE LIABLE TO THE END USER OR ANY THIRD PARTY FOR ANY
 * LOSS OR DAMAGE, DIRECT OR INDIRECT, FROM THE USE OF THIS SOFTWARE,
 * INCLUDING WITHOUT LIMITATION, LOST PROFITS, BUSINESS INTERRUPTION,
 * GOODWILL, OR LOST DATA, EVEN IF CA IS EXPRESSLY ADVISED OF SUCH LOSS OR
 * DAMAGE.
 *
 * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
 *
 **/
import { ILoadConfig } from "../interface/ILoadConfig";
import ILoadedConfig from "../interface/ILoadedConfig";
export default class ConfigYaml {
    static readonly DefaultConfigFile: string;
    static readonly DefaultUserConfigFile: string;
    static readonly EnvPrefix = "ZOWE_TASKS";
    /**
     * Load the configuration file and optionally the user configuration file.
     * The result is a complete IConfig object available.
     * @param configPath The  yaml file path.
     * @param userConfigPath The user config yaml file path.
     */
    static load(options?: ILoadConfig): Promise<ConfigYaml>;
    private configPath;
    private userConfigPaths;
    private loadedConfig;
    private loadedInputs;
    private userConfig;
    private constructor();
    /**
     * Returns the loaded config
     */
    get config(): ILoadedConfig;
    /**
     * Builds the full set of tasks in the loaded config file.
     */
    /**
     * Get the file path of the configuration file used
     */
    get path(): string;
    /**
     * Gather user input from various sources (prompt, env, or user config file)
     * @param inputs The various inputs and their sources
     * @param userConfig The use configuration to check if values are specified.
     */
    private gatherInput;
    /**
     * Process the input value and return either a string, number, or boolean
     * value.
     * @param value The value that was inputted as a string.
     * @param input The input parameters.
     */
    private processInputValue;
    /**
     * Ask the user a question and obtain a response.
     * @param rl The readline interface object that was previously created.
     * @param question The question to ask.
     */
    private ask;
    /**
     * Load a yaml file into an object.
     * @param filePath The full path to the yaml file.
     */
    private loadYaml;
}
