Skip to main content
Signs a Sui transaction without executing it. This is useful when you need to collect signatures before execution, or when working with sponsored transactions.

Usage

import { signTransaction, isSuiWalletAccount, getSuiClient } from '@dynamic-labs-sdk/sui';
import { getPrimaryWalletAccount } from '@dynamic-labs-sdk/client';
import { Transaction } from '@mysten/sui/transactions';

const walletAccount = getPrimaryWalletAccount();

if (walletAccount && isSuiWalletAccount(walletAccount)) {
  const suiClient = await getSuiClient({ walletAccount });

  // Build a transaction
  const tx = new Transaction();
  tx.transferObjects(
    [tx.object('0x...')],
    tx.pure.address(recipientAddress)
  );

  // Sign the transaction
  const result = await signTransaction({
    transaction: tx,
    walletAccount,
  });

  console.log('Signature:', result.signature);
  console.log('Transaction bytes:', result.bytes);
}

Parameters

ParameterTypeDescription
transactionTransactionThe Sui transaction to sign (from @mysten/sui/transactions)
walletAccountSuiWalletAccountThe wallet account to sign the transaction with
clientDynamicClient (optional)The Dynamic client instance. Only required when using multiple clients.

Returns

Promise<SuiSignTransactionResult> - A promise that resolves to an object containing:
  • signature - The transaction signature
  • bytes - The signed transaction bytes

Errors

ErrorDescription
NotSuiProviderErrorThrown if the wallet account’s provider is not a Sui provider