@gearbox-protocol/sdk 3.0.0-next.251 → 3.0.0-next.252
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/lib/gearboxRewards/api.d.ts +10 -3
- package/lib/gearboxRewards/api.js +33 -17
- package/package.json +1 -1
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { NetworkType, SupportedToken } from "@gearbox-protocol/sdk-gov";
|
|
2
2
|
import { Address, PublicClient, WalletClient } from "viem";
|
|
3
|
+
import { PoolData } from "../core/pool";
|
|
3
4
|
import { TokenData } from "../tokens/tokenData";
|
|
4
5
|
export interface GearboxExtraMerkleLmReward {
|
|
6
|
+
pool: Address;
|
|
5
7
|
poolToken: Address;
|
|
6
8
|
rewardToken: Address;
|
|
7
9
|
amount: bigint;
|
|
8
10
|
type: "extraMerkle";
|
|
9
11
|
}
|
|
10
12
|
export interface GearboxStakedV3LmReward {
|
|
13
|
+
pool: Address;
|
|
11
14
|
poolToken: Address;
|
|
12
15
|
rewardToken: Address;
|
|
13
16
|
amount: bigint;
|
|
14
17
|
type: "stakedV3";
|
|
15
18
|
}
|
|
16
19
|
export interface GearboxMerkleV2LmReward {
|
|
17
|
-
|
|
20
|
+
pool?: undefined;
|
|
21
|
+
poolToken?: undefined;
|
|
18
22
|
rewardToken: Address;
|
|
19
23
|
amount: bigint;
|
|
20
24
|
type: "merkleV2";
|
|
@@ -30,6 +34,7 @@ export interface MerkleDistributorInfo {
|
|
|
30
34
|
}>;
|
|
31
35
|
}
|
|
32
36
|
export interface FarmInfo {
|
|
37
|
+
pool: Address;
|
|
33
38
|
finished: bigint;
|
|
34
39
|
duration: bigint;
|
|
35
40
|
reward: bigint;
|
|
@@ -39,6 +44,7 @@ export interface FarmInfo {
|
|
|
39
44
|
type PoolsWithExtraRewardsList = Record<NetworkType, Array<SupportedToken>>;
|
|
40
45
|
type ReportHandler = (e: unknown, description?: string) => void;
|
|
41
46
|
export interface GetLmRewardsInfoProps {
|
|
47
|
+
pools: Record<Address, PoolData>;
|
|
42
48
|
currentTokenData: Record<SupportedToken, Address>;
|
|
43
49
|
tokensList: Record<Address, TokenData>;
|
|
44
50
|
provider: PublicClient;
|
|
@@ -50,6 +56,7 @@ export interface GetLmRewardsInfoProps {
|
|
|
50
56
|
export interface GetLmRewardsProps {
|
|
51
57
|
baseRewardPoolsInfo: Record<string, FarmInfo>;
|
|
52
58
|
currentTokenData: Record<SupportedToken, Address>;
|
|
59
|
+
tokensList: Record<Address, TokenData>;
|
|
53
60
|
account: Address;
|
|
54
61
|
provider: PublicClient;
|
|
55
62
|
airdropDistributorAddress: Address | undefined;
|
|
@@ -69,7 +76,7 @@ export interface ClaimLmRewardsV3Props {
|
|
|
69
76
|
signer: WalletClient;
|
|
70
77
|
}
|
|
71
78
|
export declare class GearboxRewardsApi {
|
|
72
|
-
static getLmRewardsInfo({ currentTokenData, provider, multicallAddress, tokensList, poolsWithExtraRewards, network, reportError, }: GetLmRewardsInfoProps): Promise<{
|
|
79
|
+
static getLmRewardsInfo({ pools, currentTokenData, provider, multicallAddress, tokensList, poolsWithExtraRewards, network, reportError, }: GetLmRewardsInfoProps): Promise<{
|
|
73
80
|
rewardPoolsInfo: Record<string, FarmInfo[]>;
|
|
74
81
|
baseRewardPoolsInfo: Record<string, FarmInfo>;
|
|
75
82
|
extraRewardPoolsInfo: Record<string, FarmInfo[]>;
|
|
@@ -78,7 +85,7 @@ export declare class GearboxRewardsApi {
|
|
|
78
85
|
static getLmRewardsV2({ provider, account, currentTokenData, network, airdropDistributorAddress, }: GetLmRewardsProps): Promise<{
|
|
79
86
|
rewards: GearboxLmReward[];
|
|
80
87
|
}>;
|
|
81
|
-
static getLmRewardsV3({ baseRewardPoolsInfo, currentTokenData, provider, account, network, reportError, }: GetLmRewardsProps): Promise<{
|
|
88
|
+
static getLmRewardsV3({ baseRewardPoolsInfo, currentTokenData, tokensList, provider, account, network, reportError, }: GetLmRewardsProps): Promise<{
|
|
82
89
|
rewards: (GearboxLmReward | GearboxLmReward[])[];
|
|
83
90
|
}>;
|
|
84
91
|
private static extractFulfilled;
|
|
@@ -19,28 +19,44 @@ const DEFAULT_POOLS_WITH_EXTRA_REWARDS = {
|
|
|
19
19
|
Base: [],
|
|
20
20
|
};
|
|
21
21
|
class GearboxRewardsApi {
|
|
22
|
-
static async getLmRewardsInfo({ currentTokenData, provider, multicallAddress, tokensList, poolsWithExtraRewards = DEFAULT_POOLS_WITH_EXTRA_REWARDS, network, reportError, }) {
|
|
23
|
-
const
|
|
24
|
-
|
|
22
|
+
static async getLmRewardsInfo({ pools, currentTokenData, provider, multicallAddress, tokensList, poolsWithExtraRewards = DEFAULT_POOLS_WITH_EXTRA_REWARDS, network, reportError, }) {
|
|
23
|
+
const poolByStakedToken = Object.values(pools).reduce((acc, p) => {
|
|
24
|
+
p.stakedDieselToken.forEach(t => {
|
|
25
|
+
acc[t] = p.address;
|
|
26
|
+
});
|
|
27
|
+
p.stakedDieselToken_old.forEach(t => {
|
|
28
|
+
acc[t] = p.address;
|
|
29
|
+
});
|
|
30
|
+
return acc;
|
|
31
|
+
}, {});
|
|
32
|
+
const poolTokens = sdk_gov_1.TypedObjectUtils.keys(poolByStakedToken);
|
|
33
|
+
const chainId = sdk_gov_1.CHAINS[network];
|
|
34
|
+
const poolTokensWithExtraReward = (poolsWithExtraRewards[network] || []).filter(symbol => {
|
|
35
|
+
const addr = currentTokenData[symbol];
|
|
36
|
+
if (!addr) {
|
|
37
|
+
console.error(`Pool staked token not found ${symbol}`);
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
});
|
|
42
|
+
const farmInfoCalls = poolTokens.map(address => ({
|
|
25
43
|
address,
|
|
26
44
|
abi: types_1.iFarmingPoolAbi,
|
|
27
45
|
functionName: "farmInfo",
|
|
28
46
|
args: [],
|
|
29
47
|
}));
|
|
30
|
-
const farmSupplyCalls = poolTokens.map(
|
|
48
|
+
const farmSupplyCalls = poolTokens.map(address => ({
|
|
31
49
|
address,
|
|
32
50
|
abi: types_1.iFarmingPoolAbi,
|
|
33
51
|
functionName: "totalSupply",
|
|
34
52
|
args: [],
|
|
35
53
|
}));
|
|
36
|
-
const rewardTokenCalls = poolTokens.map(
|
|
54
|
+
const rewardTokenCalls = poolTokens.map(address => ({
|
|
37
55
|
address,
|
|
38
56
|
abi: POOL_REWARDS_ABI,
|
|
39
57
|
functionName: "rewardsToken",
|
|
40
58
|
args: [],
|
|
41
59
|
}));
|
|
42
|
-
const tokenWithExtraRewards = poolsWithExtraRewards[network] || [];
|
|
43
|
-
const chainId = sdk_gov_1.CHAINS[network];
|
|
44
60
|
const [mc, ...extra] = await Promise.allSettled([
|
|
45
61
|
provider.multicall({
|
|
46
62
|
allowFailure: false,
|
|
@@ -57,12 +73,8 @@ class GearboxRewardsApi {
|
|
|
57
73
|
...rewardTokenCalls,
|
|
58
74
|
],
|
|
59
75
|
}),
|
|
60
|
-
...
|
|
76
|
+
...poolTokensWithExtraReward.map(symbol => {
|
|
61
77
|
const addr = currentTokenData[symbol];
|
|
62
|
-
if (!addr)
|
|
63
|
-
return (async () => {
|
|
64
|
-
(0, viem_1.getAddress)(addr);
|
|
65
|
-
})();
|
|
66
78
|
return axios_1.default.get(merklAPI_1.MerkleXYZApi.getRewardsCampaignsUrl({
|
|
67
79
|
params: {
|
|
68
80
|
chainId,
|
|
@@ -81,7 +93,7 @@ class GearboxRewardsApi {
|
|
|
81
93
|
const rewardTokenCallsEnd = farmSupplyCallsEnd + rewardTokenCalls.length;
|
|
82
94
|
const rewardTokens = restMCResponse.slice(farmSupplyCallsEnd, rewardTokenCallsEnd);
|
|
83
95
|
const extraRewards = extra.reduce((acc, r, index) => {
|
|
84
|
-
const stakedSymbol =
|
|
96
|
+
const stakedSymbol = poolTokensWithExtraReward[index];
|
|
85
97
|
const safeResp = this.extractFulfilled(r, reportError, `merkleCampaign: ${stakedSymbol}`);
|
|
86
98
|
const l = safeResp?.data.reduce((infos, d) => {
|
|
87
99
|
const started = (0, sdk_gov_1.toBigInt)(d.startTimestamp || 0);
|
|
@@ -92,6 +104,7 @@ class GearboxRewardsApi {
|
|
|
92
104
|
const reward = (0, formatter_1.toBN)(d.amountDecimal, rewardTokenData?.decimals || 18);
|
|
93
105
|
if (rewardTokenData && reward > 0) {
|
|
94
106
|
infos.push({
|
|
107
|
+
pool: poolByStakedToken[currentTokenData[stakedSymbol]],
|
|
95
108
|
duration: (0, sdk_gov_1.toBigInt)(d.endTimestamp - d.startTimestamp),
|
|
96
109
|
finished,
|
|
97
110
|
reward,
|
|
@@ -107,12 +120,13 @@ class GearboxRewardsApi {
|
|
|
107
120
|
}
|
|
108
121
|
return acc;
|
|
109
122
|
}, {});
|
|
110
|
-
const rewardPoolsInfo = poolTokens.reduce((acc,
|
|
123
|
+
const rewardPoolsInfo = poolTokens.reduce((acc, address, i) => {
|
|
111
124
|
const currentInfo = farmInfo[i];
|
|
112
125
|
const poolBaseRewardTokenLc = (rewardTokens[i] || "").toLowerCase();
|
|
113
126
|
const tokenData = tokensList[poolBaseRewardTokenLc];
|
|
114
127
|
if (tokenData) {
|
|
115
128
|
const baseReward = {
|
|
129
|
+
pool: poolByStakedToken[address],
|
|
116
130
|
duration: BigInt(currentInfo.duration),
|
|
117
131
|
finished: BigInt(currentInfo.finished),
|
|
118
132
|
reward: currentInfo.reward,
|
|
@@ -126,7 +140,7 @@ class GearboxRewardsApi {
|
|
|
126
140
|
}
|
|
127
141
|
return acc;
|
|
128
142
|
}, { base: {}, extra: {}, all: {} });
|
|
129
|
-
const rewardPoolsSupply = poolTokens.reduce((acc,
|
|
143
|
+
const rewardPoolsSupply = poolTokens.reduce((acc, address, i) => {
|
|
130
144
|
acc[address] = farmSupply[i] || 0n;
|
|
131
145
|
return acc;
|
|
132
146
|
}, {});
|
|
@@ -159,7 +173,7 @@ class GearboxRewardsApi {
|
|
|
159
173
|
];
|
|
160
174
|
return { rewards: rewards };
|
|
161
175
|
}
|
|
162
|
-
static async getLmRewardsV3({ baseRewardPoolsInfo, currentTokenData, provider, account, network, reportError, }) {
|
|
176
|
+
static async getLmRewardsV3({ baseRewardPoolsInfo, currentTokenData, tokensList, provider, account, network, reportError, }) {
|
|
163
177
|
const poolTokens = Object.keys(baseRewardPoolsInfo);
|
|
164
178
|
const [gearboxLmResponse, merkleXYZLMResponse] = await Promise.allSettled([
|
|
165
179
|
provider.multicall({
|
|
@@ -191,8 +205,9 @@ class GearboxRewardsApi {
|
|
|
191
205
|
const rewardToken = k.toLowerCase();
|
|
192
206
|
Object.entries(v.reasons).forEach(([key, reason]) => {
|
|
193
207
|
const poolToken = REWARD_KEYS_RECORD[key];
|
|
194
|
-
if (poolToken &&
|
|
208
|
+
if (poolToken && tokensList[rewardToken]) {
|
|
195
209
|
acc.push({
|
|
210
|
+
pool: baseRewardPoolsInfo[poolToken].pool,
|
|
196
211
|
poolToken,
|
|
197
212
|
rewardToken,
|
|
198
213
|
amount: (0, sdk_gov_1.toBigInt)(reason.unclaimed || 0n),
|
|
@@ -204,6 +219,7 @@ class GearboxRewardsApi {
|
|
|
204
219
|
}, []);
|
|
205
220
|
const gearboxLmRewards = poolTokens.map((address, i) => {
|
|
206
221
|
return {
|
|
222
|
+
pool: baseRewardPoolsInfo[address].pool,
|
|
207
223
|
poolToken: address,
|
|
208
224
|
rewardToken: currentTokenData[baseRewardPoolsInfo[address].symbol],
|
|
209
225
|
amount: gearboxLm[i] || 0n,
|