@covalenthq/client-sdk 2.0.3 → 2.1.0

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.
Files changed (32) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/index.d.ts +1 -6
  3. package/dist/cjs/index.js +1792 -674
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/src/services/BaseService.d.ts +1 -1
  6. package/dist/cjs/src/services/NftService.d.ts +1 -1
  7. package/dist/cjs/src/services/PricingService.d.ts +1 -1
  8. package/dist/cjs/src/services/TransactionService.d.ts +4 -0
  9. package/dist/cjs/src/utils/functions/paginateEndpoint.d.ts +4 -4
  10. package/dist/cjs/src/utils/types/BalanceService.types.d.ts +52 -52
  11. package/dist/cjs/src/utils/types/BaseService.types.d.ts +55 -55
  12. package/dist/cjs/src/utils/types/Generic.types.d.ts +9 -6
  13. package/dist/cjs/src/utils/types/NftService.types.d.ts +53 -53
  14. package/dist/cjs/src/utils/types/PricingService.types.d.ts +7 -7
  15. package/dist/cjs/src/utils/types/SecurityService.types.d.ts +15 -15
  16. package/dist/cjs/src/utils/types/TransactionService.types.d.ts +47 -47
  17. package/dist/esm/index.d.ts +1 -6
  18. package/dist/esm/index.js +1793 -673
  19. package/dist/esm/index.js.map +1 -1
  20. package/dist/esm/src/services/BaseService.d.ts +1 -1
  21. package/dist/esm/src/services/NftService.d.ts +1 -1
  22. package/dist/esm/src/services/PricingService.d.ts +1 -1
  23. package/dist/esm/src/services/TransactionService.d.ts +4 -0
  24. package/dist/esm/src/utils/functions/paginateEndpoint.d.ts +4 -4
  25. package/dist/esm/src/utils/types/BalanceService.types.d.ts +52 -52
  26. package/dist/esm/src/utils/types/BaseService.types.d.ts +55 -55
  27. package/dist/esm/src/utils/types/Generic.types.d.ts +9 -6
  28. package/dist/esm/src/utils/types/NftService.types.d.ts +53 -53
  29. package/dist/esm/src/utils/types/PricingService.types.d.ts +7 -7
  30. package/dist/esm/src/utils/types/SecurityService.types.d.ts +15 -15
  31. package/dist/esm/src/utils/types/TransactionService.types.d.ts +47 -47
  32. package/package.json +3 -3
package/dist/cjs/index.js CHANGED
@@ -1,8 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var Big = require('big.js');
4
-
5
- var version = "2.0.3";
3
+ var version = "2.1.0";
6
4
 
7
5
  const bigIntParser = (val) => {
8
6
  if (val === null || val === undefined) {
@@ -22,7 +20,7 @@ const endpointGenerator = (extension = "", params = []) => {
22
20
  }
23
21
  const urlParams = new URLSearchParams();
24
22
  params.forEach((param) => {
25
- if (param.value !== undefined) {
23
+ if (param.value !== undefined && param.value !== null) {
26
24
  urlParams.append(param.key, param.value.toString());
27
25
  }
28
26
  });
@@ -32,7 +30,7 @@ const endpointGenerator = (extension = "", params = []) => {
32
30
  async function* paginateEndpoint(endpoint, execution, parseData, implementation) {
33
31
  let _endpoint = new URL(endpoint);
34
32
  let hasMore = true;
35
- let page_number = +_endpoint.searchParams.get("page-number") ?? 0;
33
+ let page_number = +(_endpoint.searchParams.get("page-number") ?? 0);
36
34
  while (hasMore) {
37
35
  try {
38
36
  if (implementation === "pagination") {
@@ -121,27 +119,29 @@ class BalanceService {
121
119
  },
122
120
  ]);
123
121
  const parseData = (data) => {
124
- data.data.updated_at = data.data.updated_at
125
- ? new Date(data.data.updated_at)
126
- : null;
127
- data.data.items = data.data.items
128
- ? data.data.items.map((balanceItem) => ({
129
- ...balanceItem,
130
- balance: bigIntParser(balanceItem.balance),
131
- balance_24h: bigIntParser(balanceItem.balance_24h),
132
- last_transferred_at: balanceItem.last_transferred_at
133
- ? new Date(balanceItem.last_transferred_at)
134
- : null,
135
- nft_data: balanceItem.nft_data
136
- ? balanceItem.nft_data.map((nftItem) => ({
137
- ...nftItem,
138
- token_id: bigIntParser(nftItem.token_id),
139
- token_balance: bigIntParser(nftItem.token_balance),
140
- token_price_wei: bigIntParser(nftItem.token_price_wei),
141
- }))
142
- : null,
143
- }))
144
- : null;
122
+ if (data.data) {
123
+ data.data.updated_at = data.data.updated_at
124
+ ? new Date(data.data.updated_at)
125
+ : null;
126
+ data.data.items = data.data.items
127
+ ? data.data.items.map((balanceItem) => ({
128
+ ...balanceItem,
129
+ balance: bigIntParser(balanceItem.balance),
130
+ balance_24h: bigIntParser(balanceItem.balance_24h),
131
+ last_transferred_at: balanceItem.last_transferred_at
132
+ ? new Date(balanceItem.last_transferred_at)
133
+ : null,
134
+ nft_data: balanceItem.nft_data
135
+ ? balanceItem.nft_data.map((nftItem) => ({
136
+ ...nftItem,
137
+ token_id: bigIntParser(nftItem.token_id),
138
+ token_balance: bigIntParser(nftItem.token_balance),
139
+ token_price_wei: bigIntParser(nftItem.token_price_wei),
140
+ }))
141
+ : null,
142
+ }))
143
+ : null;
144
+ }
145
145
  return data;
146
146
  };
147
147
  return await this.execution.execute(endpoint, parseData);
@@ -169,34 +169,37 @@ class BalanceService {
169
169
  },
170
170
  ]);
171
171
  const parseData = (data) => {
172
- data.data.updated_at = data.data.updated_at
173
- ? new Date(data.data.updated_at)
174
- : null;
175
- data.data.items = data.data.items.map((portfolioItem) => ({
176
- ...portfolioItem,
177
- holdings: portfolioItem.holdings.map((holdingItem) => ({
178
- ...holdingItem,
179
- timestamp: holdingItem.timestamp
180
- ? new Date(data.data.updated_at)
181
- : null,
182
- close: {
183
- ...holdingItem.close,
184
- balance: bigIntParser(holdingItem.close.balance),
185
- },
186
- high: {
187
- ...holdingItem.high,
188
- balance: bigIntParser(holdingItem.high.balance),
189
- },
190
- low: {
191
- ...holdingItem.low,
192
- balance: bigIntParser(holdingItem.low.balance),
193
- },
194
- open: {
195
- ...holdingItem.open,
196
- balance: bigIntParser(holdingItem.open.balance),
197
- },
198
- })),
199
- }));
172
+ if (data.data) {
173
+ data.data.updated_at = data.data.updated_at
174
+ ? new Date(data.data.updated_at)
175
+ : null;
176
+ data.data.items =
177
+ data.data.items?.map((portfolioItem) => ({
178
+ ...portfolioItem,
179
+ holdings: portfolioItem.holdings?.map((holdingItem) => ({
180
+ ...holdingItem,
181
+ timestamp: holdingItem.timestamp && data.data?.updated_at
182
+ ? new Date(data.data.updated_at)
183
+ : null,
184
+ close: {
185
+ ...holdingItem.close,
186
+ balance: bigIntParser(holdingItem.close?.balance),
187
+ },
188
+ high: {
189
+ ...holdingItem.high,
190
+ balance: bigIntParser(holdingItem.high?.balance),
191
+ },
192
+ low: {
193
+ ...holdingItem.low,
194
+ balance: bigIntParser(holdingItem.low?.balance),
195
+ },
196
+ open: {
197
+ ...holdingItem.open,
198
+ balance: bigIntParser(holdingItem.open?.balance),
199
+ },
200
+ })) || null,
201
+ })) || null;
202
+ }
200
203
  return data;
201
204
  };
202
205
  return await this.execution.execute(endpoint, parseData);
@@ -244,29 +247,31 @@ class BalanceService {
244
247
  },
245
248
  ]);
246
249
  const parseData = (data) => {
247
- data.data.updated_at = data.data.updated_at
248
- ? new Date(data.data.updated_at)
249
- : null;
250
- data.data.items = data.data.items
251
- ? data.data.items.map((ercItem) => ({
252
- ...ercItem,
253
- block_signed_at: ercItem.block_signed_at
254
- ? new Date(ercItem.block_signed_at)
255
- : null,
256
- value: bigIntParser(ercItem.value),
257
- fees_paid: bigIntParser(ercItem.fees_paid),
258
- transfers: ercItem.transfers
259
- ? ercItem.transfers.map((transferItem) => ({
260
- ...transferItem,
261
- balance: bigIntParser(transferItem.balance),
262
- block_signed_at: transferItem.block_signed_at
263
- ? new Date(transferItem.block_signed_at)
264
- : null,
265
- delta: bigIntParser(transferItem.delta),
266
- }))
267
- : null,
268
- }))
269
- : null;
250
+ if (data.data) {
251
+ data.data.updated_at = data.data.updated_at
252
+ ? new Date(data.data.updated_at)
253
+ : null;
254
+ data.data.items = data.data.items
255
+ ? data.data.items.map((ercItem) => ({
256
+ ...ercItem,
257
+ block_signed_at: ercItem.block_signed_at
258
+ ? new Date(ercItem.block_signed_at)
259
+ : null,
260
+ value: bigIntParser(ercItem.value),
261
+ fees_paid: bigIntParser(ercItem.fees_paid),
262
+ transfers: ercItem.transfers
263
+ ? ercItem.transfers.map((transferItem) => ({
264
+ ...transferItem,
265
+ balance: bigIntParser(transferItem.balance),
266
+ block_signed_at: transferItem.block_signed_at
267
+ ? new Date(transferItem.block_signed_at)
268
+ : null,
269
+ delta: bigIntParser(transferItem.delta),
270
+ }))
271
+ : null,
272
+ }))
273
+ : null;
274
+ }
270
275
  return data;
271
276
  };
272
277
  for await (const data of paginateEndpoint(endpoint, this.execution, parseData, "pagination")) {
@@ -316,27 +321,29 @@ class BalanceService {
316
321
  },
317
322
  ]);
318
323
  const parseData = (data) => {
319
- data.data.updated_at = data.data.updated_at
320
- ? new Date(data.data.updated_at)
321
- : null;
322
- data.data.items = data.data.items
323
- ? data.data.items.map((blockTxItem) => ({
324
- ...blockTxItem,
325
- block_signed_at: blockTxItem.block_signed_at
326
- ? new Date(blockTxItem.block_signed_at)
327
- : null,
328
- fees_paid: bigIntParser(blockTxItem.fees_paid),
329
- transfers: blockTxItem.transfers.map((transferItem) => ({
330
- ...transferItem,
331
- balance: bigIntParser(transferItem.balance),
332
- block_signed_at: transferItem.block_signed_at
333
- ? new Date(transferItem.block_signed_at)
324
+ if (data.data) {
325
+ data.data.updated_at = data.data.updated_at
326
+ ? new Date(data.data.updated_at)
327
+ : null;
328
+ data.data.items = data.data.items
329
+ ? data.data.items.map((blockTxItem) => ({
330
+ ...blockTxItem,
331
+ block_signed_at: blockTxItem.block_signed_at
332
+ ? new Date(blockTxItem.block_signed_at)
334
333
  : null,
335
- delta: bigIntParser(transferItem.delta),
336
- })),
337
- value: bigIntParser(blockTxItem.value),
338
- }))
339
- : null;
334
+ fees_paid: bigIntParser(blockTxItem.fees_paid),
335
+ transfers: blockTxItem.transfers?.map((transferItem) => ({
336
+ ...transferItem,
337
+ balance: bigIntParser(transferItem.balance),
338
+ block_signed_at: transferItem.block_signed_at
339
+ ? new Date(transferItem.block_signed_at)
340
+ : null,
341
+ delta: bigIntParser(transferItem.delta),
342
+ })) || null,
343
+ value: bigIntParser(blockTxItem.value),
344
+ }))
345
+ : null;
346
+ }
340
347
  return data;
341
348
  };
342
349
  return await this.execution.execute(endpoint, parseData);
@@ -374,16 +381,18 @@ class BalanceService {
374
381
  },
375
382
  ]);
376
383
  const parseData = (data) => {
377
- data.data.updated_at = data.data.updated_at
378
- ? new Date(data.data.updated_at)
379
- : null;
380
- data.data.items = data.data.items
381
- ? data.data.items.map((tokenItem) => ({
382
- ...tokenItem,
383
- balance: bigIntParser(tokenItem.balance),
384
- total_supply: bigIntParser(tokenItem.total_supply),
385
- }))
386
- : null;
384
+ if (data.data) {
385
+ data.data.updated_at = data.data.updated_at
386
+ ? new Date(data.data.updated_at)
387
+ : null;
388
+ data.data.items = data.data.items
389
+ ? data.data.items.map((tokenItem) => ({
390
+ ...tokenItem,
391
+ balance: bigIntParser(tokenItem.balance),
392
+ total_supply: bigIntParser(tokenItem.total_supply),
393
+ }))
394
+ : null;
395
+ }
387
396
  return data;
388
397
  };
389
398
  for await (const data of paginateEndpoint(endpoint, this.execution, parseData, "pagination")) {
@@ -423,16 +432,18 @@ class BalanceService {
423
432
  },
424
433
  ]);
425
434
  const parseData = (data) => {
426
- data.data.updated_at = data.data.updated_at
427
- ? new Date(data.data.updated_at)
428
- : null;
429
- data.data.items = data.data.items
430
- ? data.data.items.map((balanceItem) => ({
431
- ...balanceItem,
432
- balance: bigIntParser(balanceItem.balance),
433
- total_supply: bigIntParser(balanceItem.total_supply),
434
- }))
435
- : null;
435
+ if (data.data) {
436
+ data.data.updated_at = data.data.updated_at
437
+ ? new Date(data.data.updated_at)
438
+ : null;
439
+ data.data.items = data.data.items
440
+ ? data.data.items.map((balanceItem) => ({
441
+ ...balanceItem,
442
+ balance: bigIntParser(balanceItem.balance),
443
+ total_supply: bigIntParser(balanceItem.total_supply),
444
+ }))
445
+ : null;
446
+ }
436
447
  return data;
437
448
  };
438
449
  return await this.execution.execute(endpoint, parseData);
@@ -485,26 +496,28 @@ class BalanceService {
485
496
  },
486
497
  ]);
487
498
  const parseData = (data) => {
488
- data.data.updated_at = data.data.updated_at
489
- ? new Date(data.data.updated_at)
490
- : null;
491
- data.data.items = data.data.items
492
- ? data.data.items.map((balanceItem) => ({
493
- ...balanceItem,
494
- balance: bigIntParser(balanceItem.balance),
495
- last_transferred_at: balanceItem.last_transferred_at
496
- ? new Date(balanceItem.last_transferred_at)
497
- : null,
498
- nft_data: balanceItem.nft_data
499
- ? balanceItem.nft_data.map((nftItem) => ({
500
- ...nftItem,
501
- token_id: bigIntParser(nftItem.token_id),
502
- token_balance: bigIntParser(nftItem.token_balance),
503
- token_price_wei: bigIntParser(nftItem.token_price_wei),
504
- }))
505
- : null,
506
- }))
507
- : null;
499
+ if (data.data) {
500
+ data.data.updated_at = data.data.updated_at
501
+ ? new Date(data.data.updated_at)
502
+ : null;
503
+ data.data.items = data.data.items
504
+ ? data.data.items.map((balanceItem) => ({
505
+ ...balanceItem,
506
+ balance: bigIntParser(balanceItem.balance),
507
+ last_transferred_at: balanceItem.last_transferred_at
508
+ ? new Date(balanceItem.last_transferred_at)
509
+ : null,
510
+ nft_data: balanceItem.nft_data
511
+ ? balanceItem.nft_data.map((nftItem) => ({
512
+ ...nftItem,
513
+ token_id: bigIntParser(nftItem.token_id),
514
+ token_balance: bigIntParser(nftItem.token_balance),
515
+ token_price_wei: bigIntParser(nftItem.token_price_wei),
516
+ }))
517
+ : null,
518
+ }))
519
+ : null;
520
+ }
508
521
  return data;
509
522
  };
510
523
  return await this.execution.execute(endpoint, parseData);
@@ -530,15 +543,17 @@ class BalanceService {
530
543
  },
531
544
  ]);
532
545
  const parseData = (data) => {
533
- data.data.updated_at = data.data.updated_at
534
- ? new Date(data.data.updated_at)
535
- : null;
536
- data.data.items = data.data.items
537
- ? data.data.items.map((balanceItem) => ({
538
- ...balanceItem,
539
- balance: bigIntParser(balanceItem.balance),
540
- }))
541
- : null;
546
+ if (data.data) {
547
+ data.data.updated_at = data.data.updated_at
548
+ ? new Date(data.data.updated_at)
549
+ : null;
550
+ data.data.items = data.data.items
551
+ ? data.data.items.map((balanceItem) => ({
552
+ ...balanceItem,
553
+ balance: bigIntParser(balanceItem.balance),
554
+ }))
555
+ : null;
556
+ }
542
557
  return data;
543
558
  };
544
559
  return await this.execution.execute(endpoint, parseData);
@@ -546,7 +561,7 @@ class BalanceService {
546
561
  }
547
562
 
548
563
  /**
549
- * Class A - Base
564
+ * Base API
550
565
  *
551
566
  */
552
567
  class BaseService {
@@ -564,17 +579,19 @@ class BaseService {
564
579
  async getBlock(chainName, blockHeight) {
565
580
  const endpoint = endpointGenerator(`${chainName}/block_v2/${blockHeight}`, []);
566
581
  const parseData = (data) => {
567
- data.data.updated_at = data.data.updated_at
568
- ? new Date(data.data.updated_at)
569
- : null;
570
- data.data.items = data.data.items
571
- ? data.data.items.map((blockItem) => ({
572
- ...blockItem,
573
- signed_at: blockItem.signed_at
574
- ? new Date(blockItem.signed_at)
575
- : null,
576
- }))
577
- : null;
582
+ if (data.data) {
583
+ data.data.updated_at = data.data.updated_at
584
+ ? new Date(data.data.updated_at)
585
+ : null;
586
+ data.data.items = data.data.items
587
+ ? data.data.items.map((blockItem) => ({
588
+ ...blockItem,
589
+ signed_at: blockItem.signed_at
590
+ ? new Date(blockItem.signed_at)
591
+ : null,
592
+ }))
593
+ : null;
594
+ }
578
595
  return data;
579
596
  };
580
597
  return await this.execution.execute(endpoint, parseData);
@@ -618,17 +635,19 @@ class BaseService {
618
635
  },
619
636
  ]);
620
637
  const parseData = (data) => {
621
- data.data.updated_at = data.data.updated_at
622
- ? new Date(data.data.updated_at)
623
- : null;
624
- data.data.items = data.data.items
625
- ? data.data.items.map((blockItem) => ({
626
- ...blockItem,
627
- signed_at: blockItem.signed_at
628
- ? new Date(blockItem.signed_at)
629
- : null,
630
- }))
631
- : null;
638
+ if (data.data) {
639
+ data.data.updated_at = data.data.updated_at
640
+ ? new Date(data.data.updated_at)
641
+ : null;
642
+ data.data.items = data.data.items
643
+ ? data.data.items.map((blockItem) => ({
644
+ ...blockItem,
645
+ signed_at: blockItem.signed_at
646
+ ? new Date(blockItem.signed_at)
647
+ : null,
648
+ }))
649
+ : null;
650
+ }
632
651
  return data;
633
652
  };
634
653
  for await (const data of paginateEndpoint(endpoint, this.execution, parseData, "pagination")) {
@@ -659,17 +678,19 @@ class BaseService {
659
678
  },
660
679
  ]);
661
680
  const parseData = (data) => {
662
- data.data.updated_at = data.data.updated_at
663
- ? new Date(data.data.updated_at)
664
- : null;
665
- data.data.items = data.data.items
666
- ? data.data.items.map((blockItem) => ({
667
- ...blockItem,
668
- signed_at: blockItem.signed_at
669
- ? new Date(blockItem.signed_at)
670
- : null,
671
- }))
672
- : null;
681
+ if (data.data) {
682
+ data.data.updated_at = data.data.updated_at
683
+ ? new Date(data.data.updated_at)
684
+ : null;
685
+ data.data.items = data.data.items
686
+ ? data.data.items.map((blockItem) => ({
687
+ ...blockItem,
688
+ signed_at: blockItem.signed_at
689
+ ? new Date(blockItem.signed_at)
690
+ : null,
691
+ }))
692
+ : null;
693
+ }
673
694
  return data;
674
695
  };
675
696
  return await this.execution.execute(endpoint, parseData);
@@ -716,17 +737,19 @@ class BaseService {
716
737
  },
717
738
  ]);
718
739
  const parseData = (data) => {
719
- data.data.updated_at = data.data.updated_at
720
- ? new Date(data.data.updated_at)
721
- : null;
722
- data.data.items = data.data.items
723
- ? data.data.items.map((logItem) => ({
724
- ...logItem,
725
- block_signed_at: logItem.block_signed_at
726
- ? new Date(logItem.block_signed_at)
727
- : null,
728
- }))
729
- : null;
740
+ if (data.data) {
741
+ data.data.updated_at = data.data.updated_at
742
+ ? new Date(data.data.updated_at)
743
+ : null;
744
+ data.data.items = data.data.items
745
+ ? data.data.items.map((logItem) => ({
746
+ ...logItem,
747
+ block_signed_at: logItem.block_signed_at
748
+ ? new Date(logItem.block_signed_at)
749
+ : null,
750
+ }))
751
+ : null;
752
+ }
730
753
  return data;
731
754
  };
732
755
  return await this.execution.execute(endpoint, parseData);
@@ -764,17 +787,19 @@ class BaseService {
764
787
  },
765
788
  ]);
766
789
  const parseData = (data) => {
767
- data.data.updated_at = data.data.updated_at
768
- ? new Date(data.data.updated_at)
769
- : null;
770
- data.data.items = data.data.items
771
- ? data.data.items.map((logItem) => ({
772
- ...logItem,
773
- block_signed_at: logItem.block_signed_at
774
- ? new Date(logItem.block_signed_at)
775
- : null,
776
- }))
777
- : null;
790
+ if (data.data) {
791
+ data.data.updated_at = data.data.updated_at
792
+ ? new Date(data.data.updated_at)
793
+ : null;
794
+ data.data.items = data.data.items
795
+ ? data.data.items.map((logItem) => ({
796
+ ...logItem,
797
+ block_signed_at: logItem.block_signed_at
798
+ ? new Date(logItem.block_signed_at)
799
+ : null,
800
+ }))
801
+ : null;
802
+ }
778
803
  return data;
779
804
  };
780
805
  for await (const data of paginateEndpoint(endpoint, this.execution, parseData, "pagination")) {
@@ -814,17 +839,19 @@ class BaseService {
814
839
  },
815
840
  ]);
816
841
  const parseData = (data) => {
817
- data.data.updated_at = data.data.updated_at
818
- ? new Date(data.data.updated_at)
819
- : null;
820
- data.data.items = data.data.items
821
- ? data.data.items.map((logItem) => ({
822
- ...logItem,
823
- block_signed_at: logItem.block_signed_at
824
- ? new Date(logItem.block_signed_at)
825
- : null,
826
- }))
827
- : null;
842
+ if (data.data) {
843
+ data.data.updated_at = data.data.updated_at
844
+ ? new Date(data.data.updated_at)
845
+ : null;
846
+ data.data.items = data.data.items
847
+ ? data.data.items.map((logItem) => ({
848
+ ...logItem,
849
+ block_signed_at: logItem.block_signed_at
850
+ ? new Date(logItem.block_signed_at)
851
+ : null,
852
+ }))
853
+ : null;
854
+ }
828
855
  return data;
829
856
  };
830
857
  return await this.execution.execute(endpoint, parseData);
@@ -867,17 +894,19 @@ class BaseService {
867
894
  },
868
895
  ]);
869
896
  const parseData = (data) => {
870
- data.data.updated_at = data.data.updated_at
871
- ? new Date(data.data.updated_at)
872
- : null;
873
- data.data.items = data.data.items
874
- ? data.data.items.map((logItem) => ({
875
- ...logItem,
876
- block_signed_at: logItem.block_signed_at
877
- ? new Date(logItem.block_signed_at)
878
- : null,
879
- }))
880
- : null;
897
+ if (data.data) {
898
+ data.data.updated_at = data.data.updated_at
899
+ ? new Date(data.data.updated_at)
900
+ : null;
901
+ data.data.items = data.data.items
902
+ ? data.data.items.map((logItem) => ({
903
+ ...logItem,
904
+ block_signed_at: logItem.block_signed_at
905
+ ? new Date(logItem.block_signed_at)
906
+ : null,
907
+ }))
908
+ : null;
909
+ }
881
910
  return data;
882
911
  };
883
912
  for await (const data of paginateEndpoint(endpoint, this.execution, parseData, "pagination")) {
@@ -922,17 +951,19 @@ class BaseService {
922
951
  },
923
952
  ]);
924
953
  const parseData = (data) => {
925
- data.data.updated_at = data.data.updated_at
926
- ? new Date(data.data.updated_at)
927
- : null;
928
- data.data.items = data.data.items
929
- ? data.data.items.map((logItem) => ({
930
- ...logItem,
931
- block_signed_at: logItem.block_signed_at
932
- ? new Date(logItem.block_signed_at)
933
- : null,
934
- }))
935
- : null;
954
+ if (data.data) {
955
+ data.data.updated_at = data.data.updated_at
956
+ ? new Date(data.data.updated_at)
957
+ : null;
958
+ data.data.items = data.data.items
959
+ ? data.data.items.map((logItem) => ({
960
+ ...logItem,
961
+ block_signed_at: logItem.block_signed_at
962
+ ? new Date(logItem.block_signed_at)
963
+ : null,
964
+ }))
965
+ : null;
966
+ }
936
967
  return data;
937
968
  };
938
969
  return await this.execution.execute(endpoint, parseData);
@@ -946,15 +977,17 @@ class BaseService {
946
977
  async getAllChains() {
947
978
  const endpoint = endpointGenerator(`chains`);
948
979
  const parseData = (data) => {
949
- data.data.updated_at = data.data.updated_at
950
- ? new Date(data.data.updated_at)
951
- : null;
952
- data.data.items = data.data.items
953
- ? data.data.items.map((chainItem) => ({
954
- ...chainItem,
955
- chain_id: +chainItem.chain_id,
956
- }))
957
- : null;
980
+ if (data.data) {
981
+ data.data.updated_at = data.data.updated_at
982
+ ? new Date(data.data.updated_at)
983
+ : null;
984
+ data.data.items = data.data.items
985
+ ? data.data.items.map((chainItem) => ({
986
+ ...chainItem,
987
+ chain_id: chainItem.chain_id ? +chainItem.chain_id : null,
988
+ }))
989
+ : null;
990
+ }
958
991
  return data;
959
992
  };
960
993
  return await this.execution.execute(endpoint, parseData);
@@ -968,15 +1001,17 @@ class BaseService {
968
1001
  async getAllChainStatus() {
969
1002
  const endpoint = endpointGenerator(`chains/status`);
970
1003
  const parseData = (data) => {
971
- data.data.updated_at = data.data.updated_at
972
- ? new Date(data.data.updated_at)
973
- : null;
974
- data.data.items = data.data.items
975
- ? data.data.items.map((chainItem) => ({
976
- ...chainItem,
977
- chain_id: +chainItem.chain_id,
978
- }))
979
- : null;
1004
+ if (data.data) {
1005
+ data.data.updated_at = data.data.updated_at
1006
+ ? new Date(data.data.updated_at)
1007
+ : null;
1008
+ data.data.items = data.data.items
1009
+ ? data.data.items.map((chainItem) => ({
1010
+ ...chainItem,
1011
+ chain_id: chainItem.chain_id ? +chainItem.chain_id : null,
1012
+ }))
1013
+ : null;
1014
+ }
980
1015
  return data;
981
1016
  };
982
1017
  return await this.execution.execute(endpoint, parseData);
@@ -998,17 +1033,19 @@ class BaseService {
998
1033
  },
999
1034
  ]);
1000
1035
  const parseData = (data) => {
1001
- data.data.updated_at = data.data.updated_at
1002
- ? new Date(data.data.updated_at)
1003
- : null;
1004
- data.data.items = data.data.items
1005
- ? data.data.items.map((activityItem) => ({
1006
- ...activityItem,
1007
- last_seen_at: activityItem.last_seen_at
1008
- ? new Date(activityItem.last_seen_at)
1009
- : null,
1010
- }))
1011
- : null;
1036
+ if (data.data) {
1037
+ data.data.updated_at = data.data.updated_at
1038
+ ? new Date(data.data.updated_at)
1039
+ : null;
1040
+ data.data.items = data.data.items
1041
+ ? data.data.items.map((activityItem) => ({
1042
+ ...activityItem,
1043
+ last_seen_at: activityItem.last_seen_at
1044
+ ? new Date(activityItem.last_seen_at)
1045
+ : null,
1046
+ }))
1047
+ : null;
1048
+ }
1012
1049
  return data;
1013
1050
  };
1014
1051
  return await this.execution.execute(endpoint, parseData);
@@ -1029,10 +1066,12 @@ class BaseService {
1029
1066
  },
1030
1067
  ]);
1031
1068
  const parseData = (data) => {
1032
- data.data.updated_at = data.data.updated_at
1033
- ? new Date(data.data.updated_at)
1034
- : null;
1035
- data.data.base_fee = bigIntParser(data.data.base_fee);
1069
+ if (data.data) {
1070
+ data.data.updated_at = data.data.updated_at
1071
+ ? new Date(data.data.updated_at)
1072
+ : null;
1073
+ data.data.base_fee = bigIntParser(data.data.base_fee);
1074
+ }
1036
1075
  return data;
1037
1076
  };
1038
1077
  return await this.execution.execute(endpoint, parseData);
@@ -1040,7 +1079,7 @@ class BaseService {
1040
1079
  }
1041
1080
 
1042
1081
  /**
1043
- * NFT APIs
1082
+ * NFTs API
1044
1083
  *
1045
1084
  */
1046
1085
  class NftService {
@@ -1074,17 +1113,19 @@ class NftService {
1074
1113
  },
1075
1114
  ]);
1076
1115
  const parseData = (data) => {
1077
- data.data.updated_at = data.data.updated_at
1078
- ? new Date(data.data.updated_at)
1079
- : null;
1080
- data.data.items = data.data.items
1081
- ? data.data.items.map((collectionItem) => ({
1082
- ...collectionItem,
1083
- last_scraped_at: collectionItem.last_scraped_at
1084
- ? new Date(collectionItem.last_scraped_at)
1085
- : null,
1086
- }))
1087
- : null;
1116
+ if (data.data) {
1117
+ data.data.updated_at = data.data.updated_at
1118
+ ? new Date(data.data.updated_at)
1119
+ : null;
1120
+ data.data.items = data.data.items
1121
+ ? data.data.items.map((collectionItem) => ({
1122
+ ...collectionItem,
1123
+ last_scraped_at: collectionItem.last_scraped_at
1124
+ ? new Date(collectionItem.last_scraped_at)
1125
+ : null,
1126
+ }))
1127
+ : null;
1128
+ }
1088
1129
  return data;
1089
1130
  };
1090
1131
  for await (const data of paginateEndpoint(endpoint, this.execution, parseData, "pagination")) {
@@ -1118,17 +1159,19 @@ class NftService {
1118
1159
  },
1119
1160
  ]);
1120
1161
  const parseData = (data) => {
1121
- data.data.updated_at = data.data.updated_at
1122
- ? new Date(data.data.updated_at)
1123
- : null;
1124
- data.data.items = data.data.items
1125
- ? data.data.items.map((collectionItem) => ({
1126
- ...collectionItem,
1127
- last_scraped_at: collectionItem.last_scraped_at
1128
- ? new Date(collectionItem.last_scraped_at)
1129
- : null,
1130
- }))
1131
- : null;
1162
+ if (data.data) {
1163
+ data.data.updated_at = data.data.updated_at
1164
+ ? new Date(data.data.updated_at)
1165
+ : null;
1166
+ data.data.items = data.data.items
1167
+ ? data.data.items.map((collectionItem) => ({
1168
+ ...collectionItem,
1169
+ last_scraped_at: collectionItem.last_scraped_at
1170
+ ? new Date(collectionItem.last_scraped_at)
1171
+ : null,
1172
+ }))
1173
+ : null;
1174
+ }
1132
1175
  return data;
1133
1176
  };
1134
1177
  return await this.execution.execute(endpoint, parseData);
@@ -1161,22 +1204,24 @@ class NftService {
1161
1204
  },
1162
1205
  ]);
1163
1206
  const parseData = (data) => {
1164
- data.data.updated_at = data.data.updated_at
1165
- ? new Date(data.data.updated_at)
1166
- : null;
1167
- data.data.items = data.data.items
1168
- ? data.data.items.map((balanceItem) => ({
1169
- ...balanceItem,
1170
- balance: bigIntParser(balanceItem.balance),
1171
- balance_24h: bigIntParser(balanceItem.balance_24h),
1172
- nft_data: balanceItem.nft_data
1173
- ? balanceItem.nft_data.map((nftItem) => ({
1174
- ...nftItem,
1175
- token_id: bigIntParser(nftItem.token_id),
1176
- }))
1177
- : null,
1178
- }))
1179
- : null;
1207
+ if (data.data) {
1208
+ data.data.updated_at = data.data.updated_at
1209
+ ? new Date(data.data.updated_at)
1210
+ : null;
1211
+ data.data.items = data.data.items
1212
+ ? data.data.items.map((balanceItem) => ({
1213
+ ...balanceItem,
1214
+ balance: bigIntParser(balanceItem.balance),
1215
+ balance_24h: bigIntParser(balanceItem.balance_24h),
1216
+ nft_data: balanceItem.nft_data
1217
+ ? balanceItem.nft_data.map((nftItem) => ({
1218
+ ...nftItem,
1219
+ token_id: bigIntParser(nftItem.token_id),
1220
+ }))
1221
+ : null,
1222
+ }))
1223
+ : null;
1224
+ }
1180
1225
  return data;
1181
1226
  };
1182
1227
  return await this.execution.execute(endpoint, parseData);
@@ -1224,18 +1269,20 @@ class NftService {
1224
1269
  },
1225
1270
  ]);
1226
1271
  const parseData = (data) => {
1227
- data.data.updated_at = data.data.updated_at
1228
- ? new Date(data.data.updated_at)
1229
- : null;
1230
- data.data.items = data.data.items
1231
- ? data.data.items.map((tokenItem) => ({
1232
- ...tokenItem,
1233
- nft_data: {
1234
- ...tokenItem.nft_data,
1235
- token_id: bigIntParser(tokenItem.nft_data.token_id),
1236
- },
1237
- }))
1238
- : null;
1272
+ if (data.data) {
1273
+ data.data.updated_at = data.data.updated_at
1274
+ ? new Date(data.data.updated_at)
1275
+ : null;
1276
+ data.data.items = data.data.items
1277
+ ? data.data.items.map((tokenItem) => ({
1278
+ ...tokenItem,
1279
+ nft_data: {
1280
+ ...tokenItem.nft_data,
1281
+ token_id: bigIntParser(tokenItem.nft_data?.token_id),
1282
+ },
1283
+ }))
1284
+ : null;
1285
+ }
1239
1286
  return data;
1240
1287
  };
1241
1288
  for await (const data of paginateEndpoint(endpoint, this.execution, parseData, "pagination")) {
@@ -1285,18 +1332,20 @@ class NftService {
1285
1332
  },
1286
1333
  ]);
1287
1334
  const parseData = (data) => {
1288
- data.data.updated_at = data.data.updated_at
1289
- ? new Date(data.data.updated_at)
1290
- : null;
1291
- data.data.items = data.data.items
1292
- ? data.data.items.map((tokenItem) => ({
1293
- ...tokenItem,
1294
- nft_data: {
1295
- ...tokenItem.nft_data,
1296
- token_id: bigIntParser(tokenItem.nft_data.token_id),
1297
- },
1298
- }))
1299
- : null;
1335
+ if (data.data) {
1336
+ data.data.updated_at = data.data.updated_at
1337
+ ? new Date(data.data.updated_at)
1338
+ : null;
1339
+ data.data.items = data.data.items
1340
+ ? data.data.items.map((tokenItem) => ({
1341
+ ...tokenItem,
1342
+ nft_data: {
1343
+ ...tokenItem.nft_data,
1344
+ token_id: bigIntParser(tokenItem.nft_data?.token_id),
1345
+ },
1346
+ }))
1347
+ : null;
1348
+ }
1300
1349
  return data;
1301
1350
  };
1302
1351
  return await this.execution.execute(endpoint, parseData);
@@ -1325,18 +1374,20 @@ class NftService {
1325
1374
  },
1326
1375
  ]);
1327
1376
  const parseData = (data) => {
1328
- data.data.updated_at = data.data.updated_at
1329
- ? new Date(data.data.updated_at)
1330
- : null;
1331
- data.data.items = data.data.items
1332
- ? data.data.items.map((tokenItem) => ({
1333
- ...tokenItem,
1334
- nft_data: {
1335
- ...tokenItem.nft_data,
1336
- token_id: bigIntParser(tokenItem.nft_data.token_id),
1337
- },
1338
- }))
1339
- : null;
1377
+ if (data.data) {
1378
+ data.data.updated_at = data.data.updated_at
1379
+ ? new Date(data.data.updated_at)
1380
+ : null;
1381
+ data.data.items = data.data.items
1382
+ ? data.data.items.map((tokenItem) => ({
1383
+ ...tokenItem,
1384
+ nft_data: {
1385
+ ...tokenItem.nft_data,
1386
+ token_id: bigIntParser(tokenItem.nft_data?.token_id),
1387
+ },
1388
+ }))
1389
+ : null;
1390
+ }
1340
1391
  return data;
1341
1392
  };
1342
1393
  return await this.execution.execute(endpoint, parseData);
@@ -1360,32 +1411,34 @@ class NftService {
1360
1411
  },
1361
1412
  ]);
1362
1413
  const parseData = (data) => {
1363
- data.data.updated_at = data.data.updated_at
1364
- ? new Date(data.data.updated_at)
1365
- : null;
1366
- data.data.items = data.data.items
1367
- ? data.data.items.map((nftItem) => ({
1368
- ...nftItem,
1369
- nft_transactions: nftItem.nft_transactions
1370
- ? nftItem.nft_transactions.map((txItem) => ({
1371
- ...txItem,
1372
- block_signed_at: txItem.block_signed_at
1373
- ? new Date(txItem.block_signed_at)
1374
- : null,
1375
- value: bigIntParser(txItem.value),
1376
- fees_paid: bigIntParser(txItem.fees_paid),
1377
- log_events: txItem.log_events
1378
- ? txItem.log_events.map((logItem) => ({
1379
- ...logItem,
1380
- block_signed_at: logItem.block_signed_at
1381
- ? new Date(logItem.block_signed_at)
1382
- : null,
1383
- }))
1384
- : null,
1385
- }))
1386
- : null,
1387
- }))
1388
- : null;
1414
+ if (data.data) {
1415
+ data.data.updated_at = data.data.updated_at
1416
+ ? new Date(data.data.updated_at)
1417
+ : null;
1418
+ data.data.items = data.data.items
1419
+ ? data.data.items.map((nftItem) => ({
1420
+ ...nftItem,
1421
+ nft_transactions: nftItem.nft_transactions
1422
+ ? nftItem.nft_transactions.map((txItem) => ({
1423
+ ...txItem,
1424
+ block_signed_at: txItem.block_signed_at
1425
+ ? new Date(txItem.block_signed_at)
1426
+ : null,
1427
+ value: bigIntParser(txItem.value),
1428
+ fees_paid: bigIntParser(txItem.fees_paid),
1429
+ log_events: txItem.log_events
1430
+ ? txItem.log_events.map((logItem) => ({
1431
+ ...logItem,
1432
+ block_signed_at: logItem.block_signed_at
1433
+ ? new Date(logItem.block_signed_at)
1434
+ : null,
1435
+ }))
1436
+ : null,
1437
+ }))
1438
+ : null,
1439
+ }))
1440
+ : null;
1441
+ }
1389
1442
  return data;
1390
1443
  };
1391
1444
  return await this.execution.execute(endpoint, parseData);
@@ -1401,9 +1454,11 @@ class NftService {
1401
1454
  async getTraitsForCollection(chainName, collectionContract) {
1402
1455
  const endpoint = endpointGenerator(`${chainName}/nft/${collectionContract}/traits`, []);
1403
1456
  const parseData = (data) => {
1404
- data.data.updated_at = data.data.updated_at
1405
- ? new Date(data.data.updated_at)
1406
- : null;
1457
+ if (data.data) {
1458
+ data.data.updated_at = data.data.updated_at
1459
+ ? new Date(data.data.updated_at)
1460
+ : null;
1461
+ }
1407
1462
  return data;
1408
1463
  };
1409
1464
  return await this.execution.execute(endpoint, parseData);
@@ -1420,9 +1475,11 @@ class NftService {
1420
1475
  async getAttributesForTraitInCollection(chainName, collectionContract, trait) {
1421
1476
  const endpoint = endpointGenerator(`${chainName}/nft/${collectionContract}/traits/${trait}/attributes`, []);
1422
1477
  const parseData = (data) => {
1423
- data.data.updated_at = data.data.updated_at
1424
- ? new Date(data.data.updated_at)
1425
- : null;
1478
+ if (data.data) {
1479
+ data.data.updated_at = data.data.updated_at
1480
+ ? new Date(data.data.updated_at)
1481
+ : null;
1482
+ }
1426
1483
  return data;
1427
1484
  };
1428
1485
  return await this.execution.execute(endpoint, parseData);
@@ -1438,9 +1495,11 @@ class NftService {
1438
1495
  async getCollectionTraitsSummary(chainName, collectionContract) {
1439
1496
  const endpoint = endpointGenerator(`${chainName}/nft/${collectionContract}/traits_summary`, []);
1440
1497
  const parseData = (data) => {
1441
- data.data.updated_at = data.data.updated_at
1442
- ? new Date(data.data.updated_at)
1443
- : null;
1498
+ if (data.data) {
1499
+ data.data.updated_at = data.data.updated_at
1500
+ ? new Date(data.data.updated_at)
1501
+ : null;
1502
+ }
1444
1503
  return data;
1445
1504
  };
1446
1505
  return await this.execution.execute(endpoint, parseData);
@@ -1469,21 +1528,23 @@ class NftService {
1469
1528
  },
1470
1529
  ]);
1471
1530
  const parseData = (data) => {
1472
- data.data.updated_at = data.data.updated_at
1473
- ? new Date(data.data.updated_at)
1474
- : null;
1475
- data.data.items = data.data.items
1476
- ? data.data.items.map((nftItem) => ({
1477
- ...nftItem,
1478
- balance: bigIntParser(nftItem.balance),
1479
- balance_24h: bigIntParser(nftItem.balance_24h),
1480
- token_id: bigIntParser(nftItem.token_id),
1481
- nft_data: {
1482
- ...nftItem.nft_data,
1483
- token_id: bigIntParser(nftItem.nft_data.token_id),
1484
- },
1485
- }))
1486
- : null;
1531
+ if (data.data) {
1532
+ data.data.updated_at = data.data.updated_at
1533
+ ? new Date(data.data.updated_at)
1534
+ : null;
1535
+ data.data.items = data.data.items
1536
+ ? data.data.items.map((nftItem) => ({
1537
+ ...nftItem,
1538
+ balance: bigIntParser(nftItem.balance),
1539
+ balance_24h: bigIntParser(nftItem.balance_24h),
1540
+ token_id: bigIntParser(nftItem.token_id),
1541
+ nft_data: {
1542
+ ...nftItem.nft_data,
1543
+ token_id: bigIntParser(nftItem.nft_data?.token_id),
1544
+ },
1545
+ }))
1546
+ : null;
1547
+ }
1487
1548
  return data;
1488
1549
  };
1489
1550
  return await this.execution.execute(endpoint, parseData);
@@ -1501,20 +1562,22 @@ class NftService {
1501
1562
  async checkOwnershipInNftForSpecificTokenId(chainName, walletAddress, collectionContract, tokenId) {
1502
1563
  const endpoint = endpointGenerator(`${chainName}/address/${walletAddress}/collection/${collectionContract}/token/${tokenId}`, []);
1503
1564
  const parseData = (data) => {
1504
- data.data.updated_at = data.data.updated_at
1505
- ? new Date(data.data.updated_at)
1506
- : null;
1507
- data.data.items = data.data.items
1508
- ? data.data.items.map((balanceItem) => ({
1509
- ...balanceItem,
1510
- balance: bigIntParser(balanceItem.balance),
1511
- balance_24h: bigIntParser(balanceItem.balance_24h),
1512
- token_id: bigIntParser(balanceItem.token_id),
1513
- last_transfered_at: balanceItem.last_transfered_at
1514
- ? new Date(balanceItem.last_transfered_at)
1515
- : null,
1516
- }))
1517
- : null;
1565
+ if (data.data) {
1566
+ data.data.updated_at = data.data.updated_at
1567
+ ? new Date(data.data.updated_at)
1568
+ : null;
1569
+ data.data.items = data.data.items
1570
+ ? data.data.items.map((balanceItem) => ({
1571
+ ...balanceItem,
1572
+ balance: bigIntParser(balanceItem.balance),
1573
+ balance_24h: bigIntParser(balanceItem.balance_24h),
1574
+ token_id: bigIntParser(balanceItem.token_id),
1575
+ last_transfered_at: balanceItem.last_transfered_at
1576
+ ? new Date(balanceItem.last_transfered_at)
1577
+ : null,
1578
+ }))
1579
+ : null;
1580
+ }
1518
1581
  return data;
1519
1582
  };
1520
1583
  return await this.execution.execute(endpoint, parseData);
@@ -1522,7 +1585,7 @@ class NftService {
1522
1585
  }
1523
1586
 
1524
1587
  /**
1525
- * Pricing APIs
1588
+ * Pricing API
1526
1589
  *
1527
1590
  */
1528
1591
  class PricingService {
@@ -1558,17 +1621,19 @@ class PricingService {
1558
1621
  },
1559
1622
  ]);
1560
1623
  const parseData = (data) => {
1561
- data.data.forEach((dataItem) => {
1562
- dataItem.update_at = dataItem.update_at
1563
- ? new Date(dataItem.update_at)
1564
- : null;
1565
- dataItem.items = dataItem.items
1566
- ? dataItem.items.map((priceItem) => ({
1567
- ...priceItem,
1568
- date: priceItem.date ? new Date(priceItem.date) : null,
1569
- }))
1570
- : null;
1571
- });
1624
+ if (data.data) {
1625
+ data.data.forEach((dataItem) => {
1626
+ dataItem.update_at = dataItem.update_at
1627
+ ? new Date(dataItem.update_at)
1628
+ : null;
1629
+ dataItem.items = dataItem.items
1630
+ ? dataItem.items.map((priceItem) => ({
1631
+ ...priceItem,
1632
+ date: priceItem.date ? new Date(priceItem.date) : null,
1633
+ }))
1634
+ : null;
1635
+ });
1636
+ }
1572
1637
  return data;
1573
1638
  };
1574
1639
  return await this.execution.execute(endpoint, parseData);
@@ -1594,23 +1659,25 @@ class SecurityService {
1594
1659
  async getApprovals(chainName, walletAddress) {
1595
1660
  const endpoint = endpointGenerator(`${chainName}/approvals/${walletAddress}`, []);
1596
1661
  const parseData = (data) => {
1597
- data.data.updated_at = data.data.updated_at
1598
- ? new Date(data.data.updated_at)
1599
- : null;
1600
- data.data.items = data.data.items
1601
- ? data.data.items.map((approvalItem) => ({
1602
- ...approvalItem,
1603
- balance: bigIntParser(approvalItem.balance),
1604
- spenders: approvalItem.spenders
1605
- ? approvalItem.spenders.map((spenderItem) => ({
1606
- ...spenderItem,
1607
- block_signed_at: spenderItem.block_signed_at
1608
- ? new Date(spenderItem.block_signed_at)
1609
- : null,
1610
- }))
1611
- : null,
1612
- }))
1613
- : null;
1662
+ if (data.data) {
1663
+ data.data.updated_at = data.data.updated_at
1664
+ ? new Date(data.data.updated_at)
1665
+ : null;
1666
+ data.data.items = data.data.items
1667
+ ? data.data.items.map((approvalItem) => ({
1668
+ ...approvalItem,
1669
+ balance: bigIntParser(approvalItem.balance),
1670
+ spenders: approvalItem.spenders
1671
+ ? approvalItem.spenders.map((spenderItem) => ({
1672
+ ...spenderItem,
1673
+ block_signed_at: spenderItem.block_signed_at
1674
+ ? new Date(spenderItem.block_signed_at)
1675
+ : null,
1676
+ }))
1677
+ : null,
1678
+ }))
1679
+ : null;
1680
+ }
1614
1681
  return data;
1615
1682
  };
1616
1683
  return await this.execution.execute(endpoint, parseData);
@@ -1625,27 +1692,33 @@ class SecurityService {
1625
1692
  async getNftApprovals(chainName, walletAddress) {
1626
1693
  const endpoint = endpointGenerator(`${chainName}/nft/approvals/${walletAddress}`, []);
1627
1694
  const parseData = (data) => {
1628
- data.data.updated_at = data.data.updated_at
1629
- ? new Date(data.data.updated_at)
1630
- : null;
1631
- data.data.items = data.data.items
1632
- ? data.data.items.map((approvalItem) => ({
1633
- ...approvalItem,
1634
- token_balances: approvalItem.token_balances
1635
- ? approvalItem.token_balances.map((balanceItem) => ({
1636
- ...balanceItem,
1637
- token_balance: bigIntParser(balanceItem.token_balance),
1638
- token_id: bigIntParser(balanceItem.token_id),
1639
- }))
1640
- : null,
1641
- }))
1642
- : null;
1695
+ if (data.data) {
1696
+ data.data.updated_at = data.data.updated_at
1697
+ ? new Date(data.data.updated_at)
1698
+ : null;
1699
+ data.data.items = data.data.items
1700
+ ? data.data.items.map((approvalItem) => ({
1701
+ ...approvalItem,
1702
+ token_balances: approvalItem.token_balances
1703
+ ? approvalItem.token_balances.map((balanceItem) => ({
1704
+ ...balanceItem,
1705
+ token_balance: bigIntParser(balanceItem.token_balance),
1706
+ token_id: bigIntParser(balanceItem.token_id),
1707
+ }))
1708
+ : null,
1709
+ }))
1710
+ : null;
1711
+ }
1643
1712
  return data;
1644
1713
  };
1645
1714
  return await this.execution.execute(endpoint, parseData);
1646
1715
  }
1647
1716
  }
1648
1717
 
1718
+ /**
1719
+ * Transactions API
1720
+ *
1721
+ */
1649
1722
  class TransactionService {
1650
1723
  constructor(execution) {
1651
1724
  this.execution = execution;
@@ -1689,27 +1762,29 @@ class TransactionService {
1689
1762
  },
1690
1763
  ]);
1691
1764
  const parseData = (data) => {
1692
- data.data.updated_at = data.data.updated_at
1693
- ? new Date(data.data.updated_at)
1694
- : null;
1695
- data.data.items = data.data.items
1696
- ? data.data.items.map((txItem) => ({
1697
- ...txItem,
1698
- value: bigIntParser(txItem.value),
1699
- fees_paid: bigIntParser(txItem.fees_paid),
1700
- block_signed_at: txItem.block_signed_at
1701
- ? new Date(txItem.block_signed_at)
1702
- : null,
1703
- log_events: txItem.log_events
1704
- ? txItem.log_events.map((logItem) => ({
1705
- ...logItem,
1706
- block_signed_at: logItem.block_signed_at
1707
- ? new Date(logItem.block_signed_at)
1708
- : null,
1709
- }))
1710
- : null,
1711
- }))
1712
- : null;
1765
+ if (data.data) {
1766
+ data.data.updated_at = data.data.updated_at
1767
+ ? new Date(data.data.updated_at)
1768
+ : null;
1769
+ data.data.items = data.data.items
1770
+ ? data.data.items.map((txItem) => ({
1771
+ ...txItem,
1772
+ value: bigIntParser(txItem.value),
1773
+ fees_paid: bigIntParser(txItem.fees_paid),
1774
+ block_signed_at: txItem.block_signed_at
1775
+ ? new Date(txItem.block_signed_at)
1776
+ : null,
1777
+ log_events: txItem.log_events
1778
+ ? txItem.log_events.map((logItem) => ({
1779
+ ...logItem,
1780
+ block_signed_at: logItem.block_signed_at
1781
+ ? new Date(logItem.block_signed_at)
1782
+ : null,
1783
+ }))
1784
+ : null,
1785
+ }))
1786
+ : null;
1787
+ }
1713
1788
  return data;
1714
1789
  };
1715
1790
  return await this.execution.execute(endpoint, parseData);
@@ -1747,27 +1822,29 @@ class TransactionService {
1747
1822
  },
1748
1823
  ]);
1749
1824
  const parseData = (data) => {
1750
- data.data.updated_at = data.data.updated_at
1751
- ? new Date(data.data.updated_at)
1752
- : null;
1753
- data.data.items = data.data.items
1754
- ? data.data.items.map((txItem) => ({
1755
- ...txItem,
1756
- value: bigIntParser(txItem.value),
1757
- fees_paid: bigIntParser(txItem.fees_paid),
1758
- block_signed_at: txItem.block_signed_at
1759
- ? new Date(txItem.block_signed_at)
1760
- : null,
1761
- log_events: txItem.log_events
1762
- ? txItem.log_events.map((logItem) => ({
1763
- ...logItem,
1764
- block_signed_at: logItem.block_signed_at
1765
- ? new Date(logItem.block_signed_at)
1766
- : null,
1767
- }))
1768
- : null,
1769
- }))
1770
- : null;
1825
+ if (data.data) {
1826
+ data.data.updated_at = data.data.updated_at
1827
+ ? new Date(data.data.updated_at)
1828
+ : null;
1829
+ data.data.items = data.data.items
1830
+ ? data.data.items.map((txItem) => ({
1831
+ ...txItem,
1832
+ value: bigIntParser(txItem.value),
1833
+ fees_paid: bigIntParser(txItem.fees_paid),
1834
+ block_signed_at: txItem.block_signed_at
1835
+ ? new Date(txItem.block_signed_at)
1836
+ : null,
1837
+ log_events: txItem.log_events
1838
+ ? txItem.log_events.map((logItem) => ({
1839
+ ...logItem,
1840
+ block_signed_at: logItem.block_signed_at
1841
+ ? new Date(logItem.block_signed_at)
1842
+ : null,
1843
+ }))
1844
+ : null,
1845
+ }))
1846
+ : null;
1847
+ }
1771
1848
  return data;
1772
1849
  };
1773
1850
  for await (const data of paginateEndpoint(endpoint, this.execution, parseData, "links")) {
@@ -1808,33 +1885,35 @@ class TransactionService {
1808
1885
  ];
1809
1886
  const endpoint = endpointGenerator(`${chainName}/address/${walletAddress}/transactions_v3`, searchParams);
1810
1887
  const parseData = (data) => {
1811
- data.data.prev = data.data.links.prev
1812
- ? async () => this.execution.execute(endpointGenerator(data.data.links.prev, searchParams), parseData)
1813
- : null;
1814
- data.data.next = data.data.links.next
1815
- ? async () => this.execution.execute(endpointGenerator(data.data.links.next, searchParams), parseData)
1816
- : null;
1817
- data.data.updated_at = data.data.updated_at
1818
- ? new Date(data.data.updated_at)
1819
- : null;
1820
- data.data.items = data.data.items
1821
- ? data.data.items.map((txItem) => ({
1822
- ...txItem,
1823
- value: bigIntParser(txItem.value),
1824
- fees_paid: bigIntParser(txItem.fees_paid),
1825
- block_signed_at: txItem.block_signed_at
1826
- ? new Date(txItem.block_signed_at)
1827
- : null,
1828
- log_events: txItem.log_events
1829
- ? txItem.log_events.map((logItem) => ({
1830
- ...logItem,
1831
- block_signed_at: logItem.block_signed_at
1832
- ? new Date(logItem.block_signed_at)
1833
- : null,
1834
- }))
1835
- : null,
1836
- }))
1837
- : null;
1888
+ if (data.data) {
1889
+ data.data.prev = data.data?.links?.prev
1890
+ ? async () => this.execution.execute(endpointGenerator(data.data?.links?.prev, searchParams), parseData)
1891
+ : null;
1892
+ data.data.next = data.data?.links?.next
1893
+ ? async () => this.execution.execute(endpointGenerator(data.data?.links?.next, searchParams), parseData)
1894
+ : null;
1895
+ data.data.updated_at = data.data.updated_at
1896
+ ? new Date(data.data.updated_at)
1897
+ : null;
1898
+ data.data.items = data.data.items
1899
+ ? data.data.items.map((txItem) => ({
1900
+ ...txItem,
1901
+ value: bigIntParser(txItem.value),
1902
+ fees_paid: bigIntParser(txItem.fees_paid),
1903
+ block_signed_at: txItem.block_signed_at
1904
+ ? new Date(txItem.block_signed_at)
1905
+ : null,
1906
+ log_events: txItem.log_events
1907
+ ? txItem.log_events.map((logItem) => ({
1908
+ ...logItem,
1909
+ block_signed_at: logItem.block_signed_at
1910
+ ? new Date(logItem.block_signed_at)
1911
+ : null,
1912
+ }))
1913
+ : null,
1914
+ }))
1915
+ : null;
1916
+ }
1838
1917
  return data;
1839
1918
  };
1840
1919
  return await this.execution.execute(endpoint, parseData);
@@ -1867,27 +1946,29 @@ class TransactionService {
1867
1946
  },
1868
1947
  ]);
1869
1948
  const parseData = (data) => {
1870
- data.data.updated_at = data.data.updated_at
1871
- ? new Date(data.data.updated_at)
1872
- : null;
1873
- data.data.items = data.data.items
1874
- ? data.data.items.map((txItem) => ({
1875
- ...txItem,
1876
- value: bigIntParser(txItem.value),
1877
- fees_paid: bigIntParser(txItem.fees_paid),
1878
- block_signed_at: txItem.block_signed_at
1879
- ? new Date(txItem.block_signed_at)
1880
- : null,
1881
- log_events: txItem.log_events
1882
- ? txItem.log_events.map((logItem) => ({
1883
- ...logItem,
1884
- block_signed_at: logItem.block_signed_at
1885
- ? new Date(logItem.block_signed_at)
1886
- : null,
1887
- }))
1888
- : null,
1889
- }))
1890
- : null;
1949
+ if (data.data) {
1950
+ data.data.updated_at = data.data.updated_at
1951
+ ? new Date(data.data.updated_at)
1952
+ : null;
1953
+ data.data.items = data.data.items
1954
+ ? data.data.items.map((txItem) => ({
1955
+ ...txItem,
1956
+ value: bigIntParser(txItem.value),
1957
+ fees_paid: bigIntParser(txItem.fees_paid),
1958
+ block_signed_at: txItem.block_signed_at
1959
+ ? new Date(txItem.block_signed_at)
1960
+ : null,
1961
+ log_events: txItem.log_events
1962
+ ? txItem.log_events.map((logItem) => ({
1963
+ ...logItem,
1964
+ block_signed_at: logItem.block_signed_at
1965
+ ? new Date(logItem.block_signed_at)
1966
+ : null,
1967
+ }))
1968
+ : null,
1969
+ }))
1970
+ : null;
1971
+ }
1891
1972
  return data;
1892
1973
  };
1893
1974
  return await this.execution.execute(endpoint, parseData);
@@ -1915,33 +1996,35 @@ class TransactionService {
1915
1996
  },
1916
1997
  ]);
1917
1998
  const parseData = (data) => {
1918
- data.data.updated_at = data.data.updated_at
1919
- ? new Date(data.data.updated_at)
1920
- : null;
1921
- data.data.items = data.data.items
1922
- ? data.data.items.map((txsItem) => ({
1923
- ...txsItem,
1924
- earliest_transaction: {
1925
- ...txsItem.earliest_transaction,
1926
- block_signed_at: txsItem.earliest_transaction.block_signed_at
1927
- ? new Date(txsItem.earliest_transaction.block_signed_at)
1928
- : null,
1929
- },
1930
- latest_transaction: {
1931
- ...txsItem.latest_transaction,
1932
- block_signed_at: txsItem.latest_transaction.block_signed_at
1933
- ? new Date(txsItem.latest_transaction.block_signed_at)
1934
- : null,
1935
- },
1936
- // ? API vs docs non-consistent
1937
- // gas_summary: {
1938
- // ...txsItem.gas_summary,
1939
- // total_fees_paid: bigIntParser(
1940
- // txsItem.gas_summary.total_fees_paid
1941
- // ),
1942
- // },
1943
- }))
1944
- : null;
1999
+ if (data.data) {
2000
+ data.data.updated_at = data.data.updated_at
2001
+ ? new Date(data.data.updated_at)
2002
+ : null;
2003
+ data.data.items = data.data.items
2004
+ ? data.data.items.map((txsItem) => ({
2005
+ ...txsItem,
2006
+ earliest_transaction: {
2007
+ ...txsItem.earliest_transaction,
2008
+ block_signed_at: txsItem?.earliest_transaction?.block_signed_at
2009
+ ? new Date(txsItem.earliest_transaction.block_signed_at)
2010
+ : null,
2011
+ },
2012
+ latest_transaction: {
2013
+ ...txsItem.latest_transaction,
2014
+ block_signed_at: txsItem?.latest_transaction?.block_signed_at
2015
+ ? new Date(txsItem?.latest_transaction?.block_signed_at)
2016
+ : null,
2017
+ },
2018
+ // ? API vs docs non-consistent
2019
+ // gas_summary: {
2020
+ // ...txsItem.gas_summary,
2021
+ // total_fees_paid: bigIntParser(
2022
+ // txsItem.gas_summary.total_fees_paid
2023
+ // ),
2024
+ // },
2025
+ }))
2026
+ : null;
2027
+ }
1945
2028
  return data;
1946
2029
  };
1947
2030
  return await this.execution.execute(endpoint, parseData);
@@ -1979,33 +2062,35 @@ class TransactionService {
1979
2062
  ];
1980
2063
  const endpoint = endpointGenerator(`${chainName}/address/${walletAddress}/transactions_v3/page/${page}`, searchParams);
1981
2064
  const parseData = (data) => {
1982
- data.data.prev = data.data.links.prev
1983
- ? async () => this.execution.execute(endpointGenerator(data.data.links.prev, searchParams), parseData)
1984
- : null;
1985
- data.data.next = data.data.links.next
1986
- ? async () => this.execution.execute(endpointGenerator(data.data.links.next, searchParams), parseData)
1987
- : null;
1988
- data.data.updated_at = data.data.updated_at
1989
- ? new Date(data.data.updated_at)
1990
- : null;
1991
- data.data.items = data.data.items
1992
- ? data.data.items.map((txItem) => ({
1993
- ...txItem,
1994
- value: bigIntParser(txItem.value),
1995
- fees_paid: bigIntParser(txItem.fees_paid),
1996
- block_signed_at: txItem.block_signed_at
1997
- ? new Date(txItem.block_signed_at)
1998
- : null,
1999
- log_events: txItem.log_events
2000
- ? txItem.log_events.map((logItem) => ({
2001
- ...logItem,
2002
- block_signed_at: logItem.block_signed_at
2003
- ? new Date(logItem.block_signed_at)
2004
- : null,
2005
- }))
2006
- : null,
2007
- }))
2008
- : null;
2065
+ if (data.data) {
2066
+ data.data.prev = data.data?.links?.prev
2067
+ ? async () => this.execution.execute(endpointGenerator(data.data?.links?.prev, searchParams), parseData)
2068
+ : null;
2069
+ data.data.next = data.data?.links?.next
2070
+ ? async () => this.execution.execute(endpointGenerator(data.data?.links?.next, searchParams), parseData)
2071
+ : null;
2072
+ data.data.updated_at = data.data.updated_at
2073
+ ? new Date(data.data.updated_at)
2074
+ : null;
2075
+ data.data.items = data.data.items
2076
+ ? data.data.items.map((txItem) => ({
2077
+ ...txItem,
2078
+ value: bigIntParser(txItem.value),
2079
+ fees_paid: bigIntParser(txItem.fees_paid),
2080
+ block_signed_at: txItem.block_signed_at
2081
+ ? new Date(txItem.block_signed_at)
2082
+ : null,
2083
+ log_events: txItem.log_events
2084
+ ? txItem.log_events.map((logItem) => ({
2085
+ ...logItem,
2086
+ block_signed_at: logItem.block_signed_at
2087
+ ? new Date(logItem.block_signed_at)
2088
+ : null,
2089
+ }))
2090
+ : null,
2091
+ }))
2092
+ : null;
2093
+ }
2009
2094
  return data;
2010
2095
  };
2011
2096
  return await this.execution.execute(endpoint, parseData);
@@ -2038,33 +2123,35 @@ class TransactionService {
2038
2123
  ];
2039
2124
  const endpoint = endpointGenerator(`${chainName}/bulk/transactions/${walletAddress}/${timeBucket}`, searchParams);
2040
2125
  const parseData = (data) => {
2041
- data.data.prev = data.data.links.prev
2042
- ? async () => this.execution.execute(endpointGenerator(data.data.links.prev, searchParams), parseData)
2043
- : null;
2044
- data.data.next = data.data.links.next
2045
- ? async () => this.execution.execute(endpointGenerator(data.data.links.next, searchParams), parseData)
2046
- : null;
2047
- data.data.updated_at = data.data.updated_at
2048
- ? new Date(data.data.updated_at)
2049
- : null;
2050
- data.data.items = data.data.items
2051
- ? data.data.items.map((txItem) => ({
2052
- ...txItem,
2053
- value: bigIntParser(txItem.value),
2054
- fees_paid: bigIntParser(txItem.fees_paid),
2055
- block_signed_at: txItem.block_signed_at
2056
- ? new Date(txItem.block_signed_at)
2057
- : null,
2058
- log_events: txItem.log_events
2059
- ? txItem.log_events.map((logItem) => ({
2060
- ...logItem,
2061
- block_signed_at: logItem.block_signed_at
2062
- ? new Date(logItem.block_signed_at)
2063
- : null,
2064
- }))
2065
- : null,
2066
- }))
2067
- : null;
2126
+ if (data.data) {
2127
+ data.data.prev = data.data?.links?.prev
2128
+ ? async () => this.execution.execute(endpointGenerator(data.data?.links?.prev, searchParams), parseData)
2129
+ : null;
2130
+ data.data.next = data.data?.links?.next
2131
+ ? async () => this.execution.execute(endpointGenerator(data.data?.links?.next, searchParams), parseData)
2132
+ : null;
2133
+ data.data.updated_at = data.data.updated_at
2134
+ ? new Date(data.data.updated_at)
2135
+ : null;
2136
+ data.data.items = data.data.items
2137
+ ? data.data.items.map((txItem) => ({
2138
+ ...txItem,
2139
+ value: bigIntParser(txItem.value),
2140
+ fees_paid: bigIntParser(txItem.fees_paid),
2141
+ block_signed_at: txItem.block_signed_at
2142
+ ? new Date(txItem.block_signed_at)
2143
+ : null,
2144
+ log_events: txItem.log_events
2145
+ ? txItem.log_events.map((logItem) => ({
2146
+ ...logItem,
2147
+ block_signed_at: logItem.block_signed_at
2148
+ ? new Date(logItem.block_signed_at)
2149
+ : null,
2150
+ }))
2151
+ : null,
2152
+ }))
2153
+ : null;
2154
+ }
2068
2155
  return data;
2069
2156
  };
2070
2157
  return await this.execution.execute(endpoint, parseData);
@@ -2099,33 +2186,35 @@ class TransactionService {
2099
2186
  ];
2100
2187
  const endpoint = endpointGenerator(`${chainName}/block_hash/${blockHash}/transactions_v3/page/${page}`, searchParams);
2101
2188
  const parseData = (data) => {
2102
- data.data.prev = data.data.links.prev
2103
- ? async () => this.execution.execute(endpointGenerator(data.data.links.prev, searchParams), parseData)
2104
- : null;
2105
- data.data.next = data.data.links.next
2106
- ? async () => this.execution.execute(endpointGenerator(data.data.links.next, searchParams), parseData)
2107
- : null;
2108
- data.data.updated_at = data.data.updated_at
2109
- ? new Date(data.data.updated_at)
2110
- : null;
2111
- data.data.items = data.data.items
2112
- ? data.data.items.map((txItem) => ({
2113
- ...txItem,
2114
- value: bigIntParser(txItem.value),
2115
- fees_paid: bigIntParser(txItem.fees_paid),
2116
- block_signed_at: txItem.block_signed_at
2117
- ? new Date(txItem.block_signed_at)
2118
- : null,
2119
- log_events: txItem.log_events
2120
- ? txItem.log_events.map((logItem) => ({
2121
- ...logItem,
2122
- block_signed_at: logItem.block_signed_at
2123
- ? new Date(logItem.block_signed_at)
2124
- : null,
2125
- }))
2126
- : null,
2127
- }))
2128
- : null;
2189
+ if (data.data) {
2190
+ data.data.prev = data.data?.links?.prev
2191
+ ? async () => this.execution.execute(endpointGenerator(data.data?.links?.prev, searchParams), parseData)
2192
+ : null;
2193
+ data.data.next = data.data?.links?.next
2194
+ ? async () => this.execution.execute(endpointGenerator(data.data?.links?.next, searchParams), parseData)
2195
+ : null;
2196
+ data.data.updated_at = data.data.updated_at
2197
+ ? new Date(data.data.updated_at)
2198
+ : null;
2199
+ data.data.items = data.data.items
2200
+ ? data.data.items.map((txItem) => ({
2201
+ ...txItem,
2202
+ value: bigIntParser(txItem.value),
2203
+ fees_paid: bigIntParser(txItem.fees_paid),
2204
+ block_signed_at: txItem.block_signed_at
2205
+ ? new Date(txItem.block_signed_at)
2206
+ : null,
2207
+ log_events: txItem.log_events
2208
+ ? txItem.log_events.map((logItem) => ({
2209
+ ...logItem,
2210
+ block_signed_at: logItem.block_signed_at
2211
+ ? new Date(logItem.block_signed_at)
2212
+ : null,
2213
+ }))
2214
+ : null,
2215
+ }))
2216
+ : null;
2217
+ }
2129
2218
  return data;
2130
2219
  };
2131
2220
  return await this.execution.execute(endpoint, parseData);
@@ -2158,27 +2247,29 @@ class TransactionService {
2158
2247
  },
2159
2248
  ]);
2160
2249
  const parseData = (data) => {
2161
- data.data.updated_at = data.data.updated_at
2162
- ? new Date(data.data.updated_at)
2163
- : null;
2164
- data.data.items = data.data.items
2165
- ? data.data.items.map((txItem) => ({
2166
- ...txItem,
2167
- value: bigIntParser(txItem.value),
2168
- fees_paid: bigIntParser(txItem.fees_paid),
2169
- block_signed_at: txItem.block_signed_at
2170
- ? new Date(txItem.block_signed_at)
2171
- : null,
2172
- log_events: txItem.log_events
2173
- ? txItem.log_events.map((logItem) => ({
2174
- ...logItem,
2175
- block_signed_at: logItem.block_signed_at
2176
- ? new Date(logItem.block_signed_at)
2177
- : null,
2178
- }))
2179
- : null,
2180
- }))
2181
- : null;
2250
+ if (data.data) {
2251
+ data.data.updated_at = data.data.updated_at
2252
+ ? new Date(data.data.updated_at)
2253
+ : null;
2254
+ data.data.items = data.data.items
2255
+ ? data.data.items.map((txItem) => ({
2256
+ ...txItem,
2257
+ value: bigIntParser(txItem.value),
2258
+ fees_paid: bigIntParser(txItem.fees_paid),
2259
+ block_signed_at: txItem.block_signed_at
2260
+ ? new Date(txItem.block_signed_at)
2261
+ : null,
2262
+ log_events: txItem.log_events
2263
+ ? txItem.log_events.map((logItem) => ({
2264
+ ...logItem,
2265
+ block_signed_at: logItem.block_signed_at
2266
+ ? new Date(logItem.block_signed_at)
2267
+ : null,
2268
+ }))
2269
+ : null,
2270
+ }))
2271
+ : null;
2272
+ }
2182
2273
  return data;
2183
2274
  };
2184
2275
  return await this.execution.execute(endpoint, parseData);
@@ -2406,6 +2497,12 @@ class Execution {
2406
2497
  }
2407
2498
  }
2408
2499
  }
2500
+ return {
2501
+ data: null,
2502
+ error: true,
2503
+ error_code: 500,
2504
+ error_message: "Internal server error",
2505
+ };
2409
2506
  }
2410
2507
  }
2411
2508
 
@@ -2445,6 +2542,1031 @@ class GoldRushClient {
2445
2542
  }
2446
2543
  }
2447
2544
 
2545
+ /*
2546
+ * big.js v6.2.1
2547
+ * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.
2548
+ * Copyright (c) 2022 Michael Mclaughlin
2549
+ * https://github.com/MikeMcl/big.js/LICENCE.md
2550
+ */
2551
+
2552
+
2553
+ /************************************** EDITABLE DEFAULTS *****************************************/
2554
+
2555
+
2556
+ // The default values below must be integers within the stated ranges.
2557
+
2558
+ /*
2559
+ * The maximum number of decimal places (DP) of the results of operations involving division:
2560
+ * div and sqrt, and pow with negative exponents.
2561
+ */
2562
+ var DP = 20, // 0 to MAX_DP
2563
+
2564
+ /*
2565
+ * The rounding mode (RM) used when rounding to the above decimal places.
2566
+ *
2567
+ * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)
2568
+ * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)
2569
+ * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)
2570
+ * 3 Away from zero. (ROUND_UP)
2571
+ */
2572
+ RM = 1, // 0, 1, 2 or 3
2573
+
2574
+ // The maximum value of DP and Big.DP.
2575
+ MAX_DP = 1E6, // 0 to 1000000
2576
+
2577
+ // The maximum magnitude of the exponent argument to the pow method.
2578
+ MAX_POWER = 1E6, // 1 to 1000000
2579
+
2580
+ /*
2581
+ * The negative exponent (NE) at and beneath which toString returns exponential notation.
2582
+ * (JavaScript numbers: -7)
2583
+ * -1000000 is the minimum recommended exponent value of a Big.
2584
+ */
2585
+ NE = -7, // 0 to -1000000
2586
+
2587
+ /*
2588
+ * The positive exponent (PE) at and above which toString returns exponential notation.
2589
+ * (JavaScript numbers: 21)
2590
+ * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.
2591
+ */
2592
+ PE = 21, // 0 to 1000000
2593
+
2594
+ /*
2595
+ * When true, an error will be thrown if a primitive number is passed to the Big constructor,
2596
+ * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a
2597
+ * primitive number without a loss of precision.
2598
+ */
2599
+ STRICT = false, // true or false
2600
+
2601
+
2602
+ /**************************************************************************************************/
2603
+
2604
+
2605
+ // Error messages.
2606
+ NAME = '[big.js] ',
2607
+ INVALID = NAME + 'Invalid ',
2608
+ INVALID_DP = INVALID + 'decimal places',
2609
+ INVALID_RM = INVALID + 'rounding mode',
2610
+ DIV_BY_ZERO = NAME + 'Division by zero',
2611
+
2612
+ // The shared prototype object.
2613
+ P = {},
2614
+ UNDEFINED = void 0,
2615
+ NUMERIC = /^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;
2616
+
2617
+
2618
+ /*
2619
+ * Create and return a Big constructor.
2620
+ */
2621
+ function _Big_() {
2622
+
2623
+ /*
2624
+ * The Big constructor and exported function.
2625
+ * Create and return a new instance of a Big number object.
2626
+ *
2627
+ * n {number|string|Big} A numeric value.
2628
+ */
2629
+ function Big(n) {
2630
+ var x = this;
2631
+
2632
+ // Enable constructor usage without new.
2633
+ if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);
2634
+
2635
+ // Duplicate.
2636
+ if (n instanceof Big) {
2637
+ x.s = n.s;
2638
+ x.e = n.e;
2639
+ x.c = n.c.slice();
2640
+ } else {
2641
+ if (typeof n !== 'string') {
2642
+ if (Big.strict === true && typeof n !== 'bigint') {
2643
+ throw TypeError(INVALID + 'value');
2644
+ }
2645
+
2646
+ // Minus zero?
2647
+ n = n === 0 && 1 / n < 0 ? '-0' : String(n);
2648
+ }
2649
+
2650
+ parse(x, n);
2651
+ }
2652
+
2653
+ // Retain a reference to this Big constructor.
2654
+ // Shadow Big.prototype.constructor which points to Object.
2655
+ x.constructor = Big;
2656
+ }
2657
+
2658
+ Big.prototype = P;
2659
+ Big.DP = DP;
2660
+ Big.RM = RM;
2661
+ Big.NE = NE;
2662
+ Big.PE = PE;
2663
+ Big.strict = STRICT;
2664
+ Big.roundDown = 0;
2665
+ Big.roundHalfUp = 1;
2666
+ Big.roundHalfEven = 2;
2667
+ Big.roundUp = 3;
2668
+
2669
+ return Big;
2670
+ }
2671
+
2672
+
2673
+ /*
2674
+ * Parse the number or string value passed to a Big constructor.
2675
+ *
2676
+ * x {Big} A Big number instance.
2677
+ * n {number|string} A numeric value.
2678
+ */
2679
+ function parse(x, n) {
2680
+ var e, i, nl;
2681
+
2682
+ if (!NUMERIC.test(n)) {
2683
+ throw Error(INVALID + 'number');
2684
+ }
2685
+
2686
+ // Determine sign.
2687
+ x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;
2688
+
2689
+ // Decimal point?
2690
+ if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');
2691
+
2692
+ // Exponential form?
2693
+ if ((i = n.search(/e/i)) > 0) {
2694
+
2695
+ // Determine exponent.
2696
+ if (e < 0) e = i;
2697
+ e += +n.slice(i + 1);
2698
+ n = n.substring(0, i);
2699
+ } else if (e < 0) {
2700
+
2701
+ // Integer.
2702
+ e = n.length;
2703
+ }
2704
+
2705
+ nl = n.length;
2706
+
2707
+ // Determine leading zeros.
2708
+ for (i = 0; i < nl && n.charAt(i) == '0';) ++i;
2709
+
2710
+ if (i == nl) {
2711
+
2712
+ // Zero.
2713
+ x.c = [x.e = 0];
2714
+ } else {
2715
+
2716
+ // Determine trailing zeros.
2717
+ for (; nl > 0 && n.charAt(--nl) == '0';);
2718
+ x.e = e - i - 1;
2719
+ x.c = [];
2720
+
2721
+ // Convert string to array of digits without leading/trailing zeros.
2722
+ for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);
2723
+ }
2724
+
2725
+ return x;
2726
+ }
2727
+
2728
+
2729
+ /*
2730
+ * Round Big x to a maximum of sd significant digits using rounding mode rm.
2731
+ *
2732
+ * x {Big} The Big to round.
2733
+ * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.
2734
+ * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
2735
+ * [more] {boolean} Whether the result of division was truncated.
2736
+ */
2737
+ function round(x, sd, rm, more) {
2738
+ var xc = x.c;
2739
+
2740
+ if (rm === UNDEFINED) rm = x.constructor.RM;
2741
+ if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {
2742
+ throw Error(INVALID_RM);
2743
+ }
2744
+
2745
+ if (sd < 1) {
2746
+ more =
2747
+ rm === 3 && (more || !!xc[0]) || sd === 0 && (
2748
+ rm === 1 && xc[0] >= 5 ||
2749
+ rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))
2750
+ );
2751
+
2752
+ xc.length = 1;
2753
+
2754
+ if (more) {
2755
+
2756
+ // 1, 0.1, 0.01, 0.001, 0.0001 etc.
2757
+ x.e = x.e - sd + 1;
2758
+ xc[0] = 1;
2759
+ } else {
2760
+
2761
+ // Zero.
2762
+ xc[0] = x.e = 0;
2763
+ }
2764
+ } else if (sd < xc.length) {
2765
+
2766
+ // xc[sd] is the digit after the digit that may be rounded up.
2767
+ more =
2768
+ rm === 1 && xc[sd] >= 5 ||
2769
+ rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&
2770
+ (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||
2771
+ rm === 3 && (more || !!xc[0]);
2772
+
2773
+ // Remove any digits after the required precision.
2774
+ xc.length = sd;
2775
+
2776
+ // Round up?
2777
+ if (more) {
2778
+
2779
+ // Rounding up may mean the previous digit has to be rounded up.
2780
+ for (; ++xc[--sd] > 9;) {
2781
+ xc[sd] = 0;
2782
+ if (sd === 0) {
2783
+ ++x.e;
2784
+ xc.unshift(1);
2785
+ break;
2786
+ }
2787
+ }
2788
+ }
2789
+
2790
+ // Remove trailing zeros.
2791
+ for (sd = xc.length; !xc[--sd];) xc.pop();
2792
+ }
2793
+
2794
+ return x;
2795
+ }
2796
+
2797
+
2798
+ /*
2799
+ * Return a string representing the value of Big x in normal or exponential notation.
2800
+ * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.
2801
+ */
2802
+ function stringify(x, doExponential, isNonzero) {
2803
+ var e = x.e,
2804
+ s = x.c.join(''),
2805
+ n = s.length;
2806
+
2807
+ // Exponential notation?
2808
+ if (doExponential) {
2809
+ s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;
2810
+
2811
+ // Normal notation.
2812
+ } else if (e < 0) {
2813
+ for (; ++e;) s = '0' + s;
2814
+ s = '0.' + s;
2815
+ } else if (e > 0) {
2816
+ if (++e > n) {
2817
+ for (e -= n; e--;) s += '0';
2818
+ } else if (e < n) {
2819
+ s = s.slice(0, e) + '.' + s.slice(e);
2820
+ }
2821
+ } else if (n > 1) {
2822
+ s = s.charAt(0) + '.' + s.slice(1);
2823
+ }
2824
+
2825
+ return x.s < 0 && isNonzero ? '-' + s : s;
2826
+ }
2827
+
2828
+
2829
+ // Prototype/instance methods
2830
+
2831
+
2832
+ /*
2833
+ * Return a new Big whose value is the absolute value of this Big.
2834
+ */
2835
+ P.abs = function () {
2836
+ var x = new this.constructor(this);
2837
+ x.s = 1;
2838
+ return x;
2839
+ };
2840
+
2841
+
2842
+ /*
2843
+ * Return 1 if the value of this Big is greater than the value of Big y,
2844
+ * -1 if the value of this Big is less than the value of Big y, or
2845
+ * 0 if they have the same value.
2846
+ */
2847
+ P.cmp = function (y) {
2848
+ var isneg,
2849
+ x = this,
2850
+ xc = x.c,
2851
+ yc = (y = new x.constructor(y)).c,
2852
+ i = x.s,
2853
+ j = y.s,
2854
+ k = x.e,
2855
+ l = y.e;
2856
+
2857
+ // Either zero?
2858
+ if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;
2859
+
2860
+ // Signs differ?
2861
+ if (i != j) return i;
2862
+
2863
+ isneg = i < 0;
2864
+
2865
+ // Compare exponents.
2866
+ if (k != l) return k > l ^ isneg ? 1 : -1;
2867
+
2868
+ j = (k = xc.length) < (l = yc.length) ? k : l;
2869
+
2870
+ // Compare digit by digit.
2871
+ for (i = -1; ++i < j;) {
2872
+ if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;
2873
+ }
2874
+
2875
+ // Compare lengths.
2876
+ return k == l ? 0 : k > l ^ isneg ? 1 : -1;
2877
+ };
2878
+
2879
+
2880
+ /*
2881
+ * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,
2882
+ * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.
2883
+ */
2884
+ P.div = function (y) {
2885
+ var x = this,
2886
+ Big = x.constructor,
2887
+ a = x.c, // dividend
2888
+ b = (y = new Big(y)).c, // divisor
2889
+ k = x.s == y.s ? 1 : -1,
2890
+ dp = Big.DP;
2891
+
2892
+ if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {
2893
+ throw Error(INVALID_DP);
2894
+ }
2895
+
2896
+ // Divisor is zero?
2897
+ if (!b[0]) {
2898
+ throw Error(DIV_BY_ZERO);
2899
+ }
2900
+
2901
+ // Dividend is 0? Return +-0.
2902
+ if (!a[0]) {
2903
+ y.s = k;
2904
+ y.c = [y.e = 0];
2905
+ return y;
2906
+ }
2907
+
2908
+ var bl, bt, n, cmp, ri,
2909
+ bz = b.slice(),
2910
+ ai = bl = b.length,
2911
+ al = a.length,
2912
+ r = a.slice(0, bl), // remainder
2913
+ rl = r.length,
2914
+ q = y, // quotient
2915
+ qc = q.c = [],
2916
+ qi = 0,
2917
+ p = dp + (q.e = x.e - y.e) + 1; // precision of the result
2918
+
2919
+ q.s = k;
2920
+ k = p < 0 ? 0 : p;
2921
+
2922
+ // Create version of divisor with leading zero.
2923
+ bz.unshift(0);
2924
+
2925
+ // Add zeros to make remainder as long as divisor.
2926
+ for (; rl++ < bl;) r.push(0);
2927
+
2928
+ do {
2929
+
2930
+ // n is how many times the divisor goes into current remainder.
2931
+ for (n = 0; n < 10; n++) {
2932
+
2933
+ // Compare divisor and remainder.
2934
+ if (bl != (rl = r.length)) {
2935
+ cmp = bl > rl ? 1 : -1;
2936
+ } else {
2937
+ for (ri = -1, cmp = 0; ++ri < bl;) {
2938
+ if (b[ri] != r[ri]) {
2939
+ cmp = b[ri] > r[ri] ? 1 : -1;
2940
+ break;
2941
+ }
2942
+ }
2943
+ }
2944
+
2945
+ // If divisor < remainder, subtract divisor from remainder.
2946
+ if (cmp < 0) {
2947
+
2948
+ // Remainder can't be more than 1 digit longer than divisor.
2949
+ // Equalise lengths using divisor with extra leading zero?
2950
+ for (bt = rl == bl ? b : bz; rl;) {
2951
+ if (r[--rl] < bt[rl]) {
2952
+ ri = rl;
2953
+ for (; ri && !r[--ri];) r[ri] = 9;
2954
+ --r[ri];
2955
+ r[rl] += 10;
2956
+ }
2957
+ r[rl] -= bt[rl];
2958
+ }
2959
+
2960
+ for (; !r[0];) r.shift();
2961
+ } else {
2962
+ break;
2963
+ }
2964
+ }
2965
+
2966
+ // Add the digit n to the result array.
2967
+ qc[qi++] = cmp ? n : ++n;
2968
+
2969
+ // Update the remainder.
2970
+ if (r[0] && cmp) r[rl] = a[ai] || 0;
2971
+ else r = [a[ai]];
2972
+
2973
+ } while ((ai++ < al || r[0] !== UNDEFINED) && k--);
2974
+
2975
+ // Leading zero? Do not remove if result is simply zero (qi == 1).
2976
+ if (!qc[0] && qi != 1) {
2977
+
2978
+ // There can't be more than one zero.
2979
+ qc.shift();
2980
+ q.e--;
2981
+ p--;
2982
+ }
2983
+
2984
+ // Round?
2985
+ if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);
2986
+
2987
+ return q;
2988
+ };
2989
+
2990
+
2991
+ /*
2992
+ * Return true if the value of this Big is equal to the value of Big y, otherwise return false.
2993
+ */
2994
+ P.eq = function (y) {
2995
+ return this.cmp(y) === 0;
2996
+ };
2997
+
2998
+
2999
+ /*
3000
+ * Return true if the value of this Big is greater than the value of Big y, otherwise return
3001
+ * false.
3002
+ */
3003
+ P.gt = function (y) {
3004
+ return this.cmp(y) > 0;
3005
+ };
3006
+
3007
+
3008
+ /*
3009
+ * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise
3010
+ * return false.
3011
+ */
3012
+ P.gte = function (y) {
3013
+ return this.cmp(y) > -1;
3014
+ };
3015
+
3016
+
3017
+ /*
3018
+ * Return true if the value of this Big is less than the value of Big y, otherwise return false.
3019
+ */
3020
+ P.lt = function (y) {
3021
+ return this.cmp(y) < 0;
3022
+ };
3023
+
3024
+
3025
+ /*
3026
+ * Return true if the value of this Big is less than or equal to the value of Big y, otherwise
3027
+ * return false.
3028
+ */
3029
+ P.lte = function (y) {
3030
+ return this.cmp(y) < 1;
3031
+ };
3032
+
3033
+
3034
+ /*
3035
+ * Return a new Big whose value is the value of this Big minus the value of Big y.
3036
+ */
3037
+ P.minus = P.sub = function (y) {
3038
+ var i, j, t, xlty,
3039
+ x = this,
3040
+ Big = x.constructor,
3041
+ a = x.s,
3042
+ b = (y = new Big(y)).s;
3043
+
3044
+ // Signs differ?
3045
+ if (a != b) {
3046
+ y.s = -b;
3047
+ return x.plus(y);
3048
+ }
3049
+
3050
+ var xc = x.c.slice(),
3051
+ xe = x.e,
3052
+ yc = y.c,
3053
+ ye = y.e;
3054
+
3055
+ // Either zero?
3056
+ if (!xc[0] || !yc[0]) {
3057
+ if (yc[0]) {
3058
+ y.s = -b;
3059
+ } else if (xc[0]) {
3060
+ y = new Big(x);
3061
+ } else {
3062
+ y.s = 1;
3063
+ }
3064
+ return y;
3065
+ }
3066
+
3067
+ // Determine which is the bigger number. Prepend zeros to equalise exponents.
3068
+ if (a = xe - ye) {
3069
+
3070
+ if (xlty = a < 0) {
3071
+ a = -a;
3072
+ t = xc;
3073
+ } else {
3074
+ ye = xe;
3075
+ t = yc;
3076
+ }
3077
+
3078
+ t.reverse();
3079
+ for (b = a; b--;) t.push(0);
3080
+ t.reverse();
3081
+ } else {
3082
+
3083
+ // Exponents equal. Check digit by digit.
3084
+ j = ((xlty = xc.length < yc.length) ? xc : yc).length;
3085
+
3086
+ for (a = b = 0; b < j; b++) {
3087
+ if (xc[b] != yc[b]) {
3088
+ xlty = xc[b] < yc[b];
3089
+ break;
3090
+ }
3091
+ }
3092
+ }
3093
+
3094
+ // x < y? Point xc to the array of the bigger number.
3095
+ if (xlty) {
3096
+ t = xc;
3097
+ xc = yc;
3098
+ yc = t;
3099
+ y.s = -y.s;
3100
+ }
3101
+
3102
+ /*
3103
+ * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only
3104
+ * needs to start at yc.length.
3105
+ */
3106
+ if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;
3107
+
3108
+ // Subtract yc from xc.
3109
+ for (b = i; j > a;) {
3110
+ if (xc[--j] < yc[j]) {
3111
+ for (i = j; i && !xc[--i];) xc[i] = 9;
3112
+ --xc[i];
3113
+ xc[j] += 10;
3114
+ }
3115
+
3116
+ xc[j] -= yc[j];
3117
+ }
3118
+
3119
+ // Remove trailing zeros.
3120
+ for (; xc[--b] === 0;) xc.pop();
3121
+
3122
+ // Remove leading zeros and adjust exponent accordingly.
3123
+ for (; xc[0] === 0;) {
3124
+ xc.shift();
3125
+ --ye;
3126
+ }
3127
+
3128
+ if (!xc[0]) {
3129
+
3130
+ // n - n = +0
3131
+ y.s = 1;
3132
+
3133
+ // Result must be zero.
3134
+ xc = [ye = 0];
3135
+ }
3136
+
3137
+ y.c = xc;
3138
+ y.e = ye;
3139
+
3140
+ return y;
3141
+ };
3142
+
3143
+
3144
+ /*
3145
+ * Return a new Big whose value is the value of this Big modulo the value of Big y.
3146
+ */
3147
+ P.mod = function (y) {
3148
+ var ygtx,
3149
+ x = this,
3150
+ Big = x.constructor,
3151
+ a = x.s,
3152
+ b = (y = new Big(y)).s;
3153
+
3154
+ if (!y.c[0]) {
3155
+ throw Error(DIV_BY_ZERO);
3156
+ }
3157
+
3158
+ x.s = y.s = 1;
3159
+ ygtx = y.cmp(x) == 1;
3160
+ x.s = a;
3161
+ y.s = b;
3162
+
3163
+ if (ygtx) return new Big(x);
3164
+
3165
+ a = Big.DP;
3166
+ b = Big.RM;
3167
+ Big.DP = Big.RM = 0;
3168
+ x = x.div(y);
3169
+ Big.DP = a;
3170
+ Big.RM = b;
3171
+
3172
+ return this.minus(x.times(y));
3173
+ };
3174
+
3175
+
3176
+ /*
3177
+ * Return a new Big whose value is the value of this Big negated.
3178
+ */
3179
+ P.neg = function () {
3180
+ var x = new this.constructor(this);
3181
+ x.s = -x.s;
3182
+ return x;
3183
+ };
3184
+
3185
+
3186
+ /*
3187
+ * Return a new Big whose value is the value of this Big plus the value of Big y.
3188
+ */
3189
+ P.plus = P.add = function (y) {
3190
+ var e, k, t,
3191
+ x = this,
3192
+ Big = x.constructor;
3193
+
3194
+ y = new Big(y);
3195
+
3196
+ // Signs differ?
3197
+ if (x.s != y.s) {
3198
+ y.s = -y.s;
3199
+ return x.minus(y);
3200
+ }
3201
+
3202
+ var xe = x.e,
3203
+ xc = x.c,
3204
+ ye = y.e,
3205
+ yc = y.c;
3206
+
3207
+ // Either zero?
3208
+ if (!xc[0] || !yc[0]) {
3209
+ if (!yc[0]) {
3210
+ if (xc[0]) {
3211
+ y = new Big(x);
3212
+ } else {
3213
+ y.s = x.s;
3214
+ }
3215
+ }
3216
+ return y;
3217
+ }
3218
+
3219
+ xc = xc.slice();
3220
+
3221
+ // Prepend zeros to equalise exponents.
3222
+ // Note: reverse faster than unshifts.
3223
+ if (e = xe - ye) {
3224
+ if (e > 0) {
3225
+ ye = xe;
3226
+ t = yc;
3227
+ } else {
3228
+ e = -e;
3229
+ t = xc;
3230
+ }
3231
+
3232
+ t.reverse();
3233
+ for (; e--;) t.push(0);
3234
+ t.reverse();
3235
+ }
3236
+
3237
+ // Point xc to the longer array.
3238
+ if (xc.length - yc.length < 0) {
3239
+ t = yc;
3240
+ yc = xc;
3241
+ xc = t;
3242
+ }
3243
+
3244
+ e = yc.length;
3245
+
3246
+ // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.
3247
+ for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;
3248
+
3249
+ // No need to check for zero, as +x + +y != 0 && -x + -y != 0
3250
+
3251
+ if (k) {
3252
+ xc.unshift(k);
3253
+ ++ye;
3254
+ }
3255
+
3256
+ // Remove trailing zeros.
3257
+ for (e = xc.length; xc[--e] === 0;) xc.pop();
3258
+
3259
+ y.c = xc;
3260
+ y.e = ye;
3261
+
3262
+ return y;
3263
+ };
3264
+
3265
+
3266
+ /*
3267
+ * Return a Big whose value is the value of this Big raised to the power n.
3268
+ * If n is negative, round to a maximum of Big.DP decimal places using rounding
3269
+ * mode Big.RM.
3270
+ *
3271
+ * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.
3272
+ */
3273
+ P.pow = function (n) {
3274
+ var x = this,
3275
+ one = new x.constructor('1'),
3276
+ y = one,
3277
+ isneg = n < 0;
3278
+
3279
+ if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {
3280
+ throw Error(INVALID + 'exponent');
3281
+ }
3282
+
3283
+ if (isneg) n = -n;
3284
+
3285
+ for (;;) {
3286
+ if (n & 1) y = y.times(x);
3287
+ n >>= 1;
3288
+ if (!n) break;
3289
+ x = x.times(x);
3290
+ }
3291
+
3292
+ return isneg ? one.div(y) : y;
3293
+ };
3294
+
3295
+
3296
+ /*
3297
+ * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd
3298
+ * significant digits using rounding mode rm, or Big.RM if rm is not specified.
3299
+ *
3300
+ * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.
3301
+ * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
3302
+ */
3303
+ P.prec = function (sd, rm) {
3304
+ if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {
3305
+ throw Error(INVALID + 'precision');
3306
+ }
3307
+ return round(new this.constructor(this), sd, rm);
3308
+ };
3309
+
3310
+
3311
+ /*
3312
+ * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places
3313
+ * using rounding mode rm, or Big.RM if rm is not specified.
3314
+ * If dp is negative, round to an integer which is a multiple of 10**-dp.
3315
+ * If dp is not specified, round to 0 decimal places.
3316
+ *
3317
+ * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.
3318
+ * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
3319
+ */
3320
+ P.round = function (dp, rm) {
3321
+ if (dp === UNDEFINED) dp = 0;
3322
+ else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {
3323
+ throw Error(INVALID_DP);
3324
+ }
3325
+ return round(new this.constructor(this), dp + this.e + 1, rm);
3326
+ };
3327
+
3328
+
3329
+ /*
3330
+ * Return a new Big whose value is the square root of the value of this Big, rounded, if
3331
+ * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.
3332
+ */
3333
+ P.sqrt = function () {
3334
+ var r, c, t,
3335
+ x = this,
3336
+ Big = x.constructor,
3337
+ s = x.s,
3338
+ e = x.e,
3339
+ half = new Big('0.5');
3340
+
3341
+ // Zero?
3342
+ if (!x.c[0]) return new Big(x);
3343
+
3344
+ // Negative?
3345
+ if (s < 0) {
3346
+ throw Error(NAME + 'No square root');
3347
+ }
3348
+
3349
+ // Estimate.
3350
+ s = Math.sqrt(x + '');
3351
+
3352
+ // Math.sqrt underflow/overflow?
3353
+ // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.
3354
+ if (s === 0 || s === 1 / 0) {
3355
+ c = x.c.join('');
3356
+ if (!(c.length + e & 1)) c += '0';
3357
+ s = Math.sqrt(c);
3358
+ e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);
3359
+ r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);
3360
+ } else {
3361
+ r = new Big(s + '');
3362
+ }
3363
+
3364
+ e = r.e + (Big.DP += 4);
3365
+
3366
+ // Newton-Raphson iteration.
3367
+ do {
3368
+ t = r;
3369
+ r = half.times(t.plus(x.div(t)));
3370
+ } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));
3371
+
3372
+ return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);
3373
+ };
3374
+
3375
+
3376
+ /*
3377
+ * Return a new Big whose value is the value of this Big times the value of Big y.
3378
+ */
3379
+ P.times = P.mul = function (y) {
3380
+ var c,
3381
+ x = this,
3382
+ Big = x.constructor,
3383
+ xc = x.c,
3384
+ yc = (y = new Big(y)).c,
3385
+ a = xc.length,
3386
+ b = yc.length,
3387
+ i = x.e,
3388
+ j = y.e;
3389
+
3390
+ // Determine sign of result.
3391
+ y.s = x.s == y.s ? 1 : -1;
3392
+
3393
+ // Return signed 0 if either 0.
3394
+ if (!xc[0] || !yc[0]) {
3395
+ y.c = [y.e = 0];
3396
+ return y;
3397
+ }
3398
+
3399
+ // Initialise exponent of result as x.e + y.e.
3400
+ y.e = i + j;
3401
+
3402
+ // If array xc has fewer digits than yc, swap xc and yc, and lengths.
3403
+ if (a < b) {
3404
+ c = xc;
3405
+ xc = yc;
3406
+ yc = c;
3407
+ j = a;
3408
+ a = b;
3409
+ b = j;
3410
+ }
3411
+
3412
+ // Initialise coefficient array of result with zeros.
3413
+ for (c = new Array(j = a + b); j--;) c[j] = 0;
3414
+
3415
+ // Multiply.
3416
+
3417
+ // i is initially xc.length.
3418
+ for (i = b; i--;) {
3419
+ b = 0;
3420
+
3421
+ // a is yc.length.
3422
+ for (j = a + i; j > i;) {
3423
+
3424
+ // Current sum of products at this digit position, plus carry.
3425
+ b = c[j] + yc[i] * xc[j - i - 1] + b;
3426
+ c[j--] = b % 10;
3427
+
3428
+ // carry
3429
+ b = b / 10 | 0;
3430
+ }
3431
+
3432
+ c[j] = b;
3433
+ }
3434
+
3435
+ // Increment result exponent if there is a final carry, otherwise remove leading zero.
3436
+ if (b) ++y.e;
3437
+ else c.shift();
3438
+
3439
+ // Remove trailing zeros.
3440
+ for (i = c.length; !c[--i];) c.pop();
3441
+ y.c = c;
3442
+
3443
+ return y;
3444
+ };
3445
+
3446
+
3447
+ /*
3448
+ * Return a string representing the value of this Big in exponential notation rounded to dp fixed
3449
+ * decimal places using rounding mode rm, or Big.RM if rm is not specified.
3450
+ *
3451
+ * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.
3452
+ * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
3453
+ */
3454
+ P.toExponential = function (dp, rm) {
3455
+ var x = this,
3456
+ n = x.c[0];
3457
+
3458
+ if (dp !== UNDEFINED) {
3459
+ if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {
3460
+ throw Error(INVALID_DP);
3461
+ }
3462
+ x = round(new x.constructor(x), ++dp, rm);
3463
+ for (; x.c.length < dp;) x.c.push(0);
3464
+ }
3465
+
3466
+ return stringify(x, true, !!n);
3467
+ };
3468
+
3469
+
3470
+ /*
3471
+ * Return a string representing the value of this Big in normal notation rounded to dp fixed
3472
+ * decimal places using rounding mode rm, or Big.RM if rm is not specified.
3473
+ *
3474
+ * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.
3475
+ * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
3476
+ *
3477
+ * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.
3478
+ * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.
3479
+ */
3480
+ P.toFixed = function (dp, rm) {
3481
+ var x = this,
3482
+ n = x.c[0];
3483
+
3484
+ if (dp !== UNDEFINED) {
3485
+ if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {
3486
+ throw Error(INVALID_DP);
3487
+ }
3488
+ x = round(new x.constructor(x), dp + x.e + 1, rm);
3489
+
3490
+ // x.e may have changed if the value is rounded up.
3491
+ for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);
3492
+ }
3493
+
3494
+ return stringify(x, false, !!n);
3495
+ };
3496
+
3497
+
3498
+ /*
3499
+ * Return a string representing the value of this Big.
3500
+ * Return exponential notation if this Big has a positive exponent equal to or greater than
3501
+ * Big.PE, or a negative exponent equal to or less than Big.NE.
3502
+ * Omit the sign for negative zero.
3503
+ */
3504
+ P[Symbol.for('nodejs.util.inspect.custom')] = P.toJSON = P.toString = function () {
3505
+ var x = this,
3506
+ Big = x.constructor;
3507
+ return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);
3508
+ };
3509
+
3510
+
3511
+ /*
3512
+ * Return the value of this Big as a primitve number.
3513
+ */
3514
+ P.toNumber = function () {
3515
+ var n = Number(stringify(this, true, true));
3516
+ if (this.constructor.strict === true && !this.eq(n.toString())) {
3517
+ throw Error(NAME + 'Imprecise conversion');
3518
+ }
3519
+ return n;
3520
+ };
3521
+
3522
+
3523
+ /*
3524
+ * Return a string representing the value of this Big rounded to sd significant digits using
3525
+ * rounding mode rm, or Big.RM if rm is not specified.
3526
+ * Use exponential notation if sd is less than the number of digits necessary to represent
3527
+ * the integer part of the value in normal notation.
3528
+ *
3529
+ * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.
3530
+ * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
3531
+ */
3532
+ P.toPrecision = function (sd, rm) {
3533
+ var x = this,
3534
+ Big = x.constructor,
3535
+ n = x.c[0];
3536
+
3537
+ if (sd !== UNDEFINED) {
3538
+ if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {
3539
+ throw Error(INVALID + 'precision');
3540
+ }
3541
+ x = round(new Big(x), sd, rm);
3542
+ for (; x.c.length < sd;) x.c.push(0);
3543
+ }
3544
+
3545
+ return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);
3546
+ };
3547
+
3548
+
3549
+ /*
3550
+ * Return a string representing the value of this Big.
3551
+ * Return exponential notation if this Big has a positive exponent equal to or greater than
3552
+ * Big.PE, or a negative exponent equal to or less than Big.NE.
3553
+ * Include the sign for negative zero.
3554
+ */
3555
+ P.valueOf = function () {
3556
+ var x = this,
3557
+ Big = x.constructor;
3558
+ if (Big.strict === true) {
3559
+ throw Error(NAME + 'valueOf disallowed');
3560
+ }
3561
+ return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);
3562
+ };
3563
+
3564
+
3565
+ // Export
3566
+
3567
+
3568
+ var Big = _Big_();
3569
+
2448
3570
  const calculatePrettyBalance = (value, decimals = 18, roundOff = true, precision = 0) => {
2449
3571
  const bigDecimalValue = new Big(value.toString());
2450
3572
  const bigDecimalExpo = new Big(Math.pow(10, decimals).toString());
@@ -2849,12 +3971,8 @@ exports.ChainID = void 0;
2849
3971
  ChainID[ChainID["SCROLL_MAINNET"] = 534352] = "SCROLL_MAINNET";
2850
3972
  ChainID[ChainID["COVALENT_INTERNAL_NETWORK_V1"] = 1131378225] = "COVALENT_INTERNAL_NETWORK_V1";
2851
3973
  })(exports.ChainID || (exports.ChainID = {}));
2852
- class GoldRushResponse {
2853
- }
2854
3974
 
2855
- exports.CovalentClient = GoldRushClient;
2856
3975
  exports.GoldRushClient = GoldRushClient;
2857
- exports.GoldRushResponse = GoldRushResponse;
2858
3976
  exports.bigIntParser = bigIntParser;
2859
3977
  exports.calculatePrettyBalance = calculatePrettyBalance;
2860
3978
  exports.isValidApiKey = isValidApiKey;