Skip to content

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.