Cancel a proposal that is stale, or of approved status
Cancelling a proposal will invalidate it. This requires that the member conducting the action have Voter permissions, the proposal is of Approved status, or the proposal is stale (Proposal transactionIndex < Multisig staleTransactionIndex).
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;constix=awaitmultisig.instructions.proposalCancel({ multisigPda, transactionIndex,// Member must have "Voter" permissions member: member, });}
Notes
Cancelling members must have "Voter" permissions
A Proposal can be cancelled if stale. The transaction index must be less than the stale transaction index (see Multisig reference)