export interface CurrencyOptions {
    name: string;
    plural: string;
    symbol: string;
    singular?: string;
    precision?: number;
    numberSpecificForms?: Record<number, string>;
    fractionalUnit: {
        name: string;
        plural: string;
        singular?: string;
        numberSpecificForms?: Record<number, string>;
        symbol: string;
    };
}
export type ConverterOptions = {
    currency?: boolean;
    ignoreDecimal?: boolean;
    ignoreZeroCurrency?: boolean;
    doNotAddOnly?: boolean;
    includeZeroFractional?: boolean;
    currencyOptions?: CurrencyOptions;
    gender?: 'masculine' | 'feminine';
    useAnd?: boolean;
    formal?: boolean;
    decimalStyle?: 'digit' | 'fraction';
};
export type OrdinalOptions = {
    gender?: 'masculine' | 'feminine';
    formal?: boolean;
};
export type ToWordsOptions = {
    localeCode?: string;
    converterOptions?: ConverterOptions;
};
export interface ConstructorOf<T> {
    new (...args: unknown[]): T;
}
export type NumberWordMap = {
    number: number | bigint;
    value: string | [string, string];
    singularValue?: string;
    feminineValue?: string;
    masculineValue?: string;
};
export type OrdinalWordMap = {
    number: number | bigint;
    value: string;
};
export type NumberInput = number | bigint | string;
export type PluralFormsMapping = {
    [scaleNumber: number]: {
        dual?: string;
        paucal?: string;
        plural?: string;
    };
};
export type PaucalConfig = {
    min: number;
    max: number;
};
export type LocaleConfig = {
    currency: CurrencyOptions;
    texts: {
        and: string;
        minus: string;
        only: string;
        point: string;
    };
    numberWordsMapping: NumberWordMap[];
    exactWordsMapping?: NumberWordMap[];
    ordinalWordsMapping?: OrdinalWordMap[];
    ordinalSuffix?: string;
    ordinalPrefix?: string;
    ordinalExactWordsMapping?: OrdinalWordMap[];
    namedLessThan1000?: boolean;
    scaleFirst?: boolean;
    splitWord?: string;
    ignoreZeroInDecimals?: boolean;
    decimalLengthWordMapping?: Record<number, string>;
    fractionDenominatorMapping?: Record<number, {
        singular: string;
        plural: string;
    }>;
    fractionSingularRule?: 'slavic';
    ignoreOneForWords?: string[];
    pluralMark?: string;
    pluralWords?: string[];
    pluralWordsOnlyWhenTrailing?: string[];
    pluralForms?: PluralFormsMapping;
    paucalConfig?: PaucalConfig;
    noSplitWordAfter?: string[];
    onlyInFront?: boolean;
    trim?: boolean;
    useTrailingForCurrency?: boolean;
    formalConfig?: FormalConfig;
};
export interface LocaleInterface {
    config: LocaleConfig;
}
export type FormalConfig = {
    numberWordsMapping?: NumberWordMap[];
    exactWordsMapping?: NumberWordMap[];
    ordinalWordsMapping?: OrdinalWordMap[];
    ordinalExactWordsMapping?: OrdinalWordMap[];
    currency?: CurrencyOptions;
    ignoreOneForWords?: string[];
};
