{
  "version": "2.2.2",
  "name": "kamino_vault",
  "instructions": [
    {
      "name": "initVault",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseTokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "adminTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesTokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "updateReserveAllocation",
      "accounts": [
        {
          "name": "signer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ctokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveWhitelistEntry",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "reserveCollateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "weight",
          "type": "u64"
        },
        {
          "name": "cap",
          "type": "u64"
        }
      ]
    },
    {
      "name": "updateReserveAllocationV2",
      "accounts": [
        {
          "name": "signer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ctokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveWhitelistEntry",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "reserveCollateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "weight",
          "type": "u64"
        },
        {
          "name": "cap",
          "type": "u64"
        },
        {
          "name": "ctokenAllocationCap",
          "type": "u64"
        }
      ]
    },
    {
      "name": "deposit",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSharesAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "maxAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "depositWithMinSharesOut",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSharesAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "maxAmount",
          "type": "u64"
        },
        {
          "name": "minSharesOut",
          "type": "u64"
        }
      ]
    },
    {
      "name": "buy",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSharesAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "maxAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "buyWithMinSharesOut",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSharesAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "maxAmount",
          "type": "u64"
        },
        {
          "name": "minSharesOut",
          "type": "u64"
        }
      ]
    },
    {
      "name": "withdraw",
      "accounts": [
        {
          "name": "withdrawFromAvailable",
          "accounts": [
            {
              "name": "user",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "vaultState",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "globalConfig",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "tokenVault",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "baseVaultAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "userTokenAta",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "tokenMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userSharesAta",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "sharesMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "tokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "sharesTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "klendProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "eventAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "program",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "withdrawFromReserveAccounts",
          "accounts": [
            {
              "name": "vaultState",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "ctokenVault",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveLiquiditySupply",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveCollateralMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveCollateralTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "sharesAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "sell",
      "accounts": [
        {
          "name": "withdrawFromAvailable",
          "accounts": [
            {
              "name": "user",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "vaultState",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "globalConfig",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "tokenVault",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "baseVaultAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "userTokenAta",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "tokenMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userSharesAta",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "sharesMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "tokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "sharesTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "klendProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "eventAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "program",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "withdrawFromReserveAccounts",
          "accounts": [
            {
              "name": "vaultState",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "ctokenVault",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveLiquiditySupply",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveCollateralMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveCollateralTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "sharesAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "invest",
      "accounts": [
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "payerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ctokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveWhitelistEntry",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveCollateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "investWithMaxAmount",
      "accounts": [
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "payerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ctokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveWhitelistEntry",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveCollateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "maxAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "updateVaultConfig",
      "accounts": [
        {
          "name": "signer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "entry",
          "type": {
            "defined": "VaultConfigField"
          }
        },
        {
          "name": "data",
          "type": "bytes"
        }
      ]
    },
    {
      "name": "withdrawPendingFees",
      "accounts": [
        {
          "name": "vaultAdminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ctokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveCollateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "updateAdmin",
      "accounts": [
        {
          "name": "pendingAdmin",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "giveUpPendingFees",
      "accounts": [
        {
          "name": "vaultAdminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "maxAmountToGiveUp",
          "type": "u64"
        }
      ]
    },
    {
      "name": "initializeSharesMetadata",
      "accounts": [
        {
          "name": "vaultAdminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMetadata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "metadataProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        }
      ]
    },
    {
      "name": "updateSharesMetadata",
      "accounts": [
        {
          "name": "vaultAdminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMetadata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "metadataProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        }
      ]
    },
    {
      "name": "withdrawFromAvailable",
      "accounts": [
        {
          "name": "user",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userTokenAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSharesAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "sharesAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "removeAllocation",
      "accounts": [
        {
          "name": "vaultAdminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initGlobalConfig",
      "accounts": [
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "programData",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "updateGlobalConfig",
      "accounts": [
        {
          "name": "globalAdmin",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "update",
          "type": {
            "defined": "UpdateGlobalConfigMode"
          }
        }
      ]
    },
    {
      "name": "updateGlobalConfigAdmin",
      "accounts": [
        {
          "name": "pendingAdmin",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "addUpdateWhitelistedReserve",
      "accounts": [
        {
          "name": "globalAdmin",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveWhitelistEntry",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "update",
          "type": {
            "defined": "UpdateReserveWhitelistMode"
          }
        }
      ]
    },
    {
      "name": "topupRewards",
      "accounts": [
        {
          "name": "payer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "payerTokenTa",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "withdrawRewards",
      "accounts": [
        {
          "name": "vaultAdminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "withdrawTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "redeemInKind",
      "accounts": [
        {
          "name": "user",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "vaultState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ctokenVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userCtokenTa",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ctokenMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSharesTa",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveCollateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "klendProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "sharesAmount",
          "type": "u64"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Reserve",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "version",
            "type": "u64"
          },
          {
            "name": "lastUpdate",
            "type": {
              "defined": "LastUpdate"
            }
          },
          {
            "name": "lendingMarket",
            "type": "publicKey"
          },
          {
            "name": "farmCollateral",
            "type": "publicKey"
          },
          {
            "name": "farmDebt",
            "type": "publicKey"
          },
          {
            "name": "liquidity",
            "type": {
              "defined": "ReserveLiquidity"
            }
          },
          {
            "name": "reserveLiquidityPadding",
            "type": {
              "array": [
                "u64",
                150
              ]
            }
          },
          {
            "name": "collateral",
            "type": {
              "defined": "ReserveCollateral"
            }
          },
          {
            "name": "reserveCollateralPadding",
            "type": {
              "array": [
                "u64",
                150
              ]
            }
          },
          {
            "name": "config",
            "type": {
              "defined": "ReserveConfig"
            }
          },
          {
            "name": "configPadding",
            "type": {
              "array": [
                "u64",
                112
              ]
            }
          },
          {
            "name": "borrowedAmountOutsideElevationGroup",
            "type": "u64"
          },
          {
            "name": "borrowedAmountsAgainstThisReserveInElevationGroups",
            "type": {
              "array": [
                "u64",
                32
              ]
            }
          },
          {
            "name": "withdrawQueue",
            "type": {
              "defined": "WithdrawQueue"
            }
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                204
              ]
            }
          }
        ]
      }
    },
    {
      "name": "GlobalConfig",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "globalAdmin",
            "type": "publicKey"
          },
          {
            "name": "pendingAdmin",
            "type": "publicKey"
          },
          {
            "name": "withdrawalPenaltyLamports",
            "type": "u64"
          },
          {
            "name": "withdrawalPenaltyBps",
            "type": "u64"
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u8",
                944
              ]
            }
          }
        ]
      }
    },
    {
      "name": "ReserveWhitelistEntry",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "tokenMint",
            "type": "publicKey"
          },
          {
            "name": "reserve",
            "type": "publicKey"
          },
          {
            "name": "whitelistAddAllocation",
            "type": "u8"
          },
          {
            "name": "whitelistInvest",
            "type": "u8"
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u8",
                62
              ]
            }
          }
        ]
      }
    },
    {
      "name": "VaultState",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "vaultAdminAuthority",
            "type": "publicKey"
          },
          {
            "name": "baseVaultAuthority",
            "type": "publicKey"
          },
          {
            "name": "baseVaultAuthorityBump",
            "type": "u64"
          },
          {
            "name": "tokenMint",
            "type": "publicKey"
          },
          {
            "name": "tokenMintDecimals",
            "type": "u64"
          },
          {
            "name": "tokenVault",
            "type": "publicKey"
          },
          {
            "name": "tokenProgram",
            "type": "publicKey"
          },
          {
            "name": "sharesMint",
            "type": "publicKey"
          },
          {
            "name": "sharesMintDecimals",
            "type": "u64"
          },
          {
            "name": "tokenAvailable",
            "type": "u64"
          },
          {
            "name": "sharesIssued",
            "type": "u64"
          },
          {
            "name": "availableCrankFunds",
            "type": "u64"
          },
          {
            "name": "unallocatedWeight",
            "type": "u64"
          },
          {
            "name": "performanceFeeBps",
            "type": "u64"
          },
          {
            "name": "managementFeeBps",
            "type": "u64"
          },
          {
            "name": "lastFeeChargeTimestamp",
            "type": "u64"
          },
          {
            "name": "prevAumSf",
            "type": "u128"
          },
          {
            "name": "pendingFeesSf",
            "type": "u128"
          },
          {
            "name": "vaultAllocationStrategy",
            "type": {
              "array": [
                {
                  "defined": "VaultAllocation"
                },
                25
              ]
            }
          },
          {
            "name": "padding1",
            "type": {
              "array": [
                "u128",
                256
              ]
            }
          },
          {
            "name": "minDepositAmount",
            "type": "u64"
          },
          {
            "name": "minWithdrawAmount",
            "type": "u64"
          },
          {
            "name": "minInvestAmount",
            "type": "u64"
          },
          {
            "name": "minInvestDelaySlots",
            "type": "u64"
          },
          {
            "name": "crankFundFeePerReserve",
            "type": "u64"
          },
          {
            "name": "pendingAdmin",
            "type": "publicKey"
          },
          {
            "name": "cumulativeEarnedInterestSf",
            "type": "u128"
          },
          {
            "name": "cumulativeMgmtFeesSf",
            "type": "u128"
          },
          {
            "name": "cumulativePerfFeesSf",
            "type": "u128"
          },
          {
            "name": "name",
            "type": {
              "array": [
                "u8",
                40
              ]
            }
          },
          {
            "name": "vaultLookupTable",
            "type": "publicKey"
          },
          {
            "name": "vaultFarm",
            "type": "publicKey"
          },
          {
            "name": "creationTimestamp",
            "type": "u64"
          },
          {
            "name": "unallocatedTokensCap",
            "type": "u64"
          },
          {
            "name": "allocationAdmin",
            "type": "publicKey"
          },
          {
            "name": "withdrawalPenaltyLamports",
            "type": "u64"
          },
          {
            "name": "withdrawalPenaltyBps",
            "type": "u64"
          },
          {
            "name": "firstLossCapitalFarm",
            "type": "publicKey"
          },
          {
            "name": "allowAllocationsInWhitelistedReservesOnly",
            "type": "u8"
          },
          {
            "name": "allowInvestInWhitelistedReservesOnly",
            "type": "u8"
          },
          {
            "name": "padding2",
            "type": {
              "array": [
                "u8",
                6
              ]
            }
          },
          {
            "name": "depositCap",
            "type": "u64"
          },
          {
            "name": "rewardInfo",
            "type": {
              "defined": "VaultRewardInfo"
            }
          },
          {
            "name": "padding3",
            "type": {
              "array": [
                "u128",
                232
              ]
            }
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "LastUpdate",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "slot",
            "type": "u64"
          },
          {
            "name": "stale",
            "type": "u8"
          },
          {
            "name": "priceStatus",
            "type": "u8"
          },
          {
            "name": "placeholder",
            "type": {
              "array": [
                "u8",
                6
              ]
            }
          }
        ]
      }
    },
    {
      "name": "BigFractionBytes",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "value",
            "type": {
              "array": [
                "u64",
                4
              ]
            }
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                2
              ]
            }
          }
        ]
      }
    },
    {
      "name": "ReserveCollateral",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mintPubkey",
            "type": "publicKey"
          },
          {
            "name": "mintTotalSupply",
            "type": "u64"
          },
          {
            "name": "supplyVault",
            "type": "publicKey"
          },
          {
            "name": "padding1",
            "type": {
              "array": [
                "u128",
                32
              ]
            }
          },
          {
            "name": "padding2",
            "type": {
              "array": [
                "u128",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "ReserveConfig",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "status",
            "type": "u8"
          },
          {
            "name": "paddingDeprecatedAssetTier",
            "type": "u8"
          },
          {
            "name": "hostFixedInterestRateBps",
            "type": "u16"
          },
          {
            "name": "minDeleveragingBonusBps",
            "type": "u16"
          },
          {
            "name": "blockCtokenUsage",
            "type": "u8"
          },
          {
            "name": "earlyRepayRemainingInterestPct",
            "type": "u8"
          },
          {
            "name": "emergencyMode",
            "type": "u8"
          },
          {
            "name": "reserved1",
            "type": {
              "array": [
                "u8",
                4
              ]
            }
          },
          {
            "name": "protocolOrderExecutionFeePct",
            "type": "u8"
          },
          {
            "name": "protocolTakeRatePct",
            "type": "u8"
          },
          {
            "name": "protocolLiquidationFeePct",
            "type": "u8"
          },
          {
            "name": "loanToValuePct",
            "type": "u8"
          },
          {
            "name": "liquidationThresholdPct",
            "type": "u8"
          },
          {
            "name": "minLiquidationBonusBps",
            "type": "u16"
          },
          {
            "name": "maxLiquidationBonusBps",
            "type": "u16"
          },
          {
            "name": "badDebtLiquidationBonusBps",
            "type": "u16"
          },
          {
            "name": "deleveragingMarginCallPeriodSecs",
            "type": "u64"
          },
          {
            "name": "deleveragingThresholdDecreaseBpsPerDay",
            "type": "u64"
          },
          {
            "name": "fees",
            "type": {
              "defined": "ReserveFees"
            }
          },
          {
            "name": "borrowRateCurve",
            "type": {
              "defined": "BorrowRateCurve"
            }
          },
          {
            "name": "borrowFactorPct",
            "type": "u64"
          },
          {
            "name": "depositLimit",
            "type": "u64"
          },
          {
            "name": "borrowLimit",
            "type": "u64"
          },
          {
            "name": "tokenInfo",
            "type": {
              "defined": "TokenInfo"
            }
          },
          {
            "name": "depositWithdrawalCap",
            "type": {
              "defined": "WithdrawalCaps"
            }
          },
          {
            "name": "debtWithdrawalCap",
            "type": {
              "defined": "WithdrawalCaps"
            }
          },
          {
            "name": "elevationGroups",
            "type": {
              "array": [
                "u8",
                20
              ]
            }
          },
          {
            "name": "disableUsageAsCollOutsideEmode",
            "type": "u8"
          },
          {
            "name": "utilizationLimitBlockBorrowingAbovePct",
            "type": "u8"
          },
          {
            "name": "autodeleverageEnabled",
            "type": "u8"
          },
          {
            "name": "proposerAuthorityLocked",
            "type": "u8"
          },
          {
            "name": "borrowLimitOutsideElevationGroup",
            "type": "u64"
          },
          {
            "name": "borrowLimitAgainstThisCollateralInElevationGroup",
            "type": {
              "array": [
                "u64",
                32
              ]
            }
          },
          {
            "name": "deleveragingBonusIncreaseBpsPerDay",
            "type": "u64"
          },
          {
            "name": "debtMaturityTimestamp",
            "type": "u64"
          },
          {
            "name": "debtTermSeconds",
            "type": "u64"
          },
          {
            "name": "rewardsAmountPerSlot",
            "type": "u64"
          },
          {
            "name": "permissionedOps",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "ReserveFees",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "originationFeeSf",
            "type": "u64"
          },
          {
            "name": "flashLoanFeeSf",
            "type": "u64"
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u8",
                8
              ]
            }
          }
        ]
      }
    },
    {
      "name": "ReserveLiquidity",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mintPubkey",
            "type": "publicKey"
          },
          {
            "name": "supplyVault",
            "type": "publicKey"
          },
          {
            "name": "feeVault",
            "type": "publicKey"
          },
          {
            "name": "totalAvailableAmount",
            "type": "u64"
          },
          {
            "name": "borrowedAmountSf",
            "type": "u128"
          },
          {
            "name": "marketPriceSf",
            "type": "u128"
          },
          {
            "name": "marketPriceLastUpdatedTs",
            "type": "u64"
          },
          {
            "name": "mintDecimals",
            "type": "u64"
          },
          {
            "name": "depositLimitCrossedTimestamp",
            "type": "u64"
          },
          {
            "name": "borrowLimitCrossedTimestamp",
            "type": "u64"
          },
          {
            "name": "cumulativeBorrowRateBsf",
            "type": {
              "defined": "BigFractionBytes"
            }
          },
          {
            "name": "accumulatedProtocolFeesSf",
            "type": "u128"
          },
          {
            "name": "accumulatedReferrerFeesSf",
            "type": "u128"
          },
          {
            "name": "pendingReferrerFeesSf",
            "type": "u128"
          },
          {
            "name": "absoluteReferralRateSf",
            "type": "u128"
          },
          {
            "name": "tokenProgram",
            "type": "publicKey"
          },
          {
            "name": "rewardsAmountAvailable",
            "type": "u64"
          },
          {
            "name": "padding2",
            "type": {
              "array": [
                "u64",
                50
              ]
            }
          },
          {
            "name": "padding3",
            "type": {
              "array": [
                "u128",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "WithdrawQueue",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "queuedCollateralAmount",
            "type": "u64"
          },
          {
            "name": "nextIssuedTicketSequenceNumber",
            "type": "u64"
          },
          {
            "name": "nextWithdrawableTicketSequenceNumber",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "WithdrawalCaps",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "configCapacity",
            "type": "i64"
          },
          {
            "name": "currentTotal",
            "type": "i64"
          },
          {
            "name": "lastIntervalStartTimestamp",
            "type": "u64"
          },
          {
            "name": "configIntervalLengthSeconds",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "PriceHeuristic",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "lower",
            "type": "u64"
          },
          {
            "name": "upper",
            "type": "u64"
          },
          {
            "name": "exp",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "PythConfiguration",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "price",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "ScopeConfiguration",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "priceFeed",
            "type": "publicKey"
          },
          {
            "name": "priceChain",
            "type": {
              "array": [
                "u16",
                4
              ]
            }
          },
          {
            "name": "twapChain",
            "type": {
              "array": [
                "u16",
                4
              ]
            }
          }
        ]
      }
    },
    {
      "name": "SwitchboardConfiguration",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "priceAggregator",
            "type": "publicKey"
          },
          {
            "name": "twapAggregator",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "TokenInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "name",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "heuristic",
            "type": {
              "defined": "PriceHeuristic"
            }
          },
          {
            "name": "maxTwapDivergenceBps",
            "type": "u64"
          },
          {
            "name": "maxAgePriceSeconds",
            "type": "u64"
          },
          {
            "name": "maxAgeTwapSeconds",
            "type": "u64"
          },
          {
            "name": "scopeConfiguration",
            "type": {
              "defined": "ScopeConfiguration"
            }
          },
          {
            "name": "switchboardConfiguration",
            "type": {
              "defined": "SwitchboardConfiguration"
            }
          },
          {
            "name": "pythConfiguration",
            "type": {
              "defined": "PythConfiguration"
            }
          },
          {
            "name": "blockPriceUsage",
            "type": "u8"
          },
          {
            "name": "reserved",
            "type": {
              "array": [
                "u8",
                7
              ]
            }
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                19
              ]
            }
          }
        ]
      }
    },
    {
      "name": "BorrowRateCurve",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "points",
            "type": {
              "array": [
                {
                  "defined": "CurvePoint"
                },
                11
              ]
            }
          }
        ]
      }
    },
    {
      "name": "CurvePoint",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "utilizationRateBps",
            "type": "u32"
          },
          {
            "name": "borrowRateBps",
            "type": "u32"
          }
        ]
      }
    },
    {
      "name": "UpdateReserveWhitelistMode",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Invest",
            "fields": [
              "u8"
            ]
          },
          {
            "name": "AddAllocation",
            "fields": [
              "u8"
            ]
          }
        ]
      }
    },
    {
      "name": "VaultConfigField",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "PerformanceFeeBps"
          },
          {
            "name": "ManagementFeeBps"
          },
          {
            "name": "MinDepositAmount"
          },
          {
            "name": "MinWithdrawAmount"
          },
          {
            "name": "MinInvestAmount"
          },
          {
            "name": "MinInvestDelaySlots"
          },
          {
            "name": "CrankFundFeePerReserve"
          },
          {
            "name": "PendingVaultAdmin"
          },
          {
            "name": "Name"
          },
          {
            "name": "LookupTable"
          },
          {
            "name": "Farm"
          },
          {
            "name": "AllocationAdmin"
          },
          {
            "name": "UnallocatedWeight"
          },
          {
            "name": "UnallocatedTokensCap"
          },
          {
            "name": "WithdrawalPenaltyLamports"
          },
          {
            "name": "WithdrawalPenaltyBps"
          },
          {
            "name": "FirstLossCapitalFarm"
          },
          {
            "name": "AllowAllocationsInWhitelistedReservesOnly"
          },
          {
            "name": "AllowInvestInWhitelistedReservesOnly"
          },
          {
            "name": "RewardPerSecond"
          },
          {
            "name": "DepositCap"
          }
        ]
      }
    },
    {
      "name": "VaultAllocation",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "reserve",
            "type": "publicKey"
          },
          {
            "name": "ctokenVault",
            "type": "publicKey"
          },
          {
            "name": "targetAllocationWeight",
            "type": "u64"
          },
          {
            "name": "tokenAllocationCap",
            "type": "u64"
          },
          {
            "name": "ctokenVaultBump",
            "type": "u64"
          },
          {
            "name": "ctokenAllocationCap",
            "type": "u64"
          },
          {
            "name": "configPadding",
            "type": {
              "array": [
                "u64",
                126
              ]
            }
          },
          {
            "name": "ctokenAllocation",
            "type": "u64"
          },
          {
            "name": "lastInvestSlot",
            "type": "u64"
          },
          {
            "name": "tokenTargetAllocationSf",
            "type": "u128"
          },
          {
            "name": "statePadding",
            "type": {
              "array": [
                "u64",
                128
              ]
            }
          }
        ]
      }
    },
    {
      "name": "VaultRewardInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "rewardPerSecond",
            "type": "u64"
          },
          {
            "name": "lastIssuanceTs",
            "type": "u64"
          },
          {
            "name": "rewardsAvailable",
            "type": "u64"
          },
          {
            "name": "cumulativeRewardsDistributedAnalytics",
            "type": "u64"
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                8
              ]
            }
          }
        ]
      }
    },
    {
      "name": "UpdateGlobalConfigMode",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "PendingAdmin",
            "fields": [
              "publicKey"
            ]
          },
          {
            "name": "MinWithdrawalPenaltyLamports",
            "fields": [
              "u64"
            ]
          },
          {
            "name": "MinWithdrawalPenaltyBPS",
            "fields": [
              "u64"
            ]
          }
        ]
      }
    }
  ],
  "events": [
    {
      "name": "DepositResultEvent",
      "fields": [
        {
          "name": "sharesToMint",
          "type": "u64",
          "index": false
        },
        {
          "name": "tokenToDeposit",
          "type": "u64",
          "index": false
        },
        {
          "name": "crankFundsToDeposit",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "DepositUserAtaBalanceEvent",
      "fields": [
        {
          "name": "userAtaBalance",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "RedeemInKindResultEvent",
      "fields": [
        {
          "name": "sharesToBurn",
          "type": "u64",
          "index": false
        },
        {
          "name": "ctokensToSendToUser",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "SharesToWithdrawEvent",
      "fields": [
        {
          "name": "sharesAmount",
          "type": "u64",
          "index": false
        },
        {
          "name": "userSharesBefore",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "WithdrawResultEvent",
      "fields": [
        {
          "name": "sharesToBurn",
          "type": "u64",
          "index": false
        },
        {
          "name": "availableToSendToUser",
          "type": "u64",
          "index": false
        },
        {
          "name": "investedToDisinvestCtokens",
          "type": "u64",
          "index": false
        },
        {
          "name": "investedLiquidityToSendToUser",
          "type": "u64",
          "index": false
        }
      ]
    }
  ],
  "errors": [
    {
      "code": 7000,
      "name": "DepositAmountsZero",
      "msg": "Cannot deposit zero tokens"
    },
    {
      "code": 7001,
      "name": "SharesIssuedAmountDoesNotMatch",
      "msg": "Post check failed on share issued"
    },
    {
      "code": 7002,
      "name": "MathOverflow",
      "msg": "Math operation overflowed"
    },
    {
      "code": 7003,
      "name": "IntegerOverflow",
      "msg": "Integer conversion overflowed"
    },
    {
      "code": 7004,
      "name": "WithdrawAmountBelowMinimum",
      "msg": "Withdrawn amount is below minimum"
    },
    {
      "code": 7005,
      "name": "TooMuchLiquidityToWithdraw",
      "msg": "TooMuchLiquidityToWithdraw"
    },
    {
      "code": 7006,
      "name": "ReserveAlreadyExists",
      "msg": "ReserveAlreadyExists"
    },
    {
      "code": 7007,
      "name": "ReserveNotPartOfAllocations",
      "msg": "ReserveNotPartOfAllocations"
    },
    {
      "code": 7008,
      "name": "CouldNotDeserializeAccountAsReserve",
      "msg": "CouldNotDeserializeAccountAsReserve"
    },
    {
      "code": 7009,
      "name": "ReserveNotProvidedInTheAccounts",
      "msg": "ReserveNotProvidedInTheAccounts"
    },
    {
      "code": 7010,
      "name": "ReserveAccountAndKeyMismatch",
      "msg": "ReserveAccountAndKeyMismatch"
    },
    {
      "code": 7011,
      "name": "OutOfRangeOfReserveIndex",
      "msg": "OutOfRangeOfReserveIndex"
    },
    {
      "code": 7012,
      "name": "CannotFindReserveInAllocations",
      "msg": "OutOfRangeOfReserveIndex"
    },
    {
      "code": 7013,
      "name": "InvestAmountBelowMinimum",
      "msg": "Invested amount is below minimum"
    },
    {
      "code": 7014,
      "name": "AdminAuthorityIncorrect",
      "msg": "AdminAuthorityIncorrect"
    },
    {
      "code": 7015,
      "name": "BaseVaultAuthorityIncorrect",
      "msg": "BaseVaultAuthorityIncorrect"
    },
    {
      "code": 7016,
      "name": "BaseVaultAuthorityBumpIncorrect",
      "msg": "BaseVaultAuthorityBumpIncorrect"
    },
    {
      "code": 7017,
      "name": "TokenMintIncorrect",
      "msg": "TokenMintIncorrect"
    },
    {
      "code": 7018,
      "name": "TokenMintDecimalsIncorrect",
      "msg": "TokenMintDecimalsIncorrect"
    },
    {
      "code": 7019,
      "name": "TokenVaultIncorrect",
      "msg": "TokenVaultIncorrect"
    },
    {
      "code": 7020,
      "name": "SharesMintDecimalsIncorrect",
      "msg": "SharesMintDecimalsIncorrect"
    },
    {
      "code": 7021,
      "name": "SharesMintIncorrect",
      "msg": "SharesMintIncorrect"
    },
    {
      "code": 7022,
      "name": "InitialAccountingIncorrect",
      "msg": "InitialAccountingIncorrect"
    },
    {
      "code": 7023,
      "name": "ReserveIsStale",
      "msg": "Reserve is stale and must be refreshed before any operation"
    },
    {
      "code": 7024,
      "name": "NotEnoughLiquidityDisinvestedToSendToUser",
      "msg": "Not enough liquidity disinvested to send to user"
    },
    {
      "code": 7025,
      "name": "BPSValueTooBig",
      "msg": "BPS value is greater than 10000"
    },
    {
      "code": 7026,
      "name": "DepositAmountBelowMinimum",
      "msg": "Deposited amount is below minimum"
    },
    {
      "code": 7027,
      "name": "ReserveSpaceExhausted",
      "msg": "Vault have no space for new reserves"
    },
    {
      "code": 7028,
      "name": "CannotWithdrawFromEmptyVault",
      "msg": "Cannot withdraw from empty vault"
    },
    {
      "code": 7029,
      "name": "TokensDepositedAmountDoesNotMatch",
      "msg": "TokensDepositedAmountDoesNotMatch"
    },
    {
      "code": 7030,
      "name": "AmountToWithdrawDoesNotMatch",
      "msg": "Amount to withdraw does not match"
    },
    {
      "code": 7031,
      "name": "LiquidityToWithdrawDoesNotMatch",
      "msg": "Liquidity to withdraw does not match"
    },
    {
      "code": 7032,
      "name": "UserReceivedAmountDoesNotMatch",
      "msg": "User received amount does not match"
    },
    {
      "code": 7033,
      "name": "SharesBurnedAmountDoesNotMatch",
      "msg": "Shares burned amount does not match"
    },
    {
      "code": 7034,
      "name": "DisinvestedLiquidityAmountDoesNotMatch",
      "msg": "Disinvested liquidity amount does not match"
    },
    {
      "code": 7035,
      "name": "SharesMintedAmountDoesNotMatch",
      "msg": "SharesMintedAmountDoesNotMatch"
    },
    {
      "code": 7036,
      "name": "AUMDecreasedAfterInvest",
      "msg": "AUM decreased after invest"
    },
    {
      "code": 7037,
      "name": "AUMBelowPendingFees",
      "msg": "AUM is below pending fees"
    },
    {
      "code": 7038,
      "name": "DepositAmountsZeroShares",
      "msg": "Deposit amount results in 0 shares"
    },
    {
      "code": 7039,
      "name": "WithdrawResultsInZeroShares",
      "msg": "Withdraw amount results in 0 shares"
    },
    {
      "code": 7040,
      "name": "CannotWithdrawZeroShares",
      "msg": "Cannot withdraw zero shares"
    },
    {
      "code": 7041,
      "name": "ManagementFeeGreaterThanMaxAllowed",
      "msg": "Management fee is greater than maximum allowed"
    },
    {
      "code": 7042,
      "name": "VaultAUMZero",
      "msg": "Vault assets under management are empty"
    },
    {
      "code": 7043,
      "name": "MissingReserveForBatchRefresh",
      "msg": "Missing reserve for batch refresh"
    },
    {
      "code": 7044,
      "name": "MinWithdrawAmountTooBig",
      "msg": "Min withdraw amount is too big"
    },
    {
      "code": 7045,
      "name": "InvestTooSoon",
      "msg": "Invest is called too soon after last invest"
    },
    {
      "code": 7046,
      "name": "WrongAdminOrAllocationAdmin",
      "msg": "Wrong admin or allocation admin"
    },
    {
      "code": 7047,
      "name": "ReserveHasNonZeroAllocationOrCTokens",
      "msg": "Reserve has non-zero allocation or ctokens so cannot be removed"
    },
    {
      "code": 7048,
      "name": "DepositAmountGreaterThanRequestedAmount",
      "msg": "Deposit amount is greater than requested amount"
    },
    {
      "code": 7049,
      "name": "WithdrawAmountLessThanWithdrawalPenalty",
      "msg": "Withdraw amount is less than withdrawal penalty"
    },
    {
      "code": 7050,
      "name": "CannotWithdrawZeroLamports",
      "msg": "Cannot withdraw 0 lamports"
    },
    {
      "code": 7051,
      "name": "NoUpgradeAuthority",
      "msg": "Cannot initialize global config because there is no upgrade authority to the program"
    },
    {
      "code": 7052,
      "name": "WithdrawalFeeBPSGreaterThanMaxAllowed",
      "msg": "Withdrawal fee BPS is greater than maximum allowed"
    },
    {
      "code": 7053,
      "name": "WithdrawalFeeLamportsGreaterThanMaxAllowed",
      "msg": "Withdrawal fee lamports is greater than maximum allowed"
    },
    {
      "code": 7054,
      "name": "ReserveNotWhitelisted",
      "msg": "Reserve is not whitelisted"
    },
    {
      "code": 7055,
      "name": "InvalidBoolLikeValue",
      "msg": "Invalid bool-like value passed in (should be 0 or 1)"
    },
    {
      "code": 7056,
      "name": "AUMDecreasedMoreThanExpected",
      "msg": "AUM decreased more than expected during redeem in kind"
    },
    {
      "code": 7057,
      "name": "RewardTopupAmountZero",
      "msg": "Reward topup amount is zero"
    },
    {
      "code": 7058,
      "name": "RewardTopupAmountNotExpected",
      "msg": "Reward topup is not as expected after transfer"
    },
    {
      "code": 7059,
      "name": "RewardWithdrawAmountZero",
      "msg": "Reward withdraw amount is zero"
    },
    {
      "code": 7060,
      "name": "RewardWithdrawAmountNotExpected",
      "msg": "Reward withdraw is not as expected after transfer"
    },
    {
      "code": 7061,
      "name": "RewardsStaleForFeeUpdate",
      "msg": "Rewards are stale - must be refreshed before updating fees"
    },
    {
      "code": 7062,
      "name": "VaultDepositCapReached",
      "msg": "Vault deposit cap reached"
    },
    {
      "code": 7063,
      "name": "MaxInvestAmountMustBeGreaterThanZero",
      "msg": "max_amount must be greater than 0"
    },
    {
      "code": 7064,
      "name": "SharesOutBelowMinimum",
      "msg": "Shares out is below minimum requested"
    }
  ]
}
