@merkl/api 0.10.163 → 0.10.165
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.d.ts +2 -1
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +4 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/processorMapping.js +2 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/stakedCurveProcessor.d.ts +54 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/stakedCurveProcessor.js +77 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1RefactoFinal.js +2 -0
- package/dist/src/modules/v4/reward/reward.model.d.ts +1 -0
- package/dist/src/modules/v4/reward/reward.repository.js +1 -0
- package/dist/src/modules/v4/reward/reward.service.js +4 -2
- package/dist/src/utils/decodeCalls.js +2 -0
- package/dist/src/utils/encodeCalls.js +2 -0
- package/dist/src/utils/generateCardName.js +2 -0
- package/dist/tsconfig.package.tsbuildinfo +1 -1
- package/package.json +1 -1
@@ -51,7 +51,8 @@ export declare enum tokenType {
|
|
51
51
|
woofi = "woofi",
|
52
52
|
pendle = "pendle",
|
53
53
|
maverickBoostedPosition = "maverickBoostedPosition",
|
54
|
-
zkSwapThreePool = "zkSwapThreePool"
|
54
|
+
zkSwapThreePool = "zkSwapThreePool",
|
55
|
+
maha = "maha"
|
55
56
|
}
|
56
57
|
export declare const tokenTypeToProtocol: {
|
57
58
|
[key in tokenType]: {
|
@@ -53,6 +53,7 @@ export var tokenType;
|
|
53
53
|
tokenType["pendle"] = "pendle";
|
54
54
|
tokenType["maverickBoostedPosition"] = "maverickBoostedPosition";
|
55
55
|
tokenType["zkSwapThreePool"] = "zkSwapThreePool";
|
56
|
+
tokenType["maha"] = "maha";
|
56
57
|
})(tokenType || (tokenType = {}));
|
57
58
|
export const tokenTypeToProtocol = {
|
58
59
|
[tokenType.aave_borrowing]: { protocol: "Aave" },
|
@@ -115,4 +116,7 @@ export const tokenTypeToProtocol = {
|
|
115
116
|
[tokenType.zkSwapThreePool]: {
|
116
117
|
protocol: "ZKSwap",
|
117
118
|
},
|
119
|
+
[tokenType.maha]: {
|
120
|
+
protocol: "Maha",
|
121
|
+
},
|
118
122
|
};
|
@@ -25,6 +25,7 @@ import { UniswapProcessor } from "./UniswapProcessor";
|
|
25
25
|
import { WoofiProcessor } from "./WoofiProcessor";
|
26
26
|
import { ZkSwapThreePoolProcessor } from "./ZkSwapThreePoolProcessor";
|
27
27
|
import { CurveProcessor } from "./curveProcessor";
|
28
|
+
import { StakedCurveProcessor } from "./stakedCurveProcessor";
|
28
29
|
export const processorMapping = {
|
29
30
|
[tokenType.uniswapv2]: UniswapProcessor,
|
30
31
|
[tokenType.balancerGauge]: BalancerGaugeProcessor,
|
@@ -78,4 +79,5 @@ export const processorMapping = {
|
|
78
79
|
[tokenType.woofi]: WoofiProcessor,
|
79
80
|
[tokenType.maverickBoostedPosition]: MaverickBPProcessor,
|
80
81
|
[tokenType.zkSwapThreePool]: ZkSwapThreePoolProcessor,
|
82
|
+
[tokenType.maha]: StakedCurveProcessor,
|
81
83
|
};
|
package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/stakedCurveProcessor.d.ts
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
import type { Pricer } from "../../../../../utils/pricer";
|
2
|
+
import { type Campaign, type CampaignParameters } from "@sdk";
|
3
|
+
import { tokenType } from "../helpers/tokenType";
|
4
|
+
import { GenericProcessor, type dataType, type mandatoryCallKeys } from "./GenericProcessor";
|
5
|
+
type callType = {
|
6
|
+
key: keyof dataRawStakedCurve;
|
7
|
+
call: string;
|
8
|
+
target: keyof callKeysStakedCurve;
|
9
|
+
metaData?: keyof callKeysStakedCurve;
|
10
|
+
optional?: boolean;
|
11
|
+
};
|
12
|
+
type callKeysStakedCurve = mandatoryCallKeys & {
|
13
|
+
lp_price: string;
|
14
|
+
token0: string;
|
15
|
+
token1: string;
|
16
|
+
token2: string;
|
17
|
+
symbolToken0: string;
|
18
|
+
symbolToken1: string;
|
19
|
+
symbolToken2: string;
|
20
|
+
underlying: string;
|
21
|
+
amount: string;
|
22
|
+
};
|
23
|
+
type dataRawStakedCurve = callKeysStakedCurve & {
|
24
|
+
poolTokens: {
|
25
|
+
[key: string]: string;
|
26
|
+
};
|
27
|
+
toAssets: string;
|
28
|
+
symbolUnderlyingToken: string;
|
29
|
+
};
|
30
|
+
type dataTypeStakedCurve = dataType & {
|
31
|
+
lp_price: number;
|
32
|
+
token0: string;
|
33
|
+
token1: string;
|
34
|
+
token2: string;
|
35
|
+
symbolToken0: string;
|
36
|
+
symbolToken1: string;
|
37
|
+
underlying: string;
|
38
|
+
symbolToken2: string;
|
39
|
+
symbolUnderlyingToken: string;
|
40
|
+
poolTokens: {
|
41
|
+
[key: string]: string;
|
42
|
+
};
|
43
|
+
};
|
44
|
+
export declare class StakedCurveProcessor extends GenericProcessor<callKeysStakedCurve, dataRawStakedCurve, dataTypeStakedCurve> {
|
45
|
+
rounds: {
|
46
|
+
round1: callType[];
|
47
|
+
round2: callType[];
|
48
|
+
round3: callType[];
|
49
|
+
round4: callType[];
|
50
|
+
};
|
51
|
+
processingRound3(typeInfo: dataRawStakedCurve): void;
|
52
|
+
processingRound5(_index: number, type: tokenType, typeInfo: dataRawStakedCurve, _calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<dataTypeStakedCurve>;
|
53
|
+
}
|
54
|
+
export {};
|
@@ -0,0 +1,77 @@
|
|
1
|
+
import { generateCardName } from "../../../../../utils/generateCardName";
|
2
|
+
import { BN2Number } from "@sdk";
|
3
|
+
import { BigNumber } from "ethers";
|
4
|
+
import { tokenType } from "../helpers/tokenType";
|
5
|
+
import { GenericProcessor } from "./GenericProcessor";
|
6
|
+
export class StakedCurveProcessor extends GenericProcessor {
|
7
|
+
rounds = {
|
8
|
+
round1: [{ key: "underlying", call: "underlying", target: "tokenAddress" }],
|
9
|
+
round2: [
|
10
|
+
{ key: "lp_price", call: "lp_price", target: "underlying" },
|
11
|
+
{ key: "symbolUnderlyingToken", call: "symbol", target: "underlying" },
|
12
|
+
{ key: "token0", call: "coin0", target: "underlying" },
|
13
|
+
{ key: "token1", call: "coin1", target: "underlying" },
|
14
|
+
{ key: "token2", call: "coin2", target: "underlying", optional: true },
|
15
|
+
],
|
16
|
+
round3: [
|
17
|
+
{ key: "symbolToken0", call: "symbol", target: "token0" },
|
18
|
+
{ key: "symbolToken1", call: "symbol", target: "token1" },
|
19
|
+
{ key: "symbolToken2", call: "symbol", target: "token2", optional: true },
|
20
|
+
],
|
21
|
+
round4: [
|
22
|
+
{ key: "toAssets", call: "convertToAssets", target: "tokenAddress", metaData: "amount" },
|
23
|
+
{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" },
|
24
|
+
],
|
25
|
+
};
|
26
|
+
// override computeRound1(): void {}
|
27
|
+
processingRound3(typeInfo) {
|
28
|
+
typeInfo.amount = BigNumber.from(10).pow(18).toString();
|
29
|
+
}
|
30
|
+
async processingRound5(_index, type, typeInfo, _calls, campaign, pricer) {
|
31
|
+
const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
|
32
|
+
const lp_price = BN2Number(typeInfo.lp_price, 18);
|
33
|
+
let priceTargetToken = lp_price;
|
34
|
+
if (typeInfo.token2) {
|
35
|
+
typeInfo.poolTokens = {
|
36
|
+
[typeInfo.token0]: typeInfo.symbolToken0,
|
37
|
+
[typeInfo.token1]: typeInfo.symbolToken1,
|
38
|
+
[typeInfo.token2]: typeInfo.symbolToken2,
|
39
|
+
};
|
40
|
+
}
|
41
|
+
else {
|
42
|
+
typeInfo.poolTokens = {
|
43
|
+
[typeInfo.token0]: typeInfo.symbolToken0,
|
44
|
+
[typeInfo.token1]: typeInfo.symbolToken1,
|
45
|
+
};
|
46
|
+
}
|
47
|
+
if (type === tokenType.curve_2) {
|
48
|
+
const prices = [];
|
49
|
+
for (const symbol of Object.values(typeInfo.poolTokens)) {
|
50
|
+
const price = (await pricer.get({ symbol: symbol })) ?? 0;
|
51
|
+
prices.push(price);
|
52
|
+
}
|
53
|
+
let minPrice = Math.min(...prices);
|
54
|
+
if (!minPrice) {
|
55
|
+
minPrice = 1;
|
56
|
+
}
|
57
|
+
priceTargetToken = priceTargetToken * minPrice;
|
58
|
+
}
|
59
|
+
const exchangeRate = BN2Number(typeInfo.toAssets, 18);
|
60
|
+
const tvl = priceTargetToken * totalSupply * exchangeRate;
|
61
|
+
return {
|
62
|
+
...typeInfo,
|
63
|
+
lp_price,
|
64
|
+
poolTokens: {
|
65
|
+
[typeInfo.token0]: typeInfo.symbolToken0,
|
66
|
+
[typeInfo.token1]: typeInfo.symbolToken1,
|
67
|
+
[typeInfo.token2]: typeInfo.symbolToken2,
|
68
|
+
},
|
69
|
+
totalSupply,
|
70
|
+
tvl,
|
71
|
+
whitelistedSupplyTargetToken,
|
72
|
+
blacklistedSupply,
|
73
|
+
priceTargetToken,
|
74
|
+
cardName: generateCardName(type, typeInfo, campaign),
|
75
|
+
};
|
76
|
+
}
|
77
|
+
}
|
@@ -88,6 +88,8 @@ function satisfiesNameConditions(name, type) {
|
|
88
88
|
return lowerCaseName.includes("maverick");
|
89
89
|
case tokenType.zkSwapThreePool:
|
90
90
|
return lowerCaseName.includes("zf");
|
91
|
+
case tokenType.maha:
|
92
|
+
return lowerCaseName.includes("staked") && lowerCaseName.includes("maha");
|
91
93
|
default:
|
92
94
|
return false;
|
93
95
|
}
|
@@ -175,6 +175,7 @@ export type UserRewardV3Model = typeof UserRewardV3Dto.static;
|
|
175
175
|
export type RewardV3Model = typeof RewardV3Dto.static;
|
176
176
|
export type BreakdownForCampaignsRaw = {
|
177
177
|
amount: string;
|
178
|
+
claimed: string;
|
178
179
|
recipient: string;
|
179
180
|
campaignId: string;
|
180
181
|
reason: string;
|
@@ -265,10 +265,12 @@ export class RewardService {
|
|
265
265
|
return acc;
|
266
266
|
}, {});
|
267
267
|
const data = await RewardRepository.getUnclaimed(x);
|
268
|
-
return data.reduce((acc, { amount, campaignId }) => {
|
268
|
+
return data.reduce((acc, { amount, campaignId, claimed }) => {
|
269
269
|
if (!acc[campaignToCampaignIds[campaignId]])
|
270
270
|
acc[campaignToCampaignIds[campaignId]] = "0";
|
271
|
-
acc[campaignToCampaignIds[campaignId]] = (BigInt(acc[campaignToCampaignIds[campaignId]]) +
|
271
|
+
acc[campaignToCampaignIds[campaignId]] = (BigInt(acc[campaignToCampaignIds[campaignId]]) +
|
272
|
+
BigInt(amount) -
|
273
|
+
BigInt(claimed)).toString();
|
272
274
|
return acc;
|
273
275
|
}, {});
|
274
276
|
}
|
@@ -79,6 +79,7 @@ export function decodeCall(calls, index, key, type) {
|
|
79
79
|
return LayerBankInterface.decodeFunctionResult("underlying", returnData)[0];
|
80
80
|
case tokenType.euler_borrow:
|
81
81
|
case tokenType.euler_lend:
|
82
|
+
case tokenType.maha:
|
82
83
|
return EulerInterface.decodeFunctionResult("asset", returnData)[0];
|
83
84
|
default:
|
84
85
|
throw new Error(`Need tokenType for this key ${key}, or type ${type} not matched`);
|
@@ -111,6 +112,7 @@ export function decodeCall(calls, index, key, type) {
|
|
111
112
|
case tokenType.curve:
|
112
113
|
return CurveInterface.decodeFunctionResult("lp_price", returnData)[0];
|
113
114
|
case tokenType.curve_2:
|
115
|
+
case tokenType.maha:
|
114
116
|
return CurveInterface.decodeFunctionResult("get_virtual_price", returnData)[0];
|
115
117
|
default:
|
116
118
|
throw new Error(`Need tokenType for this key ${key}`);
|
@@ -12,6 +12,7 @@ export function createCall(target, key, type, metaData) {
|
|
12
12
|
case tokenType.curve:
|
13
13
|
return { allowFailure: true, callData: CurveInterface.encodeFunctionData("lp_price"), target };
|
14
14
|
case tokenType.curve_2:
|
15
|
+
case tokenType.maha:
|
15
16
|
return { allowFailure: true, callData: CurveInterface.encodeFunctionData("get_virtual_price"), target };
|
16
17
|
default:
|
17
18
|
throw new Error(`Need tokenType for this key ${key}`);
|
@@ -68,6 +69,7 @@ export function createCall(target, key, type, metaData) {
|
|
68
69
|
case tokenType.fluid:
|
69
70
|
return { allowFailure: true, callData: FluidInterface.encodeFunctionData("asset"), target };
|
70
71
|
case tokenType.euler_borrow:
|
72
|
+
case tokenType.maha:
|
71
73
|
case tokenType.euler_lend:
|
72
74
|
return {
|
73
75
|
allowFailure: true,
|
@@ -87,6 +87,8 @@ export function generateCardName(type, typeInfo, campaign, symbols = [""]) {
|
|
87
87
|
return `Hold (or stake) Maverick Boosted Position ${campaign.campaignParameters.symbolTargetToken} on ${typeInfo.protocol}`;
|
88
88
|
case tokenType.zkSwapThreePool:
|
89
89
|
return `Hold (or stake) ${campaign.campaignParameters.symbolTargetToken} ${typeInfo.symbolToken0}-${typeInfo.symbolToken1}-${typeInfo.symbolToken2} on ${typeInfo.protocol}`;
|
90
|
+
case tokenType.maha:
|
91
|
+
return `Stake ${typeInfo.symbolToken0}/${typeInfo.symbolToken1} LP on ${typeInfo.protocol}`;
|
90
92
|
default:
|
91
93
|
return `Hold ${typeInfo.name} (${campaign.campaignParameters.symbolTargetToken})`;
|
92
94
|
}
|