Skip to main content

signTransaction

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