{
  "version": "1.24.0",
  "name": "kamino_lending",
  "instructions": [
    {
      "name": "initLendingMarket",
      "accounts": [
        {
          "name": "lendingMarketOwner",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "quoteCurrency",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        }
      ]
    },
    {
      "name": "updateLendingMarket",
      "accounts": [
        {
          "name": "signer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "mode",
          "type": "u64"
        },
        {
          "name": "value",
          "type": {
            "array": [
              "u8",
              72
            ]
          }
        }
      ]
    },
    {
      "name": "updateLendingMarketOwner",
      "accounts": [
        {
          "name": "lendingMarketOwnerCached",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initReserve",
      "accounts": [
        {
          "name": "signer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeReceiver",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveCollateralSupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "initialLiquiditySource",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "liquidityTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "collateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "cloneReserveConfig",
      "accounts": [
        {
          "name": "signer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "targetLendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sourceReserve",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "targetReserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "customizations",
          "type": {
            "defined": "ReserveConfigCustomizationArgs"
          }
        }
      ]
    },
    {
      "name": "initFarmsForReserve",
      "accounts": [
        {
          "name": "lendingMarketOwner",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "farmsGlobalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "farmState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "farmsVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "mode",
          "type": "u8"
        }
      ]
    },
    {
      "name": "updateReserveConfig",
      "accounts": [
        {
          "name": "signer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "mode",
          "type": {
            "defined": "UpdateConfigMode"
          }
        },
        {
          "name": "value",
          "type": "bytes"
        },
        {
          "name": "skipConfigIntegrityValidation",
          "type": "bool"
        }
      ]
    },
    {
      "name": "redeemFees",
      "accounts": [
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityFeeReceiver",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveSupplyLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "withdrawProtocolFee",
      "accounts": [
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "feeVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeCollectorAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "seedDepositOnInitReserve",
      "accounts": [
        {
          "name": "signer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "initialLiquiditySource",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "liquidityTokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "topupReserveRewards",
      "accounts": [
        {
          "name": "signer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sourceLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "liquidityTokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "socializeLoss",
      "accounts": [
        {
          "name": "lendingMarketOwner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "socializeLossV2",
      "accounts": [
        {
          "name": "socializeLossAccounts",
          "accounts": [
            {
              "name": "lendingMarketOwner",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "farmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "markObligationForDeleveraging",
      "accounts": [
        {
          "name": "lendingMarketOwner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "autodeleverageTargetLtvPct",
          "type": "u8"
        }
      ]
    },
    {
      "name": "refreshReserve",
      "accounts": [
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pythOracle",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "switchboardPriceOracle",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "switchboardTwapOracle",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        }
      ],
      "args": []
    },
    {
      "name": "refreshReservesBatch",
      "accounts": [],
      "args": [
        {
          "name": "skipPriceUpdates",
          "type": "bool"
        }
      ]
    },
    {
      "name": "calculateCtokenExchangeRate",
      "accounts": [
        {
          "name": "reserve",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [],
      "returns": {
        "defined": "ExchangeRateWithDecimals"
      }
    },
    {
      "name": "depositReserveLiquidity",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "liquidityTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "redeemReserveCollateral",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "liquidityTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "collateralAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "initObligation",
      "accounts": [
        {
          "name": "obligationOwner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "feePayer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "seed1Account",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "seed2Account",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ownerUserMetadata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "args",
          "type": {
            "defined": "InitObligationArgs"
          }
        }
      ]
    },
    {
      "name": "initObligationFarmsForReserve",
      "accounts": [
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "owner",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveFarmState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "obligationFarm",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "mode",
          "type": "u8"
        }
      ]
    },
    {
      "name": "refreshObligationFarmsForReserve",
      "accounts": [
        {
          "name": "crank",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "baseAccounts",
          "accounts": [
            {
              "name": "obligation",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserve",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "mode",
          "type": "u8"
        }
      ]
    },
    {
      "name": "refreshObligation",
      "accounts": [
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "depositObligationCollateral",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "depositReserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveDestinationCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "collateralAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "depositObligationCollateralV2",
      "accounts": [
        {
          "name": "depositAccounts",
          "accounts": [
            {
              "name": "owner",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "depositReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveDestinationCollateral",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userSourceCollateral",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "tokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "farmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "collateralAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "withdrawObligationCollateral",
      "accounts": [
        {
          "name": "owner",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "withdrawReserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveSourceCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "collateralAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "withdrawObligationCollateralV2",
      "accounts": [
        {
          "name": "withdrawAccounts",
          "accounts": [
            {
              "name": "owner",
              "isMut": true,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "withdrawReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveSourceCollateral",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userDestinationCollateral",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "tokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "farmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "collateralAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "borrowObligationLiquidity",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "borrowReserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "borrowReserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveSourceLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "borrowReserveLiquidityFeeReceiver",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "referrerTokenState",
          "isMut": true,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "borrowObligationLiquidityV2",
      "accounts": [
        {
          "name": "borrowAccounts",
          "accounts": [
            {
              "name": "owner",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "borrowReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "borrowReserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveSourceLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "borrowReserveLiquidityFeeReceiver",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userDestinationLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "referrerTokenState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "tokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "farmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "repayObligationLiquidity",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "repayReserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveDestinationLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "repayObligationLiquidityV2",
      "accounts": [
        {
          "name": "repayAccounts",
          "accounts": [
            {
              "name": "owner",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "repayReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveDestinationLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userSourceLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "tokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "farmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "repayAndWithdrawAndRedeem",
      "accounts": [
        {
          "name": "repayAccounts",
          "accounts": [
            {
              "name": "owner",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "repayReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveDestinationLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userSourceLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "tokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "withdrawAccounts",
          "accounts": [
            {
              "name": "owner",
              "isMut": true,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "withdrawReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveSourceCollateral",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveCollateralMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveLiquiditySupply",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userDestinationLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "placeholderUserDestinationCollateral",
              "isMut": false,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "collateralTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "liquidityTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "collateralFarmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "debtFarmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "repayAmount",
          "type": "u64"
        },
        {
          "name": "withdrawCollateralAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "depositAndWithdraw",
      "accounts": [
        {
          "name": "depositAccounts",
          "accounts": [
            {
              "name": "owner",
              "isMut": true,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveLiquiditySupply",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveCollateralMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveDestinationDepositCollateral",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userSourceLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "placeholderUserDestinationCollateral",
              "isMut": false,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "collateralTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "liquidityTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "withdrawAccounts",
          "accounts": [
            {
              "name": "owner",
              "isMut": true,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "withdrawReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveSourceCollateral",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveCollateralMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveLiquiditySupply",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userDestinationLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "placeholderUserDestinationCollateral",
              "isMut": false,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "collateralTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "liquidityTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "depositFarmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "withdrawFarmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        },
        {
          "name": "withdrawCollateralAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "depositReserveLiquidityAndObligationCollateral",
      "accounts": [
        {
          "name": "owner",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveDestinationDepositCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "placeholderUserDestinationCollateral",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "collateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "liquidityTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "depositReserveLiquidityAndObligationCollateralV2",
      "accounts": [
        {
          "name": "depositAccounts",
          "accounts": [
            {
              "name": "owner",
              "isMut": true,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveLiquiditySupply",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveCollateralMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveDestinationDepositCollateral",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userSourceLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "placeholderUserDestinationCollateral",
              "isMut": false,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "collateralTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "liquidityTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "farmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "withdrawObligationCollateralAndRedeemReserveCollateral",
      "accounts": [
        {
          "name": "owner",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "withdrawReserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveSourceCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "placeholderUserDestinationCollateral",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "collateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "liquidityTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "collateralAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "withdrawObligationCollateralAndRedeemReserveCollateralV2",
      "accounts": [
        {
          "name": "withdrawAccounts",
          "accounts": [
            {
              "name": "owner",
              "isMut": true,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "withdrawReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveSourceCollateral",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveCollateralMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "reserveLiquiditySupply",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userDestinationLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "placeholderUserDestinationCollateral",
              "isMut": false,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "collateralTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "liquidityTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "farmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "collateralAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "liquidateObligationAndRedeemReserveCollateral",
      "accounts": [
        {
          "name": "liquidator",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "repayReserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "repayReserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "repayReserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "withdrawReserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "withdrawReserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "withdrawReserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "withdrawReserveCollateralSupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "withdrawReserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "withdrawReserveLiquidityFeeReceiver",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "repayLiquidityTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "withdrawLiquidityTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        },
        {
          "name": "minAcceptableReceivedLiquidityAmount",
          "type": "u64"
        },
        {
          "name": "maxAllowedLtvOverridePercent",
          "type": "u64"
        }
      ]
    },
    {
      "name": "liquidateObligationAndRedeemReserveCollateralV2",
      "accounts": [
        {
          "name": "liquidationAccounts",
          "accounts": [
            {
              "name": "liquidator",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "repayReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "repayReserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "repayReserveLiquiditySupply",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "withdrawReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "withdrawReserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "withdrawReserveCollateralMint",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "withdrawReserveCollateralSupply",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "withdrawReserveLiquiditySupply",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "withdrawReserveLiquidityFeeReceiver",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userSourceLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userDestinationCollateral",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userDestinationLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "collateralTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "repayLiquidityTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "withdrawLiquidityTokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "collateralFarmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "debtFarmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        },
        {
          "name": "minAcceptableReceivedLiquidityAmount",
          "type": "u64"
        },
        {
          "name": "maxAllowedLtvOverridePercent",
          "type": "u64"
        }
      ]
    },
    {
      "name": "flashRepayReserveLiquidity",
      "accounts": [
        {
          "name": "userTransferAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveDestinationLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityFeeReceiver",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "referrerTokenState",
          "isMut": true,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "referrerAccount",
          "isMut": true,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "sysvarInfo",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        },
        {
          "name": "borrowInstructionIndex",
          "type": "u8"
        }
      ]
    },
    {
      "name": "flashBorrowReserveLiquidity",
      "accounts": [
        {
          "name": "userTransferAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveSourceLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityFeeReceiver",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "referrerTokenState",
          "isMut": true,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "referrerAccount",
          "isMut": true,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "sysvarInfo",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "requestElevationGroup",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "elevationGroup",
          "type": "u8"
        }
      ]
    },
    {
      "name": "initReferrerTokenState",
      "accounts": [
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "referrer",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "referrerTokenState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initUserMetadata",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "feePayer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "userMetadata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "referrerUserMetadata",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "userLookupTable",
          "type": "publicKey"
        }
      ]
    },
    {
      "name": "withdrawReferrerFees",
      "accounts": [
        {
          "name": "referrer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "referrerTokenState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveSupplyLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "referrerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initReferrerStateAndShortUrl",
      "accounts": [
        {
          "name": "referrer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "referrerState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "referrerShortUrl",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "referrerUserMetadata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "shortUrl",
          "type": "string"
        }
      ]
    },
    {
      "name": "deleteReferrerStateAndShortUrl",
      "accounts": [
        {
          "name": "referrer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "referrerState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "shortUrl",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "setObligationOrder",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "index",
          "type": "u8"
        },
        {
          "name": "order",
          "type": {
            "defined": "ObligationOrder"
          }
        }
      ]
    },
    {
      "name": "setBorrowOrder",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "filledDebtDestination",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "debtLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "orderConfig",
          "type": {
            "defined": "BorrowOrderConfigArgs"
          }
        },
        {
          "name": "minExpectedCurrentRemainingDebtAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "setBorrowOrderV2",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "filledDebtDestination",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "debtLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "orderIdx",
          "type": "u8"
        },
        {
          "name": "orderConfig",
          "type": {
            "defined": "BorrowOrderConfigArgs"
          }
        },
        {
          "name": "minExpectedCurrentRemainingDebtAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "updateObligationConfig",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "borrowReserve",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "depositReserve",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "mode",
          "type": {
            "defined": "UpdateObligationConfigMode"
          }
        },
        {
          "name": "value",
          "type": "bytes"
        }
      ]
    },
    {
      "name": "rolloverFixedTermBorrow",
      "accounts": [
        {
          "name": "rolloverAccounts",
          "accounts": [
            {
              "name": "payer",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "sourceBorrowReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "targetBorrowReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "liquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "sourceBorrowReserveLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "targetBorrowReserveLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "tokenProgram",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "sourceFarmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "targetFarmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "fillBorrowOrder",
      "accounts": [
        {
          "name": "borrowAccounts",
          "accounts": [
            {
              "name": "payer",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "borrowReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "borrowReserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveSourceLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "borrowReserveLiquidityFeeReceiver",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userDestinationLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "referrerTokenState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "tokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "farmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "fillBorrowOrderV2",
      "accounts": [
        {
          "name": "borrowAccounts",
          "accounts": [
            {
              "name": "payer",
              "isMut": false,
              "isSigner": true
            },
            {
              "name": "obligation",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "lendingMarket",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "lendingMarketAuthority",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "borrowReserve",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "borrowReserveLiquidityMint",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "reserveSourceLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "borrowReserveLiquidityFeeReceiver",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "userDestinationLiquidity",
              "isMut": true,
              "isSigner": false
            },
            {
              "name": "referrerTokenState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "tokenProgram",
              "isMut": false,
              "isSigner": false
            },
            {
              "name": "instructionSysvarAccount",
              "isMut": false,
              "isSigner": false
            }
          ]
        },
        {
          "name": "farmsAccounts",
          "accounts": [
            {
              "name": "obligationFarmUserState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            },
            {
              "name": "reserveFarmState",
              "isMut": true,
              "isSigner": false,
              "isOptional": true
            }
          ]
        },
        {
          "name": "farmsProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "orderIdx",
          "type": "u8"
        }
      ]
    },
    {
      "name": "initiateObligationOwnershipTransfer",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "newOwner",
          "type": "publicKey"
        }
      ]
    },
    {
      "name": "approveObligationOwnershipTransfer",
      "accounts": [
        {
          "name": "globalAdmin",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "pendingOwner",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "acceptObligationOwnership",
      "accounts": [
        {
          "name": "pendingOwner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "abortObligationOwnershipTransfer",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "obligation",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "enqueueToWithdraw",
      "accounts": [
        {
          "name": "owner",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceCollateralTa",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationLiquidityTa",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "collateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "withdrawTicket",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ownerQueuedCollateralVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "progressCallbackCustomAccount0",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "progressCallbackCustomAccount1",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "collateralAmount",
          "type": "u64"
        },
        {
          "name": "progressCallbackType",
          "type": {
            "defined": "ProgressCallbackType"
          }
        }
      ]
    },
    {
      "name": "withdrawQueuedLiquidity",
      "accounts": [
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquidityMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveLiquiditySupply",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ownerQueuedCollateralVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationLiquidity",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "liquidityTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "withdrawTicket",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "withdrawTicketOwner",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "progressCallbackProgram",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "progressCallbackCustomAccount0",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "progressCallbackCustomAccount1",
          "isMut": false,
          "isSigner": false,
          "isOptional": true
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [],
      "returns": "bool"
    },
    {
      "name": "recoverInvalidTicketCollateral",
      "accounts": [
        {
          "name": "payer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ownerQueuedCollateralVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "withdrawTicket",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "withdrawTicketOwner",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "ticketSequenceNumber",
          "type": "u64"
        }
      ]
    },
    {
      "name": "cancelWithdrawTicket",
      "accounts": [
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarketAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reserveCollateralMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ownerQueuedCollateralVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestinationCollateral",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collateralTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "withdrawTicket",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "ticketSequenceNumber",
          "type": "u64"
        },
        {
          "name": "collateralAmountToCancel",
          "type": "u64"
        }
      ]
    },
    {
      "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
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "updateGlobalConfig",
      "accounts": [
        {
          "name": "globalAdmin",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "mode",
          "type": {
            "defined": "UpdateGlobalConfigMode"
          }
        },
        {
          "name": "value",
          "type": "bytes"
        }
      ]
    },
    {
      "name": "updateGlobalConfigAdmin",
      "accounts": [
        {
          "name": "pendingAdmin",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "idlMissingTypes",
      "accounts": [
        {
          "name": "signer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lendingMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reserve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "reserveFarmKind",
          "type": {
            "defined": "ReserveFarmKind"
          }
        },
        {
          "name": "feeCalculation",
          "type": {
            "defined": "FeeCalculation"
          }
        },
        {
          "name": "reserveStatus",
          "type": {
            "defined": "ReserveStatus"
          }
        },
        {
          "name": "updateConfigMode",
          "type": {
            "defined": "UpdateConfigMode"
          }
        },
        {
          "name": "updateLendingMarketConfigValue",
          "type": {
            "defined": "UpdateLendingMarketConfigValue"
          }
        },
        {
          "name": "updateLendingMarketConfigMode",
          "type": {
            "defined": "UpdateLendingMarketMode"
          }
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "UserState",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "userId",
            "type": "u64"
          },
          {
            "name": "farmState",
            "type": "publicKey"
          },
          {
            "name": "owner",
            "type": "publicKey"
          },
          {
            "name": "isFarmDelegated",
            "type": "u8"
          },
          {
            "name": "padding0",
            "type": {
              "array": [
                "u8",
                7
              ]
            }
          },
          {
            "name": "rewardsTallyScaled",
            "type": {
              "array": [
                "u128",
                10
              ]
            }
          },
          {
            "name": "rewardsIssuedUnclaimed",
            "type": {
              "array": [
                "u64",
                10
              ]
            }
          },
          {
            "name": "lastClaimTs",
            "type": {
              "array": [
                "u64",
                10
              ]
            }
          },
          {
            "name": "activeStakeScaled",
            "type": "u128"
          },
          {
            "name": "pendingDepositStakeScaled",
            "type": "u128"
          },
          {
            "name": "pendingDepositStakeTs",
            "type": "u64"
          },
          {
            "name": "pendingWithdrawalUnstakeScaled",
            "type": "u128"
          },
          {
            "name": "pendingWithdrawalUnstakeTs",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u64"
          },
          {
            "name": "delegatee",
            "type": "publicKey"
          },
          {
            "name": "lastStakeTs",
            "type": "u64"
          },
          {
            "name": "padding1",
            "type": {
              "array": [
                "u64",
                50
              ]
            }
          }
        ]
      }
    },
    {
      "name": "GlobalConfig",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "globalAdmin",
            "type": "publicKey"
          },
          {
            "name": "pendingAdmin",
            "type": "publicKey"
          },
          {
            "name": "feeCollector",
            "type": "publicKey"
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u8",
                928
              ]
            }
          }
        ]
      }
    },
    {
      "name": "LendingMarket",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "version",
            "type": "u64"
          },
          {
            "name": "bumpSeed",
            "type": "u64"
          },
          {
            "name": "lendingMarketOwner",
            "type": "publicKey"
          },
          {
            "name": "lendingMarketOwnerCached",
            "type": "publicKey"
          },
          {
            "name": "quoteCurrency",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "referralFeeBps",
            "type": "u16"
          },
          {
            "name": "emergencyMode",
            "type": "u8"
          },
          {
            "name": "autodeleverageEnabled",
            "type": "u8"
          },
          {
            "name": "borrowDisabled",
            "type": "u8"
          },
          {
            "name": "priceRefreshTriggerToMaxAgePct",
            "type": "u8"
          },
          {
            "name": "liquidationMaxDebtCloseFactorPct",
            "type": "u8"
          },
          {
            "name": "insolvencyRiskUnhealthyLtvPct",
            "type": "u8"
          },
          {
            "name": "minFullLiquidationValueThreshold",
            "type": "u64"
          },
          {
            "name": "maxLiquidatableDebtMarketValueAtOnce",
            "type": "u64"
          },
          {
            "name": "reserved0",
            "type": {
              "array": [
                "u8",
                8
              ]
            }
          },
          {
            "name": "globalAllowedBorrowValue",
            "type": "u64"
          },
          {
            "name": "emergencyCouncil",
            "type": "publicKey"
          },
          {
            "name": "reserved1",
            "type": {
              "array": [
                "u8",
                8
              ]
            }
          },
          {
            "name": "elevationGroups",
            "type": {
              "array": [
                {
                  "defined": "ElevationGroup"
                },
                32
              ]
            }
          },
          {
            "name": "elevationGroupPadding",
            "type": {
              "array": [
                "u64",
                90
              ]
            }
          },
          {
            "name": "minNetValueInObligationSf",
            "type": "u128"
          },
          {
            "name": "minValueSkipLiquidationLtvChecks",
            "type": "u64"
          },
          {
            "name": "name",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "minValueSkipLiquidationBfChecks",
            "type": "u64"
          },
          {
            "name": "individualAutodeleverageMarginCallPeriodSecs",
            "type": "u64"
          },
          {
            "name": "minInitialDepositAmount",
            "type": "u64"
          },
          {
            "name": "obligationOrderExecutionEnabled",
            "type": "u8"
          },
          {
            "name": "immutable",
            "type": "u8"
          },
          {
            "name": "obligationOrderCreationEnabled",
            "type": "u8"
          },
          {
            "name": "priceTriggeredLiquidationDisabled",
            "type": "u8"
          },
          {
            "name": "matureReserveDebtLiquidationEnabled",
            "type": "u8"
          },
          {
            "name": "obligationBorrowDebtTermLiquidationEnabled",
            "type": "u8"
          },
          {
            "name": "borrowOrderCreationEnabled",
            "type": "u8"
          },
          {
            "name": "borrowOrderExecutionEnabled",
            "type": "u8"
          },
          {
            "name": "proposerAuthority",
            "type": "publicKey"
          },
          {
            "name": "minBorrowOrderFillValue",
            "type": "u64"
          },
          {
            "name": "withdrawTicketIssuanceEnabled",
            "type": "u8"
          },
          {
            "name": "withdrawTicketRedemptionEnabled",
            "type": "u8"
          },
          {
            "name": "obligationBorrowRolloverConfigurationEnabled",
            "type": "u8"
          },
          {
            "name": "obligationBorrowMigrationToFixedExecutionEnabled",
            "type": "u8"
          },
          {
            "name": "withdrawTicketCancellationEnabled",
            "type": "u8"
          },
          {
            "name": "disableNonceBlock",
            "type": "u8"
          },
          {
            "name": "reserveRewardsMaxAprBps",
            "type": "u16"
          },
          {
            "name": "minWithdrawQueuedLiquidityValue",
            "type": "u64"
          },
          {
            "name": "fixedTermRolloverWindowDurationSeconds",
            "type": "u64"
          },
          {
            "name": "openTermRolloverWindowDurationSeconds",
            "type": "u64"
          },
          {
            "name": "minPartialRolloverValue",
            "type": "u64"
          },
          {
            "name": "termBasedFullLiquidationDurationSecs",
            "type": "u64"
          },
          {
            "name": "permissioningAuthority",
            "type": "publicKey"
          },
          {
            "name": "permissionedOps",
            "type": "u64"
          },
          {
            "name": "padding1",
            "type": {
              "array": [
                "u64",
                153
              ]
            }
          }
        ]
      }
    },
    {
      "name": "Obligation",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "tag",
            "type": "u64"
          },
          {
            "name": "lastUpdate",
            "type": {
              "defined": "LastUpdate"
            }
          },
          {
            "name": "lendingMarket",
            "type": "publicKey"
          },
          {
            "name": "owner",
            "type": "publicKey"
          },
          {
            "name": "deposits",
            "type": {
              "array": [
                {
                  "defined": "ObligationCollateral"
                },
                8
              ]
            }
          },
          {
            "name": "lowestReserveDepositLiquidationLtv",
            "type": "u64"
          },
          {
            "name": "depositedValueSf",
            "type": "u128"
          },
          {
            "name": "borrows",
            "type": {
              "array": [
                {
                  "defined": "ObligationLiquidity"
                },
                5
              ]
            }
          },
          {
            "name": "borrowFactorAdjustedDebtValueSf",
            "type": "u128"
          },
          {
            "name": "borrowedAssetsMarketValueSf",
            "type": "u128"
          },
          {
            "name": "allowedBorrowValueSf",
            "type": "u128"
          },
          {
            "name": "unhealthyBorrowValueSf",
            "type": "u128"
          },
          {
            "name": "paddingDeprecatedAssetTiers",
            "type": {
              "array": [
                "u8",
                13
              ]
            }
          },
          {
            "name": "elevationGroup",
            "type": "u8"
          },
          {
            "name": "numOfObsoleteDepositReserves",
            "type": "u8"
          },
          {
            "name": "hasDebt",
            "type": "u8"
          },
          {
            "name": "referrer",
            "type": "publicKey"
          },
          {
            "name": "borrowingDisabled",
            "type": "u8"
          },
          {
            "name": "autodeleverageTargetLtvPct",
            "type": "u8"
          },
          {
            "name": "lowestReserveDepositMaxLtvPct",
            "type": "u8"
          },
          {
            "name": "numOfObsoleteBorrowReserves",
            "type": "u8"
          },
          {
            "name": "ownershipTransferState",
            "type": "u8"
          },
          {
            "name": "reserved",
            "type": {
              "array": [
                "u8",
                3
              ]
            }
          },
          {
            "name": "highestBorrowFactorPct",
            "type": "u64"
          },
          {
            "name": "autodeleverageMarginCallStartedTimestamp",
            "type": "u64"
          },
          {
            "name": "obligationOrders",
            "type": {
              "array": [
                {
                  "defined": "ObligationOrder"
                },
                2
              ]
            }
          },
          {
            "name": "headBorrowOrder",
            "type": {
              "defined": "BorrowOrder"
            }
          },
          {
            "name": "pendingOwner",
            "type": "publicKey"
          },
          {
            "name": "tailBorrowOrders",
            "type": {
              "array": [
                {
                  "defined": "BorrowOrder"
                },
                2
              ]
            }
          },
          {
            "name": "padding3",
            "type": {
              "array": [
                "u64",
                29
              ]
            }
          }
        ]
      }
    },
    {
      "name": "ReferrerState",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "shortUrl",
            "type": "publicKey"
          },
          {
            "name": "owner",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "ReferrerTokenState",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "referrer",
            "type": "publicKey"
          },
          {
            "name": "mint",
            "type": "publicKey"
          },
          {
            "name": "amountUnclaimedSf",
            "type": "u128"
          },
          {
            "name": "amountCumulativeSf",
            "type": "u128"
          },
          {
            "name": "bump",
            "type": "u64"
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                31
              ]
            }
          }
        ]
      }
    },
    {
      "name": "ShortUrl",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "referrer",
            "type": "publicKey"
          },
          {
            "name": "shortUrl",
            "type": "string"
          }
        ]
      }
    },
    {
      "name": "UserMetadata",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "referrer",
            "type": "publicKey"
          },
          {
            "name": "bump",
            "type": "u64"
          },
          {
            "name": "userLookupTable",
            "type": "publicKey"
          },
          {
            "name": "owner",
            "type": "publicKey"
          },
          {
            "name": "padding1",
            "type": {
              "array": [
                "u64",
                51
              ]
            }
          },
          {
            "name": "padding2",
            "type": {
              "array": [
                "u64",
                64
              ]
            }
          }
        ]
      }
    },
    {
      "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": "WithdrawTicket",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "sequenceNumber",
            "type": "u64"
          },
          {
            "name": "owner",
            "type": "publicKey"
          },
          {
            "name": "reserve",
            "type": "publicKey"
          },
          {
            "name": "userDestinationLiquidityTa",
            "type": "publicKey"
          },
          {
            "name": "queuedCollateralAmount",
            "type": "u64"
          },
          {
            "name": "createdAtTimestamp",
            "type": "u64"
          },
          {
            "name": "invalid",
            "type": "u8"
          },
          {
            "name": "progressCallbackType",
            "type": "u8"
          },
          {
            "name": "alignmentPadding",
            "type": {
              "array": [
                "u8",
                6
              ]
            }
          },
          {
            "name": "progressCallbackCustomAccounts",
            "type": {
              "array": [
                "publicKey",
                2
              ]
            }
          },
          {
            "name": "endPadding",
            "type": {
              "array": [
                "u64",
                40
              ]
            }
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "ExchangeRateWithDecimals",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "exchangeRateSf",
            "type": "u128"
          },
          {
            "name": "mintDecimals",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "ReserveConfigCustomizationArgs",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "overrideFixedRateBps",
            "type": "u8"
          },
          {
            "name": "fixedBorrowRateBps",
            "type": "u32"
          },
          {
            "name": "overrideDebtTermSeconds",
            "type": "u8"
          },
          {
            "name": "debtTermSeconds",
            "type": "u64"
          },
          {
            "name": "clearElevationGroups",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "BorrowOrderConfigArgs",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "remainingDebtAmount",
            "type": "u64"
          },
          {
            "name": "maxBorrowRateBps",
            "type": "u32"
          },
          {
            "name": "minDebtTermSeconds",
            "type": "u64"
          },
          {
            "name": "fillableUntilTimestamp",
            "type": "u64"
          },
          {
            "name": "enableAutoRolloverOnFilledBorrows",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "UpdateConfigMode",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "UpdateLoanToValuePct"
          },
          {
            "name": "UpdateMaxLiquidationBonusBps"
          },
          {
            "name": "UpdateLiquidationThresholdPct"
          },
          {
            "name": "UpdateProtocolLiquidationFee"
          },
          {
            "name": "UpdateProtocolTakeRate"
          },
          {
            "name": "UpdateFeesOriginationFee"
          },
          {
            "name": "UpdateFeesFlashLoanFee"
          },
          {
            "name": "DeprecatedUpdateFeesReferralFeeBps"
          },
          {
            "name": "UpdateDepositLimit"
          },
          {
            "name": "UpdateBorrowLimit"
          },
          {
            "name": "UpdateTokenInfoLowerHeuristic"
          },
          {
            "name": "UpdateTokenInfoUpperHeuristic"
          },
          {
            "name": "UpdateTokenInfoExpHeuristic"
          },
          {
            "name": "UpdateTokenInfoTwapDivergence"
          },
          {
            "name": "UpdateTokenInfoScopeTwap"
          },
          {
            "name": "UpdateTokenInfoScopeChain"
          },
          {
            "name": "UpdateTokenInfoName"
          },
          {
            "name": "UpdateTokenInfoPriceMaxAge"
          },
          {
            "name": "UpdateTokenInfoTwapMaxAge"
          },
          {
            "name": "UpdateScopePriceFeed"
          },
          {
            "name": "UpdatePythPrice"
          },
          {
            "name": "UpdateSwitchboardFeed"
          },
          {
            "name": "UpdateSwitchboardTwapFeed"
          },
          {
            "name": "UpdateBorrowRateCurve"
          },
          {
            "name": "DeprecatedUpdateEntireReserveConfig"
          },
          {
            "name": "UpdateDebtWithdrawalCap"
          },
          {
            "name": "UpdateDepositWithdrawalCap"
          },
          {
            "name": "DeprecatedUpdateDebtWithdrawalCapCurrentTotal"
          },
          {
            "name": "DeprecatedUpdateDepositWithdrawalCapCurrentTotal"
          },
          {
            "name": "UpdateBadDebtLiquidationBonusBps"
          },
          {
            "name": "UpdateMinLiquidationBonusBps"
          },
          {
            "name": "UpdateDeleveragingMarginCallPeriod"
          },
          {
            "name": "UpdateBorrowFactor"
          },
          {
            "name": "DeprecatedUpdateAssetTier"
          },
          {
            "name": "UpdateElevationGroup"
          },
          {
            "name": "UpdateDeleveragingThresholdDecreaseBpsPerDay"
          },
          {
            "name": "DeprecatedUpdateMultiplierSideBoost"
          },
          {
            "name": "DeprecatedUpdateMultiplierTagBoost"
          },
          {
            "name": "UpdateReserveStatus"
          },
          {
            "name": "UpdateFarmCollateral"
          },
          {
            "name": "UpdateFarmDebt"
          },
          {
            "name": "UpdateDisableUsageAsCollateralOutsideEmode"
          },
          {
            "name": "UpdateBlockBorrowingAboveUtilizationPct"
          },
          {
            "name": "UpdateBlockPriceUsage"
          },
          {
            "name": "UpdateBorrowLimitOutsideElevationGroup"
          },
          {
            "name": "UpdateBorrowLimitsInElevationGroupAgainstThisReserve"
          },
          {
            "name": "UpdateHostFixedInterestRateBps"
          },
          {
            "name": "UpdateAutodeleverageEnabled"
          },
          {
            "name": "UpdateDeleveragingBonusIncreaseBpsPerDay"
          },
          {
            "name": "UpdateProtocolOrderExecutionFee"
          },
          {
            "name": "UpdateProposerAuthorityLock"
          },
          {
            "name": "UpdateMinDeleveragingBonusBps"
          },
          {
            "name": "UpdateBlockCTokenUsage"
          },
          {
            "name": "UpdateDebtMaturityTimestamp"
          },
          {
            "name": "UpdateDebtTermSeconds"
          },
          {
            "name": "UpdateEarlyRepayRemainingInterestPct"
          },
          {
            "name": "UpdateReserveEmergencyMode"
          },
          {
            "name": "UpdateRewardsAmountPerSlot"
          },
          {
            "name": "UpdateReservePermissionedOps"
          }
        ]
      }
    },
    {
      "name": "UpdateLendingMarketConfigValue",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Bool",
            "fields": [
              "bool"
            ]
          },
          {
            "name": "U8",
            "fields": [
              "u8"
            ]
          },
          {
            "name": "U8Array",
            "fields": [
              {
                "array": [
                  "u8",
                  8
                ]
              }
            ]
          },
          {
            "name": "U16",
            "fields": [
              "u16"
            ]
          },
          {
            "name": "U64",
            "fields": [
              "u64"
            ]
          },
          {
            "name": "U128",
            "fields": [
              "u128"
            ]
          },
          {
            "name": "Pubkey",
            "fields": [
              "publicKey"
            ]
          },
          {
            "name": "ElevationGroup",
            "fields": [
              {
                "defined": "ElevationGroup"
              }
            ]
          },
          {
            "name": "Name",
            "fields": [
              {
                "array": [
                  "u8",
                  32
                ]
              }
            ]
          }
        ]
      }
    },
    {
      "name": "UpdateLendingMarketMode",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "UpdateOwner"
          },
          {
            "name": "UpdateEmergencyMode"
          },
          {
            "name": "UpdateLiquidationCloseFactor"
          },
          {
            "name": "UpdateLiquidationMaxValue"
          },
          {
            "name": "DeprecatedUpdateGlobalUnhealthyBorrow"
          },
          {
            "name": "UpdateGlobalAllowedBorrow"
          },
          {
            "name": "UpdateEmergencyCouncil"
          },
          {
            "name": "UpdateMinFullLiquidationThreshold"
          },
          {
            "name": "UpdateInsolvencyRiskLtv"
          },
          {
            "name": "UpdateElevationGroup"
          },
          {
            "name": "UpdateReferralFeeBps"
          },
          {
            "name": "DeprecatedUpdateMultiplierPoints"
          },
          {
            "name": "UpdatePriceRefreshTriggerToMaxAgePct"
          },
          {
            "name": "UpdateAutodeleverageEnabled"
          },
          {
            "name": "UpdateBorrowingDisabled"
          },
          {
            "name": "UpdateMinNetValueObligationPostAction"
          },
          {
            "name": "UpdateMinValueLtvSkipPriorityLiqCheck"
          },
          {
            "name": "UpdateMinValueBfSkipPriorityLiqCheck"
          },
          {
            "name": "UpdatePaddingFields"
          },
          {
            "name": "UpdateName"
          },
          {
            "name": "UpdateIndividualAutodeleverageMarginCallPeriodSecs"
          },
          {
            "name": "UpdateInitialDepositAmount"
          },
          {
            "name": "UpdateObligationOrderExecutionEnabled"
          },
          {
            "name": "UpdateImmutableFlag"
          },
          {
            "name": "UpdateObligationOrderCreationEnabled"
          },
          {
            "name": "UpdateProposerAuthority"
          },
          {
            "name": "UpdatePriceTriggeredLiquidationDisabled"
          },
          {
            "name": "UpdateMatureReserveDebtLiquidationEnabled"
          },
          {
            "name": "UpdateObligationBorrowDebtTermLiquidationEnabled"
          },
          {
            "name": "UpdateBorrowOrderCreationEnabled"
          },
          {
            "name": "UpdateBorrowOrderExecutionEnabled"
          },
          {
            "name": "UpdateMinBorrowOrderFillValue"
          },
          {
            "name": "UpdateWithdrawTicketIssuanceEnabled"
          },
          {
            "name": "UpdateWithdrawTicketRedemptionEnabled"
          },
          {
            "name": "UpdateMinWithdrawQueuedLiquidityValue"
          },
          {
            "name": "UpdateFixedTermRolloverWindowDurationSeconds"
          },
          {
            "name": "UpdateOpenTermRolloverWindowDurationSeconds"
          },
          {
            "name": "UpdateObligationBorrowRolloverConfigurationEnabled"
          },
          {
            "name": "UpdateTermBasedFullLiquidationDurationSecs"
          },
          {
            "name": "UpdateObligationBorrowMigrationToFixedExecutionEnabled"
          },
          {
            "name": "UpdateMinPartialRolloverValue"
          },
          {
            "name": "UpdateWithdrawTicketCancellationEnabled"
          },
          {
            "name": "UpdatePermissioningAuthority"
          },
          {
            "name": "UpdatePermissionedOps"
          },
          {
            "name": "DeprecatedUpdateReserveRewardsMaxAprPct"
          },
          {
            "name": "UpdateReserveRewardsMaxAprBps"
          },
          {
            "name": "UpdateDisableNonceBlock"
          }
        ]
      }
    },
    {
      "name": "UpdateGlobalConfigMode",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "PendingAdmin"
          },
          {
            "name": "FeeCollector"
          }
        ]
      }
    },
    {
      "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": "ElevationGroup",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "maxLiquidationBonusBps",
            "type": "u16"
          },
          {
            "name": "id",
            "type": "u8"
          },
          {
            "name": "ltvPct",
            "type": "u8"
          },
          {
            "name": "liquidationThresholdPct",
            "type": "u8"
          },
          {
            "name": "allowNewLoans",
            "type": "u8"
          },
          {
            "name": "maxReservesAsCollateral",
            "type": "u8"
          },
          {
            "name": "padding0",
            "type": "u8"
          },
          {
            "name": "debtReserve",
            "type": "publicKey"
          },
          {
            "name": "padding1",
            "type": {
              "array": [
                "u64",
                4
              ]
            }
          }
        ]
      }
    },
    {
      "name": "BorrowOrder",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "debtLiquidityMint",
            "type": "publicKey"
          },
          {
            "name": "remainingDebtAmount",
            "type": "u64"
          },
          {
            "name": "filledDebtDestination",
            "type": "publicKey"
          },
          {
            "name": "minDebtTermSeconds",
            "type": "u64"
          },
          {
            "name": "fillableUntilTimestamp",
            "type": "u64"
          },
          {
            "name": "placedAtTimestamp",
            "type": "u64"
          },
          {
            "name": "lastUpdatedAtTimestamp",
            "type": "u64"
          },
          {
            "name": "requestedDebtAmount",
            "type": "u64"
          },
          {
            "name": "maxBorrowRateBps",
            "type": "u32"
          },
          {
            "name": "active",
            "type": "u8"
          },
          {
            "name": "enableAutoRolloverOnFilledBorrows",
            "type": "u8"
          },
          {
            "name": "padding1",
            "type": {
              "array": [
                "u8",
                2
              ]
            }
          },
          {
            "name": "endPadding",
            "type": {
              "array": [
                "u64",
                5
              ]
            }
          }
        ]
      }
    },
    {
      "name": "FixedTermBorrowRolloverConfig",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "autoRolloverEnabled",
            "type": "u8"
          },
          {
            "name": "openTermAllowed",
            "type": "u8"
          },
          {
            "name": "migrationToFixedEnabled",
            "type": "u8"
          },
          {
            "name": "fixedTermRolloverWindowDurationDays",
            "type": "u8"
          },
          {
            "name": "maxBorrowRateBps",
            "type": "u32"
          },
          {
            "name": "minDebtTermSeconds",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "InitObligationArgs",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "tag",
            "type": "u8"
          },
          {
            "name": "id",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "ObligationCollateral",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "depositReserve",
            "type": "publicKey"
          },
          {
            "name": "depositedAmount",
            "type": "u64"
          },
          {
            "name": "marketValueSf",
            "type": "u128"
          },
          {
            "name": "borrowedAmountAgainstThisCollateralInElevationGroup",
            "type": "u64"
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                9
              ]
            }
          }
        ]
      }
    },
    {
      "name": "ObligationLiquidity",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "borrowReserve",
            "type": "publicKey"
          },
          {
            "name": "cumulativeBorrowRateBsf",
            "type": {
              "defined": "BigFractionBytes"
            }
          },
          {
            "name": "lastBorrowedAtTimestamp",
            "type": "u64"
          },
          {
            "name": "borrowedAmountSf",
            "type": "u128"
          },
          {
            "name": "marketValueSf",
            "type": "u128"
          },
          {
            "name": "borrowFactorAdjustedMarketValueSf",
            "type": "u128"
          },
          {
            "name": "borrowedAmountOutsideElevationGroups",
            "type": "u64"
          },
          {
            "name": "fixedTermBorrowRolloverConfig",
            "type": {
              "defined": "FixedTermBorrowRolloverConfig"
            }
          },
          {
            "name": "borrowedAmountAtExpiration",
            "type": "u64"
          },
          {
            "name": "padding2",
            "type": {
              "array": [
                "u64",
                4
              ]
            }
          }
        ]
      }
    },
    {
      "name": "ObligationOrder",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "conditionThresholdSf",
            "type": "u128"
          },
          {
            "name": "opportunityParameterSf",
            "type": "u128"
          },
          {
            "name": "minExecutionBonusBps",
            "type": "u16"
          },
          {
            "name": "maxExecutionBonusBps",
            "type": "u16"
          },
          {
            "name": "conditionType",
            "type": "u8"
          },
          {
            "name": "opportunityType",
            "type": "u8"
          },
          {
            "name": "padding1",
            "type": {
              "array": [
                "u8",
                10
              ]
            }
          },
          {
            "name": "padding2",
            "type": {
              "array": [
                "u128",
                5
              ]
            }
          }
        ]
      }
    },
    {
      "name": "UpdateObligationConfigMode",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "FixedTermRolloverEnabled"
          },
          {
            "name": "FixedTermRolloverMaxBorrowRateBps"
          },
          {
            "name": "FixedTermRolloverMinDebtTermSeconds"
          },
          {
            "name": "FixedTermRolloverOpenTermAllowed"
          },
          {
            "name": "MigrationToFixedEnabled"
          },
          {
            "name": "FixedTermRolloverWindowDurationDays"
          }
        ]
      }
    },
    {
      "name": "BigFractionBytes",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "value",
            "type": {
              "array": [
                "u64",
                4
              ]
            }
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                2
              ]
            }
          }
        ]
      }
    },
    {
      "name": "FeeCalculation",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Exclusive"
          },
          {
            "name": "Inclusive"
          }
        ]
      }
    },
    {
      "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": "ReserveFarmKind",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Collateral"
          },
          {
            "name": "Debt"
          }
        ]
      }
    },
    {
      "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": "ReserveStatus",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Active"
          },
          {
            "name": "Obsolete"
          },
          {
            "name": "Hidden"
          }
        ]
      }
    },
    {
      "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": "ProgressCallbackType",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "None"
          },
          {
            "name": "KlendQueueAccountingHandlerOnKvault"
          }
        ]
      }
    },
    {
      "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"
          }
        ]
      }
    }
  ],
  "events": [
    {
      "name": "BorrowOrderCancelEvent",
      "fields": [
        {
          "name": "before",
          "type": {
            "defined": "BorrowOrder"
          },
          "index": false
        }
      ]
    },
    {
      "name": "BorrowOrderFullFillEvent",
      "fields": [
        {
          "name": "before",
          "type": {
            "defined": "BorrowOrder"
          },
          "index": false
        }
      ]
    },
    {
      "name": "BorrowOrderPartialFillEvent",
      "fields": [
        {
          "name": "before",
          "type": {
            "defined": "BorrowOrder"
          },
          "index": false
        },
        {
          "name": "after",
          "type": {
            "defined": "BorrowOrder"
          },
          "index": false
        }
      ]
    },
    {
      "name": "BorrowOrderPlaceEvent",
      "fields": [
        {
          "name": "after",
          "type": {
            "defined": "BorrowOrder"
          },
          "index": false
        }
      ]
    },
    {
      "name": "BorrowOrderUpdateEvent",
      "fields": [
        {
          "name": "before",
          "type": {
            "defined": "BorrowOrder"
          },
          "index": false
        },
        {
          "name": "after",
          "type": {
            "defined": "BorrowOrder"
          },
          "index": false
        }
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "InvalidMarketAuthority",
      "msg": "Market authority is invalid"
    },
    {
      "code": 6001,
      "name": "InvalidMarketOwner",
      "msg": "Market owner is invalid"
    },
    {
      "code": 6002,
      "name": "InvalidAccountOwner",
      "msg": "Input account owner is not the program address"
    },
    {
      "code": 6003,
      "name": "InvalidAmount",
      "msg": "Input amount is invalid"
    },
    {
      "code": 6004,
      "name": "InvalidConfig",
      "msg": "Input config value is invalid"
    },
    {
      "code": 6005,
      "name": "InvalidSigner",
      "msg": "Signer is not allowed to perform this action"
    },
    {
      "code": 6006,
      "name": "InvalidAccountInput",
      "msg": "Invalid account input"
    },
    {
      "code": 6007,
      "name": "MathOverflow",
      "msg": "Math operation overflow"
    },
    {
      "code": 6008,
      "name": "InsufficientLiquidity",
      "msg": "Insufficient liquidity available"
    },
    {
      "code": 6009,
      "name": "ReserveStale",
      "msg": "Reserve state needs to be refreshed"
    },
    {
      "code": 6010,
      "name": "WithdrawTooSmall",
      "msg": "Withdraw amount too small"
    },
    {
      "code": 6011,
      "name": "WithdrawTooLarge",
      "msg": "Withdraw amount too large"
    },
    {
      "code": 6012,
      "name": "BorrowTooSmall",
      "msg": "Borrow amount too small to receive liquidity after fees"
    },
    {
      "code": 6013,
      "name": "BorrowTooLarge",
      "msg": "Borrow amount too large for deposited collateral"
    },
    {
      "code": 6014,
      "name": "RepayTooSmall",
      "msg": "Repay amount too small to transfer liquidity"
    },
    {
      "code": 6015,
      "name": "LiquidationTooSmall",
      "msg": "Liquidation amount too small to receive collateral"
    },
    {
      "code": 6016,
      "name": "ObligationHealthy",
      "msg": "Cannot liquidate healthy obligations"
    },
    {
      "code": 6017,
      "name": "ObligationStale",
      "msg": "Obligation state needs to be refreshed"
    },
    {
      "code": 6018,
      "name": "ObligationReserveLimit",
      "msg": "Obligation reserve limit exceeded"
    },
    {
      "code": 6019,
      "name": "InvalidObligationOwner",
      "msg": "Obligation owner is invalid"
    },
    {
      "code": 6020,
      "name": "ObligationDepositsEmpty",
      "msg": "Obligation deposits are empty"
    },
    {
      "code": 6021,
      "name": "ObligationBorrowsEmpty",
      "msg": "Obligation borrows are empty"
    },
    {
      "code": 6022,
      "name": "ObligationDepositsZero",
      "msg": "Obligation deposits have zero value"
    },
    {
      "code": 6023,
      "name": "ObligationBorrowsZero",
      "msg": "Obligation borrows have zero value"
    },
    {
      "code": 6024,
      "name": "InvalidObligationCollateral",
      "msg": "Invalid obligation collateral"
    },
    {
      "code": 6025,
      "name": "InvalidObligationLiquidity",
      "msg": "Invalid obligation liquidity"
    },
    {
      "code": 6026,
      "name": "ObligationCollateralEmpty",
      "msg": "Obligation collateral is empty"
    },
    {
      "code": 6027,
      "name": "ObligationLiquidityEmpty",
      "msg": "Obligation liquidity is empty"
    },
    {
      "code": 6028,
      "name": "NegativeInterestRate",
      "msg": "Interest rate is negative"
    },
    {
      "code": 6029,
      "name": "InvalidOracleConfig",
      "msg": "Input oracle config is invalid"
    },
    {
      "code": 6030,
      "name": "InsufficientProtocolFeesToRedeem",
      "msg": "Insufficient protocol fees to claim or no liquidity available"
    },
    {
      "code": 6031,
      "name": "FlashBorrowCpi",
      "msg": "No cpi flash borrows allowed"
    },
    {
      "code": 6032,
      "name": "NoFlashRepayFound",
      "msg": "No corresponding repay found for flash borrow"
    },
    {
      "code": 6033,
      "name": "InvalidFlashRepay",
      "msg": "Invalid repay found"
    },
    {
      "code": 6034,
      "name": "FlashRepayCpi",
      "msg": "No cpi flash repays allowed"
    },
    {
      "code": 6035,
      "name": "MultipleFlashBorrows",
      "msg": "Multiple flash borrows not allowed in the same transaction"
    },
    {
      "code": 6036,
      "name": "FlashLoansDisabled",
      "msg": "Flash loans are disabled for this reserve"
    },
    {
      "code": 6037,
      "name": "SwitchboardV2Error",
      "msg": "Switchboard error"
    },
    {
      "code": 6038,
      "name": "CouldNotDeserializeScope",
      "msg": "Cannot deserialize the scope price account"
    },
    {
      "code": 6039,
      "name": "PriceTooOld",
      "msg": "Price too old"
    },
    {
      "code": 6040,
      "name": "PriceTooDivergentFromTwap",
      "msg": "Price too divergent from twap"
    },
    {
      "code": 6041,
      "name": "InvalidTwapPrice",
      "msg": "Invalid twap price"
    },
    {
      "code": 6042,
      "name": "GlobalEmergencyMode",
      "msg": "Emergency mode is enabled"
    },
    {
      "code": 6043,
      "name": "InvalidFlag",
      "msg": "Invalid lending market config"
    },
    {
      "code": 6044,
      "name": "PriceNotValid",
      "msg": "Price is not valid"
    },
    {
      "code": 6045,
      "name": "PriceIsBiggerThanHeuristic",
      "msg": "Price is bigger than allowed by heuristic"
    },
    {
      "code": 6046,
      "name": "PriceIsLowerThanHeuristic",
      "msg": "Price lower than allowed by heuristic"
    },
    {
      "code": 6047,
      "name": "PriceIsZero",
      "msg": "Price is zero"
    },
    {
      "code": 6048,
      "name": "PriceConfidenceTooWide",
      "msg": "Price confidence too wide"
    },
    {
      "code": 6049,
      "name": "IntegerOverflow",
      "msg": "Conversion between integers failed"
    },
    {
      "code": 6050,
      "name": "NoFarmForReserve",
      "msg": "This reserve does not have a farm"
    },
    {
      "code": 6051,
      "name": "IncorrectInstructionInPosition",
      "msg": "Wrong instruction at expected position"
    },
    {
      "code": 6052,
      "name": "NoPriceFound",
      "msg": "No price found"
    },
    {
      "code": 6053,
      "name": "InvalidTwapConfig",
      "msg": "Invalid Twap configuration: Twap is enabled but one of the enabled price doesn't have a twap"
    },
    {
      "code": 6054,
      "name": "InvalidPythPriceAccount",
      "msg": "Pyth price account does not match configuration"
    },
    {
      "code": 6055,
      "name": "InvalidSwitchboardAccount",
      "msg": "Switchboard account(s) do not match configuration"
    },
    {
      "code": 6056,
      "name": "InvalidScopePriceAccount",
      "msg": "Scope price account does not match configuration"
    },
    {
      "code": 6057,
      "name": "ObligationCollateralLtvZero",
      "msg": "The obligation has one collateral with an LTV set to 0. Withdraw it before withdrawing other collaterals"
    },
    {
      "code": 6058,
      "name": "InvalidObligationSeedsValue",
      "msg": "Seeds must be default pubkeys for tag 0, and mint addresses for tag 1 or 2"
    },
    {
      "code": 6059,
      "name": "DeprecatedInvalidObligationId",
      "msg": "[DEPRECATED] Obligation id must be 0"
    },
    {
      "code": 6060,
      "name": "InvalidBorrowRateCurvePoint",
      "msg": "Invalid borrow rate curve point"
    },
    {
      "code": 6061,
      "name": "InvalidUtilizationRate",
      "msg": "Invalid utilization rate"
    },
    {
      "code": 6062,
      "name": "CannotSocializeObligationWithCollateral",
      "msg": "Obligation hasn't been fully liquidated and debt cannot be socialized."
    },
    {
      "code": 6063,
      "name": "ObligationEmpty",
      "msg": "Obligation has no borrows or deposits."
    },
    {
      "code": 6064,
      "name": "WithdrawalCapReached",
      "msg": "Withdrawal cap is reached"
    },
    {
      "code": 6065,
      "name": "LastTimestampGreaterThanCurrent",
      "msg": "The last interval start timestamp is greater than the current timestamp"
    },
    {
      "code": 6066,
      "name": "LiquidationRewardTooSmall",
      "msg": "The reward amount is less than the minimum acceptable received liquidity"
    },
    {
      "code": 6067,
      "name": "IsolatedAssetTierViolation",
      "msg": "Isolated Asset Tier Violation"
    },
    {
      "code": 6068,
      "name": "InconsistentElevationGroup",
      "msg": "The obligation's elevation group and the reserve's are not the same"
    },
    {
      "code": 6069,
      "name": "InvalidElevationGroup",
      "msg": "The elevation group chosen for the reserve does not exist in the lending market"
    },
    {
      "code": 6070,
      "name": "InvalidElevationGroupConfig",
      "msg": "The elevation group updated has wrong parameters set"
    },
    {
      "code": 6071,
      "name": "UnhealthyElevationGroupLtv",
      "msg": "The current obligation must have most or all its debt repaid before changing the elevation group"
    },
    {
      "code": 6072,
      "name": "ElevationGroupNewLoansDisabled",
      "msg": "Elevation group does not accept any new loans or any new borrows/withdrawals"
    },
    {
      "code": 6073,
      "name": "ReserveDeprecated",
      "msg": "Reserve was deprecated, no longer usable"
    },
    {
      "code": 6074,
      "name": "ReferrerAccountNotInitialized",
      "msg": "Referrer account not initialized"
    },
    {
      "code": 6075,
      "name": "ReferrerAccountMintMissmatch",
      "msg": "Referrer account mint does not match the operation reserve mint"
    },
    {
      "code": 6076,
      "name": "ReferrerAccountWrongAddress",
      "msg": "Referrer account address is not a valid program address"
    },
    {
      "code": 6077,
      "name": "ReferrerAccountReferrerMissmatch",
      "msg": "Referrer account referrer does not match the owner referrer"
    },
    {
      "code": 6078,
      "name": "ReferrerAccountMissing",
      "msg": "Referrer account missing for obligation with referrer"
    },
    {
      "code": 6079,
      "name": "InsufficientReferralFeesToRedeem",
      "msg": "Insufficient referral fees to claim or no liquidity available"
    },
    {
      "code": 6080,
      "name": "CpiDisabled",
      "msg": "CPI disabled for this instruction"
    },
    {
      "code": 6081,
      "name": "ShortUrlNotAsciiAlphanumeric",
      "msg": "Referrer short_url is not ascii alphanumeric"
    },
    {
      "code": 6082,
      "name": "ReserveObsolete",
      "msg": "Reserve is marked as obsolete"
    },
    {
      "code": 6083,
      "name": "ElevationGroupAlreadyActivated",
      "msg": "Obligation already part of the same elevation group"
    },
    {
      "code": 6084,
      "name": "ObligationInObsoleteReserve",
      "msg": "Obligation has a deposit or borrow in an obsolete reserve"
    },
    {
      "code": 6085,
      "name": "ReferrerStateOwnerMismatch",
      "msg": "Referrer state owner does not match the given signer"
    },
    {
      "code": 6086,
      "name": "UserMetadataOwnerAlreadySet",
      "msg": "User metadata owner is already set"
    },
    {
      "code": 6087,
      "name": "CollateralNonLiquidatable",
      "msg": "This collateral cannot be liquidated (LTV set to 0)"
    },
    {
      "code": 6088,
      "name": "BorrowingDisabled",
      "msg": "Borrowing is disabled"
    },
    {
      "code": 6089,
      "name": "BorrowLimitExceeded",
      "msg": "Cannot borrow above borrow limit"
    },
    {
      "code": 6090,
      "name": "DepositLimitExceeded",
      "msg": "Cannot deposit above deposit limit"
    },
    {
      "code": 6091,
      "name": "BorrowingDisabledOutsideElevationGroup",
      "msg": "Reserve does not accept any new borrows outside elevation group"
    },
    {
      "code": 6092,
      "name": "NetValueRemainingTooSmall",
      "msg": "Net value remaining too small"
    },
    {
      "code": 6093,
      "name": "WorseLtvBlocked",
      "msg": "Cannot get the obligation in a worse position"
    },
    {
      "code": 6094,
      "name": "LiabilitiesBiggerThanAssets",
      "msg": "Cannot have more liabilities than assets in a position"
    },
    {
      "code": 6095,
      "name": "ReserveTokenBalanceMismatch",
      "msg": "Reserve state and token account cannot drift"
    },
    {
      "code": 6096,
      "name": "ReserveVaultBalanceMismatch",
      "msg": "Reserve token account has been unexpectedly modified"
    },
    {
      "code": 6097,
      "name": "ReserveAccountingMismatch",
      "msg": "Reserve internal state accounting has been unexpectedly modified"
    },
    {
      "code": 6098,
      "name": "BorrowingAboveUtilizationRateDisabled",
      "msg": "Borrowing above set utilization rate is disabled"
    },
    {
      "code": 6099,
      "name": "LiquidationBorrowFactorPriority",
      "msg": "Liquidation must prioritize the debt with the highest borrow factor"
    },
    {
      "code": 6100,
      "name": "LiquidationLowestLiquidationLtvPriority",
      "msg": "Liquidation must prioritize the collateral with the lowest liquidation LTV"
    },
    {
      "code": 6101,
      "name": "ElevationGroupBorrowLimitExceeded",
      "msg": "Elevation group borrow limit exceeded"
    },
    {
      "code": 6102,
      "name": "ElevationGroupWithoutDebtReserve",
      "msg": "The elevation group does not have a debt reserve defined"
    },
    {
      "code": 6103,
      "name": "ElevationGroupMaxCollateralReserveZero",
      "msg": "The elevation group does not allow any collateral reserves"
    },
    {
      "code": 6104,
      "name": "ElevationGroupHasAnotherDebtReserve",
      "msg": "In elevation group attempt to borrow from a reserve that is not the debt reserve"
    },
    {
      "code": 6105,
      "name": "ElevationGroupDebtReserveAsCollateral",
      "msg": "The elevation group's debt reserve cannot be used as a collateral reserve"
    },
    {
      "code": 6106,
      "name": "ObligationCollateralExceedsElevationGroupLimit",
      "msg": "Obligation have more collateral than the maximum allowed by the elevation group"
    },
    {
      "code": 6107,
      "name": "ObligationElevationGroupMultipleDebtReserve",
      "msg": "Obligation is an elevation group but have more than one debt reserve"
    },
    {
      "code": 6108,
      "name": "UnsupportedTokenExtension",
      "msg": "Mint has a token (2022) extension that is not supported"
    },
    {
      "code": 6109,
      "name": "InvalidTokenAccount",
      "msg": "Can't have an spl token mint with a t22 account"
    },
    {
      "code": 6110,
      "name": "DepositDisabledOutsideElevationGroup",
      "msg": "Can't deposit into this reserve outside elevation group"
    },
    {
      "code": 6111,
      "name": "CannotCalculateReferralAmountDueToSlotsMismatch",
      "msg": "Cannot calculate referral amount due to slots mismatch"
    },
    {
      "code": 6112,
      "name": "ObligationOwnersMustMatch",
      "msg": "Obligation owners must match"
    },
    {
      "code": 6113,
      "name": "ObligationsMustMatch",
      "msg": "Obligations must match"
    },
    {
      "code": 6114,
      "name": "LendingMarketsMustMatch",
      "msg": "Lending markets must match"
    },
    {
      "code": 6115,
      "name": "ObligationCurrentlyMarkedForDeleveraging",
      "msg": "Obligation is already marked for deleveraging"
    },
    {
      "code": 6116,
      "name": "MaximumWithdrawValueZero",
      "msg": "Maximum withdrawable value of this collateral is zero, LTV needs improved"
    },
    {
      "code": 6117,
      "name": "ZeroMaxLtvAssetsInDeposits",
      "msg": "No max LTV 0 assets allowed in deposits for repay and withdraw"
    },
    {
      "code": 6118,
      "name": "LowestLtvAssetsPriority",
      "msg": "Withdrawing must prioritize the collateral with the lowest reserve max-LTV"
    },
    {
      "code": 6119,
      "name": "WorseLtvThanUnhealthyLtv",
      "msg": "Cannot get the obligation liquidatable"
    },
    {
      "code": 6120,
      "name": "FarmAccountsMissing",
      "msg": "Farm accounts to refresh are missing"
    },
    {
      "code": 6121,
      "name": "RepayTooSmallForFullLiquidation",
      "msg": "Repay amount is too small to satisfy the mandatory full liquidation"
    },
    {
      "code": 6122,
      "name": "InsufficientRepayAmount",
      "msg": "Liquidator provided repay amount lower than required by liquidation rules"
    },
    {
      "code": 6123,
      "name": "OrderIndexOutOfBounds",
      "msg": "Order of the given index cannot exist"
    },
    {
      "code": 6124,
      "name": "InvalidOrderConfiguration",
      "msg": "Given order configuration has wrong parameters"
    },
    {
      "code": 6125,
      "name": "OrderConfigurationNotSupportedByObligation",
      "msg": "Given order configuration cannot be used with the current state of the obligation"
    },
    {
      "code": 6126,
      "name": "OperationNotPermittedWithCurrentObligationOrders",
      "msg": "Single debt, single collateral obligation orders have to be cancelled before changing the deposit/borrow count"
    },
    {
      "code": 6127,
      "name": "OperationNotPermittedMarketImmutable",
      "msg": "Cannot update lending market because it is set as immutable"
    },
    {
      "code": 6128,
      "name": "OrderCreationDisabled",
      "msg": "Creation of new orders is disabled"
    },
    {
      "code": 6129,
      "name": "NoUpgradeAuthority",
      "msg": "Cannot initialize global config because there is no upgrade authority to the program"
    },
    {
      "code": 6130,
      "name": "InitialAdminDepositExecuted",
      "msg": "Initial admin deposit in reserve already executed"
    },
    {
      "code": 6131,
      "name": "ReserveHasNotReceivedInitialDeposit",
      "msg": "Reserve has not received the initial deposit, cannot update config"
    },
    {
      "code": 6132,
      "name": "CTokenUsageBlocked",
      "msg": "CToken minting/redeeming is blocked for this reserve"
    },
    {
      "code": 6133,
      "name": "CannotUseSameReserve",
      "msg": "Cannot call ix with same reserve"
    },
    {
      "code": 6134,
      "name": "TransactionIncludesRestrictedPrograms",
      "msg": "Transaction includes restricted programs"
    },
    {
      "code": 6135,
      "name": "BorrowOrderDebtLiquidityMintMismatch",
      "msg": "There is no borrow order requesting debt in the given asset"
    },
    {
      "code": 6136,
      "name": "BorrowOrderMaxBorrowRateExceeded",
      "msg": "Reserve used for fill exceeds the maximum borrow rate specified by the order"
    },
    {
      "code": 6137,
      "name": "BorrowOrderMinDebtTermInsufficient",
      "msg": "Reserve used for fill defines a debt term shorter than specified by the order"
    },
    {
      "code": 6138,
      "name": "BorrowOrderFillTimeLimitExceeded",
      "msg": "Borrow order can no longer be filled"
    },
    {
      "code": 6139,
      "name": "ReserveDebtMaturityReached",
      "msg": "Cannot borrow from a reserve that reached its debt maturity timestamp"
    },
    {
      "code": 6140,
      "name": "NonUpdatableOrderConfiguration",
      "msg": "Some piece of the order's configuration cannot be updated (the order should be cancelled and placed again)"
    },
    {
      "code": 6141,
      "name": "BorrowOrderExecutionDisabled",
      "msg": "Execution of borrow orders is disabled"
    },
    {
      "code": 6142,
      "name": "DebtReachedReserveDebtTerm",
      "msg": "Cannot increase the debt that has reached its end of term configured by the reserve"
    },
    {
      "code": 6143,
      "name": "ExpectationNotMet",
      "msg": "The on-chain state does not meet expectation specified by the caller, so the operation must be aborted (to avoid race conditions)"
    },
    {
      "code": 6144,
      "name": "BorrowOrderFillValueTooSmall",
      "msg": "Available liquidity could not satisfy the minimum required borrow order fill value"
    },
    {
      "code": 6145,
      "name": "WithdrawTicketIssuanceDisabled",
      "msg": "Issuing new withdraw tickets is disabled by the market"
    },
    {
      "code": 6146,
      "name": "WithdrawTicketRedemptionDisabled",
      "msg": "Redeeming withdraw tickets is disabled by the market"
    },
    {
      "code": 6147,
      "name": "WithdrawTicketStillValid",
      "msg": "Recovering collateral is only available after the withdraw ticket has been marked invalid"
    },
    {
      "code": 6148,
      "name": "WithdrawTicketRequiresFullRedemption",
      "msg": "The withdraw ticket's current state requires that it is fully redeemed (e.g. due to owner ATA creation), but there is not enough liquidity"
    },
    {
      "code": 6149,
      "name": "UserTokenBalanceMismatch",
      "msg": "The user's token account has changed its balance in an unexpected way"
    },
    {
      "code": 6150,
      "name": "WithdrawQueuedLiquidityValueTooSmall",
      "msg": "Available liquidity could not satisfy the minimum required ticketed withdrawal value"
    },
    {
      "code": 6151,
      "name": "InvalidTokenAccountState",
      "msg": "Token account is in a state preventing the handler's operation (e.g. frozen or delegate)"
    },
    {
      "code": 6152,
      "name": "WithdrawTicketInvalid",
      "msg": "Cannot use ticket that was already marked invalid"
    },
    {
      "code": 6153,
      "name": "BorrowOrderValueTooSmall",
      "msg": "Borrow order's value would be below the market-configured minimum"
    },
    {
      "code": 6154,
      "name": "WithdrawTicketValueTooSmall",
      "msg": "Withdraw ticket's value would be below the market-configured minimum"
    },
    {
      "code": 6155,
      "name": "InvalidWithdrawTicketProgressCallbackConfig",
      "msg": "Invalid configuration or required custom accounts for the requested withdraw ticket callback type"
    },
    {
      "code": 6156,
      "name": "WithdrawTicketProgressCallbackAccountsMissing",
      "msg": "One or more accounts required by the ticket's configured progress callback are missing"
    },
    {
      "code": 6157,
      "name": "BorrowRolloverConfigurationDisabled",
      "msg": "Configuring auto-rollover on loans is disabled by market owner"
    },
    {
      "code": 6158,
      "name": "InvalidObligationConfigUpdateSubject",
      "msg": "Invalid specification of the Obligation's part to be configured"
    },
    {
      "code": 6159,
      "name": "BorrowRolloverLiquidityMintMismatch",
      "msg": "Auto-rollover must use a target reserve of the same token"
    },
    {
      "code": 6160,
      "name": "ObligationBorrowRolloverNotApplicable",
      "msg": "The given borrow is not fixed-term and does not require rolling over"
    },
    {
      "code": 6161,
      "name": "ObligationBorrowOutsideRolloverWindow",
      "msg": "The given borrow is outside the corresponding market-configured rollover window"
    },
    {
      "code": 6162,
      "name": "ObligationBorrowRolloverNotEnabledByOwner",
      "msg": "Obligation's owner did not opt-in for auto-rollover of the given borrow"
    },
    {
      "code": 6163,
      "name": "ObligationBorrowRolloverTargetReserveMismatch",
      "msg": "Obligation's owner did not allow to roll over into terms offered by the given reserve"
    },
    {
      "code": 6164,
      "name": "BorrowRolloverExecutionDisabled",
      "msg": "Executing auto-rollover is disabled by market owner"
    },
    {
      "code": 6165,
      "name": "ObligationAccountingMismatch",
      "msg": "Obligation internal state accounting has been unexpectedly modified"
    },
    {
      "code": 6166,
      "name": "PartialRolloverValueTooSmall",
      "msg": "Partial rollover amount is below the market-configured minimum value"
    },
    {
      "code": 6167,
      "name": "ObligationBorrowRolloverConfigMismatch",
      "msg": "Pre-existing rollover configuration of the loan cannot be overwritten by the operation"
    },
    {
      "code": 6168,
      "name": "ObligationBorrowRolloverMustProlongDebtTerm",
      "msg": "Rollover into existing borrow must prolong the remaining debt term"
    },
    {
      "code": 6169,
      "name": "RolloverNotSupportedInElevationGroup",
      "msg": "Rollover is not supported for obligations in an elevation group"
    },
    {
      "code": 6170,
      "name": "WithdrawTicketCancellationDisabled",
      "msg": "Cancelling withdraw tickets is disabled by the market"
    },
    {
      "code": 6171,
      "name": "WithdrawTicketFullyCancelled",
      "msg": "Cannot use ticket that was already fully-cancelled"
    },
    {
      "code": 6172,
      "name": "CloneSourceReserveDisabled",
      "msg": "Cannot clone config from a reserve that is disabled"
    },
    {
      "code": 6173,
      "name": "CloneTargetReserveAlreadyInUse",
      "msg": "Cannot clone config into a reserve that has been in use"
    },
    {
      "code": 6174,
      "name": "ClonedReserveLiquidityMintMismatch",
      "msg": "Cannot clone config between reserves of different mints"
    },
    {
      "code": 6175,
      "name": "ReserveEmergencyMode",
      "msg": "Reserve emergency mode is enabled"
    },
    {
      "code": 6176,
      "name": "ObligationOwnershipTransferInProgress",
      "msg": "Obligation ownership transfer is in progress"
    },
    {
      "code": 6177,
      "name": "ObligationOwnershipTransferNotInInitiatedState",
      "msg": "Obligation ownership transfer is not in initiated state"
    },
    {
      "code": 6178,
      "name": "ObligationPendingOwnerNotSet",
      "msg": "Obligation pending owner not set"
    },
    {
      "code": 6179,
      "name": "ObligationInvalidPendingOwner",
      "msg": "Invalid pending owner address"
    },
    {
      "code": 6180,
      "name": "ObligationOwnershipTransferNotApproved",
      "msg": "Obligation ownership transfer not approved by admin"
    },
    {
      "code": 6181,
      "name": "ObligationHasActiveBorrowOrders",
      "msg": "Obligation has active borrow orders"
    },
    {
      "code": 6182,
      "name": "OnlyComputeBudgetCompanionIxsAllowed",
      "msg": "Only ComputeBudget instructions may accompany this instruction"
    },
    {
      "code": 6183,
      "name": "MissingPermissioner",
      "msg": "Required permissioning account is missing"
    },
    {
      "code": 6184,
      "name": "ReserveRewardsDisabled",
      "msg": "Reserve rewards are disabled on this market (reserve_rewards_max_apr_bps is 0)"
    },
    {
      "code": 6185,
      "name": "TransactionIncludesNonceInstruction",
      "msg": "Transaction includes a nonce instruction, which is not allowed for admin operations"
    }
  ]
}
