Skip to main content

createWrapperUpdatePolicyInstruction

Updates an existing Squads policy on the vault via self-CPI using the vault’s signer seeds. This instruction enforces that the vault has zero AUM (empty vault only), ensuring policy changes cannot be made while depositor funds are active. The manager must sign to authorize the update.

Usage

import { createWrapperUpdatePolicyInstruction } from "@exponent-labs/exponent-sdk/client/vaults";
import { PublicKey, SystemProgram } from "@solana/web3.js";

const ix = createWrapperUpdatePolicyInstruction(
  {
    payer: payerKeypair.publicKey,
    vault: vaultAddress,
    manager: managerKeypair.publicKey,
    squadsSettings: squadsSettingsAddress,
    squadsSettingsTransaction: squadsSettingsTransactionPda,
    squadsProposal: squadsProposalPda,
    squadsPolicy: squadsPolicyPda,
    squadsProgram: SQUADS_PROGRAM_ID,
    systemProgram: SystemProgram.programId,
  },
  {
    policyConfig: {
      threshold: 2,
      permissions: { execute: {} },
      members: [managerKeypair.publicKey, sentinelKeypair.publicKey],
    },
  }
);

Accounts

NameSignerWritableDescription
payerYesYesFee payer for the transaction
vaultNoNoVault account (must have zero AUM)
managerYesNoVault manager authorizing the update
squadsSettingsNoYesSquads multisig settings account
squadsSettingsTransactionNoYesSquads settings transaction account
squadsProposalNoYesSquads proposal account
squadsPolicyNoYesSquads policy account to update
squadsProgramNoNoSquads program
systemProgramNoNoSystem program

Args

NameTypeDescription
policyConfigPolicyConfigUpdated configuration for the policy including threshold, permissions, and members

Returns

TransactionInstruction — a transaction instruction ready to be added to a transaction.