When adding to a batch, a few things need to be kept in mind:
When a new transaction is added, a vault transaction will be initialized with this method, and the batch's local index will be incremented
The batchIndex field refers to the global index of the batch account (like any other transaction), while transactionIndex refers to the batch's inner index for the transaction being initialized (will start at 1 for the first transaction)
Example
import*as multisig from"@sqds/multisig";import { Connection, PublicKey } from"@solana/web3.js"asyncfunctionmain(member:PublicKey) {// Cluster Connectionconstconnection=newConnection("<your rpc url>");// If you've saved your createKey, you can define it as a static PublicKeyconstcreateKey=newPublicKey("<your createkey>")// Derive the multisig PDAconst [multisigPda] =multisig.getMultisigPda({ createKey, });// or// const multisigPda = new PublicKey("<your multisig key>");// Get deserialized multisig account infoconstmultisigInfo=awaitmultisig.accounts.Multisig.fromAccountAddress( connection, multisigPda );// Get the current transaction indexconsttransactionIndex=Number(multisigInfo.transactionIndex);// or, if this is tied to your first transaction// const transactionIndex = 1n;constinstruction=SystemProgram.transfer({ fromPubkey: vaultPda, toPubkey:creator.publicKey, lamports:1, });// This message contains the instructions that the transaction is going to executeconsttransferMessage=newTransactionMessage({ payerKey: vaultPda, recentBlockhash: (awaitconnection.getLatestBlockhash()).blockhash, instructions: [instruction], });// Add transaction to the batchconstbatchAddIx=awaitmultisig.instructions.batchAddTransaction({// Index of the batch globally, like any other transaction batchIndex:BigInt(newTransactionIndex), multisigPda, vaultIndex:0, transactionMessage: transferMessage,// Index of the transaction inside of the batch! Not globally. Starts at 1 transactionIndex:1, ephemeralSigners:0, member: creator, });}
Notes
A Vault Transaction is initialized when you add to a batch
batchIndex field refers to a global index, while transactionIndex refers to the batch's inner index