declare const continents: {
    readonly AF: "Africa";
    readonly AN: "Antarctica";
    readonly AS: "Asia";
    readonly EU: "Europe";
    readonly NA: "North America";
    readonly OC: "Oceania";
    readonly SA: "South America";
};

declare const countries: Record<string, ICountry>;

declare const languages: {
    readonly aa: {
        readonly name: "Afar";
        readonly native: "Afar";
    };
    readonly ab: {
        readonly name: "Abkhazian";
        readonly native: "Аҧсуа";
    };
    readonly af: {
        readonly name: "Afrikaans";
        readonly native: "Afrikaans";
    };
    readonly ak: {
        readonly name: "Akan";
        readonly native: "Akana";
    };
    readonly am: {
        readonly name: "Amharic";
        readonly native: "አማርኛ";
    };
    readonly an: {
        readonly name: "Aragonese";
        readonly native: "Aragonés";
    };
    readonly ar: {
        readonly name: "Arabic";
        readonly native: "العربية";
        readonly rtl: 1;
    };
    readonly as: {
        readonly name: "Assamese";
        readonly native: "অসমীয়া";
    };
    readonly av: {
        readonly name: "Avar";
        readonly native: "Авар";
    };
    readonly ay: {
        readonly name: "Aymara";
        readonly native: "Aymar";
    };
    readonly az: {
        readonly name: "Azerbaijani";
        readonly native: "Azərbaycanca / آذربايجان";
    };
    readonly ba: {
        readonly name: "Bashkir";
        readonly native: "Башҡорт";
    };
    readonly be: {
        readonly name: "Belarusian";
        readonly native: "Беларуская";
    };
    readonly bg: {
        readonly name: "Bulgarian";
        readonly native: "Български";
    };
    readonly bh: {
        readonly name: "Bihari";
        readonly native: "भोजपुरी";
    };
    readonly bi: {
        readonly name: "Bislama";
        readonly native: "Bislama";
    };
    readonly bm: {
        readonly name: "Bambara";
        readonly native: "Bamanankan";
    };
    readonly bn: {
        readonly name: "Bengali";
        readonly native: "বাংলা";
    };
    readonly bo: {
        readonly name: "Tibetan";
        readonly native: "བོད་ཡིག / Bod skad";
    };
    readonly br: {
        readonly name: "Breton";
        readonly native: "Brezhoneg";
    };
    readonly bs: {
        readonly name: "Bosnian";
        readonly native: "Bosanski";
    };
    readonly ca: {
        readonly name: "Catalan";
        readonly native: "Català";
    };
    readonly ce: {
        readonly name: "Chechen";
        readonly native: "Нохчийн";
    };
    readonly ch: {
        readonly name: "Chamorro";
        readonly native: "Chamoru";
    };
    readonly co: {
        readonly name: "Corsican";
        readonly native: "Corsu";
    };
    readonly cr: {
        readonly name: "Cree";
        readonly native: "Nehiyaw";
    };
    readonly cs: {
        readonly name: "Czech";
        readonly native: "Čeština";
    };
    readonly cu: {
        readonly name: "Old Church Slavonic / Old Bulgarian";
        readonly native: "словѣньскъ / slověnĭskŭ";
    };
    readonly cv: {
        readonly name: "Chuvash";
        readonly native: "Чăваш";
    };
    readonly cy: {
        readonly name: "Welsh";
        readonly native: "Cymraeg";
    };
    readonly da: {
        readonly name: "Danish";
        readonly native: "Dansk";
    };
    readonly de: {
        readonly name: "German";
        readonly native: "Deutsch";
    };
    readonly dv: {
        readonly name: "Divehi";
        readonly native: "ދިވެހިބަސް";
        readonly rtl: 1;
    };
    readonly dz: {
        readonly name: "Dzongkha";
        readonly native: "ཇོང་ཁ";
    };
    readonly ee: {
        readonly name: "Ewe";
        readonly native: "Ɛʋɛ";
    };
    readonly el: {
        readonly name: "Greek";
        readonly native: "Ελληνικά";
    };
    readonly en: {
        readonly name: "English";
        readonly native: "English";
    };
    readonly eo: {
        readonly name: "Esperanto";
        readonly native: "Esperanto";
    };
    readonly es: {
        readonly name: "Spanish";
        readonly native: "Español";
    };
    readonly et: {
        readonly name: "Estonian";
        readonly native: "Eesti";
    };
    readonly eu: {
        readonly name: "Basque";
        readonly native: "Euskara";
    };
    readonly fa: {
        readonly name: "Persian";
        readonly native: "فارسی";
        readonly rtl: 1;
    };
    readonly ff: {
        readonly name: "Peul";
        readonly native: "Fulfulde";
    };
    readonly fi: {
        readonly name: "Finnish";
        readonly native: "Suomi";
    };
    readonly fj: {
        readonly name: "Fijian";
        readonly native: "Na Vosa Vakaviti";
    };
    readonly fo: {
        readonly name: "Faroese";
        readonly native: "Føroyskt";
    };
    readonly fr: {
        readonly name: "French";
        readonly native: "Français";
    };
    readonly fy: {
        readonly name: "West Frisian";
        readonly native: "Frysk";
    };
    readonly ga: {
        readonly name: "Irish";
        readonly native: "Gaeilge";
    };
    readonly gd: {
        readonly name: "Scottish Gaelic";
        readonly native: "Gàidhlig";
    };
    readonly gl: {
        readonly name: "Galician";
        readonly native: "Galego";
    };
    readonly gn: {
        readonly name: "Guarani";
        readonly native: "Avañe'ẽ";
    };
    readonly gu: {
        readonly name: "Gujarati";
        readonly native: "ગુજરાતી";
    };
    readonly gv: {
        readonly name: "Manx";
        readonly native: "Gaelg";
    };
    readonly ha: {
        readonly name: "Hausa";
        readonly native: "هَوُسَ";
        readonly rtl: 1;
    };
    readonly he: {
        readonly name: "Hebrew";
        readonly native: "עברית";
        readonly rtl: 1;
    };
    readonly hi: {
        readonly name: "Hindi";
        readonly native: "हिन्दी";
    };
    readonly ho: {
        readonly name: "Hiri Motu";
        readonly native: "Hiri Motu";
    };
    readonly hr: {
        readonly name: "Croatian";
        readonly native: "Hrvatski";
    };
    readonly ht: {
        readonly name: "Haitian";
        readonly native: "Krèyol ayisyen";
    };
    readonly hu: {
        readonly name: "Hungarian";
        readonly native: "Magyar";
    };
    readonly hy: {
        readonly name: "Armenian";
        readonly native: "Հայերեն";
    };
    readonly hz: {
        readonly name: "Herero";
        readonly native: "Otsiherero";
    };
    readonly ia: {
        readonly name: "Interlingua";
        readonly native: "Interlingua";
    };
    readonly id: {
        readonly name: "Indonesian";
        readonly native: "Bahasa Indonesia";
    };
    readonly ie: {
        readonly name: "Interlingue";
        readonly native: "Interlingue";
    };
    readonly ig: {
        readonly name: "Igbo";
        readonly native: "Igbo";
    };
    readonly ii: {
        readonly name: "Sichuan Yi";
        readonly native: "ꆇꉙ / 四川彝语";
    };
    readonly ik: {
        readonly name: "Inupiak";
        readonly native: "Iñupiak";
    };
    readonly io: {
        readonly name: "Ido";
        readonly native: "Ido";
    };
    readonly is: {
        readonly name: "Icelandic";
        readonly native: "Íslenska";
    };
    readonly it: {
        readonly name: "Italian";
        readonly native: "Italiano";
    };
    readonly iu: {
        readonly name: "Inuktitut";
        readonly native: "ᐃᓄᒃᑎᑐᑦ";
    };
    readonly ja: {
        readonly name: "Japanese";
        readonly native: "日本語";
    };
    readonly jv: {
        readonly name: "Javanese";
        readonly native: "Basa Jawa";
    };
    readonly ka: {
        readonly name: "Georgian";
        readonly native: "ქართული";
    };
    readonly kg: {
        readonly name: "Kongo";
        readonly native: "KiKongo";
    };
    readonly ki: {
        readonly name: "Kikuyu";
        readonly native: "Gĩkũyũ";
    };
    readonly kj: {
        readonly name: "Kuanyama";
        readonly native: "Kuanyama";
    };
    readonly kk: {
        readonly name: "Kazakh";
        readonly native: "Қазақша";
    };
    readonly kl: {
        readonly name: "Greenlandic";
        readonly native: "Kalaallisut";
    };
    readonly km: {
        readonly name: "Cambodian";
        readonly native: "ភាសាខ្មែរ";
    };
    readonly kn: {
        readonly name: "Kannada";
        readonly native: "ಕನ್ನಡ";
    };
    readonly ko: {
        readonly name: "Korean";
        readonly native: "한국어";
    };
    readonly kr: {
        readonly name: "Kanuri";
        readonly native: "Kanuri";
    };
    readonly ks: {
        readonly name: "Kashmiri";
        readonly native: "कश्मीरी / كشميري";
        readonly rtl: 1;
    };
    readonly ku: {
        readonly name: "Kurdish";
        readonly native: "Kurdî / كوردی";
        readonly rtl: 1;
    };
    readonly kv: {
        readonly name: "Komi";
        readonly native: "Коми";
    };
    readonly kw: {
        readonly name: "Cornish";
        readonly native: "Kernewek";
    };
    readonly ky: {
        readonly name: "Kyrgyz";
        readonly native: "Кыргызча";
    };
    readonly la: {
        readonly name: "Latin";
        readonly native: "Latina";
    };
    readonly lb: {
        readonly name: "Luxembourgish";
        readonly native: "Lëtzebuergesch";
    };
    readonly lg: {
        readonly name: "Ganda";
        readonly native: "Luganda";
    };
    readonly li: {
        readonly name: "Limburgian";
        readonly native: "Limburgs";
    };
    readonly ln: {
        readonly name: "Lingala";
        readonly native: "Lingála";
    };
    readonly lo: {
        readonly name: "Laotian";
        readonly native: "ລາວ / Pha xa lao";
    };
    readonly lt: {
        readonly name: "Lithuanian";
        readonly native: "Lietuvių";
    };
    readonly lu: {
        readonly name: "Luba-Katanga";
        readonly native: "Tshiluba";
    };
    readonly lv: {
        readonly name: "Latvian";
        readonly native: "Latviešu";
    };
    readonly mg: {
        readonly name: "Malagasy";
        readonly native: "Malagasy";
    };
    readonly mh: {
        readonly name: "Marshallese";
        readonly native: "Kajin Majel / Ebon";
    };
    readonly mi: {
        readonly name: "Maori";
        readonly native: "Māori";
    };
    readonly mk: {
        readonly name: "Macedonian";
        readonly native: "Македонски";
    };
    readonly ml: {
        readonly name: "Malayalam";
        readonly native: "മലയാളം";
    };
    readonly mn: {
        readonly name: "Mongolian";
        readonly native: "Монгол";
    };
    readonly mo: {
        readonly name: "Moldovan";
        readonly native: "Moldovenească";
    };
    readonly mr: {
        readonly name: "Marathi";
        readonly native: "मराठी";
    };
    readonly ms: {
        readonly name: "Malay";
        readonly native: "Bahasa Melayu";
    };
    readonly mt: {
        readonly name: "Maltese";
        readonly native: "bil-Malti";
    };
    readonly my: {
        readonly name: "Burmese";
        readonly native: "မြန်မာစာ";
    };
    readonly na: {
        readonly name: "Nauruan";
        readonly native: "Dorerin Naoero";
    };
    readonly nb: {
        readonly name: "Norwegian Bokmål";
        readonly native: "Norsk bokmål";
    };
    readonly nd: {
        readonly name: "North Ndebele";
        readonly native: "Sindebele";
    };
    readonly ne: {
        readonly name: "Nepali";
        readonly native: "नेपाली";
    };
    readonly ng: {
        readonly name: "Ndonga";
        readonly native: "Oshiwambo";
    };
    readonly nl: {
        readonly name: "Dutch";
        readonly native: "Nederlands";
    };
    readonly nn: {
        readonly name: "Norwegian Nynorsk";
        readonly native: "Norsk nynorsk";
    };
    readonly no: {
        readonly name: "Norwegian";
        readonly native: "Norsk";
    };
    readonly nr: {
        readonly name: "South Ndebele";
        readonly native: "isiNdebele";
    };
    readonly nv: {
        readonly name: "Navajo";
        readonly native: "Diné bizaad";
    };
    readonly ny: {
        readonly name: "Chichewa";
        readonly native: "Chi-Chewa";
    };
    readonly oc: {
        readonly name: "Occitan";
        readonly native: "Occitan";
    };
    readonly oj: {
        readonly name: "Ojibwa";
        readonly native: "ᐊᓂᔑᓈᐯᒧᐎᓐ / Anishinaabemowin";
    };
    readonly om: {
        readonly name: "Oromo";
        readonly native: "Oromoo";
    };
    readonly or: {
        readonly name: "Oriya";
        readonly native: "ଓଡ଼ିଆ";
    };
    readonly os: {
        readonly name: "Ossetian / Ossetic";
        readonly native: "Иронау";
    };
    readonly pa: {
        readonly name: "Panjabi / Punjabi";
        readonly native: "ਪੰਜਾਬੀ / पंजाबी / پنجابي";
    };
    readonly pi: {
        readonly name: "Pali";
        readonly native: "Pāli / पाऴि";
    };
    readonly pl: {
        readonly name: "Polish";
        readonly native: "Polski";
    };
    readonly ps: {
        readonly name: "Pashto";
        readonly native: "پښتو";
        readonly rtl: 1;
    };
    readonly pt: {
        readonly name: "Portuguese";
        readonly native: "Português";
    };
    readonly qu: {
        readonly name: "Quechua";
        readonly native: "Runa Simi";
    };
    readonly rm: {
        readonly name: "Raeto Romance";
        readonly native: "Rumantsch";
    };
    readonly rn: {
        readonly name: "Kirundi";
        readonly native: "Kirundi";
    };
    readonly ro: {
        readonly name: "Romanian";
        readonly native: "Română";
    };
    readonly ru: {
        readonly name: "Russian";
        readonly native: "Русский";
    };
    readonly rw: {
        readonly name: "Rwandi";
        readonly native: "Kinyarwandi";
    };
    readonly sa: {
        readonly name: "Sanskrit";
        readonly native: "संस्कृतम्";
    };
    readonly sc: {
        readonly name: "Sardinian";
        readonly native: "Sardu";
    };
    readonly sd: {
        readonly name: "Sindhi";
        readonly native: "सिनधि";
    };
    readonly se: {
        readonly name: "Northern Sami";
        readonly native: "Sámegiella";
    };
    readonly sg: {
        readonly name: "Sango";
        readonly native: "Sängö";
    };
    readonly sh: {
        readonly name: "Serbo-Croatian";
        readonly native: "Srpskohrvatski / Српскохрватски";
    };
    readonly si: {
        readonly name: "Sinhalese";
        readonly native: "සිංහල";
    };
    readonly sk: {
        readonly name: "Slovak";
        readonly native: "Slovenčina";
    };
    readonly sl: {
        readonly name: "Slovenian";
        readonly native: "Slovenščina";
    };
    readonly sm: {
        readonly name: "Samoan";
        readonly native: "Gagana Samoa";
    };
    readonly sn: {
        readonly name: "Shona";
        readonly native: "chiShona";
    };
    readonly so: {
        readonly name: "Somalia";
        readonly native: "Soomaaliga";
    };
    readonly sq: {
        readonly name: "Albanian";
        readonly native: "Shqip";
    };
    readonly sr: {
        readonly name: "Serbian";
        readonly native: "Српски";
    };
    readonly ss: {
        readonly name: "Swati";
        readonly native: "SiSwati";
    };
    readonly st: {
        readonly name: "Southern Sotho";
        readonly native: "Sesotho";
    };
    readonly su: {
        readonly name: "Sundanese";
        readonly native: "Basa Sunda";
    };
    readonly sv: {
        readonly name: "Swedish";
        readonly native: "Svenska";
    };
    readonly sw: {
        readonly name: "Swahili";
        readonly native: "Kiswahili";
    };
    readonly ta: {
        readonly name: "Tamil";
        readonly native: "தமிழ்";
    };
    readonly te: {
        readonly name: "Telugu";
        readonly native: "తెలుగు";
    };
    readonly tg: {
        readonly name: "Tajik";
        readonly native: "Тоҷикӣ";
    };
    readonly th: {
        readonly name: "Thai";
        readonly native: "ไทย / Phasa Thai";
    };
    readonly ti: {
        readonly name: "Tigrinya";
        readonly native: "ትግርኛ";
    };
    readonly tk: {
        readonly name: "Turkmen";
        readonly native: "Туркмен / تركمن";
    };
    readonly tl: {
        readonly name: "Tagalog / Filipino";
        readonly native: "Tagalog";
    };
    readonly tn: {
        readonly name: "Tswana";
        readonly native: "Setswana";
    };
    readonly to: {
        readonly name: "Tonga";
        readonly native: "Lea Faka-Tonga";
    };
    readonly tr: {
        readonly name: "Turkish";
        readonly native: "Türkçe";
    };
    readonly ts: {
        readonly name: "Tsonga";
        readonly native: "Xitsonga";
    };
    readonly tt: {
        readonly name: "Tatar";
        readonly native: "Tatarça";
    };
    readonly tw: {
        readonly name: "Twi";
        readonly native: "Twi";
    };
    readonly ty: {
        readonly name: "Tahitian";
        readonly native: "Reo Mā`ohi";
    };
    readonly ug: {
        readonly name: "Uyghur";
        readonly native: "Uyƣurqə / ئۇيغۇرچە";
    };
    readonly uk: {
        readonly name: "Ukrainian";
        readonly native: "Українська";
    };
    readonly ur: {
        readonly name: "Urdu";
        readonly native: "اردو";
        readonly rtl: 1;
    };
    readonly uz: {
        readonly name: "Uzbek";
        readonly native: "O'zbekcha";
    };
    readonly ve: {
        readonly name: "Venda";
        readonly native: "Tshivenḓa";
    };
    readonly vi: {
        readonly name: "Vietnamese";
        readonly native: "Tiếng Việt";
    };
    readonly vo: {
        readonly name: "Volapük";
        readonly native: "Volapük";
    };
    readonly wa: {
        readonly name: "Walloon";
        readonly native: "Walon";
    };
    readonly wo: {
        readonly name: "Wolof";
        readonly native: "Wollof";
    };
    readonly xh: {
        readonly name: "Xhosa";
        readonly native: "isiXhosa";
    };
    readonly yi: {
        readonly name: "Yiddish";
        readonly native: "ייִדיש";
        readonly rtl: 1;
    };
    readonly yo: {
        readonly name: "Yoruba";
        readonly native: "Yorùbá";
    };
    readonly za: {
        readonly name: "Zhuang";
        readonly native: "Cuengh / Tôô / 壮语";
    };
    readonly zh: {
        readonly name: "Chinese";
        readonly native: "中文";
    };
    readonly zu: {
        readonly name: "Zulu";
        readonly native: "isiZulu";
    };
};

interface CryptoCurrency {
    readonly id: string;
    readonly symbol: string;
    readonly name: string;
    readonly type: 'crypto';
    readonly blockchain: string;
    readonly decimals: number;
    readonly isActive: boolean;
    readonly marketCap?: number;
    readonly totalSupply?: number;
    readonly circulatingSupply?: number;
    readonly contractAddress?: string;
    readonly website?: string;
    readonly whitepaper?: string;
}
interface DeFiToken extends CryptoCurrency {
    readonly protocol: string;
    readonly category: 'defi' | 'lending' | 'dex' | 'yield-farming' | 'stablecoin';
    readonly apr?: number;
    readonly tvl?: number;
}
interface NFT {
    readonly id: string;
    readonly tokenId: string;
    readonly contractAddress: string;
    readonly name: string;
    readonly description?: string;
    readonly image: string;
    readonly blockchain: string;
    readonly collection: string;
    readonly owner: string;
    readonly attributes: Array<{
        trait_type: string;
        value: string | number;
    }>;
}
declare class CryptoModule {
    private cryptoData;
    private defiData;
    private nftData;
    constructor();
    crypto(): QueryBuilder<CryptoCurrency>;
    cryptos(): QueryBuilder<CryptoCurrency>;
    defi(): QueryBuilder<DeFiToken>;
    defis(): QueryBuilder<DeFiToken>;
    nft(): QueryBuilder<NFT>;
    nfts(): QueryBuilder<NFT>;
    getPrice(symbol: string): Promise<number | null>;
    getMarketData(symbol: string): Promise<any>;
}

interface Commodity {
    readonly id: string;
    readonly symbol: string;
    readonly name: string;
    readonly type: 'commodity';
    readonly category: 'metals' | 'energy' | 'agriculture' | 'livestock';
    readonly unit: string;
    readonly exchange: string;
    readonly isActive: boolean;
    readonly description?: string;
}
interface PreciousMetal extends Commodity {
    readonly category: 'metals';
    readonly subCategory: 'precious' | 'industrial';
    readonly purity?: string;
    readonly weight?: string;
}
interface Energy extends Commodity {
    readonly category: 'energy';
    readonly subCategory: 'oil' | 'gas' | 'renewable';
    readonly region?: string;
}
interface Agriculture extends Commodity {
    readonly category: 'agriculture';
    readonly subCategory: 'grains' | 'soft' | 'livestock';
    readonly season?: string;
    readonly origin?: string;
}
declare class CommoditiesModule {
    private commodityData;
    private metalsData;
    private energyData;
    private agricultureData;
    constructor();
    commodity(): QueryBuilder<Commodity>;
    commodities(): QueryBuilder<Commodity>;
    metal(): QueryBuilder<PreciousMetal>;
    metals(): QueryBuilder<PreciousMetal>;
    energy(): QueryBuilder<Energy>;
    energies(): QueryBuilder<Energy>;
    agriculture(): QueryBuilder<Agriculture>;
    agricultures(): QueryBuilder<Agriculture>;
    getPrice(symbol: string): Promise<number | null>;
    getHistoricalData(symbol: string, period: string): Promise<any>;
}

type TContinentCode = keyof typeof continents;
type TCountryCode = keyof typeof countries;
type TLanguageCode = keyof typeof languages;
/**
 * Core types for FinPro.js
 */
interface Entity {
    readonly id?: string;
}
interface Currency extends Entity {
    readonly id: string;
    readonly type: 'fiat';
    readonly code: string;
    readonly symbol: string;
    readonly name: string;
    readonly decimals: number;
    readonly isActive: boolean;
    readonly countries: readonly string[];
    readonly region?: string;
    readonly centralBank?: string;
}
interface Country extends Entity {
    readonly name: string;
    readonly native: string;
    readonly phone: readonly number[];
    readonly continent: string;
    readonly capital: string;
    readonly currency: readonly string[];
    readonly languages: readonly string[];
}
interface State extends Entity {
    readonly code: string;
    readonly name: string;
    readonly type: string;
    readonly country_code: string;
}
interface Language extends Entity {
    readonly name: string;
    readonly native: string;
    readonly rtl?: number;
}
interface QueryOptions {
    readonly limit?: number;
    readonly skip?: number;
    readonly sort?: Record<string, 1 | -1>;
}
interface FindOptions extends QueryOptions {
    readonly populate?: string[];
}
type QueryFilter<T> = {
    [K in keyof T]?: T[K] | {
        $in?: T[K][];
    } | {
        $regex?: string | RegExp;
    } | {
        $gt?: T[K];
    } | {
        $gte?: T[K];
    } | {
        $lt?: T[K];
    } | {
        $lte?: T[K];
    };
};
interface QueryBuilder<T extends Entity> {
    find(filter?: Partial<T>): QueryBuilder<T>;
    findOne(filter?: Partial<T>): T | null;
    findById(id: string): T | null;
    where<K extends keyof T>(field: K, value?: any): QueryBuilder<T>;
    equals(value: any): QueryBuilder<T>;
    in(values: any[]): QueryBuilder<T>;
    regex(pattern: string | RegExp, options?: string): QueryBuilder<T>;
    gt(value: any): QueryBuilder<T>;
    gte(value: any): QueryBuilder<T>;
    lt(value: any): QueryBuilder<T>;
    lte(value: any): QueryBuilder<T>;
    sort(options: string | Partial<Record<keyof T, 1 | -1>>): QueryBuilder<T>;
    limit(count: number): QueryBuilder<T>;
    skip(count: number): QueryBuilder<T>;
    populate(field: string): QueryBuilder<T>;
    exec(): T[];
    count(): number;
}
interface FormatOptions {
    readonly locale?: string;
    readonly style?: 'currency' | 'decimal' | 'percent';
    readonly minimumFractionDigits?: number;
    readonly maximumFractionDigits?: number;
    readonly useGrouping?: boolean;
}
interface FlagOptions {
    readonly format?: 'svg' | 'png';
    readonly size?: 'w20' | 'w40' | 'w80' | 'w160' | 'w320' | 'w640' | 'w1280';
}
interface CurrencyWithFlags extends Currency {
    readonly flag?: string;
    readonly flags?: {
        readonly svg?: string;
        readonly png?: Record<string, string>;
        readonly allCountries?: Record<string, string>;
    };
}
interface ILanguage {
    /**
     * Language name in English.
     */
    name: string;
    /**
     * Language name written natively.
     */
    native: string;
    /**
     * Specified if Language is RTL.
     */
    rtl?: number;
}
interface ICountry {
    /**
     * Country name in English.
     */
    name: string;
    /**
     * Country name written natively.
     */
    native: string;
    /**
     * Calling phone codes.
     */
    phone: number[];
    /**
     * Main continent alpha-2 code.
     */
    continent: TContinentCode;
    /**
     * Continent list alpha-2 codes (for transcontinental countries).
     */
    continents?: TContinentCode[];
    /**
     * Capital city of the country.
     */
    capital: string;
    /**
     * Currency alpha-3 codes.
     */
    currency: string[];
    /**
     * List of Country's spoken Languages (alpha-2 codes).
     */
    languages: TLanguageCode[];
    /**
     * Specified in cases when entity is currently a part of another one.
     * Example: Åland is an autonomous and demilitarised region of Finland and has own ISO code.
     * @see: https://en.wikipedia.org/wiki/Åland
     * @todo: Type should be TCountryCode, but need to resolve cyclic referencing on dynamically generated type.
     */
    partOf?: string;
    /**
     * Specified in cases when entity is not a part of the main ISO 3166-1 standart, but a User assigned code.
     * @see: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#User-assigned_code_elements
     */
    userAssigned?: boolean;
}

declare class FiatModule {
    private currencyData;
    constructor();
    currency(): QueryBuilder<Currency>;
    currencies(): QueryBuilder<Currency>;
    getCurrencyWithFlags(code: string, options?: FlagOptions): CurrencyWithFlags | null;
    formatCurrency(code: string, amount: number, options?: FormatOptions): string | null;
}

declare class GeographyModule {
    private countryData;
    private stateData;
    private languageData;
    constructor();
    country(): QueryBuilder<ICountry & {
        id: string;
    }>;
    countries(): QueryBuilder<ICountry & {
        id: string;
    }>;
    state(): QueryBuilder<State>;
    states(): QueryBuilder<State>;
    language(): QueryBuilder<ILanguage & {
        id: string;
    }>;
    languages(): QueryBuilder<ILanguage & {
        id: string;
    }>;
}

declare class Finance {
    readonly fiat: FiatModule;
    readonly geography: GeographyModule;
    readonly crypto: CryptoModule;
    readonly commodities: CommoditiesModule;
    constructor();
    currency(): QueryBuilder<Currency>;
    currencies(): QueryBuilder<Currency>;
    country(): QueryBuilder<ICountry & {
        id: string;
    }>;
    countries(): QueryBuilder<ICountry & {
        id: string;
    }>;
    state(): QueryBuilder<State>;
    states(): QueryBuilder<State>;
    language(): QueryBuilder<ILanguage & {
        id: string;
    }>;
    languages(): QueryBuilder<ILanguage & {
        id: string;
    }>;
    getCurrencyWithFlags(code: string, options?: any): CurrencyWithFlags | null;
    formatCurrency(code: string, amount: number, options?: any): string | null;
}

declare class Query<T extends Entity> implements QueryBuilder<T> {
    private data;
    private filters;
    private sortOptions;
    private limitCount?;
    private skipCount?;
    private currentField?;
    constructor(data: T[]);
    find(filter?: Partial<T>): QueryBuilder<T>;
    findOne(filter?: Partial<T>): T | null;
    findById(id: string): T | null;
    where<K extends keyof T>(field: K): QueryBuilder<T>;
    equals(value: any): QueryBuilder<T>;
    in(values: any[]): QueryBuilder<T>;
    regex(pattern: string | RegExp): QueryBuilder<T>;
    gt(value: any): QueryBuilder<T>;
    gte(value: any): QueryBuilder<T>;
    lt(value: any): QueryBuilder<T>;
    lte(value: any): QueryBuilder<T>;
    sort(options: string | Partial<Record<keyof T, 1 | -1>>): QueryBuilder<T>;
    limit(count: number): QueryBuilder<T>;
    skip(count: number): QueryBuilder<T>;
    populate(): QueryBuilder<T>;
    exec(): T[];
    count(): number;
}

/**
 * FinPro.js - Financial data library with query-based API
 */

declare const finance: Finance;

declare const getCurrency: (code: string) => Currency | null;
declare const getAllCurrencies: () => Currency[];
declare const findCurrencies: (filter: Partial<Currency>) => Currency[];
declare const getCountry: (code: string) => (ICountry & {
    id: string;
}) | null;
declare const getAllCountries: () => (ICountry & {
    id: string;
})[];
declare const findCountries: (filter: Partial<ICountry & {
    id: string;
}>) => (ICountry & {
    id: string;
})[];
declare const getState: (code: string) => State | null;
declare const getAllStates: () => State[];
declare const findStates: (filter: Partial<State>) => State[];
declare const getLanguage: (code: string) => (ILanguage & {
    id: string;
}) | null;
declare const getAllLanguages: () => (ILanguage & {
    id: string;
})[];
declare const findLanguages: (filter: Partial<ILanguage & {
    id: string;
}>) => (ILanguage & {
    id: string;
})[];

export { CommoditiesModule, CryptoModule, FiatModule, Finance, GeographyModule, Query, finance, findCountries, findCurrencies, findLanguages, findStates, getAllCountries, getAllCurrencies, getAllLanguages, getAllStates, getCountry, getCurrency, getLanguage, getState };
export type { Agriculture, Commodity, Country, CryptoCurrency, Currency, CurrencyWithFlags, DeFiToken, Energy, Entity, FindOptions, FlagOptions, FormatOptions, ICountry, ILanguage, Language, NFT, PreciousMetal, QueryBuilder, QueryFilter, QueryOptions, State, TContinentCode, TCountryCode, TLanguageCode };
