Share & Asset Conversions
Functions for converting between shares and assets, and querying share balances and prices.
multiVaultConvertToSharesβ
Convert asset amount to expected shares.
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β
import { multiVaultConvertToShares } from '@0xintuition/protocol'
import { parseEther, formatEther } from 'viem'
const shares = await multiVaultConvertToShares(
{ address, publicClient },
{ args: [vaultId, 1, parseEther('1')] }
)
console.log('Shares for 1 ETH:', formatEther(shares))
multiVaultConvertToAssetsβ
Convert shares to expected assets.
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β
import { multiVaultConvertToAssets } from '@0xintuition/protocol'
const assets = await multiVaultConvertToAssets(
{ address, publicClient },
{ args: [vaultId, 1, parseEther('10')] }
)
console.log('Assets for 10 shares:', formatEther(assets))
multiVaultGetSharesβ
Get user's share balance in a vault.
Parametersβ
| Parameter | Type | Description | Required |
|---|---|---|---|
| config | ReadConfig | Contract address and publicClient | Yes |
| args | [Address, bytes32] | User address, vaultId | Yes |
Returnsβ
Promise<bigint> // User's shares
Exampleβ
import { multiVaultGetShares } from '@0xintuition/protocol'
const shares = await multiVaultGetShares(
{ address, publicClient },
{ args: [userAddress, vaultId] }
)
console.log('User shares:', formatEther(shares))
multiVaultCurrentSharePriceβ
Get current share price for a vault.
Parametersβ
| Parameter | Type | Description | Required |
|---|---|---|---|
| config | ReadConfig | Contract address and publicClient | Yes |
| args | [bytes32, bigint] | VaultId, curveId | Yes |
Returnsβ
Promise<bigint> // Current share price
Exampleβ
import { multiVaultCurrentSharePrice } from '@0xintuition/protocol'
const price = await multiVaultCurrentSharePrice(
{ address, publicClient },
{ args: [vaultId, 1] }
)
console.log('Share price:', formatEther(price))
Advanced Exampleβ
// Track price over time
const trackPrice = async () => {
const prices = []
for (let i = 0; i < 10; i++) {
const price = await multiVaultCurrentSharePrice(
{ address, publicClient },
{ args: [vaultId, 1] }
)
prices.push({
timestamp: Date.now(),
price: formatEther(price),
})
await new Promise(resolve => setTimeout(resolve, 60000)) // Wait 1 minute
}
return prices
}
multiVaultMaxRedeemβ
Get maximum redeemable shares for a user.
Parametersβ
| Parameter | Type | Description | Required |
|---|---|---|---|
| config | ReadConfig | Contract address and publicClient | Yes |
| args | [Address, bytes32] | User address, vaultId | Yes |
Returnsβ
Promise<bigint> // Maximum redeemable shares
Exampleβ
import { multiVaultMaxRedeem } from '@0xintuition/protocol'
const maxShares = await multiVaultMaxRedeem(
{ address, publicClient },
{ args: [userAddress, vaultId] }
)
console.log('Max redeemable:', formatEther(maxShares))
Use Case Exampleβ
// Redeem all shares from a vault
const maxShares = await multiVaultMaxRedeem(
{ address, publicClient },
{ args: [account.address, vaultId] }
)
const expectedAssets = await multiVaultPreviewRedeem(
{ address, publicClient },
{ args: [vaultId, 1, maxShares] }
)
const txHash = await multiVaultRedeem(
{ address, walletClient, publicClient },
{
args: [account.address, vaultId, 1, maxShares, 0n],
}
)