@merkl/api 0.19.7 → 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.
- package/dist/src/backgroundJobs/jobs/campaignsCacheUpdater.js +4 -3
- package/dist/src/eden/index.d.ts +15 -48
- package/dist/src/engine/dynamicData/factory.d.ts +3 -0
- package/dist/src/engine/dynamicData/factory.js +54 -0
- package/dist/src/engine/dynamicData/implementations/Ajna.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Ajna.js +101 -0
- package/dist/src/engine/dynamicData/implementations/Ambiant.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Ambiant.js +227 -0
- package/dist/src/engine/dynamicData/implementations/Badger.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Badger.js +84 -0
- package/dist/src/engine/dynamicData/implementations/Clamm.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Clamm.js +970 -0
- package/dist/src/engine/dynamicData/implementations/Compound.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Compound.js +136 -0
- package/dist/src/engine/dynamicData/implementations/Dolomite.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Dolomite.js +53 -0
- package/dist/src/engine/dynamicData/implementations/EigenLayer.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/EigenLayer.js +64 -0
- package/dist/src/engine/dynamicData/implementations/Encompassing.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Encompassing.js +26 -0
- package/dist/src/engine/dynamicData/implementations/Erc20.d.ts +6 -0
- package/dist/src/engine/dynamicData/implementations/Erc20.js +159 -0
- package/dist/src/engine/dynamicData/implementations/Erc20Snapshot.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Erc20Snapshot.js +32 -0
- package/dist/src/engine/dynamicData/implementations/EventBased.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/EventBased.js +104 -0
- package/dist/src/engine/dynamicData/implementations/Hyperdrive.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Hyperdrive.js +96 -0
- package/dist/src/engine/dynamicData/implementations/Morpho.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Morpho.js +109 -0
- package/dist/src/engine/dynamicData/implementations/Radiant.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/Radiant.js +117 -0
- package/dist/src/engine/dynamicData/implementations/Silo.d.ts +9 -0
- package/dist/src/engine/dynamicData/implementations/Silo.js +109 -0
- package/dist/src/engine/dynamicData/implementations/UniswapV4.d.ts +7 -0
- package/dist/src/engine/dynamicData/implementations/UniswapV4.js +249 -0
- package/dist/src/engine/dynamicData/implementations/Vest.d.ts +9 -0
- package/dist/src/engine/dynamicData/implementations/Vest.js +58 -0
- package/dist/src/engine/dynamicData/implementations/default.d.ts +5 -0
- package/dist/src/engine/dynamicData/implementations/default.js +5 -0
- package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getEulerV2Vaults.js +1 -1
- package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/GenericProcessor.d.ts +1 -1
- package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound2.d.ts +1 -1
- package/dist/src/{factories → engine}/opportunityMetadata/implementations/Erc20.js +3 -3
- package/dist/src/{factories → engine}/opportunityMetadata/implementations/Euler.d.ts +1 -1
- package/dist/src/{factories → engine}/opportunityMetadata/implementations/Euler.js +7 -7
- package/dist/src/{factories → engine}/opportunityMetadata/implementations/Vest.js +1 -1
- package/dist/src/index.d.ts +5 -16
- package/dist/src/jobs/update-euler-vaults.js +2 -2
- package/dist/src/modules/v4/apr/apr.service.d.ts +1 -1
- package/dist/src/modules/v4/apr/apr.service.js +4 -4
- package/dist/src/modules/v4/campaign/campaign.service.d.ts +0 -8
- package/dist/src/modules/v4/campaign/campaign.service.js +0 -13
- package/dist/src/modules/v4/dynamicData/dynamicData.service.js +3 -4
- package/dist/src/modules/v4/opportunity/opportunity.service.js +1 -1
- package/dist/src/modules/v4/uniswapV4/uniswapV4.controller.d.ts +2 -2
- package/dist/src/modules/v4/uniswapV4/uniswapV4.service.d.ts +2 -2
- package/dist/src/modules/v4/uniswapV4/uniswapV4.service.js +1 -1
- package/dist/src/routes/v3/campaigns.d.ts +1 -1
- package/dist/src/routes/v3/compoundV2.d.ts +2 -10
- package/dist/src/routes/v3/compoundV2.js +1 -1
- package/dist/src/routes/v3/dolomite.js +1 -1
- package/dist/src/routes/v3/euler.js +1 -1
- package/dist/src/routes/v3/router.d.ts +5 -16
- package/dist/src/routes/v3/uniswapv4.d.ts +2 -5
- package/dist/src/routes/v3/uniswapv4.js +1 -1
- package/dist/src/utils/decodeCalls.d.ts +1 -1
- package/dist/src/utils/decodeCalls.js +1 -1
- package/dist/src/utils/encodeCalls.d.ts +1 -1
- package/dist/src/utils/encodeCalls.js +1 -1
- package/dist/src/utils/generateCardName.d.ts +1 -1
- package/dist/src/utils/generateCardName.js +1 -1
- package/dist/src/utils/generateIcons.d.ts +1 -1
- package/dist/src/utils/generateIcons.js +1 -1
- package/dist/tsconfig.package.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/src/factories/dynamicData/factory.d.ts +0 -0
- package/dist/src/factories/dynamicData/factory.js +0 -10
- package/dist/src/libs/campaigns/campaignTypes/AjnaDynamicData.d.ts +0 -5
- package/dist/src/libs/campaigns/campaignTypes/AjnaDynamicData.js +0 -111
- package/dist/src/libs/campaigns/campaignTypes/AmbientDynamicData.d.ts +0 -3
- package/dist/src/libs/campaigns/campaignTypes/AmbientDynamicData.js +0 -245
- package/dist/src/libs/campaigns/campaignTypes/BadgerDynamicData.d.ts +0 -5
- package/dist/src/libs/campaigns/campaignTypes/BadgerDynamicData.js +0 -96
- package/dist/src/libs/campaigns/campaignTypes/CLAMMDynamicData.d.ts +0 -3
- package/dist/src/libs/campaigns/campaignTypes/CLAMMDynamicData.js +0 -988
- package/dist/src/libs/campaigns/campaignTypes/CompoundDynamicData.d.ts +0 -3
- package/dist/src/libs/campaigns/campaignTypes/CompoundDynamicData.js +0 -142
- package/dist/src/libs/campaigns/campaignTypes/DolomiteDynamicData.d.ts +0 -5
- package/dist/src/libs/campaigns/campaignTypes/DolomiteDynamicData.js +0 -63
- package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicData.d.ts +0 -4
- package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicData.js +0 -167
- package/dist/src/libs/campaigns/campaignTypes/ERC20_SNAPSHOTDynamicData.d.ts +0 -5
- package/dist/src/libs/campaigns/campaignTypes/ERC20_SNAPSHOTDynamicData.js +0 -38
- package/dist/src/libs/campaigns/campaignTypes/EigenLayerDynamicData.d.ts +0 -3
- package/dist/src/libs/campaigns/campaignTypes/EigenLayerDynamicData.js +0 -70
- package/dist/src/libs/campaigns/campaignTypes/EncompassingDynamicData.d.ts +0 -5
- package/dist/src/libs/campaigns/campaignTypes/EncompassingDynamicData.js +0 -34
- package/dist/src/libs/campaigns/campaignTypes/EventBasedDynamicData.d.ts +0 -3
- package/dist/src/libs/campaigns/campaignTypes/EventBasedDynamicData.js +0 -115
- package/dist/src/libs/campaigns/campaignTypes/HyperdriveDynamicData.d.ts +0 -5
- package/dist/src/libs/campaigns/campaignTypes/HyperdriveDynamicData.js +0 -102
- package/dist/src/libs/campaigns/campaignTypes/JSON_AIRDROPDynamicData.d.ts +0 -5
- package/dist/src/libs/campaigns/campaignTypes/JSON_AIRDROPDynamicData.js +0 -19
- package/dist/src/libs/campaigns/campaignTypes/MORPHODynamicData.d.ts +0 -5
- package/dist/src/libs/campaigns/campaignTypes/MORPHODynamicData.js +0 -115
- package/dist/src/libs/campaigns/campaignTypes/RadiantDynamicData.d.ts +0 -3
- package/dist/src/libs/campaigns/campaignTypes/RadiantDynamicData.js +0 -125
- package/dist/src/libs/campaigns/campaignTypes/SILODynamicData.d.ts +0 -7
- package/dist/src/libs/campaigns/campaignTypes/SILODynamicData.js +0 -118
- package/dist/src/libs/campaigns/campaignTypes/UniswapV4DynamicData.d.ts +0 -3
- package/dist/src/libs/campaigns/campaignTypes/UniswapV4DynamicData.js +0 -267
- package/dist/src/libs/campaigns/campaignTypes/VestDynamicData.d.ts +0 -5
- package/dist/src/libs/campaigns/campaignTypes/VestDynamicData.js +0 -64
- package/dist/src/libs/campaigns/campaignsDynamicData.d.ts +0 -3
- package/dist/src/libs/campaigns/campaignsDynamicData.js +0 -131
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchA51Strategies.d.ts +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchA51Strategies.js +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchAmbientInfo.d.ts +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchAmbientInfo.js +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchClamInfo.d.ts +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchClamInfo.js +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchLogs.d.ts +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/fetchLogs.js +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getCompV2ForksVaults.d.ts +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getCompV2ForksVaults.js +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getContractCreationBlock.d.ts +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getContractCreationBlock.js +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getDolomiteMarkets.d.ts +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getDolomiteMarkets.js +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getEulerV2Vaults.d.ts +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getUniswapV4Pools.d.ts +0 -0
- /package/dist/src/{libs/campaigns → engine/dynamicData}/utils/getUniswapV4Pools.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/GenericProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/eulerVaultNames.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/eulerVaultNames.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/factoryFinder.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/factoryFinder.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/getBlacklistedSupply.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/getBlacklistedSupply.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/hardcoded.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/hardcoded.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/metamorphoTvl.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/metamorphoTvl.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/ownerFinder.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/ownerFinder.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/spliceTVL.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/spliceTVL.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/tokenType.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/helpers/tokenType.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AaveProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AaveProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AnglesLiquid.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AnglesLiquid.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AssetProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AssetProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AuraProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/AuraProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerGaugeProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerGaugeProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerPoolProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerPoolProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerV3PoolProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BalancerV3PoolProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BeefyProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BeefyProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BunniV2Processor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/BunniV2Processor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/CompoundProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/CompoundProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/ERC4626Processor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/ERC4626Processor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EnzymeProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EnzymeProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EqualizerGaugeProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EqualizerGaugeProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EulerBorrowProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EulerBorrowProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EulerLendProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/EulerLendProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/FluidProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/FluidProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/FraxProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/FraxProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/GammaProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/GammaProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/GearboxProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/GearboxProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HanjiVaultProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HanjiVaultProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HoldStationProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HoldStationProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HourglassProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/HourglassProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/MaverickBPProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/MaverickBPProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/MetamorphoProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/MetamorphoProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/NoLinkVaultProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/NoLinkVaultProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/PendleProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/PendleProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/PendleYTProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/PendleYTProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/RadiantProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/RadiantProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/RfxProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/RfxProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/Satlayer.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/Satlayer.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpectraProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpectraProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpectraYTProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpectraYTProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpliceProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SpliceProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SturdySiloProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/SturdySiloProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TempestVaultProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TempestVaultProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TemplateProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TemplateProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TorosProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/TorosProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/UniswapProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/UniswapProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/VicunaProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/VicunaProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/WoofiProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/WoofiProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/ZkSwapThreePoolProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/ZkSwapThreePoolProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/curveNPoolProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/curveNPoolProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/curveProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/curveProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/processorMapping.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/processorMapping.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/stakedCurveProcessor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/stakedCurveProcessor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/xU308Processor.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/implementations/xU308Processor.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesPrices.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesPrices.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound1.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound1.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound2.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound3.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound3.js +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound4.d.ts +0 -0
- /package/dist/src/{libs/campaigns/campaignTypes/ERC20SubTypes → engine/erc20SubTypeProcessors}/subtypesRound4.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/factory.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/factory.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ajna.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ajna.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ambiant.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ambiant.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Badger.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Badger.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Clamm.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Clamm.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Compound.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Compound.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Default.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Default.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Dolomite.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Dolomite.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/EigenLayer.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/EigenLayer.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Encompassing.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Encompassing.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Erc20.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Erc20Snapshot.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Erc20Snapshot.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/EventBased.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/EventBased.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Hyperdrive.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Hyperdrive.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Invalid.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Invalid.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ion.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Ion.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/JsonAirdrop.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/JsonAirdrop.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Morpho.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Morpho.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Radiant.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Radiant.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Silo.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Silo.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/UniswapV4.d.ts +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/UniswapV4.js +0 -0
- /package/dist/src/{factories → engine}/opportunityMetadata/implementations/Vest.d.ts +0 -0
@@ -0,0 +1,249 @@
|
|
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, EAprBreakdownType, NETWORK_LABELS, UniswapV4Addresses, UniswapV4StateViewInterface, getSqrtRatioAtTick, shortenAddress, } from "@sdk";
|
5
|
+
import moment from "moment";
|
6
|
+
import { log } from "../../../utils/logger";
|
7
|
+
import { Pricer } from "../../../utils/pricer";
|
8
|
+
// Constants
|
9
|
+
const CALLS_LENGTH = 2;
|
10
|
+
/**
|
11
|
+
* Compute TVL
|
12
|
+
* @dev important: using the most recent state save with current prices
|
13
|
+
* it's only an estimate
|
14
|
+
*/
|
15
|
+
async function computeUniV4PoolTVLFromMostRecentStateSave(chainId, poolID, priceCurrency0, priceCurrency1, decimalsCurrency0, decimalsCurrency1) {
|
16
|
+
let stateSave;
|
17
|
+
let blockNumber;
|
18
|
+
let states = {};
|
19
|
+
try {
|
20
|
+
const currentBlock = await ChainInteractionService(chainId).getBlockNumber();
|
21
|
+
const mostRecentStateSave = await engineDbClient.stateSave.findFirst({
|
22
|
+
where: {
|
23
|
+
id: `UniswapV4_${chainId}_${poolID}`,
|
24
|
+
blockNumber: {
|
25
|
+
lte: currentBlock,
|
26
|
+
},
|
27
|
+
},
|
28
|
+
orderBy: {
|
29
|
+
blockNumber: "desc",
|
30
|
+
},
|
31
|
+
});
|
32
|
+
stateSave = mostRecentStateSave.state;
|
33
|
+
blockNumber = mostRecentStateSave?.blockNumber;
|
34
|
+
states = stateSave.states;
|
35
|
+
// const globalState = stateSave.globalState as { tick: number; liquidity: string };
|
36
|
+
}
|
37
|
+
catch (e) {
|
38
|
+
log.warn(`merklDynamic data - failed to read a recent state of pool ${poolID} on ${NETWORK_LABELS[chainId]}`);
|
39
|
+
}
|
40
|
+
const { fileName, bucketName } = states;
|
41
|
+
// Bucket service
|
42
|
+
let tvl = 0;
|
43
|
+
let amount0 = 0;
|
44
|
+
let amount1 = 0;
|
45
|
+
try {
|
46
|
+
const bucket = new BucketService(bucketName, "merkl-production");
|
47
|
+
const storedStates = JSON.parse(await bucket.pull(fileName));
|
48
|
+
for (const [_, { value, params: _params }] of Object.entries(storedStates)) {
|
49
|
+
amount0 += BN2Number(value.amount0, decimalsCurrency0);
|
50
|
+
amount1 += BN2Number(value.amount1, decimalsCurrency1);
|
51
|
+
}
|
52
|
+
tvl = amount0 * (priceCurrency0 ?? 0) + amount1 * (priceCurrency1 ?? 0);
|
53
|
+
}
|
54
|
+
catch (e) {
|
55
|
+
console.log(e);
|
56
|
+
log.warn(`merklDynamic data - failed to decode state of pool ${poolID} on ${NETWORK_LABELS[chainId]}`);
|
57
|
+
}
|
58
|
+
return { tvl, amount0, amount1, blockNumber: blockNumber };
|
59
|
+
}
|
60
|
+
export class UniswapV4DynamicData {
|
61
|
+
async build(chainId, campaigns) {
|
62
|
+
const dynamicData = [];
|
63
|
+
const pricer = await Pricer.load();
|
64
|
+
const calls = [];
|
65
|
+
/** Dedupe pools from campaigns to build pool list */
|
66
|
+
const poolList = [];
|
67
|
+
for (const campaign of campaigns ?? []) {
|
68
|
+
/** Loop through all campaigns to add pools */
|
69
|
+
if (!poolList?.map(p => p.mainParameter.toLowerCase()).includes(campaign.mainParameter.toLowerCase())) {
|
70
|
+
poolList.push({
|
71
|
+
poolId: campaign.campaignParameters.poolId,
|
72
|
+
mainParameter: campaign.mainParameter, // FIXME
|
73
|
+
});
|
74
|
+
}
|
75
|
+
}
|
76
|
+
if (!!poolList) {
|
77
|
+
for (const pool of poolList) {
|
78
|
+
calls.push({
|
79
|
+
allowFailure: true,
|
80
|
+
callData: UniswapV4StateViewInterface.encodeFunctionData("getLiquidity", [pool.poolId]),
|
81
|
+
target: UniswapV4Addresses[chainId].StateView,
|
82
|
+
}, {
|
83
|
+
allowFailure: true,
|
84
|
+
callData: UniswapV4StateViewInterface.encodeFunctionData("getSlot0", [pool.poolId]),
|
85
|
+
target: UniswapV4Addresses[chainId].StateView,
|
86
|
+
});
|
87
|
+
}
|
88
|
+
const result = await ChainInteractionService(chainId).fetchState(calls);
|
89
|
+
let i = 0;
|
90
|
+
if (!!poolList) {
|
91
|
+
for (const pool of poolList) {
|
92
|
+
// This liquidity call gives the active liquidity on the pool. To get the total liquidity we would need to loop over all positions
|
93
|
+
let poolTotalLiquidity;
|
94
|
+
let sqrtPrice;
|
95
|
+
let tick;
|
96
|
+
let poolBalanceToken0 = 0;
|
97
|
+
let poolBalanceToken1 = 0;
|
98
|
+
const campaignsForPool = campaigns?.filter(campaign => campaign.mainParameter.toLowerCase() === pool.mainParameter.toLowerCase());
|
99
|
+
const prevI = i;
|
100
|
+
try {
|
101
|
+
poolTotalLiquidity = UniswapV4StateViewInterface.decodeFunctionResult("getLiquidity", result[i++].returnData)[0].toString();
|
102
|
+
const poolData = UniswapV4StateViewInterface.decodeFunctionResult("getSlot0", result[i++].returnData);
|
103
|
+
tick = poolData.tick;
|
104
|
+
sqrtPrice = getSqrtRatioAtTick(tick).toString();
|
105
|
+
}
|
106
|
+
catch {
|
107
|
+
log.warn(`merklDynamic data - failed to decode state of pool ${pool.poolId} on ${NETWORK_LABELS[chainId]}`);
|
108
|
+
i = prevI + CALLS_LENGTH;
|
109
|
+
continue;
|
110
|
+
}
|
111
|
+
const decimalsCurrency0 = campaignsForPool[0].campaignParameters.decimalsCurrency0;
|
112
|
+
const decimalsCurrency1 = campaignsForPool[0].campaignParameters.decimalsCurrency1;
|
113
|
+
const symbolCurrency0 = campaignsForPool[0].campaignParameters.symbolCurrency0;
|
114
|
+
const symbolCurrency1 = campaignsForPool[0].campaignParameters.symbolCurrency1;
|
115
|
+
const priceToken0 = (await pricer.get({
|
116
|
+
address: campaignsForPool[0].campaignParameters.currency0,
|
117
|
+
chainId: chainId,
|
118
|
+
symbol: symbolCurrency0,
|
119
|
+
}));
|
120
|
+
const priceToken1 = (await pricer.get({
|
121
|
+
address: campaignsForPool[0].campaignParameters.currency1,
|
122
|
+
chainId: chainId,
|
123
|
+
symbol: symbolCurrency1,
|
124
|
+
}));
|
125
|
+
const { tvl, amount0, amount1, blockNumber } = await computeUniV4PoolTVLFromMostRecentStateSave(chainId, pool.poolId, priceToken0, priceToken1, decimalsCurrency0, decimalsCurrency1);
|
126
|
+
poolBalanceToken0 += amount0;
|
127
|
+
poolBalanceToken1 += amount1;
|
128
|
+
/** Iterate over distributions to compute APRs */
|
129
|
+
for (const campaign of campaignsForPool) {
|
130
|
+
const c = campaign;
|
131
|
+
const amount = BN2Number(c.amount, c.campaignParameters.decimalsRewardToken);
|
132
|
+
const startTimestamp = BN2Number(c.startTimestamp, 0);
|
133
|
+
const endTimestamp = BN2Number(c.endTimestamp, 0);
|
134
|
+
const isLive = moment().unix() > startTimestamp && moment().unix() < endTimestamp;
|
135
|
+
const totalWeight = BN2Number(c.campaignParameters.weightFees, 4) +
|
136
|
+
BN2Number(c.campaignParameters.weightToken0, 4) +
|
137
|
+
BN2Number(c.campaignParameters.weightToken1, 4);
|
138
|
+
// Proportions in percentage
|
139
|
+
const propFees = (BN2Number(c.campaignParameters.weightFees, 4) / totalWeight) * 100;
|
140
|
+
const propToken0 = (BN2Number(c.campaignParameters.weightToken0, 4) / totalWeight) * 100;
|
141
|
+
const propToken1 = (BN2Number(c.campaignParameters.weightToken1, 4) / totalWeight) * 100;
|
142
|
+
let distributionMeanAPR = 0;
|
143
|
+
const blacklistedBalance0 = 0;
|
144
|
+
const blacklistedBalance1 = 0;
|
145
|
+
const blacklistedLiquidity = 0;
|
146
|
+
const aprs = {};
|
147
|
+
const aprBreakdowns = [];
|
148
|
+
let priceRewardToken = 0;
|
149
|
+
if (isLive && c.campaignParameters.symbolRewardToken !== "aglaMerkl") {
|
150
|
+
// priceRewardToken = (await pricer.get({
|
151
|
+
// address: c.rewardToken,
|
152
|
+
// chainId: chainId,
|
153
|
+
// symbol: c.campaignParameters.symbolRewardToken,
|
154
|
+
// })) as number;
|
155
|
+
priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
|
156
|
+
/**
|
157
|
+
* Handle whitelisted/blacklisted addresses to compute APR
|
158
|
+
*/
|
159
|
+
if (c.campaignParameters.whitelist.length > 0) {
|
160
|
+
// TODO
|
161
|
+
}
|
162
|
+
else if (c.campaignParameters.blacklist.length > 0) {
|
163
|
+
// TODO
|
164
|
+
}
|
165
|
+
/** Yearly rewards in $ */
|
166
|
+
const yearlyToken0Rewards = (propToken0 * priceRewardToken * amount * (365 * 24 * 3_600)) / (endTimestamp - startTimestamp);
|
167
|
+
const yearlyToken1Rewards = (propToken1 * priceRewardToken * amount * (365 * 24 * 3_600)) / (endTimestamp - startTimestamp);
|
168
|
+
const yearlyFeeRewards = (propFees * priceRewardToken * amount * (365 * 24 * 3_600)) / (endTimestamp - startTimestamp);
|
169
|
+
let poolAPRkey = "";
|
170
|
+
/**
|
171
|
+
* General APR (@notice potentially with a boost)
|
172
|
+
*/
|
173
|
+
const poolBalanceToken0WithoutBlacklist = poolBalanceToken0;
|
174
|
+
const poolBalanceToken1WithoutBlacklist = poolBalanceToken1;
|
175
|
+
// const poolLiquidityWithoutBlacklist = poolTotalLiquidity - (blacklistedLiquidity ?? 0);
|
176
|
+
const tvl = poolBalanceToken0WithoutBlacklist * priceToken0 + poolBalanceToken1WithoutBlacklist * priceToken1;
|
177
|
+
distributionMeanAPR = (yearlyToken0Rewards + yearlyToken1Rewards + yearlyFeeRewards) / tvl;
|
178
|
+
distributionMeanAPR = !distributionMeanAPR || Number.isNaN(distributionMeanAPR) ? 0 : distributionMeanAPR;
|
179
|
+
/**
|
180
|
+
* @dev We cannot include a whitelisted distrib apr into the mean APR
|
181
|
+
*/
|
182
|
+
if (c.campaignParameters.whitelist.length === 0) {
|
183
|
+
poolAPRkey = "Average APR (rewards / pool TVL)";
|
184
|
+
if (!aprs[poolAPRkey])
|
185
|
+
aprs[poolAPRkey] = 0;
|
186
|
+
aprs[poolAPRkey] += distributionMeanAPR;
|
187
|
+
// @Hugo wip: new way to structure aprBreakdowns
|
188
|
+
aprBreakdowns.push({
|
189
|
+
address: pool.poolId,
|
190
|
+
value: distributionMeanAPR,
|
191
|
+
type: EAprBreakdownType.AVERAGE,
|
192
|
+
label: "Average APR (rewards / pool TVL)",
|
193
|
+
});
|
194
|
+
// APR per token
|
195
|
+
poolAPRkey = `APR for holding ${c.campaignParameters.symbolCurrency0} in pool`;
|
196
|
+
if (!aprs[poolAPRkey])
|
197
|
+
aprs[poolAPRkey] = 0;
|
198
|
+
aprs[poolAPRkey] += yearlyToken0Rewards / (poolBalanceToken0WithoutBlacklist * priceToken0);
|
199
|
+
// @Hugo wip: new way to structure aprBreakdowns
|
200
|
+
aprBreakdowns.push({
|
201
|
+
address: pool.poolId,
|
202
|
+
value: yearlyToken0Rewards / (poolBalanceToken0WithoutBlacklist * priceToken0),
|
203
|
+
type: EAprBreakdownType.TOKEN1,
|
204
|
+
label: c.campaignParameters.symbolCurrency0,
|
205
|
+
});
|
206
|
+
poolAPRkey = `APR for holding ${c.campaignParameters.symbolCurrency1} in pool`;
|
207
|
+
if (!aprs[poolAPRkey])
|
208
|
+
aprs[poolAPRkey] = 0;
|
209
|
+
aprs[poolAPRkey] += yearlyToken1Rewards / (poolBalanceToken1WithoutBlacklist * priceToken1);
|
210
|
+
// @Hugo wip: new way to structure aprBreakdowns
|
211
|
+
aprBreakdowns.push({
|
212
|
+
address: pool.poolId,
|
213
|
+
value: yearlyToken1Rewards / (poolBalanceToken1WithoutBlacklist * priceToken1),
|
214
|
+
type: EAprBreakdownType.TOKEN2,
|
215
|
+
label: c.campaignParameters.symbolCurrency1,
|
216
|
+
});
|
217
|
+
}
|
218
|
+
else {
|
219
|
+
for (const _ of c.campaignParameters.whitelist) {
|
220
|
+
const poolAPRkey = `Whitelisted campaign on UniswapV4 via address ${shortenAddress(c.campaignParameters.whitelist[0])} Average APR`;
|
221
|
+
if (!aprs[poolAPRkey])
|
222
|
+
aprs[poolAPRkey] = 0;
|
223
|
+
}
|
224
|
+
aprs[poolAPRkey] += distributionMeanAPR;
|
225
|
+
}
|
226
|
+
}
|
227
|
+
dynamicData.push({
|
228
|
+
...campaign,
|
229
|
+
apr: distributionMeanAPR,
|
230
|
+
aprs,
|
231
|
+
aprBreakdowns,
|
232
|
+
blacklistedBalance0,
|
233
|
+
blacklistedBalance1,
|
234
|
+
blacklistedLiquidity,
|
235
|
+
poolBalanceToken0,
|
236
|
+
poolBalanceToken1,
|
237
|
+
poolTotalLiquidity,
|
238
|
+
sqrtPrice,
|
239
|
+
tick: tick,
|
240
|
+
priceRewardToken: priceRewardToken,
|
241
|
+
tvl: poolBalanceToken0 * priceToken0 + poolBalanceToken1 * priceToken1,
|
242
|
+
});
|
243
|
+
}
|
244
|
+
}
|
245
|
+
}
|
246
|
+
}
|
247
|
+
return dynamicData;
|
248
|
+
}
|
249
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { type Campaign, type CampaignParameters, type MerklChainId } from "@sdk";
|
2
|
+
import type { DynamicDataBuilder } from "../interface";
|
3
|
+
export declare const VEST_TREASURY = "0x7ccF5BbeC69c790D27dA3b5398B9e0d6D6EeC9F3";
|
4
|
+
export declare const VEST_TOKEN = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4";
|
5
|
+
type campaignType = Campaign.VEST;
|
6
|
+
export declare class VestDynamicData implements DynamicDataBuilder<campaignType> {
|
7
|
+
build(chainId: MerklChainId, campaigns: CampaignParameters<campaignType>[]): Promise<VestCampaignDynamicData[]>;
|
8
|
+
}
|
9
|
+
export {};
|
@@ -0,0 +1,58 @@
|
|
1
|
+
import { TokenService } from "@/modules/v4/token/token.service";
|
2
|
+
import { BN2Number, ChainInteractionService, ERC20Interface, YEAR, } from "@sdk";
|
3
|
+
import { log } from "../../../utils/logger";
|
4
|
+
import { Pricer } from "../../../utils/pricer";
|
5
|
+
export const VEST_TREASURY = "0x7ccF5BbeC69c790D27dA3b5398B9e0d6D6EeC9F3";
|
6
|
+
export const VEST_TOKEN = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4";
|
7
|
+
export class VestDynamicData {
|
8
|
+
async build(chainId, campaigns) {
|
9
|
+
const pricer = await Pricer.load();
|
10
|
+
const calls = [];
|
11
|
+
for (const _campaign of campaigns) {
|
12
|
+
calls.push({
|
13
|
+
allowFailure: true,
|
14
|
+
callData: ERC20Interface.encodeFunctionData("balanceOf", [VEST_TREASURY]),
|
15
|
+
target: VEST_TOKEN,
|
16
|
+
});
|
17
|
+
}
|
18
|
+
const result = await ChainInteractionService(chainId).fetchState(calls);
|
19
|
+
let i = 0;
|
20
|
+
const dynamicData = [];
|
21
|
+
for (const campaign of campaigns) {
|
22
|
+
let totalSupply;
|
23
|
+
try {
|
24
|
+
totalSupply = BN2Number(ERC20Interface.decodeFunctionResult("balanceOf", result[i++].returnData)[0], 6);
|
25
|
+
}
|
26
|
+
catch {
|
27
|
+
log.warn(`Error getting totalSupply for campaign ${campaign.campaignId}`);
|
28
|
+
totalSupply = 0.0000001;
|
29
|
+
}
|
30
|
+
// const priceRewardToken =
|
31
|
+
// (await pricer.get({
|
32
|
+
// address: campaign.rewardToken,
|
33
|
+
// chainId: campaign.chainId,
|
34
|
+
// symbol: campaign.campaignParameters.symbolRewardToken,
|
35
|
+
// })) ?? 0;
|
36
|
+
const priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
|
37
|
+
const priceTargetToken = (await pricer.get({
|
38
|
+
address: VEST_TOKEN,
|
39
|
+
chainId: campaign.computeChainId,
|
40
|
+
symbol: "USDC.e",
|
41
|
+
})) ?? 0;
|
42
|
+
const tvl = totalSupply * priceTargetToken;
|
43
|
+
dynamicData.push({
|
44
|
+
...campaign,
|
45
|
+
apr: (priceRewardToken *
|
46
|
+
BN2Number(campaign.amount, campaign.campaignParameters.decimalsRewardToken) *
|
47
|
+
YEAR *
|
48
|
+
100) /
|
49
|
+
campaign.campaignParameters.duration /
|
50
|
+
(totalSupply * priceTargetToken),
|
51
|
+
totalSupplyTargetToken: totalSupply,
|
52
|
+
tvl,
|
53
|
+
priceRewardToken: priceRewardToken,
|
54
|
+
});
|
55
|
+
}
|
56
|
+
return dynamicData;
|
57
|
+
}
|
58
|
+
}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import type { Campaign as CampaignEnum, CampaignParameters, MerklChainId } from "@sdk";
|
2
|
+
import type { DynamicDataBuilder } from "../interface";
|
3
|
+
export declare class DefaultDynamicData implements DynamicDataBuilder<CampaignEnum> {
|
4
|
+
build(_chainId: MerklChainId, campaigns: CampaignParameters<CampaignEnum>[]): Promise<CampaignParameters<CampaignEnum>[]>;
|
5
|
+
}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { Redis } from "@/cache";
|
2
|
+
import { fetchEulerVaultName } from "@/engine/erc20SubTypeProcessors/helpers/eulerVaultNames";
|
2
3
|
import { batchMulticallCallWithRetry } from "@/utils/generic";
|
3
4
|
import { log } from "@/utils/logger";
|
4
5
|
import { providers } from "@/utils/providers";
|
@@ -6,7 +7,6 @@ import { apiDbClient } from "@db";
|
|
6
7
|
import { ChainInteractionService, ERC20Interface, EULER_ADDRESSES, EulerEVKInterface, EulerVaultLensInterface, EulerVault__factory, NETWORK_LABELS, eulerChainIds, getContractCreationBlock, } from "@sdk";
|
7
8
|
import { getAddress } from "ethers/lib/utils";
|
8
9
|
import _ from "lodash";
|
9
|
-
import { fetchEulerVaultName } from "../campaignTypes/ERC20SubTypes/helpers/eulerVaultNames";
|
10
10
|
import { safeFetchLogs } from "./fetchLogs";
|
11
11
|
export var LoggedEntityType;
|
12
12
|
(function (LoggedEntityType) {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { Pricer } from "@/utils/pricer";
|
2
2
|
import { type CallDto, type Campaign, type CampaignParameters } from "@sdk";
|
3
|
-
import type { ERC20SupportedCampaignType } from "../
|
3
|
+
import type { ERC20SupportedCampaignType } from "../dynamicData/implementations/Erc20";
|
4
4
|
import { type tokenType, type tokenTypeStruct } from "./helpers/tokenType";
|
5
5
|
export declare enum Round {
|
6
6
|
one = "round1",
|
@@ -1,4 +1,4 @@
|
|
1
1
|
import type { CampaignParameters, ResultDto } from "@sdk";
|
2
|
-
import type { ERC20SupportedCampaignType } from "../
|
2
|
+
import type { ERC20SupportedCampaignType } from "../dynamicData/implementations/Erc20";
|
3
3
|
import type { tokenType, tokenTypeStruct } from "./helpers/tokenType";
|
4
4
|
export declare function getTokenTypeRound2(index: number, type: tokenType, typeInfo: any, calls: ResultDto[], campaign?: CampaignParameters<ERC20SupportedCampaignType>): tokenTypeStruct;
|
@@ -1,6 +1,6 @@
|
|
1
|
+
import { dynamicDataBuilderFactory } from "@/engine/dynamicData/factory";
|
1
2
|
import { log } from "@/utils/logger";
|
2
3
|
import { Campaign as CampaignEnum } from "@sdk";
|
3
|
-
import { CampaignService } from "../../../modules/v4/campaign";
|
4
4
|
import { ProtocolService } from "../../../modules/v4/protocol/protocol.service";
|
5
5
|
export class Erc20Metadata {
|
6
6
|
async build(computeChainId, params, _subType, rewardTokenAddress, distributionChainId, campaignId) {
|
@@ -9,7 +9,7 @@ export class Erc20Metadata {
|
|
9
9
|
let mainProtocolId = undefined;
|
10
10
|
const tokens = [{ chainId: computeChainId, address: params.targetToken }];
|
11
11
|
try {
|
12
|
-
const [dynamicData] =
|
12
|
+
const [dynamicData] = await dynamicDataBuilderFactory(CampaignEnum.ERC20).build(computeChainId, [
|
13
13
|
{
|
14
14
|
campaignId,
|
15
15
|
rewardToken: rewardTokenAddress,
|
@@ -18,7 +18,7 @@ export class Erc20Metadata {
|
|
18
18
|
computeChainId,
|
19
19
|
campaignParameters: params,
|
20
20
|
},
|
21
|
-
])
|
21
|
+
]);
|
22
22
|
action = dynamicData?.typeInfo?.action ?? action;
|
23
23
|
name = dynamicData?.typeInfo?.cardName;
|
24
24
|
mainProtocolId = dynamicData?.typeInfo?.protocol?.toLowerCase().replace(" ", "");
|
@@ -2,7 +2,7 @@ import { Campaign as CampaignEnum, type CampaignParameters, type ChainId } from
|
|
2
2
|
import type { MetadataBuilder } from "../interface";
|
3
3
|
type campaignType = CampaignEnum.EULER;
|
4
4
|
export declare class EulerMetadata implements MetadataBuilder<campaignType> {
|
5
|
-
build(computeChainId: ChainId, params: CampaignParameters<campaignType>["campaignParameters"], subType: CampaignParameters<campaignType>["campaignSubType"], rewardTokenAddress: string,
|
5
|
+
build(computeChainId: ChainId, params: CampaignParameters<campaignType>["campaignParameters"], subType: CampaignParameters<campaignType>["campaignSubType"], rewardTokenAddress: string, distributionChainId: ChainId, campaignId: string): Promise<{
|
6
6
|
name: string;
|
7
7
|
tokens: {
|
8
8
|
chainId: ChainId;
|
@@ -1,21 +1,21 @@
|
|
1
|
+
import { dynamicDataBuilderFactory } from "@/engine/dynamicData/factory";
|
1
2
|
import { log } from "@/utils/logger";
|
2
3
|
import { OpportunityAction } from "@db/api";
|
3
4
|
import { Campaign as CampaignEnum } from "@sdk";
|
4
|
-
import { CampaignService } from "../../../modules/v4/campaign";
|
5
5
|
export class EulerMetadata {
|
6
|
-
async build(computeChainId, params, subType, rewardTokenAddress,
|
6
|
+
async build(computeChainId, params, subType, rewardTokenAddress, distributionChainId, campaignId) {
|
7
7
|
let name = `Hold ${params.symbolTargetToken}`;
|
8
8
|
try {
|
9
|
-
const [dynamicData] =
|
9
|
+
const [dynamicData] = await dynamicDataBuilderFactory(CampaignEnum.EULER).build(computeChainId, [
|
10
10
|
{
|
11
|
-
campaignSubType: subType,
|
12
|
-
campaignParameters: params,
|
13
|
-
computeChainId,
|
14
11
|
campaignId,
|
15
12
|
rewardToken: rewardTokenAddress,
|
16
13
|
amount: "1",
|
14
|
+
chainId: distributionChainId,
|
15
|
+
computeChainId,
|
16
|
+
campaignParameters: params,
|
17
17
|
},
|
18
|
-
])
|
18
|
+
]);
|
19
19
|
name = dynamicData?.typeInfo?.cardName;
|
20
20
|
}
|
21
21
|
catch {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { VEST_TOKEN } from "@/
|
1
|
+
import { VEST_TOKEN } from "@/engine/dynamicData/implementations/Vest";
|
2
2
|
import { OpportunityAction } from "@db/api";
|
3
3
|
export class VestMetadata {
|
4
4
|
async build(computeChainId, _params, _subType) {
|
package/dist/src/index.d.ts
CHANGED
@@ -4551,8 +4551,8 @@ declare const app: Elysia<"", false, {
|
|
4551
4551
|
query: {
|
4552
4552
|
types?: string | number | string[] | number[] | undefined;
|
4553
4553
|
chainIds?: string | string[] | undefined;
|
4554
|
-
live?: boolean | undefined;
|
4555
4554
|
creatorTag?: string | undefined;
|
4555
|
+
live?: boolean | undefined;
|
4556
4556
|
hideTestTokens?: string | undefined;
|
4557
4557
|
};
|
4558
4558
|
headers: unknown;
|
@@ -4655,16 +4655,8 @@ declare const app: Elysia<"", false, {
|
|
4655
4655
|
query: {};
|
4656
4656
|
headers: unknown;
|
4657
4657
|
response: {
|
4658
|
-
|
4659
|
-
|
4660
|
-
address: string;
|
4661
|
-
symbolCToken: string;
|
4662
|
-
decimalsCToken: number;
|
4663
|
-
underlying: string;
|
4664
|
-
symbolUnderlying: string;
|
4665
|
-
decimalsUnderlying: number;
|
4666
|
-
}[];
|
4667
|
-
};
|
4658
|
+
[x: string]: any;
|
4659
|
+
200: any;
|
4668
4660
|
};
|
4669
4661
|
};
|
4670
4662
|
};
|
@@ -5218,11 +5210,8 @@ declare const app: Elysia<"", false, {
|
|
5218
5210
|
query: {};
|
5219
5211
|
headers: unknown;
|
5220
5212
|
response: {
|
5221
|
-
|
5222
|
-
|
5223
|
-
[poolId: string]: UniswapV4PoolType;
|
5224
|
-
} | undefined;
|
5225
|
-
};
|
5213
|
+
[x: string]: any;
|
5214
|
+
200: any;
|
5226
5215
|
};
|
5227
5216
|
};
|
5228
5217
|
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Redis } from "@/cache";
|
2
|
-
import {
|
3
|
-
import {
|
2
|
+
import { LoggedEntityType, getEulerV2Vaults } from "@/engine/dynamicData/utils/getEulerV2Vaults";
|
3
|
+
import { fetchEulerVaultName } from "@/engine/erc20SubTypeProcessors/helpers/eulerVaultNames";
|
4
4
|
import { batchMulticallCallWithRetry } from "@/utils/generic";
|
5
5
|
import { log } from "@/utils/logger";
|
6
6
|
import { apiDbClient } from "@db";
|
@@ -2,5 +2,5 @@ import { type CampaignDynamicData, Campaign as CampaignTypeV3 } from "@sdk";
|
|
2
2
|
import type { AprRecord } from "./apr.model";
|
3
3
|
export declare abstract class AprService {
|
4
4
|
static hashId(opportunityId: string, timestamp: bigint): string;
|
5
|
-
static extractFromDynamicData<C extends CampaignTypeV3>(type: C,
|
5
|
+
static extractFromDynamicData<C extends CampaignTypeV3>(type: C, campaigns: CampaignDynamicData<C>[], timestamp?: bigint): AprRecord["model"];
|
6
6
|
}
|
@@ -5,18 +5,18 @@ export class AprService {
|
|
5
5
|
static hashId(opportunityId, timestamp) {
|
6
6
|
return Bun.hash(`${opportunityId}${timestamp}`).toString();
|
7
7
|
}
|
8
|
-
static extractFromDynamicData(type,
|
8
|
+
static extractFromDynamicData(type, campaigns, timestamp = BigInt(moment().unix())) {
|
9
9
|
const typesWithoutApr = [CampaignTypeV3.INVALID, CampaignTypeV3.JSON_AIRDROP, CampaignTypeV3.ERC20_SNAPSHOT];
|
10
10
|
if (typesWithoutApr.includes(type))
|
11
11
|
return { timestamp, cumulated: 0, breakdowns: [] };
|
12
|
-
let cumulated =
|
12
|
+
let cumulated = campaigns.reduce((sum, campaign) => {
|
13
13
|
const isLive = BigInt(campaign.endTimestamp) > timestamp && BigInt(campaign.startTimestamp) < timestamp;
|
14
14
|
if (!isLive)
|
15
15
|
return sum;
|
16
16
|
return sum + (Number.isNaN(Number(campaign.apr)) ? 0 : Number(campaign.apr));
|
17
17
|
}, 0) ?? 0;
|
18
18
|
cumulated = Number.isNaN(Number(cumulated)) || !Number.isFinite(cumulated) ? 0 : cumulated;
|
19
|
-
const breakdowns =
|
19
|
+
const breakdowns = campaigns.map(campaign => {
|
20
20
|
const isLive = BigInt(campaign.endTimestamp) > timestamp && BigInt(campaign.startTimestamp) < timestamp;
|
21
21
|
return {
|
22
22
|
identifier: campaign.campaignId,
|
@@ -25,7 +25,7 @@ export class AprService {
|
|
25
25
|
};
|
26
26
|
});
|
27
27
|
if (type === CampaignTypeV3.CLAMM) {
|
28
|
-
for (const campaign of
|
28
|
+
for (const campaign of campaigns) {
|
29
29
|
const isLive = BigInt(campaign.endTimestamp) > timestamp && BigInt(campaign.startTimestamp) < timestamp;
|
30
30
|
if (campaign.forwarders) {
|
31
31
|
for (const forwarder of campaign.forwarders) {
|
@@ -722,14 +722,6 @@ export declare abstract class CampaignService {
|
|
722
722
|
createdAt: Date;
|
723
723
|
};
|
724
724
|
static formatAsCampaignParameters<C extends CampaignEnum>(campaign: CampaignWithParams): CampaignParameters<C>;
|
725
|
-
/**
|
726
|
-
* Fetches the campaign dynamic data for a v3 campaign onchain
|
727
|
-
* @param chainId
|
728
|
-
* @param campaignType
|
729
|
-
* @param campaigns of v3 type
|
730
|
-
* @returns
|
731
|
-
*/
|
732
|
-
static fetchDynamicData(chainId: number, campaignType: string, campaigns: CampaignParameters<any>[]): Promise<any>;
|
733
725
|
/**
|
734
726
|
* Shortcut to get daily amount from total
|
735
727
|
* @param start timestamp
|
@@ -1,11 +1,9 @@
|
|
1
1
|
import { HttpError } from "@/errors";
|
2
|
-
import { campaignsDynamicData } from "@/libs/campaigns/campaignsDynamicData";
|
3
2
|
import { OpportunityService } from "@/modules/v4/opportunity";
|
4
3
|
import { StatusService } from "@/modules/v4/status/status.service";
|
5
4
|
import { TokenRepository } from "@/modules/v4/token/token.repository";
|
6
5
|
import { TokenService } from "@/modules/v4/token/token.service";
|
7
6
|
import { CannotParseOpportunity, InvalidParameter } from "@/utils/error";
|
8
|
-
import { executeSimple } from "@/utils/execute";
|
9
7
|
import { log } from "@/utils/logger";
|
10
8
|
import { Campaign as CampaignEnum, NETWORK_LABELS, } from "@sdk";
|
11
9
|
import { utils } from "ethers";
|
@@ -293,17 +291,6 @@ export class CampaignService {
|
|
293
291
|
amount: campaign.amount,
|
294
292
|
};
|
295
293
|
}
|
296
|
-
/**
|
297
|
-
* Fetches the campaign dynamic data for a v3 campaign onchain
|
298
|
-
* @param chainId
|
299
|
-
* @param campaignType
|
300
|
-
* @param campaigns of v3 type
|
301
|
-
* @returns
|
302
|
-
*/
|
303
|
-
static async fetchDynamicData(chainId, campaignType, campaigns) {
|
304
|
-
const calls = campaignsDynamicData(chainId, campaigns, CampaignEnum[campaignType]);
|
305
|
-
return await executeSimple(chainId, calls);
|
306
|
-
}
|
307
294
|
/**
|
308
295
|
* Shortcut to get daily amount from total
|
309
296
|
* @param start timestamp
|
@@ -1,8 +1,7 @@
|
|
1
|
+
import { dynamicDataBuilderFactory } from "@/engine/dynamicData/factory";
|
1
2
|
import { HttpError } from "@/errors";
|
2
|
-
import { campaignsDynamicData } from "@/libs/campaigns/campaignsDynamicData";
|
3
3
|
import { OpportunityService } from "@/modules/v4/opportunity/opportunity.service";
|
4
4
|
import bigintToString from "@/utils/bigintToString";
|
5
|
-
import { executeSimple } from "@/utils/execute";
|
6
5
|
import { log } from "@/utils/logger";
|
7
6
|
import { Campaign, NETWORK_LABELS } from "@sdk";
|
8
7
|
import { Campaign as CampaignEnum } from "@sdk";
|
@@ -43,7 +42,7 @@ export class DynamicDataService {
|
|
43
42
|
},
|
44
43
|
];
|
45
44
|
log.info(`querying mock campaign on chain: ${NETWORK_LABELS[chainId]}`);
|
46
|
-
const result = await
|
45
|
+
const result = await dynamicDataBuilderFactory(Campaign.ERC20).build(Number(chainId), campaigns);
|
47
46
|
return {
|
48
47
|
priceTargetToken: result[0]?.typeInfo.priceTargetToken,
|
49
48
|
totalSupply: result[0]?.typeInfo.totalSupply,
|
@@ -56,7 +55,7 @@ export class DynamicDataService {
|
|
56
55
|
static async updateForCampaignType(campaigns, type) {
|
57
56
|
const chainId = campaigns[0].computeChainId;
|
58
57
|
const dynamicDataArray = [];
|
59
|
-
const dynamicData = await
|
58
|
+
const dynamicData = await dynamicDataBuilderFactory(typeof type === "number" ? type : Campaign[type]).build(chainId, campaigns);
|
60
59
|
const oppMap = {};
|
61
60
|
for (const data of dynamicData) {
|
62
61
|
if (!!data) {
|
@@ -10,7 +10,7 @@ import { Prisma, Status } from "@db/api";
|
|
10
10
|
import { record } from "@elysiajs/opentelemetry";
|
11
11
|
import { Campaign as CampaignEnum } from "@sdk";
|
12
12
|
import moment from "moment";
|
13
|
-
import { metadataBuilderFactory } from "../../../
|
13
|
+
import { metadataBuilderFactory } from "../../../engine/opportunityMetadata/factory";
|
14
14
|
import { OpportunityRepository } from "./opportunity.repository";
|
15
15
|
export class OpportunityService {
|
16
16
|
static hashId(opportunity) {
|
@@ -27,10 +27,10 @@ export declare const uniswapV4Controller: Elysia<"uniswap-v4", false, {
|
|
27
27
|
poolId: string;
|
28
28
|
poolKey: {
|
29
29
|
hooks: string;
|
30
|
-
currency0: string;
|
31
|
-
currency1: string;
|
32
30
|
fee: number;
|
33
31
|
tickSpacing: number;
|
32
|
+
currency0: string;
|
33
|
+
currency1: string;
|
34
34
|
};
|
35
35
|
decimalsCurrency0: number;
|
36
36
|
decimalsCurrency1: number;
|
@@ -7,10 +7,10 @@ export declare abstract class UniswapV4Service {
|
|
7
7
|
poolId: string;
|
8
8
|
poolKey: {
|
9
9
|
hooks: string;
|
10
|
-
currency0: string;
|
11
|
-
currency1: string;
|
12
10
|
fee: number;
|
13
11
|
tickSpacing: number;
|
12
|
+
currency0: string;
|
13
|
+
currency1: string;
|
14
14
|
};
|
15
15
|
decimalsCurrency0: number;
|
16
16
|
decimalsCurrency1: number;
|