@merkl/api 0.10.168 → 0.10.170

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. package/dist/database/api/.generated/edge.js +6 -3
  2. package/dist/database/api/.generated/index-browser.js +3 -0
  3. package/dist/database/api/.generated/index.d.ts +113 -0
  4. package/dist/database/api/.generated/index.js +6 -3
  5. package/dist/database/api/.generated/package.json +1 -1
  6. package/dist/database/api/.generated/schema.prisma +17 -15
  7. package/dist/database/api/.generated/wasm.js +3 -0
  8. package/dist/src/cache/declaration.d.ts +0 -30
  9. package/dist/src/cache/declaration.js +0 -30
  10. package/dist/src/eden/index.d.ts +167 -15
  11. package/dist/src/index.d.ts +59 -5
  12. package/dist/src/libs/campaigns/campaignTypes/CLAMMDynamicData.js +2 -2
  13. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/factoryFinder.js +2 -0
  14. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.d.ts +3 -1
  15. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +8 -0
  16. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/PendleYTProcessor.d.ts +29 -0
  17. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/PendleYTProcessor.js +31 -0
  18. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/processorMapping.js +3 -0
  19. package/dist/src/libs/positions/clamm/index.d.ts +1 -2
  20. package/dist/src/libs/positions/clamm/index.js +322 -330
  21. package/dist/src/libs/positions/clamm/thegraph/fetchAlmPositions.d.ts +1 -1
  22. package/dist/src/libs/positions/clamm/thegraph/fetchAlmPositions.js +1 -1
  23. package/dist/src/libs/positions/clamm/thegraph/fetchAmmPositions.d.ts +1 -1
  24. package/dist/src/libs/positions/clamm/thegraph/fetchAmmPositions.js +2 -2
  25. package/dist/src/libs/positions/clamm/thegraph/fetchFarmedPositions.d.ts +1 -2
  26. package/dist/src/libs/positions/clamm/thegraph/fetchFarmedPositions.js +1 -4
  27. package/dist/src/libs/positions/euler/index.js +2 -3
  28. package/dist/src/libs/positions/index.js +1 -1
  29. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +6 -2
  30. package/dist/src/modules/v4/campaign/campaign.model.d.ts +1 -0
  31. package/dist/src/modules/v4/campaign/campaign.model.js +1 -0
  32. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +2 -0
  33. package/dist/src/modules/v4/campaign/campaign.repository.js +2 -1
  34. package/dist/src/modules/v4/campaign/campaign.service.d.ts +10 -5
  35. package/dist/src/modules/v4/campaign/campaign.service.js +10 -2
  36. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +20 -3
  37. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +2 -1
  38. package/dist/src/modules/v4/opportunity/opportunity.model.js +1 -0
  39. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +83 -5
  40. package/dist/src/modules/v4/opportunity/opportunity.repository.js +31 -0
  41. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +162 -8
  42. package/dist/src/modules/v4/opportunity/opportunity.service.js +11 -0
  43. package/dist/src/modules/v4/position/implementations/AjnaPositionFetcher.d.ts +6 -0
  44. package/dist/src/modules/v4/position/implementations/AjnaPositionFetcher.js +90 -0
  45. package/dist/src/modules/v4/position/implementations/BadgerPositionFetcher.d.ts +6 -0
  46. package/dist/src/modules/v4/position/implementations/BadgerPositionFetcher.js +69 -0
  47. package/dist/src/modules/v4/position/implementations/ClammPositionFetcher.d.ts +6 -0
  48. package/dist/src/modules/v4/position/implementations/ClammPositionFetcher.js +71 -0
  49. package/dist/src/modules/v4/position/implementations/DolomitePositionFetcher.d.ts +6 -0
  50. package/dist/src/modules/v4/position/implementations/DolomitePositionFetcher.js +45 -0
  51. package/dist/src/modules/v4/position/implementations/ERC20PositionFetcher.d.ts +6 -0
  52. package/dist/src/modules/v4/position/implementations/ERC20PositionFetcher.js +47 -0
  53. package/dist/src/modules/v4/position/implementations/EulerPositionFetcher.d.ts +6 -0
  54. package/dist/src/modules/v4/position/implementations/EulerPositionFetcher.js +40 -0
  55. package/dist/src/modules/v4/position/index.d.ts +2 -0
  56. package/dist/src/modules/v4/position/index.js +2 -0
  57. package/dist/src/modules/v4/position/position.controller.d.ts +39 -0
  58. package/dist/src/modules/v4/position/position.controller.js +16 -0
  59. package/dist/src/modules/v4/position/position.model.d.ts +25 -0
  60. package/dist/src/modules/v4/position/position.model.js +5 -0
  61. package/dist/src/modules/v4/position/position.repository.d.ts +14 -0
  62. package/dist/src/modules/v4/position/position.repository.js +6 -0
  63. package/dist/src/modules/v4/position/position.service.d.ts +5 -0
  64. package/dist/src/modules/v4/position/position.service.js +34 -0
  65. package/dist/src/modules/v4/price/price.controller.js +1 -1
  66. package/dist/src/modules/v4/price/price.service.d.ts +1 -1
  67. package/dist/src/modules/v4/price/price.service.js +3 -3
  68. package/dist/src/modules/v4/reward/reward.repository.d.ts +4 -0
  69. package/dist/src/modules/v4/reward/reward.service.d.ts +27 -0
  70. package/dist/src/modules/v4/reward/reward.service.js +5 -2
  71. package/dist/src/modules/v4/router.d.ts +59 -5
  72. package/dist/src/modules/v4/router.js +3 -1
  73. package/dist/src/modules/v4/token/token.controller.d.ts +6 -0
  74. package/dist/src/modules/v4/token/token.service.d.ts +12 -0
  75. package/dist/src/modules/v4/user/user.controller.d.ts +8 -0
  76. package/dist/src/routes/v1/prices.js +2 -4
  77. package/dist/src/routes/v3/blacklist.d.ts +59 -5
  78. package/dist/src/routes/v3/campaigns.d.ts +60 -6
  79. package/dist/src/routes/v3/campaignsInfo.d.ts +59 -5
  80. package/dist/src/routes/v3/multiChainPositions.d.ts +59 -5
  81. package/dist/src/routes/v3/opportunity.d.ts +59 -5
  82. package/dist/src/routes/v3/positions.d.ts +59 -5
  83. package/dist/src/routes/v3/recipients.d.ts +6 -2
  84. package/dist/src/routes/v3/recipients.js +14 -8
  85. package/dist/src/routes/v3/rewards.d.ts +59 -5
  86. package/dist/src/routes/v3/updates.d.ts +59 -5
  87. package/dist/src/routes/v3/userRewards.d.ts +59 -5
  88. package/dist/src/utils/decodeCalls.js +4 -1
  89. package/dist/src/utils/encodeCalls.js +4 -1
  90. package/dist/src/utils/generateCardName.js +2 -0
  91. package/dist/src/utils/prices/services/erc4626Service.js +10 -4
  92. package/dist/tsconfig.package.tsbuildinfo +1 -1
  93. package/package.json +1 -1
  94. package/dist/src/libs/reports/campaignReport.d.ts +0 -9
  95. package/dist/src/libs/reports/campaignReport.js +0 -37
  96. package/dist/src/libs/reports/mainParameterRewards.d.ts +0 -3
  97. package/dist/src/libs/reports/mainParameterRewards.js +0 -48
@@ -128,7 +128,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
128
128
  address: string;
129
129
  icon: string;
130
130
  decimals: number;
131
+ displaySymbol: string;
131
132
  verified: boolean;
133
+ isTest: boolean;
132
134
  price: number | null;
133
135
  };
134
136
  amount: bigint;
@@ -143,7 +145,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
143
145
  address: string;
144
146
  icon: string;
145
147
  decimals: number;
148
+ displaySymbol: string;
146
149
  verified: boolean;
150
+ isTest: boolean;
147
151
  price: number | null;
148
152
  }[];
149
153
  chain: {
@@ -227,7 +231,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
227
231
  address: string;
228
232
  icon: string;
229
233
  decimals: number;
234
+ displaySymbol: string;
230
235
  verified: boolean;
236
+ isTest: boolean;
231
237
  price: number | null;
232
238
  };
233
239
  amount: bigint;
@@ -242,7 +248,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
242
248
  address: string;
243
249
  icon: string;
244
250
  decimals: number;
251
+ displaySymbol: string;
245
252
  verified: boolean;
253
+ isTest: boolean;
246
254
  price: number | null;
247
255
  }[];
248
256
  chain: {
@@ -268,7 +276,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
268
276
  tvl: number;
269
277
  apr: number;
270
278
  dailyRewards: number;
271
- campaigns: ({
279
+ campaigns: {
272
280
  params: any;
273
281
  chain: {
274
282
  name: string;
@@ -283,7 +291,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
283
291
  address: string;
284
292
  icon: string;
285
293
  decimals: number;
294
+ displaySymbol: string;
286
295
  verified: boolean;
296
+ isTest: boolean;
287
297
  price: number | null;
288
298
  };
289
299
  distributionChain: {
@@ -311,7 +321,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
311
321
  amount: string;
312
322
  opportunityId: string;
313
323
  creatorAddress: string;
314
- } | null)[];
324
+ }[];
315
325
  } | null | undefined;
316
326
  };
317
327
  };
@@ -336,6 +346,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
336
346
  action?: string | undefined;
337
347
  mainProtocolId?: string | undefined;
338
348
  order?: undefined;
349
+ test?: boolean | undefined;
339
350
  minimumTvl?: number | undefined;
340
351
  };
341
352
  headers: unknown;
@@ -381,7 +392,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
381
392
  address: string;
382
393
  icon: string;
383
394
  decimals: number;
395
+ displaySymbol: string;
384
396
  verified: boolean;
397
+ isTest: boolean;
385
398
  price: number | null;
386
399
  };
387
400
  amount: bigint;
@@ -396,7 +409,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
396
409
  address: string;
397
410
  icon: string;
398
411
  decimals: number;
412
+ displaySymbol: string;
399
413
  verified: boolean;
414
+ isTest: boolean;
400
415
  price: number | null;
401
416
  }[];
402
417
  chain: {
@@ -445,6 +460,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
445
460
  action?: string | undefined;
446
461
  mainProtocolId?: string | undefined;
447
462
  order?: undefined;
463
+ test?: boolean | undefined;
448
464
  minimumTvl?: number | undefined;
449
465
  };
450
466
  headers: unknown;
@@ -475,12 +491,13 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
475
491
  action?: string | undefined;
476
492
  mainProtocolId?: string | undefined;
477
493
  order?: undefined;
494
+ test?: boolean | undefined;
478
495
  minimumTvl?: number | undefined;
479
496
  };
480
497
  headers: unknown;
481
498
  response: {
482
499
  200: {
483
- sum: File;
500
+ sum: number | null;
484
501
  };
485
502
  };
486
503
  };
@@ -550,10 +567,11 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
550
567
  campaignId?: string | undefined;
551
568
  opportunityId?: string | undefined;
552
569
  tokenSymbol?: string | undefined;
570
+ test?: boolean | undefined;
553
571
  };
554
572
  headers: unknown;
555
573
  response: {
556
- 200: ({
574
+ 200: {
557
575
  params: any;
558
576
  chain: {
559
577
  name: string;
@@ -568,7 +586,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
568
586
  address: string;
569
587
  icon: string;
570
588
  decimals: number;
589
+ displaySymbol: string;
571
590
  verified: boolean;
591
+ isTest: boolean;
572
592
  price: number | null;
573
593
  };
574
594
  distributionChain: {
@@ -596,7 +616,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
596
616
  amount: string;
597
617
  opportunityId: string;
598
618
  creatorAddress: string;
599
- } | null)[];
619
+ }[];
600
620
  };
601
621
  };
602
622
  };
@@ -618,6 +638,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
618
638
  campaignId?: string | undefined;
619
639
  opportunityId?: string | undefined;
620
640
  tokenSymbol?: string | undefined;
641
+ test?: boolean | undefined;
621
642
  };
622
643
  headers: unknown;
623
644
  response: {
@@ -771,7 +792,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
771
792
  address: string;
772
793
  icon: string;
773
794
  decimals: number;
795
+ displaySymbol: string;
774
796
  verified: boolean;
797
+ isTest: boolean;
775
798
  price?: number | null | undefined;
776
799
  } | undefined;
777
800
  };
@@ -800,7 +823,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
800
823
  address: string;
801
824
  icon: string;
802
825
  decimals: number;
826
+ displaySymbol: string;
803
827
  verified: boolean;
828
+ isTest: boolean;
804
829
  } & {
805
830
  price?: number | null | undefined;
806
831
  } & {
@@ -833,7 +858,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
833
858
  address: string;
834
859
  icon: string;
835
860
  decimals: number;
861
+ displaySymbol: string;
836
862
  verified: boolean;
863
+ isTest: boolean;
837
864
  } & {
838
865
  price?: number | null | undefined;
839
866
  })[];
@@ -1496,7 +1523,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
1496
1523
  address: string;
1497
1524
  icon: string;
1498
1525
  decimals: number;
1526
+ displaySymbol: string;
1499
1527
  verified: boolean;
1528
+ isTest: boolean;
1500
1529
  price: number | null;
1501
1530
  };
1502
1531
  breakdowns: {
@@ -1515,7 +1544,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
1515
1544
  address: string;
1516
1545
  icon: string;
1517
1546
  decimals: number;
1547
+ displaySymbol: string;
1518
1548
  verified: boolean;
1549
+ isTest: boolean;
1519
1550
  price: number | null;
1520
1551
  }[];
1521
1552
  Protocols: {
@@ -1606,7 +1637,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
1606
1637
  address: string;
1607
1638
  icon: string;
1608
1639
  decimals: number;
1640
+ displaySymbol: string;
1609
1641
  verified: boolean;
1642
+ isTest: boolean;
1610
1643
  price: number | null;
1611
1644
  };
1612
1645
  breakdowns: {
@@ -1625,7 +1658,9 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
1625
1658
  address: string;
1626
1659
  icon: string;
1627
1660
  decimals: number;
1661
+ displaySymbol: string;
1628
1662
  verified: boolean;
1663
+ isTest: boolean;
1629
1664
  price: number | null;
1630
1665
  }[];
1631
1666
  Protocols: {
@@ -2221,6 +2256,25 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
2221
2256
  };
2222
2257
  };
2223
2258
  };
2259
+ } & {
2260
+ v4: {
2261
+ positions: {
2262
+ index: {
2263
+ get: {
2264
+ body: unknown;
2265
+ params: {};
2266
+ query: {
2267
+ chainId: number;
2268
+ address: string;
2269
+ };
2270
+ headers: unknown;
2271
+ response: {
2272
+ 200: any[];
2273
+ };
2274
+ };
2275
+ };
2276
+ };
2277
+ };
2224
2278
  } & {
2225
2279
  index: {
2226
2280
  get: {
@@ -1,8 +1,10 @@
1
- import { AaveInterface, AuraInterface, AuraOperatorInterface, BalancerGaugeInterface, BalancerPoolInterface, BalancerVaultInterface, BeefyInterface, CompoundInterface, CurveInterface, ERC20Interface, EnzymeInterface, EulerInterface, FactoryInterface, FluidInterface, FraxlendInterface, GearboxVaultInterface, IonicInterface, LayerBankInterface, MaverickBPLensInterface, MetamorphoInterface, MoonwellInterface, OneInchStakingInterface, PendleInterface, RadiantInterface, RfxInterface, SturdyInterface, SymetricAmbientStrategyInterface, TorosInterface, UniswapV2PoolInterface, ZFStableLPINterface, ZFStableSwapThreePoolInterface, } from "@sdk";
1
+ import { AaveInterface, AuraInterface, AuraOperatorInterface, BalancerGaugeInterface, BalancerPoolInterface, BalancerVaultInterface, BeefyInterface, CompoundInterface, CurveInterface, ERC20Interface, EnzymeInterface, EulerInterface, FactoryInterface, FluidInterface, FraxlendInterface, GearboxVaultInterface, IonicInterface, LayerBankInterface, MaverickBPLensInterface, MetamorphoInterface, MoonwellInterface, OneInchStakingInterface, PendleInterface, PendleYTInterface, RadiantInterface, RfxInterface, SturdyInterface, SymetricAmbientStrategyInterface, TorosInterface, UniswapV2PoolInterface, ZFStableLPINterface, ZFStableSwapThreePoolInterface, } from "@sdk";
2
2
  import { tokenType } from "../libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType";
3
3
  export function decodeCall(calls, index, key, type) {
4
4
  const returnData = calls[index];
5
5
  switch (key) {
6
+ case "SY":
7
+ return PendleYTInterface.decodeFunctionResult("SY", returnData)[0];
6
8
  case "symbol":
7
9
  return ERC20Interface.decodeFunctionResult("symbol", returnData)[0];
8
10
  case "decimals":
@@ -44,6 +46,7 @@ export function decodeCall(calls, index, key, type) {
44
46
  case "underlying":
45
47
  switch (type) {
46
48
  case tokenType.pendle:
49
+ case tokenType.pendleYT:
47
50
  return PendleInterface.decodeFunctionResult("yieldToken", returnData)[0];
48
51
  case tokenType.gearbox:
49
52
  return GearboxVaultInterface.decodeFunctionResult("underlyingToken", returnData)[0];
@@ -1,8 +1,10 @@
1
1
  import { tokenType } from "../libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType";
2
- import { AaveInterface, AuraInterface, AuraOperatorInterface, BalancerGaugeInterface, BalancerPoolInterface, BalancerVaultInterface, BeefyInterface, CompoundInterface, CurveInterface, ERC20Interface, EnzymeInterface, EulerInterface, FactoryInterface, FluidInterface, FraxlendInterface, GearboxVaultInterface, IonicInterface, LayerBankInterface, MaverickBPLensInterface, MetamorphoInterface, MoonwellInterface, OneInchStakingInterface, PendleInterface, RadiantInterface, RfxDatastoreInterface, SturdyInterface, SymetricAmbientStrategyInterface, TorosInterface, UniswapV2PoolInterface, ZFStableLPINterface, ZFStableSwapThreePoolInterface, } from "@sdk";
2
+ import { AaveInterface, AuraInterface, AuraOperatorInterface, BalancerGaugeInterface, BalancerPoolInterface, BalancerVaultInterface, BeefyInterface, CompoundInterface, CurveInterface, ERC20Interface, EnzymeInterface, EulerInterface, FactoryInterface, FluidInterface, FraxlendInterface, GearboxVaultInterface, IonicInterface, LayerBankInterface, MaverickBPLensInterface, MetamorphoInterface, MoonwellInterface, OneInchStakingInterface, PendleInterface, PendleYTInterface, RadiantInterface, RfxDatastoreInterface, SturdyInterface, SymetricAmbientStrategyInterface, TorosInterface, UniswapV2PoolInterface, ZFStableLPINterface, ZFStableSwapThreePoolInterface, } from "@sdk";
3
3
  import { fluidInterface } from "src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1";
4
4
  export function createCall(target, key, type, metaData) {
5
5
  switch (key) {
6
+ case "SY":
7
+ return { allowFailure: true, callData: PendleYTInterface.encodeFunctionData("SY"), target };
6
8
  case "collateralContract":
7
9
  return { allowFailure: true, callData: SturdyInterface.encodeFunctionData("collateralContract"), target };
8
10
  case "pricePerShare":
@@ -63,6 +65,7 @@ export function createCall(target, key, type, metaData) {
63
65
  case "underlying":
64
66
  switch (type) {
65
67
  case tokenType.pendle:
68
+ case tokenType.pendleYT:
66
69
  return { allowFailure: true, callData: PendleInterface.encodeFunctionData("yieldToken"), target };
67
70
  case tokenType.metamorpho:
68
71
  return { allowFailure: true, callData: MetamorphoInterface.encodeFunctionData("asset"), target };
@@ -14,6 +14,8 @@ export function generateCardName(type, typeInfo, campaign, symbols = [""]) {
14
14
  case tokenType.ra:
15
15
  case tokenType.syncswap:
16
16
  return `${typeInfo.protocol} ${typeInfo.symbolToken0}/${typeInfo.symbolToken1}`;
17
+ case tokenType.pendleYT:
18
+ return `Hold YT of ${typeInfo.symbolUnderlyingToken} on ${typeInfo.protocol}`;
17
19
  case tokenType.pendle:
18
20
  return `Provide ${typeInfo.symbolUnderlyingToken} on ${typeInfo.protocol}`;
19
21
  case tokenType.balancerGauge:
@@ -1,6 +1,6 @@
1
+ import { PriceService } from "../../../modules/v4/price";
1
2
  import { PriceSourceMethod } from "../../../../database/api/.generated";
2
3
  import { log } from "../../logger";
3
- import PriceService from "../priceService";
4
4
  import { getERC4626Price } from "./getERC4626";
5
5
  export default class ERC4626Service {
6
6
  static instance = new ERC4626Service();
@@ -14,7 +14,7 @@ export default class ERC4626Service {
14
14
  return log.warn(`❌ ERC4626Service ticker not found for ${token.symbol}`);
15
15
  const rate = await getERC4626Price(args.chainId, args.address, args.decimals, args.vaultDecimals);
16
16
  // 2 returned tokens as stUSD and STUSD (business requirement)
17
- const price = this.priceCalculation(rate, args.vaultToken);
17
+ const price = await this.priceCalculation(rate, args.vaultToken);
18
18
  const res = [
19
19
  { token: token.symbol, rate: price },
20
20
  { token: token.symbol.toUpperCase(), rate: price },
@@ -24,7 +24,13 @@ export default class ERC4626Service {
24
24
  const resolvedPrices = await Promise.all(pricePromises);
25
25
  return resolvedPrices.flat().filter(price => price !== undefined);
26
26
  }
27
- priceCalculation(rate, vaultToken) {
28
- return rate * PriceService.instance.prices[vaultToken];
27
+ async priceCalculation(rate, vaultToken) {
28
+ try {
29
+ const vaultTokenPrice = await PriceService.fetchPriceBySymbol(vaultToken);
30
+ return rate * vaultTokenPrice;
31
+ }
32
+ catch {
33
+ return Number.NaN;
34
+ }
29
35
  }
30
36
  }