Skip to main content

createAddPolicyInstruction

Builds a raw instruction to add a Squads instruction constraint policy to the vault. Policies define what strategy interactions the vault’s Squads smart account is allowed to execute, gating which programs and instructions can be called. Requires the manager role.

Usage

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

const ix = createAddPolicyInstruction(
  {
    payer: wallet.publicKey,
    vault: vaultAddress,
    squadsSettings: squadsSettingsPda,
    squadsSettingsTransaction: squadsSettingsTransactionPda,
    squadsProposal: squadsProposalPda,
    squadsPolicy: squadsPolicyPda,
    squadsProgram: SQUADS_PROGRAM_ID,
    systemProgram: SYSTEM_PROGRAM_ID,
  },
  {
    policyConfig: {
      programId: targetProgramId,
      instructionDiscriminator: discriminatorBytes,
      accountConstraints: [],
    },
  }
);

Accounts

NameSignerWritableDescription
payerYesYesFee payer for account creation
vaultNoYesThe Strategy Vault account
squadsSettingsNoYesSquads settings account
squadsSettingsTransactionNoYesSquads settings transaction PDA
squadsProposalNoYesSquads proposal PDA
squadsPolicyNoYesSquads policy PDA to create
squadsProgramNoNoSquads v4 program
systemProgramNoNoSystem program

Args

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

Returns

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