Documentation Index
Fetch the complete documentation index at: https://developers.paxoslabs.com/llms.txt
Use this file to discover all available pages before exploring further.
Prepares the transaction data for executing a deposit after the user has approved token spending. Use this for the approval flow or when allowance is already sufficient.
Import
import { prepareDepositTxData } from '@paxoslabs/amplify-sdk'
Usage
// First discover the vault
const [vault] = await getVaultsByConfig({
yieldType: YieldType.CORE,
chainId: 1,
depositAssetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
})
const txData = await prepareDepositTxData({
vaultName: vault.name,
depositAsset: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
depositAmount: '1000',
to: '0x...',
chainId: 1,
})
Parameters
| Parameter | Type | Required | Description |
|---|
vaultName | string | Yes | Vault name from AmplifyVault.name (e.g. from getVaultsByConfig()) |
depositAsset | Address | Yes | Token contract address to deposit |
depositAmount | string | Yes | Amount to deposit as decimal string (e.g., "100.50") |
to | Address | Yes | Recipient address for vault shares |
chainId | number | Yes | Blockchain network ID |
slippage | number | No | Slippage tolerance in basis points (default: 50 = 0.5%) |
distributorCode | string | No | Distributor code for fee attribution |
interface PrepareDepositTxDataParams {
/** Vault name (from AmplifyVault.name) */
vaultName: string
/** Token contract address to deposit */
depositAsset: Address
/** Amount to deposit as decimal string (e.g., "100.25") */
depositAmount: string
/** Recipient address for vault shares */
to: Address
/** Blockchain network ID */
chainId: number
/** Slippage in basis points (default: 50 = 0.5%) */
slippage?: number
/** Distributor code for fee attribution */
distributorCode?: string
}
Return Type
Type Definition
Example Response
interface DepositTxData {
/** Contract ABI for the deposit function */
abi: Abi;
/** Depositor contract address */
address: Address;
/** Function name to call */
functionName: string;
/** Encoded function arguments */
args: unknown[];
/** Chain ID for the transaction */
chainId: number;
}
{
abi: [...], // DistributorCodeDepositor ABI
address: "0x1234...5678",
functionName: "deposit",
args: [
"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // depositAsset
1000000000n, // depositAmount (in base units)
995000000n, // minimumMint (with slippage applied)
"0xUser...Addr", // to (recipient)
"0x", // distributorCode (hex-encoded)
],
chainId: 1,
}
Examples
import { encodeFunctionData } from "viem";
import { usePrivy } from "@privy-io/react-auth";
import {
getVaultsByConfig,
prepareDepositTxData,
YieldType,
} from "@paxoslabs/amplify-sdk";
const { sendTransaction } = usePrivy();
const USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
// Discover vault
const [vault] = await getVaultsByConfig({
yieldType: YieldType.CORE,
chainId: 1,
depositAssetAddress: USDC,
});
// After approval is confirmed...
const txData = await prepareDepositTxData({
vaultName: vault.name,
depositAsset: USDC,
depositAmount: "1000",
to: userAddress,
chainId: 1,
});
await sendTransaction({
chainId: txData.chainId,
to: txData.address,
data: encodeFunctionData({
abi: txData.abi,
functionName: txData.functionName,
args: txData.args,
}),
});
import { useWriteContract } from "wagmi";
import {
getVaultsByConfig,
prepareDepositTxData,
YieldType,
} from "@paxoslabs/amplify-sdk";
const { writeContractAsync } = useWriteContract();
const USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
// Discover vault
const [vault] = await getVaultsByConfig({
yieldType: YieldType.CORE,
chainId: chainId,
depositAssetAddress: USDC,
});
// After approval is confirmed...
const txData = await prepareDepositTxData({
vaultName: vault.name,
depositAsset: USDC,
depositAmount: "1000",
to: address,
chainId: chainId,
});
await writeContractAsync({
...txData,
account: address,
});
import { createWalletClient, custom } from "viem";
import { mainnet } from "viem/chains";
import {
getVaultsByConfig,
prepareDepositTxData,
YieldType,
} from "@paxoslabs/amplify-sdk";
const client = createWalletClient({
account,
chain: mainnet,
transport: custom(window.ethereum),
});
const USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
const [vault] = await getVaultsByConfig({
yieldType: YieldType.CORE,
chainId: mainnet.id,
depositAssetAddress: USDC,
});
const txData = await prepareDepositTxData({
vaultName: vault.name,
depositAsset: USDC,
depositAmount: "1000",
to: account,
chainId: mainnet.id,
});
await client.writeContract({
...txData,
account,
});
Slippage Configuration
The default slippage is 50 basis points (0.5%). Adjust for volatile conditions:
// 1% slippage for higher tolerance
const txData = await prepareDepositTxData({
...params,
slippage: 100,
})
// 0.1% slippage for tighter tolerance
const txData = await prepareDepositTxData({
...params,
slippage: 10,
})
Error Handling
| Error Message Pattern | Description | Resolution |
|---|
"SDK not initialized" | SDK not initialized | Call initAmplifySDK() first |
"Vault not found" | No vault matches vaultName | Verify vault name via getVaultsByConfig() |
"Asset metadata not found" | Token not in asset cache | Verify token is supported via getSupportedAssets() |