@oydual31/more-vaults-sdk 0.3.0 → 0.3.1

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.
@@ -1,6 +1,6 @@
1
- import { Hash, Address, WalletClient, PublicClient } from 'viem';
1
+ import { Address, Hash, WalletClient, PublicClient } from 'viem';
2
2
  export { PublicClient as SdkPublicClient } from 'viem';
3
- export { A as AsyncRequestFinalResult, a as AsyncRequestStatus, b as AsyncRequestStatusInfo, D as DepositBlockReason, c as DepositEligibility, I as InboundRoute, d as InboundRouteWithBalance, M as MaxWithdrawable, e as MultiChainUserPosition, N as NATIVE_SYMBOL, O as OMNI_FACTORY_ADDRESS, f as OutboundRoute, S as SpokeBalance, U as UserBalances, g as UserPosition, V as VaultDistribution, h as VaultMetadata, i as VaultMode, j as VaultStatus, k as VaultSummary, l as VaultTopology, m as canDeposit, n as discoverVaultTopology, o as ensureAllowance, p as getAllVaultChainIds, q as getAsyncRequestStatus, r as getAsyncRequestStatusLabel, s as getFullVaultTopology, t as getInboundRoutes, u as getMaxWithdrawable, v as getOutboundRoutes, w as getUserBalances, x as getUserBalancesForRoutes, y as getUserPosition, z as getUserPositionMultiChain, B as getVaultDistribution, C as getVaultDistributionWithTopology, E as getVaultMetadata, F as getVaultStatus, G as getVaultSummary, H as getVaultTopology, J as isAsyncMode, K as isOnHubChain, L as previewDeposit, P as previewRedeem, Q as quoteLzFee, R as quoteRouteDepositFee, T as waitForAsyncRequest, W as waitForTx } from '../spokeRoutes-FgKCJQYa.cjs';
3
+ export { A as AsyncRequestFinalResult, a as AsyncRequestStatus, b as AsyncRequestStatusInfo, D as DepositBlockReason, c as DepositEligibility, I as InboundRoute, d as InboundRouteWithBalance, M as MaxWithdrawable, e as MultiChainUserPosition, N as NATIVE_SYMBOL, O as OMNI_FACTORY_ADDRESS, f as OutboundRoute, S as SpokeBalance, U as UserBalances, g as UserPosition, V as VaultDistribution, h as VaultMetadata, i as VaultMode, j as VaultStatus, k as VaultSummary, l as VaultTopology, m as canDeposit, n as discoverVaultTopology, o as ensureAllowance, p as getAllVaultChainIds, q as getAsyncRequestStatus, r as getAsyncRequestStatusLabel, s as getFullVaultTopology, t as getInboundRoutes, u as getMaxWithdrawable, v as getOutboundRoutes, w as getUserBalances, x as getUserBalancesForRoutes, y as getUserPosition, z as getUserPositionMultiChain, B as getVaultDistribution, C as getVaultDistributionWithTopology, E as getVaultMetadata, F as getVaultStatus, G as getVaultSummary, H as getVaultTopology, J as isAsyncMode, K as isOnHubChain, L as previewDeposit, P as previewRedeem, Q as quoteLzFee, R as quoteRouteDepositFee, T as waitForAsyncRequest, W as waitForTx } from '../spokeRoutes-DK7cIW4z.cjs';
4
4
 
5
5
  /** EVM Chain IDs for chains supported by MoreVaults */
6
6
  declare const CHAIN_IDS: {
@@ -1415,6 +1415,143 @@ declare const LZ_ADAPTER_ABI: readonly [{
1415
1415
  }];
1416
1416
  readonly stateMutability: "view";
1417
1417
  }];
1418
+ /**
1419
+ * ERC4626Facet ABI — synchronous deposit and redeem into whitelisted ERC-4626 vaults.
1420
+ */
1421
+ declare const ERC4626_FACET_ABI: readonly [{
1422
+ readonly type: "function";
1423
+ readonly name: "erc4626Deposit";
1424
+ readonly inputs: readonly [{
1425
+ readonly name: "vault";
1426
+ readonly type: "address";
1427
+ }, {
1428
+ readonly name: "assets";
1429
+ readonly type: "uint256";
1430
+ }];
1431
+ readonly outputs: readonly [{
1432
+ readonly name: "shares";
1433
+ readonly type: "uint256";
1434
+ }];
1435
+ readonly stateMutability: "nonpayable";
1436
+ }, {
1437
+ readonly type: "function";
1438
+ readonly name: "erc4626Redeem";
1439
+ readonly inputs: readonly [{
1440
+ readonly name: "vault";
1441
+ readonly type: "address";
1442
+ }, {
1443
+ readonly name: "shares";
1444
+ readonly type: "uint256";
1445
+ }];
1446
+ readonly outputs: readonly [{
1447
+ readonly name: "assets";
1448
+ readonly type: "uint256";
1449
+ }];
1450
+ readonly stateMutability: "nonpayable";
1451
+ }];
1452
+ /**
1453
+ * Vault analysis ABIs — per-vault whitelist and registry reads.
1454
+ */
1455
+ declare const VAULT_ANALYSIS_ABI: readonly [{
1456
+ readonly type: "function";
1457
+ readonly name: "getAvailableAssets";
1458
+ readonly inputs: readonly [];
1459
+ readonly outputs: readonly [{
1460
+ readonly type: "address[]";
1461
+ }];
1462
+ readonly stateMutability: "view";
1463
+ }, {
1464
+ readonly type: "function";
1465
+ readonly name: "getDepositableAssets";
1466
+ readonly inputs: readonly [];
1467
+ readonly outputs: readonly [{
1468
+ readonly type: "address[]";
1469
+ }];
1470
+ readonly stateMutability: "view";
1471
+ }, {
1472
+ readonly type: "function";
1473
+ readonly name: "isAssetAvailable";
1474
+ readonly inputs: readonly [{
1475
+ readonly name: "asset";
1476
+ readonly type: "address";
1477
+ }];
1478
+ readonly outputs: readonly [{
1479
+ readonly type: "bool";
1480
+ }];
1481
+ readonly stateMutability: "view";
1482
+ }, {
1483
+ readonly type: "function";
1484
+ readonly name: "isAssetDepositable";
1485
+ readonly inputs: readonly [{
1486
+ readonly name: "asset";
1487
+ readonly type: "address";
1488
+ }];
1489
+ readonly outputs: readonly [{
1490
+ readonly type: "bool";
1491
+ }];
1492
+ readonly stateMutability: "view";
1493
+ }, {
1494
+ readonly type: "function";
1495
+ readonly name: "isDepositWhitelistEnabled";
1496
+ readonly inputs: readonly [];
1497
+ readonly outputs: readonly [{
1498
+ readonly type: "bool";
1499
+ }];
1500
+ readonly stateMutability: "view";
1501
+ }, {
1502
+ readonly type: "function";
1503
+ readonly name: "getAvailableToDeposit";
1504
+ readonly inputs: readonly [{
1505
+ readonly name: "depositor";
1506
+ readonly type: "address";
1507
+ }];
1508
+ readonly outputs: readonly [{
1509
+ readonly type: "uint256";
1510
+ }];
1511
+ readonly stateMutability: "view";
1512
+ }, {
1513
+ readonly type: "function";
1514
+ readonly name: "moreVaultsRegistry";
1515
+ readonly inputs: readonly [];
1516
+ readonly outputs: readonly [{
1517
+ readonly type: "address";
1518
+ }];
1519
+ readonly stateMutability: "view";
1520
+ }];
1521
+ /**
1522
+ * MoreVaultsRegistry ABI — global protocol and bridge whitelist checks.
1523
+ */
1524
+ declare const REGISTRY_ABI: readonly [{
1525
+ readonly type: "function";
1526
+ readonly name: "isWhitelisted";
1527
+ readonly inputs: readonly [{
1528
+ readonly name: "protocol";
1529
+ readonly type: "address";
1530
+ }];
1531
+ readonly outputs: readonly [{
1532
+ readonly type: "bool";
1533
+ }];
1534
+ readonly stateMutability: "view";
1535
+ }, {
1536
+ readonly type: "function";
1537
+ readonly name: "isBridgeAllowed";
1538
+ readonly inputs: readonly [{
1539
+ readonly name: "bridge";
1540
+ readonly type: "address";
1541
+ }];
1542
+ readonly outputs: readonly [{
1543
+ readonly type: "bool";
1544
+ }];
1545
+ readonly stateMutability: "view";
1546
+ }, {
1547
+ readonly type: "function";
1548
+ readonly name: "getAllowedFacets";
1549
+ readonly inputs: readonly [];
1550
+ readonly outputs: readonly [{
1551
+ readonly type: "address[]";
1552
+ }];
1553
+ readonly stateMutability: "view";
1554
+ }];
1418
1555
  /**
1419
1556
  * Minimal LZ Endpoint V2 ABI for compose queue management.
1420
1557
  * Used by the Stargate 2-TX flow to check compose status and execute pending composes.
@@ -1624,6 +1761,22 @@ interface CuratorVaultStatus {
1624
1761
  lzAdapter: Address;
1625
1762
  paused: boolean;
1626
1763
  }
1764
+ interface AssetInfo {
1765
+ address: Address;
1766
+ symbol: string;
1767
+ name: string;
1768
+ decimals: number;
1769
+ }
1770
+ interface VaultAnalysis {
1771
+ /** All tokens the vault can hold/swap (curator-managed) */
1772
+ availableAssets: AssetInfo[];
1773
+ /** Tokens users can deposit */
1774
+ depositableAssets: AssetInfo[];
1775
+ /** Whether deposit whitelist is enabled (restricts who can deposit) */
1776
+ depositWhitelistEnabled: boolean;
1777
+ /** Registry address for global protocol whitelist checks */
1778
+ registryAddress: Address | null;
1779
+ }
1627
1780
 
1628
1781
  /**
1629
1782
  * Typed error classes for the MoreVaults SDK.
@@ -2297,6 +2450,119 @@ declare function getPendingActions(publicClient: PublicClient, vault: Address, n
2297
2450
  * @returns true if address is the current curator
2298
2451
  */
2299
2452
  declare function isCurator(publicClient: PublicClient, vault: Address, address: Address): Promise<boolean>;
2453
+ /**
2454
+ * Full vault analysis — available assets with metadata, depositable assets, whitelist config.
2455
+ * Useful for curator dashboards to understand what the vault can do.
2456
+ *
2457
+ * @param publicClient Viem public client (must be on the vault's chain)
2458
+ * @param vault Vault address (diamond proxy)
2459
+ * @returns VaultAnalysis snapshot
2460
+ */
2461
+ declare function getVaultAnalysis(publicClient: PublicClient, vault: Address): Promise<VaultAnalysis>;
2462
+ /**
2463
+ * Check if specific protocol addresses are whitelisted in the global registry.
2464
+ * Useful for curators to verify DEX routers before building swap calldata.
2465
+ *
2466
+ * @param publicClient Viem public client (must be on the vault's chain)
2467
+ * @param vault Vault address (diamond proxy)
2468
+ * @param protocols Protocol addresses to check
2469
+ * @returns Record mapping address → whitelisted boolean
2470
+ */
2471
+ declare function checkProtocolWhitelist(publicClient: PublicClient, vault: Address, protocols: Address[]): Promise<Record<string, boolean>>;
2472
+
2473
+ /**
2474
+ * Curator MulticallFacet write operations for the MoreVaults SDK.
2475
+ *
2476
+ * Provides typed helpers to submit, execute, and veto curator action batches
2477
+ * on any MoreVaults diamond that has the MulticallFacet installed.
2478
+ *
2479
+ * All write functions use the simulate-then-write pattern:
2480
+ * 1. `publicClient.simulateContract` — validates on-chain, catches reverts early
2481
+ * 2. `walletClient.writeContract` — sends the actual transaction
2482
+ *
2483
+ * @module curatorMulticall
2484
+ */
2485
+
2486
+ /**
2487
+ * Encode a single typed CuratorAction into raw calldata bytes suitable for
2488
+ * passing into `submitActions(bytes[] actionsData)`.
2489
+ *
2490
+ * The encoded bytes are the full ABI-encoded function call (4-byte selector +
2491
+ * arguments) targeting the vault diamond itself — the MulticallFacet will
2492
+ * call `address(this).call(actionsData[i])` for each entry.
2493
+ *
2494
+ * @param action A discriminated-union CuratorAction describing what to do
2495
+ * @returns ABI-encoded calldata bytes (`0x`-prefixed hex string)
2496
+ */
2497
+ declare function encodeCuratorAction(action: CuratorAction): `0x${string}`;
2498
+ /**
2499
+ * Encode an array of CuratorActions into a calldata array ready for
2500
+ * `submitActions`.
2501
+ *
2502
+ * @param actions Array of typed CuratorAction objects
2503
+ * @returns Array of ABI-encoded calldata hex strings
2504
+ */
2505
+ declare function buildCuratorBatch(actions: CuratorAction[]): `0x${string}`[];
2506
+ /**
2507
+ * Submit a batch of curator actions to the vault's MulticallFacet.
2508
+ *
2509
+ * When `timeLockPeriod == 0` the contract immediately executes the actions
2510
+ * inside `submitActions` itself. When a timelock is configured the actions
2511
+ * are queued and must be executed later with `executeActions`.
2512
+ *
2513
+ * Uses the simulate-then-write pattern: simulation runs first so any on-chain
2514
+ * revert (wrong curator, bad selector, slippage limit, etc.) surfaces before
2515
+ * any gas is spent on a failing transaction.
2516
+ *
2517
+ * After the write succeeds, the function reads `getCurrentNonce` to determine
2518
+ * which nonce was assigned to this batch (nonce - 1 after the submit increments it).
2519
+ *
2520
+ * @param walletClient Wallet client with curator account attached
2521
+ * @param publicClient Public client for reads and simulation
2522
+ * @param vault Vault address (diamond proxy)
2523
+ * @param actions Array of raw calldata bytes — use `buildCuratorBatch` to build
2524
+ * @returns Transaction hash and the nonce assigned to this batch
2525
+ * @throws If the caller is not the curator, or any action selector is
2526
+ * not allowed, or any action would revert
2527
+ */
2528
+ declare function submitActions(walletClient: WalletClient, publicClient: PublicClient, vault: Address, actions: `0x${string}`[]): Promise<SubmitActionsResult>;
2529
+ /**
2530
+ * Execute pending actions after their timelock period has expired.
2531
+ *
2532
+ * Can only be called when `block.timestamp >= pendingUntil`. The contract
2533
+ * reverts with `ActionsStillPending` if the timelock has not expired.
2534
+ *
2535
+ * Caller must be the curator (or any address when timeLockPeriod == 0, since
2536
+ * in that case `submitActions` auto-executes and there is nothing to execute here).
2537
+ *
2538
+ * Uses simulate-then-write to surface on-chain reverts early.
2539
+ *
2540
+ * @param walletClient Wallet client with curator account attached
2541
+ * @param publicClient Public client for reads and simulation
2542
+ * @param vault Vault address (diamond proxy)
2543
+ * @param nonce The action batch nonce to execute
2544
+ * @returns Transaction hash
2545
+ */
2546
+ declare function executeActions(walletClient: WalletClient, publicClient: PublicClient, vault: Address, nonce: bigint): Promise<{
2547
+ txHash: `0x${string}`;
2548
+ }>;
2549
+ /**
2550
+ * Guardian-only: cancel (veto) one or more pending action batches.
2551
+ *
2552
+ * Deletes the pending actions from storage, preventing them from ever being
2553
+ * executed. Only the vault guardian can call this.
2554
+ *
2555
+ * Uses simulate-then-write to catch `NoSuchActions` and permission errors early.
2556
+ *
2557
+ * @param walletClient Wallet client with guardian account attached
2558
+ * @param publicClient Public client for reads and simulation
2559
+ * @param vault Vault address (diamond proxy)
2560
+ * @param nonces Array of action nonces to cancel
2561
+ * @returns Transaction hash
2562
+ */
2563
+ declare function vetoActions(walletClient: WalletClient, publicClient: PublicClient, vault: Address, nonces: bigint[]): Promise<{
2564
+ txHash: `0x${string}`;
2565
+ }>;
2300
2566
 
2301
2567
  /**
2302
2568
  * Cast a wagmi PublicClient to the SDK's expected type.
@@ -2312,4 +2578,4 @@ declare function isCurator(publicClient: PublicClient, vault: Address, address:
2312
2578
  */
2313
2579
  declare function asSdkClient(client: unknown): PublicClient;
2314
2580
 
2315
- export { ActionType, type ActionTypeValue, type AsyncRequestResult, BRIDGE_ABI, BRIDGE_FACET_ABI, type BatchSwapParams, type BridgeParams, CCManagerNotConfiguredError, CHAIN_IDS, CHAIN_ID_TO_EID, CONFIG_ABI, CURATOR_CONFIG_ABI, CapacityFullError, type ComposeData, type CrossChainRequestInfo, type CuratorAction, type CuratorVaultStatus, DEX_ABI, type DepositResult, EID_TO_CHAIN_ID, ERC20_ABI, ERC7540_FACET_ABI, EscrowNotConfiguredError, InsufficientLiquidityError, LZ_ADAPTER_ABI, LZ_EIDS, LZ_ENDPOINT_ABI, LZ_TIMEOUTS, METADATA_ABI, MULTICALL_ABI, MissingEscrowAddressError, MoreVaultsError, NotHubVaultError, NotWhitelistedError, OFT_ABI, OFT_ROUTES, type PendingAction, type RedeemResult, STARGATE_TAXI_CMD, type SpokeDepositResult, type SpokeRedeemRoute, type SubmitActionsResult, type SwapParams, USDC_STARGATE_OFT, USDC_TOKEN, VAULT_ABI, type VaultAddresses, VaultPausedError, WrongChainError, asSdkClient, bridgeAssetsToSpoke, bridgeSharesToHub, depositAsync, depositSimple as depositCrossChainOracleOn, depositFromSpoke, depositFromSpoke as depositFromSpokeAsync, depositMultiAsset, depositSimple, executeCompose, getCuratorVaultStatus, getPendingActions, getWithdrawalRequest, isCurator, mintAsync, preflightAsync, preflightRedeemLiquidity, preflightSpokeDeposit, preflightSpokeRedeem, preflightSync, quoteComposeFee, quoteDepositFromSpokeFee, quoteShareBridgeFee, redeemAsync, redeemShares, requestRedeem, resolveRedeemAddresses, smartDeposit, smartRedeem, waitForCompose, withdrawAssets };
2581
+ export { ActionType, type ActionTypeValue, type AssetInfo, type AsyncRequestResult, BRIDGE_ABI, BRIDGE_FACET_ABI, type BatchSwapParams, type BridgeParams, CCManagerNotConfiguredError, CHAIN_IDS, CHAIN_ID_TO_EID, CONFIG_ABI, CURATOR_CONFIG_ABI, CapacityFullError, type ComposeData, type CrossChainRequestInfo, type CuratorAction, type CuratorVaultStatus, DEX_ABI, type DepositResult, EID_TO_CHAIN_ID, ERC20_ABI, ERC4626_FACET_ABI, ERC7540_FACET_ABI, EscrowNotConfiguredError, InsufficientLiquidityError, LZ_ADAPTER_ABI, LZ_EIDS, LZ_ENDPOINT_ABI, LZ_TIMEOUTS, METADATA_ABI, MULTICALL_ABI, MissingEscrowAddressError, MoreVaultsError, NotHubVaultError, NotWhitelistedError, OFT_ABI, OFT_ROUTES, type PendingAction, REGISTRY_ABI, type RedeemResult, STARGATE_TAXI_CMD, type SpokeDepositResult, type SpokeRedeemRoute, type SubmitActionsResult, type SwapParams, USDC_STARGATE_OFT, USDC_TOKEN, VAULT_ABI, VAULT_ANALYSIS_ABI, type VaultAddresses, type VaultAnalysis, VaultPausedError, WrongChainError, asSdkClient, bridgeAssetsToSpoke, bridgeSharesToHub, buildCuratorBatch, checkProtocolWhitelist, depositAsync, depositSimple as depositCrossChainOracleOn, depositFromSpoke, depositFromSpoke as depositFromSpokeAsync, depositMultiAsset, depositSimple, encodeCuratorAction, executeActions, executeCompose, getCuratorVaultStatus, getPendingActions, getVaultAnalysis, getWithdrawalRequest, isCurator, mintAsync, preflightAsync, preflightRedeemLiquidity, preflightSpokeDeposit, preflightSpokeRedeem, preflightSync, quoteComposeFee, quoteDepositFromSpokeFee, quoteShareBridgeFee, redeemAsync, redeemShares, requestRedeem, resolveRedeemAddresses, smartDeposit, smartRedeem, submitActions, vetoActions, waitForCompose, withdrawAssets };
@@ -1,6 +1,6 @@
1
- import { Hash, Address, WalletClient, PublicClient } from 'viem';
1
+ import { Address, Hash, WalletClient, PublicClient } from 'viem';
2
2
  export { PublicClient as SdkPublicClient } from 'viem';
3
- export { A as AsyncRequestFinalResult, a as AsyncRequestStatus, b as AsyncRequestStatusInfo, D as DepositBlockReason, c as DepositEligibility, I as InboundRoute, d as InboundRouteWithBalance, M as MaxWithdrawable, e as MultiChainUserPosition, N as NATIVE_SYMBOL, O as OMNI_FACTORY_ADDRESS, f as OutboundRoute, S as SpokeBalance, U as UserBalances, g as UserPosition, V as VaultDistribution, h as VaultMetadata, i as VaultMode, j as VaultStatus, k as VaultSummary, l as VaultTopology, m as canDeposit, n as discoverVaultTopology, o as ensureAllowance, p as getAllVaultChainIds, q as getAsyncRequestStatus, r as getAsyncRequestStatusLabel, s as getFullVaultTopology, t as getInboundRoutes, u as getMaxWithdrawable, v as getOutboundRoutes, w as getUserBalances, x as getUserBalancesForRoutes, y as getUserPosition, z as getUserPositionMultiChain, B as getVaultDistribution, C as getVaultDistributionWithTopology, E as getVaultMetadata, F as getVaultStatus, G as getVaultSummary, H as getVaultTopology, J as isAsyncMode, K as isOnHubChain, L as previewDeposit, P as previewRedeem, Q as quoteLzFee, R as quoteRouteDepositFee, T as waitForAsyncRequest, W as waitForTx } from '../spokeRoutes-FgKCJQYa.js';
3
+ export { A as AsyncRequestFinalResult, a as AsyncRequestStatus, b as AsyncRequestStatusInfo, D as DepositBlockReason, c as DepositEligibility, I as InboundRoute, d as InboundRouteWithBalance, M as MaxWithdrawable, e as MultiChainUserPosition, N as NATIVE_SYMBOL, O as OMNI_FACTORY_ADDRESS, f as OutboundRoute, S as SpokeBalance, U as UserBalances, g as UserPosition, V as VaultDistribution, h as VaultMetadata, i as VaultMode, j as VaultStatus, k as VaultSummary, l as VaultTopology, m as canDeposit, n as discoverVaultTopology, o as ensureAllowance, p as getAllVaultChainIds, q as getAsyncRequestStatus, r as getAsyncRequestStatusLabel, s as getFullVaultTopology, t as getInboundRoutes, u as getMaxWithdrawable, v as getOutboundRoutes, w as getUserBalances, x as getUserBalancesForRoutes, y as getUserPosition, z as getUserPositionMultiChain, B as getVaultDistribution, C as getVaultDistributionWithTopology, E as getVaultMetadata, F as getVaultStatus, G as getVaultSummary, H as getVaultTopology, J as isAsyncMode, K as isOnHubChain, L as previewDeposit, P as previewRedeem, Q as quoteLzFee, R as quoteRouteDepositFee, T as waitForAsyncRequest, W as waitForTx } from '../spokeRoutes-DK7cIW4z.js';
4
4
 
5
5
  /** EVM Chain IDs for chains supported by MoreVaults */
6
6
  declare const CHAIN_IDS: {
@@ -1415,6 +1415,143 @@ declare const LZ_ADAPTER_ABI: readonly [{
1415
1415
  }];
1416
1416
  readonly stateMutability: "view";
1417
1417
  }];
1418
+ /**
1419
+ * ERC4626Facet ABI — synchronous deposit and redeem into whitelisted ERC-4626 vaults.
1420
+ */
1421
+ declare const ERC4626_FACET_ABI: readonly [{
1422
+ readonly type: "function";
1423
+ readonly name: "erc4626Deposit";
1424
+ readonly inputs: readonly [{
1425
+ readonly name: "vault";
1426
+ readonly type: "address";
1427
+ }, {
1428
+ readonly name: "assets";
1429
+ readonly type: "uint256";
1430
+ }];
1431
+ readonly outputs: readonly [{
1432
+ readonly name: "shares";
1433
+ readonly type: "uint256";
1434
+ }];
1435
+ readonly stateMutability: "nonpayable";
1436
+ }, {
1437
+ readonly type: "function";
1438
+ readonly name: "erc4626Redeem";
1439
+ readonly inputs: readonly [{
1440
+ readonly name: "vault";
1441
+ readonly type: "address";
1442
+ }, {
1443
+ readonly name: "shares";
1444
+ readonly type: "uint256";
1445
+ }];
1446
+ readonly outputs: readonly [{
1447
+ readonly name: "assets";
1448
+ readonly type: "uint256";
1449
+ }];
1450
+ readonly stateMutability: "nonpayable";
1451
+ }];
1452
+ /**
1453
+ * Vault analysis ABIs — per-vault whitelist and registry reads.
1454
+ */
1455
+ declare const VAULT_ANALYSIS_ABI: readonly [{
1456
+ readonly type: "function";
1457
+ readonly name: "getAvailableAssets";
1458
+ readonly inputs: readonly [];
1459
+ readonly outputs: readonly [{
1460
+ readonly type: "address[]";
1461
+ }];
1462
+ readonly stateMutability: "view";
1463
+ }, {
1464
+ readonly type: "function";
1465
+ readonly name: "getDepositableAssets";
1466
+ readonly inputs: readonly [];
1467
+ readonly outputs: readonly [{
1468
+ readonly type: "address[]";
1469
+ }];
1470
+ readonly stateMutability: "view";
1471
+ }, {
1472
+ readonly type: "function";
1473
+ readonly name: "isAssetAvailable";
1474
+ readonly inputs: readonly [{
1475
+ readonly name: "asset";
1476
+ readonly type: "address";
1477
+ }];
1478
+ readonly outputs: readonly [{
1479
+ readonly type: "bool";
1480
+ }];
1481
+ readonly stateMutability: "view";
1482
+ }, {
1483
+ readonly type: "function";
1484
+ readonly name: "isAssetDepositable";
1485
+ readonly inputs: readonly [{
1486
+ readonly name: "asset";
1487
+ readonly type: "address";
1488
+ }];
1489
+ readonly outputs: readonly [{
1490
+ readonly type: "bool";
1491
+ }];
1492
+ readonly stateMutability: "view";
1493
+ }, {
1494
+ readonly type: "function";
1495
+ readonly name: "isDepositWhitelistEnabled";
1496
+ readonly inputs: readonly [];
1497
+ readonly outputs: readonly [{
1498
+ readonly type: "bool";
1499
+ }];
1500
+ readonly stateMutability: "view";
1501
+ }, {
1502
+ readonly type: "function";
1503
+ readonly name: "getAvailableToDeposit";
1504
+ readonly inputs: readonly [{
1505
+ readonly name: "depositor";
1506
+ readonly type: "address";
1507
+ }];
1508
+ readonly outputs: readonly [{
1509
+ readonly type: "uint256";
1510
+ }];
1511
+ readonly stateMutability: "view";
1512
+ }, {
1513
+ readonly type: "function";
1514
+ readonly name: "moreVaultsRegistry";
1515
+ readonly inputs: readonly [];
1516
+ readonly outputs: readonly [{
1517
+ readonly type: "address";
1518
+ }];
1519
+ readonly stateMutability: "view";
1520
+ }];
1521
+ /**
1522
+ * MoreVaultsRegistry ABI — global protocol and bridge whitelist checks.
1523
+ */
1524
+ declare const REGISTRY_ABI: readonly [{
1525
+ readonly type: "function";
1526
+ readonly name: "isWhitelisted";
1527
+ readonly inputs: readonly [{
1528
+ readonly name: "protocol";
1529
+ readonly type: "address";
1530
+ }];
1531
+ readonly outputs: readonly [{
1532
+ readonly type: "bool";
1533
+ }];
1534
+ readonly stateMutability: "view";
1535
+ }, {
1536
+ readonly type: "function";
1537
+ readonly name: "isBridgeAllowed";
1538
+ readonly inputs: readonly [{
1539
+ readonly name: "bridge";
1540
+ readonly type: "address";
1541
+ }];
1542
+ readonly outputs: readonly [{
1543
+ readonly type: "bool";
1544
+ }];
1545
+ readonly stateMutability: "view";
1546
+ }, {
1547
+ readonly type: "function";
1548
+ readonly name: "getAllowedFacets";
1549
+ readonly inputs: readonly [];
1550
+ readonly outputs: readonly [{
1551
+ readonly type: "address[]";
1552
+ }];
1553
+ readonly stateMutability: "view";
1554
+ }];
1418
1555
  /**
1419
1556
  * Minimal LZ Endpoint V2 ABI for compose queue management.
1420
1557
  * Used by the Stargate 2-TX flow to check compose status and execute pending composes.
@@ -1624,6 +1761,22 @@ interface CuratorVaultStatus {
1624
1761
  lzAdapter: Address;
1625
1762
  paused: boolean;
1626
1763
  }
1764
+ interface AssetInfo {
1765
+ address: Address;
1766
+ symbol: string;
1767
+ name: string;
1768
+ decimals: number;
1769
+ }
1770
+ interface VaultAnalysis {
1771
+ /** All tokens the vault can hold/swap (curator-managed) */
1772
+ availableAssets: AssetInfo[];
1773
+ /** Tokens users can deposit */
1774
+ depositableAssets: AssetInfo[];
1775
+ /** Whether deposit whitelist is enabled (restricts who can deposit) */
1776
+ depositWhitelistEnabled: boolean;
1777
+ /** Registry address for global protocol whitelist checks */
1778
+ registryAddress: Address | null;
1779
+ }
1627
1780
 
1628
1781
  /**
1629
1782
  * Typed error classes for the MoreVaults SDK.
@@ -2297,6 +2450,119 @@ declare function getPendingActions(publicClient: PublicClient, vault: Address, n
2297
2450
  * @returns true if address is the current curator
2298
2451
  */
2299
2452
  declare function isCurator(publicClient: PublicClient, vault: Address, address: Address): Promise<boolean>;
2453
+ /**
2454
+ * Full vault analysis — available assets with metadata, depositable assets, whitelist config.
2455
+ * Useful for curator dashboards to understand what the vault can do.
2456
+ *
2457
+ * @param publicClient Viem public client (must be on the vault's chain)
2458
+ * @param vault Vault address (diamond proxy)
2459
+ * @returns VaultAnalysis snapshot
2460
+ */
2461
+ declare function getVaultAnalysis(publicClient: PublicClient, vault: Address): Promise<VaultAnalysis>;
2462
+ /**
2463
+ * Check if specific protocol addresses are whitelisted in the global registry.
2464
+ * Useful for curators to verify DEX routers before building swap calldata.
2465
+ *
2466
+ * @param publicClient Viem public client (must be on the vault's chain)
2467
+ * @param vault Vault address (diamond proxy)
2468
+ * @param protocols Protocol addresses to check
2469
+ * @returns Record mapping address → whitelisted boolean
2470
+ */
2471
+ declare function checkProtocolWhitelist(publicClient: PublicClient, vault: Address, protocols: Address[]): Promise<Record<string, boolean>>;
2472
+
2473
+ /**
2474
+ * Curator MulticallFacet write operations for the MoreVaults SDK.
2475
+ *
2476
+ * Provides typed helpers to submit, execute, and veto curator action batches
2477
+ * on any MoreVaults diamond that has the MulticallFacet installed.
2478
+ *
2479
+ * All write functions use the simulate-then-write pattern:
2480
+ * 1. `publicClient.simulateContract` — validates on-chain, catches reverts early
2481
+ * 2. `walletClient.writeContract` — sends the actual transaction
2482
+ *
2483
+ * @module curatorMulticall
2484
+ */
2485
+
2486
+ /**
2487
+ * Encode a single typed CuratorAction into raw calldata bytes suitable for
2488
+ * passing into `submitActions(bytes[] actionsData)`.
2489
+ *
2490
+ * The encoded bytes are the full ABI-encoded function call (4-byte selector +
2491
+ * arguments) targeting the vault diamond itself — the MulticallFacet will
2492
+ * call `address(this).call(actionsData[i])` for each entry.
2493
+ *
2494
+ * @param action A discriminated-union CuratorAction describing what to do
2495
+ * @returns ABI-encoded calldata bytes (`0x`-prefixed hex string)
2496
+ */
2497
+ declare function encodeCuratorAction(action: CuratorAction): `0x${string}`;
2498
+ /**
2499
+ * Encode an array of CuratorActions into a calldata array ready for
2500
+ * `submitActions`.
2501
+ *
2502
+ * @param actions Array of typed CuratorAction objects
2503
+ * @returns Array of ABI-encoded calldata hex strings
2504
+ */
2505
+ declare function buildCuratorBatch(actions: CuratorAction[]): `0x${string}`[];
2506
+ /**
2507
+ * Submit a batch of curator actions to the vault's MulticallFacet.
2508
+ *
2509
+ * When `timeLockPeriod == 0` the contract immediately executes the actions
2510
+ * inside `submitActions` itself. When a timelock is configured the actions
2511
+ * are queued and must be executed later with `executeActions`.
2512
+ *
2513
+ * Uses the simulate-then-write pattern: simulation runs first so any on-chain
2514
+ * revert (wrong curator, bad selector, slippage limit, etc.) surfaces before
2515
+ * any gas is spent on a failing transaction.
2516
+ *
2517
+ * After the write succeeds, the function reads `getCurrentNonce` to determine
2518
+ * which nonce was assigned to this batch (nonce - 1 after the submit increments it).
2519
+ *
2520
+ * @param walletClient Wallet client with curator account attached
2521
+ * @param publicClient Public client for reads and simulation
2522
+ * @param vault Vault address (diamond proxy)
2523
+ * @param actions Array of raw calldata bytes — use `buildCuratorBatch` to build
2524
+ * @returns Transaction hash and the nonce assigned to this batch
2525
+ * @throws If the caller is not the curator, or any action selector is
2526
+ * not allowed, or any action would revert
2527
+ */
2528
+ declare function submitActions(walletClient: WalletClient, publicClient: PublicClient, vault: Address, actions: `0x${string}`[]): Promise<SubmitActionsResult>;
2529
+ /**
2530
+ * Execute pending actions after their timelock period has expired.
2531
+ *
2532
+ * Can only be called when `block.timestamp >= pendingUntil`. The contract
2533
+ * reverts with `ActionsStillPending` if the timelock has not expired.
2534
+ *
2535
+ * Caller must be the curator (or any address when timeLockPeriod == 0, since
2536
+ * in that case `submitActions` auto-executes and there is nothing to execute here).
2537
+ *
2538
+ * Uses simulate-then-write to surface on-chain reverts early.
2539
+ *
2540
+ * @param walletClient Wallet client with curator account attached
2541
+ * @param publicClient Public client for reads and simulation
2542
+ * @param vault Vault address (diamond proxy)
2543
+ * @param nonce The action batch nonce to execute
2544
+ * @returns Transaction hash
2545
+ */
2546
+ declare function executeActions(walletClient: WalletClient, publicClient: PublicClient, vault: Address, nonce: bigint): Promise<{
2547
+ txHash: `0x${string}`;
2548
+ }>;
2549
+ /**
2550
+ * Guardian-only: cancel (veto) one or more pending action batches.
2551
+ *
2552
+ * Deletes the pending actions from storage, preventing them from ever being
2553
+ * executed. Only the vault guardian can call this.
2554
+ *
2555
+ * Uses simulate-then-write to catch `NoSuchActions` and permission errors early.
2556
+ *
2557
+ * @param walletClient Wallet client with guardian account attached
2558
+ * @param publicClient Public client for reads and simulation
2559
+ * @param vault Vault address (diamond proxy)
2560
+ * @param nonces Array of action nonces to cancel
2561
+ * @returns Transaction hash
2562
+ */
2563
+ declare function vetoActions(walletClient: WalletClient, publicClient: PublicClient, vault: Address, nonces: bigint[]): Promise<{
2564
+ txHash: `0x${string}`;
2565
+ }>;
2300
2566
 
2301
2567
  /**
2302
2568
  * Cast a wagmi PublicClient to the SDK's expected type.
@@ -2312,4 +2578,4 @@ declare function isCurator(publicClient: PublicClient, vault: Address, address:
2312
2578
  */
2313
2579
  declare function asSdkClient(client: unknown): PublicClient;
2314
2580
 
2315
- export { ActionType, type ActionTypeValue, type AsyncRequestResult, BRIDGE_ABI, BRIDGE_FACET_ABI, type BatchSwapParams, type BridgeParams, CCManagerNotConfiguredError, CHAIN_IDS, CHAIN_ID_TO_EID, CONFIG_ABI, CURATOR_CONFIG_ABI, CapacityFullError, type ComposeData, type CrossChainRequestInfo, type CuratorAction, type CuratorVaultStatus, DEX_ABI, type DepositResult, EID_TO_CHAIN_ID, ERC20_ABI, ERC7540_FACET_ABI, EscrowNotConfiguredError, InsufficientLiquidityError, LZ_ADAPTER_ABI, LZ_EIDS, LZ_ENDPOINT_ABI, LZ_TIMEOUTS, METADATA_ABI, MULTICALL_ABI, MissingEscrowAddressError, MoreVaultsError, NotHubVaultError, NotWhitelistedError, OFT_ABI, OFT_ROUTES, type PendingAction, type RedeemResult, STARGATE_TAXI_CMD, type SpokeDepositResult, type SpokeRedeemRoute, type SubmitActionsResult, type SwapParams, USDC_STARGATE_OFT, USDC_TOKEN, VAULT_ABI, type VaultAddresses, VaultPausedError, WrongChainError, asSdkClient, bridgeAssetsToSpoke, bridgeSharesToHub, depositAsync, depositSimple as depositCrossChainOracleOn, depositFromSpoke, depositFromSpoke as depositFromSpokeAsync, depositMultiAsset, depositSimple, executeCompose, getCuratorVaultStatus, getPendingActions, getWithdrawalRequest, isCurator, mintAsync, preflightAsync, preflightRedeemLiquidity, preflightSpokeDeposit, preflightSpokeRedeem, preflightSync, quoteComposeFee, quoteDepositFromSpokeFee, quoteShareBridgeFee, redeemAsync, redeemShares, requestRedeem, resolveRedeemAddresses, smartDeposit, smartRedeem, waitForCompose, withdrawAssets };
2581
+ export { ActionType, type ActionTypeValue, type AssetInfo, type AsyncRequestResult, BRIDGE_ABI, BRIDGE_FACET_ABI, type BatchSwapParams, type BridgeParams, CCManagerNotConfiguredError, CHAIN_IDS, CHAIN_ID_TO_EID, CONFIG_ABI, CURATOR_CONFIG_ABI, CapacityFullError, type ComposeData, type CrossChainRequestInfo, type CuratorAction, type CuratorVaultStatus, DEX_ABI, type DepositResult, EID_TO_CHAIN_ID, ERC20_ABI, ERC4626_FACET_ABI, ERC7540_FACET_ABI, EscrowNotConfiguredError, InsufficientLiquidityError, LZ_ADAPTER_ABI, LZ_EIDS, LZ_ENDPOINT_ABI, LZ_TIMEOUTS, METADATA_ABI, MULTICALL_ABI, MissingEscrowAddressError, MoreVaultsError, NotHubVaultError, NotWhitelistedError, OFT_ABI, OFT_ROUTES, type PendingAction, REGISTRY_ABI, type RedeemResult, STARGATE_TAXI_CMD, type SpokeDepositResult, type SpokeRedeemRoute, type SubmitActionsResult, type SwapParams, USDC_STARGATE_OFT, USDC_TOKEN, VAULT_ABI, VAULT_ANALYSIS_ABI, type VaultAddresses, type VaultAnalysis, VaultPausedError, WrongChainError, asSdkClient, bridgeAssetsToSpoke, bridgeSharesToHub, buildCuratorBatch, checkProtocolWhitelist, depositAsync, depositSimple as depositCrossChainOracleOn, depositFromSpoke, depositFromSpoke as depositFromSpokeAsync, depositMultiAsset, depositSimple, encodeCuratorAction, executeActions, executeCompose, getCuratorVaultStatus, getPendingActions, getVaultAnalysis, getWithdrawalRequest, isCurator, mintAsync, preflightAsync, preflightRedeemLiquidity, preflightSpokeDeposit, preflightSpokeRedeem, preflightSync, quoteComposeFee, quoteDepositFromSpokeFee, quoteShareBridgeFee, redeemAsync, redeemShares, requestRedeem, resolveRedeemAddresses, smartDeposit, smartRedeem, submitActions, vetoActions, waitForCompose, withdrawAssets };