import type { CclintConfig } from '../domain/Config.js';
export declare class ConfigLoader {
    private static readonly CONFIG_FILES;
    static load(startDir?: string): CclintConfig;
    private static findConfigFile;
    private static loadConfigFile;
    /**
     * Resolve a user config into a fully merged {@link CclintConfig}.
     *
     * @remarks
     * Layering is defaults ← preset(s) in `extends` order ← user config, so the
     * user's own settings always win and presets closer to the end of an
     * `extends` array override earlier ones. `rules` are deep-merged per rule
     * (enabled/severity/options); other fields (`ignore`, `plugins`) are
     * replaced by the more specific layer. `extends` is consumed here and never
     * appears in the resolved result.
     */
    private static resolveConfig;
    /**
     * Turn an `extends` value into the ordered list of preset configs to apply.
     * Only built-in named presets are supported; an unknown name is warned about
     * and skipped so a typo degrades gracefully rather than aborting the lint.
     */
    private static resolveExtends;
    /** Merge an override layer over a base config; the override always wins. */
    private static mergeConfigs;
    /**
     * Deep-merge two rule maps. For each rule present in either layer, the
     * override's fields win, and `options` are themselves shallow-merged so a
     * layer can tweak a single option without dropping the others.
     */
    private static mergeRules;
}
//# sourceMappingURL=ConfigLoader.d.ts.map