@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,54 @@
1
+ import { Campaign } from "@sdk";
2
+ import { AjnaDynamicData } from "./implementations/Ajna";
3
+ import { AmbiantDynamicData } from "./implementations/Ambiant";
4
+ import { BadgerDynamicData } from "./implementations/Badger";
5
+ import { ClammDynamicData } from "./implementations/Clamm";
6
+ import { CompoundDynamicData } from "./implementations/Compound";
7
+ import { DolomiteDynamicData } from "./implementations/Dolomite";
8
+ import { EigenLayerDynamicData } from "./implementations/EigenLayer";
9
+ import { EncompassingDynamicData } from "./implementations/Encompassing";
10
+ import { Erc20DynamicData } from "./implementations/Erc20";
11
+ import { Erc20SnapshotDynamicData } from "./implementations/Erc20Snapshot";
12
+ import { EventBasedDynamicData } from "./implementations/EventBased";
13
+ import { HyperdriveDynamicData } from "./implementations/Hyperdrive";
14
+ import { MorphoDynamicData } from "./implementations/Morpho";
15
+ import { RadiantDynamicData } from "./implementations/Radiant";
16
+ import { SiloDynamicData } from "./implementations/Silo";
17
+ import { UniswapV4DynamicData } from "./implementations/UniswapV4";
18
+ import { VestDynamicData } from "./implementations/Vest";
19
+ import { DefaultDynamicData } from "./implementations/default";
20
+ // @dev Casts are made to enforce type safety
21
+ // @dev A type error must be thrown if a new campaign type is added and the corresponding builder is not implemented
22
+ const map = {
23
+ [Campaign.INVALID]: new DefaultDynamicData(),
24
+ [Campaign.JSON_AIRDROP]: new DefaultDynamicData(),
25
+ [Campaign.AJNA]: new AjnaDynamicData(),
26
+ [Campaign.AMBIENTPROCESSOR]: new AmbiantDynamicData(),
27
+ [Campaign.BADGER]: new BadgerDynamicData(),
28
+ [Campaign.CLAMM]: new ClammDynamicData(),
29
+ [Campaign.COMPOUND]: new CompoundDynamicData(),
30
+ [Campaign.DOLOMITE]: new DolomiteDynamicData(),
31
+ [Campaign.EIGENLAYER]: new EigenLayerDynamicData(),
32
+ [Campaign.ENCOMPASSING]: new EncompassingDynamicData(),
33
+ [Campaign.ERC20_SNAPSHOT]: new Erc20SnapshotDynamicData(),
34
+ [Campaign.EVENT_BASED]: new EventBasedDynamicData(),
35
+ [Campaign.HYPERDRIVELOGFIXPROCESSOR]: new HyperdriveDynamicData(),
36
+ [Campaign.HYPERDRIVELOGPROCESSOR]: new HyperdriveDynamicData(),
37
+ [Campaign.ERC20]: new Erc20DynamicData(),
38
+ [Campaign.ERC20LOGPROCESSOR]: new Erc20DynamicData(),
39
+ [Campaign.ERC20REBASEFIXAPR]: new Erc20DynamicData(),
40
+ [Campaign.ERC20REBASELOGPROCESSOR]: new Erc20DynamicData(),
41
+ [Campaign.ERC20_FIX_APR]: new Erc20DynamicData(),
42
+ [Campaign.EULER]: new Erc20DynamicData(),
43
+ [Campaign.MORPHO]: new MorphoDynamicData(),
44
+ [Campaign.RADIANT]: new RadiantDynamicData(),
45
+ [Campaign.SILO]: new SiloDynamicData(),
46
+ [Campaign.UNISWAP_V4]: new UniswapV4DynamicData(),
47
+ [Campaign.VEST]: new VestDynamicData(),
48
+ [Campaign.ION]: new DefaultDynamicData(), // TODO
49
+ [Campaign.ERC20TRANSFERS]: new DefaultDynamicData(), // TODO
50
+ [Campaign.M0]: new DefaultDynamicData(), // TODO
51
+ [Campaign.MORPHOSUPPLY]: new DefaultDynamicData(), // TODO
52
+ [Campaign.SYNCSWAP_VAULT]: new DefaultDynamicData(), // TODO
53
+ };
54
+ export const dynamicDataBuilderFactory = (campaignType) => map[campaignType];
@@ -0,0 +1,7 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.AJNA;
4
+ export declare class AjnaDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<CampaignDynamicData<Campaign.AJNA>[]>;
6
+ }
7
+ export {};
@@ -0,0 +1,101 @@
1
+ import { TokenService } from "@/modules/v4/token/token.service";
2
+ import { providers } from "@/utils/providers";
3
+ import { AjnaSubCampaignType, BN2Number, ChainInteractionService, ERC20Pool__factory, NETWORK_LABELS, PoolInfoUtilsInterface, YEAR, } from "@sdk";
4
+ import { POOL_INFO_UTILS } from "@sdk";
5
+ import axios from "axios";
6
+ import { log } from "../../../utils/logger";
7
+ export class AjnaDynamicData {
8
+ async build(chainId, campaigns) {
9
+ const calls = [];
10
+ for (const campaign of campaigns) {
11
+ if (campaign.campaignParameters.subCampaignType === AjnaSubCampaignType.lend) {
12
+ calls.push({
13
+ allowFailure: true,
14
+ callData: PoolInfoUtilsInterface.encodeFunctionData("poolPricesInfo", [campaign.campaignParameters.poolId]),
15
+ target: POOL_INFO_UTILS[campaign.computeChainId],
16
+ });
17
+ }
18
+ }
19
+ const result = await ChainInteractionService(chainId).fetchState(calls);
20
+ const dynamicData = [];
21
+ let index = 0;
22
+ for (const campaign of campaigns) {
23
+ const res = await axios.get(`https://ajna-api.blockanalitica.com/v4/${NETWORK_LABELS[chainId].toLowerCase()}/pools/${campaign.campaignParameters.poolId.toLowerCase()}`);
24
+ try {
25
+ let totalSupplyTargetToken = 0;
26
+ let totalComputedTargetToken = 0;
27
+ let blacklistedSupply = 0;
28
+ let blacklistedPosition;
29
+ if (campaign.campaignParameters.subCampaignType === AjnaSubCampaignType.lend) {
30
+ totalSupplyTargetToken = res?.data.results?.quote_token_balance;
31
+ const htpIndex = PoolInfoUtilsInterface.decodeFunctionResult("poolPricesInfo", result[index].returnData)[3];
32
+ const lupIndex = PoolInfoUtilsInterface.decodeFunctionResult("poolPricesInfo", result[index].returnData)[5];
33
+ const threshold = BN2Number(lupIndex, 0) === 0 ? lupIndex : lupIndex.gt(htpIndex) ? lupIndex.add(22) : htpIndex.add(22);
34
+ const InterestEarningSupplyRes = await ERC20Pool__factory.connect(campaign.campaignParameters.poolId, providers[campaign.computeChainId]).depositUpToIndex(threshold);
35
+ totalComputedTargetToken = BN2Number(InterestEarningSupplyRes, 18);
36
+ index++;
37
+ }
38
+ else {
39
+ totalSupplyTargetToken = res?.data.results?.debt;
40
+ }
41
+ totalComputedTargetToken =
42
+ campaign.campaignSubType === AjnaSubCampaignType.lend ? totalComputedTargetToken : totalSupplyTargetToken;
43
+ if (campaign.campaignParameters.blacklist.length !== 0 && totalComputedTargetToken !== 0) {
44
+ for (const blacklisted of campaign.campaignParameters.blacklist) {
45
+ const res = await axios.get(`https://ajna-api.blockanalitica.com/v4/${NETWORK_LABELS[chainId].toLowerCase()}/wallets/${blacklisted}/pools/?days_ago=1&order=-debt&p_size=50`);
46
+ let nextRoute = null;
47
+ if (!!res.data.next) {
48
+ nextRoute = `https://${res.data.next.slice(res.data.next.indexOf(":") + 1)}`;
49
+ }
50
+ blacklistedPosition = res.data.results.find((position) => position.pool_address === campaign.campaignParameters.poolId);
51
+ blacklistedSupply = !blacklistedPosition
52
+ ? 0
53
+ : campaign.campaignSubType === AjnaSubCampaignType.lend
54
+ ? Number(blacklistedPosition.supply)
55
+ : Number(blacklistedPosition.debt);
56
+ while (nextRoute !== null && blacklistedSupply !== 0) {
57
+ const res = await axios.get(nextRoute);
58
+ blacklistedPosition = res.data.results.find((position) => position.pool_address === campaign.campaignParameters.poolId);
59
+ blacklistedSupply = !blacklistedPosition
60
+ ? 0
61
+ : campaign.campaignSubType === AjnaSubCampaignType.lend
62
+ ? Number(blacklistedPosition.supply)
63
+ : Number(blacklistedPosition.debt);
64
+ if (!!res.data.next) {
65
+ nextRoute = `https://${res.data.next.slice(res.data.next.indexOf(":") + 1)}`;
66
+ }
67
+ else {
68
+ nextRoute = null;
69
+ }
70
+ }
71
+ }
72
+ }
73
+ totalComputedTargetToken -= blacklistedSupply;
74
+ const priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
75
+ // (await pricer.get({
76
+ // address: campaign.rewardToken,
77
+ // chainId,
78
+ // symbol: campaign.campaignParameters.symbolRewardToken,
79
+ // })) ?? 0;
80
+ dynamicData.push({
81
+ ...campaign,
82
+ apr: (priceRewardToken *
83
+ BN2Number(campaign.amount, campaign.campaignParameters.decimalsRewardToken) *
84
+ YEAR *
85
+ 100) /
86
+ campaign.campaignParameters.duration /
87
+ (totalComputedTargetToken * res?.data.results?.quote_token_underlying_price),
88
+ totalSupplyTargetToken,
89
+ tvl: res?.data.results?.tvl,
90
+ computedtotalSupply: totalComputedTargetToken,
91
+ });
92
+ }
93
+ catch (e) {
94
+ log.error("Failed to fetch Ajna data", e);
95
+ // In this case we return just the staticData
96
+ dynamicData.push({ ...campaign });
97
+ }
98
+ }
99
+ return dynamicData;
100
+ }
101
+ }
@@ -0,0 +1,7 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.AMBIENTPROCESSOR;
4
+ export declare class AmbiantDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<AmbientCampaignDynamicData[]>;
6
+ }
7
+ export {};
@@ -0,0 +1,227 @@
1
+ import { TokenService } from "@/modules/v4/token/token.service";
2
+ import { AmbientAddresses, AmbientLens, BN2Number, ChainInteractionService, EAprBreakdownType, NETWORK_LABELS, YEAR, } from "@sdk";
3
+ import moment from "moment";
4
+ import { log } from "../../../utils/logger";
5
+ import { Pricer } from "../../../utils/pricer";
6
+ import { fetchAmbientPotentialPositions } from "../utils/fetchAmbientInfo";
7
+ var AmbiantPositionType;
8
+ (function (AmbiantPositionType) {
9
+ AmbiantPositionType["Concentrated"] = "concentrated";
10
+ AmbiantPositionType["Ambient"] = "ambient";
11
+ AmbiantPositionType["Knockout"] = "knockout";
12
+ })(AmbiantPositionType || (AmbiantPositionType = {}));
13
+ function encodeCall(chainId, holder) {
14
+ if (holder.positionType === AmbiantPositionType.Concentrated) {
15
+ return [
16
+ {
17
+ allowFailure: true,
18
+ callData: AmbientLens.encodeFunctionData("queryRangeTokens", [
19
+ holder.owner,
20
+ holder.base,
21
+ holder.quote,
22
+ holder.poolIdx,
23
+ holder.lowerTick,
24
+ holder.upperTick,
25
+ ]),
26
+ target: AmbientAddresses[chainId].CrocQuery,
27
+ },
28
+ ];
29
+ }
30
+ return [
31
+ {
32
+ allowFailure: true,
33
+ callData: AmbientLens.encodeFunctionData("queryAmbientTokens", [
34
+ holder.owner,
35
+ holder.base,
36
+ holder.quote,
37
+ holder.poolIdx,
38
+ ]),
39
+ target: AmbientAddresses[chainId].CrocQuery,
40
+ },
41
+ ];
42
+ }
43
+ async function decodeCall(result, holder) {
44
+ let amount0 = BigInt(0n);
45
+ let amount1 = BigInt(0n);
46
+ if (holder.positionType === AmbiantPositionType.Concentrated) {
47
+ const resTok = AmbientLens.decodeFunctionResult("queryRangeTokens", result);
48
+ amount0 = BigInt(resTok[1]);
49
+ amount1 = BigInt(resTok[2]);
50
+ }
51
+ if (holder.positionType === AmbiantPositionType.Ambient) {
52
+ const resTok = AmbientLens.decodeFunctionResult("queryAmbientTokens", result);
53
+ amount0 = BigInt(resTok[1]);
54
+ amount1 = BigInt(resTok[2]);
55
+ }
56
+ return { amount0, amount1 };
57
+ }
58
+ export class AmbiantDynamicData {
59
+ async build(chainId, campaigns) {
60
+ const dynamicData = [];
61
+ const pricer = await Pricer.load();
62
+ let calls = [];
63
+ /** Dedupe pools from campaigns to build pool list */
64
+ const poolList = [];
65
+ for (const campaign of campaigns ?? []) {
66
+ /** Loop through all campaigns to add pools */
67
+ if (!poolList?.map(p => p.mainParameter.toLowerCase()).includes(campaign.mainParameter.toLowerCase())) {
68
+ poolList.push({
69
+ id: campaign.campaignParameters.poolId,
70
+ mainParameter: campaign.mainParameter, // main parameter containes info of poolAddress + AMM (in case its a priority AMM)
71
+ baseToken: campaign.campaignParameters.baseToken,
72
+ quoteToken: campaign.campaignParameters.quoteToken,
73
+ poolIdx: campaign.campaignParameters.poolIdx,
74
+ potentialHolders: await fetchAmbientPotentialPositions(campaign.campaignParameters.poolId, campaign.computeChainId),
75
+ });
76
+ }
77
+ }
78
+ if (!!poolList) {
79
+ for (const pool of poolList) {
80
+ calls.push({
81
+ allowFailure: true,
82
+ callData: AmbientLens.encodeFunctionData("queryLiquidity", [pool.baseToken, pool.quoteToken, pool.poolIdx]),
83
+ target: AmbientAddresses[chainId].CrocQuery,
84
+ }, {
85
+ allowFailure: true,
86
+ callData: AmbientLens.encodeFunctionData("queryCurveTick", [pool.baseToken, pool.quoteToken, pool.poolIdx]),
87
+ target: AmbientAddresses[chainId].CrocQuery,
88
+ });
89
+ calls = calls.concat(...pool.potentialHolders.map(holder => encodeCall(chainId, holder)));
90
+ }
91
+ const result = await ChainInteractionService(chainId).fetchState(calls);
92
+ let i = 0;
93
+ if (!!poolList) {
94
+ for (const pool of poolList) {
95
+ // This liquidity call gives the active liquidity on the pool. To get the total liquidity we would need to loop over all positions
96
+ let poolTotalLiquidity;
97
+ let activeTick;
98
+ let poolBalanceToken0 = 0;
99
+ let poolBalanceToken1 = 0;
100
+ const d = campaigns?.filter(campaign => campaign.mainParameter.toLowerCase() === pool.mainParameter.toLowerCase())[0];
101
+ const decimalsBaseToken = d.campaignParameters.decimalsBaseToken;
102
+ const decimalsQuoteToken = d.campaignParameters.decimalsQuoteToken;
103
+ const symbolBaseToken = d.campaignParameters.symbolBaseToken;
104
+ const symbolQuoteToken = d.campaignParameters.symbolQuoteToken;
105
+ const prevI = i;
106
+ try {
107
+ poolTotalLiquidity = BN2Number(AmbientLens.decodeFunctionResult("queryLiquidity", result[i++].returnData)[0]);
108
+ activeTick = Number(AmbientLens.decodeFunctionResult("queryCurveTick", result[i++].returnData)[0]);
109
+ for (let index = 0; index < pool.potentialHolders.length; index++) {
110
+ // to verify
111
+ if (calls.length === 0) {
112
+ break;
113
+ }
114
+ const res = await decodeCall(result[i++].returnData, pool.potentialHolders[index]);
115
+ poolBalanceToken0 += BN2Number(res.amount0, decimalsBaseToken);
116
+ poolBalanceToken1 += BN2Number(res.amount1, decimalsQuoteToken);
117
+ }
118
+ }
119
+ catch (e) {
120
+ log.warn(`merklDynamic data - failed to decode state of pool ${pool.id} on ${NETWORK_LABELS[chainId]}`);
121
+ i = prevI + 2 + pool.potentialHolders.length;
122
+ continue;
123
+ }
124
+ const priceToken0 = (await pricer.get({
125
+ address: d.campaignParameters.baseToken,
126
+ chainId: chainId,
127
+ symbol: symbolBaseToken,
128
+ }));
129
+ const priceToken1 = (await pricer.get({
130
+ address: d.campaignParameters.quoteToken,
131
+ chainId: chainId,
132
+ symbol: symbolQuoteToken,
133
+ }));
134
+ /** Iterate over distributions to compute APRs */
135
+ for (const campaign of campaigns.filter(campaign => campaign.mainParameter.toLowerCase() === pool.mainParameter.toLowerCase())) {
136
+ const c = campaign;
137
+ const amount = BN2Number(c.amount, c.campaignParameters.decimalsRewardToken);
138
+ const startTimestamp = BN2Number(c.startTimestamp, 0);
139
+ const endTimestamp = BN2Number(c.endTimestamp, 0);
140
+ const isLive = moment().unix() >= startTimestamp && moment().unix() < endTimestamp;
141
+ const totalWeight = BN2Number(c.campaignParameters.weightFees, 4) +
142
+ BN2Number(c.campaignParameters.weightToken0, 4) +
143
+ BN2Number(c.campaignParameters.weightToken1, 4);
144
+ // Proportions in percentage
145
+ const propFees = (BN2Number(c.campaignParameters.weightFees, 4) / totalWeight) * 100;
146
+ const propToken0 = (BN2Number(c.campaignParameters.weightToken0, 4) / totalWeight) * 100;
147
+ const propToken1 = (BN2Number(c.campaignParameters.weightToken1, 4) / totalWeight) * 100;
148
+ let distributionMeanAPR = 0;
149
+ const aprs = {};
150
+ const aprBreakdowns = [];
151
+ let priceRewardToken = 0;
152
+ if (isLive && c.campaignParameters.symbolRewardToken !== "aglaMerkl") {
153
+ // priceRewardToken = (await pricer.get({
154
+ // address: c.rewardToken,
155
+ // chainId: chainId,
156
+ // symbol: c.campaignParameters.symbolRewardToken,
157
+ // })) as number;
158
+ priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
159
+ /** Yearly rewards in $ */
160
+ const yearlyToken0Rewards = (propToken0 * priceRewardToken * amount * YEAR) / (endTimestamp - startTimestamp);
161
+ const yearlyToken1Rewards = (propToken1 * priceRewardToken * amount * YEAR) / (endTimestamp - startTimestamp);
162
+ const yearlyFeeRewards = (propFees * priceRewardToken * amount * YEAR) / (endTimestamp - startTimestamp);
163
+ let poolAPRkey = "";
164
+ const tvl = poolBalanceToken0 * priceToken0 + poolBalanceToken1 * priceToken1;
165
+ distributionMeanAPR = (yearlyToken0Rewards + yearlyToken1Rewards + yearlyFeeRewards) / tvl;
166
+ distributionMeanAPR = !distributionMeanAPR || Number.isNaN(distributionMeanAPR) ? 0 : distributionMeanAPR;
167
+ /**
168
+ * @dev We cannot include a whitelisted distrib apr into the mean APR
169
+ */
170
+ if (c.campaignParameters.whitelist.length === 0) {
171
+ poolAPRkey = "Average APR (rewards / pool TVL)";
172
+ if (!aprs[poolAPRkey])
173
+ aprs[poolAPRkey] = 0;
174
+ aprs[poolAPRkey] += distributionMeanAPR;
175
+ // @Hugo wip: new way to structure aprBreakdowns
176
+ aprBreakdowns.push({
177
+ address: pool.id,
178
+ value: distributionMeanAPR,
179
+ type: EAprBreakdownType.AVERAGE,
180
+ label: "Average APR (rewards / pool TVL)",
181
+ });
182
+ // APR per token
183
+ poolAPRkey = `APR for holding ${c.campaignParameters.symbolBaseToken} in pool`;
184
+ if (!aprs[poolAPRkey])
185
+ aprs[poolAPRkey] = 0;
186
+ aprs[poolAPRkey] += yearlyToken0Rewards / (poolBalanceToken0 * priceToken0);
187
+ // @Hugo wip: new way to structure aprBreakdowns
188
+ aprBreakdowns.push({
189
+ address: pool.id,
190
+ value: yearlyToken0Rewards / (poolBalanceToken0 * priceToken0),
191
+ type: EAprBreakdownType.TOKEN1,
192
+ label: c.campaignParameters.symbolBaseToken,
193
+ });
194
+ poolAPRkey = `APR for holding ${c.campaignParameters.symbolQuoteToken} in pool`;
195
+ if (!aprs[poolAPRkey])
196
+ aprs[poolAPRkey] = 0;
197
+ aprs[poolAPRkey] += yearlyToken1Rewards / (poolBalanceToken1 * priceToken1);
198
+ // @Hugo wip: new way to structure aprBreakdowns
199
+ aprBreakdowns.push({
200
+ address: pool.id,
201
+ value: yearlyToken1Rewards / (poolBalanceToken1 * priceToken1),
202
+ type: EAprBreakdownType.TOKEN2,
203
+ label: c.campaignParameters.symbolQuoteToken,
204
+ });
205
+ }
206
+ else {
207
+ }
208
+ }
209
+ dynamicData.push({
210
+ ...campaign,
211
+ apr: distributionMeanAPR,
212
+ aprs,
213
+ forwarders: [],
214
+ poolBalanceToken0,
215
+ poolBalanceToken1,
216
+ poolTotalLiquidity,
217
+ tick: activeTick,
218
+ priceRewardToken: priceRewardToken,
219
+ tvl: poolBalanceToken0 * priceToken0 + poolBalanceToken1 * priceToken1,
220
+ });
221
+ }
222
+ }
223
+ }
224
+ }
225
+ return dynamicData;
226
+ }
227
+ }
@@ -0,0 +1,7 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.BADGER;
4
+ export declare class BadgerDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<CampaignDynamicData<Campaign.BADGER>[]>;
6
+ }
7
+ export {};
@@ -0,0 +1,84 @@
1
+ import { CDPMANAGER_ADDRESS, EBTC_ADDRESS, SORTEDCDPS_ADDRESS } from "@/constants";
2
+ import { TokenService } from "@/modules/v4/token/token.service";
3
+ import { log } from "@/utils/logger";
4
+ import { Pricer } from "@/utils/pricer";
5
+ import { BN2Number, CdpManagerInterface, ChainInteractionService, SortedCdpsInterface, YEAR, } from "@sdk";
6
+ export class BadgerDynamicData {
7
+ async build(chainId, campaigns) {
8
+ const pricer = await Pricer.load();
9
+ const calls = [];
10
+ calls.push({
11
+ allowFailure: false,
12
+ callData: CdpManagerInterface.encodeFunctionData("getSystemDebt"),
13
+ target: CDPMANAGER_ADDRESS,
14
+ });
15
+ const dynamicData = [];
16
+ const result = await ChainInteractionService(chainId).fetchState(calls);
17
+ for (const campaign of campaigns) {
18
+ try {
19
+ // Blacklist management
20
+ let blacklistSupply = 0;
21
+ let calls = [];
22
+ for (const blacklisted of [
23
+ "0xFBC472DdbE6DaE23fc0771518d1791D06a52cf4D",
24
+ "0x690C74AF48BE029e763E61b4aDeB10E06119D3ba",
25
+ "0xD0A7A8B98957b9CD3cFB9c0425AbE44551158e9e",
26
+ "0x68682e8857D24A5Bb71fCd5C6Dc5867731226B62",
27
+ ]) {
28
+ calls.push({
29
+ allowFailure: false,
30
+ callData: SortedCdpsInterface.encodeFunctionData("getCdpsOf", [blacklisted]),
31
+ target: SORTEDCDPS_ADDRESS,
32
+ });
33
+ }
34
+ const resCdps = await ChainInteractionService(chainId).fetchState(calls);
35
+ calls = [];
36
+ for (const res of resCdps) {
37
+ const cdp = SortedCdpsInterface.decodeFunctionResult("getCdpsOf", res.returnData)[0];
38
+ if (cdp.length !== 0) {
39
+ calls.push({
40
+ allowFailure: false,
41
+ callData: CdpManagerInterface.encodeFunctionData("Cdps", cdp),
42
+ target: CDPMANAGER_ADDRESS,
43
+ });
44
+ }
45
+ }
46
+ const resBlacklist = await ChainInteractionService(chainId).fetchState(calls);
47
+ for (const res of resBlacklist) {
48
+ const cdpBlacklistedSupply = CdpManagerInterface.decodeFunctionResult("Cdps", res.returnData)[0];
49
+ blacklistSupply += BN2Number(cdpBlacklistedSupply, campaign.campaignParameters.decimalsTargetToken);
50
+ }
51
+ const totalSupplyTargetToken = BN2Number(CdpManagerInterface.decodeFunctionResult("getSystemDebt", result[0].returnData)[0], campaign.campaignParameters.decimalsTargetToken) - blacklistSupply;
52
+ // const priceRewardToken =
53
+ // (await pricer.get({
54
+ // address: campaign.rewardToken,
55
+ // chainId,
56
+ // symbol: campaign.campaignParameters.symbolRewardToken,
57
+ // })) ?? 0;
58
+ const priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
59
+ const priceTargetToken = (await pricer.get({
60
+ address: EBTC_ADDRESS,
61
+ chainId,
62
+ symbol: campaign.campaignParameters.symbolTargetToken,
63
+ })) ?? 0;
64
+ dynamicData.push({
65
+ ...campaign,
66
+ apr: (priceRewardToken *
67
+ BN2Number(campaign.amount, campaign.campaignParameters.decimalsRewardToken) *
68
+ YEAR *
69
+ 100) /
70
+ campaign.campaignParameters.duration /
71
+ (totalSupplyTargetToken * priceTargetToken),
72
+ totalSupplyTargetToken,
73
+ tvl: totalSupplyTargetToken * priceTargetToken,
74
+ });
75
+ }
76
+ catch (e) {
77
+ log.error("Failed to fetch Dolomite data", e);
78
+ // In this case we return just the staticData
79
+ dynamicData.push({ ...campaign });
80
+ }
81
+ }
82
+ return dynamicData;
83
+ }
84
+ }
@@ -0,0 +1,7 @@
1
+ import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
2
+ import type { DynamicDataBuilder } from "../interface";
3
+ type campaignType = Campaign.CLAMM;
4
+ export declare class ClammDynamicData implements DynamicDataBuilder<campaignType> {
5
+ build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<CLAMMCampaignDynamicData[]>;
6
+ }
7
+ export {};