@metamask-previews/earn-controller 4.0.0-preview-b31794c → 4.0.0-preview-a8644e5b
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/CHANGELOG.md +13 -0
- package/dist/EarnController.cjs +91 -94
- package/dist/EarnController.cjs.map +1 -1
- package/dist/EarnController.d.cts +30 -18
- package/dist/EarnController.d.cts.map +1 -1
- package/dist/EarnController.d.mts +30 -18
- package/dist/EarnController.d.mts.map +1 -1
- package/dist/EarnController.mjs +93 -96
- package/dist/EarnController.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +5 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +5 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +3 -3
- package/dist/constants.cjs +0 -6
- package/dist/constants.cjs.map +0 -1
- package/dist/constants.d.cts +0 -3
- package/dist/constants.d.cts.map +0 -1
- package/dist/constants.d.mts +0 -3
- package/dist/constants.d.mts.map +0 -1
- package/dist/constants.mjs +0 -3
- package/dist/constants.mjs.map +0 -1
@@ -1,10 +1,10 @@
|
|
1
1
|
import type { AccountsControllerGetSelectedAccountAction, AccountsControllerSelectedAccountChangeEvent } from "@metamask/accounts-controller";
|
2
2
|
import type { ControllerGetStateAction, ControllerStateChangeEvent, RestrictedMessenger } from "@metamask/base-controller";
|
3
3
|
import { BaseController } from "@metamask/base-controller";
|
4
|
-
import type { NetworkControllerGetNetworkClientByIdAction,
|
4
|
+
import type { NetworkControllerGetNetworkClientByIdAction, NetworkControllerNetworkDidChangeEvent } from "@metamask/network-controller";
|
5
5
|
import { type LendingMarket, type PooledStake, type VaultData, type VaultDailyApy, type VaultApyAverages, type LendingPosition, type GasLimitParams, type HistoricLendingMarketApys, EarnEnvironments } from "@metamask/stake-sdk";
|
6
6
|
import { type TransactionController, type TransactionControllerTransactionConfirmedEvent } from "@metamask/transaction-controller";
|
7
|
-
import type { RefreshEarnEligibilityOptions, RefreshLendingEligibilityOptions, RefreshLendingPositionsOptions, RefreshPooledStakesOptions, RefreshPooledStakingDataOptions } from "./types.mjs";
|
7
|
+
import type { RefreshEarnEligibilityOptions, RefreshLendingEligibilityOptions, RefreshLendingPositionsOptions, RefreshPooledStakesOptions, RefreshPooledStakingDataOptions, RefreshPooledStakingVaultDailyApysOptions } from "./types.mjs";
|
8
8
|
export declare const controllerName = "EarnController";
|
9
9
|
export type PooledStakingState = {
|
10
10
|
[chainId: number]: {
|
@@ -77,7 +77,7 @@ export type EarnControllerActions = EarnControllerGetStateAction;
|
|
77
77
|
/**
|
78
78
|
* All actions that EarnController calls internally.
|
79
79
|
*/
|
80
|
-
export type AllowedActions = NetworkControllerGetNetworkClientByIdAction |
|
80
|
+
export type AllowedActions = NetworkControllerGetNetworkClientByIdAction | AccountsControllerGetSelectedAccountAction;
|
81
81
|
/**
|
82
82
|
* The event that EarnController publishes when updating state.
|
83
83
|
*/
|
@@ -89,7 +89,7 @@ export type EarnControllerEvents = EarnControllerStateChangeEvent;
|
|
89
89
|
/**
|
90
90
|
* All events that EarnController subscribes to internally.
|
91
91
|
*/
|
92
|
-
export type AllowedEvents = AccountsControllerSelectedAccountChangeEvent |
|
92
|
+
export type AllowedEvents = AccountsControllerSelectedAccountChangeEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerNetworkDidChangeEvent;
|
93
93
|
/**
|
94
94
|
* The messenger which is restricted to actions and events accessed by
|
95
95
|
* EarnController.
|
@@ -100,10 +100,11 @@ export type EarnControllerMessenger = RestrictedMessenger<typeof controllerName,
|
|
100
100
|
*/
|
101
101
|
export declare class EarnController extends BaseController<typeof controllerName, EarnControllerState, EarnControllerMessenger> {
|
102
102
|
#private;
|
103
|
-
constructor({ messenger, state, addTransactionFn, env, }: {
|
103
|
+
constructor({ messenger, state, addTransactionFn, selectedNetworkClientId, env, }: {
|
104
104
|
messenger: EarnControllerMessenger;
|
105
105
|
state?: Partial<EarnControllerState>;
|
106
106
|
addTransactionFn: typeof TransactionController.prototype.addTransaction;
|
107
|
+
selectedNetworkClientId: string;
|
107
108
|
env?: EarnEnvironments;
|
108
109
|
});
|
109
110
|
/**
|
@@ -114,9 +115,10 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
114
115
|
* @param options - Optional arguments
|
115
116
|
* @param [options.resetCache] - Control whether the BE cache should be invalidated (optional).
|
116
117
|
* @param [options.address] - The address to refresh pooled stakes for (optional).
|
118
|
+
* @param [options.chainId] - The chain id to refresh pooled stakes for (optional).
|
117
119
|
* @returns A promise that resolves when the stakes data has been updated
|
118
120
|
*/
|
119
|
-
refreshPooledStakes({ resetCache, address, }?: RefreshPooledStakesOptions): Promise<void>;
|
121
|
+
refreshPooledStakes({ resetCache, address, chainId, }?: RefreshPooledStakesOptions): Promise<void>;
|
120
122
|
/**
|
121
123
|
* Refreshes the earn eligibility status for the current account.
|
122
124
|
* Updates the eligibility status in the controller state based on the location and address blocklist for compliance.
|
@@ -133,25 +135,29 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
133
135
|
* Updates the vault metadata in the controller state including APY, capacity,
|
134
136
|
* fee percentage, total assets, and vault address.
|
135
137
|
*
|
138
|
+
* @param [chainId] - The chain id to refresh pooled staking vault metadata for (optional).
|
136
139
|
* @returns A promise that resolves when the vault metadata has been updated
|
137
140
|
*/
|
138
|
-
refreshPooledStakingVaultMetadata(): Promise<void>;
|
141
|
+
refreshPooledStakingVaultMetadata(chainId?: number): Promise<void>;
|
139
142
|
/**
|
140
143
|
* Refreshes pooled staking vault daily apys for the current chain.
|
141
144
|
* Updates the pooled staking vault daily apys controller state.
|
142
145
|
*
|
143
|
-
* @param
|
144
|
-
* @param
|
146
|
+
* @param [options] - The options for refreshing pooled staking vault daily apys.
|
147
|
+
* @param [options.chainId] - The chain id to refresh pooled staking vault daily apys for (defaults to Ethereum).
|
148
|
+
* @param [options.days] - The number of days to fetch pooled staking vault daily apys for (defaults to 365).
|
149
|
+
* @param [options.order] - The order in which to fetch pooled staking vault daily apys. Descending order fetches the latest N days (latest working backwards). Ascending order fetches the oldest N days (oldest working forwards) (defaults to 'desc').
|
145
150
|
* @returns A promise that resolves when the pooled staking vault daily apys have been updated.
|
146
151
|
*/
|
147
|
-
refreshPooledStakingVaultDailyApys(days
|
152
|
+
refreshPooledStakingVaultDailyApys({ chainId, days, order, }?: RefreshPooledStakingVaultDailyApysOptions): Promise<void>;
|
148
153
|
/**
|
149
154
|
* Refreshes pooled staking vault apy averages for the current chain.
|
150
155
|
* Updates the pooled staking vault apy averages controller state.
|
151
156
|
*
|
157
|
+
* @param [chainId] - The chain id to refresh pooled staking vault apy averages for (optional).
|
152
158
|
* @returns A promise that resolves when the pooled staking vault apy averages have been updated.
|
153
159
|
*/
|
154
|
-
refreshPooledStakingVaultApyAverages(): Promise<void>;
|
160
|
+
refreshPooledStakingVaultApyAverages(chainId?: number): Promise<void>;
|
155
161
|
/**
|
156
162
|
* Refreshes all pooled staking related data including stakes, eligibility, and vault data.
|
157
163
|
* This method allows partial success, meaning some data may update while other requests fail.
|
@@ -203,7 +209,7 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
203
209
|
*
|
204
210
|
* @param options - Optional arguments
|
205
211
|
* @param [options.address] - The address to get lending position history for (optional).
|
206
|
-
* @param
|
212
|
+
* @param options.chainId - The chain id to get lending position history for.
|
207
213
|
* @param [options.positionId] - The position id to get lending position history for.
|
208
214
|
* @param [options.marketId] - The market id to get lending position history for.
|
209
215
|
* @param [options.marketAddress] - The market address to get lending position history for.
|
@@ -213,7 +219,7 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
213
219
|
*/
|
214
220
|
getLendingPositionHistory({ address, chainId, positionId, marketId, marketAddress, protocol, days, }: {
|
215
221
|
address?: string;
|
216
|
-
chainId
|
222
|
+
chainId: number;
|
217
223
|
positionId: string;
|
218
224
|
marketId: string;
|
219
225
|
marketAddress: string;
|
@@ -224,14 +230,14 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
224
230
|
* Gets the lending market daily apys and averages for the current chain.
|
225
231
|
*
|
226
232
|
* @param options - Optional arguments
|
227
|
-
* @param
|
233
|
+
* @param options.chainId - The chain id to get lending market daily apys and averages for.
|
228
234
|
* @param [options.protocol] - The protocol to get lending market daily apys and averages for.
|
229
235
|
* @param [options.marketId] - The market id to get lending market daily apys and averages for.
|
230
236
|
* @param [options.days] - The number of days to get lending market daily apys and averages for (optional).
|
231
237
|
* @returns A promise that resolves when the lending market daily apys and averages have been updated
|
232
238
|
*/
|
233
239
|
getLendingMarketDailyApysAndAverages({ chainId, protocol, marketId, days, }: {
|
234
|
-
chainId
|
240
|
+
chainId: number;
|
235
241
|
protocol: string;
|
236
242
|
marketId: string;
|
237
243
|
days?: number;
|
@@ -241,6 +247,7 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
241
247
|
*
|
242
248
|
* @param options - The options for the lending deposit transaction.
|
243
249
|
* @param options.amount - The amount to deposit.
|
250
|
+
* @param options.chainId - The chain ID for the lending deposit transaction.
|
244
251
|
* @param options.protocol - The protocol of the lending market.
|
245
252
|
* @param options.underlyingTokenAddress - The address of the underlying token.
|
246
253
|
* @param options.gasOptions - The gas options for the transaction.
|
@@ -249,8 +256,9 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
249
256
|
* @param options.txOptions - The transaction options for the transaction.
|
250
257
|
* @returns A promise that resolves to the transaction hash.
|
251
258
|
*/
|
252
|
-
executeLendingDeposit({ amount, protocol, underlyingTokenAddress, gasOptions, txOptions, }: {
|
259
|
+
executeLendingDeposit({ amount, chainId, protocol, underlyingTokenAddress, gasOptions, txOptions, }: {
|
253
260
|
amount: string;
|
261
|
+
chainId: string;
|
254
262
|
protocol: LendingMarket['protocol'];
|
255
263
|
underlyingTokenAddress: string;
|
256
264
|
gasOptions: {
|
@@ -264,6 +272,7 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
264
272
|
*
|
265
273
|
* @param options - The options for the lending withdraw transaction.
|
266
274
|
* @param options.amount - The amount to withdraw.
|
275
|
+
* @param options.chainId - The chain ID for the lending withdraw transaction.
|
267
276
|
* @param options.protocol - The protocol of the lending market.
|
268
277
|
* @param options.underlyingTokenAddress - The address of the underlying token.
|
269
278
|
* @param options.gasOptions - The gas options for the transaction.
|
@@ -272,8 +281,9 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
272
281
|
* @param options.txOptions - The transaction options for the transaction.
|
273
282
|
* @returns A promise that resolves to the transaction hash.
|
274
283
|
*/
|
275
|
-
executeLendingWithdraw({ amount, protocol, underlyingTokenAddress, gasOptions, txOptions, }: {
|
284
|
+
executeLendingWithdraw({ amount, chainId, protocol, underlyingTokenAddress, gasOptions, txOptions, }: {
|
276
285
|
amount: string;
|
286
|
+
chainId: string;
|
277
287
|
protocol: LendingMarket['protocol'];
|
278
288
|
underlyingTokenAddress: string;
|
279
289
|
gasOptions: {
|
@@ -287,6 +297,7 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
287
297
|
*
|
288
298
|
* @param options - The options for the lending token approve transaction.
|
289
299
|
* @param options.amount - The amount to approve.
|
300
|
+
* @param options.chainId - The chain ID for the lending token approve transaction.
|
290
301
|
* @param options.protocol - The protocol of the lending market.
|
291
302
|
* @param options.underlyingTokenAddress - The address of the underlying token.
|
292
303
|
* @param options.gasOptions - The gas options for the transaction.
|
@@ -295,9 +306,10 @@ export declare class EarnController extends BaseController<typeof controllerName
|
|
295
306
|
* @param options.txOptions - The transaction options for the transaction.
|
296
307
|
* @returns A promise that resolves to the transaction hash.
|
297
308
|
*/
|
298
|
-
executeLendingTokenApprove({ protocol, amount, underlyingTokenAddress, gasOptions, txOptions, }: {
|
309
|
+
executeLendingTokenApprove({ protocol, amount, chainId, underlyingTokenAddress, gasOptions, txOptions, }: {
|
299
310
|
protocol: LendingMarket['protocol'];
|
300
311
|
amount: string;
|
312
|
+
chainId: string;
|
301
313
|
underlyingTokenAddress: string;
|
302
314
|
gasOptions: {
|
303
315
|
gasLimit?: GasLimitParams;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EarnController.d.mts","sourceRoot":"","sources":["../src/EarnController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,0CAA0C,EAC1C,4CAA4C,EAC7C,sCAAsC;AACvC,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EAEpB,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EACV,2CAA2C,EAC3C
|
1
|
+
{"version":3,"file":"EarnController.d.mts","sourceRoot":"","sources":["../src/EarnController.ts"],"names":[],"mappings":"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"}
|
package/dist/EarnController.mjs
CHANGED
@@ -9,13 +9,12 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
11
11
|
};
|
12
|
-
var _EarnController_instances, _EarnController_earnSDK, _EarnController_selectedNetworkClientId, _EarnController_earnApiService, _EarnController_addTransactionFn, _EarnController_supportedPooledStakingChains, _EarnController_env, _EarnController_initializeSDK, _EarnController_getCurrentAccount
|
12
|
+
var _EarnController_instances, _EarnController_earnSDK, _EarnController_selectedNetworkClientId, _EarnController_earnApiService, _EarnController_addTransactionFn, _EarnController_supportedPooledStakingChains, _EarnController_env, _EarnController_initializeSDK, _EarnController_getCurrentAccount;
|
13
13
|
import { Web3Provider } from "@ethersproject/providers";
|
14
14
|
import { BaseController } from "@metamask/base-controller";
|
15
15
|
import { convertHexToDecimal, toHex } from "@metamask/controller-utils";
|
16
|
-
import { EarnSdk, EarnApiService, isSupportedLendingChain, EarnEnvironments } from "@metamask/stake-sdk";
|
17
|
-
import { TransactionType
|
18
|
-
import { HOODI_TESTNET_CHAIN_ID_HEX } from "./constants.mjs";
|
16
|
+
import { EarnSdk, EarnApiService, isSupportedLendingChain, EarnEnvironments, ChainId, isSupportedPooledStakingChain } from "@metamask/stake-sdk";
|
17
|
+
import { TransactionType } from "@metamask/transaction-controller";
|
19
18
|
export const controllerName = 'EarnController';
|
20
19
|
const stakingTransactionTypes = new Set([
|
21
20
|
TransactionType.stakingDeposit,
|
@@ -128,7 +127,7 @@ export function getDefaultEarnControllerState() {
|
|
128
127
|
* EarnController manages DeFi earning opportunities across different protocols and chains.
|
129
128
|
*/
|
130
129
|
export class EarnController extends BaseController {
|
131
|
-
constructor({ messenger, state = {}, addTransactionFn, env = EarnEnvironments.PROD, }) {
|
130
|
+
constructor({ messenger, state = {}, addTransactionFn, selectedNetworkClientId, env = EarnEnvironments.PROD, }) {
|
132
131
|
super({
|
133
132
|
name: controllerName,
|
134
133
|
metadata: earnControllerMetadata,
|
@@ -150,30 +149,24 @@ export class EarnController extends BaseController {
|
|
150
149
|
// temporary array of supported chains
|
151
150
|
// TODO: remove this once we export a supported chains list from the sdk
|
152
151
|
// from sdk or api to get lending and pooled staking chains
|
153
|
-
__classPrivateFieldSet(this, _EarnController_supportedPooledStakingChains, [
|
154
|
-
CHAIN_IDS.MAINNET,
|
155
|
-
HOODI_TESTNET_CHAIN_ID_HEX,
|
156
|
-
], "f");
|
152
|
+
__classPrivateFieldSet(this, _EarnController_supportedPooledStakingChains, [ChainId.ETHEREUM, ChainId.HOODI], "f");
|
157
153
|
__classPrivateFieldSet(this, _EarnController_addTransactionFn, addTransactionFn, "f");
|
158
|
-
|
154
|
+
__classPrivateFieldSet(this, _EarnController_selectedNetworkClientId, selectedNetworkClientId, "f");
|
155
|
+
__classPrivateFieldGet(this, _EarnController_instances, "m", _EarnController_initializeSDK).call(this, selectedNetworkClientId).catch(console.error);
|
159
156
|
this.refreshPooledStakingData().catch(console.error);
|
160
157
|
this.refreshLendingData().catch(console.error);
|
161
|
-
const { selectedNetworkClientId } = this.messagingSystem.call('NetworkController:getState');
|
162
|
-
__classPrivateFieldSet(this, _EarnController_selectedNetworkClientId, selectedNetworkClientId, "f");
|
163
158
|
// Listen for network changes
|
164
|
-
this.messagingSystem.subscribe('NetworkController:
|
165
|
-
if (networkControllerState.selectedNetworkClientId !==
|
166
|
-
__classPrivateFieldGet(this, _EarnController_selectedNetworkClientId, "f")) {
|
167
|
-
__classPrivateFieldGet(this, _EarnController_instances, "m", _EarnController_initializeSDK).call(this, networkControllerState.selectedNetworkClientId).catch(console.error);
|
168
|
-
this.refreshPooledStakingVaultMetadata().catch(console.error);
|
169
|
-
this.refreshPooledStakingVaultDailyApys().catch(console.error);
|
170
|
-
this.refreshPooledStakingVaultApyAverages().catch(console.error);
|
171
|
-
this.refreshPooledStakes().catch(console.error);
|
172
|
-
// refresh lending data for all chains
|
173
|
-
this.refreshLendingMarkets().catch(console.error);
|
174
|
-
this.refreshLendingPositions().catch(console.error);
|
175
|
-
}
|
159
|
+
this.messagingSystem.subscribe('NetworkController:networkDidChange', (networkControllerState) => {
|
176
160
|
__classPrivateFieldSet(this, _EarnController_selectedNetworkClientId, networkControllerState.selectedNetworkClientId, "f");
|
161
|
+
__classPrivateFieldGet(this, _EarnController_instances, "m", _EarnController_initializeSDK).call(this, __classPrivateFieldGet(this, _EarnController_selectedNetworkClientId, "f")).catch(console.error);
|
162
|
+
// refresh pooled staking data
|
163
|
+
this.refreshPooledStakingVaultMetadata().catch(console.error);
|
164
|
+
this.refreshPooledStakingVaultDailyApys().catch(console.error);
|
165
|
+
this.refreshPooledStakingVaultApyAverages().catch(console.error);
|
166
|
+
this.refreshPooledStakes().catch(console.error);
|
167
|
+
// refresh lending data for all chains
|
168
|
+
this.refreshLendingMarkets().catch(console.error);
|
169
|
+
this.refreshLendingPositions().catch(console.error);
|
177
170
|
});
|
178
171
|
// Listen for account changes
|
179
172
|
this.messagingSystem.subscribe('AccountsController:selectedAccountChange', (account) => {
|
@@ -218,18 +211,22 @@ export class EarnController extends BaseController {
|
|
218
211
|
* @param options - Optional arguments
|
219
212
|
* @param [options.resetCache] - Control whether the BE cache should be invalidated (optional).
|
220
213
|
* @param [options.address] - The address to refresh pooled stakes for (optional).
|
214
|
+
* @param [options.chainId] - The chain id to refresh pooled stakes for (optional).
|
221
215
|
* @returns A promise that resolves when the stakes data has been updated
|
222
216
|
*/
|
223
|
-
async refreshPooledStakes({ resetCache = false, address, } = {}) {
|
217
|
+
async refreshPooledStakes({ resetCache = false, address, chainId = ChainId.ETHEREUM, } = {}) {
|
224
218
|
const addressToUse = address ?? __classPrivateFieldGet(this, _EarnController_instances, "m", _EarnController_getCurrentAccount).call(this)?.address;
|
225
219
|
if (!addressToUse) {
|
226
220
|
return;
|
227
221
|
}
|
228
|
-
const
|
229
|
-
|
222
|
+
const chainIdToUse = isSupportedPooledStakingChain(chainId)
|
223
|
+
? chainId
|
224
|
+
: ChainId.ETHEREUM;
|
225
|
+
const { accounts, exchangeRate } = await __classPrivateFieldGet(this, _EarnController_earnApiService, "f").pooledStaking.getPooledStakes([addressToUse], chainIdToUse, resetCache);
|
230
226
|
this.update((state) => {
|
231
|
-
const chainState = state.pooled_staking[
|
232
|
-
|
227
|
+
const chainState = state.pooled_staking[chainIdToUse] ??
|
228
|
+
DEFAULT_POOLED_STAKING_CHAIN_STATE;
|
229
|
+
state.pooled_staking[chainIdToUse] = {
|
233
230
|
...chainState,
|
234
231
|
pooledStakes: accounts[0],
|
235
232
|
exchangeRate,
|
@@ -264,14 +261,18 @@ export class EarnController extends BaseController {
|
|
264
261
|
* Updates the vault metadata in the controller state including APY, capacity,
|
265
262
|
* fee percentage, total assets, and vault address.
|
266
263
|
*
|
264
|
+
* @param [chainId] - The chain id to refresh pooled staking vault metadata for (optional).
|
267
265
|
* @returns A promise that resolves when the vault metadata has been updated
|
268
266
|
*/
|
269
|
-
async refreshPooledStakingVaultMetadata() {
|
270
|
-
const
|
271
|
-
|
267
|
+
async refreshPooledStakingVaultMetadata(chainId = ChainId.ETHEREUM) {
|
268
|
+
const chainIdToUse = isSupportedPooledStakingChain(chainId)
|
269
|
+
? chainId
|
270
|
+
: ChainId.ETHEREUM;
|
271
|
+
const vaultMetadata = await __classPrivateFieldGet(this, _EarnController_earnApiService, "f").pooledStaking.getVaultData(chainIdToUse);
|
272
272
|
this.update((state) => {
|
273
|
-
const chainState = state.pooled_staking[
|
274
|
-
|
273
|
+
const chainState = state.pooled_staking[chainIdToUse] ??
|
274
|
+
DEFAULT_POOLED_STAKING_CHAIN_STATE;
|
275
|
+
state.pooled_staking[chainIdToUse] = {
|
275
276
|
...chainState,
|
276
277
|
vaultMetadata,
|
277
278
|
};
|
@@ -281,16 +282,21 @@ export class EarnController extends BaseController {
|
|
281
282
|
* Refreshes pooled staking vault daily apys for the current chain.
|
282
283
|
* Updates the pooled staking vault daily apys controller state.
|
283
284
|
*
|
284
|
-
* @param
|
285
|
-
* @param
|
285
|
+
* @param [options] - The options for refreshing pooled staking vault daily apys.
|
286
|
+
* @param [options.chainId] - The chain id to refresh pooled staking vault daily apys for (defaults to Ethereum).
|
287
|
+
* @param [options.days] - The number of days to fetch pooled staking vault daily apys for (defaults to 365).
|
288
|
+
* @param [options.order] - The order in which to fetch pooled staking vault daily apys. Descending order fetches the latest N days (latest working backwards). Ascending order fetches the oldest N days (oldest working forwards) (defaults to 'desc').
|
286
289
|
* @returns A promise that resolves when the pooled staking vault daily apys have been updated.
|
287
290
|
*/
|
288
|
-
async refreshPooledStakingVaultDailyApys(days = 365, order = 'desc') {
|
289
|
-
const
|
290
|
-
|
291
|
+
async refreshPooledStakingVaultDailyApys({ chainId = ChainId.ETHEREUM, days = 365, order = 'desc', } = {}) {
|
292
|
+
const chainIdToUse = isSupportedPooledStakingChain(chainId)
|
293
|
+
? chainId
|
294
|
+
: ChainId.ETHEREUM;
|
295
|
+
const vaultDailyApys = await __classPrivateFieldGet(this, _EarnController_earnApiService, "f").pooledStaking.getVaultDailyApys(chainIdToUse, days, order);
|
291
296
|
this.update((state) => {
|
292
|
-
const chainState = state.pooled_staking[
|
293
|
-
|
297
|
+
const chainState = state.pooled_staking[chainIdToUse] ??
|
298
|
+
DEFAULT_POOLED_STAKING_CHAIN_STATE;
|
299
|
+
state.pooled_staking[chainIdToUse] = {
|
294
300
|
...chainState,
|
295
301
|
vaultDailyApys,
|
296
302
|
};
|
@@ -300,14 +306,18 @@ export class EarnController extends BaseController {
|
|
300
306
|
* Refreshes pooled staking vault apy averages for the current chain.
|
301
307
|
* Updates the pooled staking vault apy averages controller state.
|
302
308
|
*
|
309
|
+
* @param [chainId] - The chain id to refresh pooled staking vault apy averages for (optional).
|
303
310
|
* @returns A promise that resolves when the pooled staking vault apy averages have been updated.
|
304
311
|
*/
|
305
|
-
async refreshPooledStakingVaultApyAverages() {
|
306
|
-
const
|
307
|
-
|
312
|
+
async refreshPooledStakingVaultApyAverages(chainId = ChainId.ETHEREUM) {
|
313
|
+
const chainIdToUse = isSupportedPooledStakingChain(chainId)
|
314
|
+
? chainId
|
315
|
+
: ChainId.ETHEREUM;
|
316
|
+
const vaultApyAverages = await __classPrivateFieldGet(this, _EarnController_earnApiService, "f").pooledStaking.getVaultApyAverages(chainIdToUse);
|
308
317
|
this.update((state) => {
|
309
|
-
const chainState = state.pooled_staking[
|
310
|
-
|
318
|
+
const chainState = state.pooled_staking[chainIdToUse] ??
|
319
|
+
DEFAULT_POOLED_STAKING_CHAIN_STATE;
|
320
|
+
state.pooled_staking[chainIdToUse] = {
|
311
321
|
...chainState,
|
312
322
|
vaultApyAverages,
|
313
323
|
};
|
@@ -326,23 +336,26 @@ export class EarnController extends BaseController {
|
|
326
336
|
*/
|
327
337
|
async refreshPooledStakingData({ resetCache, address, } = {}) {
|
328
338
|
const errors = [];
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
339
|
+
// Refresh earn eligibility once since it's not chain-specific
|
340
|
+
await this.refreshEarnEligibility({ address }).catch((error) => {
|
341
|
+
errors.push(error);
|
342
|
+
});
|
343
|
+
for (const chainId of __classPrivateFieldGet(this, _EarnController_supportedPooledStakingChains, "f")) {
|
344
|
+
await Promise.all([
|
345
|
+
this.refreshPooledStakes({ resetCache, address, chainId }).catch((error) => {
|
346
|
+
errors.push(error);
|
347
|
+
}),
|
348
|
+
this.refreshPooledStakingVaultMetadata(chainId).catch((error) => {
|
349
|
+
errors.push(error);
|
350
|
+
}),
|
351
|
+
this.refreshPooledStakingVaultDailyApys({ chainId }).catch((error) => {
|
352
|
+
errors.push(error);
|
353
|
+
}),
|
354
|
+
this.refreshPooledStakingVaultApyAverages(chainId).catch((error) => {
|
355
|
+
errors.push(error);
|
356
|
+
}),
|
357
|
+
]);
|
358
|
+
}
|
346
359
|
if (errors.length > 0) {
|
347
360
|
throw new Error(`Failed to refresh some staking data: ${errors
|
348
361
|
.map((e) => e.message)
|
@@ -443,7 +456,7 @@ export class EarnController extends BaseController {
|
|
443
456
|
*
|
444
457
|
* @param options - Optional arguments
|
445
458
|
* @param [options.address] - The address to get lending position history for (optional).
|
446
|
-
* @param
|
459
|
+
* @param options.chainId - The chain id to get lending position history for.
|
447
460
|
* @param [options.positionId] - The position id to get lending position history for.
|
448
461
|
* @param [options.marketId] - The market id to get lending position history for.
|
449
462
|
* @param [options.marketAddress] - The market address to get lending position history for.
|
@@ -453,34 +466,33 @@ export class EarnController extends BaseController {
|
|
453
466
|
*/
|
454
467
|
getLendingPositionHistory({ address, chainId, positionId, marketId, marketAddress, protocol, days = 730, }) {
|
455
468
|
const addressToUse = address ?? __classPrivateFieldGet(this, _EarnController_instances, "m", _EarnController_getCurrentAccount).call(this)?.address;
|
456
|
-
|
457
|
-
if (!addressToUse || !isSupportedLendingChain(chainIdToUse)) {
|
469
|
+
if (!addressToUse || !isSupportedLendingChain(chainId)) {
|
458
470
|
return [];
|
459
471
|
}
|
460
|
-
return __classPrivateFieldGet(this, _EarnController_earnApiService, "f").lending.getPositionHistory(addressToUse,
|
472
|
+
return __classPrivateFieldGet(this, _EarnController_earnApiService, "f").lending.getPositionHistory(addressToUse, chainId, protocol, marketId, marketAddress, positionId, days);
|
461
473
|
}
|
462
474
|
/**
|
463
475
|
* Gets the lending market daily apys and averages for the current chain.
|
464
476
|
*
|
465
477
|
* @param options - Optional arguments
|
466
|
-
* @param
|
478
|
+
* @param options.chainId - The chain id to get lending market daily apys and averages for.
|
467
479
|
* @param [options.protocol] - The protocol to get lending market daily apys and averages for.
|
468
480
|
* @param [options.marketId] - The market id to get lending market daily apys and averages for.
|
469
481
|
* @param [options.days] - The number of days to get lending market daily apys and averages for (optional).
|
470
482
|
* @returns A promise that resolves when the lending market daily apys and averages have been updated
|
471
483
|
*/
|
472
484
|
getLendingMarketDailyApysAndAverages({ chainId, protocol, marketId, days = 365, }) {
|
473
|
-
|
474
|
-
if (!isSupportedLendingChain(chainIdToUse)) {
|
485
|
+
if (!isSupportedLendingChain(chainId)) {
|
475
486
|
return undefined;
|
476
487
|
}
|
477
|
-
return __classPrivateFieldGet(this, _EarnController_earnApiService, "f").lending.getHistoricMarketApys(
|
488
|
+
return __classPrivateFieldGet(this, _EarnController_earnApiService, "f").lending.getHistoricMarketApys(chainId, protocol, marketId, days);
|
478
489
|
}
|
479
490
|
/**
|
480
491
|
* Executes a lending deposit transaction.
|
481
492
|
*
|
482
493
|
* @param options - The options for the lending deposit transaction.
|
483
494
|
* @param options.amount - The amount to deposit.
|
495
|
+
* @param options.chainId - The chain ID for the lending deposit transaction.
|
484
496
|
* @param options.protocol - The protocol of the lending market.
|
485
497
|
* @param options.underlyingTokenAddress - The address of the underlying token.
|
486
498
|
* @param options.gasOptions - The gas options for the transaction.
|
@@ -489,7 +501,7 @@ export class EarnController extends BaseController {
|
|
489
501
|
* @param options.txOptions - The transaction options for the transaction.
|
490
502
|
* @returns A promise that resolves to the transaction hash.
|
491
503
|
*/
|
492
|
-
async executeLendingDeposit({ amount, protocol, underlyingTokenAddress, gasOptions, txOptions, }) {
|
504
|
+
async executeLendingDeposit({ amount, chainId, protocol, underlyingTokenAddress, gasOptions, txOptions, }) {
|
493
505
|
const address = __classPrivateFieldGet(this, _EarnController_instances, "m", _EarnController_getCurrentAccount).call(this)?.address;
|
494
506
|
const transactionData = await __classPrivateFieldGet(this, _EarnController_earnSDK, "f")?.contracts?.lending?.[protocol]?.[underlyingTokenAddress]?.encodeDepositTransactionData(amount, address, gasOptions);
|
495
507
|
if (!transactionData) {
|
@@ -504,7 +516,7 @@ export class EarnController extends BaseController {
|
|
504
516
|
const txHash = await __classPrivateFieldGet(this, _EarnController_addTransactionFn, "f").call(this, {
|
505
517
|
...transactionData,
|
506
518
|
value: transactionData.value.toString(),
|
507
|
-
chainId: toHex(
|
519
|
+
chainId: toHex(chainId),
|
508
520
|
gasLimit,
|
509
521
|
}, {
|
510
522
|
...txOptions,
|
@@ -517,6 +529,7 @@ export class EarnController extends BaseController {
|
|
517
529
|
*
|
518
530
|
* @param options - The options for the lending withdraw transaction.
|
519
531
|
* @param options.amount - The amount to withdraw.
|
532
|
+
* @param options.chainId - The chain ID for the lending withdraw transaction.
|
520
533
|
* @param options.protocol - The protocol of the lending market.
|
521
534
|
* @param options.underlyingTokenAddress - The address of the underlying token.
|
522
535
|
* @param options.gasOptions - The gas options for the transaction.
|
@@ -525,7 +538,7 @@ export class EarnController extends BaseController {
|
|
525
538
|
* @param options.txOptions - The transaction options for the transaction.
|
526
539
|
* @returns A promise that resolves to the transaction hash.
|
527
540
|
*/
|
528
|
-
async executeLendingWithdraw({ amount, protocol, underlyingTokenAddress, gasOptions, txOptions, }) {
|
541
|
+
async executeLendingWithdraw({ amount, chainId, protocol, underlyingTokenAddress, gasOptions, txOptions, }) {
|
529
542
|
const address = __classPrivateFieldGet(this, _EarnController_instances, "m", _EarnController_getCurrentAccount).call(this)?.address;
|
530
543
|
const transactionData = await __classPrivateFieldGet(this, _EarnController_earnSDK, "f")?.contracts?.lending?.[protocol]?.[underlyingTokenAddress]?.encodeWithdrawTransactionData(amount, address, gasOptions);
|
531
544
|
if (!transactionData) {
|
@@ -540,7 +553,7 @@ export class EarnController extends BaseController {
|
|
540
553
|
const txHash = await __classPrivateFieldGet(this, _EarnController_addTransactionFn, "f").call(this, {
|
541
554
|
...transactionData,
|
542
555
|
value: transactionData.value.toString(),
|
543
|
-
chainId: toHex(
|
556
|
+
chainId: toHex(chainId),
|
544
557
|
gasLimit,
|
545
558
|
}, {
|
546
559
|
...txOptions,
|
@@ -553,6 +566,7 @@ export class EarnController extends BaseController {
|
|
553
566
|
*
|
554
567
|
* @param options - The options for the lending token approve transaction.
|
555
568
|
* @param options.amount - The amount to approve.
|
569
|
+
* @param options.chainId - The chain ID for the lending token approve transaction.
|
556
570
|
* @param options.protocol - The protocol of the lending market.
|
557
571
|
* @param options.underlyingTokenAddress - The address of the underlying token.
|
558
572
|
* @param options.gasOptions - The gas options for the transaction.
|
@@ -561,7 +575,7 @@ export class EarnController extends BaseController {
|
|
561
575
|
* @param options.txOptions - The transaction options for the transaction.
|
562
576
|
* @returns A promise that resolves to the transaction hash.
|
563
577
|
*/
|
564
|
-
async executeLendingTokenApprove({ protocol, amount, underlyingTokenAddress, gasOptions, txOptions, }) {
|
578
|
+
async executeLendingTokenApprove({ protocol, amount, chainId, underlyingTokenAddress, gasOptions, txOptions, }) {
|
565
579
|
const address = __classPrivateFieldGet(this, _EarnController_instances, "m", _EarnController_getCurrentAccount).call(this)?.address;
|
566
580
|
const transactionData = await __classPrivateFieldGet(this, _EarnController_earnSDK, "f")?.contracts?.lending?.[protocol]?.[underlyingTokenAddress]?.encodeUnderlyingTokenApproveTransactionData(amount, address, gasOptions);
|
567
581
|
if (!transactionData) {
|
@@ -576,7 +590,7 @@ export class EarnController extends BaseController {
|
|
576
590
|
const txHash = await __classPrivateFieldGet(this, _EarnController_addTransactionFn, "f").call(this, {
|
577
591
|
...transactionData,
|
578
592
|
value: transactionData.value.toString(),
|
579
|
-
chainId: toHex(
|
593
|
+
chainId: toHex(chainId),
|
580
594
|
gasLimit,
|
581
595
|
}, {
|
582
596
|
...txOptions,
|
@@ -625,13 +639,10 @@ _EarnController_earnSDK = new WeakMap(), _EarnController_selectedNetworkClientId
|
|
625
639
|
/**
|
626
640
|
* Initializes the Earn SDK.
|
627
641
|
*
|
628
|
-
* @param networkClientId - The network client id to initialize the Earn SDK for
|
642
|
+
* @param networkClientId - The network client id to initialize the Earn SDK for.
|
629
643
|
*/
|
630
644
|
async function _EarnController_initializeSDK(networkClientId) {
|
631
|
-
const
|
632
|
-
? { selectedNetworkClientId: networkClientId }
|
633
|
-
: this.messagingSystem.call('NetworkController:getState');
|
634
|
-
const networkClient = this.messagingSystem.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
|
645
|
+
const networkClient = this.messagingSystem.call('NetworkController:getNetworkClientById', networkClientId);
|
635
646
|
if (!networkClient?.provider) {
|
636
647
|
__classPrivateFieldSet(this, _EarnController_earnSDK, null, "f");
|
637
648
|
return;
|
@@ -656,19 +667,5 @@ async function _EarnController_initializeSDK(networkClientId) {
|
|
656
667
|
}
|
657
668
|
}, _EarnController_getCurrentAccount = function _EarnController_getCurrentAccount() {
|
658
669
|
return this.messagingSystem.call('AccountsController:getSelectedAccount');
|
659
|
-
}, _EarnController_getCurrentChainId = function _EarnController_getCurrentChainId(networkClientId) {
|
660
|
-
const networkClientIdToUse = networkClientId ??
|
661
|
-
this.messagingSystem.call('NetworkController:getState')
|
662
|
-
.selectedNetworkClientId;
|
663
|
-
const { configuration: { chainId }, } = this.messagingSystem.call('NetworkController:getNetworkClientById', networkClientIdToUse);
|
664
|
-
return convertHexToDecimal(chainId);
|
665
|
-
}, _EarnController_getActivePooledStakingChainId = function _EarnController_getActivePooledStakingChainId() {
|
666
|
-
const activeChainId = __classPrivateFieldGet(this, _EarnController_instances, "m", _EarnController_getCurrentChainId).call(this);
|
667
|
-
if (!activeChainId ||
|
668
|
-
!__classPrivateFieldGet(this, _EarnController_supportedPooledStakingChains, "f").includes(toHex(activeChainId))) {
|
669
|
-
// Fallback to Ethereum Mainnet if chainId is not supported.
|
670
|
-
return convertHexToDecimal(CHAIN_IDS.MAINNET);
|
671
|
-
}
|
672
|
-
return activeChainId;
|
673
670
|
};
|
674
671
|
//# sourceMappingURL=EarnController.mjs.map
|