@merkl/api 0.10.129 → 0.10.130

Sign up to get free protection for your applications and to get access to all the features.
Files changed (402) hide show
  1. package/dist/database/api/.generated/default.js +1 -0
  2. package/dist/database/api/.generated/edge.js +609 -0
  3. package/dist/database/api/.generated/index-browser.js +586 -0
  4. package/dist/database/api/.generated/index.js +638 -0
  5. package/dist/database/api/.generated/runtime/edge-esm.js +31 -0
  6. package/dist/database/api/.generated/runtime/edge.js +31 -0
  7. package/dist/database/api/.generated/runtime/index-browser.js +13 -0
  8. package/dist/database/api/.generated/runtime/library.js +143 -0
  9. package/dist/database/api/.generated/runtime/react-native.js +80 -0
  10. package/dist/database/api/.generated/runtime/wasm.js +32 -0
  11. package/dist/database/api/.generated/wasm.js +586 -0
  12. package/dist/database/api/seeder/resources/protocol.js +341 -0
  13. package/dist/database/engine/.generated/default.js +1 -0
  14. package/dist/database/engine/.generated/edge.js +438 -0
  15. package/dist/database/engine/.generated/index-browser.js +415 -0
  16. package/dist/database/engine/.generated/index.js +467 -0
  17. package/dist/database/engine/.generated/runtime/edge-esm.js +31 -0
  18. package/dist/database/engine/.generated/runtime/edge.js +31 -0
  19. package/dist/database/engine/.generated/runtime/index-browser.js +13 -0
  20. package/dist/database/engine/.generated/runtime/library.js +143 -0
  21. package/dist/database/engine/.generated/runtime/react-native.js +80 -0
  22. package/dist/database/engine/.generated/runtime/wasm.js +32 -0
  23. package/dist/database/engine/.generated/wasm.js +415 -0
  24. package/dist/node_modules/@elysiajs/eden/eden/LICENSE +7 -0
  25. package/dist/node_modules/@elysiajs/eden/eden/README.md +46 -0
  26. package/dist/node_modules/@elysiajs/eden/eden/bunfig.toml +2 -0
  27. package/dist/node_modules/@elysiajs/eden/eden/dist/chunk-2IHGLN7W.mjs +1 -0
  28. package/dist/node_modules/@elysiajs/eden/eden/dist/chunk-7WO4HTSU.mjs +1 -0
  29. package/dist/node_modules/@elysiajs/eden/eden/dist/chunk-XYW4OUFN.mjs +1 -0
  30. package/dist/node_modules/@elysiajs/eden/eden/dist/chunk-YAG46HFR.mjs +1 -0
  31. package/dist/node_modules/@elysiajs/eden/eden/dist/errors.d.ts +5 -0
  32. package/dist/node_modules/@elysiajs/eden/eden/dist/fetch/index.d.ts +4 -0
  33. package/dist/node_modules/@elysiajs/eden/eden/dist/fetch/types.d.ts +44 -0
  34. package/dist/node_modules/@elysiajs/eden/eden/dist/fetch.d.mts +48 -0
  35. package/dist/node_modules/@elysiajs/eden/eden/dist/fetch.d.ts +48 -0
  36. package/dist/node_modules/@elysiajs/eden/eden/dist/fetch.global.js +1 -0
  37. package/dist/node_modules/@elysiajs/eden/eden/dist/fetch.js +1 -0
  38. package/dist/node_modules/@elysiajs/eden/eden/dist/fetch.mjs +1 -0
  39. package/dist/node_modules/@elysiajs/eden/eden/dist/index.d.mts +5 -0
  40. package/dist/node_modules/@elysiajs/eden/eden/dist/index.d.ts +5 -0
  41. package/dist/node_modules/@elysiajs/eden/eden/dist/index.global.js +1 -0
  42. package/dist/node_modules/@elysiajs/eden/eden/dist/index.js +1 -0
  43. package/dist/node_modules/@elysiajs/eden/eden/dist/index.mjs +1 -0
  44. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty/index.d.ts +17 -0
  45. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty/types.d.ts +99 -0
  46. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty/utils.d.ts +1 -0
  47. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty.d.mts +114 -0
  48. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty.d.ts +114 -0
  49. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty.global.js +1 -0
  50. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty.js +1 -0
  51. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty.mjs +1 -0
  52. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty2/index.d.ts +5 -0
  53. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty2/types.d.ts +86 -0
  54. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty2/ws.d.ts +14 -0
  55. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty2.d.mts +103 -0
  56. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty2.d.ts +103 -0
  57. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty2.global.js +1 -0
  58. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty2.js +1 -0
  59. package/dist/node_modules/@elysiajs/eden/eden/dist/treaty2.mjs +1 -0
  60. package/dist/node_modules/@elysiajs/eden/eden/dist/types-C41kuZ-K.d.mts +44 -0
  61. package/dist/node_modules/@elysiajs/eden/eden/dist/types-C41kuZ-K.d.ts +44 -0
  62. package/dist/node_modules/@elysiajs/eden/eden/dist/types.d.ts +39 -0
  63. package/dist/node_modules/@elysiajs/eden/eden/dist/utils/parsingUtils.d.ts +6 -0
  64. package/dist/node_modules/@elysiajs/eden/eden/package.json +85 -0
  65. package/dist/package.json +2 -2
  66. package/dist/src/backgroundJobs/index.js +44 -0
  67. package/dist/src/backgroundJobs/jobs/campaignsCacheUpdater.js +160 -0
  68. package/dist/src/backgroundJobs/jobs/health.js +15 -0
  69. package/dist/src/backgroundJobs/jobs/opportunityUpdater.js +63 -0
  70. package/dist/src/backgroundJobs/jobs/priceUpdater.js +16 -0
  71. package/dist/src/backgroundJobs/jobs/sync.js +33 -0
  72. package/dist/src/cache/declaration.js +146 -0
  73. package/dist/src/cache/index.js +152 -0
  74. package/dist/src/cache/redis.js +49 -0
  75. package/dist/src/constants.js +119 -0
  76. package/dist/src/entities/campaign.js +134 -0
  77. package/dist/src/entities/opportunity.js +549 -0
  78. package/dist/src/errors/BadRequest.error.js +7 -0
  79. package/dist/src/errors/Conflict.error.js +7 -0
  80. package/dist/src/errors/HttpError.js +11 -0
  81. package/dist/src/errors/NotFound.error.js +7 -0
  82. package/dist/src/errors/Opportunity.error.js +11 -0
  83. package/dist/src/errors/Unauthorized.error.js +7 -0
  84. package/dist/src/errors/index.js +5 -0
  85. package/dist/src/guards/BackOffice.guard.js +10 -0
  86. package/dist/src/guards/Engine.guard.js +10 -0
  87. package/dist/src/guards/TokenAuth.guard.js +10 -0
  88. package/dist/src/hooks/checkQueryAddressValidity.js +7 -0
  89. package/dist/src/hooks/checkQueryChainIdValidity.js +7 -0
  90. package/dist/src/index.js +79 -0
  91. package/dist/src/internal/controllers/endingCampaigns.js +41 -0
  92. package/dist/src/internal/controllers/unclaimed.js +36 -0
  93. package/dist/src/internal/index.js +30 -0
  94. package/dist/src/libs/campaigns/campaignTypes/AjnaDynamicData.js +111 -0
  95. package/dist/src/libs/campaigns/campaignTypes/BadgerDynamicData.js +93 -0
  96. package/dist/src/libs/campaigns/campaignTypes/CLAMMDynamicData.js +942 -0
  97. package/dist/src/libs/campaigns/campaignTypes/CompoundDynamicData.js +90 -0
  98. package/dist/src/libs/campaigns/campaignTypes/DolomiteDynamicData.js +60 -0
  99. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicData.js +162 -0
  100. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicDataRefacto.js +159 -0
  101. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/eulerVaultNames.js +13 -0
  102. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/factoryFinder.js +29 -0
  103. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/getBlacklistedSupply.js +22 -0
  104. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/metamorphoTvl.js +35 -0
  105. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/spliceTVL.js +21 -0
  106. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +106 -0
  107. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/AaveProcessor.js +26 -0
  108. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/AssetProcessor.js +47 -0
  109. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/AuraProcessor.js +103 -0
  110. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/BalancerGaugeProcessor.js +83 -0
  111. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/BalancerPoolProcessor.js +99 -0
  112. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/BeefyProcessor.js +51 -0
  113. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/CompoundProcessor.js +36 -0
  114. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EnzymeProcessor.js +51 -0
  115. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EulerBorrowProcessor.js +46 -0
  116. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EulerLendProcessor.js +47 -0
  117. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/FluidProcessor.js +36 -0
  118. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/FraxProcessor.js +41 -0
  119. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/GearboxProcessor.js +44 -0
  120. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/GenericProcessor.js +239 -0
  121. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/MetamorphoProcessor.js +43 -0
  122. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/PendleProcessor.js +31 -0
  123. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/RadiantProcessor.js +58 -0
  124. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/RfxProcessor.js +64 -0
  125. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/SpliceProcessor.js +35 -0
  126. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/SturdySiloProcessor.js +37 -0
  127. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/TemplateProcessor.js +40 -0
  128. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/TorosProcessor.js +33 -0
  129. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/UniswapProcessor.js +48 -0
  130. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/WoofiProcessor.js +40 -0
  131. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/curveProcessor.js +68 -0
  132. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/processorMapping.js +77 -0
  133. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesPrices.js +583 -0
  134. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesPricesRefactoFinal.js +24 -0
  135. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1.js +1209 -0
  136. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1RefactoFinal.js +194 -0
  137. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2.js +645 -0
  138. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2RefactoFinal.js +22 -0
  139. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound3.js +392 -0
  140. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound3RefactoFinal.js +22 -0
  141. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound4.js +323 -0
  142. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound4RefactoFinal.js +22 -0
  143. package/dist/src/libs/campaigns/campaignTypes/ERC20_SNAPSHOTDynamicData.js +38 -0
  144. package/dist/src/libs/campaigns/campaignTypes/EulerDynamicData.js +165 -0
  145. package/dist/src/libs/campaigns/campaignTypes/JSON_AIRDROPDynamicData.js +19 -0
  146. package/dist/src/libs/campaigns/campaignTypes/MORPHODynamicData.js +120 -0
  147. package/dist/src/libs/campaigns/campaignTypes/RadiantDynamicData.js +112 -0
  148. package/dist/src/libs/campaigns/campaignTypes/SILODynamicData.js +113 -0
  149. package/dist/src/libs/campaigns/campaignsDynamicData.js +83 -0
  150. package/dist/src/libs/campaigns/campaignsDynamicDataRefacto.js +78 -0
  151. package/dist/src/libs/campaigns/getCampaigns.js +18 -0
  152. package/dist/src/libs/campaigns/utils/fetchA51Strategies.js +44 -0
  153. package/dist/src/libs/campaigns/utils/fetchClamInfo.js +27 -0
  154. package/dist/src/libs/campaigns/utils/fetchLogs.js +91 -0
  155. package/dist/src/libs/campaigns/utils/getCompV2ForksVaults.js +122 -0
  156. package/dist/src/libs/campaigns/utils/getContractCreationBlock.js +44 -0
  157. package/dist/src/libs/campaigns/utils/getDolomiteMarkets.js +50 -0
  158. package/dist/src/libs/campaigns/utils/getEulerV2Vaults.js +87 -0
  159. package/dist/src/libs/campaigns/utils/getLastEligibilityRatio.js +56 -0
  160. package/dist/src/libs/computeFee.js +34 -0
  161. package/dist/src/libs/custom/twtParticipants.js +54 -0
  162. package/dist/src/libs/deprecated-merklv3/index.js +184 -0
  163. package/dist/src/libs/getTokensList.js +37 -0
  164. package/dist/src/libs/merklChainData.js +129 -0
  165. package/dist/src/libs/parse/marketsWithCache.js +8 -0
  166. package/dist/src/libs/positions/ajna/index.js +107 -0
  167. package/dist/src/libs/positions/badger/index.js +79 -0
  168. package/dist/src/libs/positions/clamm/index.js +419 -0
  169. package/dist/src/libs/positions/clamm/thegraph/fetchAlmPositions.js +35 -0
  170. package/dist/src/libs/positions/clamm/thegraph/fetchAmmPositions.js +35 -0
  171. package/dist/src/libs/positions/clamm/thegraph/fetchFarmedPositions.js +44 -0
  172. package/dist/src/libs/positions/clamm/thegraph/index.js +162 -0
  173. package/dist/src/libs/positions/compound/index.js +93 -0
  174. package/dist/src/libs/positions/dolomite/index.js +49 -0
  175. package/dist/src/libs/positions/erc20/index.js +55 -0
  176. package/dist/src/libs/positions/euler/index.js +57 -0
  177. package/dist/src/libs/positions/index.js +48 -0
  178. package/dist/src/libs/positions/morpho/index.js +177 -0
  179. package/dist/src/libs/positions/prepareFetch.js +339 -0
  180. package/dist/src/libs/positions/silo/index.js +67 -0
  181. package/dist/src/libs/positions/types.js +1 -0
  182. package/dist/src/libs/reports/campaignReport.js +37 -0
  183. package/dist/src/libs/reports/mainParameterRewards.js +48 -0
  184. package/dist/src/libs/rewards/userRewards.js +154 -0
  185. package/dist/src/libs/staticCampaigns.js +10 -0
  186. package/dist/src/libs/tokens/balances.js +126 -0
  187. package/dist/src/libs/tokens/tokenInfo.js +22 -0
  188. package/dist/src/modules/v4/accounting/accounting.controller.js +66 -0
  189. package/dist/src/modules/v4/accounting/accounting.model.js +32 -0
  190. package/dist/src/modules/v4/accounting/accounting.repository.js +100 -0
  191. package/dist/src/modules/v4/accounting/accounting.service.js +78 -0
  192. package/dist/src/modules/v4/accounting/index.js +3 -0
  193. package/dist/src/modules/v4/apr/apr.controller.js +1 -0
  194. package/dist/src/modules/v4/apr/apr.model.js +1 -0
  195. package/dist/src/modules/v4/apr/apr.repository.js +1 -0
  196. package/dist/src/modules/v4/apr/apr.service.js +40 -0
  197. package/dist/src/modules/v4/apr/index.js +2 -0
  198. package/dist/src/modules/v4/blacklist/blacklist.controller.js +45 -0
  199. package/dist/src/modules/v4/blacklist/blacklist.model.js +13 -0
  200. package/dist/src/modules/v4/blacklist/blacklist.repository.js +56 -0
  201. package/dist/src/modules/v4/blacklist/blacklist.service.js +24 -0
  202. package/dist/src/modules/v4/blacklist/index.js +3 -0
  203. package/dist/src/modules/v4/cache/cache.model.js +14 -0
  204. package/dist/src/modules/v4/cache/cache.repository.js +10 -0
  205. package/dist/src/modules/v4/cache/cache.service.js +44 -0
  206. package/dist/src/modules/v4/cache/index.js +1 -0
  207. package/dist/src/modules/v4/campaign/campaign.controller.js +56 -0
  208. package/dist/src/modules/v4/campaign/campaign.model.js +54 -0
  209. package/dist/src/modules/v4/campaign/campaign.repository.js +346 -0
  210. package/dist/src/modules/v4/campaign/campaign.service.js +203 -0
  211. package/dist/src/modules/v4/campaign/index.js +3 -0
  212. package/dist/src/modules/v4/chain/chain.controller.js +40 -0
  213. package/dist/src/modules/v4/chain/chain.model.js +17 -0
  214. package/dist/src/modules/v4/chain/chain.repository.js +64 -0
  215. package/dist/src/modules/v4/chain/chain.service.js +42 -0
  216. package/dist/src/modules/v4/chain/index.js +3 -0
  217. package/dist/src/modules/v4/dynamicData/dynamicData.controller.js +19 -0
  218. package/dist/src/modules/v4/dynamicData/dynamicData.model.js +6 -0
  219. package/dist/src/modules/v4/dynamicData/dynamicData.repository.js +1 -0
  220. package/dist/src/modules/v4/dynamicData/dynamicData.service.js +49 -0
  221. package/dist/src/modules/v4/dynamicData/index.js +3 -0
  222. package/dist/src/modules/v4/enso/enso.model.js +108 -0
  223. package/dist/src/modules/v4/enso/enso.service.js +46 -0
  224. package/dist/src/modules/v4/explorer/explorer.model.js +2 -0
  225. package/dist/src/modules/v4/explorer/explorer.repository.js +23 -0
  226. package/dist/src/modules/v4/explorer/explorer.service.js +24 -0
  227. package/dist/src/modules/v4/explorer/index.js +1 -0
  228. package/dist/src/modules/v4/index.js +4 -0
  229. package/dist/src/modules/v4/merklRoot/index.js +3 -0
  230. package/dist/src/modules/v4/merklRoot/merklRoot.controller.js +19 -0
  231. package/dist/src/modules/v4/merklRoot/merklRoot.model.js +6 -0
  232. package/dist/src/modules/v4/merklRoot/merklRoot.repository.js +31 -0
  233. package/dist/src/modules/v4/merklRoot/merklRoot.service.js +38 -0
  234. package/dist/src/modules/v4/opportunity/index.js +3 -0
  235. package/dist/src/modules/v4/opportunity/opportunity.controller.js +69 -0
  236. package/dist/src/modules/v4/opportunity/opportunity.model.js +36 -0
  237. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +14 -0
  238. package/dist/src/modules/v4/opportunity/opportunity.repository.js +217 -0
  239. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +0 -15
  240. package/dist/src/modules/v4/opportunity/opportunity.service.js +180 -0
  241. package/dist/src/modules/v4/opportunity/subservices/getAjnaMetadata.service.js +50 -0
  242. package/dist/src/modules/v4/opportunity/subservices/getBadgerMetadata.service.js +23 -0
  243. package/dist/src/modules/v4/opportunity/subservices/getClammMetadata.service.js +33 -0
  244. package/dist/src/modules/v4/opportunity/subservices/getCompoundMetadata.service.js +18 -0
  245. package/dist/src/modules/v4/opportunity/subservices/getDolomiteMetadata.service.js +15 -0
  246. package/dist/src/modules/v4/opportunity/subservices/getErc20Metadata.service.js +63 -0
  247. package/dist/src/modules/v4/opportunity/subservices/getErc20SnapshotMetadata.service.js +8 -0
  248. package/dist/src/modules/v4/opportunity/subservices/getEulerMetadata.service.js +30 -0
  249. package/dist/src/modules/v4/opportunity/subservices/getJsonAirDropMetadata.service.js +36 -0
  250. package/dist/src/modules/v4/opportunity/subservices/getMorphoMetadata.service.js +19 -0
  251. package/dist/src/modules/v4/opportunity/subservices/getRadiantMetadata.service.js +9 -0
  252. package/dist/src/modules/v4/opportunity/subservices/getSiloMetadata.service.js +13 -0
  253. package/dist/src/modules/v4/opportunity/transform-id.pipe.js +6 -0
  254. package/dist/src/modules/v4/opportunity/validate-id.pipe.js +12 -0
  255. package/dist/src/modules/v4/participate/participate.controller.js +66 -0
  256. package/dist/src/modules/v4/participate/participate.model.js +24 -0
  257. package/dist/src/modules/v4/participate/participate.service.js +33 -0
  258. package/dist/src/modules/v4/price/index.js +3 -0
  259. package/dist/src/modules/v4/price/price.controller.js +62 -0
  260. package/dist/src/modules/v4/price/price.model.js +12 -0
  261. package/dist/src/modules/v4/price/price.repository.js +18 -0
  262. package/dist/src/modules/v4/price/price.service.js +44 -0
  263. package/dist/src/modules/v4/prisma/index.js +1 -0
  264. package/dist/src/modules/v4/protocol/index.js +3 -0
  265. package/dist/src/modules/v4/protocol/protocol.controller.js +23 -0
  266. package/dist/src/modules/v4/protocol/protocol.model.js +68 -0
  267. package/dist/src/modules/v4/protocol/protocol.repository.js +37 -0
  268. package/dist/src/modules/v4/protocol/protocol.service.js +77 -0
  269. package/dist/src/modules/v4/reward/index.js +3 -0
  270. package/dist/src/modules/v4/reward/reward.controller.js +52 -0
  271. package/dist/src/modules/v4/reward/reward.model.js +104 -0
  272. package/dist/src/modules/v4/reward/reward.repository.js +237 -0
  273. package/dist/src/modules/v4/reward/reward.service.js +283 -0
  274. package/dist/src/modules/v4/reward/rewardConvertor.service.js +136 -0
  275. package/dist/src/modules/v4/router.js +57 -0
  276. package/dist/src/modules/v4/status/index.js +3 -0
  277. package/dist/src/modules/v4/status/status.controller.js +48 -0
  278. package/dist/src/modules/v4/status/status.model.js +24 -0
  279. package/dist/src/modules/v4/status/status.repository.js +88 -0
  280. package/dist/src/modules/v4/status/status.service.js +60 -0
  281. package/dist/src/modules/v4/token/index.js +3 -0
  282. package/dist/src/modules/v4/token/token.controller.js +32 -0
  283. package/dist/src/modules/v4/token/token.model.js +23 -0
  284. package/dist/src/modules/v4/token/token.repository.js +128 -0
  285. package/dist/src/modules/v4/token/token.service.js +268 -0
  286. package/dist/src/modules/v4/tvl/index.js +2 -0
  287. package/dist/src/modules/v4/tvl/tvl.controller.js +1 -0
  288. package/dist/src/modules/v4/tvl/tvl.model.js +1 -0
  289. package/dist/src/modules/v4/tvl/tvl.repository.js +1 -0
  290. package/dist/src/modules/v4/tvl/tvl.service.js +49 -0
  291. package/dist/src/modules/v4/uniswapV4/index.js +4 -0
  292. package/dist/src/modules/v4/uniswapV4/uniswapV4.controller.js +11 -0
  293. package/dist/src/modules/v4/uniswapV4/uniswapV4.model.js +17 -0
  294. package/dist/src/modules/v4/uniswapV4/uniswapV4.repository.js +2 -0
  295. package/dist/src/modules/v4/uniswapV4/uniswapV4.service.js +73 -0
  296. package/dist/src/modules/v4/user/index.js +3 -0
  297. package/dist/src/modules/v4/user/user.controller.js +69 -0
  298. package/dist/src/modules/v4/user/user.model.js +18 -0
  299. package/dist/src/modules/v4/user/user.repository.js +38 -0
  300. package/dist/src/modules/v4/user/user.service.js +50 -0
  301. package/dist/src/plugins/error-handling.plugin.js +28 -0
  302. package/dist/src/plugins/logger.plugin.js +22 -0
  303. package/dist/src/routes/v1/allowances.js +115 -0
  304. package/dist/src/routes/v1/balances.js +25 -0
  305. package/dist/src/routes/v1/prices.js +11 -0
  306. package/dist/src/routes/v1/tokens.js +17 -0
  307. package/dist/src/routes/v2/merkl.js +13 -0
  308. package/dist/src/routes/v3/ERC20Campaigns.js +63 -0
  309. package/dist/src/routes/v3/app.js +18 -0
  310. package/dist/src/routes/v3/blacklist.js +18 -0
  311. package/dist/src/routes/v3/campaign/delay.js +78 -0
  312. package/dist/src/routes/v3/campaignClaims.js +24 -0
  313. package/dist/src/routes/v3/campaignReport.js +22 -0
  314. package/dist/src/routes/v3/campaignUnclaimed.js +28 -0
  315. package/dist/src/routes/v3/campaigns.js +101 -0
  316. package/dist/src/routes/v3/campaignsForMainParameter.js +19 -0
  317. package/dist/src/routes/v3/campaignsInfo.js +54 -0
  318. package/dist/src/routes/v3/campaignsRewardsReport.js +47 -0
  319. package/dist/src/routes/v3/claims.js +45 -0
  320. package/dist/src/routes/v3/compoundV2.js +9 -0
  321. package/dist/src/routes/v3/createCampaign.js +66 -0
  322. package/dist/src/routes/v3/dolomite.js +9 -0
  323. package/dist/src/routes/v3/euler.js +9 -0
  324. package/dist/src/routes/v3/exports/campaigns.js +28 -0
  325. package/dist/src/routes/v3/fetch.js +27 -0
  326. package/dist/src/routes/v3/health.js +13 -0
  327. package/dist/src/routes/v3/lostyield.js +98 -0
  328. package/dist/src/routes/v3/merkl.js +119 -0
  329. package/dist/src/routes/v3/morphoMarkets.js +27 -0
  330. package/dist/src/routes/v3/morphoVaults.js +22 -0
  331. package/dist/src/routes/v3/multiChainPositions.js +69 -0
  332. package/dist/src/routes/v3/opportunity.js +63 -0
  333. package/dist/src/routes/v3/overview.js +73 -0
  334. package/dist/src/routes/v3/parse.js +23 -0
  335. package/dist/src/routes/v3/payload.js +40 -0
  336. package/dist/src/routes/v3/poolInfo.js +88 -0
  337. package/dist/src/routes/v3/positions.js +62 -0
  338. package/dist/src/routes/v3/radiant.js +26 -0
  339. package/dist/src/routes/v3/recipients.js +20 -0
  340. package/dist/src/routes/v3/rewards.js +33 -0
  341. package/dist/src/routes/v3/rewardsReport.js +51 -0
  342. package/dist/src/routes/v3/rootForTimestamp.js +47 -0
  343. package/dist/src/routes/v3/silo.js +20 -0
  344. package/dist/src/routes/v3/token.js +24 -0
  345. package/dist/src/routes/v3/tokenUnclaimed.js +24 -0
  346. package/dist/src/routes/v3/twt/participants.js +11 -0
  347. package/dist/src/routes/v3/updates.js +47 -0
  348. package/dist/src/routes/v3/userRewards.js +59 -0
  349. package/dist/src/types/index.js +6 -0
  350. package/dist/src/types/parameters/Action.js +11 -0
  351. package/dist/src/types/parameters/Chain.js +13 -0
  352. package/dist/src/types/parameters/ChainCampaignId.js +13 -0
  353. package/dist/src/types/parameters/MainParameter.js +19 -0
  354. package/dist/src/types/parameters/OpportunityId.js +14 -0
  355. package/dist/src/types/parameters/Timestamp.js +16 -0
  356. package/dist/src/types/parameters/Type.js +15 -0
  357. package/dist/src/types/parameters/index.js +17 -0
  358. package/dist/src/types/returnTypes.js +1 -0
  359. package/dist/src/types/utils.js +1 -0
  360. package/dist/src/utils/addString.js +6 -0
  361. package/dist/src/utils/bigintToString.js +20 -0
  362. package/dist/src/utils/crypto.js +4 -0
  363. package/dist/src/utils/decodeCalls.js +170 -0
  364. package/dist/src/utils/encodeCalls.js +240 -0
  365. package/dist/src/utils/error.js +90 -0
  366. package/dist/src/utils/execute.js +41 -0
  367. package/dist/src/utils/generateCardName.js +89 -0
  368. package/dist/src/utils/generic.js +117 -0
  369. package/dist/src/utils/hashArray.js +4 -0
  370. package/dist/src/utils/lastBlockBefore.js +78 -0
  371. package/dist/src/utils/logger.js +52 -0
  372. package/dist/src/utils/pricer.js +180 -0
  373. package/dist/src/utils/prices/chainlinkRead.js +8 -0
  374. package/dist/src/utils/prices/curveVirtualPrice.js +7 -0
  375. package/dist/src/utils/prices/getDQUICK.js +8 -0
  376. package/dist/src/utils/prices/priceFetcherFactory.js +29 -0
  377. package/dist/src/utils/prices/priceService.js +328 -0
  378. package/dist/src/utils/prices/services/coinGeckoService.js +53 -0
  379. package/dist/src/utils/prices/services/defillamaService.js +53 -0
  380. package/dist/src/utils/prices/services/dexScreenerService.js +62 -0
  381. package/dist/src/utils/prices/services/erc4626Service.js +30 -0
  382. package/dist/src/utils/prices/services/getERC4626.js +11 -0
  383. package/dist/src/utils/prices/services/indexCoopService.js +55 -0
  384. package/dist/src/utils/prices/services/priceFetcher.js +1 -0
  385. package/dist/src/utils/prices/uniV2Price.js +40 -0
  386. package/dist/src/utils/prisma.js +12 -0
  387. package/dist/src/utils/providers.js +30 -0
  388. package/dist/src/utils/queries/activeCampaigns.js +22 -0
  389. package/dist/src/utils/queries/allCampaigns.js +51 -0
  390. package/dist/src/utils/queries/campaignsForMainParameter.js +23 -0
  391. package/dist/src/utils/queries/claimsOverTime.js +111 -0
  392. package/dist/src/utils/queries/endingCampaigns.js +21 -0
  393. package/dist/src/utils/queries/futureCampaigns.js +19 -0
  394. package/dist/src/utils/queries/mainParameterCampaigns.js +11 -0
  395. package/dist/src/utils/queries/rewardsAmount.js +106 -0
  396. package/dist/src/utils/queries/unclaimed.js +81 -0
  397. package/dist/src/utils/rateLimit.js +13 -0
  398. package/dist/src/utils/stryke.js +4 -0
  399. package/dist/src/utils/throw.js +27 -0
  400. package/dist/src/utils/validation.js +20 -0
  401. package/dist/tsconfig.package.tsbuildinfo +1 -1
  402. package/package.json +2 -2
@@ -0,0 +1,1209 @@
1
+ import { Interface } from "@ethersproject/abi";
2
+ import { ERC20Interface, UniswapV2PoolInterface } from "@sdk";
3
+ import { enzymeFundValueCalculatorRouterMapping, getTypeFromFactoryAddress } from "./helpers/factoryFinder";
4
+ 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) {
561
+ try {
562
+ const factory = factoryInterface.decodeFunctionResult("factory", calls[index].returnData)[0];
563
+ const name = ERC20Interface.decodeFunctionResult("name", calls[index + 2].returnData)[0];
564
+ 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
+ }
679
+ }
680
+ catch (e) {
681
+ // No factory on this token
682
+ }
683
+ // Enzyme check
684
+ try {
685
+ const dispatcher = enzymeInterface.decodeFunctionResult("getCreator", calls[index + 4].returnData)[0];
686
+ const name = ERC20Interface.decodeFunctionResult("name", calls[index + 2].returnData)[0];
687
+ const type = getTypeFromFactoryAddress(dispatcher);
688
+ const fundValueCalculator = enzymeFundValueCalculatorRouterMapping[dispatcher];
689
+ 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
+ };
705
+ }
706
+ }
707
+ catch (e) {
708
+ // No factory on this token
709
+ }
710
+ // MetaMorpho check
711
+ 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
+ };
728
+ }
729
+ catch (e) {
730
+ // Not a metamorpho token
731
+ }
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
+ }
746
+ // Check for balancer pools
747
+ 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
+ };
757
+ }
758
+ catch (e) {
759
+ // Not a balancer pool
760
+ }
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";
1112
+ }
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
+ }
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
+ };
1179
+ }
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
+ };
1200
+ }
1201
+ return {
1202
+ type: tokenType.unknown,
1203
+ calls: [],
1204
+ typeInfo: {
1205
+ name: name,
1206
+ tokenAddress: targetToken,
1207
+ },
1208
+ };
1209
+ }