/**
 * Copyright (c) 2025. Broadcom.  All rights reserved. The term
 * "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
 *
 * 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 BROADCOM IS
 * EXPRESSLY ADVISED OF SUCH LOSS OR DAMAGE.
 *
 **/
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;
}
