import { I18n, TranslateOptions } from 'i18n-js';
import esJson from '@/i18n/es';
import { Paths } from '@/shared/errors/dotType';
declare const translations: Record<string, typeof esJson>;
export declare const i18n: I18n;
type Translations = Paths<(typeof translations)['es']>;
type VariablesFromString<S extends string> = S extends `${string}{{${infer Var}}}${infer Rest}` ? Var | VariablesFromString<Rest> : never;
type ValueFromPath<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? ValueFromPath<T[K], Rest> : never : P extends keyof T ? T[P] : never;
type VariablesFromKey<K extends Translations> = VariablesFromString<ValueFromPath<typeof esJson, K>>;
type CleanTranslateOptions = Pick<TranslateOptions, 'defaultValue' | 'count' | 'scope' | 'defaults' | 'missingBehavior'>;
type CustomTranslateOptions<Keys extends Translations> = CleanTranslateOptions & {
    [K in VariablesFromKey<Keys>]: string;
};
export declare function translate<Keys extends Translations>(key: Keys extends `${string}.${string}` ? Keys : never, params?: VariablesFromKey<Keys> extends never ? CleanTranslateOptions : CustomTranslateOptions<Keys>): string;
export {};
