import { LoadConfOption } from './loader/js';
export * from './utils';
export * from './loader/js';
export * from './loader/json';
export * from './loader/yaml';
export * from './loader/toml';
export * from './loader/ini';
export declare const merge: {
    <TObject, TSource>(object: TObject, source: TSource): TObject & TSource;
    <TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2;
    <TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3): TObject & TSource1 & TSource2 & TSource3;
    <TObject, TSource1, TSource2, TSource3, TSource4>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): TObject & TSource1 & TSource2 & TSource3 & TSource4;
    (object: any, ...otherArgs: any[]): any;
};
export type LoaderFunc<T> = (filepath: string, content: string, jsOption?: LoadConfOption) => T | Promise<T>;
export type Loader<T> = Record<string, LoaderFunc<T>>;
export interface AutoConfOption<T> {
    searchPlaces?: string[];
    /** An object that maps extensions to the loader functions responsible for loading and parsing files with those extensions. */
    loaders?: Loader<T>;
    /** Specify default configuration. It has the lowest priority and is applied after extending config. */
    default?: T;
    /** Resolve configuration from this working directory. The default is `process.cwd()` */
    cwd?: string;
    /** Default transform js configuration */
    jsOption?: LoadConfOption;
    /** @deprecated use `mustExist` instead */
    ignoreLog?: boolean;
    mustExist?: boolean;
}
export declare const getConfigPath: () => string;
/**
 * Find and load configuration from a `package.json` property, `rc` file, or `CommonJS` module.
 * @param namespace {string} Configuration base name. The default is `autoconf`.
 * @param option
 */
export declare function autoConf<T>(namespace?: string, option?: AutoConfOption<T>): Promise<{} & T>;
export default autoConf;
