import { type Writable, type Readable } from 'svelte/store';
export declare function p<T extends string>(name: T): {
    readonly type: "param";
    readonly name: T;
};
type ParamPlaceholder = ReturnType<typeof p>;
export declare function t<T extends ParamPlaceholder[]>(strings: TemplateStringsArray, ...values: T): {
    readonly strings: TemplateStringsArray;
    readonly values: T;
};
type ExtractParams<T extends readonly any[]> = T extends {
    type: 'param';
    name: infer Name;
}[] ? Name : never;
type TranslationEntry = ReturnType<typeof t>;
type TranslationsPerLanguage = Record<string, TranslationEntry>;
export type Translations = Record<string, TranslationsPerLanguage>;
export declare function setupI18n<TTranslations extends Translations, TDefaultLanguage extends keyof TTranslations>(translations: TTranslations, defaultLanguage: TDefaultLanguage, options?: {
    languagePersisted?: boolean;
}): {
    t: Readable<(<TKey extends keyof TTranslations[TDefaultLanguage], TParams extends Record<ExtractParams<TTranslations[TDefaultLanguage][TKey]["values"]>, any>>(key: TKey, params?: TParams) => string)>;
    language: Writable<keyof TTranslations>;
    supportedLanguages: (keyof TTranslations)[];
    tUnsafe: Readable<(key: string, params?: Record<string, unknown> | undefined | null) => string>;
    initLanguage: (lang: string) => void;
};
export {};
