fmp-node-api 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,762 @@
1
+ 'use strict';
2
+
3
+ var axios = require('axios');
4
+
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var axios__default = /*#__PURE__*/_interopDefault(axios);
8
+
9
+ // src/client.ts
10
+ var FMPClient = class {
11
+ constructor(config) {
12
+ this.apiKey = config.apiKey;
13
+ this.baseURL = config.baseURL || "https://financialmodelingprep.com/api/v3";
14
+ this.client = axios__default.default.create({
15
+ baseURL: this.baseURL,
16
+ timeout: config.timeout || 1e4,
17
+ headers: {
18
+ "Content-Type": "application/json"
19
+ }
20
+ });
21
+ this.client.interceptors.request.use((config2) => {
22
+ config2.params = {
23
+ ...config2.params,
24
+ apikey: this.apiKey
25
+ };
26
+ return config2;
27
+ });
28
+ }
29
+ /**
30
+ * Make a GET request to the API
31
+ */
32
+ async get(endpoint, params) {
33
+ try {
34
+ const response = await this.client.get(endpoint, { params });
35
+ return {
36
+ success: true,
37
+ data: response.data,
38
+ status: response.status
39
+ };
40
+ } catch (error) {
41
+ return {
42
+ success: false,
43
+ error: error.message || "Unknown error occurred",
44
+ status: error.response?.status || 500
45
+ };
46
+ }
47
+ }
48
+ /**
49
+ * Make a POST request to the API
50
+ */
51
+ async post(endpoint, data, config) {
52
+ try {
53
+ const response = await this.client.post(endpoint, data, config);
54
+ return {
55
+ success: true,
56
+ data: response.data,
57
+ status: response.status
58
+ };
59
+ } catch (error) {
60
+ return {
61
+ success: false,
62
+ error: error.message || "Unknown error occurred",
63
+ status: error.response?.status || 500
64
+ };
65
+ }
66
+ }
67
+ /**
68
+ * Get the underlying axios instance for advanced usage
69
+ */
70
+ getAxiosInstance() {
71
+ return this.client;
72
+ }
73
+ };
74
+
75
+ // src/shared.ts
76
+ var FMPError = class extends Error {
77
+ constructor(message, status, code) {
78
+ super(message);
79
+ this.status = status;
80
+ this.code = code;
81
+ this.name = "FMPError";
82
+ }
83
+ };
84
+ function validateApiKey(apiKey) {
85
+ if (!apiKey || typeof apiKey !== "string") {
86
+ throw new FMPError("API key is required and must be a string");
87
+ }
88
+ }
89
+ function validateSymbol(symbol) {
90
+ if (!symbol || typeof symbol !== "string") {
91
+ throw new FMPError("Symbol is required and must be a string");
92
+ }
93
+ }
94
+ var FMP_BASE_URL = "https://financialmodelingprep.com/api/v3";
95
+ var FMP_BASE_URL_V4 = "https://financialmodelingprep.com/api/v4";
96
+ var Period = /* @__PURE__ */ ((Period2) => {
97
+ Period2["ANNUAL"] = "annual";
98
+ Period2["QUARTER"] = "quarter";
99
+ return Period2;
100
+ })(Period || {});
101
+ var Exchange = /* @__PURE__ */ ((Exchange2) => {
102
+ Exchange2["NYSE"] = "NYSE";
103
+ Exchange2["NASDAQ"] = "NASDAQ";
104
+ Exchange2["AMEX"] = "AMEX";
105
+ Exchange2["TSX"] = "TSX";
106
+ Exchange2["LSE"] = "LSE";
107
+ return Exchange2;
108
+ })(Exchange || {});
109
+
110
+ // src/utils/validation.ts
111
+ function validateApiKey2(apiKey) {
112
+ if (!apiKey || typeof apiKey !== "string" || apiKey.trim().length === 0) {
113
+ throw new FMPError("API key is required and must be a non-empty string");
114
+ }
115
+ }
116
+ function validateDate(date) {
117
+ if (!date || typeof date !== "string") {
118
+ throw new FMPError("Date is required and must be a string");
119
+ }
120
+ const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
121
+ if (!dateRegex.test(date)) {
122
+ throw new FMPError("Invalid date format. Use YYYY-MM-DD format");
123
+ }
124
+ const parsedDate = new Date(date);
125
+ if (isNaN(parsedDate.getTime())) {
126
+ throw new FMPError("Invalid date");
127
+ }
128
+ }
129
+ function validatePeriod(period) {
130
+ if (period && !["annual", "quarter"].includes(period)) {
131
+ throw new FMPError('Period must be either "annual" or "quarter"');
132
+ }
133
+ }
134
+ function validateLimit(limit) {
135
+ if (limit !== void 0 && (typeof limit !== "number" || limit < 1 || limit > 1e3)) {
136
+ throw new FMPError("Limit must be a number between 1 and 1000");
137
+ }
138
+ }
139
+ function validatePage(page) {
140
+ if (page !== void 0 && (typeof page !== "number" || page < 0)) {
141
+ throw new FMPError("Page must be a non-negative number");
142
+ }
143
+ }
144
+
145
+ // src/endpoints/stock.ts
146
+ var StockEndpoints = class {
147
+ constructor(client) {
148
+ this.client = client;
149
+ }
150
+ /**
151
+ * Get real-time stock quote
152
+ */
153
+ async getQuote({ symbol }) {
154
+ return this.client.get(`/quote/${symbol}`);
155
+ }
156
+ /**
157
+ * Get company profile
158
+ */
159
+ async getCompanyProfile({ symbol }) {
160
+ return this.client.get(`/profile/${symbol}`);
161
+ }
162
+ /**
163
+ * Get historical stock prices
164
+ */
165
+ async getHistoricalPrice({
166
+ symbol,
167
+ from,
168
+ to
169
+ }) {
170
+ const params = new URLSearchParams();
171
+ if (from) params.append("from", from);
172
+ if (to) params.append("to", to);
173
+ const queryString = params.toString();
174
+ return this.client.get(
175
+ `/historical-price-full/${symbol}${queryString ? `?${queryString}` : ""}`
176
+ );
177
+ }
178
+ /**
179
+ * Get list of all stocks
180
+ */
181
+ async getStockList() {
182
+ return this.client.get("/stock/list");
183
+ }
184
+ /**
185
+ * Get market capitalization
186
+ */
187
+ async getMarketCap({ symbol }) {
188
+ return this.client.get(`/market-capitalization/${symbol}`);
189
+ }
190
+ /**
191
+ * Get earnings calendar
192
+ */
193
+ async getEarningsCalendar(params) {
194
+ const queryParams = {};
195
+ if (params.from) queryParams.from = params.from;
196
+ if (params.to) queryParams.to = params.to;
197
+ return this.client.get("/earning_calendar", queryParams);
198
+ }
199
+ /**
200
+ * Get stock splits
201
+ */
202
+ async getStockSplits({ symbol }) {
203
+ return this.client.get(`/stock_split_calendar/${symbol}`);
204
+ }
205
+ /**
206
+ * Get dividend history
207
+ */
208
+ async getDividendHistory({ symbol }) {
209
+ const response = await this.client.get(`/historical-price-full/stock_dividend/${symbol}`);
210
+ return {
211
+ ...response,
212
+ data: response.success && response.data && Array.isArray(response.data.historical) ? response.data.historical : []
213
+ };
214
+ }
215
+ };
216
+
217
+ // src/endpoints/financial.ts
218
+ var FinancialEndpoints = class {
219
+ constructor(client) {
220
+ this.client = client;
221
+ }
222
+ /**
223
+ * Get income statement
224
+ */
225
+ async getIncomeStatement({
226
+ symbol,
227
+ period = "annual",
228
+ limit = 5
229
+ }) {
230
+ return this.client.get(`/income-statement/${symbol}?period=${period}&limit=${limit}`);
231
+ }
232
+ /**
233
+ * Get balance sheet
234
+ */
235
+ async getBalanceSheet({
236
+ symbol,
237
+ period = "annual",
238
+ limit = 5
239
+ }) {
240
+ return this.client.get(`/balance-sheet-statement/${symbol}?period=${period}&limit=${limit}`);
241
+ }
242
+ /**
243
+ * Get cash flow statement
244
+ */
245
+ async getCashFlowStatement({
246
+ symbol,
247
+ period = "annual",
248
+ limit = 5
249
+ }) {
250
+ return this.client.get(`/cash-flow-statement/${symbol}?period=${period}&limit=${limit}`);
251
+ }
252
+ /**
253
+ * Get key metrics
254
+ */
255
+ async getKeyMetrics({
256
+ symbol,
257
+ period = "annual",
258
+ limit = 5
259
+ }) {
260
+ return this.client.get(`/key-metrics/${symbol}?period=${period}&limit=${limit}`);
261
+ }
262
+ /**
263
+ * Get financial ratios
264
+ */
265
+ async getFinancialRatios({
266
+ symbol,
267
+ period = "annual",
268
+ limit = 5
269
+ }) {
270
+ return this.client.get(`/ratios/${symbol}?period=${period}&limit=${limit}`);
271
+ }
272
+ /**
273
+ * Get enterprise value
274
+ */
275
+ async getEnterpriseValue({
276
+ symbol,
277
+ period = "annual",
278
+ limit = 5
279
+ }) {
280
+ return this.client.get(`/enterprise-value/${symbol}?period=${period}&limit=${limit}`);
281
+ }
282
+ };
283
+
284
+ // src/endpoints/forex.ts
285
+ var ForexEndpoints = class {
286
+ constructor(client) {
287
+ this.client = client;
288
+ }
289
+ /**
290
+ * Get real-time forex quote
291
+ */
292
+ async getQuote(params) {
293
+ return this.client.get(`/quote/${params.symbol}`);
294
+ }
295
+ /**
296
+ * Get historical forex data
297
+ */
298
+ async getHistoricalPrice(params) {
299
+ const queryParams = {};
300
+ if (params.from) queryParams.from = params.from;
301
+ if (params.to) queryParams.to = params.to;
302
+ if (params.timeseries) queryParams.timeseries = params.timeseries;
303
+ return this.client.get(`/historical-price-full/${params.symbol}`, queryParams);
304
+ }
305
+ /**
306
+ * Get list of all forex pairs
307
+ * Using the forex-specific endpoint
308
+ */
309
+ async getForexList() {
310
+ try {
311
+ const response = await this.client.get("/forex-list");
312
+ if (!response.success || !response.data) {
313
+ const fallbackResponse = await this.client.get("/forex");
314
+ return {
315
+ ...fallbackResponse,
316
+ data: Array.isArray(fallbackResponse.data) ? fallbackResponse.data : Array.isArray(fallbackResponse.data?.forexList) ? fallbackResponse.data.forexList : []
317
+ };
318
+ }
319
+ return {
320
+ ...response,
321
+ data: Array.isArray(response.data) ? response.data : Array.isArray(response.data?.forexList) ? response.data.forexList : []
322
+ };
323
+ } catch (error) {
324
+ return {
325
+ success: false,
326
+ error: "Failed to fetch forex pairs",
327
+ status: 500,
328
+ data: []
329
+ };
330
+ }
331
+ }
332
+ /**
333
+ * Get forex rates for a specific currency
334
+ */
335
+ async getForexRates(baseCurrency = "USD") {
336
+ return this.client.get(`/forex/${baseCurrency}`);
337
+ }
338
+ /**
339
+ * Get forex rates for all currencies
340
+ */
341
+ async getAllForexRates() {
342
+ return this.client.get("/forex");
343
+ }
344
+ };
345
+
346
+ // src/endpoints/crypto.ts
347
+ var CryptoEndpoints = class {
348
+ constructor(client) {
349
+ this.client = client;
350
+ }
351
+ /**
352
+ * Get real-time crypto quote
353
+ */
354
+ async getQuote(params) {
355
+ return this.client.get(`/quote/${params.symbol}`);
356
+ }
357
+ /**
358
+ * Get historical crypto data
359
+ */
360
+ async getHistoricalPrice(params) {
361
+ const queryParams = {};
362
+ if (params.from) queryParams.from = params.from;
363
+ if (params.to) queryParams.to = params.to;
364
+ if (params.timeseries) queryParams.timeseries = params.timeseries;
365
+ return this.client.get(`/historical-price-full/${params.symbol}`, queryParams);
366
+ }
367
+ /**
368
+ * Get list of all cryptocurrencies
369
+ */
370
+ async getCryptoList() {
371
+ return this.client.get("/cryptocurrency");
372
+ }
373
+ };
374
+
375
+ // src/endpoints/etf.ts
376
+ var ETFEndpoints = class {
377
+ constructor(client) {
378
+ this.client = client;
379
+ }
380
+ /**
381
+ * Get real-time ETF quote
382
+ */
383
+ async getQuote(params) {
384
+ return this.client.get(`/quote/${params.symbol}`);
385
+ }
386
+ /**
387
+ * Get ETF profile
388
+ */
389
+ async getProfile(params) {
390
+ return this.client.get(`/profile/${params.symbol}`);
391
+ }
392
+ /**
393
+ * Get ETF holdings
394
+ */
395
+ async getHoldings(params) {
396
+ const queryParams = {};
397
+ if (params.limit) queryParams.limit = params.limit;
398
+ if (params.page) queryParams.page = params.page;
399
+ return this.client.get(`/etf-holder/${params.symbol}`, queryParams);
400
+ }
401
+ /**
402
+ * Get list of all ETFs
403
+ */
404
+ async getETFList() {
405
+ return this.client.get("/etf/list");
406
+ }
407
+ };
408
+
409
+ // src/endpoints/mutual-fund.ts
410
+ var MutualFundEndpoints = class {
411
+ constructor(client) {
412
+ this.client = client;
413
+ }
414
+ /**
415
+ * Get real-time mutual fund quote
416
+ */
417
+ async getQuote(params) {
418
+ return this.client.get(`/quote/${params.symbol}`);
419
+ }
420
+ /**
421
+ * Get mutual fund profile
422
+ */
423
+ async getProfile(params) {
424
+ return this.client.get(`/profile/${params.symbol}`);
425
+ }
426
+ /**
427
+ * Get mutual fund holdings
428
+ */
429
+ async getHoldings(params) {
430
+ const queryParams = {};
431
+ if (params.limit) queryParams.limit = params.limit;
432
+ if (params.page) queryParams.page = params.page;
433
+ return this.client.get(`/mutual-fund-holder/${params.symbol}`, queryParams);
434
+ }
435
+ /**
436
+ * Get list of all mutual funds
437
+ */
438
+ async getMutualFundList() {
439
+ return this.client.get("/mutual-fund/list");
440
+ }
441
+ };
442
+
443
+ // src/endpoints/bond.ts
444
+ var BondEndpoints = class {
445
+ constructor(client) {
446
+ this.client = client;
447
+ }
448
+ /**
449
+ * Get real-time bond quote
450
+ */
451
+ async getQuote(params) {
452
+ return this.client.get(`/quote/${params.symbol}`);
453
+ }
454
+ /**
455
+ * Get historical bond data
456
+ */
457
+ async getHistoricalPrice(params) {
458
+ const queryParams = {};
459
+ if (params.from) queryParams.from = params.from;
460
+ if (params.to) queryParams.to = params.to;
461
+ if (params.timeseries) queryParams.timeseries = params.timeseries;
462
+ return this.client.get(`/historical-price-full/${params.symbol}`, queryParams);
463
+ }
464
+ /**
465
+ * Get list of all bonds
466
+ */
467
+ async getBondList() {
468
+ return this.client.get("/bond/list");
469
+ }
470
+ };
471
+
472
+ // src/endpoints/economic.ts
473
+ var EconomicEndpoints = class {
474
+ constructor(client) {
475
+ this.client = client;
476
+ }
477
+ /**
478
+ * Get treasury rates
479
+ */
480
+ async getTreasuryRates(params = {}) {
481
+ const queryParams = {};
482
+ if (params.from) queryParams.from = params.from;
483
+ if (params.to) queryParams.to = params.to;
484
+ return this.client.get("/treasury-rates", queryParams);
485
+ }
486
+ /**
487
+ * Get federal funds rate
488
+ */
489
+ async getFederalFundsRate(params = {}) {
490
+ const queryParams = {};
491
+ if (params.from) queryParams.from = params.from;
492
+ if (params.to) queryParams.to = params.to;
493
+ return this.client.get("/federal-funds-rate", queryParams);
494
+ }
495
+ /**
496
+ * Get CPI data
497
+ */
498
+ async getCPI(params = {}) {
499
+ const queryParams = {};
500
+ if (params.from) queryParams.from = params.from;
501
+ if (params.to) queryParams.to = params.to;
502
+ return this.client.get("/economic-indicator/cpi", queryParams);
503
+ }
504
+ /**
505
+ * Get GDP data
506
+ */
507
+ async getGDP(params = {}) {
508
+ const queryParams = {};
509
+ if (params.from) queryParams.from = params.from;
510
+ if (params.to) queryParams.to = params.to;
511
+ return this.client.get("/economic-indicator/gdp", queryParams);
512
+ }
513
+ /**
514
+ * Get unemployment data
515
+ */
516
+ async getUnemployment(params = {}) {
517
+ const queryParams = {};
518
+ if (params.from) queryParams.from = params.from;
519
+ if (params.to) queryParams.to = params.to;
520
+ return this.client.get("/economic-indicator/unemployment", queryParams);
521
+ }
522
+ };
523
+
524
+ // src/endpoints/market.ts
525
+ var MarketEndpoints = class {
526
+ constructor(client) {
527
+ this.client = client;
528
+ }
529
+ /**
530
+ * Get market hours
531
+ */
532
+ async getMarketHours() {
533
+ return this.client.get("/market-hours");
534
+ }
535
+ /**
536
+ * Get market performance
537
+ */
538
+ async getMarketPerformance() {
539
+ return this.client.get("/market-performance");
540
+ }
541
+ /**
542
+ * Get market gainers
543
+ */
544
+ async getGainers() {
545
+ return this.client.get("/gainers");
546
+ }
547
+ /**
548
+ * Get market losers
549
+ */
550
+ async getLosers() {
551
+ return this.client.get("/losers");
552
+ }
553
+ /**
554
+ * Get most active stocks
555
+ */
556
+ async getMostActive() {
557
+ return this.client.get("/most-active");
558
+ }
559
+ /**
560
+ * Get sector performance
561
+ */
562
+ async getSectorPerformance() {
563
+ return this.client.get("/sector-performance");
564
+ }
565
+ /**
566
+ * Get market index data
567
+ */
568
+ async getMarketIndex(params = {}) {
569
+ const queryParams = {};
570
+ if (params.from) queryParams.from = params.from;
571
+ if (params.to) queryParams.to = params.to;
572
+ return this.client.get("/market-index", queryParams);
573
+ }
574
+ };
575
+
576
+ // src/fmp.ts
577
+ var FMP = class {
578
+ constructor(config) {
579
+ validateApiKey2(config.apiKey);
580
+ const client = new FMPClient(config);
581
+ this.stock = new StockEndpoints(client);
582
+ this.financial = new FinancialEndpoints(client);
583
+ this.forex = new ForexEndpoints(client);
584
+ this.crypto = new CryptoEndpoints(client);
585
+ this.etf = new ETFEndpoints(client);
586
+ this.mutualFund = new MutualFundEndpoints(client);
587
+ this.bond = new BondEndpoints(client);
588
+ this.economic = new EconomicEndpoints(client);
589
+ this.market = new MarketEndpoints(client);
590
+ }
591
+ /**
592
+ * Get the underlying client instance for advanced usage
593
+ */
594
+ getClient() {
595
+ return this.stock["client"];
596
+ }
597
+ };
598
+
599
+ // src/types/common.ts
600
+ var FMP_STABLE_URL = "https://financialmodelingprep.com/stable";
601
+
602
+ // src/utils/formatting.ts
603
+ function formatCurrency(value, currency = "USD") {
604
+ return new Intl.NumberFormat("en-US", {
605
+ style: "currency",
606
+ currency
607
+ }).format(value);
608
+ }
609
+ function formatPercentage(value, decimals = 2) {
610
+ return `${value.toFixed(decimals)}%`;
611
+ }
612
+ function formatLargeNumber(value) {
613
+ if (value >= 1e12) {
614
+ return `${(value / 1e12).toFixed(2)}T`;
615
+ } else if (value >= 1e9) {
616
+ return `${(value / 1e9).toFixed(2)}B`;
617
+ } else if (value >= 1e6) {
618
+ return `${(value / 1e6).toFixed(2)}M`;
619
+ } else if (value >= 1e3) {
620
+ return `${(value / 1e3).toFixed(2)}K`;
621
+ }
622
+ return value.toString();
623
+ }
624
+ function formatDate(date) {
625
+ const d = typeof date === "string" ? new Date(date) : date;
626
+ return d.toISOString().split("T")[0];
627
+ }
628
+ function formatReadableDate(date) {
629
+ const d = typeof date === "string" ? new Date(date) : date;
630
+ return d.toLocaleDateString("en-US", {
631
+ year: "numeric",
632
+ month: "long",
633
+ day: "numeric"
634
+ });
635
+ }
636
+ function formatTimestamp(timestamp) {
637
+ const date = new Date(timestamp * 1e3);
638
+ return date.toLocaleString("en-US");
639
+ }
640
+ function formatNumber(value, decimals = 2) {
641
+ return value.toFixed(decimals);
642
+ }
643
+ function formatVolume(volume) {
644
+ if (volume >= 1e9) {
645
+ return `${(volume / 1e9).toFixed(2)}B`;
646
+ } else if (volume >= 1e6) {
647
+ return `${(volume / 1e6).toFixed(2)}M`;
648
+ } else if (volume >= 1e3) {
649
+ return `${(volume / 1e3).toFixed(2)}K`;
650
+ }
651
+ return volume.toString();
652
+ }
653
+
654
+ // src/utils/constants.ts
655
+ var DEFAULT_TIMEOUT = 1e4;
656
+ var DEFAULT_LIMIT = 100;
657
+ var MAX_LIMIT = 1e3;
658
+ var PERIODS = {
659
+ ANNUAL: "annual",
660
+ QUARTER: "quarter"
661
+ };
662
+ var EXCHANGES = {
663
+ NYSE: "NYSE",
664
+ NASDAQ: "NASDAQ",
665
+ AMEX: "AMEX",
666
+ TSX: "TSX",
667
+ LSE: "LSE",
668
+ ASX: "ASX",
669
+ NSE: "NSE",
670
+ BSE: "BSE"
671
+ };
672
+ var SECTORS = {
673
+ TECHNOLOGY: "Technology",
674
+ HEALTHCARE: "Healthcare",
675
+ FINANCIAL: "Financial",
676
+ CONSUMER_DISCRETIONARY: "Consumer Discretionary",
677
+ CONSUMER_STAPLES: "Consumer Staples",
678
+ INDUSTRIALS: "Industrials",
679
+ ENERGY: "Energy",
680
+ MATERIALS: "Materials",
681
+ UTILITIES: "Utilities",
682
+ REAL_ESTATE: "Real Estate",
683
+ COMMUNICATION_SERVICES: "Communication Services"
684
+ };
685
+ var COUNTRIES = {
686
+ US: "US",
687
+ CA: "CA",
688
+ GB: "GB",
689
+ AU: "AU",
690
+ IN: "IN",
691
+ DE: "DE",
692
+ FR: "FR",
693
+ JP: "JP",
694
+ CN: "CN",
695
+ BR: "BR"
696
+ };
697
+ var ERROR_MESSAGES = {
698
+ API_KEY_REQUIRED: "API key is required",
699
+ SYMBOL_REQUIRED: "Symbol is required",
700
+ INVALID_SYMBOL: "Invalid symbol format",
701
+ INVALID_DATE: "Invalid date format. Use YYYY-MM-DD",
702
+ INVALID_PERIOD: 'Period must be either "annual" or "quarter"',
703
+ INVALID_LIMIT: "Limit must be between 1 and 1000",
704
+ INVALID_PAGE: "Page must be a non-negative number",
705
+ REQUEST_FAILED: "Request failed",
706
+ RATE_LIMIT_EXCEEDED: "Rate limit exceeded",
707
+ UNAUTHORIZED: "Unauthorized - Invalid API key",
708
+ NOT_FOUND: "Resource not found"
709
+ };
710
+ var HTTP_STATUS = {
711
+ OK: 200,
712
+ CREATED: 201,
713
+ BAD_REQUEST: 400,
714
+ UNAUTHORIZED: 401,
715
+ FORBIDDEN: 403,
716
+ NOT_FOUND: 404,
717
+ TOO_MANY_REQUESTS: 429,
718
+ INTERNAL_SERVER_ERROR: 500
719
+ };
720
+
721
+ exports.BondEndpoints = BondEndpoints;
722
+ exports.COUNTRIES = COUNTRIES;
723
+ exports.CryptoEndpoints = CryptoEndpoints;
724
+ exports.DEFAULT_LIMIT = DEFAULT_LIMIT;
725
+ exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;
726
+ exports.ERROR_MESSAGES = ERROR_MESSAGES;
727
+ exports.ETFEndpoints = ETFEndpoints;
728
+ exports.EXCHANGES = EXCHANGES;
729
+ exports.EconomicEndpoints = EconomicEndpoints;
730
+ exports.Exchange = Exchange;
731
+ exports.FMP = FMP;
732
+ exports.FMPClient = FMPClient;
733
+ exports.FMPError = FMPError;
734
+ exports.FMP_BASE_URL = FMP_BASE_URL;
735
+ exports.FMP_BASE_URL_V4 = FMP_BASE_URL_V4;
736
+ exports.FMP_STABLE_URL = FMP_STABLE_URL;
737
+ exports.FinancialEndpoints = FinancialEndpoints;
738
+ exports.ForexEndpoints = ForexEndpoints;
739
+ exports.HTTP_STATUS = HTTP_STATUS;
740
+ exports.MAX_LIMIT = MAX_LIMIT;
741
+ exports.MarketEndpoints = MarketEndpoints;
742
+ exports.MutualFundEndpoints = MutualFundEndpoints;
743
+ exports.PERIODS = PERIODS;
744
+ exports.Period = Period;
745
+ exports.SECTORS = SECTORS;
746
+ exports.StockEndpoints = StockEndpoints;
747
+ exports.formatCurrency = formatCurrency;
748
+ exports.formatDate = formatDate;
749
+ exports.formatLargeNumber = formatLargeNumber;
750
+ exports.formatNumber = formatNumber;
751
+ exports.formatPercentage = formatPercentage;
752
+ exports.formatReadableDate = formatReadableDate;
753
+ exports.formatTimestamp = formatTimestamp;
754
+ exports.formatVolume = formatVolume;
755
+ exports.validateApiKey = validateApiKey;
756
+ exports.validateDate = validateDate;
757
+ exports.validateLimit = validateLimit;
758
+ exports.validatePage = validatePage;
759
+ exports.validatePeriod = validatePeriod;
760
+ exports.validateSymbol = validateSymbol;
761
+ //# sourceMappingURL=index.js.map
762
+ //# sourceMappingURL=index.js.map