@merkl/api 0.10.199 → 0.10.200

Sign up to get free protection for your applications and to get access to all the features.
Files changed (215) hide show
  1. package/dist/src/eden/index.d.ts +2 -6398
  2. package/dist/src/errors/HttpError.d.ts +5 -0
  3. package/dist/src/errors/HttpError.js +6 -0
  4. package/dist/src/errors/NotFound.error.d.ts +4 -0
  5. package/dist/src/errors/NotFound.error.js +5 -0
  6. package/dist/src/index.d.ts +1 -2464
  7. package/dist/src/index.js +56 -7
  8. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicData.js +15 -22
  9. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/factoryFinder.js +1 -0
  10. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.d.ts +3 -1
  11. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +8 -0
  12. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/GammaProcessor.d.ts +43 -0
  13. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/GammaProcessor.js +63 -0
  14. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/GenericProcessor.d.ts +3 -3
  15. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/GenericProcessor.js +3 -1
  16. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/NoLinkVaultProcessor.d.ts +36 -0
  17. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/NoLinkVaultProcessor.js +51 -0
  18. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/StakingProcessor.d.ts +0 -1
  19. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/StakingProcessor.js +15 -7
  20. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/processorMapping.js +4 -0
  21. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesPrices.d.ts +1 -1
  22. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesPrices.js +13 -572
  23. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1.d.ts +2 -21
  24. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1.js +197 -1174
  25. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2.d.ts +1 -5
  26. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2.js +11 -634
  27. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound3.d.ts +1 -4
  28. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound3.js +10 -380
  29. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound4.d.ts +3 -3
  30. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound4.js +11 -312
  31. package/dist/src/libs/campaigns/campaignTypes/EulerDynamicData.js +8 -8
  32. package/dist/src/libs/campaigns/campaignTypes/RadiantDynamicData.js +3 -4
  33. package/dist/src/libs/campaigns/campaignsDynamicData.js +0 -5
  34. package/dist/src/modules/v4/accounting/accounting.controller.js +1 -1
  35. package/dist/src/modules/v4/apr/apr.model.d.ts +26 -0
  36. package/dist/src/modules/v4/apr/apr.model.js +15 -1
  37. package/dist/src/modules/v4/blacklist/blacklist.controller.js +1 -1
  38. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +4 -4
  39. package/dist/src/modules/v4/campaign/campaign.controller.js +14 -4
  40. package/dist/src/modules/v4/campaign/campaign.model.d.ts +50 -5
  41. package/dist/src/modules/v4/campaign/campaign.model.js +47 -13
  42. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +2 -2
  43. package/dist/src/modules/v4/campaign/campaign.service.d.ts +2 -2
  44. package/dist/src/modules/v4/chain/chain.controller.d.ts +2 -2
  45. package/dist/src/modules/v4/chain/chain.controller.js +7 -2
  46. package/dist/src/modules/v4/chain/chain.model.d.ts +6 -1
  47. package/dist/src/modules/v4/chain/chain.model.js +8 -1
  48. package/dist/src/modules/v4/chain/chain.repository.js +1 -1
  49. package/dist/src/modules/v4/claims/claims.controller.js +1 -1
  50. package/dist/src/modules/v4/dynamicData/dynamicData.controller.js +4 -1
  51. package/dist/src/modules/v4/enso/enso.model.d.ts +1 -1
  52. package/dist/src/modules/v4/enso/enso.model.js +2 -1
  53. package/dist/src/modules/v4/enso/enso.service.d.ts +0 -1
  54. package/dist/src/modules/v4/enso/enso.service.js +4 -4
  55. package/dist/src/modules/v4/interaction/interaction.controller.d.ts +26 -17
  56. package/dist/src/modules/v4/interaction/interaction.controller.js +19 -28
  57. package/dist/src/modules/v4/interaction/interaction.model.d.ts +17 -5
  58. package/dist/src/modules/v4/interaction/interaction.model.js +3 -3
  59. package/dist/src/modules/v4/interaction/interaction.service.d.ts +18 -3
  60. package/dist/src/modules/v4/interaction/interaction.service.js +89 -11
  61. package/dist/src/modules/v4/kyberzap/kyberzap.model.d.ts +72 -0
  62. package/dist/src/modules/v4/kyberzap/kyberzap.model.js +79 -0
  63. package/dist/src/modules/v4/kyberzap/kyberzap.service.d.ts +15 -0
  64. package/dist/src/modules/v4/kyberzap/kyberzap.service.js +84 -0
  65. package/dist/src/modules/v4/liquidity/liquidity.controller.js +1 -1
  66. package/dist/src/modules/v4/merklRoot/merklRoot.controller.js +1 -1
  67. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +224 -213
  68. package/dist/src/modules/v4/opportunity/opportunity.controller.js +39 -10
  69. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +252 -22
  70. package/dist/src/modules/v4/opportunity/opportunity.model.js +58 -15
  71. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +11 -11
  72. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +12 -232
  73. package/dist/src/modules/v4/opportunity/opportunity.service.js +0 -32
  74. package/dist/src/modules/v4/price/price.controller.js +1 -1
  75. package/dist/src/modules/v4/protocol/protocol.controller.d.ts +23 -24
  76. package/dist/src/modules/v4/protocol/protocol.controller.js +15 -9
  77. package/dist/src/modules/v4/protocol/protocol.model.d.ts +13 -1
  78. package/dist/src/modules/v4/protocol/protocol.model.js +12 -8
  79. package/dist/src/modules/v4/reward/reward.controller.js +1 -1
  80. package/dist/src/modules/v4/reward/reward.model.d.ts +44 -1
  81. package/dist/src/modules/v4/reward/reward.model.js +15 -0
  82. package/dist/src/modules/v4/reward/reward.repository.d.ts +2 -2
  83. package/dist/src/modules/v4/reward/reward.service.d.ts +11 -11
  84. package/dist/src/modules/v4/reward/reward.service.js +1 -1
  85. package/dist/src/modules/v4/router.d.ts +287 -268
  86. package/dist/src/modules/v4/status/status.controller.js +2 -3
  87. package/dist/src/modules/v4/status/status.model.d.ts +12 -0
  88. package/dist/src/modules/v4/status/status.model.js +12 -0
  89. package/dist/src/modules/v4/token/token.controller.d.ts +4 -4
  90. package/dist/src/modules/v4/token/token.controller.js +1 -1
  91. package/dist/src/modules/v4/token/token.model.d.ts +12 -0
  92. package/dist/src/modules/v4/token/token.model.js +12 -0
  93. package/dist/src/modules/v4/token/token.repository.d.ts +2 -2
  94. package/dist/src/modules/v4/token/token.service.d.ts +7 -7
  95. package/dist/src/modules/v4/tvl/tvl.model.d.ts +24 -0
  96. package/dist/src/modules/v4/tvl/tvl.model.js +15 -1
  97. package/dist/src/modules/v4/uniswapV4/uniswapV4.controller.d.ts +1 -1
  98. package/dist/src/modules/v4/uniswapV4/uniswapV4.controller.js +9 -8
  99. package/dist/src/modules/v4/user/user.controller.d.ts +4 -4
  100. package/dist/src/modules/v4/user/user.controller.js +20 -17
  101. package/dist/src/modules/v4/user/user.model.d.ts +30 -0
  102. package/dist/src/modules/v4/user/user.model.js +27 -0
  103. package/dist/src/modules/v4/zyfi/zyfi.model.d.ts +45 -0
  104. package/dist/src/modules/v4/zyfi/zyfi.model.js +1 -0
  105. package/dist/src/modules/v4/zyfi/zyfi.service.d.ts +30 -0
  106. package/dist/src/modules/v4/zyfi/zyfi.service.js +35 -0
  107. package/dist/src/plugins/error-handling.plugin.d.ts +2 -2
  108. package/dist/src/plugins/error-handling.plugin.js +9 -3
  109. package/dist/src/plugins/logger.plugin.js +1 -20
  110. package/dist/src/routes/v1/allowances.d.ts +1 -1
  111. package/dist/src/routes/v1/allowances.js +1 -1
  112. package/dist/src/routes/v1/balances.d.ts +1 -1
  113. package/dist/src/routes/v1/balances.js +1 -1
  114. package/dist/src/routes/v1/prices.d.ts +1 -1
  115. package/dist/src/routes/v1/prices.js +1 -1
  116. package/dist/src/routes/v1/router.d.ts +102 -0
  117. package/dist/src/routes/v1/router.js +6 -0
  118. package/dist/src/routes/v1/tokens.d.ts +1 -1
  119. package/dist/src/routes/v1/tokens.js +1 -1
  120. package/dist/src/routes/v2/merkl.d.ts +5 -5
  121. package/dist/src/routes/v2/merkl.js +1 -1
  122. package/dist/src/routes/v2/router.d.ts +46 -0
  123. package/dist/src/routes/v2/router.js +3 -0
  124. package/dist/src/routes/v3/app.d.ts +1 -1
  125. package/dist/src/routes/v3/app.js +1 -1
  126. package/dist/src/routes/v3/blacklist.d.ts +1 -2479
  127. package/dist/src/routes/v3/blacklist.js +1 -1
  128. package/dist/src/routes/v3/campaignClaims.d.ts +1 -1
  129. package/dist/src/routes/v3/campaignClaims.js +1 -1
  130. package/dist/src/routes/v3/campaignReport.d.ts +1 -1
  131. package/dist/src/routes/v3/campaignReport.js +1 -1
  132. package/dist/src/routes/v3/campaignUnclaimed.d.ts +1 -1
  133. package/dist/src/routes/v3/campaignUnclaimed.js +1 -1
  134. package/dist/src/routes/v3/campaigns.d.ts +1 -2483
  135. package/dist/src/routes/v3/campaigns.js +1 -1
  136. package/dist/src/routes/v3/campaignsForMainParameter.d.ts +1 -1
  137. package/dist/src/routes/v3/campaignsForMainParameter.js +1 -1
  138. package/dist/src/routes/v3/campaignsInfo.d.ts +1 -2481
  139. package/dist/src/routes/v3/campaignsInfo.js +1 -1
  140. package/dist/src/routes/v3/campaignsRewardsReport.d.ts +1 -1
  141. package/dist/src/routes/v3/campaignsRewardsReport.js +1 -1
  142. package/dist/src/routes/v3/claims.d.ts +1 -1
  143. package/dist/src/routes/v3/claims.js +1 -1
  144. package/dist/src/routes/v3/compoundV2.d.ts +1 -1
  145. package/dist/src/routes/v3/compoundV2.js +1 -1
  146. package/dist/src/routes/v3/createCampaign.d.ts +1 -1
  147. package/dist/src/routes/v3/createCampaign.js +1 -1
  148. package/dist/src/routes/v3/dolomite.d.ts +1 -1
  149. package/dist/src/routes/v3/dolomite.js +1 -1
  150. package/dist/src/routes/v3/euler.d.ts +1 -1
  151. package/dist/src/routes/v3/euler.js +1 -1
  152. package/dist/src/routes/v3/fetch.d.ts +1 -1
  153. package/dist/src/routes/v3/fetch.js +1 -1
  154. package/dist/src/routes/v3/health.d.ts +1 -1
  155. package/dist/src/routes/v3/health.js +1 -1
  156. package/dist/src/routes/v3/lostyield.d.ts +1 -1
  157. package/dist/src/routes/v3/lostyield.js +1 -1
  158. package/dist/src/routes/v3/merkl.d.ts +1 -1
  159. package/dist/src/routes/v3/merkl.js +1 -1
  160. package/dist/src/routes/v3/morphoMarkets.d.ts +1 -1
  161. package/dist/src/routes/v3/morphoMarkets.js +1 -1
  162. package/dist/src/routes/v3/morphoVaults.d.ts +1 -1
  163. package/dist/src/routes/v3/morphoVaults.js +1 -1
  164. package/dist/src/routes/v3/multiChainPositions.d.ts +1 -2480
  165. package/dist/src/routes/v3/multiChainPositions.js +1 -1
  166. package/dist/src/routes/v3/opportunity.d.ts +1 -2483
  167. package/dist/src/routes/v3/opportunity.js +1 -1
  168. package/dist/src/routes/v3/overview.d.ts +1 -1
  169. package/dist/src/routes/v3/overview.js +1 -1
  170. package/dist/src/routes/v3/parse.d.ts +1 -1
  171. package/dist/src/routes/v3/parse.js +1 -1
  172. package/dist/src/routes/v3/payload.d.ts +1 -1
  173. package/dist/src/routes/v3/payload.js +1 -1
  174. package/dist/src/routes/v3/poolInfo.js +1 -1
  175. package/dist/src/routes/v3/positions.d.ts +1 -2479
  176. package/dist/src/routes/v3/positions.js +1 -1
  177. package/dist/src/routes/v3/radiant.d.ts +1 -1
  178. package/dist/src/routes/v3/radiant.js +1 -1
  179. package/dist/src/routes/v3/recipients.d.ts +1 -1
  180. package/dist/src/routes/v3/recipients.js +1 -1
  181. package/dist/src/routes/v3/rewards.d.ts +1 -2508
  182. package/dist/src/routes/v3/rewards.js +1 -1
  183. package/dist/src/routes/v3/rewardsReport.d.ts +1 -1
  184. package/dist/src/routes/v3/rewardsReport.js +1 -1
  185. package/dist/src/routes/v3/router.d.ts +1 -0
  186. package/dist/src/routes/v3/router.js +74 -0
  187. package/dist/src/routes/v3/silo.d.ts +1 -1
  188. package/dist/src/routes/v3/silo.js +1 -1
  189. package/dist/src/routes/v3/token.d.ts +1 -1
  190. package/dist/src/routes/v3/token.js +1 -1
  191. package/dist/src/routes/v3/tokenUnclaimed.d.ts +1 -1
  192. package/dist/src/routes/v3/tokenUnclaimed.js +1 -1
  193. package/dist/src/routes/v3/updates.d.ts +1 -2483
  194. package/dist/src/routes/v3/updates.js +1 -1
  195. package/dist/src/routes/v3/userRewards.d.ts +1 -2499
  196. package/dist/src/routes/v3/userRewards.js +1 -1
  197. package/dist/src/utils/decodeCalls.js +12 -1
  198. package/dist/src/utils/encodeCalls.js +26 -3
  199. package/dist/src/utils/generateCardName.js +2 -0
  200. package/dist/tsconfig.package.tsbuildinfo +1 -1
  201. package/package.json +2 -3
  202. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicDataRefacto.d.ts +0 -3
  203. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicDataRefacto.js +0 -155
  204. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesPricesRefactoFinal.d.ts +0 -4
  205. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesPricesRefactoFinal.js +0 -24
  206. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1RefactoFinal.d.ts +0 -4
  207. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1RefactoFinal.js +0 -230
  208. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2RefactoFinal.d.ts +0 -3
  209. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2RefactoFinal.js +0 -22
  210. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound3RefactoFinal.d.ts +0 -3
  211. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound3RefactoFinal.js +0 -22
  212. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound4RefactoFinal.d.ts +0 -4
  213. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound4RefactoFinal.js +0 -22
  214. package/dist/src/libs/campaigns/campaignsDynamicDataRefacto.d.ts +0 -3
  215. package/dist/src/libs/campaigns/campaignsDynamicDataRefacto.js +0 -75
package/dist/src/index.js CHANGED
@@ -2,9 +2,11 @@ import { cors } from "@elysiajs/cors";
2
2
  import { swagger } from "@elysiajs/swagger";
3
3
  import axios from "axios";
4
4
  import { Elysia } from "elysia";
5
- import { autoroutes } from "elysia-autoroutes";
6
5
  import { redisClient } from "./cache/redis";
7
6
  import { v4 } from "./modules/v4/router";
7
+ import { v1 } from "./routes/v1/router";
8
+ import { v2 } from "./routes/v2/router";
9
+ import { v3 } from "./routes/v3/router";
8
10
  import { errorHandler } from "./utils/error";
9
11
  import { log } from "./utils/logger";
10
12
  import { apiDbClient, engineDbClient } from "./utils/prisma";
@@ -18,13 +20,17 @@ const app = new Elysia({
18
20
  },
19
21
  })
20
22
  .use(swagger({
23
+ scalarConfig: {
24
+ theme: "kepler",
25
+ darkMode: true,
26
+ },
21
27
  documentation: {
22
28
  info: {
23
29
  contact: {
24
30
  email: "contact@merkl.money",
25
31
  name: "Angle Labs",
26
32
  },
27
- description: "API to access data related to Merkl campaigns, built and maintained by Angle Labs. This API is provided as is, without any warranty of any kind.",
33
+ description: "The official API to access data related to Merkl campaigns, built and maintained by Angle Labs. This API is provided as is, without any warranty of any kind.",
28
34
  license: {
29
35
  name: "UNLICENSED",
30
36
  },
@@ -32,15 +38,58 @@ const app = new Elysia({
32
38
  version: "1.0.1",
33
39
  },
34
40
  },
35
- exclude: [/engine\/*/, /v1\/.*/, /v2\/.*/, /v3\/.*/, "/"],
41
+ exclude: [/v4\/.*/, "/"],
42
+ }))
43
+ .use(swagger({
44
+ path: "/v4/docs",
45
+ scalarConfig: {
46
+ theme: "kepler",
47
+ darkMode: true,
48
+ },
49
+ documentation: {
50
+ tags: [
51
+ {
52
+ name: "Opportunities",
53
+ description: "An opportunity represents a collection of campaigns.",
54
+ },
55
+ {
56
+ name: "Campaigns",
57
+ description: "Campaigns are designed to incentivize participation in a protocol by offering rewards to users for specific behaviors or actions.",
58
+ },
59
+ {
60
+ name: "Protocols",
61
+ description: "Endpoints related to protocols integrated by Merkl.",
62
+ },
63
+ {
64
+ name: "Chains",
65
+ description: "Endpoints related to chains integrated by Merkl.",
66
+ },
67
+ {
68
+ name: "Users",
69
+ description: "Endpoints related to Merkl users.",
70
+ },
71
+ ],
72
+ info: {
73
+ contact: {
74
+ email: "contact@merkl.money",
75
+ name: "Angle Labs",
76
+ },
77
+ description: "The official API to access data related to Merkl campaigns, built and maintained by Angle Labs. This API is provided as is, without any warranty of any kind.",
78
+ license: {
79
+ name: "UNLICENSED",
80
+ },
81
+ title: "Merkl API",
82
+ version: "1.0.1",
83
+ },
84
+ },
85
+ exclude: [/engine\/*/, /v1\/.*/, /v2\/.*/, /v3\/.*/, "/", /swagger\/*/],
36
86
  }))
37
87
  .use(cors())
38
88
  .get("/", () => "Merkl API")
89
+ .use(v1)
90
+ .use(v2)
91
+ .use(v3)
39
92
  .use(v4)
40
- .use(autoroutes({
41
- routesDir: `${import.meta.dir}/routes`,
42
- generateTags: false,
43
- }))
44
93
  .use(errorHandler())
45
94
  .listen(PORT, ({ hostname, port }) => {
46
95
  log.info(`🌐 Api started (${hostname}:${port})`);
@@ -1,12 +1,12 @@
1
1
  import { merklChainDataWithCache } from "../../merklChainData";
2
- import { BN2Number, ERC20Interface, YEAR, } from "@sdk";
2
+ import { BN2Number, BalancerPoolInterface, ERC20Interface, EnzymeInterface, FactoryInterface, MetamorphoInterface, YEAR, } from "@sdk";
3
3
  import { batchMulticallCallWithRetry } from "../../../utils/generic";
4
4
  import { Pricer } from "../../../utils/pricer";
5
5
  import { getLastEligibilityRatio } from "../utils/getLastEligibilityRatio";
6
6
  import { tokenType } from "./ERC20SubTypes/helpers/tokenType";
7
7
  import { getTokenPricesInfo } from "./ERC20SubTypes/subtypesPrices";
8
- import { enzymeInterface, factoryInterface, getTokenTypeRound1, metamorphoInterface, } from "./ERC20SubTypes/subtypesRound1";
9
- import { balancerPoolInterface, getTokenTypeRound2 } from "./ERC20SubTypes/subtypesRound2";
8
+ import { getTokenTypeRound1 } from "./ERC20SubTypes/subtypesRound1";
9
+ import { getTokenTypeRound2 } from "./ERC20SubTypes/subtypesRound2";
10
10
  import { getTokenTypeRound3 } from "./ERC20SubTypes/subtypesRound3";
11
11
  import { getTokenTypeRound4 } from "./ERC20SubTypes/subtypesRound4";
12
12
  export async function ERC20DynamicData(chainId, campaigns) {
@@ -31,27 +31,23 @@ export async function ERC20DynamicData(chainId, campaigns) {
31
31
  }
32
32
  callsRounds1.push({
33
33
  allowFailure: true,
34
- callData: factoryInterface.encodeFunctionData("factory"),
34
+ callData: FactoryInterface.encodeFunctionData("factory"),
35
35
  target: campaign.campaignParameters.targetToken,
36
- });
37
- callsRounds1.push({
36
+ }, {
38
37
  allowFailure: true,
39
- callData: metamorphoInterface.encodeFunctionData("MORPHO"),
38
+ callData: MetamorphoInterface.encodeFunctionData("MORPHO"),
40
39
  target: campaign.campaignParameters.targetToken,
41
- });
42
- callsRounds1.push({
40
+ }, {
43
41
  allowFailure: true,
44
42
  callData: ERC20Interface.encodeFunctionData("name"),
45
43
  target: campaign.campaignParameters.targetToken,
46
- });
47
- callsRounds1.push({
44
+ }, {
48
45
  allowFailure: true,
49
- callData: balancerPoolInterface.encodeFunctionData("getPoolId"),
46
+ callData: BalancerPoolInterface.encodeFunctionData("getPoolId"),
50
47
  target: campaign.campaignParameters.targetToken,
51
- });
52
- callsRounds1.push({
48
+ }, {
53
49
  allowFailure: true,
54
- callData: enzymeInterface.encodeFunctionData("getCreator"),
50
+ callData: EnzymeInterface.encodeFunctionData("getCreator"),
55
51
  target: campaign.campaignParameters.targetToken,
56
52
  });
57
53
  }
@@ -68,7 +64,7 @@ export async function ERC20DynamicData(chainId, campaigns) {
68
64
  calls: [],
69
65
  typeInfo: {},
70
66
  };
71
- typeStruct = getTokenTypeRound1(resultRound1, campaign.campaignParameters.targetToken, i);
67
+ typeStruct = getTokenTypeRound1(resultRound1, campaign.campaignParameters.targetToken, i, campaign);
72
68
  i += 5;
73
69
  tokenTypesByCampaign[campaign.campaignId] = typeStruct;
74
70
  callsRounds2.push(...typeStruct.calls);
@@ -128,12 +124,9 @@ export async function ERC20DynamicData(chainId, campaigns) {
128
124
  const callsForCampaign = tokenTypesByCampaign[campaign.campaignId].calls.length;
129
125
  tokenTypesByCampaign[campaign.campaignId] = await getTokenPricesInfo(i, tokenTypesByCampaign[campaign.campaignId].type, tokenTypesByCampaign[campaign.campaignId].typeInfo, result, campaign, pricer);
130
126
  i += callsForCampaign;
131
- const totalSupplyTargetToken = tokenTypesByCampaign[campaign.campaignId].typeInfo.totalSupply;
132
- let whitelistedSupplyTargetToken = totalSupplyTargetToken - tokenTypesByCampaign[campaign.campaignId].typeInfo.blacklistedSupply;
127
+ const whitelistedSupplyTargetToken = tokenTypesByCampaign[campaign.campaignId].typeInfo.whitelistedSupplyTargetToken;
128
+ const totalSupplyTargetToken = whitelistedSupplyTargetToken;
133
129
  const priceTargetToken = tokenTypesByCampaign[campaign.campaignId].typeInfo.priceTargetToken;
134
- if (whitelistedSupplyTargetToken === 0) {
135
- whitelistedSupplyTargetToken = 0.00001;
136
- }
137
130
  let lastEligibilityRatio = 1;
138
131
  if (!!campaign.campaignParameters.hooks?.length) {
139
132
  lastEligibilityRatio = await getLastEligibilityRatio(campaign, chainId, currentRoot, []);
@@ -148,7 +141,7 @@ export async function ERC20DynamicData(chainId, campaigns) {
148
141
  campaign.campaignParameters.duration /
149
142
  (whitelistedSupplyTargetToken * priceTargetToken),
150
143
  totalSupplyTargetToken,
151
- tvl: totalSupplyTargetToken * priceTargetToken,
144
+ tvl: whitelistedSupplyTargetToken * priceTargetToken,
152
145
  type: tokenTypesByCampaign[campaign.campaignId].type,
153
146
  typeInfo: tokenTypesByCampaign[campaign.campaignId].typeInfo,
154
147
  priceRewardToken: priceRewardToken,
@@ -18,6 +18,7 @@ const factoryAddresses = {
18
18
  "0x35A338522a435D46f77Be32C70E215B813D0e3aC": tokenType.pendleYT, // Pendle YT Factory
19
19
  "0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73": tokenType.pancakeswap, // PancakeSwap Factory BNB
20
20
  "0x70ee0A6DB4F5a2Dc4d9c0b57bE97B9987e75BAFD": tokenType.pendleYT, // Pendle YT Factory
21
+ "0xFD513630F697A9C1731F196185fb9ebA6eAAc20B": tokenType.cpmmGamma, // CPMMGAMMA Factory
21
22
  };
22
23
  export function getTypeFromFactoryAddress(address) {
23
24
  if (factoryAddresses[address]) {
@@ -58,7 +58,9 @@ export declare enum tokenType {
58
58
  pancakeswap = "pancakeswap",
59
59
  tempestStaking = "tempestStaking",
60
60
  holdstation = "holdstation",
61
- staking = "staking"
61
+ staking = "staking",
62
+ noLinkVault = "noLinkVault",
63
+ cpmmGamma = "cpmmGamma"
62
64
  }
63
65
  export declare const tokenTypeToProtocol: {
64
66
  [key in tokenType]: {
@@ -60,6 +60,8 @@ export var tokenType;
60
60
  tokenType["tempestStaking"] = "tempestStaking";
61
61
  tokenType["holdstation"] = "holdstation";
62
62
  tokenType["staking"] = "staking";
63
+ tokenType["noLinkVault"] = "noLinkVault";
64
+ tokenType["cpmmGamma"] = "cpmmGamma";
63
65
  })(tokenType || (tokenType = {}));
64
66
  export const tokenTypeToProtocol = {
65
67
  [tokenType.aave_borrowing]: { protocol: "Aave" },
@@ -143,4 +145,10 @@ export const tokenTypeToProtocol = {
143
145
  [tokenType.staking]: {
144
146
  protocol: "Staking",
145
147
  },
148
+ [tokenType.noLinkVault]: {
149
+ protocol: "NoLinkVault",
150
+ },
151
+ [tokenType.cpmmGamma]: {
152
+ protocol: "GammaSwap",
153
+ },
146
154
  };
@@ -0,0 +1,43 @@
1
+ import type { Pricer } from "../../../../../utils/pricer";
2
+ import { type Campaign, type CampaignParameters } from "@sdk";
3
+ import type { tokenType, tokenTypeStruct } from "../helpers/tokenType";
4
+ import { GenericProcessor, type dataType, type mandatoryCallKeys } from "./GenericProcessor";
5
+ type callType = {
6
+ key: keyof dataRawGamma;
7
+ call: string;
8
+ target: keyof callKeysGamma;
9
+ metaData?: keyof callKeysGamma;
10
+ };
11
+ type callKeysGamma = mandatoryCallKeys & {
12
+ token0: string;
13
+ token1: string;
14
+ CFMMPrice: string;
15
+ cfmm: string;
16
+ };
17
+ type dataRawGamma = callKeysGamma & {
18
+ tokensRaw: string[];
19
+ tokenBalances: string[];
20
+ symbolToken0: string;
21
+ symbolToken1: string;
22
+ decimalsToken0: string;
23
+ decimalsToken1: string;
24
+ balanceToken0: string;
25
+ balanceToken1: string;
26
+ };
27
+ type dataTypeGamma = dataType & {};
28
+ export declare class GammaProcessor extends GenericProcessor<callKeysGamma, dataRawGamma, dataTypeGamma> {
29
+ rounds: {
30
+ round1: callType[];
31
+ round2: callType[];
32
+ round3: callType[];
33
+ round4: callType[];
34
+ };
35
+ processingRound2(typeInfo: dataRawGamma): void;
36
+ processingRound5(index: number, type: tokenType, typeInfo: dataRawGamma, calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<dataTypeGamma>;
37
+ computeRound1(type: tokenType, typeInfo: dataRawGamma): tokenTypeStruct;
38
+ computeRound2(index: number, type: tokenType, typeInfo: dataRawGamma, calls: string[]): tokenTypeStruct;
39
+ computeRound3(index: number, type: tokenType, typeInfo: dataRawGamma, calls: string[]): tokenTypeStruct;
40
+ computeRound4(index: number, type: tokenType, typeInfo: dataRawGamma, calls: string[], campaign: CampaignParameters<Campaign.ERC20>): tokenTypeStruct;
41
+ computeRound5(index: number, type: tokenType, typeInfo: dataRawGamma, calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<tokenTypeStruct>;
42
+ }
43
+ export {};
@@ -0,0 +1,63 @@
1
+ import { generateCardName } from "../../../../../utils/generateCardName";
2
+ import { BN2Number } from "@sdk";
3
+ import { GenericProcessor } from "./GenericProcessor";
4
+ export class GammaProcessor extends GenericProcessor {
5
+ rounds = {
6
+ round1: [
7
+ { key: "tokensRaw", call: "tokensRaw", target: "tokenAddress" },
8
+ { key: "tokenBalances", call: "tokenBalances", target: "tokenAddress" },
9
+ ],
10
+ round2: [
11
+ { key: "symbolToken0", call: "symbol", target: "token0" },
12
+ { key: "symbolToken1", call: "symbol", target: "token1" },
13
+ { key: "decimalsToken0", call: "decimals", target: "token0" },
14
+ { key: "decimalsToken1", call: "decimals", target: "token1" },
15
+ ],
16
+ round3: [],
17
+ round4: [{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" }],
18
+ };
19
+ processingRound2(typeInfo) {
20
+ typeInfo.token0 = typeInfo.tokensRaw[0];
21
+ typeInfo.token1 = typeInfo.tokensRaw[1];
22
+ typeInfo.balanceToken0 = typeInfo.tokenBalances[0];
23
+ typeInfo.balanceToken1 = typeInfo.tokenBalances[1];
24
+ }
25
+ async processingRound5(index, type, typeInfo, calls, campaign, pricer) {
26
+ const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
27
+ const decimalsToken0 = Number(typeInfo.decimalsToken0);
28
+ const decimalsToken1 = Number(typeInfo.decimalsToken1);
29
+ const priceToken0 = (await pricer.get({ symbol: typeInfo.symbolToken0 })) ?? 0;
30
+ const priceToken1 = (await pricer.get({ symbol: typeInfo.symbolToken1 })) ?? 0;
31
+ const balanceToken0 = BN2Number(typeInfo.balanceToken0, decimalsToken0);
32
+ const balanceToken1 = BN2Number(typeInfo.balanceToken1, decimalsToken1);
33
+ let tvl = 0;
34
+ if (priceToken0 !== 0 && priceToken1 !== 0) {
35
+ tvl = priceToken0 * balanceToken0 + priceToken1 * balanceToken1;
36
+ }
37
+ const priceTargetToken = tvl / totalSupply;
38
+ return {
39
+ ...typeInfo,
40
+ priceTargetToken,
41
+ totalSupply,
42
+ whitelistedSupplyTargetToken,
43
+ blacklistedSupply,
44
+ tvl,
45
+ cardName: generateCardName(type, typeInfo, campaign),
46
+ };
47
+ }
48
+ computeRound1(type, typeInfo) {
49
+ return super.computeRound1(type, typeInfo);
50
+ }
51
+ computeRound2(index, type, typeInfo, calls) {
52
+ return super.computeRound2(index, type, typeInfo, calls);
53
+ }
54
+ computeRound3(index, type, typeInfo, calls) {
55
+ return super.computeRound3(index, type, typeInfo, calls);
56
+ }
57
+ computeRound4(index, type, typeInfo, calls, campaign) {
58
+ return super.computeRound4(index, type, typeInfo, calls, campaign);
59
+ }
60
+ async computeRound5(index, type, typeInfo, calls, campaign, pricer) {
61
+ return super.computeRound5(index, type, typeInfo, calls, campaign, pricer);
62
+ }
63
+ }
@@ -60,10 +60,10 @@ export declare class GenericProcessor<Input extends callKeys, DataRaw extends da
60
60
  computeRound1(type: tokenType, typeInfo: DataRaw): tokenTypeStruct;
61
61
  computeRound2(index: number, type: tokenType, typeInfo: DataRaw, calls: string[]): tokenTypeStruct;
62
62
  computeRound3(index: number, type: tokenType, typeInfo: DataRaw, calls: string[]): tokenTypeStruct;
63
- computeRound4(index: number, type: tokenType, typeInfo: DataRaw, calls: string[], campaign: CampaignParameters<Campaign.ERC20>): tokenTypeStruct;
63
+ computeRound4(index: number, type: tokenType, typeInfo: DataRaw, calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>): tokenTypeStruct;
64
64
  computeRound5(index: number, type: tokenType, typeInfo: DataRaw, calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<tokenTypeStruct>;
65
- generateWhitelistCall(type: tokenType, typeInfo: DataRaw, campaign: CampaignParameters<Campaign.ERC20>): Multicall3.Call3Struct[];
66
- generateBlackListCall(type: tokenType, typeInfo: DataRaw, campaign: CampaignParameters<Campaign.ERC20>): Multicall3.Call3Struct[];
65
+ generateWhitelistCall(type: tokenType, typeInfo: DataRaw, campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>): Multicall3.Call3Struct[];
66
+ generateBlackListCall(type: tokenType, typeInfo: DataRaw, campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>): Multicall3.Call3Struct[];
67
67
  decodeListedSupply(index: number, decimals: number, list: string[], calls: string[]): string;
68
68
  decodeRound(round: callType[], index: number, calls: string[], type: tokenType, data: DataRaw): void;
69
69
  decodePreviousRound(round: roundType, calls: string[], data: DataRaw, type: tokenType, index: number): void;
@@ -177,7 +177,9 @@ export class GenericProcessor {
177
177
  index++;
178
178
  data[key] = value;
179
179
  }
180
- catch (error) { }
180
+ catch (error) {
181
+ index++;
182
+ }
181
183
  }
182
184
  else {
183
185
  const value = decodeCall(calls, index, call, type);
@@ -0,0 +1,36 @@
1
+ import type { Pricer } from "../../../../../utils/pricer";
2
+ import { type Campaign, type CampaignParameters } from "@sdk";
3
+ import type { tokenType, tokenTypeStruct } from "../helpers/tokenType";
4
+ import { GenericProcessor, type dataType, type mandatoryCallKeys } from "./GenericProcessor";
5
+ type callType = {
6
+ key: keyof dataRawNoLinkVault;
7
+ call: string;
8
+ target: keyof callKeysNoLinkVault;
9
+ metaData?: keyof callKeysNoLinkVault;
10
+ };
11
+ type callKeysNoLinkVault = mandatoryCallKeys & {
12
+ rateAccountant: string;
13
+ base: string;
14
+ };
15
+ type dataRawNoLinkVault = callKeysNoLinkVault & {
16
+ rate: string;
17
+ };
18
+ type dataTypeNoLinkVault = dataType & {
19
+ rate: number;
20
+ };
21
+ export declare class NoLinkVaultProcessor extends GenericProcessor<callKeysNoLinkVault, dataRawNoLinkVault, dataTypeNoLinkVault> {
22
+ rounds: {
23
+ round1: callType[];
24
+ round2: callType[];
25
+ round3: callType[];
26
+ round4: callType[];
27
+ };
28
+ processingRound1(typeInfo: dataRawNoLinkVault): void;
29
+ processingRound5(index: number, type: tokenType, typeInfo: dataRawNoLinkVault, calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<dataTypeNoLinkVault>;
30
+ computeRound1(type: tokenType, typeInfo: dataRawNoLinkVault): tokenTypeStruct;
31
+ computeRound2(index: number, type: tokenType, typeInfo: dataRawNoLinkVault, calls: string[]): tokenTypeStruct;
32
+ computeRound3(index: number, type: tokenType, typeInfo: dataRawNoLinkVault, calls: string[]): tokenTypeStruct;
33
+ computeRound4(index: number, type: tokenType, typeInfo: dataRawNoLinkVault, calls: string[], campaign: CampaignParameters<Campaign.ERC20>): tokenTypeStruct;
34
+ computeRound5(index: number, type: tokenType, typeInfo: dataRawNoLinkVault, calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<tokenTypeStruct>;
35
+ }
36
+ export {};
@@ -0,0 +1,51 @@
1
+ import { generateCardName } from "../../../../../utils/generateCardName";
2
+ import { BN2Number } from "@sdk";
3
+ import { GenericProcessor } from "./GenericProcessor";
4
+ export class NoLinkVaultProcessor extends GenericProcessor {
5
+ rounds = {
6
+ round1: [],
7
+ round2: [
8
+ { key: "rate", call: "getRate", target: "rateAccountant" },
9
+ { key: "base", call: "base", target: "rateAccountant" },
10
+ ],
11
+ round3: [],
12
+ round4: [{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" }],
13
+ };
14
+ processingRound1(typeInfo) {
15
+ if (typeInfo.tokenAddress === "0x196ead472583Bc1e9aF7A05F860D9857e1Bd3dCc") {
16
+ typeInfo.rateAccountant = "0xA9fB7e2922216deBE3Fd5E1bBE7591eE446Dc21c";
17
+ }
18
+ }
19
+ async processingRound5(index, type, typeInfo, calls, campaign, pricer) {
20
+ const rate = BN2Number(typeInfo.rate, Number(campaign.campaignParameters.decimalsTargetToken));
21
+ const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
22
+ console.log(typeInfo.base);
23
+ const priceTargetToken = rate * ((await pricer.get({ symbol: typeInfo.base })) ?? 0);
24
+ const tvl = whitelistedSupplyTargetToken * priceTargetToken;
25
+ return {
26
+ tokenAddress: typeInfo.tokenAddress,
27
+ whitelistedSupplyTargetToken,
28
+ rate,
29
+ totalSupply,
30
+ priceTargetToken,
31
+ tvl,
32
+ blacklistedSupply,
33
+ cardName: generateCardName(type, typeInfo, campaign),
34
+ };
35
+ }
36
+ computeRound1(type, typeInfo) {
37
+ return super.computeRound1(type, typeInfo);
38
+ }
39
+ computeRound2(index, type, typeInfo, calls) {
40
+ return super.computeRound2(index, type, typeInfo, calls);
41
+ }
42
+ computeRound3(index, type, typeInfo, calls) {
43
+ return super.computeRound3(index, type, typeInfo, calls);
44
+ }
45
+ computeRound4(index, type, typeInfo, calls, campaign) {
46
+ return super.computeRound4(index, type, typeInfo, calls, campaign);
47
+ }
48
+ async computeRound5(index, type, typeInfo, calls, campaign, pricer) {
49
+ return super.computeRound5(index, type, typeInfo, calls, campaign, pricer);
50
+ }
51
+ }
@@ -25,7 +25,6 @@ export declare class StakingProcessor extends GenericProcessor<callKeysStaking,
25
25
  round3: callType[];
26
26
  round4: callType[];
27
27
  };
28
- processingRound1(typeInfo: dataRawStaking): void;
29
28
  processingRound2(typeInfo: dataRawStaking): void;
30
29
  processingRound3(typeInfo: dataRawStaking): void;
31
30
  processingRound4(typeInfo: dataRawStaking): void;
@@ -10,16 +10,24 @@ export class StakingProcessor extends GenericProcessor {
10
10
  round4: [{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" }],
11
11
  };
12
12
  // override computeRound1(): void {}
13
- processingRound1(typeInfo) {
14
- if (typeInfo.stakingContract === "0x18eeD20f71BEf84B605253C89A7576E3634134C0") {
15
- typeInfo.stakingSymbol = "CyberStaking";
16
- }
17
- }
18
13
  processingRound2(typeInfo) {
19
- typeInfo.stakingSymbol = typeInfo.eip712DomainName;
14
+ if (typeInfo.stakingSymbol === undefined) {
15
+ typeInfo.stakingSymbol = typeInfo.eip712DomainName;
16
+ }
20
17
  }
21
18
  processingRound3(typeInfo) {
22
- super.processingRound3(typeInfo);
19
+ if (typeInfo.stakingSymbol === undefined &&
20
+ typeInfo.stakingContract === "0x18eeD20f71BEf84B605253C89A7576E3634134C0") {
21
+ typeInfo.stakingSymbol = "CyberStaking";
22
+ }
23
+ if (typeInfo.stakingSymbol === undefined &&
24
+ typeInfo.stakingContract === "0x68754d29f2e97B837Cb622ccfF325adAC27E9977") {
25
+ typeInfo.stakingSymbol = "Karak";
26
+ }
27
+ if (typeInfo.stakingSymbol === undefined &&
28
+ typeInfo.stakingContract === "0xcd28cF8f7755f03967D27E128B38022B63919836") {
29
+ typeInfo.stakingSymbol = "Llamalend";
30
+ }
23
31
  }
24
32
  processingRound4(typeInfo) {
25
33
  super.processingRound4(typeInfo);
@@ -11,11 +11,13 @@ import { EulerBorrowProcessor } from "./EulerBorrowProcessor";
11
11
  import { EulerLendProcessor } from "./EulerLendProcessor";
12
12
  import { FluidProcessor } from "./FluidProcessor";
13
13
  import { FraxProcessor } from "./FraxProcessor";
14
+ import { GammaProcessor } from "./GammaProcessor";
14
15
  import { GearboxProcessor } from "./GearboxProcessor";
15
16
  import { GenericProcessor } from "./GenericProcessor";
16
17
  import { HoldStationProcessor } from "./HoldStationProcessor";
17
18
  import { MaverickBPProcessor } from "./MaverickBPProcessor";
18
19
  import { MetamorphoProcessor } from "./MetamorphoProcessor";
20
+ import { NoLinkVaultProcessor } from "./NoLinkVaultProcessor";
19
21
  import { PendleProcessor } from "./PendleProcessor";
20
22
  import { PendleYTProcessor } from "./PendleYTProcessor";
21
23
  import { RadiantProcessor } from "./RadiantProcessor";
@@ -90,4 +92,6 @@ export const processorMapping = {
90
92
  [tokenType.tempestStaking]: TempestVaultProcessor,
91
93
  [tokenType.holdstation]: HoldStationProcessor,
92
94
  [tokenType.staking]: StakingProcessor,
95
+ [tokenType.noLinkVault]: NoLinkVaultProcessor,
96
+ [tokenType.cpmmGamma]: GammaProcessor,
93
97
  };
@@ -1,4 +1,4 @@
1
1
  import type { Pricer } from "../../../../utils/pricer";
2
- import { type Campaign, type CampaignParameters } from "@sdk";
2
+ import type { Campaign, CampaignParameters } from "@sdk";
3
3
  import { tokenType, type tokenTypeStruct } from "./helpers/tokenType";
4
4
  export declare function getTokenPricesInfo(index: number, type: tokenType, typeInfo: any, calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<tokenTypeStruct>;