Editing a Vault's Permissioned Investors

Changing a Vault's policy settings
In the example below, we'll query the settings for a vault's implementation of the investor whitelist policy, then update it. Note that most policies cannot be changed once a Vault has been configured and deployed; only the investor whitelist and the investment limits.
import { InvestorWhitelist, PolicyManager, investorWhitelistArgs } from '@enzymefinance/protocol';
import { providers, BigNumber, Wallet, constants } from 'ethers';
const provider = providers.StaticJsonRpcProvider(ethNodeAddress, ethNetwork);
const signer = new Wallet(investorsEthPrivateKey, provider);
// the address of the investor whitelist policy, available at contracts.enzyme.finance
const whitelistPolicyAddress = '0xsow9o...';
// the address of the policy manager contract, avalable at contracts.enzyme.finance
const policyManagerAddress = '0xw923...';
// the comptroller address of the vault in question, available at the
// vault's overview page at app.enzyme.finance
const vaultComptrollerAddress = '0xwdfn289s...';
const whitelistContract = new InvestorWhitelist(
// an arbitrary address to add or remove to the whitelist
// if the address does not exist in the list, we'll update it
// if the address does exist in the list, we'll remove it
const arbitraryAddress = '0x2iws...';
const addressIsInList = await whitelistContract.isInList(arbitraryAddress);
const investorsToAdd = addressIsInList ? undefined : [arbitraryAddress];
const investorsToRemove = addressIsInList ? [arbitraryAddress] : undefined;
const updatedPolicySettings = investorWhitelistArgs({
const policyManagerContract = new PolicyManager(
const policyUpdateTx = policyManagerContract.updatePolicySettingsForFund.args(
const policyUpdateTxReceipt = await policyUpdateTransaction.send();
console.log('Pending transaction:', policyUpdateTxReceipt.hash);
console.log('Transaction included in block number:', policyUpdateTxReceipt.blockNumber);