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