Skip to main content

createUpdatePolicyInstruction

Builds a raw instruction to update an existing Squads instruction constraint policy on the vault. This replaces the policy’s configuration with a new one, allowing changes to program targets, instruction discriminators, or account constraints. Requires the manager role.

Usage

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

const ix = createUpdatePolicyInstruction(
  {
    payer: wallet.publicKey,
    vault: vaultAddress,
    manager: managerPublicKey,
    squadsSettings: squadsSettingsPda,
    squadsSettingsTransaction: squadsSettingsTransactionPda,
    squadsProposal: squadsProposalPda,
    squadsPolicy: squadsPolicyPda,
    squadsProgram: SQUADS_PROGRAM_ID,
    systemProgram: SYSTEM_PROGRAM_ID,
  },
  {
    policyConfig: {
      programId: updatedProgramId,
      instructionDiscriminator: updatedDiscriminatorBytes,
      accountConstraints: [
        { index: 0, address: requiredAccountAddress },
      ],
    },
  }
);

Accounts

NameSignerWritableDescription
payerYesYesFee payer for the transaction
vaultNoNoThe Strategy Vault account
managerYesNoThe vault manager authority
squadsSettingsNoYesSquads settings account
squadsSettingsTransactionNoYesSquads settings transaction PDA
squadsProposalNoYesSquads proposal PDA
squadsPolicyNoYesSquads policy PDA to update
squadsProgramNoNoSquads v4 program
systemProgramNoNoSystem program

Args

NameTypeDescription
policyConfigPolicyConfigThe updated policy configuration defining program, discriminator, and account constraints

Returns

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