signTransactionWithSigners

function signTransactionWithSigners(
    signers,
    transaction,
    config?,
): Promise<
    FullySignedTransaction &
        TransactionWithinSizeLimit &
        Readonly<{
            messageBytes: TransactionMessageBytes;
            signatures: SignaturesMap;
        }> &
        TransactionWithLifetime
>;

Signs a transaction using the provided signers and asserts that all signatures required by the transaction are present.

This function delegates to partiallySignTransactionWithSigners to sign the transaction, then asserts it is fully signed before returning.

Parameters

ParameterTypeDescription
signersreadonly ( | Readonly<{ address: Address<string>; modifyAndSignTransactions: Promise<readonly Readonly<{ messageBytes: TransactionMessageBytes; signatures: SignaturesMap; }> & TransactionWithinSizeLimit & TransactionWithLifetime[]>; }> | Readonly<{ address: Address<string>; signTransactions: Promise<readonly Readonly<Record<Address, SignatureBytes>>[]>; }>)[]The signers to use. Only TransactionModifyingSigner and TransactionPartialSigner interfaces are accepted.
transactionTransactionThe compiled transaction to sign.
config?BaseTransactionSignerConfigOptional configuration including an AbortSignal.

Returns

Promise<FullySignedTransaction & TransactionWithinSizeLimit & Readonly<{ messageBytes: TransactionMessageBytes; signatures: SignaturesMap; }> & TransactionWithLifetime>

The fully signed transaction.

Example

const mySignedTransaction = await signTransactionWithSigners(mySigners, compiledTransaction);
 
// With additional config.
const mySignedTransaction = await signTransactionWithSigners(mySigners, compiledTransaction, {
    abortSignal: myAbortController.signal,
});
 
// We now know the transaction is fully signed.
mySignedTransaction satisfies FullySignedTransaction;

See

On this page