Vault Operations
Functions for depositing to and redeeming from vaults.
multiVaultDepositβ
Deposit assets into a vault to receive shares.
Parametersβ
| Parameter | Type | Description | Required |
|---|---|---|---|
| config | WriteConfig | Contract address, publicClient, walletClient | Yes |
| args | [Address, bytes32, bigint, bigint] | Receiver, vaultId, curveId, minShares | Yes |
| value | bigint | Deposit amount in wei | Yes |
Exampleβ
import { multiVaultDeposit } from '@0xintuition/protocol'
import { parseEther } from 'viem'
const txHash = await multiVaultDeposit(
{ address, walletClient, publicClient },
{
args: [account.address, vaultId, 1, 0n],
value: parseEther('1'),
}
)
multiVaultDepositBatchβ
Deposit to multiple vaults in a single transaction.
Parametersβ
| Parameter | Type | Description | Required |
|---|---|---|---|
| config | WriteConfig | Contract address, publicClient, walletClient | Yes |
| args | [Address, bytes32[], bigint[], bigint[], bigint[]] | Receiver, vaultIds, curveIds, assets, minShares | Yes |
| value | bigint | Total deposit amount | Yes |
Exampleβ
const txHash = await multiVaultDepositBatch(
{ address, walletClient, publicClient },
{
args: [
account.address,
[vault1, vault2, vault3],
[1, 1, 2],
[parseEther('1'), parseEther('0.5'), parseEther('0.25')],
[0n, 0n, 0n],
],
value: parseEther('1.75'),
}
)
multiVaultRedeemβ
Redeem shares from a vault to receive assets.
Parametersβ
| Parameter | Type | Description | Required |
|---|---|---|---|
| config | WriteConfig | Contract address, publicClient, walletClient | Yes |
| args | [Address, bytes32, bigint, bigint, bigint] | Receiver, vaultId, curveId, shares, minAssets | Yes |
Exampleβ
const txHash = await multiVaultRedeem(
{ address, walletClient, publicClient },
{
args: [account.address, vaultId, 1, parseEther('10'), 0n],
}
)
multiVaultRedeemBatchβ
Redeem shares from multiple vaults in a single transaction.
Parametersβ
| Parameter | Type | Description | Required |
|---|---|---|---|
| config | WriteConfig | Contract address, publicClient, walletClient | Yes |
| args | [bigint[], Address, bytes32[], bigint[], bigint[]] | Shares, receiver, vaultIds, curveIds, minAssets | Yes |
Exampleβ
const txHash = await multiVaultRedeemBatch(
{ address, walletClient, publicClient },
{
args: [
[parseEther('5'), parseEther('3')],
account.address,
[vault1, vault2],
[1, 2],
[0n, 0n],
],
}
)
multiVaultPreviewDepositβ
Preview deposit results before executing.
Parametersβ
| Parameter | Type | Description | Required |
|---|---|---|---|
| config | ReadConfig | Contract address and publicClient | Yes |
| args | [bytes32, bigint, bigint] | VaultId, curveId, assets | Yes |
Returnsβ
Promise<bigint> // Expected shares
Exampleβ
const expectedShares = await multiVaultPreviewDeposit(
{ address, publicClient },
{ args: [vaultId, 1, parseEther('1')] }
)
const minShares = (expectedShares * 99n) / 100n // 1% slippage
multiVaultPreviewRedeemβ
Preview redemption results before executing.
Parametersβ
| Parameter | Type | Description | Required |
|---|---|---|---|
| config | ReadConfig | Contract address and publicClient | Yes |
| args | [bytes32, bigint, bigint] | VaultId, curveId, shares | Yes |
Returnsβ
Promise<bigint> // Expected assets
Exampleβ
const expectedAssets = await multiVaultPreviewRedeem(
{ address, publicClient },
{ args: [vaultId, 1, parseEther('10')] }
)
const minAssets = (expectedAssets * 99n) / 100n // 1% slippage
multiVaultDepositEncodeβ
Encode deposit call data.
Exampleβ
import { multiVaultDepositEncode } from '@0xintuition/protocol'
const data = multiVaultDepositEncode(receiver, vaultId, curveId, minShares)
multiVaultRedeemEncodeβ
Encode redeem call data.
Exampleβ
import { multiVaultRedeemEncode } from '@0xintuition/protocol'
const data = multiVaultRedeemEncode(receiver, vaultId, curveId, shares, minAssets)
multiVaultDepositBatchEncodeβ
Encode batch deposit call data.
Exampleβ
import { multiVaultDepositBatchEncode } from '@0xintuition/protocol'
const data = multiVaultDepositBatchEncode(
receiver,
[vault1, vault2],
[curve1, curve2],
[assets1, assets2],
[minShares1, minShares2]
)
multiVaultRedeemBatchEncodeβ
Encode batch redeem call data.
Exampleβ
import { multiVaultRedeemBatchEncode } from '@0xintuition/protocol'
const data = multiVaultRedeemBatchEncode(
receiver,
[vault1, vault2],
[curve1, curve2],
[shares1, shares2],
[minAssets1, minAssets2]
)