@ember-finance/sdk 1.2.3 → 1.3.0

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.
@@ -7,6 +7,7 @@ exports.EVMVaultReader = void 0;
7
7
  const ethers_1 = require("ethers");
8
8
  const deployment_parser_1 = require("../utils/deployment-parser");
9
9
  const EmberVault_json_1 = __importDefault(require("../../abis/EmberVault.json"));
10
+ const EmberETHVault_json_1 = __importDefault(require("../../abis/EmberETHVault.json"));
10
11
  const EmberProtocolConfig_json_1 = __importDefault(require("../../abis/EmberProtocolConfig.json"));
11
12
  const ERC20Token_json_1 = __importDefault(require("../../abis/ERC20Token.json"));
12
13
  /**
@@ -46,9 +47,12 @@ class EVMVaultReader {
46
47
  }
47
48
  /**
48
49
  * Creates an ethers Contract instance for a vault
50
+ * @param vaultAddress The vault address
51
+ * @param isETHVault If true, uses EmberETHVault ABI (defaults to EmberVault ABI)
49
52
  */
50
- getVaultContract(vaultAddress) {
51
- return new ethers_1.Contract(vaultAddress, EmberVault_json_1.default.abi, this.provider);
53
+ getVaultContract(vaultAddress, isETHVault) {
54
+ const abi = isETHVault ? EmberETHVault_json_1.default.abi : EmberVault_json_1.default.abi;
55
+ return new ethers_1.Contract(vaultAddress, abi, this.provider);
52
56
  }
53
57
  /**
54
58
  * Creates an ethers Contract instance for protocol config
@@ -67,10 +71,11 @@ class EVMVaultReader {
67
71
  /**
68
72
  * Gets the basic vault state
69
73
  * @param vaultAddress The vault address
74
+ * @param isETHVault If true, uses EmberETHVault ABI
70
75
  * @returns Vault state information
71
76
  */
72
- async getVaultState(vaultAddress) {
73
- const vault = this.getVaultContract(vaultAddress);
77
+ async getVaultState(vaultAddress, isETHVault) {
78
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
74
79
  const [vaultName, tokenName, tokenSymbol, decimals, asset, totalAssets, totalSupply, maxTVL, minWithdrawableShares, protocolConfig, owner, sequenceNumber] = await Promise.all([
75
80
  vault.vaultName(),
76
81
  vault.name(),
@@ -103,10 +108,11 @@ class EVMVaultReader {
103
108
  /**
104
109
  * Gets the vault rate information
105
110
  * @param vaultAddress The vault address
111
+ * @param isETHVault If true, uses EmberETHVault ABI
106
112
  * @returns Rate information
107
113
  */
108
- async getVaultRate(vaultAddress) {
109
- const vault = this.getVaultContract(vaultAddress);
114
+ async getVaultRate(vaultAddress, isETHVault) {
115
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
110
116
  const rate = await vault.rate();
111
117
  return {
112
118
  value: rate.value,
@@ -118,10 +124,11 @@ class EVMVaultReader {
118
124
  /**
119
125
  * Gets the vault roles (admin, operator, rate manager)
120
126
  * @param vaultAddress The vault address
127
+ * @param isETHVault If true, uses EmberETHVault ABI
121
128
  * @returns Vault roles
122
129
  */
123
- async getVaultRoles(vaultAddress) {
124
- const vault = this.getVaultContract(vaultAddress);
130
+ async getVaultRoles(vaultAddress, isETHVault) {
131
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
125
132
  const roles = await vault.roles();
126
133
  return {
127
134
  admin: roles.admin,
@@ -132,10 +139,11 @@ class EVMVaultReader {
132
139
  /**
133
140
  * Gets the vault pause status
134
141
  * @param vaultAddress The vault address
142
+ * @param isETHVault If true, uses EmberETHVault ABI
135
143
  * @returns Pause status for different operations
136
144
  */
137
- async getVaultPauseStatus(vaultAddress) {
138
- const vault = this.getVaultContract(vaultAddress);
145
+ async getVaultPauseStatus(vaultAddress, isETHVault) {
146
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
139
147
  const status = await vault.pauseStatus();
140
148
  return {
141
149
  deposits: status.deposits,
@@ -146,10 +154,11 @@ class EVMVaultReader {
146
154
  /**
147
155
  * Gets the platform fee information
148
156
  * @param vaultAddress The vault address
157
+ * @param isETHVault If true, uses EmberETHVault ABI
149
158
  * @returns Platform fee information
150
159
  */
151
- async getVaultPlatformFee(vaultAddress) {
152
- const vault = this.getVaultContract(vaultAddress);
160
+ async getVaultPlatformFee(vaultAddress, isETHVault) {
161
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
153
162
  const fee = await vault.platformFee();
154
163
  return {
155
164
  accrued: fee.accrued,
@@ -161,16 +170,17 @@ class EVMVaultReader {
161
170
  /**
162
171
  * Gets complete vault information in a single call
163
172
  * @param vaultAddress The vault address
173
+ * @param isETHVault If true, uses EmberETHVault ABI
164
174
  * @returns Complete vault information
165
175
  */
166
- async getCompleteVaultInfo(vaultAddress) {
176
+ async getCompleteVaultInfo(vaultAddress, isETHVault) {
167
177
  const [state, rate, roles, pauseStatus, platformFee, pendingWithdrawalsCount] = await Promise.all([
168
- this.getVaultState(vaultAddress),
169
- this.getVaultRate(vaultAddress),
170
- this.getVaultRoles(vaultAddress),
171
- this.getVaultPauseStatus(vaultAddress),
172
- this.getVaultPlatformFee(vaultAddress),
173
- this.getPendingWithdrawalsCount(vaultAddress)
178
+ this.getVaultState(vaultAddress, isETHVault),
179
+ this.getVaultRate(vaultAddress, isETHVault),
180
+ this.getVaultRoles(vaultAddress, isETHVault),
181
+ this.getVaultPauseStatus(vaultAddress, isETHVault),
182
+ this.getVaultPlatformFee(vaultAddress, isETHVault),
183
+ this.getPendingWithdrawalsCount(vaultAddress, isETHVault)
174
184
  ]);
175
185
  return {
176
186
  address: vaultAddress,
@@ -186,128 +196,141 @@ class EVMVaultReader {
186
196
  /**
187
197
  * Gets the underlying asset address
188
198
  * @param vaultAddress The vault address
199
+ * @param isETHVault If true, uses EmberETHVault ABI
189
200
  * @returns Asset address
190
201
  */
191
- async getAsset(vaultAddress) {
192
- const vault = this.getVaultContract(vaultAddress);
202
+ async getAsset(vaultAddress, isETHVault) {
203
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
193
204
  return vault.asset();
194
205
  }
195
206
  /**
196
207
  * Gets total assets under management
197
208
  * @param vaultAddress The vault address
209
+ * @param isETHVault If true, uses EmberETHVault ABI
198
210
  * @returns Total assets
199
211
  */
200
- async getTotalAssets(vaultAddress) {
201
- const vault = this.getVaultContract(vaultAddress);
212
+ async getTotalAssets(vaultAddress, isETHVault) {
213
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
202
214
  return vault.totalAssets();
203
215
  }
204
216
  /**
205
217
  * Gets total shares supply
206
218
  * @param vaultAddress The vault address
219
+ * @param isETHVault If true, uses EmberETHVault ABI
207
220
  * @returns Total supply
208
221
  */
209
- async getTotalSupply(vaultAddress) {
210
- const vault = this.getVaultContract(vaultAddress);
222
+ async getTotalSupply(vaultAddress, isETHVault) {
223
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
211
224
  return vault.totalSupply();
212
225
  }
213
226
  /**
214
227
  * Converts assets to shares
215
228
  * @param vaultAddress The vault address
216
229
  * @param assets Amount of assets
230
+ * @param isETHVault If true, uses EmberETHVault ABI
217
231
  * @returns Equivalent shares
218
232
  */
219
- async convertToShares(vaultAddress, assets) {
220
- const vault = this.getVaultContract(vaultAddress);
233
+ async convertToShares(vaultAddress, assets, isETHVault) {
234
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
221
235
  return vault.convertToShares(assets);
222
236
  }
223
237
  /**
224
238
  * Converts shares to assets
225
239
  * @param vaultAddress The vault address
226
240
  * @param shares Amount of shares
241
+ * @param isETHVault If true, uses EmberETHVault ABI
227
242
  * @returns Equivalent assets
228
243
  */
229
- async convertToAssets(vaultAddress, shares) {
230
- const vault = this.getVaultContract(vaultAddress);
244
+ async convertToAssets(vaultAddress, shares, isETHVault) {
245
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
231
246
  return vault.convertToAssets(shares);
232
247
  }
233
248
  /**
234
249
  * Preview deposit - returns shares that would be minted
235
250
  * @param vaultAddress The vault address
236
251
  * @param assets Amount of assets to deposit
252
+ * @param isETHVault If true, uses EmberETHVault ABI
237
253
  * @returns Shares that would be minted
238
254
  */
239
- async previewDeposit(vaultAddress, assets) {
240
- const vault = this.getVaultContract(vaultAddress);
255
+ async previewDeposit(vaultAddress, assets, isETHVault) {
256
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
241
257
  return vault.previewDeposit(assets);
242
258
  }
243
259
  /**
244
260
  * Preview mint - returns assets required for shares
245
261
  * @param vaultAddress The vault address
246
262
  * @param shares Amount of shares to mint
263
+ * @param isETHVault If true, uses EmberETHVault ABI
247
264
  * @returns Assets required
248
265
  */
249
- async previewMint(vaultAddress, shares) {
250
- const vault = this.getVaultContract(vaultAddress);
266
+ async previewMint(vaultAddress, shares, isETHVault) {
267
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
251
268
  return vault.previewMint(shares);
252
269
  }
253
270
  /**
254
271
  * Preview redeem - returns assets that would be received
255
272
  * @param vaultAddress The vault address
256
273
  * @param shares Amount of shares to redeem
274
+ * @param isETHVault If true, uses EmberETHVault ABI
257
275
  * @returns Assets that would be received
258
276
  */
259
- async previewRedeem(vaultAddress, shares) {
260
- const vault = this.getVaultContract(vaultAddress);
277
+ async previewRedeem(vaultAddress, shares, isETHVault) {
278
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
261
279
  return vault.previewRedeem(shares);
262
280
  }
263
281
  /**
264
282
  * Preview withdraw - returns shares that would be burned
265
283
  * @param vaultAddress The vault address
266
284
  * @param assets Amount of assets to withdraw
285
+ * @param isETHVault If true, uses EmberETHVault ABI
267
286
  * @returns Shares that would be burned
268
287
  */
269
- async previewWithdraw(vaultAddress, assets) {
270
- const vault = this.getVaultContract(vaultAddress);
288
+ async previewWithdraw(vaultAddress, assets, isETHVault) {
289
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
271
290
  return vault.previewWithdraw(assets);
272
291
  }
273
292
  /**
274
293
  * Gets max deposit for an account
275
294
  * @param vaultAddress The vault address
276
295
  * @param account The account address
296
+ * @param isETHVault If true, uses EmberETHVault ABI
277
297
  * @returns Maximum deposit amount
278
298
  */
279
- async maxDeposit(vaultAddress, account) {
280
- const vault = this.getVaultContract(vaultAddress);
299
+ async maxDeposit(vaultAddress, account, isETHVault) {
300
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
281
301
  return vault.maxDeposit(account);
282
302
  }
283
303
  /**
284
304
  * Gets max mint for an account
285
305
  * @param vaultAddress The vault address
286
306
  * @param account The account address
307
+ * @param isETHVault If true, uses EmberETHVault ABI
287
308
  * @returns Maximum mint amount
288
309
  */
289
- async maxMint(vaultAddress, account) {
290
- const vault = this.getVaultContract(vaultAddress);
310
+ async maxMint(vaultAddress, account, isETHVault) {
311
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
291
312
  return vault.maxMint(account);
292
313
  }
293
314
  /**
294
315
  * Gets max redeem for an account
295
316
  * @param vaultAddress The vault address
296
317
  * @param account The account address
318
+ * @param isETHVault If true, uses EmberETHVault ABI
297
319
  * @returns Maximum redeem amount
298
320
  */
299
- async maxRedeem(vaultAddress, account) {
300
- const vault = this.getVaultContract(vaultAddress);
321
+ async maxRedeem(vaultAddress, account, isETHVault) {
322
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
301
323
  return vault.maxRedeem(account);
302
324
  }
303
325
  /**
304
326
  * Gets max withdraw for an account
305
327
  * @param vaultAddress The vault address
306
328
  * @param account The account address
329
+ * @param isETHVault If true, uses EmberETHVault ABI
307
330
  * @returns Maximum withdraw amount
308
331
  */
309
- async maxWithdraw(vaultAddress, account) {
310
- const vault = this.getVaultContract(vaultAddress);
332
+ async maxWithdraw(vaultAddress, account, isETHVault) {
333
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
311
334
  return vault.maxWithdraw(account);
312
335
  }
313
336
  // ========== User Position Methods ==========
@@ -315,10 +338,11 @@ class EVMVaultReader {
315
338
  * Gets the share balance for an account
316
339
  * @param vaultAddress The vault address
317
340
  * @param account The account address
341
+ * @param isETHVault If true, uses EmberETHVault ABI
318
342
  * @returns Share balance
319
343
  */
320
- async balanceOf(vaultAddress, account) {
321
- const vault = this.getVaultContract(vaultAddress);
344
+ async balanceOf(vaultAddress, account, isETHVault) {
345
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
322
346
  return vault.balanceOf(account);
323
347
  }
324
348
  /**
@@ -326,20 +350,22 @@ class EVMVaultReader {
326
350
  * @param vaultAddress The vault address
327
351
  * @param owner The owner address
328
352
  * @param spender The spender address
353
+ * @param isETHVault If true, uses EmberETHVault ABI
329
354
  * @returns Allowance amount
330
355
  */
331
- async allowance(vaultAddress, owner, spender) {
332
- const vault = this.getVaultContract(vaultAddress);
356
+ async allowance(vaultAddress, owner, spender, isETHVault) {
357
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
333
358
  return vault.allowance(owner, spender);
334
359
  }
335
360
  /**
336
361
  * Gets the account state including pending withdrawals
337
362
  * @param vaultAddress The vault address
338
363
  * @param account The account address
364
+ * @param isETHVault If true, uses EmberETHVault ABI
339
365
  * @returns Account state
340
366
  */
341
- async getAccountState(vaultAddress, account) {
342
- const vault = this.getVaultContract(vaultAddress);
367
+ async getAccountState(vaultAddress, account, isETHVault) {
368
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
343
369
  const state = await vault.getAccountState(account);
344
370
  return {
345
371
  totalPendingWithdrawalShares: state.totalPendingWithdrawalShares,
@@ -355,13 +381,14 @@ class EVMVaultReader {
355
381
  * Gets complete user position in a vault
356
382
  * @param vaultAddress The vault address
357
383
  * @param account The account address
384
+ * @param isETHVault If true, uses EmberETHVault ABI
358
385
  * @returns Complete user position
359
386
  */
360
- async getUserPosition(vaultAddress, account) {
361
- const vault = this.getVaultContract(vaultAddress);
387
+ async getUserPosition(vaultAddress, account, isETHVault) {
388
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
362
389
  const [shareBalance, accountState, maxDepositVal, maxMintVal, maxRedeemVal, maxWithdrawVal] = await Promise.all([
363
390
  vault.balanceOf(account),
364
- this.getAccountState(vaultAddress, account),
391
+ this.getAccountState(vaultAddress, account, isETHVault),
365
392
  vault.maxDeposit(account),
366
393
  vault.maxMint(account),
367
394
  vault.maxRedeem(account),
@@ -383,20 +410,22 @@ class EVMVaultReader {
383
410
  /**
384
411
  * Gets the number of pending withdrawal requests
385
412
  * @param vaultAddress The vault address
413
+ * @param isETHVault If true, uses EmberETHVault ABI
386
414
  * @returns Count of pending withdrawals
387
415
  */
388
- async getPendingWithdrawalsCount(vaultAddress) {
389
- const vault = this.getVaultContract(vaultAddress);
416
+ async getPendingWithdrawalsCount(vaultAddress, isETHVault) {
417
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
390
418
  return vault.getPendingWithdrawalsLength();
391
419
  }
392
420
  /**
393
421
  * Gets a pending withdrawal request by index
394
422
  * @param vaultAddress The vault address
395
423
  * @param index The index in the pending withdrawals queue
424
+ * @param isETHVault If true, uses EmberETHVault ABI
396
425
  * @returns Withdrawal request details
397
426
  */
398
- async getPendingWithdrawal(vaultAddress, index) {
399
- const vault = this.getVaultContract(vaultAddress);
427
+ async getPendingWithdrawal(vaultAddress, index, isETHVault) {
428
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
400
429
  const request = await vault.getPendingWithdrawal(index);
401
430
  return {
402
431
  owner: request.owner,
@@ -410,14 +439,15 @@ class EVMVaultReader {
410
439
  /**
411
440
  * Gets all pending withdrawal requests for a vault
412
441
  * @param vaultAddress The vault address
442
+ * @param isETHVault If true, uses EmberETHVault ABI
413
443
  * @returns Array of withdrawal requests
414
444
  */
415
- async getAllPendingWithdrawals(vaultAddress) {
416
- const count = await this.getPendingWithdrawalsCount(vaultAddress);
445
+ async getAllPendingWithdrawals(vaultAddress, isETHVault) {
446
+ const count = await this.getPendingWithdrawalsCount(vaultAddress, isETHVault);
417
447
  const requests = [];
418
448
  const promises = [];
419
449
  for (let i = 0n; i < count; i++) {
420
- promises.push(this.getPendingWithdrawal(vaultAddress, i));
450
+ promises.push(this.getPendingWithdrawal(vaultAddress, i, isETHVault));
421
451
  }
422
452
  const results = await Promise.all(promises);
423
453
  requests.push(...results);
@@ -428,10 +458,11 @@ class EVMVaultReader {
428
458
  * Checks if an address is a sub-account
429
459
  * @param vaultAddress The vault address
430
460
  * @param account The account to check
461
+ * @param isETHVault If true, uses EmberETHVault ABI
431
462
  * @returns True if the account is a sub-account
432
463
  */
433
- async isSubAccount(vaultAddress, account) {
434
- const vault = this.getVaultContract(vaultAddress);
464
+ async isSubAccount(vaultAddress, account, isETHVault) {
465
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
435
466
  return vault.subAccounts(account);
436
467
  }
437
468
  // ========== Token Balance Methods ==========
@@ -439,10 +470,11 @@ class EVMVaultReader {
439
470
  * Gets the underlying token balance for an account
440
471
  * @param vaultAddress The vault address
441
472
  * @param account The account address
473
+ * @param isETHVault If true, uses EmberETHVault ABI
442
474
  * @returns Token balance
443
475
  */
444
- async getUnderlyingTokenBalance(vaultAddress, account) {
445
- const assetAddress = await this.getAsset(vaultAddress);
476
+ async getUnderlyingTokenBalance(vaultAddress, account, isETHVault) {
477
+ const assetAddress = await this.getAsset(vaultAddress, isETHVault);
446
478
  const token = this.getERC20Contract(assetAddress);
447
479
  return token.balanceOf(account);
448
480
  }
@@ -450,10 +482,11 @@ class EVMVaultReader {
450
482
  * Gets the underlying token allowance for the vault
451
483
  * @param vaultAddress The vault address
452
484
  * @param owner The token owner
485
+ * @param isETHVault If true, uses EmberETHVault ABI
453
486
  * @returns Allowance for the vault
454
487
  */
455
- async getUnderlyingTokenAllowance(vaultAddress, owner) {
456
- const assetAddress = await this.getAsset(vaultAddress);
488
+ async getUnderlyingTokenAllowance(vaultAddress, owner, isETHVault) {
489
+ const assetAddress = await this.getAsset(vaultAddress, isETHVault);
457
490
  const token = this.getERC20Contract(assetAddress);
458
491
  return token.allowance(owner, vaultAddress);
459
492
  }
@@ -494,10 +527,11 @@ class EVMVaultReader {
494
527
  /**
495
528
  * Gets the chain timestamp in milliseconds
496
529
  * @param vaultAddress The vault address
530
+ * @param isETHVault If true, uses EmberETHVault ABI
497
531
  * @returns Chain timestamp in ms
498
532
  */
499
- async getChainTimestampMs(vaultAddress) {
500
- const vault = this.getVaultContract(vaultAddress);
533
+ async getChainTimestampMs(vaultAddress, isETHVault) {
534
+ const vault = this.getVaultContract(vaultAddress, isETHVault);
501
535
  return vault.getChainTimestampMs();
502
536
  }
503
537
  // ========== Batch Query Methods ==========
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ember-finance/sdk",
3
3
  "description": "Ember Protocol SDK",
4
- "version": "1.2.3",
4
+ "version": "1.3.0",
5
5
  "module": "./dist/index.js",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",