@oydual31/more-vaults-sdk 0.1.0 → 0.1.2

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/README.md CHANGED
@@ -1,7 +1,19 @@
1
- # @more-vaults/sdk
1
+ # @oydual31/more-vaults-sdk
2
2
 
3
3
  TypeScript SDK for the MoreVaults protocol. Supports **viem/wagmi** and **ethers.js v6**.
4
4
 
5
+ ```bash
6
+ npm install @oydual31/more-vaults-sdk
7
+ ```
8
+
9
+ ```ts
10
+ // viem / wagmi
11
+ import { getVaultStatus, smartDeposit, getUserBalances } from '@oydual31/more-vaults-sdk/viem'
12
+
13
+ // ethers.js v6
14
+ import { getVaultStatus, smartDeposit, getUserBalances } from '@oydual31/more-vaults-sdk/ethers'
15
+ ```
16
+
5
17
  ---
6
18
 
7
19
  ## What is MoreVaults
@@ -176,7 +188,7 @@ Read-only helpers (`getUserPosition`, `previewDeposit`, etc.) accept a bare `Pro
176
188
  ### viem / wagmi
177
189
 
178
190
  ```ts
179
- import { getVaultStatus, depositSimple, getUserPosition } from './src/viem/index.js'
191
+ import { getVaultStatus, depositSimple, getUserPosition } from '@oydual31/more-vaults-sdk/viem'
180
192
  import { createPublicClient, createWalletClient, http, parseUnits } from 'viem'
181
193
 
182
194
  const publicClient = createPublicClient({ chain: flowEvm, transport: http(RPC_URL) })
@@ -206,7 +218,7 @@ console.log('Value:', position.estimatedAssets)
206
218
  ### ethers.js
207
219
 
208
220
  ```ts
209
- import { getVaultStatus, depositSimple, getUserPosition } from './src/ethers/index.js'
221
+ import { getVaultStatus, depositSimple, getUserPosition } from '@oydual31/more-vaults-sdk/ethers'
210
222
  import { BrowserProvider, parseUnits } from 'ethers'
211
223
 
212
224
  const provider = new BrowserProvider(window.ethereum)
@@ -2,6 +2,36 @@
2
2
 
3
3
  var ethers = require('ethers');
4
4
 
5
+ // src/ethers/chains.ts
6
+ var CHAIN_IDS = {
7
+ flowEVMMainnet: 747,
8
+ flowEVMTestnet: 545,
9
+ arbitrum: 42161,
10
+ base: 8453,
11
+ ethereum: 1
12
+ };
13
+ var LZ_EIDS = {
14
+ flowMainnet: 30332,
15
+ flowTestnet: 30333,
16
+ arbitrum: 30110,
17
+ base: 30184,
18
+ ethereum: 30101
19
+ };
20
+ var EID_TO_CHAIN_ID = {
21
+ [LZ_EIDS.flowMainnet]: CHAIN_IDS.flowEVMMainnet,
22
+ [LZ_EIDS.flowTestnet]: CHAIN_IDS.flowEVMTestnet,
23
+ [LZ_EIDS.arbitrum]: CHAIN_IDS.arbitrum,
24
+ [LZ_EIDS.base]: CHAIN_IDS.base,
25
+ [LZ_EIDS.ethereum]: CHAIN_IDS.ethereum
26
+ };
27
+ var CHAIN_ID_TO_EID = {
28
+ [CHAIN_IDS.flowEVMMainnet]: LZ_EIDS.flowMainnet,
29
+ [CHAIN_IDS.flowEVMTestnet]: LZ_EIDS.flowTestnet,
30
+ [CHAIN_IDS.arbitrum]: LZ_EIDS.arbitrum,
31
+ [CHAIN_IDS.base]: LZ_EIDS.base,
32
+ [CHAIN_IDS.ethereum]: LZ_EIDS.ethereum
33
+ };
34
+
5
35
  // src/ethers/types.ts
6
36
  var ActionType = {
7
37
  DEPOSIT: 0,
@@ -147,6 +177,14 @@ var MissingEscrowAddressError = class extends MoreVaultsError {
147
177
  this.name = "MissingEscrowAddressError";
148
178
  }
149
179
  };
180
+ var WrongChainError = class extends MoreVaultsError {
181
+ constructor(currentChainId, expectedChainId) {
182
+ super(
183
+ `Wrong network: wallet is on chain ${currentChainId}, but the vault hub requires chain ${expectedChainId}. Switch networks before proceeding.`
184
+ );
185
+ this.name = "WrongChainError";
186
+ }
187
+ };
150
188
  async function preflightAsync(provider, vault, escrow) {
151
189
  const config = new ethers.Contract(vault, CONFIG_ABI, provider);
152
190
  const bridge = new ethers.Contract(vault, BRIDGE_ABI, provider);
@@ -218,6 +256,17 @@ async function preflightSync(provider, vault) {
218
256
  );
219
257
  }
220
258
  }
259
+
260
+ // src/ethers/chainValidation.ts
261
+ async function validateWalletChain(signer, hubChainId) {
262
+ if (!hubChainId) return;
263
+ const network = await signer.provider?.getNetwork();
264
+ if (!network) return;
265
+ const current = Number(network.chainId);
266
+ if (current !== hubChainId) {
267
+ throw new WrongChainError(current, hubChainId);
268
+ }
269
+ }
221
270
  var MULTICALL3_ADDRESS = "0xcA11bde05977b3631167028862bE2a173976CA11";
222
271
  var MULTICALL3_ABI = [
223
272
  "function aggregate3(tuple(address target, bool allowFailure, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)"
@@ -409,6 +458,7 @@ async function ensureAllowance2(signer, token, spender, amount) {
409
458
  }
410
459
  async function depositSimple(signer, addresses, assets, receiver) {
411
460
  const provider = signer.provider;
461
+ await validateWalletChain(signer, addresses.hubChainId);
412
462
  await preflightSync(provider, addresses.vault);
413
463
  const vault = new ethers.Contract(addresses.vault, VAULT_ABI, signer);
414
464
  const underlying = await vault.asset();
@@ -432,6 +482,7 @@ async function depositSimple(signer, addresses, assets, receiver) {
432
482
  return { receipt, shares };
433
483
  }
434
484
  async function depositMultiAsset(signer, addresses, tokens, amounts, receiver, minShares) {
485
+ await validateWalletChain(signer, addresses.hubChainId);
435
486
  for (let i = 0; i < tokens.length; i++) {
436
487
  await ensureAllowance2(signer, tokens[i], addresses.vault, amounts[i]);
437
488
  }
@@ -459,6 +510,7 @@ async function depositAsync(signer, addresses, assets, receiver, lzFee, extraOpt
459
510
  const provider = signer.provider;
460
511
  if (!addresses.escrow) throw new MissingEscrowAddressError();
461
512
  const escrow = addresses.escrow;
513
+ await validateWalletChain(signer, addresses.hubChainId);
462
514
  await preflightAsync(provider, addresses.vault);
463
515
  const vault = new ethers.Contract(addresses.vault, VAULT_ABI, signer);
464
516
  const underlying = await vault.asset();
@@ -491,6 +543,7 @@ async function mintAsync(signer, addresses, shares, maxAssets, receiver, lzFee,
491
543
  const provider = signer.provider;
492
544
  if (!addresses.escrow) throw new MissingEscrowAddressError();
493
545
  const escrow = addresses.escrow;
546
+ await validateWalletChain(signer, addresses.hubChainId);
494
547
  await preflightAsync(provider, addresses.vault);
495
548
  const vault = new ethers.Contract(addresses.vault, VAULT_ABI, signer);
496
549
  const underlying = await vault.asset();
@@ -631,6 +684,7 @@ async function ensureAllowance4(signer, token, spender, amount) {
631
684
  }
632
685
  }
633
686
  async function redeemShares(signer, addresses, shares, receiver, owner) {
687
+ await validateWalletChain(signer, addresses.hubChainId);
634
688
  const vault = new ethers.Contract(addresses.vault, VAULT_ABI, signer);
635
689
  const assets = await vault.redeem.staticCall(shares, receiver, owner);
636
690
  const tx = await vault.redeem(shares, receiver, owner);
@@ -638,12 +692,14 @@ async function redeemShares(signer, addresses, shares, receiver, owner) {
638
692
  return { receipt, assets };
639
693
  }
640
694
  async function withdrawAssets(signer, addresses, assets, receiver, owner) {
695
+ await validateWalletChain(signer, addresses.hubChainId);
641
696
  const vault = new ethers.Contract(addresses.vault, VAULT_ABI, signer);
642
697
  const tx = await vault.withdraw(assets, receiver, owner);
643
698
  const receipt = await tx.wait();
644
699
  return { receipt, assets };
645
700
  }
646
701
  async function requestRedeem(signer, addresses, shares, owner) {
702
+ await validateWalletChain(signer, addresses.hubChainId);
647
703
  const vault = new ethers.Contract(addresses.vault, VAULT_ABI, signer);
648
704
  const tx = await vault.requestRedeem(shares, owner);
649
705
  const receipt = await tx.wait();
@@ -661,6 +717,7 @@ async function redeemAsync(signer, addresses, shares, receiver, owner, lzFee, ex
661
717
  const provider = signer.provider;
662
718
  if (!addresses.escrow) throw new MissingEscrowAddressError();
663
719
  const escrow = addresses.escrow;
720
+ await validateWalletChain(signer, addresses.hubChainId);
664
721
  await preflightAsync(provider, addresses.vault);
665
722
  await preflightRedeemLiquidity(provider, addresses.vault, shares);
666
723
  await ensureAllowance4(signer, addresses.vault, escrow, shares);
@@ -921,14 +978,24 @@ async function getVaultSummary(provider, vault) {
921
978
  return { ...status, ...metadata };
922
979
  }
923
980
 
981
+ // src/ethers/wagmiCompat.ts
982
+ function asSdkSigner(signer) {
983
+ if (!signer) throw new Error("[MoreVaults] No signer available. Make sure the wallet is connected and wagmi is configured correctly.");
984
+ return signer;
985
+ }
986
+
924
987
  exports.ActionType = ActionType;
925
988
  exports.BRIDGE_ABI = BRIDGE_ABI;
926
989
  exports.CCManagerNotConfiguredError = CCManagerNotConfiguredError;
990
+ exports.CHAIN_IDS = CHAIN_IDS;
991
+ exports.CHAIN_ID_TO_EID = CHAIN_ID_TO_EID;
927
992
  exports.CONFIG_ABI = CONFIG_ABI;
928
993
  exports.CapacityFullError = CapacityFullError;
994
+ exports.EID_TO_CHAIN_ID = EID_TO_CHAIN_ID;
929
995
  exports.ERC20_ABI = ERC20_ABI;
930
996
  exports.EscrowNotConfiguredError = EscrowNotConfiguredError;
931
997
  exports.InsufficientLiquidityError = InsufficientLiquidityError;
998
+ exports.LZ_EIDS = LZ_EIDS;
932
999
  exports.METADATA_ABI = METADATA_ABI;
933
1000
  exports.MissingEscrowAddressError = MissingEscrowAddressError;
934
1001
  exports.MoreVaultsError = MoreVaultsError;
@@ -937,6 +1004,8 @@ exports.NotWhitelistedError = NotWhitelistedError;
937
1004
  exports.OFT_ABI = OFT_ABI;
938
1005
  exports.VAULT_ABI = VAULT_ABI;
939
1006
  exports.VaultPausedError = VaultPausedError;
1007
+ exports.WrongChainError = WrongChainError;
1008
+ exports.asSdkSigner = asSdkSigner;
940
1009
  exports.bridgeSharesToHub = bridgeSharesToHub;
941
1010
  exports.canDeposit = canDeposit;
942
1011
  exports.depositAsync = depositAsync;