export declare enum ELanguages {
    ru = "ru",
    en = "en"
}
interface ICommonLocParams {
    capitalized?: boolean;
    lang?: ELanguages;
}
interface ITemplateLocParams<T> extends ICommonLocParams {
    templateData?: T;
}
interface IPluralLocParams extends ICommonLocParams {
    count: number;
}
export type TExtractLocalizationParams<T extends TLocalizationDescription> = T extends {
    [K in ELanguages]: (...args: infer P) => string;
} ? ITemplateLocParams<P[0]> : T extends {
    [K in ELanguages]: TLocalizationPluralDescription;
} ? IPluralLocParams : ICommonLocParams;
export type TLocalizationFunctionalDescription = (...args: any[]) => string | TLocalizationPluralDescription;
type TLocalizationPluralDescription = {
    s: string;
    p1: string;
    p2?: string;
};
export type TLocalizationDescription = Record<ELanguages, string | TLocalizationFunctionalDescription | TLocalizationPluralDescription>;
export type TLocalizationParams = {
    language: ELanguages;
};
export interface ILocalizationProps extends Partial<ITemplateLocParams<unknown>>, Partial<IPluralLocParams> {
}
export declare class Localization {
    static Language: typeof ELanguages;
    private static PluralType;
    private static GetPlurableEn;
    private static GetPlurableRu;
    private language;
    constructor(params: TLocalizationParams);
    getLanguage(): ELanguages;
    getBrowserLanguage(): ELanguages;
    getLocalized<L extends TLocalizationDescription, P extends ILocalizationProps = TExtractLocalizationParams<L>>(loc: L, props?: P): string;
    private getMaybeCapitalized;
}
export {};
