@merkl/api 0.13.15 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/src/backgroundJobs/index.js +2 -1
  2. package/dist/src/eden/index.d.ts +33 -3
  3. package/dist/src/entities/opportunity.js +4 -1
  4. package/dist/src/index.d.ts +13 -1
  5. package/dist/src/jobs/etl/pendings.js +3 -1
  6. package/dist/src/jobs/etl/reward-breakdowns.js +3 -1
  7. package/dist/src/jobs/etl/rewards.js +3 -1
  8. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicData.d.ts +2 -1
  9. package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicData.js +1 -1
  10. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.d.ts +2 -1
  11. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +83 -112
  12. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EulerBorrowProcessor.d.ts +8 -12
  13. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EulerBorrowProcessor.js +28 -24
  14. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EulerLendProcessor.d.ts +7 -11
  15. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EulerLendProcessor.js +20 -21
  16. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/GenericProcessor.d.ts +6 -5
  17. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/GenericProcessor.js +4 -4
  18. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/MaverickBPProcessor.d.ts +1 -1
  19. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/MaverickBPProcessor.js +1 -1
  20. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/NoLinkVaultProcessor.d.ts +1 -1
  21. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/NoLinkVaultProcessor.js +2 -2
  22. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/RfxProcessor.d.ts +1 -1
  23. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/RfxProcessor.js +1 -1
  24. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2.d.ts +3 -2
  25. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2.js +2 -2
  26. package/dist/src/libs/campaigns/campaignsDynamicData.js +1 -2
  27. package/dist/src/libs/campaigns/utils/getEulerV2Vaults.d.ts +2 -16
  28. package/dist/src/libs/campaigns/utils/getEulerV2Vaults.js +115 -57
  29. package/dist/src/modules/v4/bucket/bucket.model.d.ts +10 -0
  30. package/dist/src/modules/v4/bucket/bucket.model.js +85 -0
  31. package/dist/src/modules/v4/bucket/bucket.service.d.ts +8 -6
  32. package/dist/src/modules/v4/bucket/bucket.service.js +145 -83
  33. package/dist/src/modules/v4/campaign/campaign.repository.js +1 -2
  34. package/dist/src/modules/v4/opportunity/subservices/getErc20Metadata.service.js +1 -1
  35. package/dist/src/modules/v4/programPayload/programPayload.repository.d.ts +16 -2
  36. package/dist/src/modules/v4/programPayload/programPayload.repository.js +113 -2
  37. package/dist/src/routes/v3/euler.d.ts +13 -1
  38. package/dist/src/routes/v3/euler.js +10 -2
  39. package/dist/src/routes/v3/router.d.ts +13 -1
  40. package/dist/tsconfig.package.tsbuildinfo +1 -1
  41. package/package.json +1 -1
  42. package/dist/src/libs/campaigns/campaignTypes/EulerDynamicData.d.ts +0 -3
  43. package/dist/src/libs/campaigns/campaignTypes/EulerDynamicData.js +0 -165
package/package.json CHANGED
@@ -101,5 +101,5 @@
101
101
  "access": "public",
102
102
  "registry": "https://registry.npmjs.org/"
103
103
  },
104
- "version": "v0.13.15"
104
+ "version": "v0.14.1"
105
105
  }
@@ -1,3 +0,0 @@
1
- import { type Campaign, type CampaignDynamicData, type CampaignParameters, type MerklChainId } from "@sdk";
2
- import type { UncachedResult } from "../../../utils/execute";
3
- export declare function EulerDynamicData(chainId: MerklChainId, campaigns: CampaignParameters<Campaign.EULER>[]): Promise<UncachedResult<Partial<CampaignDynamicData<Campaign.EULER>[]>>>;
@@ -1,165 +0,0 @@
1
- import { BN2Number, BalancerPoolInterface, ERC20Interface, EnzymeInterface, EulerSubCampaignType, FactoryInterface, MetamorphoInterface, YEAR, } from "@sdk";
2
- import { batchMulticallCallWithRetry } from "../../../utils/generic";
3
- import { Pricer } from "../../../utils/pricer";
4
- import { fetchEulerVaultName } from "./ERC20SubTypes/helpers/eulerVaultNames";
5
- import { tokenType } from "./ERC20SubTypes/helpers/tokenType";
6
- import { getTokenPricesInfo } from "./ERC20SubTypes/subtypesPrices";
7
- import { getTokenTypeRound1 } from "./ERC20SubTypes/subtypesRound1";
8
- import { getTokenTypeRound2 } from "./ERC20SubTypes/subtypesRound2";
9
- import { getTokenTypeRound3 } from "./ERC20SubTypes/subtypesRound3";
10
- import { getTokenTypeRound4 } from "./ERC20SubTypes/subtypesRound4";
11
- export async function EulerDynamicData(chainId, campaigns) {
12
- const pricer = await Pricer.load();
13
- // Round 1: Get the high level type for each token (will need to be refined lated with more calls)
14
- const callsRounds1 = [];
15
- for (const campaign of campaigns) {
16
- callsRounds1.push({
17
- allowFailure: true,
18
- callData: FactoryInterface.encodeFunctionData("factory"),
19
- target: campaign.campaignParameters.targetToken,
20
- });
21
- callsRounds1.push({
22
- allowFailure: true,
23
- callData: MetamorphoInterface.encodeFunctionData("MORPHO"),
24
- target: campaign.campaignParameters.targetToken,
25
- });
26
- callsRounds1.push({
27
- allowFailure: true,
28
- callData: ERC20Interface.encodeFunctionData("name"),
29
- target: campaign.campaignParameters.targetToken,
30
- });
31
- callsRounds1.push({
32
- allowFailure: true,
33
- callData: BalancerPoolInterface.encodeFunctionData("getPoolId"),
34
- target: campaign.campaignParameters.targetToken,
35
- });
36
- callsRounds1.push({
37
- allowFailure: true,
38
- callData: EnzymeInterface.encodeFunctionData("getCreator"),
39
- target: campaign.campaignParameters.targetToken,
40
- });
41
- }
42
- const resultRound1 = await batchMulticallCallWithRetry(chainId, {
43
- calls: callsRounds1,
44
- });
45
- const tokenTypesByCampaign = {};
46
- // Round 2: Decode result from round 1 and get some additional info for the types before the final calls
47
- const callsRounds2 = [];
48
- let i = 0;
49
- for (const campaign of campaigns) {
50
- let typeStruct = {
51
- type: tokenType.unknown,
52
- calls: [],
53
- typeInfo: {},
54
- };
55
- typeStruct = getTokenTypeRound1(resultRound1, campaign.campaignParameters.targetToken, i, campaign);
56
- i += 5;
57
- tokenTypesByCampaign[campaign.campaignId] = typeStruct;
58
- callsRounds2.push(...typeStruct.calls);
59
- }
60
- const resultRound2 = await batchMulticallCallWithRetry(chainId, {
61
- calls: callsRounds2,
62
- });
63
- // Round 3: Decode result from round 2 and get some additional info for the types before the final calls
64
- const callsRounds3 = [];
65
- let j = 0;
66
- for (const campaign of campaigns) {
67
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
68
- const callsForCampaign = tokenTypesByCampaign[campaign.campaignId].calls.length;
69
- tokenTypesByCampaign[campaign.campaignId] = getTokenTypeRound2(j, tokenTypesByCampaign[campaign.campaignId].type, tokenTypesByCampaign[campaign.campaignId].typeInfo, resultRound2);
70
- j += callsForCampaign;
71
- callsRounds3.push(...tokenTypesByCampaign[campaign.campaignId].calls);
72
- }
73
- const resultRound3 = await batchMulticallCallWithRetry(chainId, {
74
- calls: callsRounds3,
75
- });
76
- // Final round before execute
77
- let callsFinal = [];
78
- j = 0;
79
- for (const campaign of campaigns) {
80
- const callsForCampaign = tokenTypesByCampaign[campaign.campaignId].calls.length;
81
- tokenTypesByCampaign[campaign.campaignId] = getTokenTypeRound3(j, tokenTypesByCampaign[campaign.campaignId].type, tokenTypesByCampaign[campaign.campaignId].typeInfo, resultRound3);
82
- j += callsForCampaign;
83
- callsFinal = callsFinal.concat(tokenTypesByCampaign[campaign.campaignId].calls);
84
- }
85
- // Round 4: Get the final data
86
- const resultsFinal = await batchMulticallCallWithRetry(chainId, {
87
- calls: callsFinal,
88
- });
89
- j = 0;
90
- let calls = [];
91
- for (const campaign of campaigns) {
92
- const callsForCampaign = tokenTypesByCampaign[campaign.campaignId].calls.length;
93
- tokenTypesByCampaign[campaign.campaignId] = getTokenTypeRound4(j, tokenTypesByCampaign[campaign.campaignId].type, tokenTypesByCampaign[campaign.campaignId].typeInfo, resultsFinal, campaign);
94
- j += callsForCampaign;
95
- calls = calls.concat(tokenTypesByCampaign[campaign.campaignId].calls);
96
- }
97
- return {
98
- cached: false,
99
- call: {
100
- callData: calls,
101
- handler: () => { },
102
- reducer: async (result) => {
103
- let i = 0;
104
- const dynamicData = [];
105
- for (const campaign of campaigns) {
106
- const priceRewardToken = (await pricer.get({
107
- address: campaign.rewardToken,
108
- chainId,
109
- symbol: campaign.campaignParameters.symbolRewardToken,
110
- })) ?? 0;
111
- // Get the data from the final round and process it to get the price of the target token and some extra info
112
- const callsForCampaign = tokenTypesByCampaign[campaign.campaignId].calls.length;
113
- tokenTypesByCampaign[campaign.campaignId] = await getTokenPricesInfo(i, tokenTypesByCampaign[campaign.campaignId].type, tokenTypesByCampaign[campaign.campaignId].typeInfo, result, campaign, pricer);
114
- i += callsForCampaign;
115
- const totalSupplyTargetToken = tokenTypesByCampaign[campaign.campaignId].typeInfo.totalSupply;
116
- let whitelistedSupplyTargetToken = totalSupplyTargetToken - tokenTypesByCampaign[campaign.campaignId].typeInfo.blacklistedSupply;
117
- const priceTargetToken = tokenTypesByCampaign[campaign.campaignId].typeInfo.priceTargetToken;
118
- if (whitelistedSupplyTargetToken === 0) {
119
- whitelistedSupplyTargetToken = 0.00001;
120
- }
121
- const lastEligibilityRatio = 1;
122
- // if (!!campaign.campaignParameters.hooks?.length) {
123
- // lastEligibilityRatio = await getLastEligibilityRatio(campaign, chainId, currentRoot!, []);
124
- // }
125
- // Card name part, There are many things not needed above I think
126
- let cardName = "";
127
- if (campaign.campaignSubType === EulerSubCampaignType.LEND) {
128
- cardName = `Supply ${campaign.campaignParameters.symbolTargetToken} on Euler V2`;
129
- const vaultName = await fetchEulerVaultName(campaign.campaignParameters.targetToken, campaign.computeChainId);
130
- if (!!vaultName) {
131
- cardName = `EULER Supply ${campaign.campaignParameters.symbolAsset} on ${vaultName} vault`;
132
- }
133
- }
134
- else {
135
- cardName = `EULER Borrow ${campaign.campaignParameters.symbolTargetToken} on Euler V2`;
136
- const vaultName = await fetchEulerVaultName(campaign.campaignParameters.targetToken, campaign.computeChainId);
137
- if (!!vaultName) {
138
- cardName = `Borrow ${campaign.campaignParameters.symbolAsset} from ${vaultName} vault`;
139
- }
140
- if (campaign.campaignSubType === EulerSubCampaignType.BORROW_FROM_COLLATERAL) {
141
- cardName = `${cardName} using ${campaign.campaignParameters.symbolCollateral}`;
142
- }
143
- }
144
- dynamicData.push({
145
- ...campaign,
146
- apr: (lastEligibilityRatio *
147
- (priceRewardToken *
148
- BN2Number(campaign.amount, campaign.campaignParameters.decimalsRewardToken) *
149
- YEAR *
150
- 100)) /
151
- campaign.campaignParameters.duration /
152
- (whitelistedSupplyTargetToken * priceTargetToken),
153
- totalSupplyTargetToken: whitelistedSupplyTargetToken,
154
- tvl: totalSupplyTargetToken * priceTargetToken,
155
- type: tokenTypesByCampaign[campaign.campaignId].type,
156
- typeInfo: { ...tokenTypesByCampaign[campaign.campaignId].typeInfo, cardName: cardName },
157
- priceRewardToken: priceRewardToken,
158
- lastEligibilityRatio,
159
- });
160
- }
161
- return dynamicData;
162
- },
163
- },
164
- };
165
- }