{
    "address": "ACQydQGziybxnN6dPAy3ssmYYbTp6K4rvwnBjjmh11Hj",
    "metadata": {
        "name": "permissionless",
        "version": "3.2.0",
        "spec": "0.1.0",
        "description": "Created with Anchor"
    },
    "instructions": [
        {
            "name": "add_async_deployment_target",
            "docs": [
                "Adds an async deployment target for the given strategy type.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `strategy_type` - The async strategy type to add the deployment target for.",
                "* `target_key` - The key of the deployment target.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [21, 128, 4, 227, 182, 90, 20, 171],
            "accounts": [
                {
                    "name": "signer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "async_deployment_config",
                    "writable": true
                },
                {
                    "name": "async_deployment_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    97, 115, 121, 110, 99, 95, 100, 101, 112, 108, 111, 121, 109,
                                    101, 110, 116, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "async_deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "strategy_type",
                    "type": {
                        "defined": {
                            "name": "AsyncDeploymentStrategyType"
                        }
                    }
                },
                {
                    "name": "target_key",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "add_deployment_target",
            "docs": [
                "Add a deployment target for the given strategy type.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `strategy_type` - The strategy type to add the deployment target for.",
                "* `target_key` - The key of the deployment target.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [231, 191, 129, 183, 23, 79, 165, 130],
            "accounts": [
                {
                    "name": "signer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deployment_config",
                    "writable": true
                },
                {
                    "name": "deployment_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 115,
                                    116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "strategy_type",
                    "type": {
                        "defined": {
                            "name": "DeploymentStrategyType"
                        }
                    }
                },
                {
                    "name": "target_key",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "add_instant_withdrawal_lender",
            "docs": [
                "Adds a new instant withdrawal lender to the pool.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `lender` - The address of the instant withdrawal lender.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction."
            ],
            "discriminator": [202, 77, 67, 93, 143, 238, 172, 10],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "instant_withdrawal_lender_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    105, 110, 115, 116, 97, 110, 116, 95, 119, 105, 116, 104, 100,
                                    114, 97, 119, 97, 108, 95, 108, 101, 110, 100, 101, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "arg",
                                "path": "lender"
                            }
                        ]
                    }
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "lender",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "add_mode",
            "docs": [
                "Adds a mode to the pool.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `mode_id` - The mode ID.",
                "* `mode_name` - The mode name.",
                "* `target_apy_bps` - The target annual percentage yield (APY) for the underlying assets",
                "deposited, expressed in basis points.",
                "* `token_metadata_args` - The mode token metadata parameters.",
                "",
                "# Dev Notes",
                "See the docs for `ModeConfig` on how `target_apy_bps` is related to the actual APY used",
                "for calculation.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction."
            ],
            "discriminator": [136, 187, 228, 193, 168, 107, 113, 144],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "mode_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "arg",
                                "path": "mode_id"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_mint",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "token_metadata",
                    "docs": ["The token metadata account."],
                    "writable": true
                },
                {
                    "name": "token_program"
                },
                {
                    "name": "associated_token_program",
                    "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
                },
                {
                    "name": "mpl_token_metadata_program",
                    "docs": ["The MPL Token Metadata program."],
                    "address": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                },
                {
                    "name": "sysvar_instructions_program",
                    "address": "Sysvar1nstructions1111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "mode_id",
                    "type": "pubkey"
                },
                {
                    "name": "mode_name",
                    "type": "string"
                },
                {
                    "name": "target_apy_bps",
                    "type": "u16"
                },
                {
                    "name": "token_metadata_args",
                    "type": {
                        "defined": {
                            "name": "ManageModeTokenMetadataArgs"
                        }
                    }
                }
            ]
        },
        {
            "name": "add_pool_operator",
            "docs": [
                "Adds a new operator to the pool.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `operator` - The address of the pool operator.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction."
            ],
            "discriminator": [87, 245, 32, 78, 182, 157, 163, 249],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_operator_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 111, 112, 101, 114, 97, 116, 111, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "arg",
                                "path": "operator"
                            }
                        ]
                    }
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "operator",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "add_redemption_request_v2",
            "docs": [
                "Adds a new redemption request. `payer` will pay for the account rent-exempt fees.",
                "",
                "# Arguments",
                "* `shares` - The number of shares the lender wants to redeem.",
                "",
                "# Trigger Condition",
                "Only when both the protocol and the pool are on.",
                "",
                "# Access Control",
                "Only lenders can call this instruction."
            ],
            "discriminator": [96, 173, 49, 36, 201, 46, 244, 189],
            "accounts": [
                {
                    "name": "payer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "lender",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_mint",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "redemption_request",
                    "writable": true
                },
                {
                    "name": "lender_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 101, 110, 100, 101, 114, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            },
                            {
                                "kind": "account",
                                "path": "lender"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_mode_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "mode_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": "lender_mode_token",
                    "writable": true
                },
                {
                    "name": "token_program"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "shares",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "add_strategy_manager_wallet",
            "docs": [
                "Adds a new wallet for the strategy manager to the pool.",
                "",
                "# Trigger Condition",
                "Only when the protocol and pool are both on.",
                "",
                "# Arguments",
                "* `wallet` - The wallet address.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction."
            ],
            "discriminator": [195, 173, 154, 48, 102, 125, 181, 237],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "arg",
                                "path": "wallet"
                            }
                        ]
                    }
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "wallet",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "approve_manual_strategy_manager",
            "docs": [
                "Approves a pending manual strategy manager proposal.",
                "",
                "# Trigger Condition",
                "Only when the protocol and pool are both on.",
                "",
                "# Access Control",
                "Only the Huma owner can call this instruction."
            ],
            "discriminator": [250, 162, 53, 178, 184, 236, 106, 167],
            "accounts": [
                {
                    "name": "huma_owner",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "pool_owner",
                    "writable": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    },
                    "relations": ["proposal"]
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "proposal",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    109, 97, 110, 117, 97, 108, 95, 115, 116, 114, 97, 116, 101,
                                    103, 121, 95, 109, 97, 110, 97, 103, 101, 114, 95, 112, 114,
                                    111, 112, 111, 115, 97, 108
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "proposal.wallet",
                                "account": "ManualStrategyManagerProposal"
                            }
                        ]
                    }
                },
                {
                    "name": "manual_strategy_manager",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    109, 97, 110, 117, 97, 108, 95, 115, 116, 114, 97, 116, 101,
                                    103, 121, 95, 109, 97, 110, 97, 103, 101, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "proposal.wallet",
                                "account": "ManualStrategyManagerProposal"
                            }
                        ]
                    }
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": []
        },
        {
            "name": "cancel_manual_strategy_manager_proposal",
            "docs": [
                "Cancels a pending manual strategy manager proposal.",
                "",
                "# Trigger Condition",
                "Only when the protocol and pool are both on.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction."
            ],
            "discriminator": [164, 185, 150, 19, 234, 253, 40, 69],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    },
                    "relations": ["proposal"]
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "proposal",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    109, 97, 110, 117, 97, 108, 95, 115, 116, 114, 97, 116, 101,
                                    103, 121, 95, 109, 97, 110, 97, 103, 101, 114, 95, 112, 114,
                                    111, 112, 111, 115, 97, 108
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "proposal.wallet",
                                "account": "ManualStrategyManagerProposal"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "cancel_redemption_request",
            "docs": [
                "Reduces the number of shares request for redemption.",
                "",
                "# Arguments",
                "* `shares` - The number of shares in the redemption request to be canceled.",
                "",
                "# Trigger Condition",
                "Only when both the protocol and the pool are on.",
                "",
                "# Access Control",
                "Only the pool owner and the Sentinel service account can call this instruction."
            ],
            "discriminator": [77, 155, 4, 179, 114, 233, 162, 45],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    },
                    "relations": ["redemption_request"]
                },
                {
                    "name": "mode_mint",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "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": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lender_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 101, 110, 100, 101, 114, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            },
                            {
                                "kind": "account",
                                "path": "redemption_request.lender",
                                "account": "RedemptionRequest"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_mode_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "mode_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": "lender_mode_token",
                    "writable": true
                },
                {
                    "name": "token_program"
                }
            ],
            "args": [
                {
                    "name": "shares",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "change_pool_owner",
            "docs": [
                "Changes the pool owner.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `new_owner` - The new pool owner.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [169, 55, 183, 24, 152, 180, 167, 11],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_owner",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "clear_instant_withdrawal_liquidity_source",
            "docs": [
                "Clears the deployment target from which liquidity is pulled when the pool's available",
                "balance is insufficient to satisfy an instant withdrawal.",
                "",
                "# Trigger Condition",
                "When the protocol is on.",
                "",
                "# Access Control",
                "Only strategy manager wallets can call this instruction."
            ],
            "discriminator": [53, 151, 188, 231, 236, 184, 141, 85],
            "accounts": [
                {
                    "name": "wallet",
                    "signer": true,
                    "relations": ["strategy_manager_wallet"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_manager_wallet.wallet",
                                "account": "StrategyManagerWallet"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "close_lender_accounts",
            "docs": [
                "Closes the accounts owned by the lender.",
                "",
                "# Trigger Condition",
                "N/A. The instruction can be triggered at any time.",
                "",
                "# Access Control",
                "Only lenders can call this instruction."
            ],
            "discriminator": [222, 126, 36, 205, 193, 173, 194, 224],
            "accounts": [
                {
                    "name": "payer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "lender",
                    "signer": true
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "lender_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 101, 110, 100, 101, 114, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            },
                            {
                                "kind": "account",
                                "path": "lender"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "close_pool",
            "docs": [
                "Closes the pool after its maturity.",
                "",
                "# Trigger Condition",
                "Only when the pool is in the pre-closure status.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [140, 189, 209, 23, 239, 62, 239, 11],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_underlying_token",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "complete_liquidity_payback_async",
            "docs": [
                "Completes a previously initiated payback via an async strategy. Claims the",
                "redeemed underlying tokens from the target and updates pool accounting.",
                "",
                "# Trigger Condition",
                "When the protocol is on, and the pool is not closed.",
                "",
                "# Arguments",
                "* `strategy_type` - The async deployment strategy type.",
                "",
                "# Access Control",
                "Only strategy manager wallets can call this instruction."
            ],
            "discriminator": [233, 72, 152, 253, 73, 201, 108, 242],
            "accounts": [
                {
                    "name": "wallet",
                    "signer": true,
                    "relations": ["strategy_manager_wallet"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "async_deployment_config"
                },
                {
                    "name": "async_deployment_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    97, 115, 121, 110, 99, 95, 100, 101, 112, 108, 111, 121, 109,
                                    101, 110, 116, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "async_deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_manager_wallet.wallet",
                                "account": "StrategyManagerWallet"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "docs": ["deserialize."],
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "strategy_type",
                    "type": {
                        "defined": {
                            "name": "AsyncDeploymentStrategyType"
                        }
                    }
                }
            ]
        },
        {
            "name": "create_lender_accounts_v2",
            "docs": [
                "Creates the accounts necessary for a lender. `payer` will pay for the account rent-exempt fees.",
                "",
                "# Trigger Condition",
                "1. For the pool owner treasury: when the pool is not closed.",
                "2. For other lenders: when both the protocol and pool are on.",
                "",
                "# Access Control",
                "Anyone can call this instruction."
            ],
            "discriminator": [203, 52, 185, 231, 192, 74, 121, 108],
            "accounts": [
                {
                    "name": "payer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "lender"
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_mint",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lender_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 101, 110, 100, 101, 114, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            },
                            {
                                "kind": "account",
                                "path": "lender"
                            }
                        ]
                    }
                },
                {
                    "name": "lender_mode_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "lender"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "mode_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"
                },
                {
                    "name": "associated_token_program",
                    "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": []
        },
        {
            "name": "create_pool",
            "docs": [
                "Creates a new permissionless pool.",
                "",
                "# Arguments",
                "* `pool_id` - The ID of the pool.",
                "* `pool_name` - The name of the pool.",
                "* `pool_owner_treasury` - The address of the pool owner treasury, which will be responsible",
                "for providing initial liquidity and receiving pool owner fees.",
                "",
                "# 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 pool."
            ],
            "discriminator": [233, 146, 209, 142, 207, 104, 64, 188],
            "accounts": [
                {
                    "name": "owner",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "huma_config"
                },
                {
                    "name": "liquidity_asset"
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "arg",
                                "path": "pool_id"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint"
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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"
                },
                {
                    "name": "associated_token_program",
                    "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "pool_id",
                    "type": "pubkey"
                },
                {
                    "name": "pool_name",
                    "type": "string"
                },
                {
                    "name": "pool_owner_treasury",
                    "type": "pubkey"
                },
                {
                    "name": "loss_authority",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "declare_loss",
            "docs": [
                "Declares loss on an investment. When the loss is on liquid assets, the strategy manager must",
                "also update `liquid_assets_deployed` accordingly.",
                "",
                "# Trigger Condition",
                "When the protocol is on, and the pool is either on or in the pre-closure status.",
                "",
                "# Dev Notes",
                "It is possible for the strategy manager to deploy and pay back liquidity after loss declaration.",
                "",
                "# 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": ["pool_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_underlying_token",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "loss",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "deploy_liquidity",
            "docs": [
                "Deploys liquidity from the pool to investment opportunities.",
                "",
                "# Trigger Condition",
                "When the protocol is on, and the pool is either on or in the pre-closure status. Deployment",
                "is allowed in pre-closure in case the strategy manager accidentally pays more liquidity back",
                "than required for withdrawal and needs to take the funds back.",
                "",
                "# Arguments",
                "* `amount` - The amount to deploy.",
                "",
                "# Access Control",
                "Only strategy manager wallets can call this instruction."
            ],
            "discriminator": [49, 35, 101, 76, 93, 4, 31, 53],
            "accounts": [
                {
                    "name": "wallet",
                    "signer": true,
                    "relations": ["strategy_manager_wallet"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deployment_config"
                },
                {
                    "name": "deployment_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 115,
                                    116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_manager_wallet.wallet",
                                "account": "StrategyManagerWallet"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "docs": [
                        "deserialize. Mutable only because Jupiter Lending incorrectly requires the signer account",
                        "to be writable."
                    ],
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "strategy_type",
                    "type": {
                        "defined": {
                            "name": "DeploymentStrategyType"
                        }
                    }
                },
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "deploy_liquidity_async",
            "docs": [
                "Deploys liquidity from the pool via an async strategy.",
                "",
                "# Trigger Condition",
                "When the protocol is on, and the pool is on or in pre-closure.",
                "",
                "# Arguments",
                "* `strategy_type` - The async deployment strategy type.",
                "* `amount` - The amount to deploy.",
                "",
                "# Access Control",
                "Only strategy manager wallets can call this instruction."
            ],
            "discriminator": [44, 179, 47, 203, 177, 83, 181, 109],
            "accounts": [
                {
                    "name": "wallet",
                    "signer": true,
                    "relations": ["strategy_manager_wallet"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "async_deployment_config"
                },
                {
                    "name": "async_deployment_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    97, 115, 121, 110, 99, 95, 100, 101, 112, 108, 111, 121, 109,
                                    101, 110, 116, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "async_deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_manager_wallet.wallet",
                                "account": "StrategyManagerWallet"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "docs": ["deserialize."],
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "strategy_type",
                    "type": {
                        "defined": {
                            "name": "AsyncDeploymentStrategyType"
                        }
                    }
                },
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "deploy_liquidity_manually",
            "docs": [
                "Deploys liquidity from the pool via the manual strategy. Only manual strategy managers",
                "can call this instruction. Subject to per-transaction and daily deployment limits.",
                "",
                "# Trigger Condition",
                "When the protocol is on, and the pool is either on or in the pre-closure status.",
                "",
                "# Arguments",
                "* `amount` - The amount to deploy.",
                "",
                "# Access Control",
                "Only manual strategy managers can call this instruction."
            ],
            "discriminator": [74, 157, 114, 153, 25, 5, 219, 43],
            "accounts": [
                {
                    "name": "wallet",
                    "signer": true,
                    "relations": ["manual_strategy_manager"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deployment_config"
                },
                {
                    "name": "deployment_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 115,
                                    116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "manual_strategy_manager",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    109, 97, 110, 117, 97, 108, 95, 115, 116, 114, 97, 116, 101,
                                    103, 121, 95, 109, 97, 110, 97, 103, 101, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "manual_strategy_manager.wallet",
                                "account": "ManualStrategyManager"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "deposit",
            "docs": [
                "LP deposits to the pool to earn yield and share losses.",
                "",
                "All deposits should be made by calling this instruction and",
                "`make_initial_deposit()` (for the pool owner's initial deposit) only.",
                "Please do NOT directly transfer any crypto assets to the pool,",
                "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.",
                "* `commitment` - The commitment type of the deposit. This is needed by other systems in the",
                "Huma protocol to track the commitment status of the deposit.",
                "* `commitment_auto_renewal` - Whether the commitment automatically renews after expiration.",
                "This is needed by other systems in the Huma protocol to track the commitment status of",
                "the deposit.",
                "",
                "# Returns",
                "The number of mode token minted.",
                "",
                "# Trigger Condition",
                "Only when both the protocol and the pool are on.",
                "",
                "# Access Control",
                "Anyone can call this instruction. The caller will become a lender in the pool.",
                "",
                "# Dev Notes",
                "1. `commitment` and `commitment_auto_renewal` are not used by the program.",
                "They are pass-through arguments used by other systems in the Huma protocol to detect",
                "deposit commitment violations.",
                "2. The parameter `commitment` has type `String` instead of `enum` so that we don't have to",
                "upgrade the program when we add additional commitment types/alter existing ones."
            ],
            "discriminator": [242, 35, 198, 137, 82, 225, 242, 182],
            "accounts": [
                {
                    "name": "depositor",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_mint",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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_underlying_token",
                    "writable": true
                },
                {
                    "name": "depositor_mode_token",
                    "writable": true
                },
                {
                    "name": "underlying_token_program"
                },
                {
                    "name": "mode_token_program"
                }
            ],
            "args": [
                {
                    "name": "assets",
                    "type": "u64"
                },
                {
                    "name": "commitment",
                    "type": "string"
                },
                {
                    "name": "commitment_auto_renewal",
                    "type": "bool"
                }
            ],
            "returns": "u64"
        },
        {
            "name": "disable_pool",
            "docs": [
                "Disables the pool. Once a pool is disabled, no money moves in or out.",
                "",
                "# Trigger Condition",
                "Only when the pool is on.",
                "",
                "# Access Control",
                "Only pool operators can call this instruction."
            ],
            "discriminator": [248, 118, 211, 160, 149, 150, 135, 37],
            "accounts": [
                {
                    "name": "pool_operator",
                    "signer": true
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_operator_config"
                }
            ],
            "args": []
        },
        {
            "name": "disburse",
            "docs": [
                "Transfers all the amount that has been redeemed but not yet disbursed to the lender.",
                "",
                "# Trigger Condition",
                "When the protocol is on, and the pool is either on or in the pre-closure status.",
                "",
                "# Access Control",
                "Only lenders can call this instruction."
            ],
            "discriminator": [68, 250, 205, 89, 217, 142, 13, 44],
            "accounts": [
                {
                    "name": "lender",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "lender_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 101, 110, 100, 101, 114, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            },
                            {
                                "kind": "account",
                                "path": "lender"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "lender_underlying_token",
                    "writable": true
                },
                {
                    "name": "token_program"
                }
            ],
            "args": []
        },
        {
            "name": "enable_pool",
            "docs": [
                "Turns on the pool. Before a pool is turned on, the required mode liquidity must be",
                "deposited first.",
                "",
                "# Trigger Condition",
                "N/A. The instruction can be triggered at any time.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [120, 47, 0, 69, 84, 74, 16, 177],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                }
            ],
            "args": []
        },
        {
            "name": "enter_pre_closure",
            "docs": [
                "Puts the pool in pre-closure status so that final processing can happen to prepare",
                "for closure. Pool assets will be refreshed one last time and lenders will no longer accrue",
                "yields after the pool enters the pre-closure status.",
                "",
                "# Trigger Condition",
                "N/A. The instruction can be triggered at any time.",
                "",
                "# Access Control",
                "Only the pool 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": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "initiate_liquidity_payback_async",
            "docs": [
                "Initiates a liquidity payback via an async strategy. The redeemed funds may not be",
                "available immediately and must be claimed in a separate step via",
                "`complete_liquidity_payback_async`.",
                "",
                "# Trigger Condition",
                "When the protocol is on, and the pool is not closed.",
                "",
                "# Arguments",
                "* `strategy_type` - The async deployment strategy type.",
                "* `shares` - The number of shares to redeem.",
                "",
                "# Access Control",
                "Only strategy manager wallets can call this instruction."
            ],
            "discriminator": [14, 191, 236, 248, 247, 101, 232, 70],
            "accounts": [
                {
                    "name": "wallet",
                    "signer": true,
                    "relations": ["strategy_manager_wallet"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "async_deployment_config"
                },
                {
                    "name": "async_deployment_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    97, 115, 121, 110, 99, 95, 100, 101, 112, 108, 111, 121, 109,
                                    101, 110, 116, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "async_deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_manager_wallet.wallet",
                                "account": "StrategyManagerWallet"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "docs": ["deserialize."],
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "strategy_type",
                    "type": {
                        "defined": {
                            "name": "AsyncDeploymentStrategyType"
                        }
                    }
                },
                {
                    "name": "shares",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "instant_withdraw",
            "docs": [
                "Allows a lender to withdraw their own shares directly, bypassing the redemption queue.",
                "This provides immediate liquidity when the pool has sufficient available balance.",
                "",
                "# Arguments",
                "* `shares` - The number of shares the lender wants to withdraw.",
                "* `max_fee_bps` - The maximum fee in basis points the lender is willing to accept.",
                "If the actual fee (based on liquid asset ratio post-withdrawal) exceeds this, the",
                "instruction fails.",
                "",
                "# Trigger Condition",
                "Only when both the protocol and the pool are on.",
                "",
                "# Access Control",
                "Any lender can call this instruction for their own shares."
            ],
            "discriminator": [171, 49, 145, 176, 48, 101, 112, 162],
            "accounts": [
                {
                    "name": "lender",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_mint",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deployment_config",
                    "optional": true
                },
                {
                    "name": "deployment_state",
                    "writable": true,
                    "optional": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 115,
                                    116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lender_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 101, 110, 100, 101, 114, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            },
                            {
                                "kind": "account",
                                "path": "lender"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_authority",
                    "docs": [
                        "deserialize. Mutable only because Jupiter Lending incorrectly requires the signer account",
                        "to be writable."
                    ],
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "lender_underlying_token",
                    "writable": true
                },
                {
                    "name": "pool_owner_treasury_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_config.pool_owner_treasury",
                                "account": "PoolConfig"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "lender_mode_token",
                    "writable": true
                },
                {
                    "name": "underlying_token_program"
                },
                {
                    "name": "mode_token_program"
                }
            ],
            "args": [
                {
                    "name": "shares",
                    "type": "u64"
                },
                {
                    "name": "max_fee_bps",
                    "type": "u16"
                }
            ]
        },
        {
            "name": "instant_withdraw_privileged",
            "docs": [
                "Allows an authorized instant withdrawal lender to withdraw their own shares directly,",
                "bypassing the redemption queue. This provides immediate liquidity when the pool",
                "has sufficient available balance.",
                "",
                "Compared to `instant_withdraw`, this privileged path gives authorized lenders several benefits:",
                "1. No fees are incurred.",
                "2. The instant withdrawal reserve can be tapped into.",
                "3. Redemption gating does not apply.",
                "",
                "Fees are applied to the post-withdrawal liquid-asset ratio (one tier per withdrawal),",
                "not progressively like tax brackets. Users may split a withdrawal into multiple",
                "smaller ones to reduce total fees if they prefer.",
                "",
                "# Arguments",
                "* `shares` - The number of shares the lender wants to withdraw.",
                "",
                "# Trigger Condition",
                "Only when both the protocol and the pool are on.",
                "",
                "# Access Control",
                "Only authorized instant withdrawal lenders can call this instruction for their own shares."
            ],
            "discriminator": [101, 97, 214, 222, 232, 246, 104, 48],
            "accounts": [
                {
                    "name": "lender",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "instant_withdrawal_lender_config"
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_mint",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deployment_config",
                    "optional": true
                },
                {
                    "name": "deployment_state",
                    "writable": true,
                    "optional": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 115,
                                    116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lender_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 101, 110, 100, 101, 114, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            },
                            {
                                "kind": "account",
                                "path": "lender"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_authority",
                    "docs": [
                        "deserialize. Mutable only because Jupiter Lending incorrectly requires the signer account",
                        "to be writable."
                    ],
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "lender_underlying_token",
                    "writable": true
                },
                {
                    "name": "lender_mode_token",
                    "writable": true
                },
                {
                    "name": "underlying_token_program"
                },
                {
                    "name": "mode_token_program"
                }
            ],
            "args": [
                {
                    "name": "shares",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "make_initial_deposit",
            "docs": [
                "Allows the pool owner to make initial deposit before the pool goes live.",
                "",
                "# Arguments",
                "* `assets` - The amount of underlying assets to be deposited.",
                "* `commitment` - The commitment type of the deposit.",
                "",
                "# Returns",
                "The number of mode token minted.",
                "",
                "# Trigger Condition",
                "When the protocol is on and the pool is not closed.",
                "",
                "# Access Control",
                "Only authorized initial depositors can call this instruction.",
                "",
                "# Dev Notes",
                "The parameter `commitment` has type `String` instead of `enum` so that we can avoid program",
                "upgrade when we add additional commitment types in the future."
            ],
            "discriminator": [141, 233, 75, 102, 37, 93, 94, 79],
            "accounts": [
                {
                    "name": "pool_owner_treasury",
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_mint",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "pool_owner_treasury_underlying_token",
                    "writable": true
                },
                {
                    "name": "pool_owner_treasury_mode_token",
                    "writable": true
                },
                {
                    "name": "underlying_token_program"
                },
                {
                    "name": "mode_token_program"
                }
            ],
            "args": [
                {
                    "name": "assets",
                    "type": "u64"
                },
                {
                    "name": "commitment",
                    "type": "string"
                }
            ],
            "returns": "u64"
        },
        {
            "name": "pay_back_liquidity",
            "docs": [
                "Pays back liquidity to the pool.",
                "",
                "# Trigger Condition",
                "When the protocol is on, and the pool is not closed.",
                "",
                "# Arguments",
                "* `amount` - The amount to pay back.",
                "",
                "# Access Control",
                "Only strategy manager wallets can call this instruction."
            ],
            "discriminator": [97, 171, 224, 78, 162, 164, 181, 228],
            "accounts": [
                {
                    "name": "wallet",
                    "signer": true,
                    "relations": ["strategy_manager_wallet"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deployment_config"
                },
                {
                    "name": "deployment_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 115,
                                    116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_manager_wallet.wallet",
                                "account": "StrategyManagerWallet"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "docs": [
                        "deserialize. Mutable only because Jupiter Lending incorrectly requires the signer account",
                        "to be writable."
                    ],
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "strategy_type",
                    "type": {
                        "defined": {
                            "name": "DeploymentStrategyType"
                        }
                    }
                },
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "pay_back_liquidity_manually",
            "docs": [
                "Pays back liquidity to the pool via the manual strategy.",
                "",
                "# Trigger Condition",
                "When the protocol is on, and the pool is not closed.",
                "",
                "# Arguments",
                "* `amount` - The amount to pay back.",
                "",
                "# Access Control",
                "Only manual strategy managers can call this instruction."
            ],
            "discriminator": [15, 105, 175, 222, 154, 87, 101, 132],
            "accounts": [
                {
                    "name": "wallet",
                    "signer": true,
                    "relations": ["manual_strategy_manager"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deployment_config"
                },
                {
                    "name": "deployment_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 115,
                                    116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deployment_config"
                            }
                        ]
                    }
                },
                {
                    "name": "manual_strategy_manager",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    109, 97, 110, 117, 97, 108, 95, 115, 116, 114, 97, 116, 101,
                                    103, 121, 95, 109, 97, 110, 97, 103, 101, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "manual_strategy_manager.wallet",
                                "account": "ManualStrategyManager"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "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 pool is either on or in the pre-closure status.",
                "",
                "# Access Control",
                "Only the pool owner and the Sentinel service account can call this instruction."
            ],
            "discriminator": [211, 90, 36, 251, 91, 185, 216, 35],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "lender",
                    "docs": ["`has_one` constraint."],
                    "relations": ["redemption_request"]
                },
                {
                    "name": "payer",
                    "docs": [
                        "The recipient of the `RedemptionRequest` account rent-exempt fee refunds after closure.",
                        "`has_one` constraint."
                    ],
                    "writable": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    },
                    "relations": ["redemption_request"]
                },
                {
                    "name": "mode_mint",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "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": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lender_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 101, 110, 100, 101, 114, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            },
                            {
                                "kind": "account",
                                "path": "lender"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "docs": [
                        "Strategy managers wallets are allowed to process redemption requests. If the signer",
                        "is a strategy manager wallet this account needs to be passed in for validation. Otherwise,",
                        "the account can be left as `None`."
                    ],
                    "optional": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_manager_wallet.wallet",
                                "account": "StrategyManagerWallet"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "lender_underlying_token",
                    "docs": [
                        "The account is optional to prevent an attack where a lender closes their underlying token",
                        "account and consequently blocks the redemption request from being processed."
                    ],
                    "writable": true,
                    "optional": true
                },
                {
                    "name": "pool_mode_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "mode_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "mode_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": "underlying_token_program"
                },
                {
                    "name": "mode_token_program"
                }
            ],
            "args": []
        },
        {
            "name": "propose_manual_strategy_manager",
            "docs": [
                "Proposes a new manual strategy manager for the pool.",
                "",
                "# Trigger Condition",
                "Only when the protocol and pool are both on.",
                "",
                "# Arguments",
                "* `wallet` - The proposed wallet address.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction. The proposal must be approved",
                "by the Huma owner via `approve_manual_strategy_manager`."
            ],
            "discriminator": [124, 74, 236, 183, 200, 93, 107, 181],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "proposal",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    109, 97, 110, 117, 97, 108, 95, 115, 116, 114, 97, 116, 101,
                                    103, 121, 95, 109, 97, 110, 97, 103, 101, 114, 95, 112, 114,
                                    111, 112, 111, 115, 97, 108
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "arg",
                                "path": "wallet"
                            }
                        ]
                    }
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "wallet",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "recover_loss",
            "docs": [
                "Recovers declared losses by transferring assets from the loss authority to the pool.",
                "The transferred amount is applied to mode losses proportionally. When the recovery applies to",
                "losses on liquid assets, the strategy manager must also update `liquid_assets_deployed` accordingly.",
                "",
                "# Trigger Condition",
                "When the protocol is on and the pool is not closed.",
                "",
                "# Arguments",
                "* `amount` - The amount to transfer from the loss authority to the pool for loss recovery.",
                "",
                "# 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": ["pool_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "loss_authority_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "loss_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "token_program"
                }
            ],
            "args": [
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "refresh_mode_assets",
            "docs": [
                "Refreshes the assets in a single mode to bring it up to date.",
                "",
                "# Trigger Condition",
                "When the protocol is on and the pool is not closed. When the pool is in pre-closure,",
                "this instruction is a no-op.",
                "",
                "# Access Control",
                "Anyone can call this instruction."
            ],
            "discriminator": [190, 133, 209, 144, 221, 100, 126, 205],
            "accounts": [
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "refresh_pool_assets",
            "docs": [
                "Refreshes the assets in all modes to bring them up to date.",
                "",
                "# Trigger Condition",
                "When the protocol is on and the pool is not closed. When the pool is in pre-closure,",
                "this instruction is a no-op.",
                "",
                "# Access Control",
                "Anyone can call this instruction."
            ],
            "discriminator": [179, 220, 112, 1, 214, 103, 3, 230],
            "accounts": [
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "remove_async_deployment_target",
            "docs": [
                "Removes an async deployment target.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [38, 131, 78, 127, 222, 252, 222, 246],
            "accounts": [
                {
                    "name": "signer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "async_deployment_config",
                    "writable": true
                },
                {
                    "name": "async_deployment_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    97, 115, 121, 110, 99, 95, 100, 101, 112, 108, 111, 121, 109,
                                    101, 110, 116, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "async_deployment_config"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "remove_deployment_target",
            "docs": [
                "Removes a deployment target for the given strategy type.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [82, 103, 198, 215, 110, 147, 220, 41],
            "accounts": [
                {
                    "name": "signer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "deployment_config",
                    "writable": true
                },
                {
                    "name": "deployment_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 115,
                                    116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "deployment_config"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "remove_instant_withdrawal_lender",
            "docs": [
                "Removes an instant withdrawal lender from the pool.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `lender` - The address of the instant withdrawal lender.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction."
            ],
            "discriminator": [138, 101, 118, 74, 113, 190, 76, 214],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "instant_withdrawal_lender_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    105, 110, 115, 116, 97, 110, 116, 95, 119, 105, 116, 104, 100,
                                    114, 97, 119, 97, 108, 95, 108, 101, 110, 100, 101, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "arg",
                                "path": "lender"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "lender",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "remove_manual_strategy_manager",
            "docs": [
                "Removes a manual strategy manager from the pool.",
                "",
                "# Trigger Condition",
                "Only when the protocol and pool are both on.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction."
            ],
            "discriminator": [132, 184, 107, 166, 164, 53, 188, 0],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "manual_strategy_manager",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    109, 97, 110, 117, 97, 108, 95, 115, 116, 114, 97, 116, 101,
                                    103, 121, 95, 109, 97, 110, 97, 103, 101, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "manual_strategy_manager.wallet",
                                "account": "ManualStrategyManager"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "remove_mode",
            "docs": [
                "Removes a mode from the pool. Please note that this instruction applies solely to the",
                "reversal of unintentional mode additions. Consequently, the following conditions must",
                "be met for the removal to go through:",
                "1. No mode token has been minted.",
                "2. The mode state must be empty.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `mode_id` - The ID of the mode to remove.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction."
            ],
            "discriminator": [36, 197, 69, 56, 254, 146, 192, 62],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "arg",
                                "path": "mode_id"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_mint",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_mode_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "token_program"
                            },
                            {
                                "kind": "account",
                                "path": "mode_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": "mode_id",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "remove_pool_operator",
            "docs": [
                "Adds an operator from the pool.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `operator` - The address of the pool operator.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction."
            ],
            "discriminator": [70, 188, 152, 173, 117, 213, 144, 195],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_operator_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 111, 112, 101, 114, 97, 116, 111, 114
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "arg",
                                "path": "operator"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "operator",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "remove_strategy_manager_wallet",
            "docs": [
                "Removes a wallet for the strategy manager from the pool.",
                "",
                "# Trigger Condition",
                "Only when the protocol and pool are both on.",
                "",
                "# Access Control",
                "Only the pool owner can call this instruction."
            ],
            "discriminator": [66, 249, 21, 34, 38, 197, 167, 96],
            "accounts": [
                {
                    "name": "pool_owner",
                    "writable": true,
                    "signer": true,
                    "relations": ["pool_config"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_manager_wallet.wallet",
                                "account": "StrategyManagerWallet"
                            }
                        ]
                    }
                }
            ],
            "args": []
        },
        {
            "name": "resize_pool_config",
            "docs": [
                "Resizes the pool config account.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [153, 11, 252, 79, 252, 49, 161, 246],
            "accounts": [
                {
                    "name": "signer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "huma_config"
                },
                {
                    "name": "pool_config",
                    "writable": true
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": []
        },
        {
            "name": "set_instant_withdrawal_fee_configs",
            "docs": [
                "Sets the instant withdrawal fee configurations.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `fee_configs` - The fee configurations. Each config specifies a liquid asset ratio",
                "threshold and fee in basis points. There can be at most `MAX_INSTANT_WITHDRAWAL_FEE_CONFIGS`",
                "configs.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [86, 166, 57, 79, 173, 3, 153, 63],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "fee_configs",
                    "type": {
                        "vec": {
                            "defined": {
                                "name": "InstantWithdrawalFeeConfigInput"
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "set_instant_withdrawal_liquidity_source",
            "docs": [
                "Sets the deployment target from which liquidity will be pulled when the pool's available",
                "balance is insufficient to satisfy an instant withdrawal.",
                "",
                "# Trigger Condition",
                "When the protocol is on.",
                "",
                "# Access Control",
                "Only strategy manager wallets can call this instruction."
            ],
            "discriminator": [104, 139, 161, 239, 40, 211, 26, 252],
            "accounts": [
                {
                    "name": "wallet",
                    "signer": true,
                    "relations": ["strategy_manager_wallet"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_manager_wallet.wallet",
                                "account": "StrategyManagerWallet"
                            }
                        ]
                    }
                },
                {
                    "name": "deployment_config"
                }
            ],
            "args": []
        },
        {
            "name": "set_instant_withdrawal_reserve_limit",
            "docs": [
                "Sets the instant withdrawal reserve limit.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `new_reserve_limit` - The new instant withdrawal reserve limit.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [119, 215, 114, 208, 241, 241, 178, 138],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_reserve_limit",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "set_liquid_assets_deployed",
            "docs": [
                "Sets the amount of liquid assets, used for instant withdrawal fee tier selection.",
                "",
                "# Trigger Condition",
                "When the protocol is on and the pool is not closed.",
                "",
                "# Arguments",
                "* `liquid_assets_deployed` - The liquid assets deployed amount in underlying token units.",
                "",
                "# Access Control",
                "Only strategy manager wallets can call this instruction."
            ],
            "discriminator": [187, 170, 45, 216, 14, 41, 151, 64],
            "accounts": [
                {
                    "name": "wallet",
                    "signer": true,
                    "relations": ["strategy_manager_wallet"]
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "strategy_manager_wallet",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97,
                                    103, 101, 114, 95, 119, 97, 108, 108, 101, 116
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "strategy_manager_wallet.wallet",
                                "account": "StrategyManagerWallet"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "liquid_assets_deployed",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "set_loss_authority",
            "docs": [
                "Sets the loss authority address.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `new_loss_authority` - The address of the new loss authority.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [73, 183, 94, 224, 117, 161, 23, 52],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_loss_authority",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "set_lp_config",
            "docs": [
                "Sets Liquidity Provider configurations.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `configs` - The new configurations.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [243, 188, 179, 176, 217, 83, 174, 65],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                }
            ],
            "args": [
                {
                    "name": "configs",
                    "type": {
                        "defined": {
                            "name": "LPConfig"
                        }
                    }
                }
            ]
        },
        {
            "name": "set_manual_deployment_limit",
            "docs": [
                "Sets the daily limit for manual deployment of liquidity.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `daily_limit` - The maximum cumulative amount that can be deployed manually in a rolling 24-hour window.",
                "* `per_wallet_limit` - The maximum net amount (deployed minus paid back) that can be outstanding for a single wallet.",
                "",
                "# Access Control",
                "Only the pool owner or the Huma owner can call this instruction."
            ],
            "discriminator": [113, 226, 242, 92, 251, 115, 42, 129],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "daily_limit",
                    "type": "u64"
                },
                {
                    "name": "per_wallet_limit",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "set_pool_owner_treasury",
            "docs": [
                "Sets the pool owner treasury.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `new_treasury` - The address of the new pool owner treasury.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [95, 26, 200, 33, 36, 107, 65, 219],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_treasury",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "switch_mode",
            "docs": [
                "Switches a lender's investment from one mode to another.",
                "",
                "# Trigger Condition",
                "Only when both the protocol and pool are on.",
                "",
                "# Arguments",
                "* `shares` - The number of shares the lender wants to switch.",
                "* `investment_id` - The ID of the investment.",
                "",
                "# Dev Notes",
                "`investment_id` is not used by the program. It's a pass-through argument used by other",
                "systems in the Huma protocol to detect deposit commitment violations.",
                "",
                "# Access Control",
                "Only lenders can call this instruction."
            ],
            "discriminator": [69, 115, 235, 74, 208, 155, 108, 62],
            "accounts": [
                {
                    "name": "lender",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "source_mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "source_mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "source_mode_mint",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "source_mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "source_mode_token",
                    "writable": true
                },
                {
                    "name": "destination_mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "destination_mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "destination_mode_mint",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "destination_mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "destination_mode_token",
                    "writable": true
                },
                {
                    "name": "source_mode_token_program"
                },
                {
                    "name": "destination_mode_token_program"
                }
            ],
            "args": [
                {
                    "name": "shares",
                    "type": "u64"
                },
                {
                    "name": "investment_id",
                    "type": "string"
                }
            ]
        },
        {
            "name": "update_mode_apy",
            "docs": [
                "Updates mode APY. Both the target and periodic APYs will be updated.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `new_target_apy_bps` - The target annual percentage yield (APY) for the underlying assets",
                "deposited, expressed in basis points.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [2, 35, 3, 169, 206, 20, 85, 86],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_target_apy_bps",
                    "type": "u16"
                }
            ]
        },
        {
            "name": "update_mode_name",
            "docs": [
                "Updates mode name.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `new_name` - The new name of the mode.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [161, 162, 16, 147, 165, 200, 140, 12],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_name",
                    "type": "string"
                }
            ]
        },
        {
            "name": "update_mode_token_metadata",
            "docs": [
                "Updates mode token metadata.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `args` - The parameters in the token metadata.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [146, 105, 133, 105, 200, 19, 3, 221],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "token_metadata",
                    "writable": true
                },
                {
                    "name": "mpl_token_metadata_program",
                    "docs": ["The MPL Token Metadata program."],
                    "address": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
                }
            ],
            "args": [
                {
                    "name": "args",
                    "type": {
                        "defined": {
                            "name": "ManageModeTokenMetadataArgs"
                        }
                    }
                }
            ]
        },
        {
            "name": "update_pool_name",
            "docs": [
                "Updates pool name.",
                "",
                "# Trigger Condition",
                "When the pool is not closed.",
                "",
                "# Arguments",
                "* `new_name` - The new name of the pool.",
                "",
                "# Access Control",
                "Only the pool owner and the Huma owner can call this instruction."
            ],
            "discriminator": [134, 125, 13, 23, 145, 45, 49, 196],
            "accounts": [
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "new_name",
                    "type": "string"
                }
            ]
        },
        {
            "name": "withdraw_after_pool_closure",
            "docs": [
                "Withdraws all the lender's assets after the pool has been permanently closed.",
                "",
                "# Trigger Condition",
                "Only when the protocol is on and the pool is closed.",
                "",
                "# Access Control",
                "Only lenders can call this instruction."
            ],
            "discriminator": [82, 21, 237, 73, 48, 153, 86, 168],
            "accounts": [
                {
                    "name": "lender",
                    "signer": true
                },
                {
                    "name": "huma_config",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config.pool_id",
                                "account": "PoolConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [112, 111, 111, 108, 95, 115, 116, 97, 116, 101]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_config",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config.id",
                                "account": "ModeConfig"
                            }
                        ]
                    }
                },
                {
                    "name": "mode_mint",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [109, 111, 100, 101, 95, 109, 105, 110, 116]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            }
                        ]
                    }
                },
                {
                    "name": "lender_state",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    108, 101, 110, 100, 101, 114, 95, 115, 116, 97, 116, 101
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "mode_config"
                            },
                            {
                                "kind": "account",
                                "path": "lender"
                            }
                        ]
                    }
                },
                {
                    "name": "underlying_mint",
                    "relations": ["pool_config"]
                },
                {
                    "name": "pool_authority",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const",
                                "value": [
                                    112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116,
                                    121
                                ]
                            },
                            {
                                "kind": "account",
                                "path": "pool_config"
                            }
                        ]
                    }
                },
                {
                    "name": "pool_underlying_token",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "pool_authority"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_token_program"
                            },
                            {
                                "kind": "account",
                                "path": "underlying_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": "lender_underlying_token",
                    "writable": true
                },
                {
                    "name": "lender_mode_token",
                    "writable": true
                },
                {
                    "name": "underlying_token_program"
                },
                {
                    "name": "mode_token_program"
                }
            ],
            "args": []
        }
    ],
    "accounts": [
        {
            "name": "AsyncDeploymentConfig",
            "discriminator": [79, 203, 41, 22, 215, 191, 148, 37]
        },
        {
            "name": "AsyncDeploymentState",
            "discriminator": [208, 11, 72, 206, 27, 76, 193, 231]
        },
        {
            "name": "DeploymentConfig",
            "discriminator": [13, 112, 57, 81, 43, 26, 156, 18]
        },
        {
            "name": "DeploymentState",
            "discriminator": [212, 136, 79, 121, 16, 38, 112, 116]
        },
        {
            "name": "InstantWithdrawalLender",
            "discriminator": [12, 99, 0, 7, 73, 193, 37, 217]
        },
        {
            "name": "LenderState",
            "discriminator": [240, 118, 235, 226, 18, 3, 58, 25]
        },
        {
            "name": "ManualStrategyManager",
            "discriminator": [64, 224, 248, 213, 255, 189, 28, 193]
        },
        {
            "name": "ManualStrategyManagerProposal",
            "discriminator": [1, 133, 162, 3, 159, 227, 96, 239]
        },
        {
            "name": "ModeConfig",
            "discriminator": [249, 180, 144, 225, 126, 159, 202, 209]
        },
        {
            "name": "PoolConfig",
            "discriminator": [26, 108, 14, 123, 116, 230, 129, 43]
        },
        {
            "name": "PoolOperator",
            "discriminator": [86, 93, 81, 162, 133, 189, 80, 191]
        },
        {
            "name": "PoolState",
            "discriminator": [247, 237, 227, 245, 215, 195, 222, 70]
        },
        {
            "name": "RedemptionRequest",
            "discriminator": [117, 157, 214, 214, 64, 160, 31, 58]
        },
        {
            "name": "StrategyManagerWallet",
            "discriminator": [7, 113, 185, 42, 183, 171, 232, 77]
        }
    ],
    "events": [
        {
            "name": "AsyncDeploymentTargetAddedEvent",
            "discriminator": [59, 142, 197, 242, 75, 20, 45, 51]
        },
        {
            "name": "AsyncDeploymentTargetRemovedEvent",
            "discriminator": [194, 27, 9, 134, 2, 75, 135, 239]
        },
        {
            "name": "DeploymentTargetAddedEvent",
            "discriminator": [143, 102, 222, 71, 122, 6, 252, 209]
        },
        {
            "name": "DeploymentTargetRemovedEvent",
            "discriminator": [21, 180, 221, 164, 151, 158, 213, 33]
        },
        {
            "name": "FullyCanceledRedemptionRequestSkippedEvent",
            "discriminator": [182, 222, 115, 2, 28, 250, 2, 128]
        },
        {
            "name": "InstantWithdrawalFeeConfigsChangedEvent",
            "discriminator": [220, 60, 248, 228, 244, 222, 175, 55]
        },
        {
            "name": "InstantWithdrawalLenderAddedEvent",
            "discriminator": [247, 184, 251, 18, 253, 27, 127, 244]
        },
        {
            "name": "InstantWithdrawalLenderRemovedEvent",
            "discriminator": [228, 255, 164, 26, 160, 125, 77, 227]
        },
        {
            "name": "InstantWithdrawalLiquiditySourceClearedEvent",
            "discriminator": [244, 93, 188, 227, 190, 128, 85, 101]
        },
        {
            "name": "InstantWithdrawalLiquiditySourceSetEvent",
            "discriminator": [188, 167, 59, 236, 129, 19, 186, 11]
        },
        {
            "name": "InstantWithdrawalReserveLimitChangedEvent",
            "discriminator": [163, 77, 62, 14, 42, 11, 32, 215]
        },
        {
            "name": "LPConfigChangedEvent",
            "discriminator": [241, 93, 140, 107, 238, 126, 168, 245]
        },
        {
            "name": "LenderAccountsClosedEvent",
            "discriminator": [114, 190, 186, 18, 188, 195, 238, 186]
        },
        {
            "name": "LenderAccountsCreatedEventV2",
            "discriminator": [39, 223, 41, 109, 60, 101, 244, 228]
        },
        {
            "name": "LenderFundDisbursedEvent",
            "discriminator": [185, 20, 203, 170, 122, 78, 231, 106]
        },
        {
            "name": "LenderFundWithdrawnEvent",
            "discriminator": [189, 37, 124, 152, 255, 154, 13, 202]
        },
        {
            "name": "LenderFundsInstantlyWithdrawnEvent",
            "discriminator": [70, 238, 186, 163, 134, 200, 240, 180]
        },
        {
            "name": "LiquidAssetsDeployedSetEvent",
            "discriminator": [218, 95, 125, 29, 243, 14, 109, 78]
        },
        {
            "name": "LiquidityDeployedAsyncEvent",
            "discriminator": [180, 205, 84, 115, 109, 7, 212, 232]
        },
        {
            "name": "LiquidityDeployedEvent",
            "discriminator": [46, 23, 218, 176, 233, 96, 239, 70]
        },
        {
            "name": "LiquidityDeployedManuallyEvent",
            "discriminator": [42, 190, 47, 33, 92, 171, 96, 19]
        },
        {
            "name": "LiquidityDepositedEvent",
            "discriminator": [90, 3, 240, 128, 109, 154, 131, 185]
        },
        {
            "name": "LiquidityPaidBackEvent",
            "discriminator": [50, 105, 163, 223, 164, 6, 91, 32]
        },
        {
            "name": "LiquidityPaidBackManuallyEvent",
            "discriminator": [120, 107, 26, 135, 151, 15, 56, 198]
        },
        {
            "name": "LiquidityPaybackCompletedAsyncEvent",
            "discriminator": [50, 150, 252, 234, 89, 51, 153, 196]
        },
        {
            "name": "LiquidityPaybackInitiatedAsyncEvent",
            "discriminator": [240, 26, 247, 116, 21, 215, 151, 108]
        },
        {
            "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": "ManualDeploymentLimitChangedEvent",
            "discriminator": [113, 135, 172, 26, 117, 114, 39, 55]
        },
        {
            "name": "ManualStrategyManagerApprovedEvent",
            "discriminator": [193, 20, 223, 219, 21, 118, 147, 138]
        },
        {
            "name": "ManualStrategyManagerProposalCancelledEvent",
            "discriminator": [249, 227, 137, 178, 221, 236, 77, 178]
        },
        {
            "name": "ManualStrategyManagerProposedEvent",
            "discriminator": [198, 76, 196, 12, 129, 198, 81, 127]
        },
        {
            "name": "ManualStrategyManagerRemovedEvent",
            "discriminator": [152, 253, 2, 54, 230, 192, 199, 249]
        },
        {
            "name": "ModeAPYChangedEvent",
            "discriminator": [32, 227, 98, 156, 108, 3, 184, 44]
        },
        {
            "name": "ModeAddedEvent",
            "discriminator": [74, 37, 33, 192, 210, 247, 243, 8]
        },
        {
            "name": "ModeAssetsRefreshedEvent",
            "discriminator": [210, 11, 22, 20, 35, 19, 80, 74]
        },
        {
            "name": "ModeNameChangedEvent",
            "discriminator": [143, 246, 221, 130, 98, 175, 204, 53]
        },
        {
            "name": "ModeRemovedEvent",
            "discriminator": [32, 53, 184, 81, 110, 129, 249, 144]
        },
        {
            "name": "ModeSwitchedEvent",
            "discriminator": [180, 176, 130, 85, 150, 49, 56, 187]
        },
        {
            "name": "ModeTokenMetadataUpdatedEvent",
            "discriminator": [138, 111, 218, 240, 143, 17, 130, 238]
        },
        {
            "name": "PoolClosedEvent",
            "discriminator": [76, 55, 28, 161, 130, 142, 226, 133]
        },
        {
            "name": "PoolConfigResizedEvent",
            "discriminator": [178, 73, 242, 165, 47, 170, 191, 185]
        },
        {
            "name": "PoolCreatedEvent",
            "discriminator": [25, 94, 75, 47, 112, 99, 53, 63]
        },
        {
            "name": "PoolDisabledEvent",
            "discriminator": [253, 229, 56, 71, 40, 225, 125, 122]
        },
        {
            "name": "PoolEnabledEvent",
            "discriminator": [169, 245, 50, 35, 124, 58, 231, 48]
        },
        {
            "name": "PoolEnteredPreClosureEvent",
            "discriminator": [158, 111, 26, 100, 200, 42, 252, 70]
        },
        {
            "name": "PoolNameChangedEvent",
            "discriminator": [197, 42, 231, 168, 23, 125, 82, 96]
        },
        {
            "name": "PoolOperatorAddedEvent",
            "discriminator": [45, 70, 168, 122, 180, 30, 11, 196]
        },
        {
            "name": "PoolOperatorRemovedEvent",
            "discriminator": [171, 56, 197, 75, 3, 90, 107, 205]
        },
        {
            "name": "PoolOwnerChangedEvent",
            "discriminator": [34, 125, 255, 170, 143, 47, 140, 169]
        },
        {
            "name": "PoolOwnerTreasuryChangedEvent",
            "discriminator": [140, 110, 16, 105, 86, 252, 169, 49]
        },
        {
            "name": "PrivilegedInstantWithdrawalEvent",
            "discriminator": [22, 138, 222, 135, 112, 247, 135, 142]
        },
        {
            "name": "RedeemedFundsPaidOutEvent",
            "discriminator": [3, 68, 39, 81, 188, 59, 247, 177]
        },
        {
            "name": "RedeemedFundsReservedEvent",
            "discriminator": [141, 45, 128, 85, 166, 158, 191, 48]
        },
        {
            "name": "RedemptionRequestAddedEventV2",
            "discriminator": [115, 90, 91, 247, 160, 36, 53, 238]
        },
        {
            "name": "RedemptionRequestCanceledEvent",
            "discriminator": [200, 205, 28, 174, 176, 233, 95, 13]
        },
        {
            "name": "RedemptionRequestProcessedEvent",
            "discriminator": [165, 153, 161, 205, 132, 243, 207, 156]
        },
        {
            "name": "StrategyManagerWalletAddedEvent",
            "discriminator": [159, 1, 96, 54, 37, 222, 191, 22]
        },
        {
            "name": "StrategyManagerWalletRemovedEvent",
            "discriminator": [81, 71, 145, 25, 9, 72, 114, 212]
        }
    ],
    "errors": [
        {
            "code": 6001,
            "name": "ZeroAmountProvided"
        },
        {
            "code": 6002,
            "name": "ZeroSharesMinted"
        },
        {
            "code": 6003,
            "name": "InvalidNumberOfRemainingAccounts"
        },
        {
            "code": 6004,
            "name": "InvalidStrategyProgram"
        },
        {
            "code": 6005,
            "name": "TargetAccountMismatch"
        },
        {
            "code": 6006,
            "name": "InvalidBasisPointHigherThan10000"
        },
        {
            "code": 6007,
            "name": "RequiredAccountsNotProvided"
        },
        {
            "code": 6101,
            "name": "PoolOwnerRequired"
        },
        {
            "code": 6102,
            "name": "PoolOwnerOrHumaOwnerRequired"
        },
        {
            "code": 6103,
            "name": "PoolOwnerTreasuryRequired"
        },
        {
            "code": 6104,
            "name": "PoolOwnerOrSentinelRequired"
        },
        {
            "code": 6105,
            "name": "PoolOperatorRequired"
        },
        {
            "code": 6106,
            "name": "RedemptionRequestProcessorRequired"
        },
        {
            "code": 6107,
            "name": "InstantWithdrawalLenderRequired"
        },
        {
            "code": 6108,
            "name": "LossAuthorityRequired"
        },
        {
            "code": 6109,
            "name": "HumaOwnerRequired"
        },
        {
            "code": 6201,
            "name": "InvalidHumaConfig"
        },
        {
            "code": 6202,
            "name": "InvalidLiquidityAsset"
        },
        {
            "code": 6203,
            "name": "InvalidUnderlyingMint"
        },
        {
            "code": 6204,
            "name": "ProtocolIsPaused"
        },
        {
            "code": 6301,
            "name": "PoolIsNotOn"
        },
        {
            "code": 6302,
            "name": "PoolIsNotOnOrInPreClosure"
        },
        {
            "code": 6303,
            "name": "PoolIsNotInPreClosure"
        },
        {
            "code": 6304,
            "name": "PoolIsNotClosed"
        },
        {
            "code": 6305,
            "name": "PoolIsClosed"
        },
        {
            "code": 6306,
            "name": "PoolNameTooLong"
        },
        {
            "code": 6307,
            "name": "ModeNameTooLong"
        },
        {
            "code": 6308,
            "name": "TooManyModes"
        },
        {
            "code": 6309,
            "name": "TooFewModes"
        },
        {
            "code": 6310,
            "name": "DuplicateModes"
        },
        {
            "code": 6311,
            "name": "MinDepositAmountTooLow"
        },
        {
            "code": 6312,
            "name": "MinRedemptionSharesTooLow"
        },
        {
            "code": 6313,
            "name": "LenderMismatch"
        },
        {
            "code": 6314,
            "name": "RedemptionRequestOutOfOrder"
        },
        {
            "code": 6315,
            "name": "InsufficientBalanceForRedemptionProcessing"
        },
        {
            "code": 6316,
            "name": "TotalRedemptionLimitExceeded"
        },
        {
            "code": 6317,
            "name": "InsufficientSharesForRequest"
        },
        {
            "code": 6318,
            "name": "DifferentModesRequired"
        },
        {
            "code": 6319,
            "name": "UnprocessedRedemptionRequests"
        },
        {
            "code": 6320,
            "name": "InsufficientBalanceForWithdrawal"
        },
        {
            "code": 6321,
            "name": "InsufficientAssetsForPoolActivation"
        },
        {
            "code": 6322,
            "name": "PayerMismatch"
        },
        {
            "code": 6323,
            "name": "InvalidPoolConfigData"
        },
        {
            "code": 6324,
            "name": "TotalRedemptionLimitBelowInstantWithdrawalLimit"
        },
        {
            "code": 6325,
            "name": "TooFewInstantWithdrawalFeeConfigs"
        },
        {
            "code": 6326,
            "name": "TooManyInstantWithdrawalFeeConfigs"
        },
        {
            "code": 6327,
            "name": "InvalidInstantWithdrawalFeeConfigOutOfOrder"
        },
        {
            "code": 6328,
            "name": "LastFeeConfigRatioMustBe100Pct"
        },
        {
            "code": 6329,
            "name": "InstantWithdrawalFeeTooHigh"
        },
        {
            "code": 6330,
            "name": "InstantWithdrawalDisabled"
        },
        {
            "code": 6331,
            "name": "NoInstantWithdrawalFeeConfigForRatio"
        },
        {
            "code": 6332,
            "name": "LiquidAssetsDeployedTooHigh"
        },
        {
            "code": 6333,
            "name": "RedemptionRequestModeMismatch"
        },
        {
            "code": 6334,
            "name": "InstantWithdrawalLiquiditySourceMismatch"
        },
        {
            "code": 6335,
            "name": "InvalidPoolConfig"
        },
        {
            "code": 6401,
            "name": "InvalidModeConfig"
        },
        {
            "code": 6402,
            "name": "DepositAmountTooLow"
        },
        {
            "code": 6403,
            "name": "LiquidityCapExceeded"
        },
        {
            "code": 6404,
            "name": "InsufficientModeSupply"
        },
        {
            "code": 6405,
            "name": "RedemptionSharesTooLow"
        },
        {
            "code": 6406,
            "name": "ModeAssetsStale"
        },
        {
            "code": 6407,
            "name": "ModeTokenNotReadyToClose"
        },
        {
            "code": 6408,
            "name": "LenderStateNotReadyToClose"
        },
        {
            "code": 6409,
            "name": "ModeMintNotReadyToClose"
        },
        {
            "code": 6410,
            "name": "ModeStateNotReadyToClose"
        },
        {
            "code": 6411,
            "name": "TokenMetadataMintMismatch"
        },
        {
            "code": 6412,
            "name": "ZeroAssetsSwitched"
        },
        {
            "code": 6501,
            "name": "StrategyManagerWalletMismatch"
        },
        {
            "code": 6502,
            "name": "InsufficientBalanceForDeployment"
        },
        {
            "code": 6503,
            "name": "DeclaredLossTooHigh"
        },
        {
            "code": 6504,
            "name": "NoLossToRecover"
        },
        {
            "code": 6505,
            "name": "TokenAccountOwnerMismatch"
        },
        {
            "code": 6506,
            "name": "ManualStrategyNotAllowedAsLiquiditySource"
        },
        {
            "code": 6507,
            "name": "DeploymentTargetIsActiveLiquiditySource"
        },
        {
            "code": 6508,
            "name": "StrategyWithdrawalAmountMismatch"
        },
        {
            "code": 6509,
            "name": "ManualDeploymentDailyLimitExceeded"
        },
        {
            "code": 6510,
            "name": "ManualDeploymentPerWalletLimitExceeded"
        },
        {
            "code": 6511,
            "name": "ManualStrategyNotAllowed"
        },
        {
            "code": 6512,
            "name": "ManualStrategyManagerProposalExpired"
        }
    ],
    "types": [
        {
            "name": "AsyncDeploymentConfig",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "AsyncDeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    },
                    {
                        "name": "reserved",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "AsyncDeploymentState",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "cumulative_amount_deployed",
                        "type": "u128"
                    },
                    {
                        "name": "cumulative_amount_paid_back",
                        "type": "u128"
                    },
                    {
                        "name": "reserved",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "AsyncDeploymentStrategyType",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "HumaInstitutional"
                    }
                ]
            }
        },
        {
            "name": "AsyncDeploymentTargetAddedEvent",
            "docs": [
                "An async deployment target has been added.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `strategy_type` - The async strategy type that was added.",
                "* `target_key` - The target account key for the strategy."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "AsyncDeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "AsyncDeploymentTargetRemovedEvent",
            "docs": [
                "An async deployment target has been removed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `strategy_type` - The async strategy type that was removed.",
                "* `target_key` - The target account key for the strategy."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "AsyncDeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "DeploymentConfig",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "DeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    },
                    {
                        "name": "reserved",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "DeploymentState",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "cumulative_amount_deployed",
                        "type": "u128"
                    },
                    {
                        "name": "cumulative_amount_paid_back",
                        "type": "u128"
                    },
                    {
                        "name": "reserved",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "DeploymentStrategyType",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "Manual"
                    },
                    {
                        "name": "JupLend"
                    },
                    {
                        "name": "KaminoLend"
                    }
                ]
            }
        },
        {
            "name": "DeploymentTargetAddedEvent",
            "docs": [
                "A deployment target has been added.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `strategy_type` - The strategy type that was added.",
                "* `target_key` - The target account key for the strategy."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "DeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "DeploymentTargetRemovedEvent",
            "docs": [
                "A deployment target has been removed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `strategy_type` - The strategy type that was removed.",
                "* `target_key` - The target account key for the strategy."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "DeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "FullyCanceledRedemptionRequestSkippedEvent",
            "docs": [
                "A redemption request that has been fully canceled previously has been skipped.",
                "",
                "# Fields",
                "* `request_id` - The ID of the redemption request.",
                "* `lender` - The lender who submitted the request."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "request_id",
                        "type": "u128"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "InstantWithdrawalConfig",
            "docs": [
                "Instant withdrawal configurations.",
                "",
                "# Fields",
                "* `instant_withdrawal_reserve_limit` - The maximum amount of assets that can be withdrawn instantly.",
                "* `instant_withdrawal_fee_configs` - The fee configurations for instant withdrawal.",
                "* `liquidity_source` - The `DeploymentConfig` account key identifying the deployment target",
                "from which liquidity will be pulled if the pool's available balance is insufficient to",
                "satisfy an instant withdrawal."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "instant_withdrawal_reserve_limit",
                        "type": "u64"
                    },
                    {
                        "name": "instant_withdrawal_fee_configs",
                        "type": {
                            "vec": {
                                "defined": {
                                    "name": "InstantWithdrawalFeeConfig"
                                }
                            }
                        }
                    },
                    {
                        "name": "liquidity_source",
                        "type": {
                            "option": "pubkey"
                        }
                    },
                    {
                        "name": "reserved",
                        "type": {
                            "array": ["u8", 127]
                        }
                    }
                ]
            }
        },
        {
            "name": "InstantWithdrawalFeeConfig",
            "docs": [
                "Instant withdrawal fee configuration (on-chain storage).",
                "",
                "# Fields",
                "* `liquid_asset_ratio_lt_bps` - The liquid asset ratio below which the fee is applied.",
                "* `fee_bps` - The fee in basis points."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "liquid_asset_ratio_lt_bps",
                        "type": "u16"
                    },
                    {
                        "name": "fee_bps",
                        "type": "u16"
                    },
                    {
                        "name": "reserved",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "InstantWithdrawalFeeConfigInput",
            "docs": [
                "Instant withdrawal fee configuration (instruction input, no reserved padding)."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "liquid_asset_ratio_lt_bps",
                        "type": "u16"
                    },
                    {
                        "name": "fee_bps",
                        "type": "u16"
                    }
                ]
            }
        },
        {
            "name": "InstantWithdrawalFeeConfigsChangedEvent",
            "docs": [
                "The instant withdrawal fee configs have been updated.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `fee_configs` - The new fee configurations."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "fee_configs",
                        "type": {
                            "vec": {
                                "defined": {
                                    "name": "InstantWithdrawalFeeConfigInput"
                                }
                            }
                        }
                    }
                ]
            }
        },
        {
            "name": "InstantWithdrawalLender",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    }
                ]
            }
        },
        {
            "name": "InstantWithdrawalLenderAddedEvent",
            "docs": [
                "A new instant withdrawal lender has been added.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `lender` - The address of the new instant withdrawal lender being added."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "InstantWithdrawalLenderRemovedEvent",
            "docs": [
                "An instant withdrawal lender has been removed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `lender` - The address of the instant withdrawal lender being removed."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "InstantWithdrawalLiquiditySourceClearedEvent",
            "docs": [
                "The strategy manager has cleared the liquidity source for instant withdrawals.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The strategy manager wallet address.",
                "* `old_liquidity_source` - The previous `DeploymentConfig` key."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_liquidity_source",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "InstantWithdrawalLiquiditySourceSetEvent",
            "docs": [
                "The strategy manager has set the liquidity source for instant withdrawals.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The strategy manager wallet address.",
                "* `old_liquidity_source` - The previous `DeploymentConfig` key.",
                "* `new_liquidity_source` - The new `DeploymentConfig` key."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_liquidity_source",
                        "type": {
                            "option": "pubkey"
                        }
                    },
                    {
                        "name": "new_liquidity_source",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "InstantWithdrawalReserveLimitChangedEvent",
            "docs": [
                "The instant withdrawal reserve has been updated.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `old_reserve_limit` - The old instant withdrawal reserve limit.",
                "* `new_reserve_limit` - The new instant withdrawal reserve limit."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_reserve_limit",
                        "type": "u64"
                    },
                    {
                        "name": "new_reserve_limit",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LPConfig",
            "docs": [
                "Lender related configurations.",
                "",
                "# Fields",
                "* `liquidity_cap` - The max liquidity allowed for the pool.",
                "* `min_deposit_amount` - The minimum amount a lender needs to supply each time they deposit.",
                "* `min_redemption_shares` - The minimum number of shares a lender has to request for redemption,",
                "unless their total number of shares is lower than this value.",
                "* `max_total_redemption_shares_per_window` - The maximum number of shares that can be requested",
                "for redemption across all lenders per time window. No more redemption requests can be",
                "submitted after this limit has been reached in a given window. If this value is set to 0, then",
                "redemption request submission is paused."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "liquidity_cap",
                        "type": "u128"
                    },
                    {
                        "name": "min_deposit_amount",
                        "type": "u64"
                    },
                    {
                        "name": "min_redemption_shares",
                        "type": "u64"
                    },
                    {
                        "name": "max_total_redemption_shares_per_window",
                        "type": "u128"
                    },
                    {
                        "name": "max_instant_withdrawal_shares_per_window",
                        "type": "u128"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 144]
                        }
                    }
                ]
            }
        },
        {
            "name": "LPConfigChangedEvent",
            "docs": [
                "The LP config has been updated.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `lp_config` - The new LP config."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "lp_config",
                        "type": {
                            "defined": {
                                "name": "LPConfig"
                            }
                        }
                    }
                ]
            }
        },
        {
            "name": "LenderAccountsClosedEvent",
            "docs": [
                "Lender accounts have been permanently closed.",
                "",
                "# Fields",
                "* `mode_config` - The mode mint key.",
                "* `payer` - The account that receives the rent-exempt fee refund.",
                "* `lender` - The lender who closed their accounts."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "payer",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "LenderAccountsCreatedEventV2",
            "docs": [
                "Lender accounts have been created.",
                "",
                "# Fields",
                "* `mode_config` - The mode config key.",
                "* `payer` - The payer who created the lender accounts and paid for the account rent-exempt fees.",
                "* `lender` - The lender who created their accounts."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "payer",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "LenderFundDisbursedEvent",
            "docs": [
                "A lender's funds from processed redemption requests have been disbursed.",
                "",
                "# Fields",
                "* `mode_config` - The mode config key.",
                "* `lender` - The lender whose funds have been disbursed.",
                "* `amount_disbursed` - The amount of the disbursement."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount_disbursed",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LenderFundWithdrawnEvent",
            "docs": [
                "A lender has withdrawn all their assets after pool closure.",
                "",
                "# Fields",
                "* `mode_config` - The mode config of the mode from which the lender has withdrawn.",
                "* `lender` - The lender who has withdrawn.",
                "* `shares` - The number of shares burned.",
                "* `assets` - The amount that was withdrawn."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "assets",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LenderFundsInstantlyWithdrawnEvent",
            "docs": [
                "A lender has withdrawn their assets instantly.",
                "",
                "# Fields",
                "* `mode_config` - The mode config of the mode from which the withdrawal was made.",
                "* `lender` - The lender who withdrew their assets.",
                "* `shares` - The number of shares burned.",
                "* `assets` - The total amount of assets redeemed (before fee).",
                "* `fee` - The amount of fee in underlying assets sent to pool owner treasury.",
                "* `strategy_liquidity_withdrawn` - The amount of liquidity withdrawn from the strategy."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "assets",
                        "type": "u64"
                    },
                    {
                        "name": "fee",
                        "type": "u64"
                    },
                    {
                        "name": "strategy_liquidity_withdrawn",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LenderRedemptionRecord",
            "docs": [
                "The information related to a lender'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`.",
                "* `total_amount_processed` - The total amount processed for redemption.",
                "* `total_amount_withdrawn` - The total amount withdrawn by the lender. The withdrawable amount",
                "= `total_amount_processed` - `total_amount_withdrawn`. Since we'll first try to transfer the",
                "processed funds directly to the lender, 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",
                "lender to claim later.",
                "* `shares_pending_redemption` - The number of shares pending redemption."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "num_pending_redemption_requests",
                        "type": "u128"
                    },
                    {
                        "name": "total_amount_processed",
                        "type": "u128"
                    },
                    {
                        "name": "total_amount_withdrawn",
                        "type": "u128"
                    },
                    {
                        "name": "shares_pending_redemption",
                        "type": "u128"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 144]
                        }
                    }
                ]
            }
        },
        {
            "name": "LenderState",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "redemption_record",
                        "type": {
                            "defined": {
                                "name": "LenderRedemptionRecord"
                            }
                        }
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "LiquidAssetsDeployedSetEvent",
            "docs": [
                "The strategist has set the amount of liquid assets deployed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The strategy manager wallet address.",
                "* `liquid_assets_deployed` - The new liquid assets deployed amount in underlying token units."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "liquid_assets_deployed",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LiquidityDeployedAsyncEvent",
            "docs": [
                "The strategy manager has deployed liquidity via an async strategy.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The strategy manager wallet that initiated the deposit.",
                "* `strategy_type` - The async strategy type used for deployment.",
                "* `target_key` - The key of the deployment target.",
                "* `amount` - The amount of underlying tokens deposited."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "AsyncDeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LiquidityDeployedEvent",
            "docs": [
                "The strategy manager has deployed liquidity from the pool.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The strategy manager wallet that initiated the liquidity deployment.",
                "* `strategy_type` - The strategy type used for liquidity deployment.",
                "* `target_key` - The key of the deployment target.",
                "* `amount` - The amount deployed."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "DeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LiquidityDeployedManuallyEvent",
            "docs": [
                "The manual strategy manager has deployed liquidity from the pool.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The manual strategy manager wallet that initiated the deployment.",
                "* `target_key` - The key of the deployment target.",
                "* `amount` - The amount deployed."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LiquidityDepositedEvent",
            "docs": [
                "A deposit has been made to the mode.",
                "",
                "# Fields",
                "* `mode_config` - The mode config key.",
                "* `depositor` - The account that made the deposit.",
                "* `assets` - The amount of underlying assets deposited.",
                "* `shares` - The number of shares minted for this deposit.",
                "* `commitment` - The commitment type of the deposit.",
                "* `commitment_auto_renewal` - Whether the commitment renews automatically after expiration."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "depositor",
                        "type": "pubkey"
                    },
                    {
                        "name": "assets",
                        "type": "u64"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "commitment",
                        "type": "string"
                    },
                    {
                        "name": "commitment_auto_renewal",
                        "type": "bool"
                    }
                ]
            }
        },
        {
            "name": "LiquidityPaidBackEvent",
            "docs": [
                "The strategy manager has paid back liquidity to the pool.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The strategy manager wallet address.",
                "* `amount` - The amount paid back.",
                "* `strategy_type` - The strategy type used for liquidity deployment.",
                "* `target_key` - The key of the deployment target.",
                "* `losses_recovered` - The amount of losses recovered in each mode."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "DeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "LiquidityPaidBackManuallyEvent",
            "docs": [
                "The manual strategy manager has paid back liquidity to the pool.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The manual strategy manager wallet address.",
                "* `amount` - The amount paid back.",
                "* `target_key` - The key of the deployment target."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "LiquidityPaybackCompletedAsyncEvent",
            "docs": [
                "The strategy manager has completed a previously initiated payback via an async strategy.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The strategy manager wallet that completed the payback.",
                "* `strategy_type` - The async strategy type used for the payback.",
                "* `target_key` - The key of the deployment target.",
                "* `amount` - The amount of underlying tokens disbursed back to the pool."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "AsyncDeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LiquidityPaybackInitiatedAsyncEvent",
            "docs": [
                "The strategy manager has initiated a payback via an async strategy.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The strategy manager wallet that initiated the payback.",
                "* `strategy_type` - The async strategy type used for the payback.",
                "* `target_key` - The key of the deployment target.",
                "* `shares` - The number of shares submitted for redemption."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "strategy_type",
                        "type": {
                            "defined": {
                                "name": "AsyncDeploymentStrategyType"
                            }
                        }
                    },
                    {
                        "name": "target_key",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LossAuthorityChangedEvent",
            "docs": [
                "The loss authority has been changed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `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": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_loss_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "new_loss_authority",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "LossDeclaredEvent",
            "docs": [
                "The loss authority has declared loss on the investment.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `loss_authority` - The loss authority address.",
                "* `loss_distributed` - The loss distributed to each mode."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "loss_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "loss_distributed",
                        "type": {
                            "vec": "u64"
                        }
                    }
                ]
            }
        },
        {
            "name": "LossRecoveredEvent",
            "docs": [
                "The loss authority has recovered loss by transferring assets to the pool.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `loss_authority` - The loss authority address.",
                "* `amount` - The amount transferred to the pool for loss recovery.",
                "* `losses_recovered` - The amount of losses recovered in each mode."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "loss_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "losses_recovered",
                        "type": {
                            "vec": "u64"
                        }
                    }
                ]
            }
        },
        {
            "name": "ManageModeTokenMetadataArgs",
            "docs": [
                "Parameters used for creating and updating mode token metadata. All string lengths",
                "are checked by the MPL token metadata program, hence omitted here.",
                "",
                "# Fields",
                "* `name` - The name of the mode token.",
                "* `symbol` - The symbol of the mode token.",
                "* `uri` - The URI of additional mode token metadata stored off-chain."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "name",
                        "type": "string"
                    },
                    {
                        "name": "symbol",
                        "type": "string"
                    },
                    {
                        "name": "uri",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "ManualDeploymentLimitChangedEvent",
            "docs": [
                "The manual deploy limits have been changed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `daily_limit` - The rolling 24-hour deployment limit.",
                "* `per_wallet_limit` - The maximum net amount deployed per wallet."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "daily_limit",
                        "type": "u64"
                    },
                    {
                        "name": "per_wallet_limit",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "ManualStrategyManager",
            "docs": [
                "An approved manual strategy manager that can deploy and pay back liquidity via the",
                "Manual strategy. Each manual strategy manager can only deploy into its own wallet.",
                "",
                "# Fields",
                "* `bump` - The bump of the account.",
                "* `wallet` - The authorized wallet address."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "ManualStrategyManagerApprovedEvent",
            "docs": [
                "A manual strategy manager has been approved by the protocol owner.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The approved wallet address."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "ManualStrategyManagerProposal",
            "docs": [
                "A pending proposal to add a manual strategy manager. Created by the pool owner",
                "and must be approved by the Huma owner.",
                "",
                "# Fields",
                "* `bump` - The bump of the account.",
                "* `pool_config` - The `PoolConfig` key this proposal belongs to.",
                "* `wallet` - The proposed wallet address for the manual strategy manager.",
                "* `proposed_at` - The Unix timestamp at which the proposal was created."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "pool_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "proposed_at",
                        "type": "u64"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "ManualStrategyManagerProposalCancelledEvent",
            "docs": [
                "A manual strategy manager proposal has been cancelled.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The wallet address of the cancelled proposal."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "ManualStrategyManagerProposedEvent",
            "docs": [
                "A manual strategy manager has been proposed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The proposed wallet address."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "ManualStrategyManagerRemovedEvent",
            "docs": [
                "A manual strategy manager has been removed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The wallet address that was removed."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "ModeAPYChangedEvent",
            "docs": [
                "The mode APY has been updated.",
                "",
                "# Fields",
                "* `mode_config` - The mode config key.",
                "* `target_apy_bps` - The new target APY expressed in basis points.",
                "* `periodic_apy_bps` - The new periodic APY expressed in basis points."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "target_apy_bps",
                        "type": "u16"
                    },
                    {
                        "name": "periodic_apy_bps",
                        "type": "f64"
                    }
                ]
            }
        },
        {
            "name": "ModeAddedEvent",
            "docs": [
                "A mode has been added to the pool.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `mode_id` - The mode ID.",
                "* `mode_name` - The name of the mode.",
                "* `mode_config` - The mode config key.",
                "* `mode_mint` - The mode token mint key.",
                "* `mode_token` - The mode token account key.",
                "* `mode_token_name` - The name of the mode token.",
                "* `mode_token_symbol` - The symbol of the mode token.",
                "* `mode_token_uri` - The URI of additional mode token metadata stored off-chain."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "mode_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "mode_name",
                        "type": "string"
                    },
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "mode_mint",
                        "type": "pubkey"
                    },
                    {
                        "name": "mode_token",
                        "type": "pubkey"
                    },
                    {
                        "name": "mode_token_name",
                        "type": "string"
                    },
                    {
                        "name": "mode_token_symbol",
                        "type": "string"
                    },
                    {
                        "name": "mode_token_uri",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "ModeAssetsRefreshedEvent",
            "docs": [
                "The assets for a mode have been refreshed.",
                "",
                "# Fields",
                "* `mode_config` - The mode config key.",
                "* `old_assets` - The mode assets before update.",
                "* `new_assets` - The updated mode assets."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "yield_bps",
                        "type": "f64"
                    },
                    {
                        "name": "old_assets_refreshed_at",
                        "type": "u64"
                    },
                    {
                        "name": "old_assets",
                        "type": "u64"
                    },
                    {
                        "name": "new_assets",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "ModeConfig",
            "docs": [
                "The configurations of a mode.",
                "",
                "# Fields",
                "* `bump` - The bump of the mode.",
                "* `mint_bump` - The bump of the mode mint.",
                "* `id` - The ID of the mode.",
                "* `name` - The name of the mode.",
                "* `target_apy_bps` - The target annual percentage yield (APY) for the underlying assets",
                "deposited, expressed in basis points.",
                "* `periodic_apy_bps` - The periodic rate, expressed as an APY in basis points. When compounded",
                "over the chosen periods in a year (e.g., every second), this rate yields the same",
                "overall annual return as target_apy_bps."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "mint_bump",
                        "type": "u8"
                    },
                    {
                        "name": "id",
                        "type": "pubkey"
                    },
                    {
                        "name": "name",
                        "type": "string"
                    },
                    {
                        "name": "target_apy_bps",
                        "type": "u16"
                    },
                    {
                        "name": "periodic_apy_bps",
                        "type": "f64"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "ModeNameChangedEvent",
            "docs": [
                "The mode name has been updated.",
                "",
                "# Fields",
                "* `mode_config` - The mode config key.",
                "* `name` - The new name of the mode."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "name",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "ModeRemovedEvent",
            "docs": [
                "A mode has been removed from the pool.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `mode_id` - The mode ID."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "mode_id",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "ModeState",
            "docs": [
                "The states of a mode.",
                "",
                "# Fields",
                "* `assets` - The total amount of underlying assets in th mode. This includes both principals",
                "and yields (realized and unrealized).",
                "* `losses` - The total outstanding losses in the mode.",
                "* `cumulative_yields` - The cumulative amount of yields accrued in this mode.",
                "* `assets_refreshed_at` - The last timestamp at which `assets` was refreshed."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "assets",
                        "type": "u128"
                    },
                    {
                        "name": "losses",
                        "type": "u128"
                    },
                    {
                        "name": "cumulative_yields",
                        "type": "u128"
                    },
                    {
                        "name": "assets_refreshed_at",
                        "type": "u64"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "ModeSwitchedEvent",
            "docs": [
                "A lender has switched their investment from one mode to another.",
                "",
                "# Fields",
                "* `source_mode_config` - The source mode config key.",
                "* `destination_mode_config` - The destination mode config key.",
                "* `lender` - The lender who switched mode.",
                "* `source_shares_burned` - The number of shares burned in the source mode.",
                "* `destination_shares_burned` - The number of shares minted in the destination mode.",
                "* `assets_switched` - The amount switched mode.",
                "* `investment_id` - The ID of the original investment."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "source_mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "destination_mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "source_shares_burned",
                        "type": "u64"
                    },
                    {
                        "name": "destination_shares_minted",
                        "type": "u64"
                    },
                    {
                        "name": "assets_switched",
                        "type": "u64"
                    },
                    {
                        "name": "investment_id",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "ModeTokenMetadataUpdatedEvent",
            "docs": [
                "The token metadata has been updated for a mode.",
                "",
                "# Fields",
                "* `mode_config` - The mode config key.",
                "* `name` - The name of the mode token.",
                "* `symbol` - The symbol of the mode token.",
                "* `uri` - The URI of additional mode token metadata stored off-chain."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "name",
                        "type": "string"
                    },
                    {
                        "name": "symbol",
                        "type": "string"
                    },
                    {
                        "name": "uri",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "PoolClosedEvent",
            "docs": [
                "The pool has been closed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "PoolConfig",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "huma_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "pool_owner",
                        "type": "pubkey"
                    },
                    {
                        "name": "pool_owner_treasury",
                        "type": "pubkey"
                    },
                    {
                        "name": "underlying_mint",
                        "type": "pubkey"
                    },
                    {
                        "name": "pool_authority_bump",
                        "type": "u8"
                    },
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "pool_name",
                        "type": "string"
                    },
                    {
                        "name": "lp_config",
                        "type": {
                            "defined": {
                                "name": "LPConfig"
                            }
                        }
                    },
                    {
                        "name": "instant_withdrawal_config",
                        "type": {
                            "defined": {
                                "name": "InstantWithdrawalConfig"
                            }
                        }
                    },
                    {
                        "name": "loss_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "manual_deployment_daily_limit",
                        "type": "u64"
                    },
                    {
                        "name": "manual_deployment_per_wallet_limit",
                        "type": "u64"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 112]
                        }
                    }
                ]
            }
        },
        {
            "name": "PoolConfigResizedEvent",
            "docs": [
                "The pool config account has been resized.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `lamports_added` - Additional lamports transferred to keep the account rent-exempt."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "lamports_added",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "PoolCreatedEvent",
            "docs": [
                "A permissionless pool has been created.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `huma_config` - The ID of the Huma config that the pool is associated with.",
                "* `pool_owner` - The address of the pool owner.",
                "* `pool_owner_treasury` - The address of the pool owner treasury.",
                "* `underlying_mint` - The mint account of the underlying asset.",
                "* `pool_underlying_token` - The underlying asset token account of the pool.",
                "* `pool_authority` - The address of the pool authority account.",
                "* `pool_name` - The name of the pool."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "huma_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "pool_owner",
                        "type": "pubkey"
                    },
                    {
                        "name": "pool_owner_treasury",
                        "type": "pubkey"
                    },
                    {
                        "name": "underlying_mint",
                        "type": "pubkey"
                    },
                    {
                        "name": "pool_underlying_token",
                        "type": "pubkey"
                    },
                    {
                        "name": "pool_authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "pool_name",
                        "type": "string"
                    },
                    {
                        "name": "loss_authority",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "PoolDisabledEvent",
            "docs": [
                "The pool has been disabled.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "PoolEnabledEvent",
            "docs": [
                "The pool has been enabled.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "PoolEnteredPreClosureEvent",
            "docs": [
                "The pool has entered the pre-closure status to prepare for final closing.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "PoolNameChangedEvent",
            "docs": [
                "The pool name has been updated.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `pool_name` - The new name of the pool."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "pool_name",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "PoolOperator",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    }
                ]
            }
        },
        {
            "name": "PoolOperatorAddedEvent",
            "docs": [
                "A new pool operator has been added.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `operator` - The address of the new operator being added."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "operator",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "PoolOperatorRemovedEvent",
            "docs": [
                "A pool operator has been removed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `operator` - The address of the operator being removed."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "operator",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "PoolOwnerChangedEvent",
            "docs": [
                "The pool owner has changed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `owner` - The address of the new owner."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "owner",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "PoolOwnerTreasuryChangedEvent",
            "docs": [
                "The pool owner treasury has been updated.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `old_treasury` - The address of the old pool owner treasury.",
                "* `new_treasury` - The address of the new pool owner treasury."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "old_treasury",
                        "type": "pubkey"
                    },
                    {
                        "name": "new_treasury",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "PoolState",
            "docs": [
                "The state of a pool.",
                "",
                "# Fields",
                "* `status` - The current lifecycle status of the pool (Off, On, PreClosure, Closed).",
                "* `disbursement_reserve` - The total amount of underlying assets reserved for pending",
                "disbursements to lenders who were not able to receive their funds when their redemption",
                "request was processed.",
                "* `mode_states` - Per-mode states, ordered to match `mode_config_keys`.",
                "* `mode_config_keys` - The public keys of the mode configs registered in this pool.",
                "* `redemption_queue` - Tracks queued redemption requests and gating state.",
                "* `pool_stats` - Cumulative deployment and pay-back statistics.",
                "* `liquid_assets_deployed` - The amount of assets deployed to other liquid DeFi protocols, used for",
                "instant withdrawal fee computation. Program instructions automatically increase this",
                "value on deployment and decrease this value when liquidity is withdrawn from the strategy;",
                "the strategy manager can also set it directly via `set_liquid_assets_deployed`."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "status",
                        "type": {
                            "defined": {
                                "name": "PoolStatus"
                            }
                        }
                    },
                    {
                        "name": "disbursement_reserve",
                        "type": "u128"
                    },
                    {
                        "name": "mode_states",
                        "type": {
                            "vec": {
                                "defined": {
                                    "name": "ModeState"
                                }
                            }
                        }
                    },
                    {
                        "name": "mode_config_keys",
                        "type": {
                            "vec": "pubkey"
                        }
                    },
                    {
                        "name": "redemption",
                        "type": {
                            "defined": {
                                "name": "Redemption"
                            }
                        }
                    },
                    {
                        "name": "pool_stats",
                        "type": {
                            "defined": {
                                "name": "PoolStats"
                            }
                        }
                    },
                    {
                        "name": "liquid_assets_deployed",
                        "type": "u64"
                    },
                    {
                        "name": "manual_daily_amount_deployed",
                        "type": "u64"
                    },
                    {
                        "name": "manual_daily_window_starts_at",
                        "type": "u64"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 136]
                        }
                    }
                ]
            }
        },
        {
            "name": "PoolStats",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "cumulative_amount_deployed",
                        "type": "u128"
                    },
                    {
                        "name": "cumulative_amount_paid_back",
                        "type": "u128"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "PoolStatus",
            "docs": [
                "The pool status",
                "",
                "# Variants",
                "* `Off` - The pool is temporarily turned off.",
                "* `On` - The pool is active.",
                "* `PreClosure` - The pool is undergoing final processing to prepare for closure.",
                "* `Closed` - The pool is closed after maturity."
            ],
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "Off"
                    },
                    {
                        "name": "On"
                    },
                    {
                        "name": "PreClosure"
                    },
                    {
                        "name": "Closed"
                    }
                ]
            }
        },
        {
            "name": "PrivilegedInstantWithdrawalEvent",
            "docs": [
                "An instant withdrawal lender has withdrawn their assets instantly.",
                "",
                "# Fields",
                "* `mode_config` - The mode config of the mode from which the withdrawal was made.",
                "* `lender` - The instant withdrawal lender who withdrew their own shares.",
                "* `shares` - The number of shares burned.",
                "* `assets` - The amount of assets withdrawn.",
                "* `strategy_liquidity_needed` - The amount of liquidity withdrawn from the strategy."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    },
                    {
                        "name": "assets",
                        "type": "u64"
                    },
                    {
                        "name": "strategy_liquidity_withdrawn",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "RedeemedFundsPaidOutEvent",
            "docs": [
                "Redeemed funds have been paid out to the lender.",
                "",
                "# Fields",
                "* `request_id` - The ID of the redemption request that was processed.",
                "* `lender` - The lender whose shares have been redeemed.",
                "* `amount` - The amount of the disbursement."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "request_id",
                        "type": "u128"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "RedeemedFundsReservedEvent",
            "docs": [
                "Redeemed funds have been held in the protocol for manual claiming later.",
                "",
                "# Fields",
                "* `request_id` - The ID of the redemption request that was processed.",
                "* `lender` - The lender whose shares have been redeemed.",
                "* `amount` - The amount that was reserved."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "request_id",
                        "type": "u128"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "Redemption",
            "docs": [
                "States for the global redemption queue.",
                "",
                "# Fields",
                "* `next_request_id` - The ID of the next redemption request to be processed.",
                "* `last_request_id` - The ID of the last unprocessed redemption request in the queue.",
                "* `redemption_gating` - Redemption gating information tracker."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "next_request_id",
                        "type": "u128"
                    },
                    {
                        "name": "last_request_id",
                        "type": "u128"
                    },
                    {
                        "name": "global_redemption_gating",
                        "type": {
                            "defined": {
                                "name": "RedemptionGating"
                            }
                        }
                    },
                    {
                        "name": "instant_withdrawal_gating",
                        "type": {
                            "defined": {
                                "name": "RedemptionGating"
                            }
                        }
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 136]
                        }
                    }
                ]
            }
        },
        {
            "name": "RedemptionGating",
            "docs": [
                "Redemption gating information tracker.",
                "",
                "# Fields",
                "* `total_shares_requested` - The total number of shares requested for redemption during",
                "the current window. No redemption request can be submitted once the total shares requested",
                "reaches the limit defined in `LPConfig`.",
                "* `window_starts_at` - The Unix timestamp (UTC) marking the start of the current 24-hour",
                "redemption window."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "total_shares_requested",
                        "type": "u128"
                    },
                    {
                        "name": "window_starts_at",
                        "type": "u64"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 80]
                        }
                    }
                ]
            }
        },
        {
            "name": "RedemptionRequest",
            "docs": [
                "States for a lender's redemption request.",
                "",
                "#  Fields",
                "* `bump` - The bump of the account.",
                "* `id` - The ID of the redemption request.",
                "* `lender` - The lender who submitted the request.",
                "* `mode_config` - The `ModeConfig` key of the mode 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."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "id",
                        "type": "u128"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares_requested",
                        "type": "u128"
                    },
                    {
                        "name": "requested_at",
                        "type": "u64"
                    },
                    {
                        "name": "payer",
                        "type": "pubkey"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 128]
                        }
                    }
                ]
            }
        },
        {
            "name": "RedemptionRequestAddedEventV2",
            "docs": [
                "A redemption request has been added.",
                "",
                "# Fields",
                "* `mode_config` - The mode config key.",
                "* `payer` - The payer who paid for the rent-exempt fees of the new `RedemptionRequest` account.",
                "* `lender` - The lender who requested redemption.",
                "* `request_id` - The ID of the newly created request.",
                "* `shares` - The number of shares to be redeemed."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "payer",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "request_id",
                        "type": "u128"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "RedemptionRequestCanceledEvent",
            "docs": [
                "A lender has reduced the number of shares requested for redemption.",
                "",
                "# Fields",
                "* `mode_config` - The mode config key.",
                "* `lender` - The lender who requested redemption.",
                "* `request_id` - The ID of the newly created request.",
                "* `shares` - The number of shares to be redeemed."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "mode_config",
                        "type": "pubkey"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "request_id",
                        "type": "u128"
                    },
                    {
                        "name": "shares",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "RedemptionRequestProcessedEvent",
            "docs": [
                "A redemption request has been processed.",
                "",
                "# Fields",
                "* `request_id` - The ID of the redemption request.",
                "* `lender` - The lender who submitted the request.",
                "* `shares_processed` - The number of shares processed.",
                "* `amount_processed` - The resulting amount processed."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "request_id",
                        "type": "u128"
                    },
                    {
                        "name": "lender",
                        "type": "pubkey"
                    },
                    {
                        "name": "shares_processed",
                        "type": "u64"
                    },
                    {
                        "name": "amount_processed",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "StrategyManagerWallet",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    },
                    {
                        "name": "padding",
                        "type": {
                            "array": ["u8", 160]
                        }
                    }
                ]
            }
        },
        {
            "name": "StrategyManagerWalletAddedEvent",
            "docs": [
                "A wallet has been added for the strategy manager.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The wallet address."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    }
                ]
            }
        },
        {
            "name": "StrategyManagerWalletRemovedEvent",
            "docs": [
                "A wallet for the strategy manager has been removed.",
                "",
                "# Fields",
                "* `pool_id` - The pool ID.",
                "* `wallet` - The wallet address."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "pool_id",
                        "type": "pubkey"
                    },
                    {
                        "name": "wallet",
                        "type": "pubkey"
                    }
                ]
            }
        }
    ],
    "constants": [
        {
            "name": "ASYNC_DEPLOYMENT_CONFIG_SEED",
            "type": "bytes",
            "value": "[97, 115, 121, 110, 99, 95, 100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 99, 111, 110, 102, 105, 103]"
        },
        {
            "name": "ASYNC_DEPLOYMENT_STATE_SEED",
            "type": "bytes",
            "value": "[97, 115, 121, 110, 99, 95, 100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 115, 116, 97, 116, 101]"
        },
        {
            "name": "DEPLOYMENT_CONFIG_SEED",
            "type": "bytes",
            "value": "[100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 99, 111, 110, 102, 105, 103]"
        },
        {
            "name": "DEPLOYMENT_STATE_SEED",
            "type": "bytes",
            "value": "[100, 101, 112, 108, 111, 121, 109, 101, 110, 116, 95, 115, 116, 97, 116, 101]"
        },
        {
            "name": "HUMA_CONFIG_SEED",
            "type": "bytes",
            "value": "[104, 117, 109, 97, 95, 99, 111, 110, 102, 105, 103]"
        },
        {
            "name": "INSTANT_WITHDRAWAL_LENDER_SEED",
            "type": "bytes",
            "value": "[105, 110, 115, 116, 97, 110, 116, 95, 119, 105, 116, 104, 100, 114, 97, 119, 97, 108, 95, 108, 101, 110, 100, 101, 114]"
        },
        {
            "name": "LENDER_STATE_SEED",
            "type": "bytes",
            "value": "[108, 101, 110, 100, 101, 114, 95, 115, 116, 97, 116, 101]"
        },
        {
            "name": "LIQUIDITY_ASSET_SEED",
            "type": "bytes",
            "value": "[108, 105, 113, 117, 105, 100, 105, 116, 121, 95, 97, 115, 115, 101, 116]"
        },
        {
            "name": "MANUAL_STRATEGY_MANAGER_PROPOSAL_SEED",
            "type": "bytes",
            "value": "[109, 97, 110, 117, 97, 108, 95, 115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97, 103, 101, 114, 95, 112, 114, 111, 112, 111, 115, 97, 108]"
        },
        {
            "name": "MANUAL_STRATEGY_MANAGER_SEED",
            "type": "bytes",
            "value": "[109, 97, 110, 117, 97, 108, 95, 115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97, 103, 101, 114]"
        },
        {
            "name": "MODE_CONFIG_SEED",
            "type": "bytes",
            "value": "[109, 111, 100, 101, 95, 99, 111, 110, 102, 105, 103]"
        },
        {
            "name": "MODE_MINT_SEED",
            "type": "bytes",
            "value": "[109, 111, 100, 101, 95, 109, 105, 110, 116]"
        },
        {
            "name": "POOL_AUTHORITY_SEED",
            "type": "bytes",
            "value": "[112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121]"
        },
        {
            "name": "POOL_CONFIG_SEED",
            "type": "bytes",
            "value": "[112, 111, 111, 108, 95, 99, 111, 110, 102, 105, 103]"
        },
        {
            "name": "POOL_OPERATOR_SEED",
            "type": "bytes",
            "value": "[112, 111, 111, 108, 95, 111, 112, 101, 114, 97, 116, 111, 114]"
        },
        {
            "name": "POOL_STATE_SEED",
            "type": "bytes",
            "value": "[112, 111, 111, 108, 95, 115, 116, 97, 116, 101]"
        },
        {
            "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": "STRATEGY_MANAGER_WALLET_SEED",
            "type": "bytes",
            "value": "[115, 116, 114, 97, 116, 101, 103, 121, 95, 109, 97, 110, 97, 103, 101, 114, 95, 119, 97, 108, 108, 101, 116]"
        }
    ]
}
