/** * Program IDL in camelCase format in order to be used in JS/TS. * * Note that this is only a type helper and is not the actual IDL. The original * IDL can be found at `target/idl/huma_vault.json`. */ export type HumaVault = { address: string; metadata: { name: "humaVault"; version: "1.1.0"; spec: "0.1.0"; description: "Created with Anchor"; }; instructions: [ { name: "addLockupOption"; docs: [ "Adds a new lockup option to the vault.", "", "# Arguments", "* `duration_secs` - Duration of the lockup period in seconds.", "* `apy_bps` - Target annual percentage yield in basis points.", "* `nft_collection_uri` - The URI for the deposit receipt NFT collection for this lockup option.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner can call this instruction." ]; discriminator: [217, 207, 136, 230, 183, 148, 82, 15]; accounts: [ { name: "vaultOwner"; writable: true; signer: true; relations: ["vaultConfig"]; }, { name: "collection"; docs: ["The address of the new NFT collection."]; writable: true; signer: true; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "arg"; path: "durationSecs"; } ]; }; }, { name: "mplCoreProgram"; docs: ["The MPL Core program."]; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: [ { name: "durationSecs"; type: "u64"; }, { name: "apyBps"; type: "u16"; }, { name: "nftCollectionUri"; type: "string"; } ]; }, { name: "addPauser"; docs: [ "Adds a new pauser to the vault.", "", "# Arguments", "* `pauser` - The public key of the pauser to add.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner can call this instruction." ]; discriminator: [164, 101, 59, 65, 139, 178, 135, 187]; accounts: [ { name: "vaultOwner"; writable: true; signer: true; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "pauserConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 112, 97, 117, 115, 101, 114 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "arg"; path: "pauser"; } ]; }; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: [ { name: "pauser"; type: "pubkey"; } ]; }, { name: "closeDepositorAccounts"; docs: [ "Closes the accounts owned by the depositor.", "", "# Trigger Condition", "N/A. The instruction can be triggered at any time.", "", "# Access Control", "Only depositors can call this instruction." ]; discriminator: [178, 40, 210, 38, 180, 6, 99, 76]; accounts: [ { name: "payer"; writable: true; signer: true; }, { name: "depositor"; signer: true; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "depositorState"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 111, 114, 95, 115, 116, 97, 116, 101 ]; }, { kind: "account"; path: "lockupConfig"; }, { kind: "account"; path: "depositor"; } ]; }; } ]; args: []; }, { name: "closeVault"; docs: [ "Closes the vault after its maturity.", "", "# Trigger Condition", "Only when the vault is in the pre-closure status.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [141, 103, 17, 126, 72, 75, 29, 29]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "vaultDepositToken"; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "tokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "tokenProgram"; } ]; args: []; }, { name: "createDepositorAccounts"; docs: [ "Creates depositor accounts for tracking redemption state.", "", "This instruction creates a `DepositorState` account that tracks a depositor's", "redemption requests and withdrawable funds. The account must be created before", "a depositor can submit redemption requests.", "", "# Arguments", "* `depositor` - The depositor pubkey.", "", "# Trigger Condition", "Only when both the protocol and the vault are on.", "", "# Access Control", "Anyone can call this instruction." ]; discriminator: [141, 61, 6, 189, 33, 208, 141, 123]; accounts: [ { name: "payer"; writable: true; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "depositorState"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 111, 114, 95, 115, 116, 97, 116, 101 ]; }, { kind: "account"; path: "lockupConfig"; }, { kind: "arg"; path: "depositor"; } ]; }; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: [ { name: "depositor"; type: "pubkey"; } ]; }, { name: "createVault"; docs: [ "Creates a new vault with the specified configuration.", "", "# Arguments", "* `id` - Unique identifier for the vault.", "* `name` - Human-readable name for the vault.", "* `vault_owner_treasury` - Treasury account for the vault owner.", "* `loss_authority` - Authority for loss declaration and recovery.", "* `vault_operator` - The account that's responsible for various tasks, such as updating the APY of each lockup.", "* `vault_strategy_type` - Type of strategy the vault will implement.", "* `target_key` - The primary account the vault's strategy interacts with.", "Strategy instructions typically involve multiple accounts, so `target_key`", "should be the account that uniquely identifies that entire account set.", "* `strategist` - Optional strategist account that the vault will deploy strategy tokens to.", "", "# Trigger Condition", "N/A. The instruction can be triggered at any time.", "", "# Access Control", "Anyone can call this instruction. The signer will become the owner of the vault." ]; discriminator: [29, 237, 247, 208, 193, 82, 54, 135]; accounts: [ { name: "owner"; writable: true; signer: true; }, { name: "humaConfig"; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "arg"; path: "id"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "vaultDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "strategyMint"; optional: true; }, { name: "vaultStrategyToken"; writable: true; optional: true; }, { name: "depositTokenProgram"; }, { name: "strategyTokenProgram"; optional: true; }, { name: "associatedTokenProgram"; address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: [ { name: "id"; type: "pubkey"; }, { name: "name"; type: "string"; }, { name: "vaultOwnerTreasury"; type: "pubkey"; }, { name: "lossAuthority"; type: "pubkey"; }, { name: "vaultOperator"; type: "pubkey"; }, { name: "vaultStrategyType"; type: { defined: { name: "vaultStrategyType"; }; }; }, { name: "targetKey"; type: "pubkey"; }, { name: "strategist"; type: { option: "pubkey"; }; } ]; }, { name: "declareLoss"; docs: [ "Declares a loss on the vault.", "", "# Arguments", "* `loss` - The amount of loss to declare.", "", "# Trigger Condition", "When the protocol is on, and the vault is either on or in the pre-closure status.", "", "# Access Control", "Only the loss authority can call this instruction." ]; discriminator: [51, 202, 154, 130, 65, 132, 242, 188]; accounts: [ { name: "lossAuthority"; signer: true; relations: ["vaultConfig"]; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "vaultDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositTokenProgram"; } ]; args: [ { name: "loss"; type: "u64"; } ]; }, { name: "deploy"; docs: [ "Deploys assets from the vault into the target protocol.", "", "# Trigger Condition", "When both the protocol and the vault are on.", "", "# Access Control", "Anyone can call this instruction." ]; discriminator: [67, 36, 143, 118, 36, 164, 92, 217]; accounts: [ { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "zeroDurationLockupConfig"; docs: [ "The `LockupConfig` for the no-lockup option. The account is only used to calculate the assets reserved for", "redemption and should be excluded from deployment." ]; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "zero_duration_lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "vaultDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositTokenProgram"; }, { name: "strategist"; optional: true; }, { name: "strategyMint"; optional: true; }, { name: "vaultStrategyToken"; writable: true; optional: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "strategyTokenProgram"; }, { kind: "account"; path: "strategyMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "strategistStrategyToken"; writable: true; optional: true; pda: { seeds: [ { kind: "account"; path: "strategist"; }, { kind: "account"; path: "strategyTokenProgram"; }, { kind: "account"; path: "strategyMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "strategyTokenProgram"; optional: true; } ]; args: []; }, { name: "deposit"; docs: [ "Deposits assets into the vault.", "", "All deposits should be made by calling this instruction and", "`make_initial_deposit()` (for the vault owner's initial deposit) only.", "Please do NOT directly transfer any crypto assets to the vault,", "which will cause a permanent loss, and we cannot help reverse transactions", "or retrieve assets.", "", "# Arguments", "* `assets` - The amount of underlying assets to be deposited.", "* `lockup_auto_renewal` - Whether the deposit lockup will be auto-renewed at expiration.", "If the deposit is made into the no-lockup option, this parameter must be `false`.", "", "# Returns", "The number of vault shares minted for the deposit.", "", "# Trigger Condition", "Only when both the protocol and the vault are on.", "", "# Access Control", "Anyone can call this instruction." ]; discriminator: [242, 35, 198, 137, 82, 225, 242, 182]; accounts: [ { name: "payer"; writable: true; signer: true; }, { name: "depositor"; signer: true; }, { name: "depositReceipt"; docs: ["The address of the NFT deposit receipt."]; writable: true; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "collection"; writable: true; }, { name: "depositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "depositReceipt"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "vaultDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositorDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "depositor"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositTokenProgram"; }, { name: "mplCoreProgram"; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: [ { name: "assets"; type: "u64"; }, { name: "lockupAutoRenewal"; type: "bool"; } ]; returns: "u64"; }, { name: "disableVault"; docs: [ "Disables the vault.", "", "# Trigger Condition", "Only when the vault is on.", "", "# Access Control", "Only pausers can call this instruction." ]; discriminator: [90, 53, 181, 32, 165, 236, 189, 46]; accounts: [ { name: "pauser"; signer: true; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "pauserConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 112, 97, 117, 115, 101, 114 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "pauser"; } ]; }; } ]; args: []; }, { name: "disburse"; docs: [ "Disburses redeemed funds held in the vault's reserve to the depositor.", "", "# Trigger Condition", "When the protocol is on, and the vault is either on or in the pre-closure status.", "", "# Access Control", "Only the depositor can call this instruction." ]; discriminator: [68, 250, 205, 89, 217, 142, 13, 44]; accounts: [ { name: "depositor"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "depositorState"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 111, 114, 95, 115, 116, 97, 116, 101 ]; }, { kind: "account"; path: "lockupConfig"; }, { kind: "account"; path: "depositor"; } ]; }; }, { name: "depositMint"; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositorDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "depositor"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositTokenProgram"; } ]; args: []; }, { name: "enableVault"; docs: [ "Turns on the vault. Before a vault is turned on, the required lockup option assets", "must have been deposited first.", "", "# Trigger Condition", "N/A. The instruction can be triggered at any time.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [145, 82, 241, 156, 26, 154, 233, 211]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; } ]; args: []; }, { name: "enterPreClosure"; docs: [ "Puts the vault in pre-closure status so that final processing can happen to prepare", "for closure. Vault assets will be refreshed one last time and depositors will no longer accrue", "yields after the vault enters the pre-closure status.", "", "# Trigger Condition", "N/A. The instruction can be triggered at any time.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [236, 246, 62, 133, 60, 195, 118, 151]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: []; }, { name: "extendLockup"; docs: [ "Extends the lockup of a deposit position. Only unlocked positions can be extended to have lockup.", "", "# Trigger Condition", "Only when both the protocol and the vault are on.", "", "# Access Control", "Only the depositor can call this instruction." ]; discriminator: [11, 43, 205, 79, 196, 188, 236, 222]; accounts: [ { name: "payer"; writable: true; signer: true; }, { name: "depositor"; signer: true; }, { name: "destinationDepositReceipt"; docs: ["The new deposit receipt to create."]; writable: true; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "sourceLockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "source_lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "sourceCollection"; writable: true; }, { name: "sourceDepositReceipt"; docs: ["The deposit receipt to extend the lockup for."]; writable: true; }, { name: "sourceDepositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "sourceDepositReceipt"; } ]; }; }, { name: "destinationLockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "destination_lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "destinationCollection"; writable: true; }, { name: "destinationDepositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "destinationDepositReceipt"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "mplCoreProgram"; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: []; }, { name: "makeInitialDeposit"; docs: [ "Makes an initial deposit into the vault.", "", "# Arguments", "* `assets` - Amount of assets to deposit.", "", "# Returns", "The number of vault shares minted for the deposit.", "", "# Trigger Condition", "When protocol is on and the vault is not closed.", "", "# Access Control", "Only the vault owner treasury can call this instruction." ]; discriminator: [141, 233, 75, 102, 37, 93, 94, 79]; accounts: [ { name: "vaultOwnerTreasury"; writable: true; signer: true; relations: ["vaultConfig"]; }, { name: "depositReceipt"; docs: ["The address of the NFT deposit receipt."]; writable: true; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "collection"; writable: true; }, { name: "depositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "depositReceipt"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "vaultDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "vaultOwnerTreasuryDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultOwnerTreasury"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositTokenProgram"; }, { name: "mplCoreProgram"; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: [ { name: "assets"; type: "u64"; } ]; returns: "u64"; }, { name: "merge"; docs: [ "Merges multiple no-lockup deposit positions into a single one.", "", "# Trigger Condition", "Only when both the protocol and the vault are on.", "", "# Access Control", "Anyone can call this instruction.", "", "# Dev Notes", "Deposit receipt NFTs and deposit records must be provided in `remaining_accounts` according to the following rules:", "1. The accounts must be provided in pairs, i.e. [(Deposit receipt NFT, deposit record), (Deposit receipt NFT, deposit record), ...].", "2. All deposit receipts must be unique and belong to the same depositor.", "3. At least two pairs of accounts must be provided." ]; discriminator: [148, 141, 236, 47, 174, 126, 69, 111]; accounts: [ { name: "payer"; writable: true; signer: true; }, { name: "newDepositReceipt"; docs: ["The address of the new deposit receipt that will be minted."]; writable: true; signer: true; }, { name: "depositor"; docs: [ "The deposit receipts owned by the vault authority cannot be merged because those are transferred", "to the vault authority for redemption processing." ]; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "collection"; writable: true; }, { name: "newDepositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "newDepositReceipt"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "mplCoreProgram"; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: []; }, { name: "migrate"; docs: [ "Opts into the vault by migrating strategy tokens held by the depositor.", "", "Note: whether a vault supports migration is determined by the strategy type. Not all vaults", "support migration.", "", "# Arguments", "* `num_strategy_tokens` - The number of strategy tokens to migrate.", "* `lockup_auto_renewal` - Whether the migrated position will have its lockup auto-renewed at expiration.", "If the migration is made into the no-lockup option, this parameter must be `false`.", "", "# Trigger Condition", "Only when both the protocol and the vault are on.", "", "# Access Control", "Anyone can call this instruction." ]; discriminator: [155, 234, 231, 146, 236, 158, 162, 30]; accounts: [ { name: "payer"; writable: true; signer: true; }, { name: "depositor"; signer: true; }, { name: "depositReceipt"; docs: ["The address of the NFT deposit receipt to be minted."]; writable: true; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "collection"; writable: true; }, { name: "depositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "depositReceipt"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "strategyMint"; }, { name: "depositorStrategyToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "depositor"; }, { kind: "account"; path: "strategyTokenProgram"; }, { kind: "account"; path: "strategyMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "vaultStrategyToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "strategyTokenProgram"; }, { kind: "account"; path: "strategyMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "mplCoreProgram"; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; }, { name: "strategyTokenProgram"; } ]; args: [ { name: "numStrategyTokens"; type: "u64"; }, { name: "lockupAutoRenewal"; type: "bool"; } ]; }, { name: "processRedemptionRequest"; docs: [ "Processes the redemption request at the beginning of the redemption queue.", "", "# Trigger Condition", "When the protocol is on, and the vault is either on or in the pre-closure status.", "", "# Access Control", "Anyone can call this instruction." ]; discriminator: [211, 90, 36, 251, 91, 185, 216, 35]; accounts: [ { name: "signer"; writable: true; signer: true; }, { name: "depositor"; docs: ["`has_one` constraint."]; writable: true; relations: ["redemptionRequest"]; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "collection"; writable: true; optional: true; }, { name: "depositReceipt"; writable: true; optional: true; }, { name: "depositRecord"; writable: true; optional: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "depositReceipt"; } ]; }; }, { name: "redemptionRequest"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 114, 101, 100, 101, 109, 112, 116, 105, 111, 110, 95, 114, 101, 113, 117, 101, 115, 116 ]; }, { kind: "account"; path: "redemption_request.id"; account: "redemptionRequest"; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositorState"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 111, 114, 95, 115, 116, 97, 116, 101 ]; }, { kind: "account"; path: "lockupConfig"; }, { kind: "account"; path: "depositor"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "vaultDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositorDepositToken"; docs: [ "The account is optional to prevent an attack where a depositor closes their deposit token", "account and consequently blocks the redemption request from being processed." ]; writable: true; optional: true; pda: { seeds: [ { kind: "account"; path: "depositor"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositTokenProgram"; }, { name: "mplCoreProgram"; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: []; }, { name: "recoverLoss"; docs: [ "Recovers previously declared losses on the vault.", "", "# Arguments", "* `amount` - The amount of losses to recover.", "", "# Trigger Condition", "When the protocol is on, and the vault is not closed.", "", "# Access Control", "Only the loss authority can call this instruction." ]; discriminator: [32, 238, 42, 34, 64, 3, 58, 231]; accounts: [ { name: "lossAuthority"; signer: true; relations: ["vaultConfig"]; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "vaultDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "lossAuthorityDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "lossAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositTokenProgram"; } ]; args: [ { name: "amount"; type: "u64"; } ]; }, { name: "refreshLockupAssets"; docs: [ "Refreshes assets for a single lockup option.", "", "# Trigger Condition", "When the protocol is on, and the vault is either on or in pre-closure.", "", "# Access Control", "Anyone can call this instruction." ]; discriminator: [176, 16, 43, 32, 210, 31, 65, 198]; accounts: [ { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; } ]; args: []; }, { name: "removeLockupOption"; docs: [ "Removes an existing lockup option from the vault. Note that this instruction applies solely to the", "reversal of unintentional lockup option additions. Consequently, the following conditions must", "be met for the removal to go through:", "1. No deposit has been made to the lockup option.", "2. The lockup state must be empty.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner can call this instruction." ]; discriminator: [72, 144, 85, 254, 205, 200, 49, 62]; accounts: [ { name: "vaultOwner"; writable: true; signer: true; relations: ["vaultConfig"]; }, { name: "collection"; writable: true; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultAuthority"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "mplCoreProgram"; docs: ["The MPL Core program."]; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; } ]; args: []; }, { name: "removePauser"; docs: [ "Removes a pauser from the vault.", "", "# Arguments", "* `pauser` - The public key of the pauser to remove.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner can call this instruction." ]; discriminator: [251, 114, 202, 18, 216, 118, 176, 86]; accounts: [ { name: "vaultOwner"; writable: true; signer: true; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "pauserConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 112, 97, 117, 115, 101, 114 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "arg"; path: "pauser"; } ]; }; } ]; args: [ { name: "pauser"; type: "pubkey"; } ]; }, { name: "renewLockup"; docs: [ "Renews the lockup on a position by the same duration.", "", "# Trigger Condition", "Only when both the protocol and the vault are on.", "", "# Access Control", "If the lockup on the position is expiring on the next day or has already expired, then", "anyone can call this instruction. Otherwise, only the depositor can call this instruction." ]; discriminator: [43, 255, 107, 205, 141, 55, 88, 156]; accounts: [ { name: "signer"; signer: true; }, { name: "depositor"; docs: [ "as a parameter because we need its `AccountInfo` when minting the new deposit receipt." ]; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "collection"; }, { name: "depositReceipt"; docs: ["The deposit receipt to renew the lockup for."]; }, { name: "depositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "depositReceipt"; } ]; }; } ]; args: []; }, { name: "requestRedemption"; docs: [ "Adds a new redemption request.", "", "# Arguments", "* `shares` - The number of shares the depositor wants to redeem.", "", "# Trigger Condition", "Only when both the protocol and the vault are on.", "", "# Access Control", "Only depositors can call this instruction." ]; discriminator: [14, 62, 182, 237, 59, 79, 149, 22]; accounts: [ { name: "payer"; writable: true; signer: true; }, { name: "depositor"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "collection"; }, { name: "depositReceipt"; writable: true; }, { name: "depositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "depositReceipt"; } ]; }; }, { name: "depositorState"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 111, 114, 95, 115, 116, 97, 116, 101 ]; }, { kind: "account"; path: "lockupConfig"; }, { kind: "account"; path: "depositor"; } ]; }; }, { name: "redemptionRequest"; writable: true; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "mplCoreProgram"; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: [ { name: "shares"; type: "u64"; } ]; }, { name: "returnStrategyTokens"; docs: [ "Allows the strategist to return strategy tokens to the vault.", "", "# Arguments", "* `amount` - The amount of strategy tokens to return to the vault.", "", "# Trigger Condition", "When the protocol is on and the vault is not closed.", "", "# Access Control", "Only the strategist can call this instruction." ]; discriminator: [134, 109, 62, 138, 49, 199, 222, 251]; accounts: [ { name: "strategist"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "strategyMint"; }, { name: "vaultStrategyToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "strategyTokenProgram"; }, { kind: "account"; path: "strategyMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "strategistStrategyToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "strategist"; }, { kind: "account"; path: "strategyTokenProgram"; }, { kind: "account"; path: "strategyMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "strategyTokenProgram"; } ]; args: [ { name: "amount"; type: "u64"; } ]; }, { name: "setupForDeployment"; docs: [ "Performs the necessary setup so that the vault can deploy assets into the target protocol.", "E.g. for PST strategy, this instruction will create lender accounts.", "", "Strategy-specific accounts should be passed via remaining accounts and handled by the vault strategy.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Anyone can call this instruction." ]; discriminator: [204, 184, 70, 56, 238, 245, 97, 141]; accounts: [ { name: "signer"; signer: true; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: []; }, { name: "submitRedemptionRequest"; docs: [ "Submits redemption requests to the underlying protocol.", "", "# Trigger Condition", "When the protocol is on, and the vault is either on or in the pre-closure status.", "", "# Access Control", "Anyone can call this instruction." ]; discriminator: [242, 199, 196, 80, 89, 138, 20, 183]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "vaultDepositToken"; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositTokenProgram"; } ]; args: []; }, { name: "toggleAutoRenewal"; docs: [ "Toggles the auto-renewal status of a deposit position.", "", "# Trigger Condition", "Only when both the protocol and the vault are on.", "", "# Access Control", "Only the depositor can call this instruction." ]; discriminator: [167, 223, 10, 198, 106, 193, 115, 34]; accounts: [ { name: "depositor"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "collection"; }, { name: "depositReceipt"; }, { name: "depositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "depositReceipt"; } ]; }; } ]; args: []; }, { name: "unlock"; docs: [ "Unlocks a deposit position whose lockup has expired.", "", "# Trigger Condition", "Only when both the protocol and the vault are on.", "", "# Access Control", "Anyone can call this instruction." ]; discriminator: [101, 155, 40, 21, 158, 189, 56, 203]; accounts: [ { name: "payer"; writable: true; signer: true; }, { name: "destinationDepositReceipt"; docs: ["The address of the new deposit receipt that will be minted."]; writable: true; signer: true; }, { name: "depositor"; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "sourceLockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "source_lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "sourceCollection"; writable: true; }, { name: "sourceDepositReceipt"; docs: ["The deposit receipt to extend the lockup for."]; writable: true; }, { name: "sourceDepositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "sourceDepositReceipt"; } ]; }; }, { name: "destinationLockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "destination_lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "destinationCollection"; writable: true; }, { name: "destinationDepositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "destinationDepositReceipt"; } ]; }; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "mplCoreProgram"; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; }, { name: "systemProgram"; address: "11111111111111111111111111111111"; } ]; args: []; }, { name: "updateAssetCap"; docs: [ "Updates the vault asset cap.", "", "# Trigger Condition", "When the protocol is on and the vault is not closed.", "", "# Access Control", "Only the strategist can call this instruction." ]; discriminator: [181, 233, 48, 88, 240, 35, 247, 90]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: [ { name: "newAssetCap"; type: "u64"; } ]; }, { name: "updateDepositConfig"; docs: [ "Updates the deposit configuration for the vault.", "", "# Arguments", "* `deposit_config` - New deposit configurations.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [10, 31, 215, 128, 116, 252, 183, 214]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; } ]; args: [ { name: "depositConfig"; type: { defined: { name: "depositConfig"; }; }; } ]; }, { name: "updateHumaConfig"; docs: [ "Updates the Huma config for the vault.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the current Huma owner can call this instruction." ]; discriminator: [39, 78, 0, 251, 70, 22, 97, 163]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "newHumaConfig"; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: []; }, { name: "updateHumaFeeBps"; docs: [ "Updates the Huma fee bps for the vault.", "", "# Arguments", "* `new_huma_fee_bps` - The new Huma fee in basis points.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the Huma owner can call this instruction." ]; discriminator: [44, 1, 160, 220, 149, 14, 98, 37]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: [ { name: "newHumaFeeBps"; type: "u16"; } ]; }, { name: "updateLockupApy"; docs: [ "Updates the APY for the lockup option. Both the target and periodic APYs will be updated.", "", "# Arguments", "* `new_apy_bps` - The target annual percentage yield (APY) for the deposit assets", "expressed in basis points.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [4, 74, 189, 160, 123, 45, 84, 162]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; } ]; args: [ { name: "newApyBps"; type: "u16"; } ]; }, { name: "updateLossAuthority"; docs: [ "Updates the loss authority for the vault.", "", "# Arguments", "* `new_loss_authority` - New loss authority's public key.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [97, 249, 84, 193, 236, 19, 217, 118]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: [ { name: "newLossAuthority"; type: "pubkey"; } ]; }, { name: "updateRedemptionConfig"; docs: [ "Updates the redemption configuration for the vault.", "", "# Arguments", "* `redemption_config` - New redemption configurations.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [141, 61, 100, 54, 150, 133, 17, 90]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; } ]; args: [ { name: "redemptionConfig"; type: { defined: { name: "redemptionConfig"; }; }; } ]; }, { name: "updateStrategyConfig"; docs: [ "Updates the strategy configuration for the vault.", "", "# Arguments", "* `strategy_config` - New strategy configurations.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [81, 217, 177, 65, 40, 227, 8, 165]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: [ { name: "strategyConfig"; type: { defined: { name: "strategyConfig"; }; }; } ]; }, { name: "updateVaultName"; docs: [ "Updates the vault's display name.", "", "# Arguments", "* `new_name` - New name for the vault.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [87, 131, 247, 50, 74, 238, 71, 95]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: [ { name: "newName"; type: "string"; } ]; }, { name: "updateVaultOperator"; docs: [ "Updates the vault operator.", "", "# Arguments", "* `new_vault_operator` - New vault operator's public key.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [219, 185, 221, 27, 235, 209, 57, 54]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: [ { name: "newVaultOperator"; type: "pubkey"; } ]; }, { name: "updateVaultOwner"; docs: [ "Updates the vault owner.", "", "# Arguments", "* `new_owner` - New owner's public key.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the current vault owner and the Huma owner can call this instruction." ]; discriminator: [123, 186, 244, 46, 204, 39, 85, 91]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: [ { name: "newOwner"; type: "pubkey"; } ]; }, { name: "updateVaultOwnerTreasury"; docs: [ "Updates the vault owner's treasury account.", "", "# Arguments", "* `new_treasury` - New treasury account public key.", "", "# Trigger Condition", "When the vault is not closed.", "", "# Access Control", "Only the vault owner and the Huma owner can call this instruction." ]; discriminator: [200, 194, 131, 52, 181, 90, 29, 125]; accounts: [ { name: "signer"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; } ]; args: [ { name: "newTreasury"; type: "pubkey"; } ]; }, { name: "withdrawAfterVaultClosure"; docs: [ "Withdraws assets after the vault has been closed.", "", "This instruction allows depositors to withdraw their assets after the vault has been closed.", "It accepts an array of (deposit receipt NFT, DepositRecord) pairs as remaining accounts", "for the lockup, calculates the amount of assets for each deposit using the current price", "and the number of shares, closes the depositor record, burns the receipt, and transfers", "the tokens to the user.", "", "# Trigger Condition", "When the vault is closed.", "", "# Access Control", "Anyone can call this instruction on behalf of a depositor." ]; discriminator: [167, 7, 240, 223, 127, 167, 167, 169]; accounts: [ { name: "payer"; writable: true; signer: true; }, { name: "depositor"; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "lockupConfig"; pda: { seeds: [ { kind: "const"; value: [ 108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vaultConfig"; }, { kind: "account"; path: "lockup_config.lockup_duration_secs"; account: "lockupConfig"; } ]; }; }, { name: "collection"; writable: true; }, { name: "depositReceipt"; writable: true; }, { name: "depositRecord"; writable: true; pda: { seeds: [ { kind: "const"; value: [ 100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100 ]; }, { kind: "account"; path: "depositReceipt"; } ]; }; }, { name: "depositMint"; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositorDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "depositor"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "mplCoreProgram"; address: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"; }, { name: "depositTokenProgram"; } ]; args: []; }, { name: "withdrawHumaFee"; docs: [ "Withdraws Huma fee from the vault.", "", "# Trigger Condition", "When the protocol is on and the vault is not disabled.", "", "# Access Control", "Only the Huma treasury (as specified in `HumaConfig`) can call this instruction." ]; discriminator: [178, 91, 100, 15, 244, 163, 74, 99]; accounts: [ { name: "humaTreasury"; signer: true; }, { name: "humaConfig"; relations: ["vaultConfig"]; }, { name: "vaultConfig"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103 ]; }, { kind: "account"; path: "vault_config.id"; account: "vaultConfig"; } ]; }; }, { name: "vaultState"; writable: true; pda: { seeds: [ { kind: "const"; value: [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "depositMint"; }, { name: "vaultAuthority"; pda: { seeds: [ { kind: "const"; value: [ 118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ]; }, { kind: "account"; path: "vaultConfig"; } ]; }; }, { name: "vaultDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "vaultAuthority"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "humaTreasuryDepositToken"; writable: true; pda: { seeds: [ { kind: "account"; path: "humaTreasury"; }, { kind: "account"; path: "depositTokenProgram"; }, { kind: "account"; path: "depositMint"; } ]; program: { kind: "const"; value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ]; }; }; }, { name: "depositTokenProgram"; } ]; args: []; } ]; accounts: [ { name: "baseAssetV1"; discriminator: [1]; }, { name: "baseCollectionV1"; discriminator: [5]; }, { name: "depositRecord"; discriminator: [83, 232, 10, 31, 251, 49, 189, 167]; }, { name: "depositorState"; discriminator: [61, 239, 210, 209, 1, 138, 189, 84]; }, { name: "lockupConfig"; discriminator: [242, 18, 94, 200, 184, 66, 129, 215]; }, { name: "pauserConfig"; discriminator: [154, 50, 223, 181, 104, 38, 221, 16]; }, { name: "redemptionRequest"; discriminator: [117, 157, 214, 214, 64, 160, 31, 58]; }, { name: "vaultConfig"; discriminator: [99, 86, 43, 216, 184, 102, 119, 77]; }, { name: "vaultState"; discriminator: [228, 196, 82, 165, 98, 210, 235, 152]; } ]; events: [ { name: "assetCapChangedByStrategistEvent"; discriminator: [153, 249, 161, 252, 56, 70, 36, 207]; }, { name: "assetDepositedEvent"; discriminator: [61, 6, 225, 103, 20, 222, 103, 39]; }, { name: "assetsDeployedEvent"; discriminator: [228, 11, 214, 28, 120, 117, 55, 143]; }, { name: "autoRenewalToggledEvent"; discriminator: [175, 202, 179, 96, 150, 209, 189, 4]; }, { name: "depositConfigChangedEvent"; discriminator: [134, 26, 252, 195, 38, 1, 189, 107]; }, { name: "depositorAccountsClosedEvent"; discriminator: [100, 88, 56, 97, 110, 122, 47, 65]; }, { name: "depositorAccountsCreatedEvent"; discriminator: [73, 178, 164, 203, 105, 171, 80, 41]; }, { name: "depositorFundDisbursedEvent"; discriminator: [114, 87, 233, 246, 172, 165, 203, 12]; }, { name: "depositsMergedEvent"; discriminator: [81, 108, 136, 37, 124, 32, 245, 128]; }, { name: "fundsWithdrawnAfterVaultClosure"; discriminator: [86, 187, 26, 86, 54, 44, 27, 206]; }, { name: "humaConfigChangedEvent"; discriminator: [160, 214, 104, 167, 105, 118, 72, 49]; }, { name: "humaFeeBpsChangedEvent"; discriminator: [58, 88, 141, 111, 135, 60, 93, 193]; }, { name: "humaFeeWithdrawnEvent"; discriminator: [150, 142, 115, 251, 1, 167, 225, 171]; }, { name: "initialDepositMadeEvent"; discriminator: [40, 192, 218, 233, 22, 152, 33, 195]; }, { name: "lockupApyChangedEvent"; discriminator: [250, 175, 248, 156, 85, 155, 13, 172]; }, { name: "lockupAssetsRefreshedEvent"; discriminator: [14, 226, 18, 230, 179, 189, 2, 193]; }, { name: "lockupExtendedEvent"; discriminator: [93, 129, 104, 5, 108, 219, 80, 19]; }, { name: "lockupOptionAddedEvent"; discriminator: [54, 167, 253, 21, 108, 184, 196, 36]; }, { name: "lockupOptionRemovedEvent"; discriminator: [225, 213, 118, 50, 153, 93, 252, 65]; }, { name: "lockupRenewedEvent"; discriminator: [114, 83, 58, 75, 2, 188, 7, 188]; }, { name: "lossAuthorityChangedEvent"; discriminator: [11, 130, 65, 235, 139, 77, 184, 174]; }, { name: "lossDeclaredEvent"; discriminator: [159, 235, 30, 240, 118, 234, 120, 83]; }, { name: "lossRecoveredEvent"; discriminator: [202, 156, 189, 173, 187, 83, 132, 72]; }, { name: "pauserAddedEvent"; discriminator: [228, 58, 132, 243, 148, 43, 212, 160]; }, { name: "pauserRemovedEvent"; discriminator: [158, 143, 81, 197, 30, 84, 65, 233]; }, { name: "redeemedFundsPaidOutEvent"; discriminator: [3, 68, 39, 81, 188, 59, 247, 177]; }, { name: "redeemedFundsReservedEvent"; discriminator: [141, 45, 128, 85, 166, 158, 191, 48]; }, { name: "redemptionConfigChangedEvent"; discriminator: [124, 43, 191, 64, 255, 82, 7, 108]; }, { name: "redemptionRequestProcessedEvent"; discriminator: [165, 153, 161, 205, 132, 243, 207, 156]; }, { name: "redemptionRequestSubmittedEvent"; discriminator: [171, 13, 205, 229, 12, 129, 143, 106]; }, { name: "redemptionRequestedEvent"; discriminator: [202, 47, 51, 231, 221, 144, 164, 57]; }, { name: "setUpForDeploymentEvent"; discriminator: [9, 127, 230, 255, 84, 40, 73, 87]; }, { name: "strategyConfigChangedEvent"; discriminator: [34, 99, 206, 2, 18, 12, 99, 168]; }, { name: "strategyTokenMigratedEvent"; discriminator: [123, 54, 186, 98, 79, 159, 143, 40]; }, { name: "strategyTokensReturnedEvent"; discriminator: [130, 191, 78, 123, 255, 179, 75, 19]; }, { name: "unlockedEvent"; discriminator: [218, 159, 176, 39, 151, 9, 126, 42]; }, { name: "vaultClosedEvent"; discriminator: [104, 71, 213, 247, 195, 133, 16, 106]; }, { name: "vaultCreatedEvent"; discriminator: [81, 80, 244, 58, 136, 54, 236, 111]; }, { name: "vaultDisabledEvent"; discriminator: [42, 0, 43, 113, 111, 70, 177, 46]; }, { name: "vaultEnabledEvent"; discriminator: [143, 129, 160, 191, 231, 206, 145, 183]; }, { name: "vaultEnteredPreClosureEvent"; discriminator: [184, 228, 116, 54, 204, 92, 87, 122]; }, { name: "vaultNameChangedEvent"; discriminator: [33, 39, 31, 119, 198, 72, 148, 139]; }, { name: "vaultOperatorChangedEvent"; discriminator: [187, 0, 38, 131, 43, 22, 189, 172]; }, { name: "vaultOwnerChangedEvent"; discriminator: [109, 110, 189, 49, 182, 30, 251, 223]; }, { name: "vaultOwnerTreasuryChangedEvent"; discriminator: [72, 102, 143, 129, 79, 166, 189, 238]; } ]; errors: [ { code: 6001; name: "zeroAmountProvided"; }, { code: 6002; name: "invalidBasisPointHigherThan10000"; }, { code: 6101; name: "humaOwnerRequired"; }, { code: 6102; name: "humaTreasuryRequired"; }, { code: 6103; name: "vaultOwnerRequired"; }, { code: 6104; name: "vaultOwnerOrHumaOwnerRequired"; }, { code: 6105; name: "vaultOwnerOrOperatorOrHumaOwnerRequired"; }, { code: 6106; name: "vaultOwnerTreasuryRequired"; }, { code: 6107; name: "vaultAuthorityRequired"; }, { code: 6108; name: "nonVaultAuthorityRequired"; }, { code: 6109; name: "strategistRequired"; }, { code: 6110; name: "lossAuthorityRequired"; }, { code: 6111; name: "depositorRequired"; }, { code: 6201; name: "accountOwnerMismatch"; }, { code: 6202; name: "requiredAccountsNotProvided"; }, { code: 6203; name: "invalidNumberOfRemainingAccounts"; }, { code: 6204; name: "tooManyLockupOptions"; }, { code: 6205; name: "tooFewLockupOptions"; }, { code: 6206; name: "lockupDurationMustBeZero"; }, { code: 6207; name: "lockupDurationMustBeNonZero"; }, { code: 6208; name: "invalidLockupConfig"; }, { code: 6209; name: "duplicateLockupOptions"; }, { code: 6210; name: "invalidLockupNftCollection"; }, { code: 6211; name: "invalidDepositMint"; }, { code: 6212; name: "invalidDepositReceipt"; }, { code: 6213; name: "invalidStrategyMint"; }, { code: 6214; name: "invalidDepositRecord"; }, { code: 6215; name: "duplicateDepositReceipt"; }, { code: 6301; name: "invalidHumaConfig"; }, { code: 6302; name: "protocolIsPaused"; }, { code: 6401; name: "vaultIsNotOn"; }, { code: 6402; name: "vaultIsNotOnOrInPreClosure"; }, { code: 6403; name: "vaultIsOff"; }, { code: 6404; name: "vaultIsNotInPreClosure"; }, { code: 6405; name: "vaultIsClosed"; }, { code: 6406; name: "vaultIsNotClosed"; }, { code: 6407; name: "vaultNameTooLong"; }, { code: 6408; name: "invalidNumberOfDecimalsForDepositMint"; }, { code: 6409; name: "invalidDepositMintExtension"; }, { code: 6410; name: "lockupOptionAlreadyAdded"; }, { code: 6411; name: "lockupOptionNotReadyToClose"; }, { code: 6412; name: "insufficientAssetsForVaultActivation"; }, { code: 6413; name: "depositMintIsImmutable"; }, { code: 6414; name: "strategyMintIsImmutable"; }, { code: 6415; name: "vaultStrategyTypeIsImmutable"; }, { code: 6416; name: "strategistMustBeNoneIfStrategyMintIsNone"; }, { code: 6417; name: "minDepositAmountTooLow"; }, { code: 6418; name: "minRedemptionSharesTooLow"; }, { code: 6419; name: "unprocessedRedemptionRequests"; }, { code: 6501; name: "redemptionRequestOutOfOrder"; }, { code: 6502; name: "insufficientBalanceForHumaFeeRedemption"; }, { code: 6503; name: "declaredLossTooHigh"; }, { code: 6504; name: "noLossToRecover"; }, { code: 6505; name: "lossRecoveryTooHigh"; }, { code: 6601; name: "zeroSharesMinted"; }, { code: 6602; name: "depositAmountTooLow"; }, { code: 6603; name: "assetCapExceeded"; }, { code: 6604; name: "depositWithoutLockupCannotBeAutoRenewed"; }, { code: 6605; name: "insufficientLockupSupply"; }, { code: 6606; name: "incompatibleLockupDurationsForExtension"; }, { code: 6607; name: "lockupHasNotExpired"; }, { code: 6608; name: "lockupAutoRenewalMustBeDisabled"; }, { code: 6609; name: "insufficientSharesForRequest"; }, { code: 6610; name: "redemptionSharesTooLow"; }, { code: 6611; name: "totalRedemptionLimitExceeded"; }, { code: 6612; name: "insufficientBalanceForWithdrawal"; }, { code: 6613; name: "depositorStateNotReadyToClose"; }, { code: 6701; name: "invalidStrategyProgram"; }, { code: 6702; name: "targetAccountMismatch"; }, { code: 6703; name: "invalidPermissionlessPoolState"; }, { code: 6704; name: "invalidPermissionlessModeConfig"; } ]; types: [ { name: "assetCapChangedByStrategistEvent"; docs: [ "The asset cap has been updated by the strategist.", "", "# Fields", "* `vault_config` - The vault config key.", "* `strategist` - The strategist who updated the cap.", "* `old_asset_cap` - The previous asset cap.", "* `new_asset_cap` - The new asset cap." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "strategist"; type: "pubkey"; }, { name: "oldAssetCap"; type: "u64"; }, { name: "newAssetCap"; type: "u64"; } ]; }; }, { name: "assetDepositedEvent"; docs: [ "An initial deposit has been made with the specified lockup.", "", "# Fields", "* `payer` - The account that paid for the rent-exempt fee.", "* `depositor` - The account that made the deposit.", "* `vault_config` - The vault config key.", "* `lockup_config` - The lockup config key.", "* `collection` - The collection of the NFT deposit receipt.", "* `deposit_receipt` - The address of the NFT deposit receipt.", "* `assets` - The amount of deposit assets deposited.", "* `shares` - The number of shares issued for this deposit.", "* `lockup_auto_renewal` - Whether the lockup auto renews.", "* `deposited_at` - The timestamp when the deposit was made.", "* `lockup_expires_at` - The timestamp when the lockup expires." ]; type: { kind: "struct"; fields: [ { name: "payer"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; }, { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "collection"; type: "pubkey"; }, { name: "depositReceipt"; type: "pubkey"; }, { name: "assets"; type: "u64"; }, { name: "shares"; type: "u64"; }, { name: "lockupAutoRenewal"; type: "bool"; }, { name: "depositedAt"; type: "u64"; }, { name: "lockupExpiresAt"; type: "u64"; } ]; }; }, { name: "assetsDeployedEvent"; docs: [ "The assets have been deployed into the vault.", "", "# Fields", "* `vault_config` - The vault config key.", "* `amount_deployed` - The amount of assets deployed into the vault.", "* `num_strategy_tokens_minted` - The number of strategy tokens minted to the vault.", "If the vault strategy does not mint strategy tokens, this will be `None`.", "* `num_strategy_tokens_deployed` - The number of strategy tokens deployed to the vault.", "If the vault strategy does not mint strategy tokens, this will be `None`." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "amountDeployed"; type: "u64"; }, { name: "numStrategyTokensMinted"; type: { option: "u64"; }; }, { name: "numStrategyTokensDeployed"; type: { option: "u64"; }; } ]; }; }, { name: "autoRenewalToggledEvent"; docs: [ "The auto-renewal status of a deposit position has been toggled.", "", "# Fields", "* `depositor` - The depositor of the position.", "* `vault_config` - The vault config.", "* `lockup_config` - The lockup config.", "* `collection` - The collection of the NFT deposit receipt.", "* `deposit_receipt` - The address of the NFT deposit receipt.", "* `deposit_record` - The deposit record.", "* `lockup_auto_renewal` - The new auto-renewal status." ]; type: { kind: "struct"; fields: [ { name: "depositor"; type: "pubkey"; }, { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "collection"; type: "pubkey"; }, { name: "depositReceipt"; type: "pubkey"; }, { name: "depositRecord"; type: "pubkey"; }, { name: "lockupAutoRenewal"; type: "bool"; } ]; }; }, { name: "baseAssetV1"; type: { kind: "struct"; fields: [ { name: "key"; type: { defined: { name: "key"; }; }; }, { name: "owner"; type: "pubkey"; }, { name: "updateAuthority"; type: { defined: { name: "updateAuthority"; }; }; }, { name: "name"; type: "string"; }, { name: "uri"; type: "string"; }, { name: "seq"; type: { option: "u64"; }; } ]; }; }, { name: "baseCollectionV1"; type: { kind: "struct"; fields: [ { name: "key"; type: { defined: { name: "key"; }; }; }, { name: "updateAuthority"; type: "pubkey"; }, { name: "name"; type: "string"; }, { name: "uri"; type: "string"; }, { name: "numMinted"; type: "u32"; }, { name: "currentSize"; type: "u32"; } ]; }; }, { name: "depositConfig"; docs: [ "Deposit related configurations.", "", "# Fields", "* `deposit_mint` - The mint of the deposit asset.", "* `asset_cap` - The maximum amount of assets that can be deposited.", "* `min_deposit_amount` - The minimum amount per deposit." ]; type: { kind: "struct"; fields: [ { name: "depositMint"; type: "pubkey"; }, { name: "assetCap"; type: "u64"; }, { name: "minDepositAmount"; type: "u64"; }, { name: "reserved"; type: { array: ["u8", 40]; }; } ]; }; }, { name: "depositConfigChangedEvent"; docs: [ "The deposit config has been updated.", "", "# Fields", "* `vault_config` - The vault config.", "* `deposit_config` - The new deposit config." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "depositConfig"; type: { defined: { name: "depositConfig"; }; }; } ]; }; }, { name: "depositRecord"; docs: [ "The information related to a deposit.", "", "# Fields", "* `bump` - The account bump.", "* `deposited_at` - The time the deposit was made.", "* `shares` - The number of shares minted for the deposit.", "* `lockup_auto_renewal` - Whether the lockup will be auto-renewed upon expiration." ]; type: { kind: "struct"; fields: [ { name: "bump"; type: "u8"; }, { name: "shares"; type: "u64"; }, { name: "lockupAutoRenewal"; type: "bool"; }, { name: "depositedAt"; type: "u64"; }, { name: "lockupExpiresAt"; type: "u64"; }, { name: "reserved"; type: { array: ["u8", 80]; }; } ]; }; }, { name: "depositorAccountsClosedEvent"; docs: [ "Depositor accounts have been permanently closed.", "", "# Fields", "* `lockup_config` - The lockup config key.", "* `depositor` - The depositor who closed their accounts." ]; type: { kind: "struct"; fields: [ { name: "lockupConfig"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; } ]; }; }, { name: "depositorAccountsCreatedEvent"; docs: [ "Depositor accounts have been created.", "", "# Fields", "* `vault_config` - The vault config key.", "* `signer` - The signer who signed the instruction.", "* `depositor` - The depositor for whom the accounts were created." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "signer"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; } ]; }; }, { name: "depositorFundDisbursedEvent"; docs: [ "A depositor's funds from processed redemption requests have been disbursed.", "", "# Fields", "* `vault_config` - The vault config key.", "* `lockup_config` - The lockup config key.", "* `depositor` - The depositor whose funds have been disbursed.", "* `amount_disbursed` - The amount of the disbursement." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; }, { name: "amountDisbursed"; type: "u64"; } ]; }; }, { name: "depositorRedemptionRecord"; docs: [ "The information related to a depositor's redemption.", "", "# Fields", "* `num_pending_redemption_requests` - The number of pending redemption requests. Note that this", "value is only decremented when the redemption request account is closed in `process_redemption_request`,", "not in `cancel_redemption_request`.", "* `shares_pending_redemption` - The number of shares pending redemption.", "* `total_amount_processed` - The total amount processed for redemption.", "* `total_amount_withdrawn` - The total amount withdrawn by the depositor. The withdrawable amount", "= `total_amount_processed` - `total_amount_withdrawn`. Since we'll first try to transfer the", "processed funds directly to the depositor, the withdrawable amount is usually 0. It's only", "non-zero if the transfer fails and the funds are kept in the disbursement reserve for the", "depositor to claim later." ]; type: { kind: "struct"; fields: [ { name: "numPendingRedemptionRequests"; type: "u64"; }, { name: "sharesPendingRedemption"; type: "u64"; }, { name: "totalAmountProcessed"; type: "u64"; }, { name: "totalAmountWithdrawn"; type: "u64"; }, { name: "reserved"; type: { array: ["u8", 40]; }; } ]; }; }, { name: "depositorState"; type: { kind: "struct"; fields: [ { name: "bump"; type: "u8"; }, { name: "depositor"; type: "pubkey"; }, { name: "redemptionRecord"; type: { defined: { name: "depositorRedemptionRecord"; }; }; }, { name: "reserved"; type: { array: ["u8", 80]; }; } ]; }; }, { name: "depositsMergedEvent"; docs: [ "Deposits have been merged.", "", "# Fields", "* `payer` - The account that pays for the rent-exempt fee.", "* `depositor` - The owner of the deposit receipts being merged.", "* `collection` - The collection of the new deposit receipt.", "* `deposit_receipt` - The address of the new deposit receipt that was minted.", "* `shares` - The total shares of the merged deposits.", "* `deposited_at` - The timestamp of the last deposit." ]; type: { kind: "struct"; fields: [ { name: "payer"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; }, { name: "collection"; type: "pubkey"; }, { name: "depositReceipt"; type: "pubkey"; }, { name: "shares"; type: "u64"; }, { name: "depositedAt"; type: "u64"; } ]; }; }, { name: "fee"; docs: [ "Fee for managing the vault.", "", "# Fields", "* `accrued` - The amount of fee accrued.", "* `pending_redemption` - The amount of fee that's been submitted to the strategy protocol for redemption.", "* `pending_withdrawal` - The amount of fee that's been returned from the strategy protocol and pending withdrawal.", "* `last_accrued_at` - The last time accrued fee were computed." ]; type: { kind: "struct"; fields: [ { name: "accrued"; type: "u64"; }, { name: "pendingRedemption"; type: "u64"; }, { name: "pendingWithdrawal"; type: "u64"; }, { name: "lastAccruedAt"; type: "u64"; }, { name: "reserved"; type: { array: ["u8", 40]; }; } ]; }; }, { name: "fundsWithdrawnAfterVaultClosure"; docs: [ "A depositor has withdrawn assets after vault closure.", "", "# Fields", "* `payer` - The payer who received the rent-exempt fee refund.", "* `depositor` - The depositor who has withdrawn.", "* `vault_config` - The vault config key.", "* `lockup_config` - The lockup config key.", "* `collection` - The collection of the NFT deposit receipt.", "* `deposit_receipt` - The address of the NFT deposit receipt.", "* `shares` - The total number of shares withdrawn.", "* `assets` - The total amount of assets withdrawn." ]; type: { kind: "struct"; fields: [ { name: "payer"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; }, { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "collection"; type: "pubkey"; }, { name: "depositReceipt"; type: "pubkey"; }, { name: "shares"; type: "u64"; }, { name: "assets"; type: "u64"; } ]; }; }, { name: "humaConfigChangedEvent"; docs: [ "The Huma config has been updated.", "", "# Fields", "* `vault_config` - The vault config.", "* `huma_config` - The new Huma config." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "oldHumaConfig"; type: "pubkey"; }, { name: "newHumaConfig"; type: "pubkey"; } ]; }; }, { name: "humaFeeBpsChangedEvent"; docs: [ "The Huma fee bps has been updated.", "", "# Fields", "* `vault_config` - The vault config.", "* `old_huma_fee_bps` - The old Huma fee in basis points.", "* `new_huma_fee_bps` - The new Huma fee in basis points." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "oldHumaFeeBps"; type: "u16"; }, { name: "newHumaFeeBps"; type: "u16"; } ]; }; }, { name: "humaFeeWithdrawnEvent"; docs: [ "Huma fee have been withdrawn from the vault.", "", "# Fields", "* `vault_config` - The vault config key.", "* `huma_treasury` - The Huma treasury account that withdrew the fee.", "* `amount` - The amount of fee withdrawn." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "humaTreasury"; type: "pubkey"; }, { name: "amount"; type: "u64"; } ]; }; }, { name: "initialDepositMadeEvent"; docs: [ "An initial deposit has been made with the specified lockup.", "", "# Fields", "* `vault_owner_treasury` - The vault owner treasury account that made the deposit.", "* `vault_config` - The vault config key.", "* `lockup_config` - The lockup config key.", "* `collection` - The collection of the NFT deposit receipt.", "* `deposit_receipt` - The address of the NFT deposit receipt.", "* `assets` - The amount of deposit assets deposited.", "* `shares` - The number of shares issued for this deposit.", "* `lockup_auto_renewal` - Whether the lockup auto renews.", "* `deposited_at` - The timestamp when the deposit was made.", "* `lockup_expires_at` - The timestamp when the lockup expires." ]; type: { kind: "struct"; fields: [ { name: "vaultOwnerTreasury"; type: "pubkey"; }, { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "collection"; type: "pubkey"; }, { name: "depositReceipt"; type: "pubkey"; }, { name: "assets"; type: "u64"; }, { name: "shares"; type: "u64"; }, { name: "lockupAutoRenewal"; type: "bool"; }, { name: "depositedAt"; type: "u64"; }, { name: "lockupExpiresAt"; type: "u64"; } ]; }; }, { name: "key"; type: { kind: "enum"; variants: [ { name: "uninitialized"; }, { name: "assetV1"; }, { name: "hashedAssetV1"; }, { name: "pluginHeaderV1"; }, { name: "pluginRegistryV1"; }, { name: "collectionV1"; } ]; }; }, { name: "lockupApyChangedEvent"; docs: [ "The lockup APY has been updated.", "", "# Fields", "* `vault_config` - The vault config key.", "* `lockup_config` - The lockup config key.", "* `apy_bps` - The new target APY expressed in basis points." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "apyBps"; type: "u16"; } ]; }; }, { name: "lockupAssetsRefreshedEvent"; docs: [ "The assets for a lockup option have been refreshed.", "", "# Fields", "* `lockup_config` - The lockup config key.", "* `apy_bps` - The target APY expressed in basis points.", "* `old_assets_refreshed_at` - The last time assets were refreshed.", "* `old_assets` - The lockup option assets before update.", "* `new_assets` - The updated lockup option assets." ]; type: { kind: "struct"; fields: [ { name: "lockupConfig"; type: "pubkey"; }, { name: "apyBps"; type: "u16"; }, { name: "oldAssetsRefreshedAt"; type: "u64"; }, { name: "oldAssets"; type: "u64"; }, { name: "newAssets"; type: "u64"; } ]; }; }, { name: "lockupConfig"; docs: [ "Lockup configurations.", "", "# Fields", "* `bump` - The account bump.", "* `id` - The ID of the lockup option.", "* `nft_collection_bump` - The bump of the NFT collection.", "* `lockup_duration_secs` - The lockup duration in seconds.", "* `apy_bps` - The target APY expressed in basis points. This is the rate", "at which users earn yield." ]; type: { kind: "struct"; fields: [ { name: "bump"; type: "u8"; }, { name: "nftCollection"; type: "pubkey"; }, { name: "lockupDurationSecs"; type: "u64"; }, { name: "apyBps"; type: "u16"; }, { name: "reserved"; type: { array: ["u8", 80]; }; } ]; }; }, { name: "lockupExtendedEvent"; docs: [ "An unlocked position has been locked up.", "", "# Fields", "* `payer` - The account that paid for the rent-exempt fee.", "* `depositor` - The account that made the deposit.", "* `vault_config` - The vault config.", "* `source_lockup_config` - The source lockup config.", "* `source_collection` - The collection of the source deposit receipt.", "* `source_deposit_receipt` - The source deposit receipt.", "* `source_deposit_record` - The source deposit record.", "* `destination_lockup_config` - The destination lockup config.", "* `destination_collection` - The collection of the destination deposit receipt.", "* `destination_deposit_receipt` - The destination deposit receipt.", "* `destination_deposit_record` - The destination deposit record.", "* `shares` - The number of shares of the deposit.", "* `assets` - The amount of assets extended.", "* `lockup_auto_renewal` - Whether the lockup auto renews.", "* `deposited_at` - The timestamp when the deposit was made.", "* `old_lockup_expires_at` - The old lockup expiration timestamp.", "* `new_lockup_expires_at` - The new lockup expiration timestamp." ]; type: { kind: "struct"; fields: [ { name: "payer"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; }, { name: "vaultConfig"; type: "pubkey"; }, { name: "sourceLockupConfig"; type: "pubkey"; }, { name: "sourceCollection"; type: "pubkey"; }, { name: "sourceDepositReceipt"; type: "pubkey"; }, { name: "sourceDepositRecord"; type: "pubkey"; }, { name: "destinationLockupConfig"; type: "pubkey"; }, { name: "destinationCollection"; type: "pubkey"; }, { name: "destinationDepositReceipt"; type: "pubkey"; }, { name: "destinationDepositRecord"; type: "pubkey"; }, { name: "shares"; type: "u64"; }, { name: "assets"; type: "u64"; }, { name: "lockupAutoRenewal"; type: "bool"; }, { name: "depositedAt"; type: "u64"; }, { name: "oldLockupExpiresAt"; type: "u64"; }, { name: "newLockupExpiresAt"; type: "u64"; } ]; }; }, { name: "lockupOptionAddedEvent"; docs: [ "A lockup option has been added to the vault.", "", "# Fields", "* `vault_config` - The vault config key.", "* `lockup_config` - The lockup config key.", "* `collection` - The NFT collection key." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "collection"; type: "pubkey"; } ]; }; }, { name: "lockupOptionRemovedEvent"; docs: [ "A lockup option has been removed from the vault.", "", "# Fields", "* `vault_config` - The vault config key.", "* `lockup_config` - The lockup config key.", "* `collection` - The NFT collection key." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "collection"; type: "pubkey"; } ]; }; }, { name: "lockupRenewedEvent"; docs: [ "The lockup on a position has been renewed for the same duration.", "", "# Fields", "* `signer` - The account that initiated the instruction.", "* `depositor` - The account that made the deposit.", "* `vault_config` - The vault config.", "* `lockup_config` - The lockup config.", "* `collection` - The collection of the deposit receipt.", "* `deposit_receipt` - The deposit receipt.", "* `deposit_record` - The deposit record.", "* `shares` - The number of shares of the deposit.", "* `lockup_auto_renewal` - Whether the lockup auto renews.", "* `deposited_at` - The timestamp when the deposit was made.", "* `old_lockup_expires_at` - The old lockup expiration timestamp.", "* `new_lockup_expires_at` - The new lockup expiration timestamp." ]; type: { kind: "struct"; fields: [ { name: "signer"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; }, { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "collection"; type: "pubkey"; }, { name: "depositReceipt"; type: "pubkey"; }, { name: "depositRecord"; type: "pubkey"; }, { name: "shares"; type: "u64"; }, { name: "lockupAutoRenewal"; type: "bool"; }, { name: "depositedAt"; type: "u64"; }, { name: "oldLockupExpiresAt"; type: "u64"; }, { name: "newLockupExpiresAt"; type: "u64"; } ]; }; }, { name: "lockupState"; docs: [ "Lockup states.", "", "# Fields", "* `lockup_config_key` - The address of the `LockupConfig` account.", "* `assets` - The total assets under the lockup option according to the actual APY.", "* `losses` - The total losses incurred in the lockup option.", "* `supply` - The total number of shares outstanding in the lockup option.", "* `assets_refreshed_at` - The last time the assets were refreshed.", "* `huma_fee` - The Huma protocol fee." ]; type: { kind: "struct"; fields: [ { name: "lockupConfigKey"; type: "pubkey"; }, { name: "assets"; type: "u64"; }, { name: "losses"; type: "u64"; }, { name: "supply"; type: "u64"; }, { name: "assetsRefreshedAt"; type: "u64"; }, { name: "humaFee"; type: { defined: { name: "fee"; }; }; }, { name: "reserved"; type: { array: ["u8", 40]; }; } ]; }; }, { name: "lossAuthorityChangedEvent"; docs: [ "The loss authority has been updated.", "", "# Fields", "* `vault_config` - The vault config.", "* `old_loss_authority` - The address of the old loss authority.", "* `new_loss_authority` - The address of the new loss authority." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "oldLossAuthority"; type: "pubkey"; }, { name: "newLossAuthority"; type: "pubkey"; } ]; }; }, { name: "lossDeclaredEvent"; docs: [ "A loss has been declared on the vault.", "", "# Fields", "* `vault_config` - The vault config key.", "* `loss_distributed` - The amount of loss distributed to each lockup option." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "lossAuthority"; type: "pubkey"; }, { name: "lossDistributed"; type: { vec: "u64"; }; } ]; }; }, { name: "lossRecoveredEvent"; docs: [ "A loss has been recovered on the vault.", "", "# Fields", "* `vault_config` - The vault config key.", "* `loss_authority` - The authority that recovered the loss.", "* `loss_recovered` - The amount of loss recovered for each lockup option." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "lossAuthority"; type: "pubkey"; }, { name: "lossRecovered"; type: { vec: "u64"; }; } ]; }; }, { name: "pauserAddedEvent"; docs: [ "A new pauser has been added.", "", "# Fields", "* `vault_config` - The vault config.", "* `pauser` - The new pauser being added." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "pauser"; type: "pubkey"; } ]; }; }, { name: "pauserConfig"; type: { kind: "struct"; fields: [ { name: "bump"; type: "u8"; }, { name: "reserved"; type: { array: ["u8", 80]; }; } ]; }; }, { name: "pauserRemovedEvent"; docs: [ "A pauser has been removed.", "", "# Fields", "* `vault_config` - The vault config.", "* `pauser` - The pauser being removed." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "pauser"; type: "pubkey"; } ]; }; }, { name: "redeemedFundsPaidOutEvent"; docs: [ "Redeemed funds have been paid out to the depositor.", "", "# Fields", "* `request_id` - The ID of the redemption request that was processed.", "* `depositor` - The depositor whose shares have been redeemed.", "* `amount` - The amount of the disbursement." ]; type: { kind: "struct"; fields: [ { name: "requestId"; type: "u64"; }, { name: "depositor"; type: "pubkey"; }, { name: "amount"; type: "u64"; } ]; }; }, { name: "redeemedFundsReservedEvent"; docs: [ "Redeemed funds have been held in the vault for manual claiming later.", "", "# Fields", "* `request_id` - The ID of the redemption request that was processed.", "* `depositor` - The depositor whose shares have been redeemed.", "* `amount` - The amount that was reserved." ]; type: { kind: "struct"; fields: [ { name: "requestId"; type: "u64"; }, { name: "depositor"; type: "pubkey"; }, { name: "amount"; type: "u64"; } ]; }; }, { name: "redemptionConfig"; docs: [ "Redemption related configurations.", "", "# Fields", "* `min_redemption_shares` - The minimum number of shares that can be per redemption request.", "* `max_total_redemption_shares_per_window` - The maximum number of shares that can be requested", "for redemption across all lenders per time window.", "* `redemption_buffer_bps` - The additional % of shares to request from the strategy protocol", "to account for the continuous increase of vault token price while redemption is pending.", "* `expected_redemption_processing_delay_secs` - The expected number of seconds between the current", "action and when redemption processing occurs. This field is used in two instructions:", "1. In `deploy`: Estimates the amount of assets to reserve for pending redemptions.", "2. In `submit_redemption_request`: Estimates how many shares can be processed using existing", "vault assets.", "**Impact of setting a value higher than the actual delay:**", "- In `deploy`: More conservative behavior (reserves more assets, deploys less to strategy).", "- In `submit_redemption_request`: More aggressive behavior (submits more shares to strategy", "than necessary).", "Both effects result in more assets remaining in the vault than strictly necessary. This", "improves redemption fulfillment safety at the cost of reduced capital efficiency." ]; type: { kind: "struct"; fields: [ { name: "minRedemptionShares"; type: "u64"; }, { name: "maxTotalRedemptionSharesPerWindow"; type: "u64"; }, { name: "redemptionBufferBps"; type: "u16"; }, { name: "expectedRedemptionProcessingDelaySecs"; type: "u64"; }, { name: "reserved"; type: { array: ["u8", 40]; }; } ]; }; }, { name: "redemptionConfigChangedEvent"; docs: [ "The redemption config has been updated.", "", "# Fields", "* `vault_config` - The vault config.", "* `redemption_config` - The new redemption config." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "redemptionConfig"; type: { defined: { name: "redemptionConfig"; }; }; } ]; }; }, { name: "redemptionGating"; docs: [ "Controls the frequency of redemption requests.", "", "# Fields", "* `total_shares_requested` - The total number of shares requested for redemption.", "* `window_starts_at` - The timestamp of the start of the redemption window." ]; type: { kind: "struct"; fields: [ { name: "totalSharesRequested"; type: "u64"; }, { name: "windowStartsAt"; type: "u64"; }, { name: "reserved"; type: { array: ["u8", 40]; }; } ]; }; }, { name: "redemptionQueue"; docs: [ "A queue that holds all redemption requests in the vault.", "", "# Fields", "* `shares_pending_submission` - The total number of shares requested for redemption and awaiting", "submission to the strategy protocol. The value increases as redemption requests are added to", "the queue, and decreases as redemption requests are submitted to the strategy protocol.", "* `shares_pending_processing` - The total number of shares requested for redemption that have been", "submitted to the strategy protocol and are awaiting processing. The value increases as", "redemption requests are submitted to the strategy protocol, and decreases as redemption", "requests are processed.", "* `next_request_id` - The ID of the next request to be processed.", "* `last_request_id` - The ID of the last request to be processed.", "* `redemption_gating` - The redemption gating information." ]; type: { kind: "struct"; fields: [ { name: "sharesPendingSubmission"; type: "u64"; }, { name: "sharesPendingProcessing"; type: "u64"; }, { name: "nextRequestId"; type: "u64"; }, { name: "lastRequestId"; type: "u64"; }, { name: "redemptionGating"; type: { defined: { name: "redemptionGating"; }; }; }, { name: "reserved"; type: { array: ["u8", 40]; }; } ]; }; }, { name: "redemptionRequest"; docs: [ "States for a redemption request.", "", "# Fields", "* `bump` - The bump of the account.", "* `id` - The ID of the redemption request.", "* `depositor` - The depositor who submitted the request.", "* `lockup_config` - The `LockupConfig` key of the lockup that the request was added to.", "* `shares_requested` - The number of shares requested for redemption.", "* `requested_at` - The timestamp at which the request was submitted.", "* `deposit_receipt_to_burn` - The key of the deposit receipt to burn if all shares are being redeemed." ]; type: { kind: "struct"; fields: [ { name: "bump"; type: "u8"; }, { name: "id"; type: "u64"; }, { name: "depositor"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "sharesRequested"; type: "u64"; }, { name: "requestedAt"; type: "u64"; }, { name: "depositReceiptToBurn"; type: { option: "pubkey"; }; }, { name: "reserved"; type: { array: ["u8", 80]; }; } ]; }; }, { name: "redemptionRequestProcessedEvent"; docs: [ "A redemption request has been processed.", "", "# Fields", "* `depositor` - The depositor who submitted the request.", "* `request_id` - The ID of the redemption request.", "* `shares_processed` - The number of shares processed.", "* `amount_processed` - The resulting amount processed.", "* `collection` - The collection of the NFT deposit receipt, if it's provided.", "* `deposit_receipt` - The address of the NFT deposit receipt, if it's provided." ]; type: { kind: "struct"; fields: [ { name: "depositor"; type: "pubkey"; }, { name: "requestId"; type: "u64"; }, { name: "sharesProcessed"; type: "u64"; }, { name: "amountProcessed"; type: "u64"; }, { name: "humaFeeRedeemed"; type: "u64"; }, { name: "collection"; type: { option: "pubkey"; }; }, { name: "depositReceipt"; type: { option: "pubkey"; }; } ]; }; }, { name: "redemptionRequestSubmittedEvent"; docs: [ "A redemption request has been submitted to the strategy protocol.", "", "# Fields", "* `vault_config` - The vault config key.", "* `lockup_config` - The lockup config key.", "* `strategy_tokens_requested` - The number of strategy tokens requested for redemption in the strategy protocol." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "strategyTokensRequested"; type: "u64"; } ]; }; }, { name: "redemptionRequestedEvent"; docs: [ "A depositor has requested redemption.", "", "# Fields", "* `payer` - The account that paid for the rent-exempt fee.", "* `depositor` - The depositor who requested redemption.", "* `vault_config` - The vault config key.", "* `lockup_config` - The lockup config key.", "* `collection` - The collection of the NFT deposit receipt.", "* `deposit_receipt` - The address of the NFT deposit receipt.", "* `request_id` - The ID of the newly created request.", "* `shares` - The number of shares to be redeemed." ]; type: { kind: "struct"; fields: [ { name: "payer"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; }, { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "collection"; type: "pubkey"; }, { name: "depositReceipt"; type: "pubkey"; }, { name: "requestId"; type: "u64"; }, { name: "shares"; type: "u64"; } ]; }; }, { name: "setUpForDeploymentEvent"; docs: [ "The vault has been setup for asset deployment into the target protocol.", "", "# Fields", "* `vault_config` - The vault config." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; } ]; }; }, { name: "strategyConfig"; docs: [ "Strategy related configurations.", "", "# Fields", "* `strategy_mint` - The mint of the strategy token. The field is optional because some programs", "may not issue tokens in return, e.g. the VSR program.", "* `vault_strategy_type` - The type of the vault strategy.", "* `target_key` - The primary account the vault's strategy interacts with.", "* `strategist` - The account that will deploy the strategy tokens into more sophisticated strategies such as looping.", "The field is optional because the vault may not have a strategy token, or it simply holds all the strategy tokens.", "or the vault is capable of deploying the strategy tokens on its own." ]; type: { kind: "struct"; fields: [ { name: "strategyMint"; type: { option: "pubkey"; }; }, { name: "vaultStrategyType"; type: { defined: { name: "vaultStrategyType"; }; }; }, { name: "targetKey"; type: "pubkey"; }, { name: "strategist"; type: { option: "pubkey"; }; }, { name: "reserved"; type: { array: ["u8", 40]; }; } ]; }; }, { name: "strategyConfigChangedEvent"; docs: [ "The strategy config has been updated.", "", "# Fields", "* `vault_config` - The vault config.", "* `strategy_config` - The new strategy config." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "strategyConfig"; type: { defined: { name: "strategyConfig"; }; }; } ]; }; }, { name: "strategyTokenMigratedEvent"; docs: [ "Event emitted when a migration occurs.", "", "# Fields", "* `payer` - The account that paid for the rent-exempt fee.", "* `depositor` - The depositor account.", "* `vault_config` - The vault config key.", "* `lockup_config` - The lockup config key.", "* `collection` - The collection of the NFT deposit receipt.", "* `deposit_receipt` - The deposit receipt account.", "* `num_strategy_tokens` - The number of strategy tokens migrated.", "* `assets` - The amount of assets migrated.", "* `shares` - The number of shares minted for the migrated assets.", "* `lockup_auto_renewal` - Whether the lockup auto renews." ]; type: { kind: "struct"; fields: [ { name: "payer"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; }, { name: "vaultConfig"; type: "pubkey"; }, { name: "lockupConfig"; type: "pubkey"; }, { name: "collection"; type: "pubkey"; }, { name: "depositReceipt"; type: "pubkey"; }, { name: "numStrategyTokens"; type: "u64"; }, { name: "assets"; type: "u64"; }, { name: "shares"; type: "u64"; }, { name: "lockupAutoRenewal"; type: "bool"; } ]; }; }, { name: "strategyTokensReturnedEvent"; docs: [ "Strategy tokens have been returned to the vault.", "", "# Fields", "* `vault_config` - The vault config key.", "* `strategist` - The strategist who returned the tokens.", "* `amount` - The amount of strategy tokens returned." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "strategist"; type: "pubkey"; }, { name: "amount"; type: "u64"; } ]; }; }, { name: "unlockedEvent"; docs: [ "A deposit position has been unlocked.", "", "# Fields", "* `payer` - The account that signed the instruction.", "* `depositor` - The depositor who unlocked the deposit.", "* `vault_config` - The vault config.", "* `source_lockup_config` - The source lockup config.", "* `source_collection` - The collection of the source deposit receipt.", "* `source_deposit_receipt` - The source deposit receipt.", "* `source_deposit_record` - The source deposit record.", "* `destination_lockup_config` - The destination lockup config.", "* `destination_collection` - The collection of the destination deposit receipt.", "* `destination_deposit_receipt` - The destination deposit receipt.", "* `destination_deposit_record` - The destination deposit record.", "* `shares` - The number of shares of the deposit.", "* `assets` - The amount of assets unlocked.", "* `lockup_auto_renewal` - Whether the lockup auto renews.", "* `deposited_at` - The timestamp when the deposit was made.", "* `old_lockup_expires_at` - The old lockup expiration timestamp.", "* `new_lockup_expires_at` - The new lockup expiration timestamp." ]; type: { kind: "struct"; fields: [ { name: "payer"; type: "pubkey"; }, { name: "depositor"; type: "pubkey"; }, { name: "vaultConfig"; type: "pubkey"; }, { name: "sourceLockupConfig"; type: "pubkey"; }, { name: "sourceCollection"; type: "pubkey"; }, { name: "sourceDepositReceipt"; type: "pubkey"; }, { name: "sourceDepositRecord"; type: "pubkey"; }, { name: "destinationLockupConfig"; type: "pubkey"; }, { name: "destinationCollection"; type: "pubkey"; }, { name: "destinationDepositReceipt"; type: "pubkey"; }, { name: "destinationDepositRecord"; type: "pubkey"; }, { name: "shares"; type: "u64"; }, { name: "assets"; type: "u64"; }, { name: "lockupAutoRenewal"; type: "bool"; }, { name: "depositedAt"; type: "u64"; }, { name: "oldLockupExpiresAt"; type: "u64"; }, { name: "newLockupExpiresAt"; type: "u64"; } ]; }; }, { name: "updateAuthority"; type: { kind: "enum"; variants: [ { name: "none"; }, { name: "address"; fields: ["pubkey"]; }, { name: "collection"; fields: ["pubkey"]; } ]; }; }, { name: "vaultClosedEvent"; docs: [ "The vault has been closed.", "", "# Fields", "* `vault_config` - The vault config key." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; } ]; }; }, { name: "vaultConfig"; docs: [ "Vault configurations.", "", "# Fields", "* `bump` - The account bump.", "* `id` - The ID of the vault.", "* `name` - The name of the vault.", "* `vault_owner` - The owner of the vault.", "* `vault_owner_treasury` - The treasury of the vault owner.", "* `vault_authority_bump` - The bump of the vault authority.", "* `loss_authority` - The authority that can claim loss from the vault.", "* `vault_operator` - The account that's responsible for various tasks, such as updating the APY of each lockup.", "* `huma_config` - The address of the `HumaConfig` account that governs the vault.", "* `huma_fee_bps` - The percentage of the vault AUM that Huma charges as its fee, expressed in basis points.", "* `deposit_config` - The deposit configuration of the vault.", "* `redemption_config` - The redemption configuration of the vault.", "* `strategy_config` - The strategy configuration of the vault." ]; type: { kind: "struct"; fields: [ { name: "bump"; type: "u8"; }, { name: "id"; type: "pubkey"; }, { name: "name"; type: "string"; }, { name: "vaultOwner"; type: "pubkey"; }, { name: "vaultOwnerTreasury"; type: "pubkey"; }, { name: "vaultAuthorityBump"; type: "u8"; }, { name: "lossAuthority"; type: "pubkey"; }, { name: "vaultOperator"; type: "pubkey"; }, { name: "humaConfig"; type: "pubkey"; }, { name: "humaFeeBps"; type: "u16"; }, { name: "depositConfig"; type: { defined: { name: "depositConfig"; }; }; }, { name: "redemptionConfig"; type: { defined: { name: "redemptionConfig"; }; }; }, { name: "strategyConfig"; type: { defined: { name: "strategyConfig"; }; }; }, { name: "reserved"; type: { array: ["u8", 80]; }; } ]; }; }, { name: "vaultCreatedEvent"; docs: [ "A vault has been created.", "", "# Fields", "* `id` - The vault ID.", "* `name` - The name of the vault.", "* `huma_config` - The ID of the Huma config that the vault is associated with.", "* `vault_owner` - The address of the vault owner.", "* `vault_owner_treasury` - The address of the vault owner treasury.", "* `vault_authority` - The address of the vault authority account.", "* `loss_authority` - The address of the loss authority.", "* `vault_operator` - The address of the vault operator.", "* `deposit_mint` - The mint account of the deposit asset.", "* `strategy_mint` - The mint account of the strategy asset.", "* `vault_strategy_type` - The type of the vault strategy.", "* `target_key` - The primary account the vault's strategy interacts with.", "* `strategist` - The address of the strategist." ]; type: { kind: "struct"; fields: [ { name: "id"; type: "pubkey"; }, { name: "name"; type: "string"; }, { name: "humaConfig"; type: "pubkey"; }, { name: "vaultOwner"; type: "pubkey"; }, { name: "vaultOwnerTreasury"; type: "pubkey"; }, { name: "vaultAuthority"; type: "pubkey"; }, { name: "lossAuthority"; type: "pubkey"; }, { name: "vaultOperator"; type: "pubkey"; }, { name: "depositMint"; type: "pubkey"; }, { name: "strategyMint"; type: { option: "pubkey"; }; }, { name: "vaultStrategyType"; type: { defined: { name: "vaultStrategyType"; }; }; }, { name: "targetKey"; type: "pubkey"; }, { name: "strategist"; type: { option: "pubkey"; }; } ]; }; }, { name: "vaultDisabledEvent"; docs: [ "The vault has been disabled.", "", "# Fields", "* `vault_config` - The vault config." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; } ]; }; }, { name: "vaultEnabledEvent"; docs: [ "The vault has been enabled.", "", "# Fields", "* `vault_config` - The vault config." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; } ]; }; }, { name: "vaultEnteredPreClosureEvent"; docs: [ "The vault has entered the pre-closure status to prepare for final closing.", "", "# Fields", "* `vault_config` - The vault config." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; } ]; }; }, { name: "vaultNameChangedEvent"; docs: [ "The vault name has been updated.", "", "# Fields", "* `vault_config` - The vault config.", "* `old_name` - The old name of the vault.", "* `new_name` - The new name of the vault." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "oldName"; type: "string"; }, { name: "newName"; type: "string"; } ]; }; }, { name: "vaultOperatorChangedEvent"; docs: [ "The vault operator has been updated.", "", "# Fields", "* `vault_config` - The vault config.", "* `old_vault_operator` - The address of the old vault operator.", "* `new_vault_operator` - The address of the new vault operator." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "oldVaultOperator"; type: "pubkey"; }, { name: "newVaultOperator"; type: "pubkey"; } ]; }; }, { name: "vaultOwnerChangedEvent"; docs: [ "The vault owner has changed.", "", "# Fields", "* `vault_config` - The vault config.", "* `old_owner` - The address of the old owner.", "* `new_owner` - The address of the new owner." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "oldOwner"; type: "pubkey"; }, { name: "newOwner"; type: "pubkey"; } ]; }; }, { name: "vaultOwnerTreasuryChangedEvent"; docs: [ "The vault owner treasury has been updated.", "", "# Fields", "* `vault_config` - The vault config.", "* `old_treasury` - The address of the old vault owner treasury.", "* `new_treasury` - The address of the new vault owner treasury." ]; type: { kind: "struct"; fields: [ { name: "vaultConfig"; type: "pubkey"; }, { name: "oldTreasury"; type: "pubkey"; }, { name: "newTreasury"; type: "pubkey"; } ]; }; }, { name: "vaultState"; docs: [ "The state of the vault.", "", "# Fields", "* `bump` - The account bump.", "* `status` - The status of the vault.", "* `redemption_queue` - The redemption queue.", "* `disbursement_reserve` - The amount of assets that have been redeemed but not yet withdrawn by users.", "* `strategy_tokens_reserve` - The amount of strategy tokens that have been returned to the vault for redemption submission.", "* `lockup_states` - The lockup states." ]; type: { kind: "struct"; fields: [ { name: "bump"; type: "u8"; }, { name: "status"; type: { defined: { name: "vaultStatus"; }; }; }, { name: "redemptionQueue"; type: { defined: { name: "redemptionQueue"; }; }; }, { name: "disbursementReserve"; type: "u64"; }, { name: "strategyTokenReserve"; type: "u64"; }, { name: "lockupStates"; type: { vec: { defined: { name: "lockupState"; }; }; }; }, { name: "reserved"; type: { array: ["u8", 80]; }; } ]; }; }, { name: "vaultStatus"; docs: [ "Vault statuses.", "", "# Variants", "* `Off` - The vault is temporarily turned off.", "* `On` - The vault is active.", "* `PreClosure` - The vault is undergoing final processing to prepare for closure.", "* `Closed` - The vault is closed." ]; type: { kind: "enum"; variants: [ { name: "off"; }, { name: "on"; }, { name: "preClosure"; }, { name: "closed"; } ]; }; }, { name: "vaultStrategyType"; type: { kind: "enum"; variants: [ { name: "pstStrategy"; } ]; }; } ]; constants: [ { name: "depositorStateSeed"; type: "bytes"; value: "[100, 101, 112, 111, 115, 105, 116, 111, 114, 95, 115, 116, 97, 116, 101]"; }, { name: "depositRecordSeed"; type: "bytes"; value: "[100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100]"; }, { name: "humaConfigSeed"; type: "bytes"; value: "[104, 117, 109, 97, 95, 99, 111, 110, 102, 105, 103]"; }, { name: "lockupConfigSeed"; type: "bytes"; value: "[108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103]"; }, { name: "redemptionRequestSeed"; type: "bytes"; value: "[114, 101, 100, 101, 109, 112, 116, 105, 111, 110, 95, 114, 101, 113, 117, 101, 115, 116]"; }, { name: "vaultAuthoritySeed"; type: "bytes"; value: "[118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121]"; }, { name: "vaultConfigSeed"; type: "bytes"; value: "[118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103]"; }, { name: "vaultPauserSeed"; type: "bytes"; value: "[118, 97, 117, 108, 116, 95, 112, 97, 117, 115, 101, 114]"; }, { name: "vaultStateSeed"; type: "bytes"; value: "[118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]"; } ]; }; //# sourceMappingURL=huma-vault.d.ts.map