@merkl/api 0.20.64 → 0.20.65

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 (135) hide show
  1. package/dist/database/index.js +5 -1
  2. package/dist/src/eden/index.d.ts +115 -60
  3. package/dist/src/engine/dynamicData/implementations/Erc20.js +80 -42
  4. package/dist/src/engine/erc20SubTypeProcessors/GenericProcessor.d.ts +18 -18
  5. package/dist/src/engine/erc20SubTypeProcessors/GenericProcessor.js +33 -30
  6. package/dist/src/engine/erc20SubTypeProcessors/{helpers/tokenType.d.ts → constants.d.ts} +0 -6
  7. package/dist/src/engine/erc20SubTypeProcessors/factory.d.ts +6 -0
  8. package/dist/src/engine/erc20SubTypeProcessors/{implementations/processorMapping.js → factory.js} +49 -48
  9. package/dist/src/engine/erc20SubTypeProcessors/helpers/factoryFinder.d.ts +1 -1
  10. package/dist/src/engine/erc20SubTypeProcessors/helpers/factoryFinder.js +1 -1
  11. package/dist/src/engine/erc20SubTypeProcessors/helpers/hardcoded.d.ts +1 -1
  12. package/dist/src/engine/erc20SubTypeProcessors/helpers/hardcoded.js +1 -1
  13. package/dist/src/engine/erc20SubTypeProcessors/helpers/ownerFinder.d.ts +1 -1
  14. package/dist/src/engine/erc20SubTypeProcessors/helpers/ownerFinder.js +1 -1
  15. package/dist/src/engine/erc20SubTypeProcessors/implementations/AaveProcessor.d.ts +1 -2
  16. package/dist/src/engine/erc20SubTypeProcessors/implementations/AaveProcessor.js +1 -2
  17. package/dist/src/engine/erc20SubTypeProcessors/implementations/AnglesLiquid.d.ts +2 -3
  18. package/dist/src/engine/erc20SubTypeProcessors/implementations/AnglesLiquid.js +1 -5
  19. package/dist/src/engine/erc20SubTypeProcessors/implementations/AssetProcessor.d.ts +1 -2
  20. package/dist/src/engine/erc20SubTypeProcessors/implementations/AssetProcessor.js +2 -2
  21. package/dist/src/engine/erc20SubTypeProcessors/implementations/AuraProcessor.d.ts +3 -2
  22. package/dist/src/engine/erc20SubTypeProcessors/implementations/AuraProcessor.js +6 -7
  23. package/dist/src/engine/erc20SubTypeProcessors/implementations/BEXRewardGaugeProcessor.d.ts +3 -2
  24. package/dist/src/engine/erc20SubTypeProcessors/implementations/BEXRewardGaugeProcessor.js +4 -5
  25. package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerGaugeProcessor.d.ts +3 -2
  26. package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerGaugeProcessor.js +3 -4
  27. package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerPoolProcessor.d.ts +3 -2
  28. package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerPoolProcessor.js +3 -4
  29. package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerV3PoolProcessor.d.ts +2 -2
  30. package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerV3PoolProcessor.js +1 -2
  31. package/dist/src/engine/erc20SubTypeProcessors/implementations/BeefyProcessor.d.ts +2 -2
  32. package/dist/src/engine/erc20SubTypeProcessors/implementations/BeefyProcessor.js +3 -3
  33. package/dist/src/engine/erc20SubTypeProcessors/implementations/BunniV2Processor.d.ts +2 -2
  34. package/dist/src/engine/erc20SubTypeProcessors/implementations/BunniV2Processor.js +2 -2
  35. package/dist/src/engine/erc20SubTypeProcessors/implementations/CompoundProcessor.d.ts +2 -2
  36. package/dist/src/engine/erc20SubTypeProcessors/implementations/CompoundProcessor.js +2 -3
  37. package/dist/src/engine/erc20SubTypeProcessors/implementations/ERC4626Processor.d.ts +1 -2
  38. package/dist/src/engine/erc20SubTypeProcessors/implementations/ERC4626Processor.js +1 -1
  39. package/dist/src/engine/erc20SubTypeProcessors/implementations/EnzymeProcessor.d.ts +3 -2
  40. package/dist/src/engine/erc20SubTypeProcessors/implementations/EnzymeProcessor.js +2 -2
  41. package/dist/src/engine/erc20SubTypeProcessors/implementations/EqualizerGaugeProcessor.d.ts +1 -2
  42. package/dist/src/engine/erc20SubTypeProcessors/implementations/EqualizerGaugeProcessor.js +1 -1
  43. package/dist/src/engine/erc20SubTypeProcessors/implementations/EulerBorrowProcessor.d.ts +1 -2
  44. package/dist/src/engine/erc20SubTypeProcessors/implementations/EulerBorrowProcessor.js +1 -1
  45. package/dist/src/engine/erc20SubTypeProcessors/implementations/EulerLendProcessor.d.ts +1 -2
  46. package/dist/src/engine/erc20SubTypeProcessors/implementations/EulerLendProcessor.js +1 -1
  47. package/dist/src/engine/erc20SubTypeProcessors/implementations/FluidProcessor.d.ts +2 -2
  48. package/dist/src/engine/erc20SubTypeProcessors/implementations/FluidProcessor.js +2 -3
  49. package/dist/src/engine/erc20SubTypeProcessors/implementations/FraxProcessor.d.ts +1 -2
  50. package/dist/src/engine/erc20SubTypeProcessors/implementations/FraxProcessor.js +2 -2
  51. package/dist/src/engine/erc20SubTypeProcessors/implementations/GammaProcessor.d.ts +2 -3
  52. package/dist/src/engine/erc20SubTypeProcessors/implementations/GammaProcessor.js +1 -4
  53. package/dist/src/engine/erc20SubTypeProcessors/implementations/GearboxProcessor.d.ts +2 -2
  54. package/dist/src/engine/erc20SubTypeProcessors/implementations/GearboxProcessor.js +2 -3
  55. package/dist/src/engine/erc20SubTypeProcessors/implementations/HanjiVaultProcessor.d.ts +3 -2
  56. package/dist/src/engine/erc20SubTypeProcessors/implementations/HanjiVaultProcessor.js +4 -5
  57. package/dist/src/engine/erc20SubTypeProcessors/implementations/HoldStationProcessor.d.ts +1 -2
  58. package/dist/src/engine/erc20SubTypeProcessors/implementations/HoldStationProcessor.js +1 -1
  59. package/dist/src/engine/erc20SubTypeProcessors/implementations/HourglassProcessor.d.ts +2 -2
  60. package/dist/src/engine/erc20SubTypeProcessors/implementations/HourglassProcessor.js +2 -3
  61. package/dist/src/engine/erc20SubTypeProcessors/implementations/MaverickBPProcessor.d.ts +2 -2
  62. package/dist/src/engine/erc20SubTypeProcessors/implementations/MaverickBPProcessor.js +2 -2
  63. package/dist/src/engine/erc20SubTypeProcessors/implementations/MetamorphoProcessor.d.ts +2 -2
  64. package/dist/src/engine/erc20SubTypeProcessors/implementations/MetamorphoProcessor.js +1 -2
  65. package/dist/src/engine/erc20SubTypeProcessors/implementations/NoLinkVaultProcessor.d.ts +2 -3
  66. package/dist/src/engine/erc20SubTypeProcessors/implementations/NoLinkVaultProcessor.js +3 -6
  67. package/dist/src/engine/erc20SubTypeProcessors/implementations/PendleProcessor.d.ts +1 -2
  68. package/dist/src/engine/erc20SubTypeProcessors/implementations/PendleProcessor.js +1 -1
  69. package/dist/src/engine/erc20SubTypeProcessors/implementations/PendleYTProcessor.d.ts +1 -2
  70. package/dist/src/engine/erc20SubTypeProcessors/implementations/PendleYTProcessor.js +1 -1
  71. package/dist/src/engine/erc20SubTypeProcessors/implementations/RadiantProcessor.d.ts +2 -2
  72. package/dist/src/engine/erc20SubTypeProcessors/implementations/RadiantProcessor.js +1 -2
  73. package/dist/src/engine/erc20SubTypeProcessors/implementations/RfxProcessor.d.ts +2 -2
  74. package/dist/src/engine/erc20SubTypeProcessors/implementations/RfxProcessor.js +5 -6
  75. package/dist/src/engine/erc20SubTypeProcessors/implementations/Satlayer.d.ts +1 -2
  76. package/dist/src/engine/erc20SubTypeProcessors/implementations/Satlayer.js +1 -2
  77. package/dist/src/engine/erc20SubTypeProcessors/implementations/SpectraProcessor.d.ts +1 -2
  78. package/dist/src/engine/erc20SubTypeProcessors/implementations/SpectraProcessor.js +1 -1
  79. package/dist/src/engine/erc20SubTypeProcessors/implementations/SpectraYTProcessor.d.ts +1 -2
  80. package/dist/src/engine/erc20SubTypeProcessors/implementations/SpectraYTProcessor.js +1 -1
  81. package/dist/src/engine/erc20SubTypeProcessors/implementations/SpliceProcessor.d.ts +2 -1
  82. package/dist/src/engine/erc20SubTypeProcessors/implementations/SpliceProcessor.js +0 -1
  83. package/dist/src/engine/erc20SubTypeProcessors/implementations/SturdySiloProcessor.d.ts +1 -2
  84. package/dist/src/engine/erc20SubTypeProcessors/implementations/SturdySiloProcessor.js +1 -2
  85. package/dist/src/engine/erc20SubTypeProcessors/implementations/TempestVaultProcessor.d.ts +2 -2
  86. package/dist/src/engine/erc20SubTypeProcessors/implementations/TempestVaultProcessor.js +2 -2
  87. package/dist/src/engine/erc20SubTypeProcessors/implementations/TemplateProcessor.d.ts +2 -3
  88. package/dist/src/engine/erc20SubTypeProcessors/implementations/TemplateProcessor.js +0 -4
  89. package/dist/src/engine/erc20SubTypeProcessors/implementations/TorosProcessor.d.ts +1 -2
  90. package/dist/src/engine/erc20SubTypeProcessors/implementations/TorosProcessor.js +1 -2
  91. package/dist/src/engine/erc20SubTypeProcessors/implementations/UniswapProcessor.d.ts +3 -2
  92. package/dist/src/engine/erc20SubTypeProcessors/implementations/UniswapProcessor.js +3 -3
  93. package/dist/src/engine/erc20SubTypeProcessors/implementations/VicunaProcessor.d.ts +1 -2
  94. package/dist/src/engine/erc20SubTypeProcessors/implementations/VicunaProcessor.js +1 -1
  95. package/dist/src/engine/erc20SubTypeProcessors/implementations/WoofiProcessor.d.ts +1 -2
  96. package/dist/src/engine/erc20SubTypeProcessors/implementations/WoofiProcessor.js +1 -2
  97. package/dist/src/engine/erc20SubTypeProcessors/implementations/ZkSwapThreePoolProcessor.d.ts +2 -2
  98. package/dist/src/engine/erc20SubTypeProcessors/implementations/ZkSwapThreePoolProcessor.js +7 -7
  99. package/dist/src/engine/erc20SubTypeProcessors/implementations/curveNPoolProcessor.d.ts +3 -2
  100. package/dist/src/engine/erc20SubTypeProcessors/implementations/curveNPoolProcessor.js +5 -6
  101. package/dist/src/engine/erc20SubTypeProcessors/implementations/curveProcessor.d.ts +1 -2
  102. package/dist/src/engine/erc20SubTypeProcessors/implementations/curveProcessor.js +2 -3
  103. package/dist/src/engine/erc20SubTypeProcessors/implementations/stakedCurveProcessor.d.ts +2 -2
  104. package/dist/src/engine/erc20SubTypeProcessors/implementations/stakedCurveProcessor.js +3 -4
  105. package/dist/src/engine/erc20SubTypeProcessors/implementations/xU308Processor.d.ts +2 -2
  106. package/dist/src/engine/erc20SubTypeProcessors/implementations/xU308Processor.js +3 -4
  107. package/dist/src/engine/erc20SubTypeProcessors/subtypesRound1.d.ts +17 -3
  108. package/dist/src/engine/erc20SubTypeProcessors/subtypesRound1.js +52 -62
  109. package/dist/src/engine/opportunityMetadata/implementations/JsonAirdrop.js +1 -1
  110. package/dist/src/index.d.ts +23 -12
  111. package/dist/src/jobs/update-rpc-calls-cache.js +9 -4
  112. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +23 -12
  113. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +23 -12
  114. package/dist/src/modules/v4/opportunity/opportunity.service.js +2 -1
  115. package/dist/src/modules/v4/router.d.ts +23 -12
  116. package/dist/src/utils/decodeCalls.d.ts +1 -1
  117. package/dist/src/utils/decodeCalls.js +1 -1
  118. package/dist/src/utils/encodeCalls.d.ts +2 -2
  119. package/dist/src/utils/encodeCalls.js +15 -15
  120. package/dist/src/utils/generateCardName.d.ts +4 -3
  121. package/dist/src/utils/generateCardName.js +3 -3
  122. package/dist/tsconfig.package.tsbuildinfo +1 -1
  123. package/package.json +1 -1
  124. package/dist/src/engine/erc20SubTypeProcessors/implementations/processorMapping.d.ts +0 -6
  125. package/dist/src/engine/erc20SubTypeProcessors/subtypesPrices.d.ts +0 -4
  126. package/dist/src/engine/erc20SubTypeProcessors/subtypesPrices.js +0 -24
  127. package/dist/src/engine/erc20SubTypeProcessors/subtypesRound2.d.ts +0 -4
  128. package/dist/src/engine/erc20SubTypeProcessors/subtypesRound2.js +0 -22
  129. package/dist/src/engine/erc20SubTypeProcessors/subtypesRound3.d.ts +0 -3
  130. package/dist/src/engine/erc20SubTypeProcessors/subtypesRound3.js +0 -22
  131. package/dist/src/engine/erc20SubTypeProcessors/subtypesRound4.d.ts +0 -3
  132. package/dist/src/engine/erc20SubTypeProcessors/subtypesRound4.js +0 -22
  133. package/dist/src/utils/generateIcons.d.ts +0 -3
  134. package/dist/src/utils/generateIcons.js +0 -65
  135. /package/dist/src/engine/erc20SubTypeProcessors/{helpers/tokenType.js → constants.js} +0 -0
@@ -1,12 +1,12 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType, tokenTypeStruct } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
+ import type { tokenTypeStruct } from "../interface";
5
6
  type callType = {
6
7
  key: keyof dataRawMetamorpho;
7
8
  call: string;
8
9
  target: keyof callKeysMetamorpho;
9
- metaData?: keyof callKeysMetamorpho;
10
10
  };
11
11
  type callKeysMetamorpho = mandatoryCallKeys & {
12
12
  underlying: string;
@@ -11,7 +11,6 @@ export class MetamorphoProcessor extends GenericProcessor {
11
11
  ],
12
12
  round4: [{ key: "totalAssets", call: "totalAssets", target: "tokenAddress" }],
13
13
  };
14
- // override computeRound1(): void {}
15
14
  async processingRound5(_index, type, typeInfo, _calls, campaign, pricer) {
16
15
  const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
17
16
  const totalAssets = BN2Number(typeInfo.totalAssets, Number(typeInfo.decimalsUnderlyingToken));
@@ -24,7 +23,7 @@ export class MetamorphoProcessor extends GenericProcessor {
24
23
  whitelistedSupplyTargetToken,
25
24
  blacklistedSupply,
26
25
  priceTargetToken: underlyingTokenPrice,
27
- cardName: generateCardName(type, typeInfo, campaign),
26
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
28
27
  tokensDisplay: [{ symbol: typeInfo.symbolUnderlyingToken, address: typeInfo.underlying }],
29
28
  };
30
29
  }
@@ -1,12 +1,12 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import { tokenType, type tokenTypeStruct } from "../helpers/tokenType";
4
+ import { tokenType } from "../constants";
5
+ import type { tokenTypeStruct } from "../interface";
5
6
  type callType = {
6
7
  key: keyof dataRawNoLinkVault;
7
8
  call: string;
8
9
  target: keyof callKeysNoLinkVault;
9
- metaData?: keyof callKeysNoLinkVault;
10
10
  };
11
11
  type callKeysNoLinkVault = mandatoryCallKeys & {
12
12
  rateAccountant: string;
@@ -29,7 +29,6 @@ export declare class NoLinkVaultProcessor extends GenericProcessor<callKeysNoLin
29
29
  };
30
30
  processingRound1(typeInfo: dataRawNoLinkVault): void;
31
31
  processingRound5(index: number, type: tokenType, typeInfo: dataRawNoLinkVault, calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<dataTypeNoLinkVault>;
32
- computeRound1(type: tokenType, typeInfo: dataRawNoLinkVault): tokenTypeStruct;
33
32
  computeRound2(index: number, type: tokenType, typeInfo: dataRawNoLinkVault, calls: string[]): tokenTypeStruct;
34
33
  computeRound3(index: number, type: tokenType, typeInfo: dataRawNoLinkVault, calls: string[]): tokenTypeStruct;
35
34
  computeRound4(index: number, type: tokenType, typeInfo: dataRawNoLinkVault, calls: string[], campaign: CampaignParameters<Campaign.ERC20>): tokenTypeStruct;
@@ -1,7 +1,7 @@
1
1
  import { generateCardName } from "@/utils/generateCardName";
2
2
  import { BN2Number } from "@sdk";
3
3
  import { GenericProcessor } from "../GenericProcessor";
4
- import { tokenType } from "../helpers/tokenType";
4
+ import { tokenType } from "../constants";
5
5
  export class NoLinkVaultProcessor extends GenericProcessor {
6
6
  rounds = {
7
7
  round1: [],
@@ -25,7 +25,7 @@ export class NoLinkVaultProcessor extends GenericProcessor {
25
25
  typeInfo.protocol = "Unifi";
26
26
  typeInfo.rateAccountant = "0xe0bDb7b9225A2CeB42998dc2E51D4D3CDeb7e3Be";
27
27
  }
28
- if (typeInfo.type === tokenType.veda) {
28
+ if (this.type === tokenType.veda) {
29
29
  // To retrieve the rateAccountant, look at a transaction, find the teller, then find the accountant.
30
30
  if (typeInfo.tokenAddress === "0x08c6F91e2B681FaF5e17227F2a44C307b3C1364C")
31
31
  typeInfo.rateAccountant = "0xc315D6e14DDCDC7407784e2Caf815d131Bc1D3E7";
@@ -60,13 +60,10 @@ export class NoLinkVaultProcessor extends GenericProcessor {
60
60
  priceTargetToken,
61
61
  tvl,
62
62
  blacklistedSupply,
63
- cardName: generateCardName(type, typeInfo, campaign),
63
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
64
64
  tokensDisplay: [{ symbol: typeInfo.baseSymbol, address: typeInfo.base }],
65
65
  };
66
66
  }
67
- computeRound1(type, typeInfo) {
68
- return super.computeRound1(type, typeInfo);
69
- }
70
67
  computeRound2(index, type, typeInfo, calls) {
71
68
  return super.computeRound2(index, type, typeInfo, calls);
72
69
  }
@@ -1,12 +1,11 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import type { Campaign, CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawPendle;
7
7
  call: string;
8
8
  target: keyof callKeysPendle;
9
- metaData?: keyof callKeysPendle;
10
9
  };
11
10
  type callKeysPendle = mandatoryCallKeys & {
12
11
  SYToken: string;
@@ -22,7 +22,7 @@ export class PendleProcessor extends GenericProcessor {
22
22
  tvl,
23
23
  whitelistedSupplyTargetToken,
24
24
  priceTargetToken: priceTargetToken,
25
- cardName: generateCardName(type, typeInfo, campaign),
25
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
26
26
  blacklistedSupply,
27
27
  tokensDisplay: [{ symbol: typeInfo.symbolUnderlyingToken, address: typeInfo.underlying }],
28
28
  };
@@ -1,12 +1,11 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import type { Campaign, CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawPendleYT;
7
7
  call: string;
8
8
  target: keyof callKeysPendleYT;
9
- metaData?: keyof callKeysPendleYT;
10
9
  };
11
10
  type callKeysPendleYT = mandatoryCallKeys & {
12
11
  SYToken: string;
@@ -22,7 +22,7 @@ export class PendleYTProcessor extends GenericProcessor {
22
22
  tvl,
23
23
  whitelistedSupplyTargetToken,
24
24
  priceTargetToken: priceTargetToken,
25
- cardName: generateCardName(type, typeInfo, campaign),
25
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
26
26
  blacklistedSupply,
27
27
  tokensDisplay: [{ symbol: typeInfo.symbolUnderlyingToken, address: typeInfo.underlying }],
28
28
  };
@@ -1,12 +1,12 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType, tokenTypeStruct } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
+ import type { tokenTypeStruct } from "../interface";
5
6
  type callType = {
6
7
  key: keyof dataRawRadiant;
7
8
  call: string;
8
9
  target: keyof callKeysRadiant;
9
- metaData?: keyof callKeysRadiant;
10
10
  };
11
11
  type callKeysRadiant = mandatoryCallKeys & {
12
12
  underlyingToken: string;
@@ -11,7 +11,6 @@ export class RadiantProcessor extends GenericProcessor {
11
11
  round3: [],
12
12
  round4: [{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" }],
13
13
  };
14
- // override computeRound1(): void {}
15
14
  async processingRound5(_index, type, typeInfo, _calls, campaign, _pricer) {
16
15
  const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
17
16
  const priceTargetToken = BN2Number(typeInfo.priceBN, 8);
@@ -34,7 +33,7 @@ export class RadiantProcessor extends GenericProcessor {
34
33
  totalSupply,
35
34
  blacklistedSupply,
36
35
  tvl,
37
- cardName: generateCardName(type, typeInfo, campaign),
36
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
38
37
  symbolUnderlyingToken: finalSymbol,
39
38
  tokensDisplay: [{ symbol: typeInfo.symbolUnderlyingToken, address: typeInfo.underlyingToken }],
40
39
  };
@@ -1,12 +1,12 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawTemplate;
7
7
  call: string;
8
8
  target: keyof callKeysRfx;
9
- metaData?: keyof callKeysRfx;
9
+ callArgs?: keyof callKeysRfx;
10
10
  };
11
11
  type callKeysRfx = mandatoryCallKeys & {
12
12
  shortToken: string;
@@ -10,13 +10,13 @@ export class RfxProcessor extends GenericProcessor {
10
10
  key: "shortToken",
11
11
  call: "shortToken",
12
12
  target: "RFX_DATASTORE",
13
- metaData: "metaDataShort",
13
+ callArgs: "metaDataShort",
14
14
  },
15
15
  {
16
16
  key: "longToken",
17
17
  call: "longToken",
18
18
  target: "RFX_DATASTORE",
19
- metaData: "metaDataLong",
19
+ callArgs: "metaDataLong",
20
20
  },
21
21
  { key: "decimalsToken", call: "decimals", target: "tokenAddress" },
22
22
  ],
@@ -25,13 +25,12 @@ export class RfxProcessor extends GenericProcessor {
25
25
  { key: "symbolLongToken", call: "symbol", target: "longToken" },
26
26
  { key: "decimalsShortToken", call: "decimals", target: "shortToken" },
27
27
  { key: "decimalsLongToken", call: "decimals", target: "longToken" },
28
- { key: "balanceShortToken", call: "balanceOf", target: "shortToken", metaData: "tokenAddress" },
29
- { key: "balanceLongToken", call: "balanceOf", target: "longToken", metaData: "tokenAddress" },
28
+ { key: "balanceShortToken", call: "balanceOf", target: "shortToken", callArgs: "tokenAddress" },
29
+ { key: "balanceLongToken", call: "balanceOf", target: "longToken", callArgs: "tokenAddress" },
30
30
  ],
31
31
  round3: [],
32
32
  round4: [{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" }],
33
33
  };
34
- // override computeRound1(): void {}
35
34
  processingRound1(typeInfo) {
36
35
  const hexShortToken = ethers.utils.keccak256(ethers.utils.defaultAbiCoder.encode(["string"], ["SHORT_TOKEN"]));
37
36
  const hexLongToken = ethers.utils.keccak256(ethers.utils.defaultAbiCoder.encode(["string"], ["LONG_TOKEN"]));
@@ -57,7 +56,7 @@ export class RfxProcessor extends GenericProcessor {
57
56
  totalSupply,
58
57
  whitelistedSupplyTargetToken,
59
58
  blacklistedSupply,
60
- cardName: generateCardName(type, typeInfo, campaign),
59
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
61
60
  priceTargetToken: priceTargetToken, // Add the appropriate value here
62
61
  tvl,
63
62
  symbolShortToken: typeInfo.symbolShortToken,
@@ -1,12 +1,11 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import type { Campaign, CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawSatlayer;
7
7
  call: string;
8
8
  target: keyof callKeysSatlayer;
9
- metaData?: keyof callKeysSatlayer;
10
9
  };
11
10
  export type callKeysSatlayer = mandatoryCallKeys & {
12
11
  owner: string;
@@ -7,7 +7,6 @@ export class SatlayerProcessor extends GenericProcessor {
7
7
  round3: [],
8
8
  round4: [{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" }],
9
9
  };
10
- // // override computeRound1(): void {}
11
10
  async processingRound5(_index, type, typeInfo, _calls, campaign, pricer) {
12
11
  const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
13
12
  typeInfo.symbolUnderlyingToken = typeInfo.symbol.replace("sat", "");
@@ -19,7 +18,7 @@ export class SatlayerProcessor extends GenericProcessor {
19
18
  whitelistedSupplyTargetToken,
20
19
  tvl: tvl,
21
20
  priceTargetToken,
22
- cardName: generateCardName(type, typeInfo, campaign),
21
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
23
22
  blacklistedSupply,
24
23
  totalSupply,
25
24
  tokensDisplay: [{ symbol: typeInfo.symbolUnderlyingToken, address: typeInfo.underlying }],
@@ -1,12 +1,11 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import type { Campaign, CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawSpectra;
7
7
  call: string;
8
8
  target: keyof callKeysSpectra;
9
- metaData?: any;
10
9
  };
11
10
  type callKeysSpectra = mandatoryCallKeys & {
12
11
  tokenPrice: string;
@@ -35,7 +35,7 @@ export class SpectraProcessor extends GenericProcessor {
35
35
  whitelistedSupplyTargetToken,
36
36
  blacklistedSupply,
37
37
  priceTargetToken,
38
- cardName: generateCardName(type, typeInfo, campaign),
38
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
39
39
  tokensDisplay: [{ address: poolData.lpt.address }],
40
40
  };
41
41
  }
@@ -1,12 +1,11 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import type { Campaign, CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawSpectra;
7
7
  call: string;
8
8
  target: keyof callKeysSpectra;
9
- metaData?: any;
10
9
  };
11
10
  type callKeysSpectra = mandatoryCallKeys & {
12
11
  tokenPrice: string;
@@ -33,7 +33,7 @@ export class SpectraYTProcessor extends GenericProcessor {
33
33
  whitelistedSupplyTargetToken,
34
34
  blacklistedSupply,
35
35
  priceTargetToken,
36
- cardName: generateCardName(type, typeInfo, campaign),
36
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
37
37
  tokensDisplay: [{ address: poolData.yt.address }],
38
38
  };
39
39
  }
@@ -1,7 +1,8 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import type { Campaign, CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType, tokenTypeStruct } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
+ import type { tokenTypeStruct } from "../interface";
5
6
  type callKeysSplice = mandatoryCallKeys & {
6
7
  priceTargetToken: string;
7
8
  };
@@ -1,7 +1,6 @@
1
1
  import { GenericProcessor } from "../GenericProcessor";
2
2
  import { fetchSpliceInformation } from "../helpers/spliceTVL";
3
3
  export class SpliceProcessor extends GenericProcessor {
4
- // override computeRound1(): void {}
5
4
  async processingRound5(_index, _type, typeInfo, _calls, campaign, _pricer) {
6
5
  const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
7
6
  const { symbolUnderlyingToken, address, priceTargetToken, tvl } = await fetchSpliceInformation(campaign.campaignParameters.targetToken);
@@ -1,12 +1,11 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawSturdySilo;
7
7
  call: string;
8
8
  target: keyof callKeysSturdySilo;
9
- metaData?: keyof callKeysSturdySilo;
10
9
  };
11
10
  type callKeysSturdySilo = mandatoryCallKeys & {
12
11
  underlying: string;
@@ -16,7 +16,6 @@ export class SturdySiloProcessor extends GenericProcessor {
16
16
  round3: [],
17
17
  round4: [{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" }],
18
18
  };
19
- // override computeRound1(): void {}
20
19
  async processingRound5(_index, type, typeInfo, _calls, campaign, pricer) {
21
20
  const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
22
21
  const sharePrice = BN2Number(typeInfo.sharePrice, 18);
@@ -31,7 +30,7 @@ export class SturdySiloProcessor extends GenericProcessor {
31
30
  tvl,
32
31
  sharePrice,
33
32
  priceTargetToken,
34
- cardName: generateCardName(type, typeInfo, campaign),
33
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
35
34
  tokensDisplay: [{ symbol: typeInfo.symbolUnderlyingToken, address: typeInfo.underlying }],
36
35
  };
37
36
  }
@@ -1,12 +1,12 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import { tokenType, type tokenTypeStruct } from "../helpers/tokenType";
4
+ import { tokenType } from "../constants";
5
+ import type { tokenTypeStruct } from "../interface";
5
6
  type callType = {
6
7
  key: keyof dataRawTempest;
7
8
  call: string;
8
9
  target: keyof callKeysTempest;
9
- metaData?: keyof callKeysTempest;
10
10
  };
11
11
  type callKeysTempest = mandatoryCallKeys & {
12
12
  addressToken0: string;
@@ -1,7 +1,7 @@
1
1
  import { generateCardName } from "@/utils/generateCardName";
2
2
  import { BN2Number, NULL_ADDRESS } from "@sdk";
3
3
  import { GenericProcessor } from "../GenericProcessor";
4
- import { tokenType } from "../helpers/tokenType";
4
+ import { tokenType } from "../constants";
5
5
  export class TempestVaultProcessor extends GenericProcessor {
6
6
  rounds = {
7
7
  round1: [
@@ -69,7 +69,7 @@ export class TempestVaultProcessor extends GenericProcessor {
69
69
  return {
70
70
  ...rest,
71
71
  blacklistedSupply,
72
- cardName: generateCardName(type, typeInfo, campaign),
72
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
73
73
  priceTargetToken: priceTargetToken,
74
74
  totalSupply,
75
75
  tvl,
@@ -1,12 +1,12 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import type { Campaign, CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType, tokenTypeStruct } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
+ import type { tokenTypeStruct } from "../interface";
5
6
  type callType = {
6
7
  key: keyof dataRawTemplate;
7
8
  call: string;
8
9
  target: keyof callKeysTemplate;
9
- metaData?: keyof callKeysTemplate;
10
10
  };
11
11
  type callKeysTemplate = mandatoryCallKeys & {};
12
12
  type dataRawTemplate = callKeysTemplate & {};
@@ -23,7 +23,6 @@ export declare class TemplateProcessor extends GenericProcessor<callKeysTemplate
23
23
  processingRound3(typeInfo: dataRawTemplate): void;
24
24
  processingRound4(typeInfo: dataRawTemplate): void;
25
25
  processingRound5(index: number, type: tokenType, typeInfo: dataRawTemplate, calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<dataTypeTemplate>;
26
- computeRound1(type: tokenType, typeInfo: dataRawTemplate): tokenTypeStruct;
27
26
  computeRound2(index: number, type: tokenType, typeInfo: dataRawTemplate, calls: string[]): tokenTypeStruct;
28
27
  computeRound3(index: number, type: tokenType, typeInfo: dataRawTemplate, calls: string[]): tokenTypeStruct;
29
28
  computeRound4(index: number, type: tokenType, typeInfo: dataRawTemplate, calls: string[], campaign: CampaignParameters<Campaign.ERC20>): tokenTypeStruct;
@@ -6,7 +6,6 @@ export class TemplateProcessor extends GenericProcessor {
6
6
  round3: [],
7
7
  round4: [],
8
8
  };
9
- // override computeRound1(): void {}
10
9
  processingRound1(typeInfo) {
11
10
  super.processingRound1(typeInfo);
12
11
  }
@@ -22,9 +21,6 @@ export class TemplateProcessor extends GenericProcessor {
22
21
  async processingRound5(index, type, typeInfo, calls, campaign, pricer) {
23
22
  return super.processingRound5(index, type, typeInfo, calls, campaign, pricer);
24
23
  }
25
- computeRound1(type, typeInfo) {
26
- return super.computeRound1(type, typeInfo);
27
- }
28
24
  computeRound2(index, type, typeInfo, calls) {
29
25
  return super.computeRound2(index, type, typeInfo, calls);
30
26
  }
@@ -1,12 +1,11 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawToros;
7
7
  call: string;
8
8
  target: keyof callKeysToros;
9
- metaData?: any;
10
9
  };
11
10
  type callKeysToros = mandatoryCallKeys & {
12
11
  tokenPrice: string;
@@ -11,7 +11,6 @@ export class TorosProcessor extends GenericProcessor {
11
11
  { key: "tokenPrice", call: "tokenPrice", target: "tokenAddress" },
12
12
  ],
13
13
  };
14
- // override computeRound1(): void {}
15
14
  async processingRound5(_index, type, typeInfo, _calls, campaign, _pricer) {
16
15
  const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
17
16
  const priceTargetToken = BN2Number(typeInfo.tokenPrice, 18);
@@ -27,7 +26,7 @@ export class TorosProcessor extends GenericProcessor {
27
26
  blacklistedSupply,
28
27
  priceTargetToken,
29
28
  symbolUnderlyingToken,
30
- cardName: generateCardName(type, typeInfo, campaign),
29
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
31
30
  tokensDisplay: [{ symbol: symbolUnderlyingToken, address: typeInfo.tokenAddress }],
32
31
  };
33
32
  }
@@ -1,12 +1,13 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType, tokenTypeStruct } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
+ import type { tokenTypeStruct } from "../interface";
5
6
  type callType = {
6
7
  key: keyof dataRawUni;
7
8
  call: string;
8
9
  target: keyof callKeysUni;
9
- metaData?: keyof callKeysUni;
10
+ callArgs?: keyof callKeysUni;
10
11
  };
11
12
  type callKeysUni = mandatoryCallKeys & {
12
13
  token0: string;
@@ -13,8 +13,8 @@ export class UniswapProcessor extends GenericProcessor {
13
13
  { key: "symbolToken1", call: "symbol", target: "token1" },
14
14
  { key: "decimalsToken0", call: "decimals", target: "token0" },
15
15
  { key: "decimalsToken1", call: "decimals", target: "token1" },
16
- { key: "balanceToken0", call: "balanceOf", target: "token0", metaData: "tokenAddress" },
17
- { key: "balanceToken1", call: "balanceOf", target: "token1", metaData: "tokenAddress" },
16
+ { key: "balanceToken0", call: "balanceOf", target: "token0", callArgs: "tokenAddress" },
17
+ { key: "balanceToken1", call: "balanceOf", target: "token1", callArgs: "tokenAddress" },
18
18
  ],
19
19
  round3: [],
20
20
  round4: [{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" }],
@@ -58,7 +58,7 @@ export class UniswapProcessor extends GenericProcessor {
58
58
  whitelistedSupplyTargetToken,
59
59
  blacklistedSupply,
60
60
  tvl,
61
- cardName: generateCardName(type, typeInfo, campaign),
61
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
62
62
  decimalsToken0,
63
63
  decimalsToken1,
64
64
  balanceToken0,
@@ -1,12 +1,11 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import type { Campaign, CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawVicuna;
7
7
  call: string;
8
8
  target: keyof callKeysVicuna;
9
- metaData?: any;
10
9
  };
11
10
  type callKeysVicuna = mandatoryCallKeys & {
12
11
  tokenPrice: string;
@@ -29,7 +29,7 @@ export class VicunaProcessor extends GenericProcessor {
29
29
  whitelistedSupplyTargetToken,
30
30
  blacklistedSupply,
31
31
  priceTargetToken,
32
- cardName: generateCardName(type, typeInfo, campaign),
32
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
33
33
  tokensDisplay: [{ symbol: campaign.campaignParameters.symbolTargetToken, address: typeInfo.tokenAddress }],
34
34
  };
35
35
  }
@@ -1,12 +1,11 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawBeefy;
7
7
  call: string;
8
8
  target: keyof callKeysBeefy;
9
- metaData?: keyof callKeysBeefy;
10
9
  };
11
10
  type callKeysBeefy = mandatoryCallKeys & {
12
11
  decimalsToken: string;
@@ -15,7 +15,6 @@ export class WoofiProcessor extends GenericProcessor {
15
15
  round3: [],
16
16
  round4: [],
17
17
  };
18
- // override computeRound1(): void {}
19
18
  async processingRound5(index, type, typeInfo, calls, campaign, pricer) {
20
19
  const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
21
20
  const priceToken = (await pricer.get({ symbol: typeInfo.symbolUnderlyingToken })) ?? 0;
@@ -32,7 +31,7 @@ export class WoofiProcessor extends GenericProcessor {
32
31
  totalSupply,
33
32
  whitelistedSupplyTargetToken,
34
33
  blacklistedSupply,
35
- cardName: generateCardName(type, typeInfo, campaign),
34
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
36
35
  pricePerShare,
37
36
  tvl,
38
37
  tokensDisplay: [{ symbol: typeInfo.symbolUnderlyingToken, address: typeInfo.underlying }],
@@ -1,12 +1,12 @@
1
1
  import type { Pricer } from "@/utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
3
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "../GenericProcessor";
4
- import type { tokenType } from "../helpers/tokenType";
4
+ import type { tokenType } from "../constants";
5
5
  type callType = {
6
6
  key: keyof dataRawzkSwapThreePool;
7
7
  call: string;
8
8
  target: keyof callKeysZkswapThreePool;
9
- metaData?: keyof callKeysZkswapThreePool;
9
+ callArgs?: keyof callKeysZkswapThreePool;
10
10
  };
11
11
  type callKeysZkswapThreePool = mandatoryCallKeys & {
12
12
  balances: string;
@@ -5,12 +5,12 @@ export class ZkSwapThreePoolProcessor extends GenericProcessor {
5
5
  rounds = {
6
6
  round1: [{ key: "pool", call: "minter", target: "tokenAddress" }],
7
7
  round2: [
8
- { key: "token0Address", call: "coins", target: "pool", metaData: "token0Index" },
9
- { key: "balance0", call: "balances", target: "pool", metaData: "token0Index" },
10
- { key: "token1Address", call: "coins", target: "pool", metaData: "token1Index" },
11
- { key: "balance1", call: "balances", target: "pool", metaData: "token1Index" },
12
- { key: "token2Address", call: "coins", target: "pool", metaData: "token2Index" },
13
- { key: "balance2", call: "balances", target: "pool", metaData: "token2Index" },
8
+ { key: "token0Address", call: "coins", target: "pool", callArgs: "token0Index" },
9
+ { key: "balance0", call: "balances", target: "pool", callArgs: "token0Index" },
10
+ { key: "token1Address", call: "coins", target: "pool", callArgs: "token1Index" },
11
+ { key: "balance1", call: "balances", target: "pool", callArgs: "token1Index" },
12
+ { key: "token2Address", call: "coins", target: "pool", callArgs: "token2Index" },
13
+ { key: "balance2", call: "balances", target: "pool", callArgs: "token2Index" },
14
14
  ],
15
15
  round3: [
16
16
  { key: "symbolToken0", call: "symbol", target: "token0Address" },
@@ -45,7 +45,7 @@ export class ZkSwapThreePoolProcessor extends GenericProcessor {
45
45
  return {
46
46
  ...rest,
47
47
  blacklistedSupply,
48
- cardName: generateCardName(type, typeInfo, campaign),
48
+ cardName: generateCardName(type, this.isStaking, typeInfo, campaign),
49
49
  priceTargetToken: priceTargetToken,
50
50
  totalSupply,
51
51
  tvl,