Skip to content
LogoLogo

multisig.approveTransactionSync

Prepares a multisig transaction, signs one owner approval, and stores the approval. Below quorum, the action returns a pending operation immediately. When the approval reaches quorum, the action waits for synchronous submission and returns a successful operation.

Usage

import { Account } from 'viem/tempo'
import { client } from './multisig.config'
 
const owner_1 = Account.fromSecp256k1(
  '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'
)
const owner_2 = Account.fromSecp256k1(
  '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d'
)
const multisig = Account.fromMultisig({
  owners: [owner_1.address, owner_2.address],
  threshold: 2,
})
 
const pending = await client.multisig.approveTransactionSync({
  account: owner_1,
  calls: [
    { to: '0xcafebabecafebabecafebabecafebabecafebabe', value: 1n },
  ],
  multisig,
})
{ status: 'pending', id: '0x...', weight: 1, threshold: 2, request: { ... } }
 
const success = await client.multisig.approveTransactionSync({
  ...pending.request,
  account: owner_2,
})
{ status: 'success', transactionHash: '0x...', weight: 2, threshold: 2, request: { ... } }

The synchronous behavior applies only when this approval reaches quorum and broadcasts the final transaction. Both approval actions return the same pending operation below quorum.

Return Type

type ReturnType = Multisig.Operation.Transaction & {
  request: MultisigTransactionRequest
}

Parameters

Accepts the same parameters as multisig.approveTransaction.

See Also