export type LilconfigResult = null | {
    filepath: string;
    config: any;
    isEmpty?: boolean;
};
interface OptionsBase {
    cache?: boolean;
    stopDir?: string;
    searchPlaces?: string[];
    ignoreEmptySearchPlaces?: boolean;
    packageProp?: string | string[];
}
export type Transform = TransformSync | ((result: LilconfigResult) => Promise<LilconfigResult>);
export type TransformSync = (result: LilconfigResult) => LilconfigResult;
type LoaderResult = any;
export type LoaderSync = (filepath: string, content: string) => LoaderResult;
export type Loader = LoaderSync | ((filepath: string, content: string) => Promise<LoaderResult>);
export type Loaders = Record<string, Loader>;
export type LoadersSync = Record<string, LoaderSync>;
export interface Options extends OptionsBase {
    loaders?: Loaders;
    transform?: Transform;
}
export interface OptionsSync extends OptionsBase {
    loaders?: LoadersSync;
    transform?: TransformSync;
}
export declare const defaultLoadersSync: LoadersSync;
export declare const defaultLoaders: Loaders;
type ClearCaches = {
    clearLoadCache: () => void;
    clearSearchCache: () => void;
    clearCaches: () => void;
};
type AsyncSearcher = {
    search(searchFrom?: string): Promise<LilconfigResult>;
    load(filepath: string): Promise<LilconfigResult>;
} & ClearCaches;
export declare function lilconfig(name: string, options?: Partial<Options>): AsyncSearcher;
type SyncSearcher = {
    search(searchFrom?: string): LilconfigResult;
    load(filepath: string): LilconfigResult;
} & ClearCaches;
export declare function lilconfigSync(name: string, options?: OptionsSync): SyncSearcher;
export {};
