import { NestedMessages } from './index.js';

declare class BundleLoadError extends Error {
    readonly locale: string;
    readonly namespace?: string | undefined;
    constructor(locale: string, namespace?: string | undefined);
}
type BundleLoaderFn<L extends string> = (locale: L, namespace?: string) => Promise<NestedMessages | null | undefined>;
interface BundleLoader<L extends string = string> {
    load(locale: L, namespace?: string): Promise<NestedMessages>;
    peek(locale: L, namespace?: string): NestedMessages | undefined;
    clear(): void;
}
declare function createBundleLoader<L extends string>(loadFn: BundleLoaderFn<L>): BundleLoader<L>;

export { BundleLoadError, type BundleLoader, type BundleLoaderFn, createBundleLoader };
