Skip to main content
The unified deposit API simplifies deposits by automatically detecting the optimal authorization method. Use prepareDepositAuthorization() to determine the method, then prepareDeposit() to execute.
Breaking change in v0.5.0: All transaction functions identify accounts by vaultName: string instead of yieldType. Use getVaultsByConfig() or findVaultByConfig() to discover account names first. See the migration guide.

Import

prepareDepositAuthorization()

Determines the optimal authorization method for a deposit operation.

Function Signature

Parameters

ParameterTypeRequiredDescription
vaultNamestringYesAccount name from AmplifyVault.name (e.g. from getVaultsByConfig())
depositAssetAddressYesToken contract address to deposit
depositAmountstringYesAmount as decimal string (e.g., “100.25”)
toAddressYesRecipient address for account shares
chainIdnumberYesBlockchain network ID
deadlinebigintNoPermit deadline (defaults to 1 hour)
forceMethod"permit" | "approval"NoOverride automatic detection

Return Type (Discriminated Union)

Decision Logic

The function follows this priority order:
  1. Check forceMethod — If specified, use that method directly
  2. Detect smart wallet — If the address has deployed bytecode (Safe, EIP-4337, EIP-7702), route to APPROVAL so callers can batch approve + deposit atomically
  3. Check permit support — If the token supports EIP-2612, return permit signature data
  4. Check existing allowance — If sufficient, return ALREADY_APPROVED
  5. Default to approval — Return approval transaction data

Token Permit Support

The following table shows which supported tokens use the gas-efficient EIP-2612 permit path versus the standard ERC-20 approval path. The SDK detects this automatically — use forceMethod: "approval" to override when needed (e.g., smart contract wallets).
TokenAuthorization MethodNotes
USDCPermit (EIP-2612)Single-transaction gasless signature
USDGPermit (EIP-2612)Single-transaction gasless signature
pyUSDPermit (EIP-2612)Single-transaction gasless signature
USD₮0Permit (EIP-2612)Single-transaction gasless signature
USDTApproval (ERC-20)Requires separate approval transaction. Also requires resetting allowance to 0 before setting a new value when a non-zero allowance already exists.

prepareDeposit()

Prepares transaction data for a deposit, automatically using the correct method based on provided parameters.

Function Signature

Parameters

Return Type

Returns a discriminated union based on which deposit method is used:
Both result variants have the same flat txData shape — txData.abi, txData.address, txData.functionName, txData.args, txData.chainId. You can spread txData directly into viem’s writeContract regardless of method.

Complete Flow Example

Force Specific Method

Override automatic detection when needed:

Slippage Configuration

Error Handling

Error Message PatternDescriptionResolution
"SDK not initialized"SDK used before initCall initAmplifySDK() first
"Vault not found"No account matches vaultNameVerify account name via getVaultsByConfig()
"does not support EIP-2612 permit"Token doesn’t support permitsUse approval flow instead
"requires both signature and deadline"Missing permit paramsProvide signature and deadline for permit deposits