Deposits
Inspect the quoted deposit shape before opening a wallet.
import {
isBtcPsbtDeposit,
isUtxoDeposit,
type PrivateQuote,
} from '@silentswap/sdk';
declare const quote: PrivateQuote;
if (isUtxoDeposit(quote.deposit)) {
console.log(quote.deposit.payinAddress, quote.deposit.expectedAmount);
} else if (isBtcPsbtDeposit(quote.deposit)) {
console.log(quote.deposit.psbt, quote.deposit.expectedSats);
} else {
switch (quote.deposit.txKind ?? 'evm') {
case 'svm':
console.log(quote.deposit.solanaTx);
break;
case 'ton':
console.log(quote.deposit.tonMessages);
break;
case 'tron':
console.log(quote.deposit.tronTransaction);
break;
default:
console.log(quote.deposit.to, quote.deposit.data);
}
}EVM deposits
After review, placeOrder checks allowance, simulates the deposit,
broadcasts it on deposit.chainId, and waits for the receipt. It rejects approval
calldata, empty calldata, and zero-address destinations before signing.
For native tokens no approval is needed. For ERC-20 inputs, show the approval and deposit as distinct wallet steps.
Native-wallet deposits
Supply narrow Solana, TON, TRON, or Bitcoin adapters beside the viem wallet. The SDK verifies the active address and payload before it invokes an adapter. It never discovers an injected wallet or chooses between brands.