import { AxiosResponse, AxiosRequestConfig, AxiosError, HttpStatusCode } from 'axios';
import * as date_fns_locale from 'date-fns/locale';
import { Locale, formatRelative } from 'date-fns';
import { PrimitiveType, FormatXMLElementFn } from 'intl-messageformat';

interface AxiosRequestConfigData {
    raw?: boolean;
    silent?: boolean;
}
interface IHttpErrorData {
    message: string;
    code?: string;
    description?: string;
}
interface ErrorHandlerObject {
    after?(error?: IHttpErrorData, options?: ErrorHandlerObject): void;
    before?(error?: IHttpErrorData, options?: ErrorHandlerObject): void;
    message?: string;
}
type ErrorHandlerFunction = (error?: IHttpErrorData) => ErrorHandlerObject | boolean | undefined;
type ErrorHandler = ErrorHandlerFunction | ErrorHandlerObject | string;
type ErrorHandlerMany = Record<string, ErrorHandler>;
type AxiosReturnResponse<TData = unknown, TConfig = IAxiosClientConfig> = TConfig extends {
    data: {
        raw: boolean;
    };
} ? Promise<AxiosResponse<TData, unknown>> : Promise<TData>;

type IAxiosClientConfig = AxiosRequestConfig<AxiosRequestConfigData>;
interface IAxiosClient<Config extends IAxiosClientConfig> {
    config: Config;
    get<TData = unknown, TConfig extends Config = Config>(url: string, config?: TConfig): AxiosReturnResponse<TData, TConfig>;
    post<TData = unknown, TBody = unknown, TConfig extends Config = Config>(url: string, body: TBody, config?: TConfig): AxiosReturnResponse<TData, TConfig>;
    put<TData = unknown, TBody = unknown, TConfig extends Config = Config>(url: string, body?: TBody, config?: TConfig): AxiosReturnResponse<TData, TConfig>;
    patch<TData = unknown, TBody = unknown, TConfig extends Config = Config>(url: string, body?: TBody, config?: TConfig): AxiosReturnResponse<TData, TConfig>;
    delete<TData = unknown, TConfig extends Config = Config>(url: string, config?: TConfig): AxiosReturnResponse<TData, TConfig>;
}

interface IHttpError extends Error {
    message: string;
    status: number;
}
interface IHttpErrorOptions {
    status?: HttpStatusCode;
    code?: string;
    config?: AxiosError['config'];
    request?: AxiosError['request'];
    response?: AxiosError<IHttpErrorData>['response'];
    name?: string;
}
declare class HttpError extends AxiosError implements IHttpError {
    message: string;
    status: HttpStatusCode;
    name: string;
    constructor(message?: string, { status, code, config, request, response, name }?: IHttpErrorOptions);
}

declare const CURRENCY_RECORD: {
    readonly AFN: "Afghan Afghani";
    readonly ALL: "Albanian Lek";
    readonly DZD: "Algerian Dinar";
    readonly AOA: "Angolan Kwanza";
    readonly ARS: "Argentine Peso";
    readonly AMD: "Armenian Dram";
    readonly AWG: "Aruban Florin";
    readonly AUD: "Australian Dollar";
    readonly AZN: "Azerbaijani M anat";
    readonly BSD: "Bahamian Dollar";
    readonly BHD: "Bahraini Dinar";
    readonly BBD: "Bajan Dollar";
    readonly BDT: "Bangladeshi Taka";
    readonly BYN: "Belarusian Ruble";
    readonly BZD: "Belize Dollar";
    readonly BMD: "Bermudan Dollar";
    readonly BTN: "Bhutan currency";
    readonly BOB: "Bolivian Boliviano";
    readonly BAM: "Bosnia-Herzegovina Convertible Mark";
    readonly BWP: "Botswanan Pula";
    readonly BRL: "Brazilian Real";
    readonly BND: "Brunei Dollar";
    readonly BGN: "Bulgarian Lev";
    readonly BIF: "Burundian Fra nc";
    readonly XPF: "CFP Franc";
    readonly KHR: "Cambodian riel";
    readonly CAD: "Canadian Dollar";
    readonly CVE: "Cape Verdean Escudo";
    readonly KYD: "Cayman Islands Dollar";
    readonly FCFA: "Central African CFA Franc";
    readonly CLP: "Chilean Peso";
    readonly CLF: "Chilean Unit of Account (UF)";
    readonly CNY: "Chinese Yuan";
    readonly COP: "Colombian Peso";
    readonly KMF: "Comorian Franc";
    readonly CDF: "Congolese Franc";
    readonly CRC: "Costa Rican Colón";
    readonly HRK: "Croatian Kuna";
    readonly CUC: "Cuban Peso";
    readonly CZK: "Czech Koruna";
    readonly DKK: "Danish Krone";
    readonly DJF: "Djiboutian Franc";
    readonly DOP: "Dominican Pe so";
    readonly XCD: "East Caribbean Dollar";
    readonly EGP: "Egyptian Pound";
    readonly ETB: "Ethiopian Birr";
    readonly FJD: "Fijian Dollar";
    readonly GMD: "Gambian dalasi";
    readonly GEL: "Georgian Lari";
    readonly GHS: "Ghanaian Cedi";
    readonly GTQ: "Guatemalan Quetzal";
    readonly GNF: "Guinean Franc";
    readonly GYD: "Guyanaese Dollar";
    readonly HTG: "Haitian Gourde";
    readonly HNL: "Honduran Lempira";
    readonly HKD: "Hong Kong Dollar";
    readonly HUF: "Hungarian Forint";
    readonly ISK: "Icelandic Króna";
    readonly INR: "Indian Rupee";
    readonly IDR: "Indonesian Rupiah";
    readonly IRR: "Iranian Rial";
    readonly IQD: "Iraqi Dinar";
    readonly ILS: "Israeli New Shekel";
    readonly JMD: "Jamaican Dollar";
    readonly JPY: "Japanese Yen";
    readonly JOD: "Jordanian Dinar";
    readonly KZT: "Kazakhstani Tenge";
    readonly KES: "Kenyan Shilling";
    readonly KWD: "Kuwaiti Dinar";
    readonly KGS: "Kyrgystani Som";
    readonly LAK: "Laotian Kip";
    readonly LBP: "Lebanese pound";
    readonly LSL: "Lesotho Loti";
    readonly LRD: "Liberian Dollar";
    readonly LYD: "Libyan Dinar";
    readonly MOP: "Macanese Pataca";
    readonly MKD: "Macedonian Denar";
    readonly MGA: "Malagasy Ariary";
    readonly MWK: "Malawian Kwacha";
    readonly MYR: "Malaysian Ringgit";
    readonly MVR: "Maldivian Rufiyaa";
    readonly MRO: "Mauritanian Ouguiya";
    readonly MUR: "Mauritian Rupee";
    readonly MXN: "Mexican Peso";
    readonly MDL: "Moldovan Leu";
    readonly MAD: "Moroccan Dirham";
    readonly MZN: "Mozambican metical";
    readonly MMK: "Myanmar Kyat";
    readonly NAD: "Namibian dol lar";
    readonly NPR: "Nepalese Rupee";
    readonly ANG: "Netherlands Antillean Guilder";
    readonly NZD: "New Zealand Dollar";
    readonly NIO: "Nicaraguan Córdoba";
    readonly NGN: "Nigerian Naira";
    readonly NOK: "Norwegian Krone";
    readonly OMR: "Omani Rial";
    readonly PKR: "Pakistani Rupee";
    readonly PAB: "Panamanian Balboa";
    readonly PGK: "Papua New Guinean Kina";
    readonly PYG: "Paraguayan Guarani";
    readonly PHP: "Philippine peso";
    readonly PLN: "Poland Złoty";
    readonly GBP: "Pound sterling";
    readonly QAR: "Qatari Rial";
    readonly RON: "Romania n Leu";
    readonly RUB: "Russian Ruble";
    readonly RWF: "Rwandan franc";
    readonly SVC: "Salvadoran Colón";
    readonly SAR: "Saudi Riyal";
    readonly RSD: "Serbian Dinar";
    readonly SCR: "Seychellois Rupee";
    readonly SLL: "Sierra Leonean Leone";
    readonly SGD: "Singapore Dollar";
    readonly SBD: "Solomon Islands Dollar";
    readonly SOS: "Somali Shilling";
    readonly ZAR: "South African Rand";
    readonly KRW: "South Korean won";
    readonly VES: "Sovereign Bolivar";
    readonly LKR: "Sri Lankan Rupee";
    readonly SDG: "Sudanese pound";
    readonly SRD: "Surinamese Dollar";
    readonly SZL: "Swazi Lilangeni";
    readonly SEK: "Swedish Krona";
    readonly CF: "Swiss Franc";
    readonly CHF: "Swiss Franc";
    readonly TJS: "Tajikistani Somoni";
    readonly TZS: "Tanzanian Shilling";
    readonly THB: "Thai Baht";
    readonly TOP: "Tongan Pa\"anga";
    readonly TTD: "Trinidad and Tobago Dollar";
    readonly TND: "Tunisian Dinar";
    readonly TRY: "Turkish lira";
    readonly TMT: "Turkmenistan manat";
    readonly UGX: "Ugandan Shilling";
    readonly UAH: "Ukrainian hryvnia";
    readonly AED: "United Arab Emirates Dirham";
    readonly USD: "United States Dollar";
    readonly UYU: "Uruguayan Peso";
    readonly UZS: "Uzbekistani Som";
    readonly VND: "Vietnamese dong";
    readonly XOF: "West African CFA franc";
    readonly YER: "Yemeni Rial";
    readonly ZMW: "Zambian Kwacha";
    readonly XBT: "Bitcoin";
    readonly ETH: "Ether";
    readonly EUR: "Euro";
    readonly LTC: "Litecoin";
    readonly TWD: "NT$";
    readonly PEN: "Peruvian Sol";
};
declare const CURRENCY_CODES: ("AFN" | "ALL" | "DZD" | "AOA" | "ARS" | "AMD" | "AWG" | "AUD" | "AZN" | "BSD" | "BHD" | "BBD" | "BDT" | "BYN" | "BZD" | "BMD" | "BTN" | "BOB" | "BAM" | "BWP" | "BRL" | "BND" | "BGN" | "BIF" | "XPF" | "KHR" | "CAD" | "CVE" | "KYD" | "FCFA" | "CLP" | "CLF" | "CNY" | "COP" | "KMF" | "CDF" | "CRC" | "HRK" | "CUC" | "CZK" | "DKK" | "DJF" | "DOP" | "XCD" | "EGP" | "ETB" | "FJD" | "GMD" | "GEL" | "GHS" | "GTQ" | "GNF" | "GYD" | "HTG" | "HNL" | "HKD" | "HUF" | "ISK" | "INR" | "IDR" | "IRR" | "IQD" | "ILS" | "JMD" | "JPY" | "JOD" | "KZT" | "KES" | "KWD" | "KGS" | "LAK" | "LBP" | "LSL" | "LRD" | "LYD" | "MOP" | "MKD" | "MGA" | "MWK" | "MYR" | "MVR" | "MRO" | "MUR" | "MXN" | "MDL" | "MAD" | "MZN" | "MMK" | "NAD" | "NPR" | "ANG" | "NZD" | "NIO" | "NGN" | "NOK" | "OMR" | "PKR" | "PAB" | "PGK" | "PYG" | "PHP" | "PLN" | "GBP" | "QAR" | "RON" | "RUB" | "RWF" | "SVC" | "SAR" | "RSD" | "SCR" | "SLL" | "SGD" | "SBD" | "SOS" | "ZAR" | "KRW" | "VES" | "LKR" | "SDG" | "SRD" | "SZL" | "SEK" | "CF" | "CHF" | "TJS" | "TZS" | "THB" | "TOP" | "TTD" | "TND" | "TRY" | "TMT" | "UGX" | "UAH" | "AED" | "USD" | "UYU" | "UZS" | "VND" | "XOF" | "YER" | "ZMW" | "XBT" | "ETH" | "EUR" | "LTC" | "TWD" | "PEN")[];
type CurrencyCode = (typeof CURRENCY_CODES)[number];

interface CurrencyConverterOptions {
    from?: CurrencyCode;
    to?: CurrencyCode;
    amount?: number;
    isDecimalComma?: boolean;
}
interface RatesCacheOptions {
    isRatesCaching: boolean;
    ratesCacheDuration: number;
}
interface ICurrencyConverter {
    from: (currencyFrom: CurrencyCode) => CurrencyConverter;
    to: (currencyFrom: CurrencyCode) => CurrencyConverter;
    amount: (currencyAmount: number) => CurrencyConverter;
    setDecimalComma: (isDecimalComma: boolean) => CurrencyConverter;
    setupRatesCache: (ratesCacheOptions: RatesCacheOptions) => CurrencyConverter;
    rates: () => Promise<number>;
    convert: (currencyAmount?: number) => Promise<number>;
    getCurrencyName: (currencyCode: CurrencyCode) => string;
    addRateToRatesCache: (currencyPair: string, rate: number) => void;
}
declare class CurrencyConverter implements ICurrencyConverter {
    readonly currencyRecord: {
        readonly AFN: "Afghan Afghani";
        readonly ALL: "Albanian Lek";
        readonly DZD: "Algerian Dinar";
        readonly AOA: "Angolan Kwanza";
        readonly ARS: "Argentine Peso";
        readonly AMD: "Armenian Dram";
        readonly AWG: "Aruban Florin";
        readonly AUD: "Australian Dollar";
        readonly AZN: "Azerbaijani M anat";
        readonly BSD: "Bahamian Dollar";
        readonly BHD: "Bahraini Dinar";
        readonly BBD: "Bajan Dollar";
        readonly BDT: "Bangladeshi Taka";
        readonly BYN: "Belarusian Ruble";
        readonly BZD: "Belize Dollar";
        readonly BMD: "Bermudan Dollar";
        readonly BTN: "Bhutan currency";
        readonly BOB: "Bolivian Boliviano";
        readonly BAM: "Bosnia-Herzegovina Convertible Mark";
        readonly BWP: "Botswanan Pula";
        readonly BRL: "Brazilian Real";
        readonly BND: "Brunei Dollar";
        readonly BGN: "Bulgarian Lev";
        readonly BIF: "Burundian Fra nc";
        readonly XPF: "CFP Franc";
        readonly KHR: "Cambodian riel";
        readonly CAD: "Canadian Dollar";
        readonly CVE: "Cape Verdean Escudo";
        readonly KYD: "Cayman Islands Dollar";
        readonly FCFA: "Central African CFA Franc";
        readonly CLP: "Chilean Peso";
        readonly CLF: "Chilean Unit of Account (UF)";
        readonly CNY: "Chinese Yuan";
        readonly COP: "Colombian Peso";
        readonly KMF: "Comorian Franc";
        readonly CDF: "Congolese Franc";
        readonly CRC: "Costa Rican Colón";
        readonly HRK: "Croatian Kuna";
        readonly CUC: "Cuban Peso";
        readonly CZK: "Czech Koruna";
        readonly DKK: "Danish Krone";
        readonly DJF: "Djiboutian Franc";
        readonly DOP: "Dominican Pe so";
        readonly XCD: "East Caribbean Dollar";
        readonly EGP: "Egyptian Pound";
        readonly ETB: "Ethiopian Birr";
        readonly FJD: "Fijian Dollar";
        readonly GMD: "Gambian dalasi";
        readonly GEL: "Georgian Lari";
        readonly GHS: "Ghanaian Cedi";
        readonly GTQ: "Guatemalan Quetzal";
        readonly GNF: "Guinean Franc";
        readonly GYD: "Guyanaese Dollar";
        readonly HTG: "Haitian Gourde";
        readonly HNL: "Honduran Lempira";
        readonly HKD: "Hong Kong Dollar";
        readonly HUF: "Hungarian Forint";
        readonly ISK: "Icelandic Króna";
        readonly INR: "Indian Rupee";
        readonly IDR: "Indonesian Rupiah";
        readonly IRR: "Iranian Rial";
        readonly IQD: "Iraqi Dinar";
        readonly ILS: "Israeli New Shekel";
        readonly JMD: "Jamaican Dollar";
        readonly JPY: "Japanese Yen";
        readonly JOD: "Jordanian Dinar";
        readonly KZT: "Kazakhstani Tenge";
        readonly KES: "Kenyan Shilling";
        readonly KWD: "Kuwaiti Dinar";
        readonly KGS: "Kyrgystani Som";
        readonly LAK: "Laotian Kip";
        readonly LBP: "Lebanese pound";
        readonly LSL: "Lesotho Loti";
        readonly LRD: "Liberian Dollar";
        readonly LYD: "Libyan Dinar";
        readonly MOP: "Macanese Pataca";
        readonly MKD: "Macedonian Denar";
        readonly MGA: "Malagasy Ariary";
        readonly MWK: "Malawian Kwacha";
        readonly MYR: "Malaysian Ringgit";
        readonly MVR: "Maldivian Rufiyaa";
        readonly MRO: "Mauritanian Ouguiya";
        readonly MUR: "Mauritian Rupee";
        readonly MXN: "Mexican Peso";
        readonly MDL: "Moldovan Leu";
        readonly MAD: "Moroccan Dirham";
        readonly MZN: "Mozambican metical";
        readonly MMK: "Myanmar Kyat";
        readonly NAD: "Namibian dol lar";
        readonly NPR: "Nepalese Rupee";
        readonly ANG: "Netherlands Antillean Guilder";
        readonly NZD: "New Zealand Dollar";
        readonly NIO: "Nicaraguan Córdoba";
        readonly NGN: "Nigerian Naira";
        readonly NOK: "Norwegian Krone";
        readonly OMR: "Omani Rial";
        readonly PKR: "Pakistani Rupee";
        readonly PAB: "Panamanian Balboa";
        readonly PGK: "Papua New Guinean Kina";
        readonly PYG: "Paraguayan Guarani";
        readonly PHP: "Philippine peso";
        readonly PLN: "Poland Złoty";
        readonly GBP: "Pound sterling";
        readonly QAR: "Qatari Rial";
        readonly RON: "Romania n Leu";
        readonly RUB: "Russian Ruble";
        readonly RWF: "Rwandan franc";
        readonly SVC: "Salvadoran Colón";
        readonly SAR: "Saudi Riyal";
        readonly RSD: "Serbian Dinar";
        readonly SCR: "Seychellois Rupee";
        readonly SLL: "Sierra Leonean Leone";
        readonly SGD: "Singapore Dollar";
        readonly SBD: "Solomon Islands Dollar";
        readonly SOS: "Somali Shilling";
        readonly ZAR: "South African Rand";
        readonly KRW: "South Korean won";
        readonly VES: "Sovereign Bolivar";
        readonly LKR: "Sri Lankan Rupee";
        readonly SDG: "Sudanese pound";
        readonly SRD: "Surinamese Dollar";
        readonly SZL: "Swazi Lilangeni";
        readonly SEK: "Swedish Krona";
        readonly CF: "Swiss Franc";
        readonly CHF: "Swiss Franc";
        readonly TJS: "Tajikistani Somoni";
        readonly TZS: "Tanzanian Shilling";
        readonly THB: "Thai Baht";
        readonly TOP: "Tongan Pa\"anga";
        readonly TTD: "Trinidad and Tobago Dollar";
        readonly TND: "Tunisian Dinar";
        readonly TRY: "Turkish lira";
        readonly TMT: "Turkmenistan manat";
        readonly UGX: "Ugandan Shilling";
        readonly UAH: "Ukrainian hryvnia";
        readonly AED: "United Arab Emirates Dirham";
        readonly USD: "United States Dollar";
        readonly UYU: "Uruguayan Peso";
        readonly UZS: "Uzbekistani Som";
        readonly VND: "Vietnamese dong";
        readonly XOF: "West African CFA franc";
        readonly YER: "Yemeni Rial";
        readonly ZMW: "Zambian Kwacha";
        readonly XBT: "Bitcoin";
        readonly ETH: "Ether";
        readonly EUR: "Euro";
        readonly LTC: "Litecoin";
        readonly TWD: "NT$";
        readonly PEN: "Peruvian Sol";
    };
    readonly currencyCodes: ("AFN" | "ALL" | "DZD" | "AOA" | "ARS" | "AMD" | "AWG" | "AUD" | "AZN" | "BSD" | "BHD" | "BBD" | "BDT" | "BYN" | "BZD" | "BMD" | "BTN" | "BOB" | "BAM" | "BWP" | "BRL" | "BND" | "BGN" | "BIF" | "XPF" | "KHR" | "CAD" | "CVE" | "KYD" | "FCFA" | "CLP" | "CLF" | "CNY" | "COP" | "KMF" | "CDF" | "CRC" | "HRK" | "CUC" | "CZK" | "DKK" | "DJF" | "DOP" | "XCD" | "EGP" | "ETB" | "FJD" | "GMD" | "GEL" | "GHS" | "GTQ" | "GNF" | "GYD" | "HTG" | "HNL" | "HKD" | "HUF" | "ISK" | "INR" | "IDR" | "IRR" | "IQD" | "ILS" | "JMD" | "JPY" | "JOD" | "KZT" | "KES" | "KWD" | "KGS" | "LAK" | "LBP" | "LSL" | "LRD" | "LYD" | "MOP" | "MKD" | "MGA" | "MWK" | "MYR" | "MVR" | "MRO" | "MUR" | "MXN" | "MDL" | "MAD" | "MZN" | "MMK" | "NAD" | "NPR" | "ANG" | "NZD" | "NIO" | "NGN" | "NOK" | "OMR" | "PKR" | "PAB" | "PGK" | "PYG" | "PHP" | "PLN" | "GBP" | "QAR" | "RON" | "RUB" | "RWF" | "SVC" | "SAR" | "RSD" | "SCR" | "SLL" | "SGD" | "SBD" | "SOS" | "ZAR" | "KRW" | "VES" | "LKR" | "SDG" | "SRD" | "SZL" | "SEK" | "CF" | "CHF" | "TJS" | "TZS" | "THB" | "TOP" | "TTD" | "TND" | "TRY" | "TMT" | "UGX" | "UAH" | "AED" | "USD" | "UYU" | "UZS" | "VND" | "XOF" | "YER" | "ZMW" | "XBT" | "ETH" | "EUR" | "LTC" | "TWD" | "PEN")[];
    currencyFrom: string;
    currencyTo: string;
    currencyAmount: number;
    convertedValue: number;
    isDecimalComma: boolean;
    isRatesCaching: boolean;
    ratesCacheDuration: number;
    ratesCache: Record<string, {
        rate: number;
        expiryDate: Date;
    }>;
    constructor(options?: CurrencyConverterOptions);
    from(currencyFrom: CurrencyCode): this;
    to(currencyTo: CurrencyCode): this;
    amount(currencyAmount: number): this;
    setDecimalComma(isDecimalComma: boolean): this;
    replaceAll(text: string, queryString: string, replaceString: string): string;
    setupRatesCache(ratesCacheOptions: RatesCacheOptions): this;
    rates(): Promise<number>;
    convert(currencyAmount?: number): Promise<number>;
    getCurrencyName(currencyCode: CurrencyCode): "Afghan Afghani" | "Albanian Lek" | "Algerian Dinar" | "Angolan Kwanza" | "Argentine Peso" | "Armenian Dram" | "Aruban Florin" | "Australian Dollar" | "Azerbaijani M anat" | "Bahamian Dollar" | "Bahraini Dinar" | "Bajan Dollar" | "Bangladeshi Taka" | "Belarusian Ruble" | "Belize Dollar" | "Bermudan Dollar" | "Bhutan currency" | "Bolivian Boliviano" | "Bosnia-Herzegovina Convertible Mark" | "Botswanan Pula" | "Brazilian Real" | "Brunei Dollar" | "Bulgarian Lev" | "Burundian Fra nc" | "CFP Franc" | "Cambodian riel" | "Canadian Dollar" | "Cape Verdean Escudo" | "Cayman Islands Dollar" | "Central African CFA Franc" | "Chilean Peso" | "Chilean Unit of Account (UF)" | "Chinese Yuan" | "Colombian Peso" | "Comorian Franc" | "Congolese Franc" | "Costa Rican Colón" | "Croatian Kuna" | "Cuban Peso" | "Czech Koruna" | "Danish Krone" | "Djiboutian Franc" | "Dominican Pe so" | "East Caribbean Dollar" | "Egyptian Pound" | "Ethiopian Birr" | "Fijian Dollar" | "Gambian dalasi" | "Georgian Lari" | "Ghanaian Cedi" | "Guatemalan Quetzal" | "Guinean Franc" | "Guyanaese Dollar" | "Haitian Gourde" | "Honduran Lempira" | "Hong Kong Dollar" | "Hungarian Forint" | "Icelandic Króna" | "Indian Rupee" | "Indonesian Rupiah" | "Iranian Rial" | "Iraqi Dinar" | "Israeli New Shekel" | "Jamaican Dollar" | "Japanese Yen" | "Jordanian Dinar" | "Kazakhstani Tenge" | "Kenyan Shilling" | "Kuwaiti Dinar" | "Kyrgystani Som" | "Laotian Kip" | "Lebanese pound" | "Lesotho Loti" | "Liberian Dollar" | "Libyan Dinar" | "Macanese Pataca" | "Macedonian Denar" | "Malagasy Ariary" | "Malawian Kwacha" | "Malaysian Ringgit" | "Maldivian Rufiyaa" | "Mauritanian Ouguiya" | "Mauritian Rupee" | "Mexican Peso" | "Moldovan Leu" | "Moroccan Dirham" | "Mozambican metical" | "Myanmar Kyat" | "Namibian dol lar" | "Nepalese Rupee" | "Netherlands Antillean Guilder" | "New Zealand Dollar" | "Nicaraguan Córdoba" | "Nigerian Naira" | "Norwegian Krone" | "Omani Rial" | "Pakistani Rupee" | "Panamanian Balboa" | "Papua New Guinean Kina" | "Paraguayan Guarani" | "Philippine peso" | "Poland Złoty" | "Pound sterling" | "Qatari Rial" | "Romania n Leu" | "Russian Ruble" | "Rwandan franc" | "Salvadoran Colón" | "Saudi Riyal" | "Serbian Dinar" | "Seychellois Rupee" | "Sierra Leonean Leone" | "Singapore Dollar" | "Solomon Islands Dollar" | "Somali Shilling" | "South African Rand" | "South Korean won" | "Sovereign Bolivar" | "Sri Lankan Rupee" | "Sudanese pound" | "Surinamese Dollar" | "Swazi Lilangeni" | "Swedish Krona" | "Swiss Franc" | "Tajikistani Somoni" | "Tanzanian Shilling" | "Thai Baht" | "Tongan Pa\"anga" | "Trinidad and Tobago Dollar" | "Tunisian Dinar" | "Turkish lira" | "Turkmenistan manat" | "Ugandan Shilling" | "Ukrainian hryvnia" | "United Arab Emirates Dirham" | "United States Dollar" | "Uruguayan Peso" | "Uzbekistani Som" | "Vietnamese dong" | "West African CFA franc" | "Yemeni Rial" | "Zambian Kwacha" | "Bitcoin" | "Ether" | "Euro" | "Litecoin" | "NT$" | "Peruvian Sol";
    addRateToRatesCache(currencyPair: string, rate: number): void;
}
declare const defaultCurrencyConverter: CurrencyConverter;

declare const TIME_ZONE_LISTS: readonly ["LOCAL", "UTC", "Africa/Abidjan", "Africa/Nairobi", "Africa/Algiers", "Africa/Lagos", "Africa/Bissau", "Africa/Maputo", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/El_Aaiun", "Africa/Johannesburg", "Africa/Juba", "Africa/Khartoum", "Africa/Monrovia", "Africa/Ndjamena", "Africa/Sao_Tome", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Puerto_Rico", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Asuncion", "America/Panama", "America/Bahia_Banderas", "America/Bahia", "America/Barbados", "America/Belem", "America/Belize", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Cayenne", "America/Chicago", "America/Chihuahua", "America/Costa_Rica", "America/Phoenix", "America/Cuiaba", "America/Danmarkshavn", "America/Dawson_Creek", "America/Dawson", "America/Denver", "America/Detroit", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Tijuana", "America/Fort_Nelson", "America/Fort_Wayne", "America/Fortaleza", "America/Glace_Bay", "America/Godthab", "America/Goose_Bay", "America/Grand_Turk", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana/Knox", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Tell_City", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Inuvik", "America/Iqaluit", "America/Jamaica", "America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Maceio", "America/Managua", "America/Manaus", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Menominee", "America/Merida", "America/Metlakatla", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/Toronto", "America/New_York", "America/Nome", "America/Noronha", "America/North_Dakota/Beulah", "America/North_Dakota/Center", "America/North_Dakota/New_Salem", "America/Ojinaga", "America/Pangnirtung", "America/Paramaribo", "America/Port-au-Prince", "America/Rio_Branco", "America/Porto_Velho", "America/Punta_Arenas", "America/Winnipeg", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Sitka", "America/St_Johns", "America/Swift_Current", "America/Tegucigalpa", "America/Thule", "America/Vancouver", "America/Whitehorse", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Pacific/Port_Moresby", "Antarctica/Macquarie", "Antarctica/Mawson", "Pacific/Auckland", "Antarctica/Palmer", "Antarctica/Rothera", "Asia/Riyadh", "Antarctica/Troll", "Asia/Urumqi", "Europe/Berlin", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Atyrau", "Asia/Baghdad", "Asia/Qatar", "Asia/Baku", "Asia/Bangkok", "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Kolkata", "Asia/Chita", "Asia/Choibalsan", "Asia/Shanghai", "Asia/Colombo", "Asia/Dhaka", "Asia/Damascus", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Famagusta", "Asia/Gaza", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Europe/Istanbul", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kathmandu", "Asia/Khandyga", "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Rangoon", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ulaanbaatar", "Asia/Ust-Nera", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faroe", "Atlantic/Madeira", "Atlantic/South_Georgia", "Atlantic/Stanley", "Australia/Sydney", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Hobart", "Australia/Darwin", "Australia/Eucla", "Australia/Lord_Howe", "Australia/Lindeman", "Australia/Melbourne", "Australia/Perth", "CET", "Pacific/Easter", "CST6CDT", "EET", "Europe/Dublin", "EST", "EST5EDT", "Etc/GMT-0", "Etc/GMT-1", "Etc/GMT-10", "Etc/GMT-11", "Etc/GMT-12", "Etc/GMT-13", "Etc/GMT-14", "Etc/GMT-2", "Etc/GMT-3", "Etc/GMT-4", "Etc/GMT-5", "Etc/GMT-6", "Etc/GMT-7", "Etc/GMT-8", "Etc/GMT-9", "Etc/GMT+1", "Etc/GMT+10", "Etc/GMT+11", "Etc/GMT+12", "Etc/GMT+2", "Etc/GMT+3", "Etc/GMT+4", "Etc/GMT+5", "Etc/GMT+6", "Etc/GMT+7", "Etc/GMT+8", "Etc/GMT+9", "Etc/UTC", "Europe/Brussels", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens", "Europe/London", "Europe/Belgrade", "Europe/Prague", "Europe/Bucharest", "Europe/Budapest", "Europe/Zurich", "Europe/Chisinau", "Europe/Gibraltar", "Europe/Helsinki", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Kirov", "Europe/Lisbon", "Europe/Madrid", "Europe/Malta", "Europe/Minsk", "Europe/Paris", "Europe/Moscow", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/Saratov", "Europe/Simferopol", "Europe/Sofia", "Europe/Tallinn", "Europe/Tirane", "Europe/Ulyanovsk", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "HST", "Indian/Chagos", "Indian/Maldives", "Indian/Mauritius", "Pacific/Kwajalein", "MET", "MST", "MST7MDT", "Pacific/Chatham", "Pacific/Apia", "Pacific/Bougainville", "Pacific/Efate", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Tarawa", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Marquesas", "Pacific/Pago_Pago", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Rarotonga", "Pacific/Tahiti", "Pacific/Tongatapu", "PST8PDT", "WET"];
type TimeZone = (typeof TIME_ZONE_LISTS)[number];

type AllLocaleType = typeof date_fns_locale;
type DefaultCountryBasedFormatOptionKey = 'LOCAL' | 'US' | 'IN';
declare global {
    interface CountryBasedFormat {
        dateFormat?: string;
        dateTimeFormat?: string;
        currency: CurrencyCode;
        timeZone: TimeZone;
        locale: keyof AllLocaleType;
    }
    interface CountryBasedFormatOptions {
        LOCAL: CountryBasedFormat;
        US: CountryBasedFormat;
        IN: CountryBasedFormat;
    }
}
type CountryBasedFormatOptionKey = keyof CountryBasedFormatOptions;

interface ICurrencyIntl extends ICurrencyConverter {
    format(value: string | number, currency?: string): string;
}
interface CurrencyIntlOptions extends CurrencyConverterOptions {
    currency: CurrencyCode;
    locale?: string;
    fallback?: string;
}
/**
 * Represents a currency formatter that formats numeric values into currency strings.
 */
declare class CurrencyIntl extends CurrencyConverter implements ICurrencyIntl {
    readonly currency: CurrencyCode;
    readonly fallback: string;
    readonly locale?: string;
    /**
     * Constructs a new instance of the CurrencyIntl class.
     * @param options - The options for configuring the currency formatter.
     */
    constructor({ locale, currency, from, fallback, ...options }: CurrencyIntlOptions);
    /**
     * Formats the given value into a currency string.
     * @param value - The value to format.
     * @param currency - The currency code to use for formatting. Defaults to the currency specified in the constructor.
     * @returns The formatted currency string.
     */
    format(value: number | string, currency?: "AFN" | "ALL" | "DZD" | "AOA" | "ARS" | "AMD" | "AWG" | "AUD" | "AZN" | "BSD" | "BHD" | "BBD" | "BDT" | "BYN" | "BZD" | "BMD" | "BTN" | "BOB" | "BAM" | "BWP" | "BRL" | "BND" | "BGN" | "BIF" | "XPF" | "KHR" | "CAD" | "CVE" | "KYD" | "FCFA" | "CLP" | "CLF" | "CNY" | "COP" | "KMF" | "CDF" | "CRC" | "HRK" | "CUC" | "CZK" | "DKK" | "DJF" | "DOP" | "XCD" | "EGP" | "ETB" | "FJD" | "GMD" | "GEL" | "GHS" | "GTQ" | "GNF" | "GYD" | "HTG" | "HNL" | "HKD" | "HUF" | "ISK" | "INR" | "IDR" | "IRR" | "IQD" | "ILS" | "JMD" | "JPY" | "JOD" | "KZT" | "KES" | "KWD" | "KGS" | "LAK" | "LBP" | "LSL" | "LRD" | "LYD" | "MOP" | "MKD" | "MGA" | "MWK" | "MYR" | "MVR" | "MRO" | "MUR" | "MXN" | "MDL" | "MAD" | "MZN" | "MMK" | "NAD" | "NPR" | "ANG" | "NZD" | "NIO" | "NGN" | "NOK" | "OMR" | "PKR" | "PAB" | "PGK" | "PYG" | "PHP" | "PLN" | "GBP" | "QAR" | "RON" | "RUB" | "RWF" | "SVC" | "SAR" | "RSD" | "SCR" | "SLL" | "SGD" | "SBD" | "SOS" | "ZAR" | "KRW" | "VES" | "LKR" | "SDG" | "SRD" | "SZL" | "SEK" | "CF" | "CHF" | "TJS" | "TZS" | "THB" | "TOP" | "TTD" | "TND" | "TRY" | "TMT" | "UGX" | "UAH" | "AED" | "USD" | "UYU" | "UZS" | "VND" | "XOF" | "YER" | "ZMW" | "XBT" | "ETH" | "EUR" | "LTC" | "TWD" | "PEN"): string;
    private isValid;
}
declare const currencyIntl: CurrencyIntl;

type BaseDateType = string | Date | number;
interface IDateTransformer<D extends BaseDateType = BaseDateType> {
    parse(value: unknown, timeZone: string, locale?: Locale): Date;
    convert(value: D, timeZone: string, locale?: Locale): string;
}
interface IDateOptions<D extends BaseDateType = BaseDateType> {
    /**
     * The format string for date-only formatting.
     * @example 'yyyy-MM-dd'
     * @url https://date-fns.org/v3.6.0/docs/format
     */
    dateFormat: string;
    /**
     * The format string for date and time formatting.
     * @example 'yyyy-MM-dd hh:mm a'
     * @url https://date-fns.org/v3.6.0/docs/format
     */
    dateTimeFormat: string;
    /**
     * The transformer used for parsing and converting dates.
     */
    transformer?: IDateTransformer<D>;
    /**
     * The time zone to be used for formatting.
     * @example 'America/Los_Angeles'
     */
    timeZone?: TimeZone;
    /**
     * The locale to be used for formatting.
     * @example 'en-US'
     */
    locale?: Locale;
    /**
     * The fallback string to be used when formatting fails.
     * @example 'N/A'
     */
    fallback?: string;
}
interface FormatOptions<D extends BaseDateType> extends Partial<Omit<IDateOptions<D>, 'transformer' | 'dateTimeFormat'>> {
}
/**
 * Represents a utility class for formatting dates and times.
 * @template D - The type of the date value.
 */
declare class DateIntl<D extends BaseDateType> {
    /**
     * The locale to be used for formatting.
     * @example 'en-US'
     */
    readonly locale?: Locale;
    /**
     * The format string for date-only formatting.
     * @example 'yyyy-MM-dd'
     * @url https://date-fns.org/v3.6.0/docs/format
     */
    readonly dateFormat: string;
    /**
     * The format string for date and time formatting.
     * @example 'yyyy-MM-dd hh:mm a'
     * @url https://date-fns.org/v3.6.0/docs/format
     */
    readonly dateTimeFormat: string;
    /**
     * The transformer used for parsing and converting dates.
     */
    readonly transformer: IDateTransformer;
    /**
     * The fallback string to be used when formatting fails.
     * @example 'N/A'
     */
    readonly fallback: string;
    /**
     * The time zone to be used for formatting.
     * @example 'America/Los_Angeles'
     */
    readonly timeZone: TimeZone;
    /**
     * Constructs a new instance of the DateIntl class.
     * @param options - The options for configuring the DateIntl instance.
     */
    constructor({ locale, dateFormat, dateTimeFormat, transformer, timeZone, fallback }: IDateOptions<D>);
    /**
     * Formats the given date value using the specified options.
     * @param value - The date value to format.
     * @param options - The options for formatting the date. Can be a string or an object. If a string is provided, it will be used as the date format. If an object is provided, it will be used as the options for formatting the date.
     * @returns The formatted date string.
     */
    format(value: D | undefined | null, options?: FormatOptions<D> | string): string;
    /**
     * Formats the given date value as a date string using the specified options.
     * @param value - The date value to format.
     * @param options - The options for formatting the date. Can be a string or an object. If a string is provided, it will be used as the date format. If an object is provided, it will be used as the options for formatting the date.
     * @returns The formatted date string.
     */
    formatDate(value: D | undefined | null, options?: FormatOptions<D> | string): string;
    /**
     * Formats the given date value as a date and time string using the specified options.
     * @param value - The date value to format.
     * @param options - The options for formatting the date and time. Can be a string or an object. If a string is provided, it will be used as the date format. If an object is provided, it will be used as the options for formatting the date and time.
     * @returns The formatted date and time string.
     */
    formatDateTime(value: D | undefined | null, options?: FormatOptions<D> | string): string;
    /**
     * Formats the given date value as a relative time string.
     * @param value - The date value to format.
     * @param baseDate - The base date to calculate the relative time from.
     * @param options - The options for formatting the relative time.
     * @returns The formatted relative time string.
     */
    formatRelativeTime(value: D, baseDate?: D, options?: Parameters<typeof formatRelative>[2]): string;
    /**
     * Converts the given date value to a string representation.
     * @param date - The date value to convert.
     * @returns The string representation of the date.
     */
    given(date: D): string;
    /**
     * Gets the current date and time as a string representation.
     * @returns The string representation of the current date and time.
     */
    now(): string;
    /**
     * Gets a past date as a string representation.
     * @param minDate - The minimum date to generate the range from.
     * @returns The string representation of the past date.
     */
    past(minDate?: D): string;
    /**
     * Gets a future date as a string representation.
     * @param maxDate - The maximum date to generate the range to.
     * @returns The string representation of the future date.
     */
    future(maxDate?: D): string;
    /**
     * Generates a random date within the specified range and returns it as a string representation.
     * @param minDate - The minimum date of the range.
     * @param maxDate - The maximum date of the range.
     * @returns The string representation of the random date.
     * @throws An error if the maxDate is not greater than the minDate.
     */
    range(minDate: D, maxDate: D): string;
    /**
     * Checks if the given value is a valid date.
     * @param value - The value to check.
     * @returns True if the value is a valid date, false otherwise.
     */
    isValid(value: unknown): boolean;
    /**
     * Checks if two dates are the same day.
     * @param date1 - The first date to compare.
     * @param date2 - The second date to compare.
     * @returns True if the dates are the same day, false otherwise.
     */
    isSameDay(date1: D, date2: D): boolean;
    private isDate;
    private toDate;
    private toInput;
}
declare const DEFAULT_DATE_OPTIONS: IDateOptions;
declare const dateIntl: DateIntl<BaseDateType>;

interface INumberIntl {
    format(value: number | string, options?: Intl.NumberFormatOptions): string;
}
interface INumberIntlOptions {
    locale?: string;
    fallback?: string;
}
/**
 * Represents a class for formatting numbers based on internationalization settings.
 */
declare class NumberIntl implements INumberIntl {
    readonly locale?: string;
    readonly fallback: string;
    /**
     * Creates an instance of NumberIntl.
     * @param options - The options for configuring the NumberIntl instance.
     */
    constructor({ locale, fallback }?: INumberIntlOptions);
    /**
     * Formats the given value as a string based on the provided options.
     * @param value - The value to be formatted.
     * @param options - The options for formatting the number.
     * @returns The formatted number as a string.
     */
    format(value: number | string, options?: Intl.NumberFormatOptions): string;
    private isValid;
}
declare const numberIntl: NumberIntl;

type Format<T> = Record<string, PrimitiveType | T | FormatXMLElementFn<T, string | T | (string | T)[]>> | undefined;
/**
 * Translates a message using the provided values and locale.
 *
 * @param message - The message to be translated.
 * @param values - Optional values to be used for formatting the translated message.
 * @param locale - Optional locale to be used for translation.
 * @returns The translated message as a string.
 */
declare const t: <T = void>(message: string, values?: Format<T>, locale?: string) => string;

export { type AllLocaleType as A, type BaseDateType as B, CURRENCY_CODES as C, DEFAULT_DATE_OPTIONS as D, type ErrorHandler as E, type FormatOptions as F, defaultCurrencyConverter as G, HttpError as H, type IAxiosClient as I, numberIntl as J, t as K, NumberIntl as N, type RatesCacheOptions as R, TIME_ZONE_LISTS as T, type AxiosRequestConfigData as a, type AxiosReturnResponse as b, CURRENCY_RECORD as c, type CountryBasedFormatOptionKey as d, type CurrencyCode as e, CurrencyConverter as f, type CurrencyConverterOptions as g, CurrencyIntl as h, type CurrencyIntlOptions as i, DateIntl as j, type DefaultCountryBasedFormatOptionKey as k, type ErrorHandlerFunction as l, type ErrorHandlerMany as m, type ErrorHandlerObject as n, type IAxiosClientConfig as o, type ICurrencyConverter as p, type ICurrencyIntl as q, type IDateOptions as r, type IDateTransformer as s, type IHttpErrorData as t, type IHttpErrorOptions as u, type INumberIntl as v, type INumberIntlOptions as w, type TimeZone as x, currencyIntl as y, dateIntl as z };
