Skip to main content
Reads the minimum withdrawal order size from the on-chain WithdrawQueue contract. Use this to validate user input before submitting a withdrawal order.

Import

import { getMinimumWithdrawalOrderSize } from '@paxoslabs/amplify-sdk'

Usage

import {
  getMinimumWithdrawalOrderSize,
  getVaultsByConfig,
  YieldType,
} from '@paxoslabs/amplify-sdk'

const [vault] = await getVaultsByConfig({ yieldType: YieldType.CORE, chainId: 1 })

const result = await getMinimumWithdrawalOrderSize({
  vaultName: vault.name,
  chainId: 1,
  assetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
})

console.log(result.minimumOrderSize) // bigint
console.log(result.shareDecimals) // number

Parameters

ParameterTypeRequiredDescription
vaultNamestringYesVault name from getVaultsByConfig()
chainIdChainIdYesBlockchain network ID
assetAddressAddressYesAsset address for vault lookup
interface GetMinimumWithdrawalOrderSizeParams {
  vaultName: string
  chainId: ChainId
  assetAddress: Address
}

Return Type

interface MinimumWithdrawalOrderSizeResult {
  /** Minimum order size in vault share units */
  minimumOrderSize: bigint
  /** Vault share token decimals */
  shareDecimals: number
}

Example: Input Validation

import {
  getMinimumWithdrawalOrderSize,
  getVaultsByConfig,
  YieldType,
} from '@paxoslabs/amplify-sdk'
import { parseUnits, formatUnits } from 'viem'

const [vault] = await getVaultsByConfig({ yieldType: YieldType.CORE, chainId: 1 })

const result = await getMinimumWithdrawalOrderSize({
  vaultName: vault.name,
  chainId: 1,
  assetAddress: usdcAddress,
})

const userAmount = parseUnits(userInput, result.shareDecimals)

if (userAmount < result.minimumOrderSize) {
  const min = formatUnits(result.minimumOrderSize, result.shareDecimals)
  console.error(`Minimum withdrawal is ${min} shares`)
}

Error Handling

Error Message PatternDescriptionResolution
"No vault found"No vault matches parametersVerify yieldType, asset, chainId
"SDK not initialized"SDK not initializedCall initAmplifySDK() first