@scottlexium/finpro
Version:
🚀 FinPro.js by Scott Lexium - The most comprehensive TypeScript library for financial data operations. Features 154+ currencies, 250+ countries, MongoDB-style queries, dual ESM/CommonJS support, and flag integration. Created by Scott Lexium for modern Ja
1,146 lines (1,132 loc) • 31.1 kB
TypeScript
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 };