@gearbox-protocol/sdk 13.3.2 → 13.3.4
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/cjs/rewards/rewards/api.js +4 -124
- package/dist/cjs/rewards/rewards/extra-apy.js +5 -7
- package/dist/cjs/rewards/rewards/index.js +1 -5
- package/dist/cjs/sdk/GearboxSDK.js +135 -20
- package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +40 -141
- package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +5 -5
- package/dist/cjs/sdk/base/BaseContract.js +26 -6
- package/dist/cjs/sdk/base/ChainContractsRegister.js +39 -2
- package/dist/cjs/sdk/base/Construct.js +15 -3
- package/dist/cjs/sdk/base/TokensMeta.js +23 -0
- package/dist/cjs/sdk/constants/address-provider.js +0 -22
- package/dist/cjs/sdk/core/AbstractAddressProviderContract.js +15 -0
- package/dist/cjs/sdk/market/MarketRegister.js +74 -3
- package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +31 -50
- package/dist/cjs/sdk/market/pricefeeds/PriceFeedRef.js +16 -0
- package/dist/cjs/sdk/market/pricefeeds/PriceFeedsRegister.js +55 -12
- package/dist/cjs/sdk/options.js +30 -24
- package/dist/cjs/sdk/plugins/BasePlugin.js +24 -0
- package/dist/cjs/sdk/pools/AbstractPoolService.js +6 -0
- package/dist/cjs/sdk/router/AbstractRouterContract.js +4 -1
- package/dist/cjs/sdk/router/RouterV310Contract.js +20 -15
- package/dist/cjs/sdk/utils/AddressMap.js +53 -17
- package/dist/cjs/sdk/utils/AddressSet.js +9 -0
- package/dist/cjs/sdk/utils/viem/sendRawTx.js +16 -0
- package/dist/esm/rewards/rewards/api.js +4 -124
- package/dist/esm/rewards/rewards/extra-apy.js +4 -6
- package/dist/esm/rewards/rewards/index.js +0 -2
- package/dist/esm/sdk/GearboxSDK.js +135 -20
- package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +40 -141
- package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +5 -5
- package/dist/esm/sdk/base/BaseContract.js +26 -6
- package/dist/esm/sdk/base/ChainContractsRegister.js +39 -2
- package/dist/esm/sdk/base/Construct.js +15 -3
- package/dist/esm/sdk/base/TokensMeta.js +23 -0
- package/dist/esm/sdk/constants/address-provider.js +0 -21
- package/dist/esm/sdk/core/AbstractAddressProviderContract.js +15 -0
- package/dist/esm/sdk/market/MarketRegister.js +74 -3
- package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +31 -50
- package/dist/esm/sdk/market/pricefeeds/PriceFeedRef.js +16 -0
- package/dist/esm/sdk/market/pricefeeds/PriceFeedsRegister.js +55 -12
- package/dist/esm/sdk/options.js +30 -24
- package/dist/esm/sdk/plugins/BasePlugin.js +24 -0
- package/dist/esm/sdk/pools/AbstractPoolService.js +6 -0
- package/dist/esm/sdk/router/AbstractRouterContract.js +4 -1
- package/dist/esm/sdk/router/RouterV310Contract.js +20 -15
- package/dist/esm/sdk/utils/AddressMap.js +53 -17
- package/dist/esm/sdk/utils/AddressSet.js +9 -0
- package/dist/esm/sdk/utils/viem/sendRawTx.js +19 -1
- package/dist/types/rewards/rewards/api.d.ts +5 -28
- package/dist/types/rewards/rewards/extra-apy.d.ts +1 -1
- package/dist/types/rewards/rewards/index.d.ts +0 -2
- package/dist/types/sdk/GearboxSDK.d.ts +236 -34
- package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +55 -141
- package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +14 -5
- package/dist/types/sdk/accounts/types.d.ts +219 -17
- package/dist/types/sdk/base/BaseContract.d.ts +67 -6
- package/dist/types/sdk/base/ChainContractsRegister.d.ts +51 -2
- package/dist/types/sdk/base/Construct.d.ts +31 -0
- package/dist/types/sdk/base/PlaceholderContract.d.ts +3 -0
- package/dist/types/sdk/base/SDKConstruct.d.ts +10 -0
- package/dist/types/sdk/base/TokensMeta.d.ts +59 -2
- package/dist/types/sdk/base/types.d.ts +185 -25
- package/dist/types/sdk/chain/chains.d.ts +78 -18
- package/dist/types/sdk/chain/detectNetwork.d.ts +7 -0
- package/dist/types/sdk/constants/address-provider.d.ts +4 -3
- package/dist/types/sdk/core/AbstractAddressProviderContract.d.ts +23 -0
- package/dist/types/sdk/core/types.d.ts +46 -0
- package/dist/types/sdk/market/MarketRegister.d.ts +81 -0
- package/dist/types/sdk/market/adapters/PlaceholderAdapterContracts.d.ts +3 -0
- package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +40 -50
- package/dist/types/sdk/market/oracle/types.d.ts +76 -57
- package/dist/types/sdk/market/pricefeeds/AbstractLPPriceFeed.d.ts +3 -0
- package/dist/types/sdk/market/pricefeeds/AbstractPriceFeed.d.ts +3 -0
- package/dist/types/sdk/market/pricefeeds/PriceFeedRef.d.ts +22 -2
- package/dist/types/sdk/market/pricefeeds/PriceFeedsRegister.d.ts +77 -13
- package/dist/types/sdk/market/pricefeeds/types.d.ts +70 -10
- package/dist/types/sdk/options.d.ts +13 -4
- package/dist/types/sdk/plugins/BasePlugin.d.ts +39 -0
- package/dist/types/sdk/plugins/types.d.ts +73 -43
- package/dist/types/sdk/pools/AbstractPoolService.d.ts +12 -0
- package/dist/types/sdk/pools/types.d.ts +75 -6
- package/dist/types/sdk/router/AbstractRouterContract.d.ts +21 -2
- package/dist/types/sdk/router/RouterV310Contract.d.ts +27 -15
- package/dist/types/sdk/router/types.d.ts +51 -69
- package/dist/types/sdk/types/state.d.ts +32 -3
- package/dist/types/sdk/utils/AddressMap.d.ts +61 -17
- package/dist/types/sdk/utils/AddressSet.d.ts +15 -0
- package/dist/types/sdk/utils/viem/sendRawTx.d.ts +5 -1
- package/package.json +4 -2
- package/dist/cjs/rewards/rewards/apy.js +0 -177
- package/dist/esm/rewards/rewards/apy.js +0 -160
- package/dist/types/rewards/rewards/apy.d.ts +0 -44
|
@@ -33,6 +33,9 @@ class AbstractPoolService extends import_base.SDKConstruct {
|
|
|
33
33
|
this.#version = version;
|
|
34
34
|
this.logger?.debug(`Created PoolService with version: ${this.#version}`);
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* {@inheritDoc IPoolsService.addLiquidity}
|
|
38
|
+
**/
|
|
36
39
|
addLiquidity({
|
|
37
40
|
collateral,
|
|
38
41
|
pool,
|
|
@@ -89,6 +92,9 @@ class AbstractPoolService extends import_base.SDKConstruct {
|
|
|
89
92
|
];
|
|
90
93
|
}
|
|
91
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* {@inheritDoc IPoolsService.removeLiquidity}
|
|
97
|
+
**/
|
|
92
98
|
removeLiquidity({
|
|
93
99
|
pool,
|
|
94
100
|
amount,
|
|
@@ -26,6 +26,9 @@ var import_math = require("../constants/math.js");
|
|
|
26
26
|
var import_utils = require("../utils/index.js");
|
|
27
27
|
var import_helpers = require("./helpers.js");
|
|
28
28
|
class AbstractRouterContract extends import_base.BaseContract {
|
|
29
|
+
/**
|
|
30
|
+
* Reference to the parent SDK instance.
|
|
31
|
+
**/
|
|
29
32
|
sdk;
|
|
30
33
|
constructor(sdk, args) {
|
|
31
34
|
super(sdk, args);
|
|
@@ -88,7 +91,7 @@ class AbstractRouterContract extends import_base.BaseContract {
|
|
|
88
91
|
};
|
|
89
92
|
}
|
|
90
93
|
/**
|
|
91
|
-
* Tries to sell just
|
|
94
|
+
* Tries to sell just enough of the most valuable token to cover debt.
|
|
92
95
|
* @param ca
|
|
93
96
|
* @param keepAssets
|
|
94
97
|
* @returns
|
|
@@ -41,8 +41,8 @@ class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterCon
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
45
|
-
|
|
44
|
+
* {@inheritDoc IRouterContract.findOneTokenPath}
|
|
45
|
+
**/
|
|
46
46
|
async findOneTokenPath(props) {
|
|
47
47
|
const {
|
|
48
48
|
creditAccount,
|
|
@@ -83,8 +83,8 @@ class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterCon
|
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
|
-
*
|
|
87
|
-
|
|
86
|
+
* {@inheritDoc IRouterContract.findOpenStrategyPath}
|
|
87
|
+
**/
|
|
88
88
|
async findOpenStrategyPath(props) {
|
|
89
89
|
const {
|
|
90
90
|
creditManager: cm,
|
|
@@ -141,8 +141,8 @@ class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterCon
|
|
|
141
141
|
};
|
|
142
142
|
}
|
|
143
143
|
/**
|
|
144
|
-
*
|
|
145
|
-
|
|
144
|
+
* {@inheritDoc IRouterContract.findClaimAllRewards}
|
|
145
|
+
**/
|
|
146
146
|
async findClaimAllRewards(props) {
|
|
147
147
|
const record = props.tokensToClaim.reduce(
|
|
148
148
|
(acc, a) => {
|
|
@@ -167,8 +167,8 @@ class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterCon
|
|
|
167
167
|
};
|
|
168
168
|
}
|
|
169
169
|
/**
|
|
170
|
-
*
|
|
171
|
-
|
|
170
|
+
* {@inheritDoc IRouterContract.findBestClosePath}
|
|
171
|
+
**/
|
|
172
172
|
async findBestClosePath(props) {
|
|
173
173
|
const {
|
|
174
174
|
creditAccount: ca,
|
|
@@ -233,17 +233,22 @@ class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterCon
|
|
|
233
233
|
};
|
|
234
234
|
}
|
|
235
235
|
/**
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
* @param
|
|
239
|
-
|
|
236
|
+
* Override the number of route splits used when swapping a specific token.
|
|
237
|
+
*
|
|
238
|
+
* @param token - Token address to configure.
|
|
239
|
+
* @param numSplits - Number of parallel route splits.
|
|
240
|
+
* @internal
|
|
241
|
+
**/
|
|
240
242
|
setNumSplits(token, numSplits) {
|
|
241
243
|
this.#numSplits.upsert(token, numSplits);
|
|
242
244
|
}
|
|
243
245
|
/**
|
|
244
|
-
*
|
|
245
|
-
*
|
|
246
|
-
|
|
246
|
+
* Set the default number of route splits applied to the highest-value
|
|
247
|
+
* token in each swap.
|
|
248
|
+
*
|
|
249
|
+
* @param numSplits - Default number of parallel route splits.
|
|
250
|
+
* @internal
|
|
251
|
+
**/
|
|
247
252
|
setDefaultNumSplits(numSplits) {
|
|
248
253
|
this.#defaultNumSplits = numSplits;
|
|
249
254
|
}
|
|
@@ -26,6 +26,10 @@ class AddressMap {
|
|
|
26
26
|
#map;
|
|
27
27
|
#frozen = false;
|
|
28
28
|
#name;
|
|
29
|
+
/**
|
|
30
|
+
* @param entries - Optional initial key-value pairs. Address strings are checksummed automatically.
|
|
31
|
+
* @param name - Optional label used in error messages when a lookup fails.
|
|
32
|
+
*/
|
|
29
33
|
constructor(entries, name) {
|
|
30
34
|
this.#map = /* @__PURE__ */ new Map();
|
|
31
35
|
if (entries) {
|
|
@@ -37,9 +41,10 @@ class AddressMap {
|
|
|
37
41
|
this.#name = name;
|
|
38
42
|
}
|
|
39
43
|
/**
|
|
40
|
-
* Adds or updates value
|
|
41
|
-
* @param address
|
|
42
|
-
* @param value
|
|
44
|
+
* Adds or updates a value. Passing `undefined` removes the entry.
|
|
45
|
+
* @param address - EVM address (checksummed automatically).
|
|
46
|
+
* @param value - Value to store, or `undefined` to delete the entry.
|
|
47
|
+
* @throws If the map has been {@link freeze | frozen}.
|
|
43
48
|
*/
|
|
44
49
|
upsert(address, value) {
|
|
45
50
|
if (this.#frozen) {
|
|
@@ -53,9 +58,10 @@ class AddressMap {
|
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
60
|
/**
|
|
56
|
-
*
|
|
57
|
-
* @param address
|
|
58
|
-
* @param value
|
|
61
|
+
* Inserts a value, throwing if the address is already present.
|
|
62
|
+
* @param address - EVM address (checksummed automatically).
|
|
63
|
+
* @param value - Value to store.
|
|
64
|
+
* @throws If the map has been {@link freeze | frozen} or if `address` already exists.
|
|
59
65
|
*/
|
|
60
66
|
insert(address, value) {
|
|
61
67
|
if (this.#frozen) {
|
|
@@ -70,27 +76,26 @@ class AddressMap {
|
|
|
70
76
|
this.#map.set(key, value);
|
|
71
77
|
}
|
|
72
78
|
/**
|
|
73
|
-
* Checks
|
|
74
|
-
* @param address
|
|
75
|
-
* @returns
|
|
79
|
+
* Checks whether an address is present in the map.
|
|
80
|
+
* @param address - EVM address (case-insensitive).
|
|
76
81
|
*/
|
|
77
82
|
has(address) {
|
|
78
83
|
const key = (0, import_viem.getAddress)(address);
|
|
79
84
|
return this.#map.has(key);
|
|
80
85
|
}
|
|
81
86
|
/**
|
|
82
|
-
*
|
|
83
|
-
* @param address
|
|
84
|
-
* @returns
|
|
87
|
+
* Looks up a value by EVM address (case-insensitive).
|
|
88
|
+
* @param address - EVM address to look up.
|
|
89
|
+
* @returns The stored value, or `undefined` if not present.
|
|
85
90
|
*/
|
|
86
91
|
get(address) {
|
|
87
92
|
const key = (0, import_viem.getAddress)(address);
|
|
88
93
|
return this.#map.get(key);
|
|
89
94
|
}
|
|
90
95
|
/**
|
|
91
|
-
*
|
|
92
|
-
* @param address
|
|
93
|
-
* @
|
|
96
|
+
* Looks up a value by EVM address, throwing if the address is absent.
|
|
97
|
+
* @param address - EVM address to look up.
|
|
98
|
+
* @throws If `address` is not in the map.
|
|
94
99
|
*/
|
|
95
100
|
mustGet(address) {
|
|
96
101
|
const key = (0, import_viem.getAddress)(address);
|
|
@@ -100,40 +105,71 @@ class AddressMap {
|
|
|
100
105
|
return this.#map.get(key);
|
|
101
106
|
}
|
|
102
107
|
/**
|
|
103
|
-
*
|
|
104
|
-
* @param address
|
|
108
|
+
* Removes an entry by address. No-op if the address is absent.
|
|
109
|
+
* @param address - EVM address to remove.
|
|
105
110
|
*/
|
|
106
111
|
delete(address) {
|
|
107
112
|
const key = (0, import_viem.getAddress)(address);
|
|
108
113
|
this.#map.delete(key);
|
|
109
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Removes all entries from the map.
|
|
117
|
+
**/
|
|
110
118
|
clear() {
|
|
111
119
|
this.#map.clear();
|
|
112
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Returns all entries as an array of `[checksummedAddress, value]` tuples.
|
|
123
|
+
**/
|
|
113
124
|
entries() {
|
|
114
125
|
return Array.from(this.#map.entries());
|
|
115
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Returns all values in insertion order.
|
|
129
|
+
**/
|
|
116
130
|
values() {
|
|
117
131
|
return Array.from(this.#map.values());
|
|
118
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Returns all checksummed addresses in insertion order.
|
|
135
|
+
**/
|
|
119
136
|
keys() {
|
|
120
137
|
return Array.from(this.#map.keys());
|
|
121
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Converts the map to a plain `Record<Address, T>` object.
|
|
141
|
+
**/
|
|
122
142
|
asRecord() {
|
|
123
143
|
return Object.fromEntries(this.#map.entries());
|
|
124
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Number of entries in the map.
|
|
147
|
+
**/
|
|
125
148
|
get size() {
|
|
126
149
|
return this.#map.size;
|
|
127
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Prevents further mutations. Any subsequent call to {@link upsert},
|
|
153
|
+
* {@link insert}, or {@link delete} will throw.
|
|
154
|
+
*/
|
|
128
155
|
freeze() {
|
|
129
156
|
this.#frozen = true;
|
|
130
157
|
}
|
|
131
158
|
get name() {
|
|
132
159
|
return this.#name;
|
|
133
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Creates an `AddressMap` from a plain record object.
|
|
163
|
+
* @param record - Object whose keys are EVM addresses.
|
|
164
|
+
*/
|
|
134
165
|
static fromRecord(record) {
|
|
135
166
|
return new AddressMap(Object.entries(record));
|
|
136
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Creates an `AddressMap` by extracting an address from each array element.
|
|
170
|
+
* @param array - Source items.
|
|
171
|
+
* @param mapFn - Function that returns the address key for a given item.
|
|
172
|
+
*/
|
|
137
173
|
static fromMappedArray(array, mapFn) {
|
|
138
174
|
return new AddressMap(array.map((item) => [mapFn(item), item]));
|
|
139
175
|
}
|
|
@@ -23,6 +23,9 @@ __export(AddressSet_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(AddressSet_exports);
|
|
24
24
|
var import_viem = require("viem");
|
|
25
25
|
class AddressSet extends Set {
|
|
26
|
+
/**
|
|
27
|
+
* @param entries - Optional initial addresses. Each is checksummed automatically.
|
|
28
|
+
*/
|
|
26
29
|
constructor(entries) {
|
|
27
30
|
super(Array.from(entries ?? []).map((a) => (0, import_viem.getAddress)(a)));
|
|
28
31
|
}
|
|
@@ -35,9 +38,15 @@ class AddressSet extends Set {
|
|
|
35
38
|
has(value) {
|
|
36
39
|
return super.has((0, import_viem.getAddress)(value));
|
|
37
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns all addresses as an array.
|
|
43
|
+
**/
|
|
38
44
|
asArray() {
|
|
39
45
|
return Array.from(this);
|
|
40
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Maps each address through `fn` and returns the resulting array.
|
|
49
|
+
**/
|
|
41
50
|
map(fn) {
|
|
42
51
|
return this.asArray().map(fn);
|
|
43
52
|
}
|
|
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var sendRawTx_exports = {};
|
|
20
20
|
__export(sendRawTx_exports, {
|
|
21
|
+
estimateRawTxGas: () => estimateRawTxGas,
|
|
21
22
|
sendRawTx: () => sendRawTx
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(sendRawTx_exports);
|
|
@@ -36,7 +37,22 @@ async function sendRawTx(client, params) {
|
|
|
36
37
|
value: BigInt(tx.value)
|
|
37
38
|
});
|
|
38
39
|
}
|
|
40
|
+
async function estimateRawTxGas(client, params) {
|
|
41
|
+
const { tx, ...rest } = params;
|
|
42
|
+
return (0, import_utils.getAction)(
|
|
43
|
+
client,
|
|
44
|
+
import_actions.estimateGas,
|
|
45
|
+
"estimateGas"
|
|
46
|
+
)({
|
|
47
|
+
...rest,
|
|
48
|
+
account: params.account,
|
|
49
|
+
data: tx.callData,
|
|
50
|
+
to: tx.to,
|
|
51
|
+
value: BigInt(tx.value)
|
|
52
|
+
});
|
|
53
|
+
}
|
|
39
54
|
// Annotate the CommonJS export names for ESM import in node:
|
|
40
55
|
0 && (module.exports = {
|
|
56
|
+
estimateRawTxGas,
|
|
41
57
|
sendRawTx
|
|
42
58
|
});
|
|
@@ -1,102 +1,12 @@
|
|
|
1
|
-
import { getAddress
|
|
2
|
-
import { iFarmingPoolAbi } from "../../abi/iFarmingPool.js";
|
|
1
|
+
import { getAddress } from "viem";
|
|
3
2
|
import { BigIntMath } from "../../common-utils/index.js";
|
|
4
3
|
import { chains, toBigInt } from "../../sdk/index.js";
|
|
5
4
|
import {
|
|
6
5
|
MerkleXYZApi
|
|
7
6
|
} from "./merkl-api.js";
|
|
8
|
-
class
|
|
7
|
+
class RewardAmountAPI {
|
|
9
8
|
constructor() {
|
|
10
9
|
}
|
|
11
|
-
static async getLmRewardsV3({
|
|
12
|
-
pools,
|
|
13
|
-
tokensList,
|
|
14
|
-
provider,
|
|
15
|
-
account,
|
|
16
|
-
reportError
|
|
17
|
-
}) {
|
|
18
|
-
const poolByStakedDiesel = Object.values(pools).reduce((acc, p) => {
|
|
19
|
-
p.stakedDieselToken.forEach((t) => {
|
|
20
|
-
if (t) acc[t] = p.address;
|
|
21
|
-
});
|
|
22
|
-
p.stakedDieselToken_old.forEach((t) => {
|
|
23
|
-
if (t) acc[t] = p.address;
|
|
24
|
-
});
|
|
25
|
-
return acc;
|
|
26
|
-
}, {});
|
|
27
|
-
const stakedDieselTokens = Object.keys(poolByStakedDiesel);
|
|
28
|
-
const farmInfoCalls = stakedDieselTokens.map((address) => ({
|
|
29
|
-
address,
|
|
30
|
-
abi: iFarmingPoolAbi,
|
|
31
|
-
functionName: "farmInfo",
|
|
32
|
-
args: []
|
|
33
|
-
}));
|
|
34
|
-
const rewardTokenCalls = stakedDieselTokens.map((address) => ({
|
|
35
|
-
address,
|
|
36
|
-
abi: POOL_REWARDS_ABI,
|
|
37
|
-
functionName: "rewardsToken",
|
|
38
|
-
args: []
|
|
39
|
-
}));
|
|
40
|
-
const farmedCalls = stakedDieselTokens.map((address) => ({
|
|
41
|
-
address,
|
|
42
|
-
abi: iFarmingPoolAbi,
|
|
43
|
-
functionName: "farmed",
|
|
44
|
-
args: [account]
|
|
45
|
-
}));
|
|
46
|
-
const [response] = await Promise.allSettled([
|
|
47
|
-
provider.multicall({
|
|
48
|
-
allowFailure: false,
|
|
49
|
-
contracts: [...farmInfoCalls, ...rewardTokenCalls, ...farmedCalls],
|
|
50
|
-
batchSize: 0
|
|
51
|
-
})
|
|
52
|
-
]);
|
|
53
|
-
const safeResponse = GearboxRewardsApi.extractFulfilled(response, reportError, "v3Rewards") || [];
|
|
54
|
-
const farmInfoCallsEnd = farmInfoCalls.length;
|
|
55
|
-
const farmInfo = safeResponse.slice(
|
|
56
|
-
0,
|
|
57
|
-
farmInfoCallsEnd
|
|
58
|
-
);
|
|
59
|
-
const rewardTokenCallsEnd = farmInfoCallsEnd + rewardTokenCalls.length;
|
|
60
|
-
const rewardTokens = safeResponse.slice(
|
|
61
|
-
farmInfoCallsEnd,
|
|
62
|
-
rewardTokenCallsEnd
|
|
63
|
-
);
|
|
64
|
-
const farmedCallsEnd = rewardTokenCallsEnd + farmedCalls.length;
|
|
65
|
-
const farmedList = safeResponse.slice(
|
|
66
|
-
rewardTokenCallsEnd,
|
|
67
|
-
farmedCallsEnd
|
|
68
|
-
);
|
|
69
|
-
const gearboxLmRewards = stakedDieselTokens.map(
|
|
70
|
-
(address, i) => {
|
|
71
|
-
const pool = poolByStakedDiesel[address];
|
|
72
|
-
const info = farmInfo[i];
|
|
73
|
-
const rewardToken = rewardTokens[i]?.toLowerCase();
|
|
74
|
-
const farmed = farmedList[i];
|
|
75
|
-
if (!pool || !info || !rewardToken) return void 0;
|
|
76
|
-
return {
|
|
77
|
-
pool,
|
|
78
|
-
poolToken: address,
|
|
79
|
-
rewardToken,
|
|
80
|
-
rewardTokenDecimals: tokensList[rewardToken]?.decimals || 18,
|
|
81
|
-
rewardTokenSymbol: tokensList[rewardToken]?.symbol || "unknown",
|
|
82
|
-
amount: farmed ?? 0n,
|
|
83
|
-
type: "stakedV3"
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
);
|
|
87
|
-
const { zero, nonZero } = gearboxLmRewards.reduce(
|
|
88
|
-
(acc, r) => {
|
|
89
|
-
if (r && r.amount > 0n) {
|
|
90
|
-
acc.nonZero.push(r);
|
|
91
|
-
} else if (r) {
|
|
92
|
-
acc.zero.push(r);
|
|
93
|
-
}
|
|
94
|
-
return acc;
|
|
95
|
-
},
|
|
96
|
-
{ nonZero: [], zero: [] }
|
|
97
|
-
);
|
|
98
|
-
return [...nonZero, zero];
|
|
99
|
-
}
|
|
100
10
|
static async getLmRewardsMerkle({
|
|
101
11
|
pools,
|
|
102
12
|
account,
|
|
@@ -113,7 +23,7 @@ class GearboxRewardsApi {
|
|
|
113
23
|
})
|
|
114
24
|
)
|
|
115
25
|
]);
|
|
116
|
-
const merkleXYZLm =
|
|
26
|
+
const merkleXYZLm = RewardAmountAPI.extractFulfilled(
|
|
117
27
|
merkleXYZLMResponse,
|
|
118
28
|
reportError,
|
|
119
29
|
"merkleXYZLm"
|
|
@@ -168,37 +78,7 @@ class GearboxRewardsApi {
|
|
|
168
78
|
return void 0;
|
|
169
79
|
}
|
|
170
80
|
}
|
|
171
|
-
static async claimLmRewardsV3({
|
|
172
|
-
reward,
|
|
173
|
-
signer,
|
|
174
|
-
account
|
|
175
|
-
}) {
|
|
176
|
-
const pool = getContract({
|
|
177
|
-
address: reward.poolToken,
|
|
178
|
-
abi: iFarmingPoolAbi,
|
|
179
|
-
client: signer
|
|
180
|
-
});
|
|
181
|
-
return pool.write.claim({
|
|
182
|
-
account,
|
|
183
|
-
chain: signer.chain
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
81
|
}
|
|
187
|
-
const POOL_REWARDS_ABI = [
|
|
188
|
-
{
|
|
189
|
-
inputs: [],
|
|
190
|
-
name: "rewardsToken",
|
|
191
|
-
outputs: [
|
|
192
|
-
{
|
|
193
|
-
internalType: "contract IERC20",
|
|
194
|
-
name: "",
|
|
195
|
-
type: "address"
|
|
196
|
-
}
|
|
197
|
-
],
|
|
198
|
-
stateMutability: "view",
|
|
199
|
-
type: "function"
|
|
200
|
-
}
|
|
201
|
-
];
|
|
202
82
|
export {
|
|
203
|
-
|
|
83
|
+
RewardAmountAPI
|
|
204
84
|
};
|
|
@@ -17,7 +17,7 @@ function getKeyForPoolPointsInfo(i) {
|
|
|
17
17
|
i.condition
|
|
18
18
|
].join("-");
|
|
19
19
|
}
|
|
20
|
-
class
|
|
20
|
+
class PoolPointsAPI {
|
|
21
21
|
constructor() {
|
|
22
22
|
}
|
|
23
23
|
static async getTotalTokensOnProtocol({
|
|
@@ -27,9 +27,7 @@ class GearboxRewardsExtraApy {
|
|
|
27
27
|
}) {
|
|
28
28
|
const list = [...new Set(tokensToCheck)];
|
|
29
29
|
const res = await Promise.allSettled(
|
|
30
|
-
list.map(
|
|
31
|
-
(t) => GearboxRewardsExtraApy.getTokenTotal(t, network, tokensList)
|
|
32
|
-
)
|
|
30
|
+
list.map((t) => PoolPointsAPI.getTokenTotal(t, network, tokensList))
|
|
33
31
|
);
|
|
34
32
|
return res.map((r, i) => [
|
|
35
33
|
list[i],
|
|
@@ -59,7 +57,7 @@ class GearboxRewardsExtraApy {
|
|
|
59
57
|
(acc2, pointsInfo2) => {
|
|
60
58
|
const { address: tokenAddress } = tokensList[pointsInfo2.token] || {};
|
|
61
59
|
const tokenBalance = totalTokenBalances[tokenAddress || ""];
|
|
62
|
-
const points =
|
|
60
|
+
const points = PoolPointsAPI.getPoolTokenPoints(
|
|
63
61
|
tokenBalance,
|
|
64
62
|
p,
|
|
65
63
|
tokensList,
|
|
@@ -96,6 +94,6 @@ class GearboxRewardsExtraApy {
|
|
|
96
94
|
}
|
|
97
95
|
}
|
|
98
96
|
export {
|
|
99
|
-
|
|
97
|
+
PoolPointsAPI,
|
|
100
98
|
getKeyForPoolPointsInfo
|
|
101
99
|
};
|