Skip to main content
The Amplify SDK provides functions for initializing the SDK, discovering vaults, and preparing transactions for deposits and withdrawals.
Breaking change in v0.5.0: All transaction functions now identify vaults by vaultName instead of yieldType. Use getVaultsByConfig() to discover vault names first. See the migration guide.

Initialization

initAmplifySDK

Initialize the SDK with your API key before using any other functions.

getSupportedAssets

Fetch supported tokens and vault configurations for a yield type.

Vault Discovery

getVaultsByConfig

Discover vaults by yield type, chain, and asset. Returns vault.name for use in transaction functions.

findVaultByConfig

Find a single vault by asset address, yield type, and chain.

Deposits

Deposit Workflow

The unified deposit API with prepareDepositAuthorization and prepareDeposit.

prepareDepositTxData

Prepare transaction data for a standard deposit after approval.

prepareDepositWithPermitTxData

Prepare transaction data for a permit-based deposit (single transaction).

prepareDepositPermitSignature

Build EIP-712 typed data for signing a permit deposit directly.

Withdrawals

prepareWithdrawalAuthorization

Check approval requirements and prepare withdrawal authorization.

prepareWithdrawal

Prepare transaction data through the unified withdrawal wrapper.

prepareWithdrawOrderTxData

Build low-level WithdrawQueue order transaction data.

prepareApproveWithdrawOrderTxData

Build low-level approval transaction data for vault shares.

Display Helpers

Display Helpers

UI helper functions for showing vault APY, TVL, fees, share calculations, and withdrawal history.

Function Quick Reference

FunctionDescription
initAmplifySDKInitialize SDK with API key and options
waitForCacheReadyWait for the vault cache to be populated
isCacheReadyCheck if the vault cache is ready
getVaultsFetch vaults with optional filters
getSupportedAssetsGet supported tokens for a yield type
getVaultsByConfigDiscover vaults by yield type, chain, and asset
findVaultByConfigFind a single vault by asset + yield type + chain
getWithdrawSupportedAssetsGet all assets grouped by available vaults
prepareDepositAuthorizationDetermine optimal authorization method
prepareDepositPrepare deposit with auto-detected method
prepareDepositTxDataPrepare standard deposit transaction
prepareDepositWithPermitTxDataPrepare permit-based deposit transaction
prepareDepositPermitSignatureBuild EIP-712 permit typed data for signing
prepareWithdrawalAuthorizationDetermine if withdrawal approval is required
prepareWithdrawalPrepare withdrawal execution transaction
prepareWithdrawOrderTxDataPrepare low-level WithdrawQueue submission
prepareApproveWithdrawOrderTxDataPrepare low-level withdraw approval transaction
prepareCancelWithdrawOrderTxDataPrepare withdrawal order cancellation
getMinimumMintCalculate expected vault shares for a deposit
getVaultAPYFetch latest vault APY
getVaultTVLFetch vault total value locked
getWithdrawalFeeCalculate withdrawal fees
getWithdrawalRequestsFetch user’s withdrawal requests
getMinimumWithdrawalOrderSizeGet minimum withdrawal order size

Type Guards

The SDK exports type guards for handling discriminated union results:
import {
  prepareDepositAuthorization,
  prepareWithdrawalAuthorization,
  isPermitAuth,
  isApprovalAuth,
  isAlreadyApprovedAuth,
  isWithdrawApprovalAuth,
  isWithdrawAlreadyApprovedAuth,
} from '@paxoslabs/amplify-sdk'

const auth = await prepareDepositAuthorization(params)

if (isPermitAuth(auth)) {
  // auth.permitData is available
} else if (isApprovalAuth(auth)) {
  // auth.txData is available
} else if (isAlreadyApprovedAuth(auth)) {
  // auth.allowance is available
}

const withdrawAuth = await prepareWithdrawalAuthorization(params)
if (isWithdrawApprovalAuth(withdrawAuth)) {
  // withdrawAuth.txData is available
} else if (isWithdrawAlreadyApprovedAuth(withdrawAuth)) {
  // withdrawAuth.allowance is available
}
See DepositAuthMethod for full type documentation.

Vault Discovery Pattern

Starting in v0.5.0, transaction functions require a vaultName instead of yieldType. The recommended pattern is:
import {
  getVaultsByConfig,
  prepareDepositAuthorization,
  YieldType,
} from '@paxoslabs/amplify-sdk'

// Step 1: Discover the vault
const [vault] = await getVaultsByConfig({
  yieldType: YieldType.CORE,
  chainId: 1,
  depositAssetAddress: USDC_ADDRESS,
})

// Step 2: Use vault.name in all transaction calls
const auth = await prepareDepositAuthorization({
  vaultName: vault.name,
  depositAsset: USDC_ADDRESS,
  depositAmount: '1000',
  to: userAddress,
  chainId: 1,
})