@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
@@ -1,4 +1,5 @@
|
|
1
1
|
import { Redis } from "@/cache";
|
2
|
+
import { dynamicDataBuilderFactory } from "@/engine/dynamicData/factory";
|
2
3
|
import { campaignsToOldFormat } from "@/libs/deprecated-merklv3";
|
3
4
|
import { AprService } from "@/modules/v4/apr";
|
4
5
|
import { CacheService } from "@/modules/v4/cache";
|
@@ -12,11 +13,9 @@ import { engineDbClient } from "@db";
|
|
12
13
|
import { Campaign, ChainId, NETWORK_LABELS, isSupportedChain, } from "@sdk";
|
13
14
|
import { Elysia, t } from "elysia";
|
14
15
|
import moment from "moment";
|
15
|
-
import { campaignsDynamicData } from "../../libs/campaigns/campaignsDynamicData";
|
16
16
|
import { merklChainData } from "../../libs/merklChainData";
|
17
17
|
import { staticCampaignWithCache } from "../../libs/staticCampaigns";
|
18
18
|
import { InvalidParameter, UnsupportedNetwork } from "../../utils/error";
|
19
|
-
import { executeSimple } from "../../utils/execute";
|
20
19
|
import { log } from "../../utils/logger";
|
21
20
|
import { ALL_CAMPAIGNS_FOR_CHAIN_AFTER } from "../../utils/queries/allCampaigns";
|
22
21
|
const highCampaignsChains = [ChainId.ARBITRUM, ChainId.POLYGON, ChainId.BLAST, ChainId.BASE];
|
@@ -83,7 +82,9 @@ export const campaignCacheUpdate = async (rawChainId, queryCampaignTypes, highCa
|
|
83
82
|
// Fetch dynamic data for all these types
|
84
83
|
const promisesPerType = campaignTypes.map(async (campaignType) => {
|
85
84
|
const campaigns = staticData.filter(campaign => campaign.campaignType === campaignType);
|
86
|
-
await
|
85
|
+
await dynamicDataBuilderFactory(campaignType)
|
86
|
+
.build(chainId, campaigns)
|
87
|
+
.then(r => {
|
87
88
|
for (const d of r) {
|
88
89
|
if (!!d) {
|
89
90
|
// Main Parameter OVERRIDING
|
package/dist/src/eden/index.d.ts
CHANGED
@@ -7340,8 +7340,8 @@ declare const eden: {
|
|
7340
7340
|
query: {
|
7341
7341
|
types?: string | number | string[] | number[] | undefined;
|
7342
7342
|
chainIds?: string | string[] | undefined;
|
7343
|
-
live?: boolean | undefined;
|
7344
7343
|
creatorTag?: string | undefined;
|
7344
|
+
live?: boolean | undefined;
|
7345
7345
|
hideTestTokens?: string | undefined;
|
7346
7346
|
};
|
7347
7347
|
fetch?: RequestInit | undefined;
|
@@ -7419,16 +7419,8 @@ declare const eden: {
|
|
7419
7419
|
query: {};
|
7420
7420
|
fetch?: RequestInit | undefined;
|
7421
7421
|
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
7422
|
-
|
7423
|
-
|
7424
|
-
address: string;
|
7425
|
-
symbolCToken: string;
|
7426
|
-
decimalsCToken: number;
|
7427
|
-
underlying: string;
|
7428
|
-
symbolUnderlying: string;
|
7429
|
-
decimalsUnderlying: number;
|
7430
|
-
}[];
|
7431
|
-
};
|
7422
|
+
[x: string]: any;
|
7423
|
+
200: any;
|
7432
7424
|
}>>;
|
7433
7425
|
};
|
7434
7426
|
createCampaign: {
|
@@ -7854,11 +7846,8 @@ declare const eden: {
|
|
7854
7846
|
query: {};
|
7855
7847
|
fetch?: RequestInit | undefined;
|
7856
7848
|
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
7857
|
-
|
7858
|
-
|
7859
|
-
[poolId: string]: UniswapV4PoolType;
|
7860
|
-
} | undefined;
|
7861
|
-
};
|
7849
|
+
[x: string]: any;
|
7850
|
+
200: any;
|
7862
7851
|
}>>;
|
7863
7852
|
};
|
7864
7853
|
};
|
@@ -12423,8 +12412,8 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
12423
12412
|
query: {
|
12424
12413
|
types?: string | number | string[] | number[] | undefined;
|
12425
12414
|
chainIds?: string | string[] | undefined;
|
12426
|
-
live?: boolean | undefined;
|
12427
12415
|
creatorTag?: string | undefined;
|
12416
|
+
live?: boolean | undefined;
|
12428
12417
|
hideTestTokens?: string | undefined;
|
12429
12418
|
};
|
12430
12419
|
headers: unknown;
|
@@ -12527,16 +12516,8 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
12527
12516
|
query: {};
|
12528
12517
|
headers: unknown;
|
12529
12518
|
response: {
|
12530
|
-
|
12531
|
-
|
12532
|
-
address: string;
|
12533
|
-
symbolCToken: string;
|
12534
|
-
decimalsCToken: number;
|
12535
|
-
underlying: string;
|
12536
|
-
symbolUnderlying: string;
|
12537
|
-
decimalsUnderlying: number;
|
12538
|
-
}[];
|
12539
|
-
};
|
12519
|
+
[x: string]: any;
|
12520
|
+
200: any;
|
12540
12521
|
};
|
12541
12522
|
};
|
12542
12523
|
};
|
@@ -13090,11 +13071,8 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
13090
13071
|
query: {};
|
13091
13072
|
headers: unknown;
|
13092
13073
|
response: {
|
13093
|
-
|
13094
|
-
|
13095
|
-
[poolId: string]: UniswapV4PoolType;
|
13096
|
-
} | undefined;
|
13097
|
-
};
|
13074
|
+
[x: string]: any;
|
13075
|
+
200: any;
|
13098
13076
|
};
|
13099
13077
|
};
|
13100
13078
|
};
|
@@ -20447,8 +20425,8 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
20447
20425
|
query: {
|
20448
20426
|
types?: string | number | string[] | number[] | undefined;
|
20449
20427
|
chainIds?: string | string[] | undefined;
|
20450
|
-
live?: boolean | undefined;
|
20451
20428
|
creatorTag?: string | undefined;
|
20429
|
+
live?: boolean | undefined;
|
20452
20430
|
hideTestTokens?: string | undefined;
|
20453
20431
|
};
|
20454
20432
|
fetch?: RequestInit | undefined;
|
@@ -20526,16 +20504,8 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
20526
20504
|
query: {};
|
20527
20505
|
fetch?: RequestInit | undefined;
|
20528
20506
|
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
20529
|
-
|
20530
|
-
|
20531
|
-
address: string;
|
20532
|
-
symbolCToken: string;
|
20533
|
-
decimalsCToken: number;
|
20534
|
-
underlying: string;
|
20535
|
-
symbolUnderlying: string;
|
20536
|
-
decimalsUnderlying: number;
|
20537
|
-
}[];
|
20538
|
-
};
|
20507
|
+
[x: string]: any;
|
20508
|
+
200: any;
|
20539
20509
|
}>>;
|
20540
20510
|
};
|
20541
20511
|
createCampaign: {
|
@@ -20961,11 +20931,8 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
20961
20931
|
query: {};
|
20962
20932
|
fetch?: RequestInit | undefined;
|
20963
20933
|
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
20964
|
-
|
20965
|
-
|
20966
|
-
[poolId: string]: UniswapV4PoolType;
|
20967
|
-
} | undefined;
|
20968
|
-
};
|
20934
|
+
[x: string]: any;
|
20935
|
+
200: any;
|
20969
20936
|
}>>;
|
20970
20937
|
};
|
20971
20938
|
};
|
@@ -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
|
+
}
|