[
  {
    "type": "function",
    "name": "name",
    "inputs": [],
    "outputs": [
      {
        "type": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "symbol",
    "inputs": [],
    "outputs": [
      {
        "type": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "decimals",
    "inputs": [],
    "outputs": [
      {
        "type": "uint8"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalSupply",
    "inputs": [],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalBorrows",
    "inputs": [],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalReserves",
    "inputs": [],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "reserveFactorMantissa",
    "inputs": [],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "exchangeRateStored",
    "inputs": [],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "exchangeRateCurrent",
    "inputs": [],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "supplyRatePerBlock",
    "inputs": [],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "borrowRatePerBlock",
    "inputs": [],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getCash",
    "inputs": [],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "underlying",
    "inputs": [],
    "outputs": [
      {
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "comptroller",
    "inputs": [],
    "outputs": [
      {
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "interestRateModel",
    "inputs": [],
    "outputs": [
      {
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "balanceOf",
    "inputs": [
      {
        "type": "address",
        "name": "owner"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getAccountSnapshot",
    "inputs": [
      {
        "type": "address",
        "name": "account"
      }
    ],
    "outputs": [
      {
        "type": "uint256",
        "name": "err"
      },
      {
        "type": "uint256",
        "name": "jTokenBalance"
      },
      {
        "type": "uint256",
        "name": "borrowBalance"
      },
      {
        "type": "uint256",
        "name": "exchangeRateMantissa"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "borrowBalanceStored",
    "inputs": [
      {
        "type": "address",
        "name": "account"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "balanceOfUnderlying",
    "inputs": [
      {
        "type": "address",
        "name": "owner"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "allowance",
    "inputs": [
      {
        "type": "address",
        "name": "owner"
      },
      {
        "type": "address",
        "name": "spender"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "mint",
    "inputs": [
      {
        "type": "uint256",
        "name": "mintAmount"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "redeem",
    "inputs": [
      {
        "type": "uint256",
        "name": "redeemTokens"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "redeemUnderlying",
    "inputs": [
      {
        "type": "uint256",
        "name": "redeemAmount"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "borrow",
    "inputs": [
      {
        "type": "uint256",
        "name": "borrowAmount"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "repayBorrow",
    "inputs": [
      {
        "type": "uint256",
        "name": "repayAmount"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "repayBorrowBehalf",
    "inputs": [
      {
        "type": "address",
        "name": "borrower"
      },
      {
        "type": "uint256",
        "name": "repayAmount"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "liquidateBorrow",
    "inputs": [
      {
        "type": "address",
        "name": "borrower"
      },
      {
        "type": "uint256",
        "name": "repayAmount"
      },
      {
        "type": "address",
        "name": "jTokenCollateral"
      }
    ],
    "outputs": [
      {
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "approve",
    "inputs": [
      {
        "type": "address",
        "name": "spender"
      },
      {
        "type": "uint256",
        "name": "amount"
      }
    ],
    "outputs": [
      {
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  }
]