{
    "address": "prm1azdDGzyqP76s3Hv2nuG3uLnBgR5u2d7pANwmmzC",
    "metadata": {
        "name": "huma_vault",
        "version": "1.1.0",
        "spec": "0.1.0",
        "description": "Created with Anchor"
    },
    "instructions": [
        {
            "name": "add_lockup_option",
            "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": "vault_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["vault_config"]
                },
                {
                    "name": "collection",
                    "docs": ["The address of the new NFT collection."],
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "arg",
                                "path": "duration_secs"
                            }
                        ]
                    }
                },
                {
                    "name": "mpl_core_program",
                    "docs": ["The MPL Core program."],
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "duration_secs",
                    "type": "u64"
                },
                {
                    "name": "apy_bps",
                    "type": "u16"
                },
                {
                    "name": "nft_collection_uri",
                    "type": "string"
                }
            ]
        },
        {
            "name": "add_pauser",
            "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": "vault_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pauser_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 112, 97, 117, 115, 101, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "arg",
                                "path": "pauser"
                            }
                        ]
                    }
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "pauser",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "close_depositor_accounts",
            "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": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "depositor_state",
                    "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": "lockup_config"
                            },
                            {
                                "kind": "account",
                                "path": "depositor"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "close_vault",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_deposit_token",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "token_program"
                }
            ],
            "args": []
        },
        {
            "name": "create_depositor_accounts",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "depositor_state",
                    "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": "lockup_config"
                            },
                            {
                                "kind": "arg",
                                "path": "depositor"
                            }
                        ]
                    }
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "depositor",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "create_vault",
            "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": "huma_config"
                },
                {
                    "name": "vault_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "arg",
                                "path": "id"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "strategy_mint",
                    "optional": true
                },
                {
                    "name": "vault_strategy_token",
                    "writable": true,
                    "optional": true
                },
                {
                    "name": "deposit_token_program"
                },
                {
                    "name": "strategy_token_program",
                    "optional": true
                },
                {
                    "name": "associated_token_program",
                    "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "id",
                    "type": "pubkey"
                },
                {
                    "name": "name",
                    "type": "string"
                },
                {
                    "name": "vault_owner_treasury",
                    "type": "pubkey"
                },
                {
                    "name": "loss_authority",
                    "type": "pubkey"
                },
                {
                    "name": "vault_operator",
                    "type": "pubkey"
                },
                {
                    "name": "vault_strategy_type",
                    "type": {
                        "defined": {
                            "name": "VaultStrategyType"
                        }
                    }
                },
                {
                    "name": "target_key",
                    "type": "pubkey"
                },
                {
                    "name": "strategist",
                    "type": {
                        "option": "pubkey"
                    }
                }
            ]
        },
        {
            "name": "declare_loss",
            "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": "loss_authority",
                    "signer": true,
                    "relations": ["vault_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "deposit_token_program"
                }
            ],
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "zero_duration_lockup_config",
                    "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": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "zero_duration_lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "deposit_token_program"
                },
                {
                    "name": "strategist",
                    "optional": true
                },
                {
                    "name": "strategy_mint",
                    "optional": true
                },
                {
                    "name": "vault_strategy_token",
                    "writable": true,
                    "optional": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_mint"
                            }
                        ],
                        "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": "strategist_strategy_token",
                    "writable": true,
                    "optional": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "strategist"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_mint"
                            }
                        ],
                        "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": "strategy_token_program",
                    "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": "deposit_receipt",
                    "docs": ["The address of the NFT deposit receipt."],
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "collection",
                    "writable": true
                },
                {
                    "name": "deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "depositor_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "depositor"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "deposit_token_program"
                },
                {
                    "name": "mpl_core_program",
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "assets",
                    "type": "u64"
                },
                {
                    "name": "lockup_auto_renewal",
                    "type": "bool"
                }
            ],
            "returns": "u64"
        },
        {
            "name": "disable_vault",
            "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": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pauser_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 112, 97, 117, 115, 101, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "depositor_state",
                    "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": "lockup_config"
                            },
                            {
                                "kind": "account",
                                "path": "depositor"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "depositor_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "depositor"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "deposit_token_program"
                }
            ],
            "args": []
        },
        {
            "name": "enable_vault",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                }
            ],
            "args": []
        },
        {
            "name": "enter_pre_closure",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "extend_lockup",
            "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": "destination_deposit_receipt",
                    "docs": ["The new deposit receipt to create."],
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "source_lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "source_lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "source_collection",
                    "writable": true
                },
                {
                    "name": "source_deposit_receipt",
                    "docs": ["The deposit receipt to extend the lockup for."],
                    "writable": true
                },
                {
                    "name": "source_deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "source_deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "destination_lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "destination_lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "destination_collection",
                    "writable": true
                },
                {
                    "name": "destination_deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "destination_deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "mpl_core_program",
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": []
        },
        {
            "name": "make_initial_deposit",
            "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": "vault_owner_treasury",
                    "writable": true,
                    "signer": true,
                    "relations": ["vault_config"]
                },
                {
                    "name": "deposit_receipt",
                    "docs": ["The address of the NFT deposit receipt."],
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "collection",
                    "writable": true
                },
                {
                    "name": "deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "vault_owner_treasury_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_owner_treasury"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "deposit_token_program"
                },
                {
                    "name": "mpl_core_program",
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                },
                {
                    "name": "system_program",
                    "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": "new_deposit_receipt",
                    "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "collection",
                    "writable": true
                },
                {
                    "name": "new_deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "new_deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mpl_core_program",
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                },
                {
                    "name": "system_program",
                    "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": "deposit_receipt",
                    "docs": ["The address of the NFT deposit receipt to be minted."],
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "collection",
                    "writable": true
                },
                {
                    "name": "deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "strategy_mint"
                },
                {
                    "name": "depositor_strategy_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "depositor"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_mint"
                            }
                        ],
                        "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": "vault_strategy_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_mint"
                            }
                        ],
                        "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": "mpl_core_program",
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                },
                {
                    "name": "strategy_token_program"
                }
            ],
            "args": [
                {
                    "name": "num_strategy_tokens",
                    "type": "u64"
                },
                {
                    "name": "lockup_auto_renewal",
                    "type": "bool"
                }
            ]
        },
        {
            "name": "process_redemption_request",
            "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": ["redemption_request"]
                },
                {
                    "name": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "collection",
                    "writable": true,
                    "optional": true
                },
                {
                    "name": "deposit_receipt",
                    "writable": true,
                    "optional": true
                },
                {
                    "name": "deposit_record",
                    "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": "deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "redemption_request",
                    "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": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "depositor_state",
                    "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": "lockup_config"
                            },
                            {
                                "kind": "account",
                                "path": "depositor"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "depositor_deposit_token",
                    "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": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "deposit_token_program"
                },
                {
                    "name": "mpl_core_program",
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": []
        },
        {
            "name": "recover_loss",
            "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": "loss_authority",
                    "signer": true,
                    "relations": ["vault_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "loss_authority_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "loss_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "deposit_token_program"
                }
            ],
            "args": [
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "refresh_lockup_assets",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "remove_lockup_option",
            "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": "vault_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["vault_config"]
                },
                {
                    "name": "collection",
                    "writable": true
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "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": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "mpl_core_program",
                    "docs": ["The MPL Core program."],
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                }
            ],
            "args": []
        },
        {
            "name": "remove_pauser",
            "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": "vault_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pauser_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 112, 97, 117, 115, 101, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "arg",
                                "path": "pauser"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "pauser",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "renew_lockup",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "collection"
                },
                {
                    "name": "deposit_receipt",
                    "docs": ["The deposit receipt to renew the lockup for."]
                },
                {
                    "name": "deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deposit_receipt"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "request_redemption",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "collection"
                },
                {
                    "name": "deposit_receipt",
                    "writable": true
                },
                {
                    "name": "deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "depositor_state",
                    "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": "lockup_config"
                            },
                            {
                                "kind": "account",
                                "path": "depositor"
                            }
                        ]
                    }
                },
                {
                    "name": "redemption_request",
                    "writable": true
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mpl_core_program",
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "shares",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "return_strategy_tokens",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_mint"
                },
                {
                    "name": "vault_strategy_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_mint"
                            }
                        ],
                        "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": "strategist_strategy_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "strategist"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_mint"
                            }
                        ],
                        "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": "strategy_token_program"
                }
            ],
            "args": [
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "setup_for_deployment",
            "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": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "submit_redemption_request",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_deposit_token",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "deposit_token_program"
                }
            ],
            "args": []
        },
        {
            "name": "toggle_auto_renewal",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "collection"
                },
                {
                    "name": "deposit_receipt"
                },
                {
                    "name": "deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deposit_receipt"
                            }
                        ]
                    }
                }
            ],
            "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": "destination_deposit_receipt",
                    "docs": [
                        "The address of the new deposit receipt that will be minted."
                    ],
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "depositor"
                },
                {
                    "name": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "source_lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "source_lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "source_collection",
                    "writable": true
                },
                {
                    "name": "source_deposit_receipt",
                    "docs": ["The deposit receipt to extend the lockup for."],
                    "writable": true
                },
                {
                    "name": "source_deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "source_deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "destination_lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "destination_lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "destination_collection",
                    "writable": true
                },
                {
                    "name": "destination_deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "destination_deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "mpl_core_program",
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": []
        },
        {
            "name": "update_asset_cap",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_asset_cap",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "update_deposit_config",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                }
            ],
            "args": [
                {
                    "name": "deposit_config",
                    "type": {
                        "defined": {
                            "name": "DepositConfig"
                        }
                    }
                }
            ]
        },
        {
            "name": "update_huma_config",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "new_huma_config"
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "update_huma_fee_bps",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_huma_fee_bps",
                    "type": "u16"
                }
            ]
        },
        {
            "name": "update_lockup_apy",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_apy_bps",
                    "type": "u16"
                }
            ]
        },
        {
            "name": "update_loss_authority",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_loss_authority",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "update_redemption_config",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                }
            ],
            "args": [
                {
                    "name": "redemption_config",
                    "type": {
                        "defined": {
                            "name": "RedemptionConfig"
                        }
                    }
                }
            ]
        },
        {
            "name": "update_strategy_config",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "strategy_config",
                    "type": {
                        "defined": {
                            "name": "StrategyConfig"
                        }
                    }
                }
            ]
        },
        {
            "name": "update_vault_name",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_name",
                    "type": "string"
                }
            ]
        },
        {
            "name": "update_vault_operator",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_vault_operator",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "update_vault_owner",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_owner",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "update_vault_owner_treasury",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_treasury",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "withdraw_after_vault_closure",
            "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": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lockup_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            },
                            {
                                "kind": "account",
                                "path": "lockup_config.lockup_duration_secs",
                                "account": "LockupConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "collection",
                    "writable": true
                },
                {
                    "name": "deposit_receipt",
                    "writable": true
                },
                {
                    "name": "deposit_record",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114,
                                    100
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deposit_receipt"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "depositor_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "depositor"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "mpl_core_program",
                    "address": "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"
                },
                {
                    "name": "deposit_token_program"
                }
            ],
            "args": []
        },
        {
            "name": "withdraw_huma_fee",
            "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": "huma_treasury",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["vault_config"]
                },
                {
                    "name": "vault_config",
                    "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": "vault_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deposit_mint"
                },
                {
                    "name": "vault_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105,
                                    116, 121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "vault_config"
                            }
                        ]
                    }
                },
                {
                    "name": "vault_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "vault_authority"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "huma_treasury_deposit_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "huma_treasury"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "deposit_mint"
                            }
                        ],
                        "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": "deposit_token_program"
                }
            ],
            "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategist",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_asset_cap",
                        "type": "u64"
                    },
                    {
                        "name": "new_asset_cap",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "assets",
                        "type": "u64"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "lockup_auto_renewal",
                        "type": "bool"
                    },
                    {
                        "name": "deposited_at",
                        "type": "u64"
                    },
                    {
                        "name": "lockup_expires_at",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount_deployed",
                        "type": "u64"
                    },
                    {
                        "name": "num_strategy_tokens_minted",
                        "type": {
                            "option": "u64"
                        }
                    },
                    {
                        "name": "num_strategy_tokens_deployed",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_record",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_auto_renewal",
                        "type": "bool"
                    }
                ]
            }
        },
        {
            "name": "BaseAssetV1",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "key",
                        "type": {
                            "defined": {
                                "name": "Key"
                            }
                        }
                    },
                    {
                        "name": "owner",
                        "type": "pubkey"
                    },
                    {
                        "name": "update_authority",
                        "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": "update_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "name",
                        "type": "string"
                    },
                    {
                        "name": "uri",
                        "type": "string"
                    },
                    {
                        "name": "num_minted",
                        "type": "u32"
                    },
                    {
                        "name": "current_size",
                        "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": "deposit_mint",
                        "type": "pubkey"
                    },
                    {
                        "name": "asset_cap",
                        "type": "u64"
                    },
                    {
                        "name": "min_deposit_amount",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_config",
                        "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": "lockup_auto_renewal",
                        "type": "bool"
                    },
                    {
                        "name": "deposited_at",
                        "type": "u64"
                    },
                    {
                        "name": "lockup_expires_at",
                        "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": "lockup_config",
                        "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": "vault_config",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "depositor",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount_disbursed",
                        "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": "num_pending_redemption_requests",
                        "type": "u64"
                    },
                    {
                        "name": "shares_pending_redemption",
                        "type": "u64"
                    },
                    {
                        "name": "total_amount_processed",
                        "type": "u64"
                    },
                    {
                        "name": "total_amount_withdrawn",
                        "type": "u64"
                    },
                    {
                        "name": "reserved",
                        "type": {
                            "array": ["u8", 40]
                        }
                    }
                ]
            }
        },
        {
            "name": "DepositorState",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "depositor",
                        "type": "pubkey"
                    },
                    {
                        "name": "redemption_record",
                        "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": "deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "deposited_at",
                        "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": "pending_redemption",
                        "type": "u64"
                    },
                    {
                        "name": "pending_withdrawal",
                        "type": "u64"
                    },
                    {
                        "name": "last_accrued_at",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_receipt",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_huma_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "new_huma_config",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_huma_fee_bps",
                        "type": "u16"
                    },
                    {
                        "name": "new_huma_fee_bps",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "huma_treasury",
                        "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": "vault_owner_treasury",
                        "type": "pubkey"
                    },
                    {
                        "name": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "assets",
                        "type": "u64"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "lockup_auto_renewal",
                        "type": "bool"
                    },
                    {
                        "name": "deposited_at",
                        "type": "u64"
                    },
                    {
                        "name": "lockup_expires_at",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "apy_bps",
                        "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": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "apy_bps",
                        "type": "u16"
                    },
                    {
                        "name": "old_assets_refreshed_at",
                        "type": "u64"
                    },
                    {
                        "name": "old_assets",
                        "type": "u64"
                    },
                    {
                        "name": "new_assets",
                        "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": "nft_collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_duration_secs",
                        "type": "u64"
                    },
                    {
                        "name": "apy_bps",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "source_lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "source_collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "source_deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "source_deposit_record",
                        "type": "pubkey"
                    },
                    {
                        "name": "destination_lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "destination_collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "destination_deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "destination_deposit_record",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "assets",
                        "type": "u64"
                    },
                    {
                        "name": "lockup_auto_renewal",
                        "type": "bool"
                    },
                    {
                        "name": "deposited_at",
                        "type": "u64"
                    },
                    {
                        "name": "old_lockup_expires_at",
                        "type": "u64"
                    },
                    {
                        "name": "new_lockup_expires_at",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_record",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "lockup_auto_renewal",
                        "type": "bool"
                    },
                    {
                        "name": "deposited_at",
                        "type": "u64"
                    },
                    {
                        "name": "old_lockup_expires_at",
                        "type": "u64"
                    },
                    {
                        "name": "new_lockup_expires_at",
                        "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": "lockup_config_key",
                        "type": "pubkey"
                    },
                    {
                        "name": "assets",
                        "type": "u64"
                    },
                    {
                        "name": "losses",
                        "type": "u64"
                    },
                    {
                        "name": "supply",
                        "type": "u64"
                    },
                    {
                        "name": "assets_refreshed_at",
                        "type": "u64"
                    },
                    {
                        "name": "huma_fee",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_loss_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "new_loss_authority",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "loss_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "loss_distributed",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "loss_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "loss_recovered",
                        "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": "vault_config",
                        "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": "vault_config",
                        "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": "request_id",
                        "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": "request_id",
                        "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": "min_redemption_shares",
                        "type": "u64"
                    },
                    {
                        "name": "max_total_redemption_shares_per_window",
                        "type": "u64"
                    },
                    {
                        "name": "redemption_buffer_bps",
                        "type": "u16"
                    },
                    {
                        "name": "expected_redemption_processing_delay_secs",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "redemption_config",
                        "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": "total_shares_requested",
                        "type": "u64"
                    },
                    {
                        "name": "window_starts_at",
                        "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": "shares_pending_submission",
                        "type": "u64"
                    },
                    {
                        "name": "shares_pending_processing",
                        "type": "u64"
                    },
                    {
                        "name": "next_request_id",
                        "type": "u64"
                    },
                    {
                        "name": "last_request_id",
                        "type": "u64"
                    },
                    {
                        "name": "redemption_gating",
                        "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": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares_requested",
                        "type": "u64"
                    },
                    {
                        "name": "requested_at",
                        "type": "u64"
                    },
                    {
                        "name": "deposit_receipt_to_burn",
                        "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": "request_id",
                        "type": "u64"
                    },
                    {
                        "name": "shares_processed",
                        "type": "u64"
                    },
                    {
                        "name": "amount_processed",
                        "type": "u64"
                    },
                    {
                        "name": "huma_fee_redeemed",
                        "type": "u64"
                    },
                    {
                        "name": "collection",
                        "type": {
                            "option": "pubkey"
                        }
                    },
                    {
                        "name": "deposit_receipt",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_tokens_requested",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "request_id",
                        "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": "vault_config",
                        "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": "strategy_mint",
                        "type": {
                            "option": "pubkey"
                        }
                    },
                    {
                        "name": "vault_strategy_type",
                        "type": {
                            "defined": {
                                "name": "VaultStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_config",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "num_strategy_tokens",
                        "type": "u64"
                    },
                    {
                        "name": "assets",
                        "type": "u64"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "lockup_auto_renewal",
                        "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": "vault_config",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "source_lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "source_collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "source_deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "source_deposit_record",
                        "type": "pubkey"
                    },
                    {
                        "name": "destination_lockup_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "destination_collection",
                        "type": "pubkey"
                    },
                    {
                        "name": "destination_deposit_receipt",
                        "type": "pubkey"
                    },
                    {
                        "name": "destination_deposit_record",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "assets",
                        "type": "u64"
                    },
                    {
                        "name": "lockup_auto_renewal",
                        "type": "bool"
                    },
                    {
                        "name": "deposited_at",
                        "type": "u64"
                    },
                    {
                        "name": "old_lockup_expires_at",
                        "type": "u64"
                    },
                    {
                        "name": "new_lockup_expires_at",
                        "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": "vault_config",
                        "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": "vault_owner",
                        "type": "pubkey"
                    },
                    {
                        "name": "vault_owner_treasury",
                        "type": "pubkey"
                    },
                    {
                        "name": "vault_authority_bump",
                        "type": "u8"
                    },
                    {
                        "name": "loss_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "vault_operator",
                        "type": "pubkey"
                    },
                    {
                        "name": "huma_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "huma_fee_bps",
                        "type": "u16"
                    },
                    {
                        "name": "deposit_config",
                        "type": {
                            "defined": {
                                "name": "DepositConfig"
                            }
                        }
                    },
                    {
                        "name": "redemption_config",
                        "type": {
                            "defined": {
                                "name": "RedemptionConfig"
                            }
                        }
                    },
                    {
                        "name": "strategy_config",
                        "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": "huma_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "vault_owner",
                        "type": "pubkey"
                    },
                    {
                        "name": "vault_owner_treasury",
                        "type": "pubkey"
                    },
                    {
                        "name": "vault_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "loss_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "vault_operator",
                        "type": "pubkey"
                    },
                    {
                        "name": "deposit_mint",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_mint",
                        "type": {
                            "option": "pubkey"
                        }
                    },
                    {
                        "name": "vault_strategy_type",
                        "type": {
                            "defined": {
                                "name": "VaultStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "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": "vault_config",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "VaultEnabledEvent",
            "docs": [
                "The vault has been enabled.",
                "",
                "# Fields",
                "* `vault_config` - The vault config."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "vault_config",
                        "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": "vault_config",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_name",
                        "type": "string"
                    },
                    {
                        "name": "new_name",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_vault_operator",
                        "type": "pubkey"
                    },
                    {
                        "name": "new_vault_operator",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_owner",
                        "type": "pubkey"
                    },
                    {
                        "name": "new_owner",
                        "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": "vault_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_treasury",
                        "type": "pubkey"
                    },
                    {
                        "name": "new_treasury",
                        "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": "redemption_queue",
                        "type": {
                            "defined": {
                                "name": "RedemptionQueue"
                            }
                        }
                    },
                    {
                        "name": "disbursement_reserve",
                        "type": "u64"
                    },
                    {
                        "name": "strategy_token_reserve",
                        "type": "u64"
                    },
                    {
                        "name": "lockup_states",
                        "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": "DEPOSITOR_STATE_SEED",
            "type": "bytes",
            "value": "[100, 101, 112, 111, 115, 105, 116, 111, 114, 95, 115, 116, 97, 116, 101]"
        },
        {
            "name": "DEPOSIT_RECORD_SEED",
            "type": "bytes",
            "value": "[100, 101, 112, 111, 115, 105, 116, 95, 114, 101, 99, 111, 114, 100]"
        },
        {
            "name": "HUMA_CONFIG_SEED",
            "type": "bytes",
            "value": "[104, 117, 109, 97, 95, 99, 111, 110, 102, 105, 103]"
        },
        {
            "name": "LOCKUP_CONFIG_SEED",
            "type": "bytes",
            "value": "[108, 111, 99, 107, 117, 112, 95, 99, 111, 110, 102, 105, 103]"
        },
        {
            "name": "REDEMPTION_REQUEST_SEED",
            "type": "bytes",
            "value": "[114, 101, 100, 101, 109, 112, 116, 105, 111, 110, 95, 114, 101, 113, 117, 101, 115, 116]"
        },
        {
            "name": "VAULT_AUTHORITY_SEED",
            "type": "bytes",
            "value": "[118, 97, 117, 108, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121]"
        },
        {
            "name": "VAULT_CONFIG_SEED",
            "type": "bytes",
            "value": "[118, 97, 117, 108, 116, 95, 99, 111, 110, 102, 105, 103]"
        },
        {
            "name": "VAULT_PAUSER_SEED",
            "type": "bytes",
            "value": "[118, 97, 117, 108, 116, 95, 112, 97, 117, 115, 101, 114]"
        },
        {
            "name": "VAULT_STATE_SEED",
            "type": "bytes",
            "value": "[118, 97, 117, 108, 116, 95, 115, 116, 97, 116, 101]"
        }
    ]
}
