@merkl/api 0.10.199 → 0.10.201

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) 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 +6 -4
  39. package/dist/src/modules/v4/campaign/campaign.controller.js +14 -4
  40. package/dist/src/modules/v4/campaign/campaign.model.d.ts +51 -5
  41. package/dist/src/modules/v4/campaign/campaign.model.js +48 -13
  42. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +2 -2
  43. package/dist/src/modules/v4/campaign/campaign.repository.js +10 -2
  44. package/dist/src/modules/v4/campaign/campaign.service.d.ts +2 -2
  45. package/dist/src/modules/v4/chain/chain.controller.d.ts +2 -2
  46. package/dist/src/modules/v4/chain/chain.controller.js +7 -2
  47. package/dist/src/modules/v4/chain/chain.model.d.ts +6 -1
  48. package/dist/src/modules/v4/chain/chain.model.js +8 -1
  49. package/dist/src/modules/v4/chain/chain.repository.js +1 -1
  50. package/dist/src/modules/v4/claims/claims.controller.js +1 -1
  51. package/dist/src/modules/v4/dynamicData/dynamicData.controller.js +4 -1
  52. package/dist/src/modules/v4/enso/enso.model.d.ts +1 -1
  53. package/dist/src/modules/v4/enso/enso.model.js +2 -1
  54. package/dist/src/modules/v4/enso/enso.service.d.ts +0 -1
  55. package/dist/src/modules/v4/enso/enso.service.js +4 -4
  56. package/dist/src/modules/v4/interaction/interaction.controller.d.ts +26 -17
  57. package/dist/src/modules/v4/interaction/interaction.controller.js +19 -28
  58. package/dist/src/modules/v4/interaction/interaction.model.d.ts +17 -5
  59. package/dist/src/modules/v4/interaction/interaction.model.js +3 -3
  60. package/dist/src/modules/v4/interaction/interaction.service.d.ts +18 -3
  61. package/dist/src/modules/v4/interaction/interaction.service.js +89 -11
  62. package/dist/src/modules/v4/kyberzap/kyberzap.model.d.ts +72 -0
  63. package/dist/src/modules/v4/kyberzap/kyberzap.model.js +79 -0
  64. package/dist/src/modules/v4/kyberzap/kyberzap.service.d.ts +15 -0
  65. package/dist/src/modules/v4/kyberzap/kyberzap.service.js +84 -0
  66. package/dist/src/modules/v4/liquidity/liquidity.controller.js +1 -1
  67. package/dist/src/modules/v4/merklRoot/merklRoot.controller.js +1 -1
  68. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +224 -213
  69. package/dist/src/modules/v4/opportunity/opportunity.controller.js +39 -10
  70. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +252 -22
  71. package/dist/src/modules/v4/opportunity/opportunity.model.js +58 -15
  72. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +11 -11
  73. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +12 -232
  74. package/dist/src/modules/v4/opportunity/opportunity.service.js +0 -32
  75. package/dist/src/modules/v4/price/price.controller.js +1 -1
  76. package/dist/src/modules/v4/protocol/protocol.controller.d.ts +23 -24
  77. package/dist/src/modules/v4/protocol/protocol.controller.js +15 -9
  78. package/dist/src/modules/v4/protocol/protocol.model.d.ts +13 -1
  79. package/dist/src/modules/v4/protocol/protocol.model.js +12 -8
  80. package/dist/src/modules/v4/reward/reward.controller.js +1 -1
  81. package/dist/src/modules/v4/reward/reward.model.d.ts +44 -1
  82. package/dist/src/modules/v4/reward/reward.model.js +15 -0
  83. package/dist/src/modules/v4/reward/reward.repository.d.ts +2 -2
  84. package/dist/src/modules/v4/reward/reward.service.d.ts +11 -11
  85. package/dist/src/modules/v4/reward/reward.service.js +1 -1
  86. package/dist/src/modules/v4/router.d.ts +289 -268
  87. package/dist/src/modules/v4/status/status.controller.js +2 -3
  88. package/dist/src/modules/v4/status/status.model.d.ts +12 -0
  89. package/dist/src/modules/v4/status/status.model.js +12 -0
  90. package/dist/src/modules/v4/token/token.controller.d.ts +4 -4
  91. package/dist/src/modules/v4/token/token.controller.js +1 -1
  92. package/dist/src/modules/v4/token/token.model.d.ts +12 -0
  93. package/dist/src/modules/v4/token/token.model.js +12 -0
  94. package/dist/src/modules/v4/token/token.repository.d.ts +2 -2
  95. package/dist/src/modules/v4/token/token.service.d.ts +7 -7
  96. package/dist/src/modules/v4/tvl/tvl.model.d.ts +24 -0
  97. package/dist/src/modules/v4/tvl/tvl.model.js +15 -1
  98. package/dist/src/modules/v4/uniswapV4/uniswapV4.controller.d.ts +1 -1
  99. package/dist/src/modules/v4/uniswapV4/uniswapV4.controller.js +9 -8
  100. package/dist/src/modules/v4/user/user.controller.d.ts +4 -4
  101. package/dist/src/modules/v4/user/user.controller.js +20 -17
  102. package/dist/src/modules/v4/user/user.model.d.ts +30 -0
  103. package/dist/src/modules/v4/user/user.model.js +27 -0
  104. package/dist/src/modules/v4/zyfi/zyfi.model.d.ts +45 -0
  105. package/dist/src/modules/v4/zyfi/zyfi.model.js +1 -0
  106. package/dist/src/modules/v4/zyfi/zyfi.service.d.ts +30 -0
  107. package/dist/src/modules/v4/zyfi/zyfi.service.js +35 -0
  108. package/dist/src/plugins/error-handling.plugin.d.ts +2 -2
  109. package/dist/src/plugins/error-handling.plugin.js +9 -3
  110. package/dist/src/plugins/logger.plugin.js +1 -20
  111. package/dist/src/routes/v1/allowances.d.ts +1 -1
  112. package/dist/src/routes/v1/allowances.js +1 -1
  113. package/dist/src/routes/v1/balances.d.ts +1 -1
  114. package/dist/src/routes/v1/balances.js +1 -1
  115. package/dist/src/routes/v1/prices.d.ts +1 -1
  116. package/dist/src/routes/v1/prices.js +1 -1
  117. package/dist/src/routes/v1/router.d.ts +102 -0
  118. package/dist/src/routes/v1/router.js +6 -0
  119. package/dist/src/routes/v1/tokens.d.ts +1 -1
  120. package/dist/src/routes/v1/tokens.js +1 -1
  121. package/dist/src/routes/v2/merkl.d.ts +5 -5
  122. package/dist/src/routes/v2/merkl.js +1 -1
  123. package/dist/src/routes/v2/router.d.ts +46 -0
  124. package/dist/src/routes/v2/router.js +3 -0
  125. package/dist/src/routes/v3/app.d.ts +1 -1
  126. package/dist/src/routes/v3/app.js +1 -1
  127. package/dist/src/routes/v3/blacklist.d.ts +1 -2479
  128. package/dist/src/routes/v3/blacklist.js +1 -1
  129. package/dist/src/routes/v3/campaignClaims.d.ts +1 -1
  130. package/dist/src/routes/v3/campaignClaims.js +1 -1
  131. package/dist/src/routes/v3/campaignReport.d.ts +1 -1
  132. package/dist/src/routes/v3/campaignReport.js +1 -1
  133. package/dist/src/routes/v3/campaignUnclaimed.d.ts +1 -1
  134. package/dist/src/routes/v3/campaignUnclaimed.js +1 -1
  135. package/dist/src/routes/v3/campaigns.d.ts +1 -2483
  136. package/dist/src/routes/v3/campaigns.js +1 -1
  137. package/dist/src/routes/v3/campaignsForMainParameter.d.ts +1 -1
  138. package/dist/src/routes/v3/campaignsForMainParameter.js +1 -1
  139. package/dist/src/routes/v3/campaignsInfo.d.ts +1 -2481
  140. package/dist/src/routes/v3/campaignsInfo.js +1 -1
  141. package/dist/src/routes/v3/campaignsRewardsReport.d.ts +1 -1
  142. package/dist/src/routes/v3/campaignsRewardsReport.js +1 -1
  143. package/dist/src/routes/v3/claims.d.ts +2 -2
  144. package/dist/src/routes/v3/claims.js +1 -1
  145. package/dist/src/routes/v3/compoundV2.d.ts +1 -1
  146. package/dist/src/routes/v3/compoundV2.js +1 -1
  147. package/dist/src/routes/v3/createCampaign.d.ts +1 -1
  148. package/dist/src/routes/v3/createCampaign.js +1 -1
  149. package/dist/src/routes/v3/dolomite.d.ts +1 -1
  150. package/dist/src/routes/v3/dolomite.js +1 -1
  151. package/dist/src/routes/v3/euler.d.ts +1 -1
  152. package/dist/src/routes/v3/euler.js +1 -1
  153. package/dist/src/routes/v3/fetch.d.ts +1 -1
  154. package/dist/src/routes/v3/fetch.js +1 -1
  155. package/dist/src/routes/v3/health.d.ts +1 -1
  156. package/dist/src/routes/v3/health.js +1 -1
  157. package/dist/src/routes/v3/lostyield.d.ts +1 -1
  158. package/dist/src/routes/v3/lostyield.js +1 -1
  159. package/dist/src/routes/v3/merkl.d.ts +1 -1
  160. package/dist/src/routes/v3/merkl.js +1 -1
  161. package/dist/src/routes/v3/morphoMarkets.d.ts +1 -1
  162. package/dist/src/routes/v3/morphoMarkets.js +1 -1
  163. package/dist/src/routes/v3/morphoVaults.d.ts +1 -1
  164. package/dist/src/routes/v3/morphoVaults.js +1 -1
  165. package/dist/src/routes/v3/multiChainPositions.d.ts +1 -2480
  166. package/dist/src/routes/v3/multiChainPositions.js +1 -1
  167. package/dist/src/routes/v3/opportunity.d.ts +1 -2483
  168. package/dist/src/routes/v3/opportunity.js +1 -1
  169. package/dist/src/routes/v3/overview.d.ts +1 -1
  170. package/dist/src/routes/v3/overview.js +1 -1
  171. package/dist/src/routes/v3/parse.d.ts +1 -1
  172. package/dist/src/routes/v3/parse.js +1 -1
  173. package/dist/src/routes/v3/payload.d.ts +1 -1
  174. package/dist/src/routes/v3/payload.js +1 -1
  175. package/dist/src/routes/v3/poolInfo.js +1 -1
  176. package/dist/src/routes/v3/positions.d.ts +1 -2479
  177. package/dist/src/routes/v3/positions.js +1 -1
  178. package/dist/src/routes/v3/radiant.d.ts +1 -1
  179. package/dist/src/routes/v3/radiant.js +1 -1
  180. package/dist/src/routes/v3/recipients.d.ts +1 -1
  181. package/dist/src/routes/v3/recipients.js +1 -1
  182. package/dist/src/routes/v3/rewards.d.ts +1 -2508
  183. package/dist/src/routes/v3/rewards.js +1 -1
  184. package/dist/src/routes/v3/rewardsReport.d.ts +1 -1
  185. package/dist/src/routes/v3/rewardsReport.js +1 -1
  186. package/dist/src/routes/v3/router.d.ts +1 -0
  187. package/dist/src/routes/v3/router.js +74 -0
  188. package/dist/src/routes/v3/silo.d.ts +1 -1
  189. package/dist/src/routes/v3/silo.js +1 -1
  190. package/dist/src/routes/v3/token.d.ts +1 -1
  191. package/dist/src/routes/v3/token.js +1 -1
  192. package/dist/src/routes/v3/tokenUnclaimed.d.ts +1 -1
  193. package/dist/src/routes/v3/tokenUnclaimed.js +1 -1
  194. package/dist/src/routes/v3/updates.d.ts +1 -2483
  195. package/dist/src/routes/v3/updates.js +1 -1
  196. package/dist/src/routes/v3/userRewards.d.ts +1 -2499
  197. package/dist/src/routes/v3/userRewards.js +1 -1
  198. package/dist/src/utils/decodeCalls.js +12 -1
  199. package/dist/src/utils/encodeCalls.js +26 -3
  200. package/dist/src/utils/generateCardName.js +2 -0
  201. package/dist/tsconfig.package.tsbuildinfo +1 -1
  202. package/package.json +2 -3
  203. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicDataRefacto.d.ts +0 -3
  204. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicDataRefacto.js +0 -155
  205. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesPricesRefactoFinal.d.ts +0 -4
  206. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesPricesRefactoFinal.js +0 -24
  207. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1RefactoFinal.d.ts +0 -4
  208. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1RefactoFinal.js +0 -230
  209. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2RefactoFinal.d.ts +0 -3
  210. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2RefactoFinal.js +0 -22
  211. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound3RefactoFinal.d.ts +0 -3
  212. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound3RefactoFinal.js +0 -22
  213. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound4RefactoFinal.d.ts +0 -4
  214. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound4RefactoFinal.js +0 -22
  215. package/dist/src/libs/campaigns/campaignsDynamicDataRefacto.d.ts +0 -3
  216. package/dist/src/libs/campaigns/campaignsDynamicDataRefacto.js +0 -75
@@ -1,1209 +1,232 @@
1
- import { Interface } from "@ethersproject/abi";
2
- import { ERC20Interface, UniswapV2PoolInterface } from "@sdk";
1
+ import { decodeCall } from "../../../../utils/decodeCalls";
3
2
  import { enzymeFundValueCalculatorRouterMapping, getTypeFromFactoryAddress } from "./helpers/factoryFinder";
4
3
  import { tokenType } from "./helpers/tokenType";
5
- import { balancerPoolInterface } from "./subtypesRound2";
6
- const factoryABI = [
7
- {
8
- constant: true,
9
- inputs: [],
10
- name: "factory",
11
- outputs: [
12
- {
13
- name: "",
14
- type: "address",
15
- },
16
- ],
17
- payable: false,
18
- stateMutability: "view",
19
- type: "function",
20
- },
21
- ];
22
- const balancerGaugeABI = [
23
- {
24
- constant: true,
25
- inputs: [],
26
- name: "lp_token",
27
- outputs: [
28
- {
29
- name: "",
30
- type: "address",
31
- },
32
- ],
33
- payable: false,
34
- stateMutability: "view",
35
- type: "function",
36
- },
37
- ];
38
- const OneInchStakingContract = [
39
- {
40
- constant: true,
41
- inputs: [],
42
- name: "stakingToken",
43
- outputs: [
44
- {
45
- name: "",
46
- type: "address",
47
- },
48
- ],
49
- payable: false,
50
- stateMutability: "view",
51
- type: "function",
52
- },
53
- ];
54
- const compoundABI = [
55
- {
56
- constant: true,
57
- inputs: [],
58
- name: "baseToken",
59
- outputs: [
60
- {
61
- name: "",
62
- type: "address",
63
- },
64
- ],
65
- payable: false,
66
- stateMutability: "view",
67
- type: "function",
68
- },
69
- {
70
- inputs: [],
71
- name: "totalBorrow",
72
- outputs: [
73
- {
74
- name: "",
75
- type: "uint256",
76
- },
77
- ],
78
- payable: false,
79
- stateMutability: "view",
80
- type: "function",
81
- },
82
- ];
83
- const radiantABI = [
84
- {
85
- constant: true,
86
- inputs: [],
87
- name: "UNDERLYING_ASSET_ADDRESS",
88
- outputs: [
89
- {
90
- name: "",
91
- type: "address",
92
- },
93
- ],
94
- payable: false,
95
- stateMutability: "view",
96
- type: "function",
97
- },
98
- {
99
- inputs: [],
100
- name: "getAssetPrice",
101
- outputs: [
102
- {
103
- name: "",
104
- type: "uint256",
105
- },
106
- ],
107
- payable: false,
108
- stateMutability: "view",
109
- type: "function",
110
- },
111
- ];
112
- const ionicABI = [
113
- {
114
- constant: true,
115
- inputs: [],
116
- name: "exchangeRateCurrent",
117
- outputs: [
118
- {
119
- name: "",
120
- type: "uint256",
121
- },
122
- ],
123
- payable: false,
124
- stateMutability: "view",
125
- type: "function",
126
- },
127
- {
128
- inputs: [],
129
- name: "underlying",
130
- outputs: [
131
- {
132
- name: "",
133
- type: "address",
134
- },
135
- ],
136
- payable: false,
137
- stateMutability: "view",
138
- type: "function",
139
- },
140
- ];
141
- const layerBankABI = [
142
- {
143
- constant: true,
144
- inputs: [],
145
- name: "exchangeRate",
146
- outputs: [
147
- {
148
- name: "",
149
- type: "uint256",
150
- },
151
- ],
152
- payable: false,
153
- stateMutability: "view",
154
- type: "function",
155
- },
156
- {
157
- inputs: [],
158
- name: "underlying",
159
- outputs: [
160
- {
161
- name: "",
162
- type: "address",
163
- },
164
- ],
165
- payable: false,
166
- stateMutability: "view",
167
- type: "function",
168
- },
169
- ];
170
- const metamorphoABI = [
171
- {
172
- inputs: [],
173
- name: "MORPHO",
174
- outputs: [
175
- {
176
- name: "",
177
- type: "address",
178
- },
179
- ],
180
- payable: false,
181
- stateMutability: "view",
182
- type: "function",
183
- },
184
- {
185
- inputs: [],
186
- name: "asset",
187
- outputs: [
188
- {
189
- name: "",
190
- type: "address",
191
- },
192
- ],
193
- payable: false,
194
- stateMutability: "view",
195
- type: "function",
196
- },
197
- ];
198
- const moonwellABI = [
199
- {
200
- constant: true,
201
- inputs: [],
202
- name: "exchangeRateStored",
203
- outputs: [
204
- {
205
- name: "",
206
- type: "uint256",
207
- },
208
- ],
209
- payable: false,
210
- stateMutability: "view",
211
- type: "function",
212
- },
213
- {
214
- inputs: [],
215
- name: "underlying",
216
- outputs: [
217
- {
218
- name: "",
219
- type: "address",
220
- },
221
- ],
222
- payable: false,
223
- stateMutability: "view",
224
- type: "function",
225
- },
226
- ];
227
- const aaveABI = [
228
- {
229
- inputs: [],
230
- name: "UNDERLYING_ASSET_ADDRESS",
231
- outputs: [
232
- {
233
- name: "",
234
- type: "address",
235
- },
236
- ],
237
- payable: false,
238
- stateMutability: "view",
239
- type: "function",
240
- },
241
- ];
242
- const fraxlendABI = [
243
- {
244
- inputs: [],
245
- name: "asset",
246
- outputs: [
247
- {
248
- name: "",
249
- type: "address",
250
- },
251
- ],
252
- payable: false,
253
- stateMutability: "view",
254
- type: "function",
255
- },
256
- {
257
- inputs: [],
258
- name: "pricePerShare",
259
- outputs: [
260
- {
261
- name: "",
262
- type: "uint256",
263
- },
264
- ],
265
- payable: false,
266
- stateMutability: "view",
267
- type: "function",
268
- },
269
- ];
270
- const curveABI = [
271
- {
272
- inputs: [],
273
- name: "lp_price",
274
- outputs: [
275
- {
276
- name: "",
277
- type: "uint256",
278
- },
279
- ],
280
- payable: false,
281
- stateMutability: "view",
282
- type: "function",
283
- },
284
- {
285
- inputs: [
286
- {
287
- name: "arg0",
288
- type: "uint256",
289
- },
290
- ],
291
- name: "coins",
292
- outputs: [
293
- {
294
- name: "",
295
- type: "address",
296
- },
297
- ],
298
- payable: false,
299
- stateMutability: "view",
300
- type: "function",
301
- },
302
- {
303
- inputs: [],
304
- name: "get_virtual_price",
305
- outputs: [
306
- {
307
- name: "",
308
- type: "uint256",
309
- },
310
- ],
311
- payable: false,
312
- stateMutability: "view",
313
- type: "function",
314
- },
315
- ];
316
- const sturdyABI = [
317
- {
318
- inputs: [],
319
- name: "collateralContract",
320
- outputs: [
321
- {
322
- name: "",
323
- type: "address",
324
- },
325
- ],
326
- payable: false,
327
- stateMutability: "view",
328
- type: "function",
329
- },
330
- ];
331
- const torosABI = [
332
- {
333
- inputs: [],
334
- name: "tokenPrice",
335
- outputs: [
336
- {
337
- internalType: "uint256",
338
- name: "price",
339
- type: "uint256",
340
- },
341
- ],
342
- stateMutability: "view",
343
- type: "function",
344
- },
345
- ];
346
- const auraABI = [
347
- {
348
- inputs: [],
349
- name: "asset",
350
- outputs: [
351
- {
352
- name: "",
353
- type: "address",
354
- },
355
- ],
356
- payable: false,
357
- stateMutability: "view",
358
- type: "function",
359
- },
360
- {
361
- inputs: [],
362
- name: "operator",
363
- outputs: [
364
- {
365
- name: "",
366
- type: "address",
367
- },
368
- ],
369
- payable: false,
370
- stateMutability: "view",
371
- type: "function",
372
- },
373
- {
374
- inputs: [],
375
- name: "pid",
376
- outputs: [
377
- {
378
- name: "",
379
- type: "uint256",
380
- },
381
- ],
382
- payable: false,
383
- stateMutability: "view",
384
- type: "function",
385
- },
386
- ];
387
- const fluidABI = [
388
- {
389
- inputs: [],
390
- name: "asset",
391
- outputs: [
392
- {
393
- internalType: "address",
394
- name: "",
395
- type: "address",
396
- },
397
- ],
398
- stateMutability: "view",
399
- type: "function",
400
- },
401
- {
402
- inputs: [
403
- {
404
- internalType: "uint256",
405
- name: "shares_",
406
- type: "uint256",
407
- },
408
- ],
409
- name: "convertToAssets",
410
- outputs: [
411
- {
412
- internalType: "uint256",
413
- name: "",
414
- type: "uint256",
415
- },
416
- ],
417
- stateMutability: "view",
418
- type: "function",
419
- },
420
- ];
421
- const enzymeABI = [
422
- {
423
- inputs: [],
424
- name: "getCreator",
425
- outputs: [
426
- {
427
- internalType: "address",
428
- name: "",
429
- type: "address",
430
- },
431
- ],
432
- stateMutability: "view",
433
- type: "function",
434
- },
435
- {
436
- inputs: [
437
- {
438
- internalType: "address",
439
- name: "_vaultProxy",
440
- type: "address",
441
- },
442
- ],
443
- name: "calcNetShareValue",
444
- outputs: [
445
- {
446
- internalType: "address",
447
- name: "denominationAsset_",
448
- type: "address",
449
- },
450
- {
451
- internalType: "uint256",
452
- name: "netShareValue_",
453
- type: "uint256",
454
- },
455
- ],
456
- stateMutability: "nonpayable",
457
- type: "function",
458
- },
459
- ];
460
- const eulerABI = [
461
- {
462
- inputs: [],
463
- name: "asset",
464
- outputs: [
465
- {
466
- name: "",
467
- type: "address",
468
- },
469
- ],
470
- payable: false,
471
- stateMutability: "view",
472
- type: "function",
473
- },
474
- {
475
- inputs: [],
476
- name: "eVault",
477
- outputs: [
478
- {
479
- name: "",
480
- type: "address",
481
- },
482
- ],
483
- payable: false,
484
- stateMutability: "view",
485
- type: "function",
486
- },
487
- {
488
- inputs: [],
489
- name: "totalBorrows",
490
- outputs: [
491
- {
492
- name: "",
493
- type: "uint256",
494
- },
495
- ],
496
- payable: false,
497
- stateMutability: "view",
498
- type: "function",
499
- },
500
- {
501
- inputs: [],
502
- name: "totalAssets",
503
- outputs: [
504
- {
505
- name: "",
506
- type: "uint256",
507
- },
508
- ],
509
- payable: false,
510
- stateMutability: "view",
511
- type: "function",
512
- },
513
- ];
514
- const beefyABI = [
515
- {
516
- inputs: [],
517
- name: "getPricePerFullShare",
518
- outputs: [
519
- {
520
- internalType: "uint256",
521
- name: "price",
522
- type: "uint256",
523
- },
524
- ],
525
- stateMutability: "view",
526
- type: "function",
527
- },
528
- {
529
- inputs: [],
530
- name: "want",
531
- outputs: [
532
- {
533
- name: "",
534
- type: "address",
535
- },
536
- ],
537
- stateMutability: "view",
538
- type: "function",
539
- },
540
- ];
541
- export const factoryInterface = new Interface(factoryABI);
542
- export const balancerGaugeInterface = new Interface(balancerGaugeABI);
543
- export const OneInchStakingInterface = new Interface(OneInchStakingContract);
544
- export const compoundInterface = new Interface(compoundABI);
545
- export const radiantInterface = new Interface(radiantABI);
546
- export const ionicInterface = new Interface(ionicABI);
547
- export const layerBankInterface = new Interface(layerBankABI);
548
- export const metamorphoInterface = new Interface(metamorphoABI);
549
- export const moonwellInterface = new Interface(moonwellABI);
550
- export const aaveInterface = new Interface(aaveABI);
551
- export const fraxlendInterface = new Interface(fraxlendABI);
552
- export const curveInterface = new Interface(curveABI);
553
- export const sturdyInterface = new Interface(sturdyABI);
554
- export const torosInterface = new Interface(torosABI);
555
- export const auraInterface = new Interface(auraABI);
556
- export const fluidInterface = new Interface(fluidABI);
557
- export const enzymeInterface = new Interface(enzymeABI);
558
- export const eulerInterface = new Interface(eulerABI);
559
- export const beefyInterface = new Interface(beefyABI);
560
- export function getTokenTypeRound1(calls, targetToken, index) {
4
+ import { processorMapping } from "./processor/processorMapping";
5
+ function satisfiesNameConditions(name, type) {
6
+ const lowerCaseName = name.toLowerCase();
7
+ switch (type) {
8
+ case tokenType.fraxlend:
9
+ return lowerCaseName.includes("fraxlend interest bearing");
10
+ case tokenType.sturdy_aggregator:
11
+ return lowerCaseName.includes("aggregator");
12
+ case tokenType.sturdy_silo:
13
+ return lowerCaseName.includes("sturdy interest bearing");
14
+ case tokenType.aura:
15
+ return lowerCaseName.includes("aura deposit vault");
16
+ case tokenType.poolside:
17
+ return lowerCaseName.includes("poolside");
18
+ case tokenType.balancerGauge:
19
+ return lowerCaseName.includes("balancer") && !lowerCaseName.includes("aura deposit vault");
20
+ case tokenType.gearbox:
21
+ return lowerCaseName.includes("farming of");
22
+ case tokenType.euler_borrow:
23
+ return lowerCaseName.startsWith("debt token of evk vault");
24
+ case tokenType.euler_lend:
25
+ return lowerCaseName.includes("evk vault");
26
+ case tokenType.fluid:
27
+ return lowerCaseName.startsWith("fluid");
28
+ case tokenType.filament:
29
+ return lowerCaseName.startsWith("filament");
30
+ case tokenType.radiant_lend:
31
+ return lowerCaseName.includes("radiant interest");
32
+ case tokenType.radiant_borrow:
33
+ return lowerCaseName.includes("radiant variable debt");
34
+ case tokenType.ionic:
35
+ return lowerCaseName.includes("ionic");
36
+ case tokenType.rfx:
37
+ return lowerCaseName.includes("rfx");
38
+ case tokenType.layerbank:
39
+ return lowerCaseName.includes("layerbank");
40
+ case tokenType.moonwell:
41
+ return lowerCaseName.includes("moonwell");
42
+ case tokenType.curve_2:
43
+ return (lowerCaseName === "crvusd/frax" ||
44
+ lowerCaseName === "ezeth/wfrxeth" ||
45
+ lowerCaseName === "pufeth/wsteth" ||
46
+ lowerCaseName === "hai/lusd");
47
+ case tokenType.silostaking:
48
+ return lowerCaseName === "isei";
49
+ case tokenType.beefy:
50
+ return lowerCaseName.startsWith("moo velo");
51
+ case tokenType.uniswapv2:
52
+ return lowerCaseName.includes("uniswap");
53
+ case tokenType.fenix:
54
+ return lowerCaseName.includes("stablev1 amm");
55
+ case tokenType.ra:
56
+ return lowerCaseName.includes("volatile pair -") || lowerCaseName.includes("correlated pair -");
57
+ case tokenType.syncswap:
58
+ return lowerCaseName.includes("syncswap");
59
+ case tokenType.aave_lending:
60
+ return lowerCaseName.includes("aave");
61
+ case tokenType.aave_borrowing:
62
+ return lowerCaseName.includes("aave") && lowerCaseName.includes("debt");
63
+ case tokenType.yei_borrowing:
64
+ return ((lowerCaseName.startsWith("yei") || (lowerCaseName.includes("aave") && lowerCaseName.includes("yei"))) &&
65
+ lowerCaseName.includes("debt"));
66
+ case tokenType.ironclad_borrowing:
67
+ return ((lowerCaseName.startsWith("ironclad") ||
68
+ (lowerCaseName.includes("aave") && lowerCaseName.includes("ironclad"))) &&
69
+ lowerCaseName.includes("debt") &&
70
+ name.toLowerCase() !== "ironclad token");
71
+ case tokenType.zerolend_borrowing:
72
+ return lowerCaseName.includes("zerolend") && lowerCaseName.includes("debt");
73
+ case tokenType.yei_lending:
74
+ return lowerCaseName.startsWith("yei") || (lowerCaseName.includes("aave") && lowerCaseName.includes("yei"));
75
+ case tokenType.ironclad_lending:
76
+ return ((lowerCaseName.startsWith("ironclad") ||
77
+ (lowerCaseName.includes("aave") && lowerCaseName.includes("ironclad"))) &&
78
+ name.toLowerCase() !== "ironclad token");
79
+ case tokenType.zerolend_lending:
80
+ return lowerCaseName.includes("zerolend");
81
+ case tokenType.compound:
82
+ return lowerCaseName.includes("compound");
83
+ case tokenType.ironcladStaking:
84
+ return lowerCaseName === "ironclad token";
85
+ case tokenType.woofi:
86
+ return lowerCaseName.includes("woofi");
87
+ case tokenType.maverickBoostedPosition:
88
+ return lowerCaseName.includes("maverick");
89
+ case tokenType.zkSwapThreePool:
90
+ return lowerCaseName.includes("zf");
91
+ case tokenType.maha:
92
+ return lowerCaseName.includes("staked") && lowerCaseName.includes("maha");
93
+ case tokenType.tempest:
94
+ return lowerCaseName.startsWith("ts");
95
+ case tokenType.tempestStaking:
96
+ return lowerCaseName.startsWith("tempest");
97
+ case tokenType.holdstation:
98
+ return lowerCaseName.startsWith("hs");
99
+ case tokenType.noLinkVault:
100
+ return lowerCaseName.startsWith("unifi eth");
101
+ default:
102
+ return false;
103
+ }
104
+ }
105
+ function generateResult(type, name, targetToken, typeInfo) {
106
+ const ProcessorClass = processorMapping[type];
107
+ if (!ProcessorClass) {
108
+ throw new Error(`Processor not found for key: ${type}`);
109
+ }
110
+ const processorObject = new ProcessorClass();
111
+ typeInfo = {
112
+ ...typeInfo,
113
+ name: name,
114
+ tokenAddress: targetToken,
115
+ totalSupply: 0,
116
+ blacklistedSupply: 0,
117
+ };
118
+ return processorObject.computeRound1(type, typeInfo);
119
+ }
120
+ function processNamingConditions(type, name, targetToken) {
121
+ if (satisfiesNameConditions(name, type)) {
122
+ return generateResult(type, name, targetToken, {});
123
+ }
124
+ }
125
+ function processNamingConditionsInOrder(types, name, targetToken) {
126
+ for (const type of types) {
127
+ const result = processNamingConditions(type, name, targetToken);
128
+ if (result)
129
+ return result;
130
+ }
131
+ }
132
+ function parseForFactory(calls, index, targetToken) {
561
133
  try {
562
- const factory = factoryInterface.decodeFunctionResult("factory", calls[index].returnData)[0];
563
- const name = ERC20Interface.decodeFunctionResult("name", calls[index + 2].returnData)[0];
134
+ const factory = decodeCall(calls, index, "factory");
135
+ const name = decodeCall(calls, index + 2, "name");
564
136
  const type = getTypeFromFactoryAddress(factory);
565
- if (type === tokenType.aerodrome ||
566
- type === tokenType.velodrome ||
567
- type === tokenType.dragonswap ||
568
- type === tokenType.akron) {
569
- return {
570
- type: type,
571
- calls: [
572
- {
573
- allowFailure: true,
574
- callData: UniswapV2PoolInterface.encodeFunctionData("token0"),
575
- target: targetToken,
576
- },
577
- {
578
- allowFailure: true,
579
- callData: UniswapV2PoolInterface.encodeFunctionData("token1"),
580
- target: targetToken,
581
- },
582
- ],
583
- typeInfo: {
584
- name: name,
585
- tokenAddress: targetToken,
586
- },
587
- };
588
- }
589
- if (type === tokenType.koi ||
590
- type === tokenType.baseswap ||
591
- type === tokenType.fenix ||
592
- type === tokenType.zkswap) {
593
- let protocol = "Koi V2";
594
- if (type === tokenType.baseswap) {
595
- protocol = "BaseSwap V2";
596
- }
597
- else if (type === tokenType.fenix) {
598
- protocol = "Fenix V2";
599
- }
600
- else if (type === tokenType.zkswap) {
601
- protocol = "ZKSwap";
602
- }
603
- return {
604
- type: tokenType.uniswapv2,
605
- calls: [
606
- {
607
- allowFailure: true,
608
- callData: UniswapV2PoolInterface.encodeFunctionData("token0"),
609
- target: targetToken,
610
- },
611
- {
612
- allowFailure: true,
613
- callData: UniswapV2PoolInterface.encodeFunctionData("token1"),
614
- target: targetToken,
615
- },
616
- ],
617
- typeInfo: {
618
- name: name,
619
- tokenAddress: targetToken,
620
- protocol: protocol,
621
- },
622
- };
623
- }
624
- if (type === tokenType.curve) {
625
- return {
626
- type: type,
627
- calls: [
628
- {
629
- allowFailure: true,
630
- callData: curveInterface.encodeFunctionData("lp_price"),
631
- target: targetToken,
632
- },
633
- {
634
- allowFailure: true,
635
- callData: curveInterface.encodeFunctionData("coins", [0]),
636
- target: targetToken,
637
- },
638
- {
639
- allowFailure: true,
640
- callData: curveInterface.encodeFunctionData("coins", [1]),
641
- target: targetToken,
642
- },
643
- {
644
- allowFailure: true,
645
- callData: curveInterface.encodeFunctionData("coins", [2]),
646
- target: targetToken,
647
- },
648
- ],
649
- typeInfo: {
650
- name: name,
651
- tokenAddress: targetToken,
652
- },
653
- };
654
- }
655
- // https://explorer.mode.network/address/0x34cf9BF641bd5f34197060A3f3478a1f97f78f0a?tab=read_contract
656
- if (type === tokenType.splice) {
657
- return {
658
- type: type,
659
- calls: [],
660
- typeInfo: {
661
- name: name,
662
- tokenAddress: targetToken,
663
- },
664
- };
665
- }
666
- // Double proxy so explorer link is useless
667
- // https://basescan.org/address/0xc1e02884af4a283ca25ab63c45360d220d69da52
668
- // ABI here: https://github.com/dhedge/V2-Public/blob/master/abi/PoolLogic.json
669
- if (type === tokenType.toros) {
670
- return {
671
- type: type,
672
- calls: [],
673
- typeInfo: {
674
- name: name,
675
- tokenAddress: targetToken,
676
- },
677
- };
678
- }
137
+ if (type !== tokenType.unknown)
138
+ return generateResult(type, name, targetToken, { factory });
679
139
  }
680
140
  catch (e) {
681
141
  // No factory on this token
682
142
  }
143
+ }
144
+ function parseForEnzyme(calls, index, targetToken) {
683
145
  // Enzyme check
684
146
  try {
685
- const dispatcher = enzymeInterface.decodeFunctionResult("getCreator", calls[index + 4].returnData)[0];
686
- const name = ERC20Interface.decodeFunctionResult("name", calls[index + 2].returnData)[0];
147
+ const dispatcher = decodeCall(calls, index + 4, "getCreator");
148
+ const name = decodeCall(calls, index + 2, "name");
687
149
  const type = getTypeFromFactoryAddress(dispatcher);
688
150
  const fundValueCalculator = enzymeFundValueCalculatorRouterMapping[dispatcher];
151
+ const typeInfo = {
152
+ fundValueCalculator,
153
+ dispatcher,
154
+ };
689
155
  if (type === tokenType.enzyme) {
690
- return {
691
- type: type,
692
- calls: [
693
- {
694
- allowFailure: true,
695
- callData: enzymeInterface.encodeFunctionData("calcNetShareValue", [targetToken]),
696
- target: fundValueCalculator,
697
- },
698
- ],
699
- typeInfo: {
700
- name: name,
701
- tokenAddress: targetToken,
702
- factory: dispatcher,
703
- },
704
- };
156
+ return generateResult(type, name, targetToken, typeInfo);
705
157
  }
706
158
  }
707
159
  catch (e) {
708
160
  // No factory on this token
709
161
  }
162
+ }
163
+ function parseForMetamorpho(calls, index, targetToken) {
710
164
  // MetaMorpho check
711
165
  try {
712
- metamorphoInterface.decodeFunctionResult("MORPHO", calls[index + 1].returnData)[0];
713
- const name = ERC20Interface.decodeFunctionResult("name", calls[index + 2].returnData)[0];
714
- return {
715
- type: tokenType.metamorpho,
716
- calls: [
717
- {
718
- allowFailure: true,
719
- callData: metamorphoInterface.encodeFunctionData("asset"),
720
- target: targetToken,
721
- },
722
- ],
723
- typeInfo: {
724
- name: name,
725
- tokenAddress: targetToken,
726
- },
727
- };
166
+ decodeCall(calls, index + 1, "MORPHO");
167
+ const name = decodeCall(calls, index + 2, "name");
168
+ return generateResult(tokenType.metamorpho, name, targetToken, {});
728
169
  }
729
170
  catch (e) {
730
171
  // Not a metamorpho token
731
172
  }
732
- let name;
733
- try {
734
- name = ERC20Interface.decodeFunctionResult("name", calls[index + 2].returnData)[0];
735
- }
736
- catch (e) {
737
- return {
738
- type: tokenType.unknown,
739
- calls: [],
740
- typeInfo: {
741
- name: "Unknown",
742
- tokenAddress: targetToken,
743
- },
744
- };
745
- }
173
+ }
174
+ function parseForBalancer(calls, index, targetToken, name) {
746
175
  // Check for balancer pools
747
176
  try {
748
- const poolId = balancerPoolInterface.decodeFunctionResult("getPoolId", calls[index + 3].returnData)[0];
749
- return {
750
- type: tokenType.balancerPool,
751
- calls: [],
752
- typeInfo: {
753
- name: name,
754
- tokenAddress: targetToken,
755
- },
756
- };
177
+ decodeCall(calls, index + 3, "getPoolId");
178
+ return generateResult(tokenType.balancerPool, name, targetToken, {});
757
179
  }
758
180
  catch (e) {
759
181
  // Not a balancer pool
760
182
  }
761
- // https://arbiscan.io/address/0xc5a583c532c519196cc2bea060f387780aecc61f
762
- if (name.toLowerCase().includes("aura deposit vault")) {
763
- return {
764
- type: tokenType.aura,
765
- calls: [
766
- // Asset is the balancer pool lp token (not the gauge token)
767
- {
768
- allowFailure: true,
769
- callData: auraInterface.encodeFunctionData("asset"),
770
- target: targetToken,
771
- },
772
- {
773
- allowFailure: true,
774
- callData: auraInterface.encodeFunctionData("operator"),
775
- target: targetToken,
776
- },
777
- {
778
- allowFailure: true,
779
- callData: auraInterface.encodeFunctionData("pid"),
780
- target: targetToken,
781
- },
782
- ],
783
- typeInfo: {
784
- name: name,
785
- tokenAddress: targetToken,
786
- },
787
- };
788
- }
789
- // https://etherscan.io/address/0xb0ac070ae1f9BC564c1F4EA23bD2Ed0aF1B6BA5A#readContract
790
- if (name.toLowerCase().includes("poolside")) {
791
- return {
792
- type: tokenType.poolside,
793
- calls: [
794
- {
795
- allowFailure: true,
796
- callData: UniswapV2PoolInterface.encodeFunctionData("token0"),
797
- target: targetToken,
798
- },
799
- {
800
- allowFailure: true,
801
- callData: UniswapV2PoolInterface.encodeFunctionData("token1"),
802
- target: targetToken,
803
- },
804
- ],
805
- typeInfo: {
806
- name: name,
807
- tokenAddress: targetToken,
808
- },
809
- };
810
- }
811
- // https://arbiscan.io/address/0xe882f63f74e5966c9d2424b745ad6655d24d1336#readContract
812
- if (name.toLowerCase().includes("balancer") && !name.toLowerCase().includes("aura deposit vault")) {
813
- // For balancer pools we need to fetch the gyroscope pool address by calling the lp_token function
814
- return {
815
- type: tokenType.balancerGauge,
816
- calls: [
817
- {
818
- allowFailure: true,
819
- callData: balancerGaugeInterface.encodeFunctionData("lp_token"),
820
- target: targetToken,
821
- },
822
- ],
823
- typeInfo: {
824
- name: name,
825
- tokenAddress: targetToken,
826
- },
827
- };
828
- }
829
- // https://etherscan.io/address/0x9ef444a6d7f4a5adcd68fd5329aa5240c90e14d2#readContract
830
- if (name.toLowerCase().includes("farming of")) {
831
- // 1inch reward staking contract
832
- return {
833
- type: tokenType.gearbox,
834
- calls: [
835
- {
836
- allowFailure: true,
837
- callData: OneInchStakingInterface.encodeFunctionData("stakingToken"),
838
- target: targetToken,
839
- },
840
- ],
841
- typeInfo: {
842
- name: name,
843
- tokenAddress: targetToken,
844
- },
845
- };
846
- }
847
- // https://etherscan.io/address/0xb0050BF47733b7B426b355C358C4700Aa7Ea473A#readContract
848
- if (name.toLowerCase().includes("evk vault")) {
849
- if (name.toLowerCase().startsWith("debt token of evk vault")) {
850
- return {
851
- type: tokenType.euler_borrow,
852
- calls: [
853
- {
854
- allowFailure: true,
855
- callData: eulerInterface.encodeFunctionData("eVault"),
856
- target: targetToken,
857
- },
858
- ],
859
- typeInfo: {
860
- name: name,
861
- tokenAddress: targetToken,
862
- },
863
- };
864
- }
865
- return {
866
- type: tokenType.euler_lend,
867
- calls: [],
868
- typeInfo: {
869
- name: name,
870
- tokenAddress: targetToken,
871
- },
872
- };
873
- }
874
- // https://etherscan.io/address/0x9fb7b4477576fe5b32be4c1843afb1e55f251b33
875
- if (name.toLowerCase().startsWith("fluid") || name.toLowerCase().startsWith("filament")) {
876
- let protocol = "Fluid";
877
- if (name.toLowerCase().startsWith("filament")) {
878
- protocol = "Filament";
879
- }
880
- return {
881
- type: tokenType.fluid,
882
- calls: [
883
- {
884
- allowFailure: true,
885
- callData: fluidInterface.encodeFunctionData("asset"),
886
- target: targetToken,
887
- },
888
- ],
889
- typeInfo: {
890
- name: name,
891
- tokenAddress: targetToken,
892
- protocol: protocol,
893
- },
894
- };
895
- }
896
- // https://arbiscan.io/address/0x9c4ec768c28520b50860ea7a15bd7213a9ff58bf#readProxyContract
897
- if (name.toLowerCase().includes("compound")) {
898
- return {
899
- type: tokenType.compound,
900
- calls: [
901
- {
902
- allowFailure: true,
903
- callData: compoundInterface.encodeFunctionData("baseToken"),
904
- target: targetToken,
905
- },
906
- ],
907
- typeInfo: {
908
- name: name,
909
- tokenAddress: targetToken,
910
- },
911
- };
912
- }
913
- // https://arbiscan.io/address/0xb11A56DA177c5532D5E29cC8363d145bD0822c81#readProxyContract
914
- if (name.toLowerCase().includes("radiant interest")) {
915
- return {
916
- type: tokenType.radiant_lend,
917
- calls: [
918
- {
919
- allowFailure: true,
920
- callData: radiantInterface.encodeFunctionData("UNDERLYING_ASSET_ADDRESS"),
921
- target: targetToken,
922
- },
923
- {
924
- allowFailure: true,
925
- callData: radiantInterface.encodeFunctionData("getAssetPrice"),
926
- target: targetToken,
927
- },
928
- ],
929
- typeInfo: {
930
- name: name,
931
- tokenAddress: targetToken,
932
- },
933
- };
934
- }
935
- // https://arbiscan.io/address/0x2D7d510Dc21F5384C9efd30811D0366F8b4269DF#readProxyContract
936
- if (name.toLowerCase().includes("radiant variable debt")) {
937
- return {
938
- type: tokenType.radiant_borrow,
939
- calls: [
940
- {
941
- allowFailure: true,
942
- callData: radiantInterface.encodeFunctionData("UNDERLYING_ASSET_ADDRESS"),
943
- target: targetToken,
944
- },
945
- {
946
- allowFailure: true,
947
- callData: radiantInterface.encodeFunctionData("getAssetPrice"),
948
- target: targetToken,
949
- },
950
- ],
951
- typeInfo: {
952
- name: name,
953
- tokenAddress: targetToken,
954
- },
955
- };
956
- }
957
- // https://explorer.mode.network/address/0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2
958
- if (name.toLowerCase().includes("ionic")) {
959
- return {
960
- type: tokenType.ionic,
961
- calls: [
962
- {
963
- allowFailure: true,
964
- callData: ionicInterface.encodeFunctionData("underlying"),
965
- target: targetToken,
966
- },
967
- {
968
- allowFailure: true,
969
- callData: ionicInterface.encodeFunctionData("exchangeRateCurrent"),
970
- target: targetToken,
971
- },
972
- ],
973
- typeInfo: {
974
- name: name,
975
- tokenAddress: targetToken,
976
- },
977
- };
978
- }
979
- // https://explorer.mode.network/address/0xe855B8018C22A05F84724e93693caf166912aDD5?tab=read_contract
980
- if (name.toLowerCase().includes("layerbank")) {
981
- return {
982
- type: tokenType.layerbank,
983
- calls: [
984
- {
985
- allowFailure: true,
986
- callData: layerBankInterface.encodeFunctionData("underlying"),
987
- target: targetToken,
988
- },
989
- {
990
- allowFailure: true,
991
- callData: layerBankInterface.encodeFunctionData("exchangeRate"),
992
- target: targetToken,
993
- },
994
- ],
995
- typeInfo: {
996
- name: name,
997
- tokenAddress: targetToken,
998
- },
999
- };
1000
- }
1001
- // https://basescan.org/address/0xedc817a28e8b93b03976fbd4a3ddbc9f7d176c22#readContract
1002
- if (name.toLowerCase().includes("moonwell")) {
1003
- return {
1004
- type: tokenType.moonwell,
1005
- calls: [
1006
- {
1007
- allowFailure: true,
1008
- callData: moonwellInterface.encodeFunctionData("underlying"),
1009
- target: targetToken,
1010
- },
1011
- {
1012
- allowFailure: true,
1013
- callData: moonwellInterface.encodeFunctionData("exchangeRateStored"),
1014
- target: targetToken,
1015
- },
1016
- ],
1017
- typeInfo: {
1018
- name: name,
1019
- tokenAddress: targetToken,
1020
- },
1021
- };
1022
- }
1023
- // https://basescan.org/address/0x4e65fe4dba92790696d040ac24aa414708f5c0ab#readProxyContract
1024
- if (name.toLowerCase().includes("aave") ||
1025
- name.toLowerCase().startsWith("yei") ||
1026
- (name.toLowerCase().startsWith("ironclad") && name.toLowerCase() !== "ironclad token") ||
1027
- name.toLowerCase().includes("zerolend")) {
1028
- let type = tokenType.aave_lending;
1029
- if (name.toLowerCase().includes("debt")) {
1030
- type = tokenType.aave_borrowing;
1031
- }
1032
- let protocol = "Aave";
1033
- if (name.toLowerCase().includes("yei")) {
1034
- protocol = "Yei Finance";
1035
- }
1036
- else if (name.toLowerCase().includes("ironclad") && name.toLowerCase() !== "ironclad token") {
1037
- protocol = "Ironclad";
1038
- }
1039
- else if (name.toLowerCase().includes("zerolend")) {
1040
- protocol = "ZeroLend";
1041
- }
1042
- return {
1043
- type: type,
1044
- calls: [
1045
- {
1046
- allowFailure: true,
1047
- callData: aaveInterface.encodeFunctionData("UNDERLYING_ASSET_ADDRESS"),
1048
- target: targetToken,
1049
- },
1050
- ],
1051
- typeInfo: {
1052
- name: name,
1053
- tokenAddress: targetToken,
1054
- protocol: protocol,
1055
- },
1056
- };
1057
- }
1058
- // https://fraxscan.com/address/0x4f968317721b9c300afbff3fd37365637318271d#readContract
1059
- if (name.toLowerCase().includes("fraxlend interest bearing") ||
1060
- name.toLowerCase().includes("aggregator") ||
1061
- name.toLowerCase().includes("sturdy interest bearing")) {
1062
- let type = tokenType.fraxlend;
1063
- if (name.toLowerCase().includes("aggregator")) {
1064
- type = tokenType.sturdy_aggregator;
1065
- }
1066
- else if (name.toLowerCase().includes("sturdy interest bearing")) {
1067
- type = tokenType.sturdy_silo;
1068
- }
1069
- const calls = [
1070
- {
1071
- allowFailure: true,
1072
- callData: fraxlendInterface.encodeFunctionData("asset"),
1073
- target: targetToken,
1074
- },
1075
- {
1076
- allowFailure: true,
1077
- callData: fraxlendInterface.encodeFunctionData("pricePerShare"),
1078
- target: targetToken,
1079
- },
1080
- ];
1081
- if (type === tokenType.sturdy_silo) {
1082
- calls.push({
1083
- allowFailure: true,
1084
- callData: sturdyInterface.encodeFunctionData("collateralContract"),
1085
- target: targetToken,
1086
- });
1087
- }
1088
- return {
1089
- type: type,
1090
- calls: calls,
1091
- typeInfo: {
1092
- name: name,
1093
- tokenAddress: targetToken,
1094
- },
1095
- };
1096
- }
1097
- // Doing these last because Ra is hard to categorize
1098
- if (name.toLowerCase().includes("uniswap") ||
1099
- name.toLowerCase().includes("stablev1 amm") ||
1100
- name.toLowerCase().includes("volatile pair -") ||
1101
- name.toLowerCase().includes("correlated pair -") ||
1102
- name.toLowerCase().includes("syncswap")) {
1103
- let protocol = "Uniswap V2";
1104
- if (name.toLowerCase().includes("stablev1 amm")) {
1105
- protocol = "Fenix V2";
1106
- }
1107
- else if (name.toLowerCase().includes("volatile pair -") || name.toLowerCase().includes("correlated pair -")) {
1108
- protocol = "Ra";
1109
- }
1110
- else if (name.toLowerCase().includes("syncswap")) {
1111
- protocol = "SyncSwap";
183
+ }
184
+ function parseForStaking(campaign, calls, index, targetToken) {
185
+ try {
186
+ const whitelist = campaign.campaignParameters.whitelist;
187
+ if (whitelist.length === 1) {
188
+ const forwarders = campaign.campaignParameters.forwarders;
189
+ if (forwarders.length === 1) {
190
+ if (forwarders[0].sender === whitelist[0]) {
191
+ const name = decodeCall(calls, index + 2, "name");
192
+ return generateResult(tokenType.staking, name, targetToken, { stakingContract: whitelist[0] });
193
+ }
194
+ }
1112
195
  }
1113
- return {
1114
- type: tokenType.uniswapv2,
1115
- calls: [
1116
- {
1117
- allowFailure: true,
1118
- callData: UniswapV2PoolInterface.encodeFunctionData("token0"),
1119
- target: targetToken,
1120
- },
1121
- {
1122
- allowFailure: true,
1123
- callData: UniswapV2PoolInterface.encodeFunctionData("token1"),
1124
- target: targetToken,
1125
- },
1126
- ],
1127
- typeInfo: {
1128
- name: name,
1129
- tokenAddress: targetToken,
1130
- protocol: protocol,
1131
- },
1132
- };
1133
- }
1134
- // Duo pool on Curve Fraxtal which has no factory
1135
- // https://fraxscan.com/address/0x63eb7846642630456707c3efbb50a03c79b89d81#readContract
1136
- if (name.toLowerCase() === "crvusd/frax" ||
1137
- name.toLowerCase() === "ezeth/wfrxeth" ||
1138
- name.toLowerCase() === "pufeth/wsteth") {
1139
- return {
1140
- type: tokenType.curve_2,
1141
- calls: [
1142
- {
1143
- allowFailure: true,
1144
- callData: curveInterface.encodeFunctionData("get_virtual_price"),
1145
- target: targetToken,
1146
- },
1147
- {
1148
- allowFailure: true,
1149
- callData: curveInterface.encodeFunctionData("coins", [0]),
1150
- target: targetToken,
1151
- },
1152
- {
1153
- allowFailure: true,
1154
- callData: curveInterface.encodeFunctionData("coins", [1]),
1155
- target: targetToken,
1156
- },
1157
- {
1158
- allowFailure: true,
1159
- callData: curveInterface.encodeFunctionData("coins", [2]),
1160
- target: targetToken,
1161
- },
1162
- ],
1163
- typeInfo: {
1164
- name: name,
1165
- tokenAddress: targetToken,
1166
- },
1167
- };
1168
196
  }
1169
- if (name.toLowerCase() === "isei") {
1170
- return {
1171
- type: tokenType.silostaking,
1172
- calls: [],
1173
- typeInfo: {
1174
- name: name,
1175
- tokenAddress: targetToken,
1176
- symbolUnderlyingToken: "SEI",
1177
- },
1178
- };
197
+ catch (e) {
198
+ // No factory on this token
199
+ // console.log(e);
1179
200
  }
1180
- if (name.toLowerCase().startsWith("moo velo")) {
1181
- return {
1182
- type: tokenType.beefy,
1183
- calls: [
1184
- {
1185
- allowFailure: true,
1186
- callData: beefyInterface.encodeFunctionData("getPricePerFullShare", []),
1187
- target: targetToken,
1188
- },
1189
- {
1190
- allowFailure: true,
1191
- callData: beefyInterface.encodeFunctionData("want", []),
1192
- target: targetToken,
1193
- },
1194
- ],
1195
- typeInfo: {
1196
- name: name,
1197
- tokenAddress: targetToken,
1198
- },
1199
- };
201
+ }
202
+ export function getTokenTypeRound1(calls, targetToken, index, campaign) {
203
+ const returnValueOfCalls = calls.map(call => call.returnData);
204
+ let result = parseForFactory(returnValueOfCalls, index, targetToken);
205
+ if (result)
206
+ return result;
207
+ result = parseForEnzyme(returnValueOfCalls, index, targetToken);
208
+ if (result)
209
+ return result;
210
+ result = parseForMetamorpho(returnValueOfCalls, index, targetToken);
211
+ if (result)
212
+ return result;
213
+ result = parseForStaking(campaign, returnValueOfCalls, index, targetToken);
214
+ if (result)
215
+ return result;
216
+ let name;
217
+ try {
218
+ name = decodeCall(returnValueOfCalls, index + 2, "name");
1200
219
  }
1201
- return {
1202
- type: tokenType.unknown,
1203
- calls: [],
1204
- typeInfo: {
1205
- name: name,
1206
- tokenAddress: targetToken,
1207
- },
1208
- };
220
+ catch (e) {
221
+ return generateResult(tokenType.unknown, "Unknown", targetToken, {});
222
+ }
223
+ result = parseForBalancer(returnValueOfCalls, index, targetToken, name);
224
+ if (result)
225
+ return result;
226
+ // Order matters
227
+ const ordered_token_Type = Object.values(tokenType).filter(value => typeof value === "string");
228
+ result = processNamingConditionsInOrder(ordered_token_Type, name, targetToken);
229
+ if (result)
230
+ return result;
231
+ return generateResult(tokenType.unknown, name, targetToken, {});
1209
232
  }