Token Trading
Trading Process
1. Get Quotes
Jupiter Quote
const quoteParams = {
inputMint: isBuy
? "So11111111111111111111111111111111111111112"
: tokenAddress,
outputMint: isBuy
? tokenAddress
: "So11111111111111111111111111111111111111112",
amount: amountInLamports,
slippageBps: 500, // 5% slippage
};Meteora Quote
const client = new DynamicBondingCurveClient(connection);
const quote = await client.pool.swapQuote({
virtualPool: poolState,
config: configState,
swapBaseForQuote: !isBuy,
amountIn: new BN(amount),
slippageBps: 500,
});2. Execute Trade
Buy Tokens
Parameters:
Sell Tokens
Parameters:
Routing Logic
Internal Trading (Meteora DLMM)
Token not graduated (status !== "graduated")
Not migrated to Meteora (no migrateAmmId)
Uses Dynamic Bonding Curve
External Trading (Jupiter)
Token graduated (status === "graduated")
Migrated to Meteora (has migrateAmmId)
Aggregates optimal prices from multiple DEXs
Balance Queries
SOL Balance
Function: Query user SOL balance
Token Balance
Function: Query user specific token balance
Transaction Status
Transaction Confirmation
Error Handling
Insufficient Balance: Check SOL and token balances
Excessive Slippage: Adjust slippage settings or get new quotes
Network Congestion: Increase priority fees
Pool Does Not Exist: Confirm token address is correct
Key Points
Automatically detects trading path (internal/external)
Supports custom slippage settings
Real-time balance queries
Transaction status monitoring
Error retry mechanism
Last updated