@merkl/api 0.13.14 → 0.14.0
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/eden/index.d.ts +25 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/jobs/etl/pendings.js +3 -1
- package/dist/src/jobs/etl/reward-breakdowns.js +3 -1
- package/dist/src/jobs/etl/rewards.js +4 -3
- package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicData.d.ts +2 -1
- package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicData.js +1 -1
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EulerBorrowProcessor.d.ts +8 -12
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EulerBorrowProcessor.js +28 -24
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EulerLendProcessor.d.ts +7 -11
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/EulerLendProcessor.js +20 -21
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/GenericProcessor.d.ts +6 -5
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/GenericProcessor.js +4 -4
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/MaverickBPProcessor.d.ts +1 -1
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/MaverickBPProcessor.js +1 -1
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/NoLinkVaultProcessor.d.ts +1 -1
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/NoLinkVaultProcessor.js +2 -2
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/RfxProcessor.d.ts +1 -1
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/RfxProcessor.js +1 -1
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2.d.ts +3 -2
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound2.js +2 -2
- package/dist/src/libs/campaigns/campaignsDynamicData.js +1 -2
- package/dist/src/modules/v4/bucket/bucket.model.d.ts +10 -0
- package/dist/src/modules/v4/bucket/bucket.model.js +85 -0
- package/dist/src/modules/v4/bucket/bucket.service.d.ts +8 -6
- package/dist/src/modules/v4/bucket/bucket.service.js +145 -83
- package/dist/src/modules/v4/campaign/campaign.repository.js +1 -2
- package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +5 -0
- package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +1 -0
- package/dist/src/modules/v4/opportunity/opportunity.model.js +1 -0
- package/dist/src/modules/v4/opportunity/opportunity.repository.js +2 -0
- package/dist/src/modules/v4/programPayload/programPayload.repository.d.ts +4 -0
- package/dist/src/modules/v4/programPayload/programPayload.repository.js +61 -1
- package/dist/src/modules/v4/router.d.ts +5 -0
- package/dist/src/utils/generateCardName.js +1 -1
- package/dist/tsconfig.package.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/src/libs/campaigns/campaignTypes/EulerDynamicData.d.ts +0 -3
- package/dist/src/libs/campaigns/campaignTypes/EulerDynamicData.js +0 -165
package/package.json
CHANGED
@@ -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
|
-
}
|