@merkl/api 0.19.6 → 0.19.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/dist/src/backgroundJobs/jobs/campaignsCacheUpdater.js +4 -3
  2. package/dist/src/eden/index.d.ts +85 -48
  3. package/dist/src/engine/dynamicData/factory.d.ts +3 -0
  4. package/dist/src/engine/dynamicData/factory.js +54 -0
  5. package/dist/src/engine/dynamicData/implementations/Ajna.d.ts +7 -0
  6. package/dist/src/engine/dynamicData/implementations/Ajna.js +101 -0
  7. package/dist/src/engine/dynamicData/implementations/Ambiant.d.ts +7 -0
  8. package/dist/src/engine/dynamicData/implementations/Ambiant.js +227 -0
  9. package/dist/src/engine/dynamicData/implementations/Badger.d.ts +7 -0
  10. package/dist/src/engine/dynamicData/implementations/Badger.js +84 -0
  11. package/dist/src/engine/dynamicData/implementations/Clamm.d.ts +7 -0
  12. package/dist/src/engine/dynamicData/implementations/Clamm.js +970 -0
  13. package/dist/src/engine/dynamicData/implementations/Compound.d.ts +7 -0
  14. package/dist/src/engine/dynamicData/implementations/Compound.js +136 -0
  15. package/dist/src/engine/dynamicData/implementations/Dolomite.d.ts +7 -0
  16. package/dist/src/engine/dynamicData/implementations/Dolomite.js +53 -0
  17. package/dist/src/engine/dynamicData/implementations/EigenLayer.d.ts +7 -0
  18. package/dist/src/engine/dynamicData/implementations/EigenLayer.js +64 -0
  19. package/dist/src/engine/dynamicData/implementations/Encompassing.d.ts +7 -0
  20. package/dist/src/engine/dynamicData/implementations/Encompassing.js +26 -0
  21. package/dist/src/engine/dynamicData/implementations/Erc20.d.ts +6 -0
  22. package/dist/src/engine/dynamicData/implementations/Erc20.js +159 -0
  23. package/dist/src/engine/dynamicData/implementations/Erc20Snapshot.d.ts +7 -0
  24. package/dist/src/engine/dynamicData/implementations/Erc20Snapshot.js +32 -0
  25. package/dist/src/engine/dynamicData/implementations/EventBased.d.ts +7 -0
  26. package/dist/src/engine/dynamicData/implementations/EventBased.js +104 -0
  27. package/dist/src/engine/dynamicData/implementations/Hyperdrive.d.ts +7 -0
  28. package/dist/src/engine/dynamicData/implementations/Hyperdrive.js +96 -0
  29. package/dist/src/engine/dynamicData/implementations/Morpho.d.ts +7 -0
  30. package/dist/src/engine/dynamicData/implementations/Morpho.js +109 -0
  31. package/dist/src/engine/dynamicData/implementations/Radiant.d.ts +7 -0
  32. package/dist/src/engine/dynamicData/implementations/Radiant.js +117 -0
  33. package/dist/src/engine/dynamicData/implementations/Silo.d.ts +9 -0
  34. package/dist/src/engine/dynamicData/implementations/Silo.js +109 -0
  35. package/dist/src/engine/dynamicData/implementations/UniswapV4.d.ts +7 -0
  36. package/dist/src/engine/dynamicData/implementations/UniswapV4.js +249 -0
  37. package/dist/src/engine/dynamicData/implementations/Vest.d.ts +9 -0
  38. package/dist/src/engine/dynamicData/implementations/Vest.js +58 -0
  39. package/dist/src/engine/dynamicData/implementations/default.d.ts +5 -0
  40. package/dist/src/engine/dynamicData/implementations/default.js +5 -0
  41. package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getEulerV2Vaults.js +1 -1
  42. package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/GenericProcessor.d.ts +1 -1
  43. package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/tokenType.d.ts +2 -1
  44. package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/tokenType.js +2 -0
  45. package/dist/src/engine/erc20SubTypeProcessors/implementations/BunniV2Processor.d.ts +45 -0
  46. package/dist/src/engine/erc20SubTypeProcessors/implementations/BunniV2Processor.js +87 -0
  47. package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/processorMapping.js +2 -0
  48. package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound1.js +2 -0
  49. package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound2.d.ts +1 -1
  50. package/dist/src/{factories → engine}/opportunityMetadata/implementations/Erc20.js +3 -3
  51. package/dist/src/{factories → engine}/opportunityMetadata/implementations/Euler.d.ts +1 -1
  52. package/dist/src/{factories → engine}/opportunityMetadata/implementations/Euler.js +7 -7
  53. package/dist/src/{factories → engine}/opportunityMetadata/implementations/EventBased.d.ts +1 -1
  54. package/dist/src/{factories → engine}/opportunityMetadata/implementations/EventBased.js +2 -2
  55. package/dist/src/{factories → engine}/opportunityMetadata/implementations/Vest.js +1 -1
  56. package/dist/src/index.d.ts +19 -16
  57. package/dist/src/jobs/update-euler-vaults.js +2 -2
  58. package/dist/src/modules/v4/apr/apr.service.d.ts +1 -1
  59. package/dist/src/modules/v4/apr/apr.service.js +4 -4
  60. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +5 -0
  61. package/dist/src/modules/v4/campaign/campaign.model.d.ts +1 -0
  62. package/dist/src/modules/v4/campaign/campaign.model.js +1 -0
  63. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +4 -0
  64. package/dist/src/modules/v4/campaign/campaign.repository.js +2 -1
  65. package/dist/src/modules/v4/campaign/campaign.service.d.ts +0 -8
  66. package/dist/src/modules/v4/campaign/campaign.service.js +0 -13
  67. package/dist/src/modules/v4/dynamicData/dynamicData.service.js +3 -4
  68. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +8 -0
  69. package/dist/src/modules/v4/opportunity/opportunity.converter.js +2 -2
  70. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +2 -0
  71. package/dist/src/modules/v4/opportunity/opportunity.model.js +2 -0
  72. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +1 -1
  73. package/dist/src/modules/v4/opportunity/opportunity.repository.js +14 -10
  74. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +2 -2
  75. package/dist/src/modules/v4/opportunity/opportunity.service.js +5 -5
  76. package/dist/src/modules/v4/router.d.ts +14 -0
  77. package/dist/src/modules/v4/token/token.controller.d.ts +1 -0
  78. package/dist/src/modules/v4/token/token.model.d.ts +1 -0
  79. package/dist/src/modules/v4/token/token.model.js +1 -0
  80. package/dist/src/modules/v4/token/token.service.d.ts +3 -1
  81. package/dist/src/modules/v4/token/token.service.js +18 -0
  82. package/dist/src/modules/v4/uniswapV4/uniswapV4.controller.d.ts +2 -2
  83. package/dist/src/modules/v4/uniswapV4/uniswapV4.service.d.ts +2 -2
  84. package/dist/src/modules/v4/uniswapV4/uniswapV4.service.js +1 -1
  85. package/dist/src/routes/v3/campaigns.d.ts +1 -1
  86. package/dist/src/routes/v3/compoundV2.d.ts +2 -10
  87. package/dist/src/routes/v3/compoundV2.js +1 -1
  88. package/dist/src/routes/v3/dolomite.js +1 -1
  89. package/dist/src/routes/v3/euler.js +1 -1
  90. package/dist/src/routes/v3/router.d.ts +5 -16
  91. package/dist/src/routes/v3/uniswapv4.d.ts +2 -5
  92. package/dist/src/routes/v3/uniswapv4.js +1 -1
  93. package/dist/src/utils/decodeCalls.d.ts +1 -1
  94. package/dist/src/utils/decodeCalls.js +8 -2
  95. package/dist/src/utils/encodeCalls.d.ts +1 -1
  96. package/dist/src/utils/encodeCalls.js +20 -2
  97. package/dist/src/utils/generateCardName.d.ts +1 -1
  98. package/dist/src/utils/generateCardName.js +3 -1
  99. package/dist/src/utils/generateIcons.d.ts +1 -1
  100. package/dist/src/utils/generateIcons.js +1 -1
  101. package/dist/tsconfig.package.tsbuildinfo +1 -1
  102. package/package.json +2 -2
  103. package/dist/src/factories/dynamicData/factory.d.ts +0 -0
  104. package/dist/src/factories/dynamicData/factory.js +0 -10
  105. package/dist/src/libs/campaigns/campaignTypes/AjnaDynamicData.d.ts +0 -5
  106. package/dist/src/libs/campaigns/campaignTypes/AjnaDynamicData.js +0 -111
  107. package/dist/src/libs/campaigns/campaignTypes/AmbientDynamicData.d.ts +0 -3
  108. package/dist/src/libs/campaigns/campaignTypes/AmbientDynamicData.js +0 -243
  109. package/dist/src/libs/campaigns/campaignTypes/BadgerDynamicData.d.ts +0 -5
  110. package/dist/src/libs/campaigns/campaignTypes/BadgerDynamicData.js +0 -93
  111. package/dist/src/libs/campaigns/campaignTypes/CLAMMDynamicData.d.ts +0 -3
  112. package/dist/src/libs/campaigns/campaignTypes/CLAMMDynamicData.js +0 -986
  113. package/dist/src/libs/campaigns/campaignTypes/CompoundDynamicData.d.ts +0 -3
  114. package/dist/src/libs/campaigns/campaignTypes/CompoundDynamicData.js +0 -139
  115. package/dist/src/libs/campaigns/campaignTypes/DolomiteDynamicData.d.ts +0 -5
  116. package/dist/src/libs/campaigns/campaignTypes/DolomiteDynamicData.js +0 -60
  117. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicData.d.ts +0 -4
  118. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicData.js +0 -164
  119. package/dist/src/libs/campaigns/campaignTypes/ERC20_SNAPSHOTDynamicData.d.ts +0 -5
  120. package/dist/src/libs/campaigns/campaignTypes/ERC20_SNAPSHOTDynamicData.js +0 -38
  121. package/dist/src/libs/campaigns/campaignTypes/EigenLayerDynamicData.d.ts +0 -3
  122. package/dist/src/libs/campaigns/campaignTypes/EigenLayerDynamicData.js +0 -67
  123. package/dist/src/libs/campaigns/campaignTypes/EncompassingDynamicData.d.ts +0 -5
  124. package/dist/src/libs/campaigns/campaignTypes/EncompassingDynamicData.js +0 -34
  125. package/dist/src/libs/campaigns/campaignTypes/EventBasedDynamicData.d.ts +0 -3
  126. package/dist/src/libs/campaigns/campaignTypes/EventBasedDynamicData.js +0 -114
  127. package/dist/src/libs/campaigns/campaignTypes/HyperdriveDynamicData.d.ts +0 -5
  128. package/dist/src/libs/campaigns/campaignTypes/HyperdriveDynamicData.js +0 -99
  129. package/dist/src/libs/campaigns/campaignTypes/JSON_AIRDROPDynamicData.d.ts +0 -5
  130. package/dist/src/libs/campaigns/campaignTypes/JSON_AIRDROPDynamicData.js +0 -19
  131. package/dist/src/libs/campaigns/campaignTypes/MORPHODynamicData.d.ts +0 -5
  132. package/dist/src/libs/campaigns/campaignTypes/MORPHODynamicData.js +0 -112
  133. package/dist/src/libs/campaigns/campaignTypes/RadiantDynamicData.d.ts +0 -3
  134. package/dist/src/libs/campaigns/campaignTypes/RadiantDynamicData.js +0 -122
  135. package/dist/src/libs/campaigns/campaignTypes/SILODynamicData.d.ts +0 -7
  136. package/dist/src/libs/campaigns/campaignTypes/SILODynamicData.js +0 -115
  137. package/dist/src/libs/campaigns/campaignTypes/UniswapV4DynamicData.d.ts +0 -3
  138. package/dist/src/libs/campaigns/campaignTypes/UniswapV4DynamicData.js +0 -265
  139. package/dist/src/libs/campaigns/campaignTypes/VestDynamicData.d.ts +0 -5
  140. package/dist/src/libs/campaigns/campaignTypes/VestDynamicData.js +0 -61
  141. package/dist/src/libs/campaigns/campaignsDynamicData.d.ts +0 -3
  142. package/dist/src/libs/campaigns/campaignsDynamicData.js +0 -131
  143. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchA51Strategies.d.ts +0 -0
  144. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchA51Strategies.js +0 -0
  145. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchAmbientInfo.d.ts +0 -0
  146. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchAmbientInfo.js +0 -0
  147. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchClamInfo.d.ts +0 -0
  148. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchClamInfo.js +0 -0
  149. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchLogs.d.ts +0 -0
  150. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchLogs.js +0 -0
  151. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getCompV2ForksVaults.d.ts +0 -0
  152. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getCompV2ForksVaults.js +0 -0
  153. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getContractCreationBlock.d.ts +0 -0
  154. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getContractCreationBlock.js +0 -0
  155. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getDolomiteMarkets.d.ts +0 -0
  156. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getDolomiteMarkets.js +0 -0
  157. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getEulerV2Vaults.d.ts +0 -0
  158. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getUniswapV4Pools.d.ts +0 -0
  159. /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getUniswapV4Pools.js +0 -0
  160. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/GenericProcessor.js +0 -0
  161. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/eulerVaultNames.d.ts +0 -0
  162. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/eulerVaultNames.js +0 -0
  163. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/factoryFinder.d.ts +0 -0
  164. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/factoryFinder.js +0 -0
  165. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/getBlacklistedSupply.d.ts +0 -0
  166. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/getBlacklistedSupply.js +0 -0
  167. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/hardcoded.d.ts +0 -0
  168. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/hardcoded.js +0 -0
  169. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/metamorphoTvl.d.ts +0 -0
  170. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/metamorphoTvl.js +0 -0
  171. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/ownerFinder.d.ts +0 -0
  172. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/ownerFinder.js +0 -0
  173. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/spliceTVL.d.ts +0 -0
  174. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/spliceTVL.js +0 -0
  175. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AaveProcessor.d.ts +0 -0
  176. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AaveProcessor.js +0 -0
  177. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AnglesLiquid.d.ts +0 -0
  178. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AnglesLiquid.js +0 -0
  179. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AssetProcessor.d.ts +0 -0
  180. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AssetProcessor.js +0 -0
  181. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AuraProcessor.d.ts +0 -0
  182. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AuraProcessor.js +0 -0
  183. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerGaugeProcessor.d.ts +0 -0
  184. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerGaugeProcessor.js +0 -0
  185. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerPoolProcessor.d.ts +0 -0
  186. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerPoolProcessor.js +0 -0
  187. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerV3PoolProcessor.d.ts +0 -0
  188. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerV3PoolProcessor.js +0 -0
  189. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BeefyProcessor.d.ts +0 -0
  190. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BeefyProcessor.js +0 -0
  191. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/CompoundProcessor.d.ts +0 -0
  192. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/CompoundProcessor.js +0 -0
  193. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/ERC4626Processor.d.ts +0 -0
  194. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/ERC4626Processor.js +0 -0
  195. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EnzymeProcessor.d.ts +0 -0
  196. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EnzymeProcessor.js +0 -0
  197. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EqualizerGaugeProcessor.d.ts +0 -0
  198. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EqualizerGaugeProcessor.js +0 -0
  199. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EulerBorrowProcessor.d.ts +0 -0
  200. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EulerBorrowProcessor.js +0 -0
  201. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EulerLendProcessor.d.ts +0 -0
  202. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EulerLendProcessor.js +0 -0
  203. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/FluidProcessor.d.ts +0 -0
  204. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/FluidProcessor.js +0 -0
  205. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/FraxProcessor.d.ts +0 -0
  206. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/FraxProcessor.js +0 -0
  207. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/GammaProcessor.d.ts +0 -0
  208. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/GammaProcessor.js +0 -0
  209. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/GearboxProcessor.d.ts +0 -0
  210. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/GearboxProcessor.js +0 -0
  211. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HanjiVaultProcessor.d.ts +0 -0
  212. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HanjiVaultProcessor.js +0 -0
  213. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HoldStationProcessor.d.ts +0 -0
  214. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HoldStationProcessor.js +0 -0
  215. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HourglassProcessor.d.ts +0 -0
  216. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HourglassProcessor.js +0 -0
  217. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/MaverickBPProcessor.d.ts +0 -0
  218. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/MaverickBPProcessor.js +0 -0
  219. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/MetamorphoProcessor.d.ts +0 -0
  220. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/MetamorphoProcessor.js +0 -0
  221. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/NoLinkVaultProcessor.d.ts +0 -0
  222. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/NoLinkVaultProcessor.js +0 -0
  223. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/PendleProcessor.d.ts +0 -0
  224. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/PendleProcessor.js +0 -0
  225. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/PendleYTProcessor.d.ts +0 -0
  226. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/PendleYTProcessor.js +0 -0
  227. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/RadiantProcessor.d.ts +0 -0
  228. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/RadiantProcessor.js +0 -0
  229. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/RfxProcessor.d.ts +0 -0
  230. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/RfxProcessor.js +0 -0
  231. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/Satlayer.d.ts +0 -0
  232. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/Satlayer.js +0 -0
  233. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpectraProcessor.d.ts +0 -0
  234. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpectraProcessor.js +0 -0
  235. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpectraYTProcessor.d.ts +0 -0
  236. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpectraYTProcessor.js +0 -0
  237. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpliceProcessor.d.ts +0 -0
  238. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpliceProcessor.js +0 -0
  239. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SturdySiloProcessor.d.ts +0 -0
  240. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SturdySiloProcessor.js +0 -0
  241. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TempestVaultProcessor.d.ts +0 -0
  242. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TempestVaultProcessor.js +0 -0
  243. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TemplateProcessor.d.ts +0 -0
  244. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TemplateProcessor.js +0 -0
  245. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TorosProcessor.d.ts +0 -0
  246. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TorosProcessor.js +0 -0
  247. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/UniswapProcessor.d.ts +0 -0
  248. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/UniswapProcessor.js +0 -0
  249. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/VicunaProcessor.d.ts +0 -0
  250. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/VicunaProcessor.js +0 -0
  251. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/WoofiProcessor.d.ts +0 -0
  252. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/WoofiProcessor.js +0 -0
  253. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/ZkSwapThreePoolProcessor.d.ts +0 -0
  254. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/ZkSwapThreePoolProcessor.js +0 -0
  255. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/curveNPoolProcessor.d.ts +0 -0
  256. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/curveNPoolProcessor.js +0 -0
  257. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/curveProcessor.d.ts +0 -0
  258. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/curveProcessor.js +0 -0
  259. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/processorMapping.d.ts +0 -0
  260. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/stakedCurveProcessor.d.ts +0 -0
  261. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/stakedCurveProcessor.js +0 -0
  262. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/xU308Processor.d.ts +0 -0
  263. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/xU308Processor.js +0 -0
  264. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesPrices.d.ts +0 -0
  265. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesPrices.js +0 -0
  266. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound1.d.ts +0 -0
  267. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound2.js +0 -0
  268. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound3.d.ts +0 -0
  269. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound3.js +0 -0
  270. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound4.d.ts +0 -0
  271. /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound4.js +0 -0
  272. /package/dist/src/{factories → engine}/opportunityMetadata/factory.d.ts +0 -0
  273. /package/dist/src/{factories → engine}/opportunityMetadata/factory.js +0 -0
  274. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ajna.d.ts +0 -0
  275. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ajna.js +0 -0
  276. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ambiant.d.ts +0 -0
  277. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ambiant.js +0 -0
  278. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Badger.d.ts +0 -0
  279. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Badger.js +0 -0
  280. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Clamm.d.ts +0 -0
  281. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Clamm.js +0 -0
  282. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Compound.d.ts +0 -0
  283. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Compound.js +0 -0
  284. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Default.d.ts +0 -0
  285. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Default.js +0 -0
  286. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Dolomite.d.ts +0 -0
  287. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Dolomite.js +0 -0
  288. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/EigenLayer.d.ts +0 -0
  289. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/EigenLayer.js +0 -0
  290. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Encompassing.d.ts +0 -0
  291. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Encompassing.js +0 -0
  292. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Erc20.d.ts +0 -0
  293. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Erc20Snapshot.d.ts +0 -0
  294. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Erc20Snapshot.js +0 -0
  295. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Hyperdrive.d.ts +0 -0
  296. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Hyperdrive.js +0 -0
  297. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Invalid.d.ts +0 -0
  298. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Invalid.js +0 -0
  299. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ion.d.ts +0 -0
  300. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ion.js +0 -0
  301. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/JsonAirdrop.d.ts +0 -0
  302. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/JsonAirdrop.js +0 -0
  303. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Morpho.d.ts +0 -0
  304. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Morpho.js +0 -0
  305. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Radiant.d.ts +0 -0
  306. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Radiant.js +0 -0
  307. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Silo.d.ts +0 -0
  308. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Silo.js +0 -0
  309. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/UniswapV4.d.ts +0 -0
  310. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/UniswapV4.js +0 -0
  311. /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Vest.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.COMPOUND;
4
+ export declare class CompoundDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<CompoundCampaignDynamicData[]>;
6
+ }
7
+ export {};
@@ -0,0 +1,136 @@
1
+ import { TokenService } from "@/modules/v4/token/token.service";
2
+ import { BN2Number, CTokenInterface, ChainInteractionService, CompFork, CompoundSubCampaignType, ERC20Interface, IonicERC20_INTERFACE, LayerBankERC20Interface, NULL_ADDRESS, YEAR, } from "@sdk";
3
+ import { log } from "../../../utils/logger";
4
+ import { Pricer } from "../../../utils/pricer";
5
+ export class CompoundDynamicData {
6
+ async build(chainId, campaigns) {
7
+ const pricer = await Pricer.load();
8
+ const calls = [];
9
+ for (const campaign of campaigns) {
10
+ if (campaign.campaignSubType === CompoundSubCampaignType.supply) {
11
+ if (campaign.campaignParameters.compFork === CompFork.Ionic) {
12
+ calls.push({
13
+ allowFailure: true,
14
+ callData: IonicERC20_INTERFACE.encodeFunctionData("getTotalUnderlyingSupplied"),
15
+ target: campaign.campaignParameters.targetToken,
16
+ });
17
+ }
18
+ else {
19
+ if (campaign.campaignParameters.compFork === CompFork.LayerBank) {
20
+ calls.push({
21
+ allowFailure: true,
22
+ callData: LayerBankERC20Interface.encodeFunctionData("totalBorrow"),
23
+ target: campaign.campaignParameters.targetToken,
24
+ });
25
+ }
26
+ else {
27
+ calls.push({
28
+ allowFailure: true,
29
+ callData: CTokenInterface.encodeFunctionData("totalBorrows"),
30
+ target: campaign.campaignParameters.targetToken,
31
+ });
32
+ }
33
+ if (campaign.campaignParameters.underlyingToken !== NULL_ADDRESS) {
34
+ calls.push({
35
+ allowFailure: true,
36
+ callData: ERC20Interface.encodeFunctionData("balanceOf", [campaign.campaignParameters.targetToken]),
37
+ target: campaign.campaignParameters.underlyingToken,
38
+ });
39
+ }
40
+ }
41
+ }
42
+ else {
43
+ if (campaign.campaignParameters.compFork === CompFork.LayerBank) {
44
+ calls.push({
45
+ allowFailure: true,
46
+ callData: LayerBankERC20Interface.encodeFunctionData("totalBorrow"),
47
+ target: campaign.campaignParameters.targetToken,
48
+ });
49
+ }
50
+ else {
51
+ calls.push({
52
+ allowFailure: true,
53
+ callData: CTokenInterface.encodeFunctionData("totalBorrows"),
54
+ target: campaign.campaignParameters.targetToken,
55
+ });
56
+ }
57
+ }
58
+ }
59
+ const result = await ChainInteractionService(chainId).fetchState(calls);
60
+ let i = 0;
61
+ const dynamicData = [];
62
+ for (const campaign of campaigns) {
63
+ let totalSupplyTargetToken;
64
+ let borrowedAmount;
65
+ let nonUtilizedSupplied;
66
+ if (campaign.campaignSubType === CompoundSubCampaignType.supply) {
67
+ try {
68
+ if (campaign.campaignParameters.compFork === CompFork.Ionic) {
69
+ totalSupplyTargetToken = BN2Number(IonicERC20_INTERFACE.decodeFunctionResult("getTotalUnderlyingSupplied", result[i++].returnData)[0], campaign.campaignParameters.decimalsUnderlyingToken);
70
+ }
71
+ else {
72
+ if (campaign.campaignParameters.compFork === CompFork.LayerBank) {
73
+ borrowedAmount = BN2Number(LayerBankERC20Interface.decodeFunctionResult("totalBorrow", result[i++].returnData)[0], campaign.campaignParameters.decimalsUnderlyingToken);
74
+ }
75
+ else {
76
+ borrowedAmount = BN2Number(CTokenInterface.decodeFunctionResult("totalBorrows", result[i++].returnData)[0], campaign.campaignParameters.decimalsUnderlyingToken);
77
+ }
78
+ if (campaign.campaignParameters.underlyingToken === NULL_ADDRESS) {
79
+ // For the case of ETH
80
+ nonUtilizedSupplied = BN2Number(await ChainInteractionService(campaign.computeChainId)
81
+ .provider()
82
+ .getBalance(campaign.campaignParameters.targetToken), 18);
83
+ }
84
+ else {
85
+ nonUtilizedSupplied = BN2Number(ERC20Interface.decodeFunctionResult("balanceOf", result[i++].returnData)[0], campaign.campaignParameters.decimalsUnderlyingToken);
86
+ }
87
+ totalSupplyTargetToken = borrowedAmount + nonUtilizedSupplied;
88
+ }
89
+ }
90
+ catch {
91
+ log.warn(`Error getting totalSupply for campaign ${campaign.campaignId} and token ${campaign.campaignParameters.targetToken}`);
92
+ totalSupplyTargetToken = 0.0000001;
93
+ }
94
+ }
95
+ else {
96
+ try {
97
+ if (campaign.campaignParameters.compFork === CompFork.LayerBank) {
98
+ totalSupplyTargetToken = BN2Number(LayerBankERC20Interface.decodeFunctionResult("totalBorrow", result[i++].returnData)[0], campaign.campaignParameters.decimalsUnderlyingToken);
99
+ }
100
+ else {
101
+ totalSupplyTargetToken = BN2Number(CTokenInterface.decodeFunctionResult("totalBorrows", result[i++].returnData)[0], campaign.campaignParameters.decimalsUnderlyingToken);
102
+ }
103
+ }
104
+ catch {
105
+ log.warn(`Error getting totalBorrows for campaign ${campaign.campaignId} and token ${campaign.campaignParameters.targetToken}`);
106
+ totalSupplyTargetToken = 0.0000001;
107
+ }
108
+ }
109
+ // const priceRewardToken =
110
+ // (await pricer.get({
111
+ // address: campaign.rewardToken,
112
+ // chainId: campaign.chainId,
113
+ // symbol: campaign.campaignParameters.symbolRewardToken,
114
+ // })) ?? 0;
115
+ const priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
116
+ const priceTargetToken = (await pricer.get({
117
+ address: campaign.campaignParameters.underlyingToken,
118
+ chainId: campaign.computeChainId,
119
+ symbol: campaign.campaignParameters.symbolUnderlyingToken,
120
+ })) ?? 0;
121
+ dynamicData.push({
122
+ ...campaign,
123
+ apr: (priceRewardToken *
124
+ BN2Number(campaign.amount, campaign.campaignParameters.decimalsRewardToken) *
125
+ YEAR *
126
+ 100) /
127
+ campaign.campaignParameters.duration /
128
+ (totalSupplyTargetToken * priceTargetToken),
129
+ totalSupplyTargetToken,
130
+ tvl: totalSupplyTargetToken * priceTargetToken,
131
+ priceRewardToken: priceRewardToken,
132
+ });
133
+ }
134
+ return dynamicData;
135
+ }
136
+ }
@@ -0,0 +1,7 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.DOLOMITE;
4
+ export declare class DolomiteDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<CampaignDynamicData<Campaign.DOLOMITE>[]>;
6
+ }
7
+ export {};
@@ -0,0 +1,53 @@
1
+ import { TokenService } from "@/modules/v4/token/token.service";
2
+ import { Pricer } from "@/utils/pricer";
3
+ import { BN2Number, DolomiteSubCampaignType, YEAR, } from "@sdk";
4
+ import axios from "axios";
5
+ import { log } from "../../../utils/logger";
6
+ export class DolomiteDynamicData {
7
+ async build(chainId, campaigns) {
8
+ const pricer = await Pricer.load();
9
+ const dynamicData = [];
10
+ for (const campaign of campaigns) {
11
+ try {
12
+ const apiRes = (await axios.get(`https://api.dolomite.io/balances/${campaign.computeChainId}/total-supply`))
13
+ .data.Result;
14
+ const tokenIndex = apiRes.findIndex(x => Number.parseFloat(x.token.marketId) === campaign.campaignParameters.marketIndex);
15
+ const tokenData = apiRes[tokenIndex].token;
16
+ const totalSupplyTargetToken = campaign.campaignSubType === DolomiteSubCampaignType.borrow
17
+ ? Number.parseFloat(tokenData.borrowLiquidity)
18
+ : campaign.campaignSubType === DolomiteSubCampaignType.supply
19
+ ? Number.parseFloat(tokenData.supplyLiquidity)
20
+ : Number.parseFloat(tokenData.supplyLiquidity) - Number.parseFloat(tokenData.borrowLiquidity);
21
+ // const priceRewardToken =
22
+ // (await pricer.get({
23
+ // address: campaign.rewardToken,
24
+ // chainId,
25
+ // symbol: campaign.campaignParameters.symbolRewardToken,
26
+ // })) ?? 0;
27
+ const priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
28
+ const priceTargetToken = (await pricer.get({
29
+ address: tokenData.id,
30
+ chainId,
31
+ symbol: tokenData.symbol,
32
+ })) ?? 0;
33
+ dynamicData.push({
34
+ ...campaign,
35
+ apr: (priceRewardToken *
36
+ BN2Number(campaign.amount, campaign.campaignParameters.decimalsRewardToken) *
37
+ YEAR *
38
+ 100) /
39
+ campaign.campaignParameters.duration /
40
+ (totalSupplyTargetToken * priceTargetToken),
41
+ totalSupplyTargetToken,
42
+ tvl: totalSupplyTargetToken * priceTargetToken,
43
+ });
44
+ }
45
+ catch (e) {
46
+ log.error("Failed to fetch Dolomite data", e);
47
+ // In this case we return just the staticData
48
+ dynamicData.push({ ...campaign });
49
+ }
50
+ }
51
+ return dynamicData;
52
+ }
53
+ }
@@ -0,0 +1,7 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.EIGENLAYER;
4
+ export declare class EigenLayerDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<EigenLayerCampaignDynamicData[]>;
6
+ }
7
+ export {};
@@ -0,0 +1,64 @@
1
+ import { TokenService } from "@/modules/v4/token/token.service";
2
+ import { Pricer } from "@/utils/pricer";
3
+ import { BN2Number, ChainInteractionService, EigenLayerStrategyInterface, EigenLayerStrategy__factory, YEAR, } from "@sdk";
4
+ import { log } from "../../../utils/logger";
5
+ export class EigenLayerDynamicData {
6
+ async build(chainId, campaigns) {
7
+ const pricer = await Pricer.load();
8
+ const calls = [];
9
+ for (const campaign of campaigns) {
10
+ calls.push({
11
+ allowFailure: true,
12
+ callData: EigenLayerStrategyInterface.encodeFunctionData("totalShares"),
13
+ target: campaign.campaignParameters.strategy,
14
+ });
15
+ }
16
+ const result = await ChainInteractionService(chainId).fetchState(calls);
17
+ let i = 0;
18
+ const dynamicData = [];
19
+ for (const campaign of campaigns) {
20
+ let totalSupplyShares;
21
+ let totalSupplyStrategy;
22
+ try {
23
+ totalSupplyShares = EigenLayerStrategyInterface.decodeFunctionResult("totalShares", result[i++].returnData)[0];
24
+ }
25
+ catch {
26
+ log.warn(`Error getting totalShares for campaign ${campaign.campaignId} and strategy ${campaign.campaignParameters.strategy}`);
27
+ totalSupplyShares = 0.0000001;
28
+ }
29
+ try {
30
+ totalSupplyStrategy = BN2Number(await EigenLayerStrategy__factory.connect(campaign.campaignParameters.strategy, ChainInteractionService(campaign.computeChainId).provider()).sharesToUnderlying(totalSupplyShares), campaign.campaignParameters.decimalsUnderlyingToken);
31
+ }
32
+ catch {
33
+ log.warn(`Error getting totalSupply for campaign ${campaign.campaignId} and strategy ${campaign.campaignParameters.strategy}`);
34
+ totalSupplyStrategy = 0.0000001;
35
+ }
36
+ // const priceRewardToken =
37
+ // (await pricer.get({
38
+ // address: campaign.rewardToken,
39
+ // chainId: campaign.chainId,
40
+ // symbol: campaign.campaignParameters.symbolRewardToken,
41
+ // })) ?? 0;
42
+ const priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
43
+ const priceTargetToken = (await pricer.get({
44
+ address: campaign.campaignParameters.underlyingToken,
45
+ chainId: campaign.computeChainId,
46
+ symbol: campaign.campaignParameters.symbolUnderlyingToken,
47
+ })) ?? 0;
48
+ const tvl = totalSupplyStrategy * priceTargetToken;
49
+ dynamicData.push({
50
+ ...campaign,
51
+ apr: (priceRewardToken *
52
+ BN2Number(campaign.amount, campaign.campaignParameters.decimalsRewardToken) *
53
+ YEAR *
54
+ 100) /
55
+ campaign.campaignParameters.duration /
56
+ (totalSupplyStrategy * priceTargetToken),
57
+ totalSupplyTargetToken: totalSupplyStrategy,
58
+ tvl,
59
+ priceRewardToken: priceRewardToken,
60
+ });
61
+ }
62
+ return dynamicData;
63
+ }
64
+ }
@@ -0,0 +1,7 @@
1
+ import type { Campaign, CampaignParameters, MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.ENCOMPASSING;
4
+ export declare class EncompassingDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(_chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<any[]>;
6
+ }
7
+ export {};
@@ -0,0 +1,26 @@
1
+ import axios from "axios";
2
+ export class EncompassingDynamicData {
3
+ async build(_chainId, campaigns) {
4
+ const dynamicData = [];
5
+ for (const campaign of campaigns) {
6
+ let tvl = 0;
7
+ let apr = 0;
8
+ if (campaign.campaignParameters.dataUrl) {
9
+ try {
10
+ const dataResponse = await axios.get(campaign.campaignParameters.dataUrl);
11
+ if (dataResponse.data) {
12
+ tvl = dataResponse.data.tvl ?? 0;
13
+ apr = dataResponse.data.apr ?? 0;
14
+ }
15
+ }
16
+ catch { }
17
+ }
18
+ dynamicData.push({
19
+ ...campaign,
20
+ tvl,
21
+ apr,
22
+ });
23
+ }
24
+ return dynamicData;
25
+ }
26
+ }
@@ -0,0 +1,6 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ export type ERC20SupportedCampaignType = Campaign.ERC20 | Campaign.ERC20LOGPROCESSOR | Campaign.ERC20REBASELOGPROCESSOR | Campaign.EULER;
4
+ export declare class Erc20DynamicData implements DynamicDataBuilder<ERC20SupportedCampaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<ERC20SupportedCampaignType>[]): Promise<any[]>;
6
+ }
@@ -0,0 +1,159 @@
1
+ import { tokenType } from "@/engine/erc20SubTypeProcessors/helpers/tokenType";
2
+ import { getTokenPricesInfo } from "@/engine/erc20SubTypeProcessors/subtypesPrices";
3
+ import { getTokenTypeRound1 } from "@/engine/erc20SubTypeProcessors/subtypesRound1";
4
+ import { getTokenTypeRound2 } from "@/engine/erc20SubTypeProcessors/subtypesRound2";
5
+ import { getTokenTypeRound3 } from "@/engine/erc20SubTypeProcessors/subtypesRound3";
6
+ import { getTokenTypeRound4 } from "@/engine/erc20SubTypeProcessors/subtypesRound4";
7
+ import { ComputedValueService } from "@/modules/v4/computedValue";
8
+ import { TokenRepository } from "@/modules/v4/token/token.repository";
9
+ import { TokenService } from "@/modules/v4/token/token.service";
10
+ import { log } from "@/utils/logger";
11
+ import { Pricer } from "@/utils/pricer";
12
+ import { BN2Number, BalancerPoolInterface, BalancerV3StablePoolInterface, ChainInteractionService, ERC20Interface, EnzymeInterface, FactoryInterface, LayerBankERC20Interface, MetamorphoInterface, YEAR, getEnv, } from "@sdk";
13
+ export class Erc20DynamicData {
14
+ async build(chainId, campaigns) {
15
+ const pricer = await Pricer.load();
16
+ // Round 1: Get the high level type for each token (will need to be refined lated with more calls)
17
+ const callsRounds1 = [];
18
+ const tokenTypesByCampaign = {};
19
+ for (const campaign of campaigns) {
20
+ const typeStruct = {
21
+ type: tokenType.unknown,
22
+ calls: [],
23
+ typeInfo: {},
24
+ };
25
+ const targetToken = campaign.campaignParameters.targetToken;
26
+ typeStruct.calls = [
27
+ {
28
+ allowFailure: true,
29
+ callData: FactoryInterface.encodeFunctionData("factory"),
30
+ target: targetToken,
31
+ },
32
+ {
33
+ allowFailure: true,
34
+ callData: MetamorphoInterface.encodeFunctionData("MORPHO"),
35
+ target: targetToken,
36
+ },
37
+ {
38
+ allowFailure: true,
39
+ callData: ERC20Interface.encodeFunctionData("name"),
40
+ target: targetToken,
41
+ },
42
+ {
43
+ allowFailure: true,
44
+ callData: BalancerPoolInterface.encodeFunctionData("getPoolId"),
45
+ target: targetToken,
46
+ },
47
+ {
48
+ allowFailure: true,
49
+ callData: EnzymeInterface.encodeFunctionData("getCreator"),
50
+ target: targetToken,
51
+ },
52
+ {
53
+ allowFailure: true,
54
+ callData: LayerBankERC20Interface.encodeFunctionData("owner"),
55
+ target: targetToken,
56
+ },
57
+ {
58
+ allowFailure: true,
59
+ callData: BalancerV3StablePoolInterface.encodeFunctionData("getVault"),
60
+ target: targetToken,
61
+ },
62
+ ];
63
+ callsRounds1.push(...typeStruct.calls);
64
+ tokenTypesByCampaign[campaign.campaignId] = typeStruct;
65
+ }
66
+ const resultRound1 = await ChainInteractionService(chainId).fetchState(callsRounds1);
67
+ // Round 2: Decode result from round 1 and get some additional info for the types before the final calls
68
+ const callsRounds2 = [];
69
+ let i = 0;
70
+ for (const campaign of campaigns) {
71
+ const callsForCampaign = tokenTypesByCampaign[campaign.campaignId].calls.length;
72
+ tokenTypesByCampaign[campaign.campaignId] = getTokenTypeRound1(resultRound1, campaign.campaignParameters.targetToken, i, campaign);
73
+ i += callsForCampaign;
74
+ callsRounds2.push(...tokenTypesByCampaign[campaign.campaignId].calls);
75
+ }
76
+ const resultRound2 = await ChainInteractionService(chainId).fetchState(callsRounds2);
77
+ // Round 3: Decode result from round 2 and get some additional info for the types before the final calls
78
+ const callsRounds3 = [];
79
+ let j = 0;
80
+ for (const campaign of campaigns) {
81
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
82
+ const callsForCampaign = tokenTypesByCampaign[campaign.campaignId].calls.length;
83
+ tokenTypesByCampaign[campaign.campaignId] = getTokenTypeRound2(j, tokenTypesByCampaign[campaign.campaignId].type, tokenTypesByCampaign[campaign.campaignId].typeInfo, resultRound2, campaign);
84
+ j += callsForCampaign;
85
+ callsRounds3.push(...tokenTypesByCampaign[campaign.campaignId].calls);
86
+ }
87
+ const resultRound3 = await ChainInteractionService(chainId).fetchState(callsRounds3);
88
+ // Final round before execute
89
+ let callsFinal = [];
90
+ j = 0;
91
+ for (const campaign of campaigns) {
92
+ const callsForCampaign = tokenTypesByCampaign[campaign.campaignId].calls.length;
93
+ tokenTypesByCampaign[campaign.campaignId] = getTokenTypeRound3(j, tokenTypesByCampaign[campaign.campaignId].type, tokenTypesByCampaign[campaign.campaignId].typeInfo, resultRound3);
94
+ j += callsForCampaign;
95
+ callsFinal = callsFinal.concat(tokenTypesByCampaign[campaign.campaignId].calls);
96
+ }
97
+ // Round 4: Get the final data
98
+ const resultsFinal = await ChainInteractionService(chainId).fetchState(callsFinal);
99
+ j = 0;
100
+ let calls = [];
101
+ for (const campaign of campaigns) {
102
+ const callsForCampaign = tokenTypesByCampaign[campaign.campaignId].calls.length;
103
+ tokenTypesByCampaign[campaign.campaignId] = getTokenTypeRound4(j, tokenTypesByCampaign[campaign.campaignId].type, tokenTypesByCampaign[campaign.campaignId].typeInfo, resultsFinal, campaign);
104
+ j += callsForCampaign;
105
+ calls = calls.concat(tokenTypesByCampaign[campaign.campaignId].calls);
106
+ }
107
+ const result = await ChainInteractionService(chainId).fetchState(calls);
108
+ i = 0;
109
+ const dynamicData = [];
110
+ for (const campaign of campaigns) {
111
+ // const priceRewardToken =
112
+ // (await pricer.get({
113
+ // address: campaign.rewardToken,
114
+ // chainId,
115
+ // symbol: campaign.campaignParameters.symbolRewardToken,
116
+ // })) ?? 0;
117
+ const priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
118
+ // Get the data from the final round and process it to get the price of the target token and some extra info
119
+ const callsForCampaign = tokenTypesByCampaign[campaign.campaignId].calls.length;
120
+ tokenTypesByCampaign[campaign.campaignId] = await getTokenPricesInfo(i, tokenTypesByCampaign[campaign.campaignId].type, tokenTypesByCampaign[campaign.campaignId].typeInfo, result.map(r => r.returnData), campaign, pricer);
121
+ try {
122
+ if (!!tokenTypesByCampaign[campaign.campaignId]?.typeInfo.priceTargetToken && getEnv() === "prod")
123
+ await TokenRepository.updateAddressPrices(campaign.campaignParameters.targetToken, tokenTypesByCampaign[campaign.campaignId]?.typeInfo.priceTargetToken);
124
+ }
125
+ catch (e) {
126
+ log.warn(`failed to update target token price: ${e}`);
127
+ }
128
+ i += callsForCampaign;
129
+ const whitelistedSupplyTargetToken = tokenTypesByCampaign[campaign.campaignId].typeInfo.whitelistedSupplyTargetToken;
130
+ const totalSupplyTargetToken = whitelistedSupplyTargetToken;
131
+ const priceTargetToken = tokenTypesByCampaign[campaign.campaignId].typeInfo.priceTargetToken;
132
+ let lastEligibilityRatio = 1;
133
+ if (!!campaign.campaignParameters.hooks?.length) {
134
+ lastEligibilityRatio =
135
+ (await ComputedValueService.findCampaignValue({
136
+ campaignId: `${campaign.campaignId}-${chainId}`,
137
+ field: "averageBoost",
138
+ }))?.averageBoost ?? 1;
139
+ }
140
+ dynamicData.push({
141
+ ...campaign,
142
+ apr: (lastEligibilityRatio *
143
+ (priceRewardToken *
144
+ BN2Number(campaign.amount, campaign.campaignParameters.decimalsRewardToken) *
145
+ YEAR *
146
+ 100)) /
147
+ campaign.campaignParameters.duration /
148
+ (whitelistedSupplyTargetToken * priceTargetToken),
149
+ totalSupplyTargetToken,
150
+ tvl: whitelistedSupplyTargetToken * priceTargetToken,
151
+ type: tokenTypesByCampaign[campaign.campaignId].type,
152
+ typeInfo: tokenTypesByCampaign[campaign.campaignId].typeInfo,
153
+ priceRewardToken: priceRewardToken,
154
+ lastEligibilityRatio,
155
+ });
156
+ }
157
+ return dynamicData;
158
+ }
159
+ }
@@ -0,0 +1,7 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.ERC20_SNAPSHOT;
4
+ export declare class Erc20SnapshotDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<any[]>;
6
+ }
7
+ export {};
@@ -0,0 +1,32 @@
1
+ import { BN2Number, ChainInteractionService, ERC20Interface, } from "@sdk";
2
+ import { Pricer } from "../../../utils/pricer";
3
+ export class Erc20SnapshotDynamicData {
4
+ async build(chainId, campaigns) {
5
+ const pricer = await Pricer.load();
6
+ const calls = [];
7
+ for (const campaign of campaigns) {
8
+ calls.push({
9
+ allowFailure: false,
10
+ callData: ERC20Interface.encodeFunctionData("totalSupply"),
11
+ target: campaign.campaignParameters.targetToken,
12
+ });
13
+ }
14
+ const result = await ChainInteractionService(chainId).fetchState(calls);
15
+ let i = 0;
16
+ const dynamicData = [];
17
+ for (const campaign of campaigns) {
18
+ const priceTargetToken = await pricer.get({
19
+ address: campaign.campaignParameters.targetToken,
20
+ chainId,
21
+ symbol: campaign.campaignParameters.symbolTargetToken,
22
+ });
23
+ const totalSupplyTargetToken = BN2Number(ERC20Interface.decodeFunctionResult("totalSupply", result[i++].returnData)[0], campaign.campaignParameters.decimalsTargetToken);
24
+ dynamicData.push({
25
+ ...campaign,
26
+ totalSupplyTargetToken,
27
+ tvl: totalSupplyTargetToken * priceTargetToken,
28
+ });
29
+ }
30
+ return dynamicData;
31
+ }
32
+ }
@@ -0,0 +1,7 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.EVENT_BASED;
4
+ export declare class EventBasedDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<EventBasedCampaignDynamicData[]>;
6
+ }
7
+ export {};
@@ -0,0 +1,104 @@
1
+ import { BucketService } from "@/modules/v4/bucket/bucket.service";
2
+ import { TokenService } from "@/modules/v4/token/token.service";
3
+ import { engineDbClient } from "@db";
4
+ import { BN2Number, ChainInteractionService, NETWORK_LABELS, } from "@sdk";
5
+ import moment from "moment";
6
+ import { log } from "../../../utils/logger";
7
+ import { Pricer } from "../../../utils/pricer";
8
+ /**
9
+ * Compute TVL
10
+ * @dev important: using the most recent state save with current prices
11
+ * it's only an estimate
12
+ */
13
+ async function computeEventBasedPoolTVLFromMostRecentStateSave(chainId, campaignID, priceCurrency, decimalsCurrency) {
14
+ let stateSave;
15
+ let blockNumber;
16
+ let states = {};
17
+ try {
18
+ const currentBlock = await ChainInteractionService(chainId).getBlockNumber();
19
+ const mostRecentStateSave = await engineDbClient.stateSave.findFirst({
20
+ where: {
21
+ id: `EventBasedProcessor_${chainId}_${campaignID}`,
22
+ blockNumber: {
23
+ lte: currentBlock,
24
+ },
25
+ },
26
+ orderBy: {
27
+ blockNumber: "desc",
28
+ },
29
+ });
30
+ stateSave = mostRecentStateSave.state;
31
+ blockNumber = mostRecentStateSave?.blockNumber;
32
+ states = stateSave.states;
33
+ // const globalState = stateSave.globalState as { tick: number; liquidity: string };
34
+ }
35
+ catch {
36
+ log.warn(`merklDynamic data - failed to read a recent state of ${campaignID} on ${NETWORK_LABELS[chainId]}`);
37
+ }
38
+ const { fileName, bucketName } = states;
39
+ // Bucket service
40
+ let tvl = 0;
41
+ try {
42
+ const bucket = new BucketService(bucketName, "merkl-production");
43
+ const storedStates = JSON.parse(await bucket.pull(fileName));
44
+ for (const [_, { value, params: _params }] of Object.entries(storedStates)) {
45
+ tvl += BN2Number(value.allTimeValue, decimalsCurrency);
46
+ }
47
+ tvl = tvl * priceCurrency;
48
+ tvl = Math.max(tvl, 1);
49
+ }
50
+ catch {
51
+ log.warn(`merklDynamic data - failed to decode state of event based on ${NETWORK_LABELS[chainId]}`);
52
+ }
53
+ return { tvl, blockNumber: blockNumber };
54
+ }
55
+ export class EventBasedDynamicData {
56
+ async build(chainId, campaigns) {
57
+ const dynamicData = [];
58
+ const pricer = await Pricer.load();
59
+ for (const campaign of campaigns) {
60
+ try {
61
+ const decimalsCurrency0 = 6;
62
+ const symbolCurrency0 = "USDC";
63
+ const priceToken = (await pricer.get({
64
+ chainId: chainId,
65
+ symbol: symbolCurrency0,
66
+ }));
67
+ const { tvl } = await computeEventBasedPoolTVLFromMostRecentStateSave(chainId, campaign.campaignId, priceToken, decimalsCurrency0);
68
+ const c = campaign;
69
+ const amount = BN2Number(c.amount, c.campaignParameters.decimalsRewardToken);
70
+ const multiplier = BN2Number(c.campaignParameters.topicToData[0].multiplier, 12 + 9);
71
+ const startTimestamp = BN2Number(c.startTimestamp, 0);
72
+ const endTimestamp = BN2Number(c.endTimestamp, 0);
73
+ const isLive = moment().unix() > startTimestamp && moment().unix() < endTimestamp;
74
+ let distributionMeanAPR = 0;
75
+ const priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
76
+ if (isLive) {
77
+ /** Yearly rewards in $ */
78
+ const fixRewardRate = multiplier * priceRewardToken;
79
+ distributionMeanAPR = fixRewardRate;
80
+ if (tvl * fixRewardRate > (amount * (moment().unix() - startTimestamp)) / (endTimestamp - startTimestamp)) {
81
+ distributionMeanAPR =
82
+ (fixRewardRate * amount * (moment().unix() - startTimestamp)) / (endTimestamp - startTimestamp) / tvl;
83
+ }
84
+ distributionMeanAPR = !distributionMeanAPR || Number.isNaN(distributionMeanAPR) ? 0 : distributionMeanAPR;
85
+ dynamicData.push({
86
+ ...campaign,
87
+ apr: distributionMeanAPR,
88
+ priceRewardToken: priceRewardToken,
89
+ tvl: tvl,
90
+ });
91
+ }
92
+ }
93
+ catch {
94
+ dynamicData.push({
95
+ ...campaign,
96
+ apr: 0,
97
+ priceRewardToken: 0,
98
+ tvl: 1,
99
+ });
100
+ }
101
+ }
102
+ return dynamicData;
103
+ }
104
+ }
@@ -0,0 +1,7 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.HYPERDRIVELOGPROCESSOR | Campaign.HYPERDRIVELOGFIXPROCESSOR;
4
+ export declare class HyperdriveDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<any[]>;
6
+ }
7
+ export {};