/**
 * Default values, parse the config file and handle CLI flags
 */
import { Options } from 'yargs';
import type { UserConfig, ConfigFlags, OptionsGeneration } from '@ts-for-gir/lib';
export declare class Config {
    static appName: string;
    static usage: string;
    /**
     * Default cli flag and argument values
     */
    static defaults: {
        print: boolean;
        configName: string;
        root: string;
        outdir: string;
        girDirectories: string[];
        modules: string[];
        ignore: never[];
        verbose: boolean;
        ignoreVersionConflicts: boolean;
        noNamespace: boolean;
        noComments: boolean;
        promisify: boolean;
        npmScope: string;
        workspace: boolean;
        onlyVersionPrefix: boolean;
        noPrettyPrint: boolean;
        noAdvancedVariants: boolean;
        package: boolean;
    };
    static configFilePath: string;
    /**
     * CLI options used in commands/generate.ts and commands/list.ts
     */
    static options: {
        [name: string]: Options;
    };
    /**
     * CLI flags used in commands/generate.ts
     */
    static generateOptions: {
        modules: Options;
        girDirectories: Options;
        root: Options;
        outdir: Options;
        ignore: Options;
        verbose: Options;
        ignoreVersionConflicts: Options;
        print: Options;
        configName: Options;
        noNamespace: Options;
        noComments: Options;
        promisify: Options;
        npmScope: Options;
        workspace: Options;
        onlyVersionPrefix: Options;
        noPrettyPrint: Options;
        noAdvancedVariants: Options;
        package: Options;
    };
    static listOptions: {
        modules: Options;
        girDirectories: Options;
        root: Options;
        ignore: Options;
        configName: Options;
        verbose: Options;
    };
    static copyOptions: {
        modules: Options;
        girDirectories: Options;
        root: Options;
        outdir: Options;
        ignore: Options;
        configName: Options;
        verbose: Options;
    };
    static docOptions: {
        modules: Options;
        girDirectories: Options;
        root: Options;
        outdir: Options;
        ignore: Options;
        verbose: Options;
        ignoreVersionConflicts: Options;
        configName: Options;
    };
    /**
     * Overwrites values in the user config file
     * @param configsToAdd
     */
    static addToConfig(configsToAdd: Partial<UserConfig>, configName?: string): Promise<void>;
    /**
     * The user can create a `.ts-for-girrc` file for his default configs,
     * this method load this config file an returns the user configuration
     * @param configName If the user uses a custom config file name
     */
    private static loadConfigFile;
    static getOptionsGeneration(config: UserConfig): OptionsGeneration;
    static validate(config: UserConfig): UserConfig;
    /**
     * Loads the values of the config file and concatenate them with passed cli flags / arguments.
     * The values from config file are preferred if the cli flag value is the default (and so not set / overwritten)
     * @param options
     */
    static load(options: ConfigFlags): Promise<UserConfig>;
}
