module.exports = {
  ercDelegator: [
    {
      inputs: [
        { internalType: 'address', name: 'underlying_', type: 'address' },
        {
          internalType: 'contract ComptrollerInterface',
          name: 'comptroller_',
          type: 'address',
        },
        {
          internalType: 'contract InterestRateModel',
          name: 'interestRateModel_',
          type: 'address',
        },
        {
          internalType: 'uint256',
          name: 'initialExchangeRateMantissa_',
          type: 'uint256',
        },
        { internalType: 'string', name: 'name_', type: 'string' },
        { internalType: 'string', name: 'symbol_', type: 'string' },
        { internalType: 'uint8', name: 'decimals_', type: 'uint8' },
        { internalType: 'address payable', name: 'admin_', type: 'address' },
        {
          internalType: 'bytes',
          name: 'becomeImplementationData',
          type: 'bytes',
        },
      ],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'constructor',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'uint256',
          name: 'cashPrior',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'interestAccumulated',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'borrowIndex',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'totalBorrows',
          type: 'uint256',
        },
      ],
      name: 'AccrueInterest',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'address',
          name: 'owner',
          type: 'address',
        },
        {
          indexed: true,
          internalType: 'address',
          name: 'spender',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'amount',
          type: 'uint256',
        },
      ],
      name: 'Approval',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'borrower',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'borrowAmount',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'accountBorrows',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'totalBorrows',
          type: 'uint256',
        },
      ],
      name: 'Borrow',
      type: 'event',
    },
    {
      constant: true,
      inputs: [],
      name: 'decimals',
      outputs: [{ internalType: 'uint8', name: '', type: 'uint8' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'symbol',
      outputs: [{ internalType: 'string', name: '', type: 'string' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'uint256',
          name: 'error',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'info',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'detail',
          type: 'uint256',
        },
      ],
      name: 'Failure',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'address',
          name: 'implementation',
          type: 'address',
        },
      ],
      name: 'ImplementationDidNotChange',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'liquidator',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'borrower',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'repayAmount',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'cTokenCollateral',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'seizeTokens',
          type: 'uint256',
        },
      ],
      name: 'LiquidateBorrow',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'minter',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'mintAmount',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'mintTokens',
          type: 'uint256',
        },
      ],
      name: 'Mint',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'oldAdmin',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'newAdmin',
          type: 'address',
        },
      ],
      name: 'NewAdmin',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'contract ComptrollerInterface',
          name: 'oldComptroller',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'contract ComptrollerInterface',
          name: 'newComptroller',
          type: 'address',
        },
      ],
      name: 'NewComptroller',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'address',
          name: 'oldImplementation',
          type: 'address',
        },
        {
          indexed: true,
          internalType: 'address',
          name: 'newImplementation',
          type: 'address',
        },
      ],
      name: 'NewImplementation',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'contract InterestRateModel',
          name: 'oldInterestRateModel',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'contract InterestRateModel',
          name: 'newInterestRateModel',
          type: 'address',
        },
      ],
      name: 'NewMarketInterestRateModel',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'oldPendingAdmin',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'newPendingAdmin',
          type: 'address',
        },
      ],
      name: 'NewPendingAdmin',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'uint256',
          name: 'oldReserveFactorMantissa',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newReserveFactorMantissa',
          type: 'uint256',
        },
      ],
      name: 'NewReserveFactor',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'redeemer',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'redeemAmount',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'redeemTokens',
          type: 'uint256',
        },
      ],
      name: 'Redeem',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'payer',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'borrower',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'repayAmount',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'accountBorrows',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'totalBorrows',
          type: 'uint256',
        },
      ],
      name: 'RepayBorrow',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'admin',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'adminPart',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'olaBank',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'olaPart',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newTotalReserves',
          type: 'uint256',
        },
      ],
      name: 'ReservesReduced',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'address',
          name: 'from',
          type: 'address',
        },
        { indexed: true, internalType: 'address', name: 'to', type: 'address' },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'amount',
          type: 'uint256',
        },
      ],
      name: 'Transfer',
      type: 'event',
    },
    { payable: true, stateMutability: 'payable', type: 'fallback' },
    {
      constant: true,
      inputs: [],
      name: 'CErc20DelegatorContractHash',
      outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [],
      name: '_acceptAdmin',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'uint256', name: 'reduceAmount', type: 'uint256' },
      ],
      name: '_reduceReserves',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'contract InterestRateModel',
          name: 'newInterestRateModel',
          type: 'address',
        },
      ],
      name: '_setInterestRateModel',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'address payable',
          name: 'newPendingAdmin',
          type: 'address',
        },
      ],
      name: '_setPendingAdmin',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'uint256',
          name: 'newReserveFactorMantissa',
          type: 'uint256',
        },
      ],
      name: '_setReserveFactor',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [],
      name: 'accrueInterest',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'admin',
      outputs: [{ internalType: 'address payable', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [
        { internalType: 'address', name: 'owner', type: 'address' },
        { internalType: 'address', name: 'spender', type: 'address' },
      ],
      name: 'allowance',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'spender', type: 'address' },
        { internalType: 'uint256', name: 'amount', type: 'uint256' },
      ],
      name: 'approve',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: 'owner', type: 'address' }],
      name: 'balanceOf',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'address', name: 'owner', type: 'address' }],
      name: 'balanceOfUnderlying',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'uint256', name: 'borrowAmount', type: 'uint256' },
      ],
      name: 'borrow',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'address', name: 'account', type: 'address' }],
      name: 'borrowBalanceCurrent',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: 'account', type: 'address' }],
      name: 'borrowBalanceStored',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'borrowRatePerBlock',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'comptroller',
      outputs: [
        {
          internalType: 'contract ComptrollerInterface',
          name: '',
          type: 'address',
        },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'contractNameHash',
      outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'bytes', name: 'data', type: 'bytes' }],
      name: 'delegateToImplementation',
      outputs: [{ internalType: 'bytes', name: '', type: 'bytes' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'bytes', name: 'data', type: 'bytes' }],
      name: 'delegateToViewImplementation',
      outputs: [{ internalType: 'bytes', name: '', type: 'bytes' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [],
      name: 'exchangeRateCurrent',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'exchangeRateStored',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: 'account', type: 'address' }],
      name: 'getAccountSnapshot',
      outputs: [
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'getAccrualBlockNumber',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'getCash',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'implementation',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'isCToken',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'repayAmount', type: 'uint256' },
        {
          internalType: 'contract CTokenInterface',
          name: 'cTokenCollateral',
          type: 'address',
        },
      ],
      name: 'liquidateBorrow',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'uint256', name: 'mintAmount', type: 'uint256' },
      ],
      name: 'mint',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'underlying',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'olaReserveFactorMantissa',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'pendingAdmin',
      outputs: [{ internalType: 'address payable', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'uint256', name: 'redeemTokens', type: 'uint256' },
      ],
      name: 'redeem',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'uint256', name: 'redeemAmount', type: 'uint256' },
      ],
      name: 'redeemUnderlying',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'uint256', name: 'repayAmount', type: 'uint256' },
      ],
      name: 'repayBorrow',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'repayAmount', type: 'uint256' },
      ],
      name: 'repayBorrowBehalf',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'liquidator', type: 'address' },
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'seizeTokens', type: 'uint256' },
      ],
      name: 'seize',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'supplyRatePerBlock',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'contract EIP20NonStandardInterface',
          name: 'token',
          type: 'address',
        },
      ],
      name: 'sweepToken',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [],
      name: 'totalBorrows',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'dst', type: 'address' },
        { internalType: 'uint256', name: 'amount', type: 'uint256' },
      ],
      name: 'transfer',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'src', type: 'address' },
        { internalType: 'address', name: 'dst', type: 'address' },
        { internalType: 'uint256', name: 'amount', type: 'uint256' },
      ],
      name: 'transferFrom',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'bool', name: 'allowResign', type: 'bool' },
        {
          internalType: 'bytes',
          name: 'becomeImplementationData',
          type: 'bytes',
        },
      ],
      name: 'updateImplementationFromRegistry',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
  ],
  distributorAbi: [
    {
      inputs: [
        { internalType: 'address', name: '_comptroller', type: 'address' },
        { internalType: 'address', name: '_admin', type: 'address' },
      ],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'constructor',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newSpeed',
          type: 'uint256',
        },
      ],
      name: 'CompBorrowSpeedUpdated',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newSpeed',
          type: 'uint256',
        },
      ],
      name: 'CompSupplySpeedUpdated',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: true,
          internalType: 'address',
          name: 'borrower',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'compDelta',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'compBorrowIndex',
          type: 'uint256',
        },
      ],
      name: 'DistributedBorrowerComp',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: true,
          internalType: 'address',
          name: 'supplier',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'compDelta',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'compSupplyIndex',
          type: 'uint256',
        },
      ],
      name: 'DistributedSupplierComp',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'lnIncentiveToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'blockNumber',
          type: 'uint256',
        },
      ],
      name: 'LnIncentiveTokenUpdated',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
      ],
      name: 'MarketListed',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'oldAdmin',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'newAdmin',
          type: 'address',
        },
      ],
      name: 'NewAdmin',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'oldPendingAdmin',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'newPendingAdmin',
          type: 'address',
        },
      ],
      name: 'NewPendingAdmin',
      type: 'event',
    },
    {
      constant: true,
      inputs: [],
      name: 'SingleAssetDynamicRainMakerContractHash',
      outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [],
      name: '_acceptAdmin',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'contract CToken', name: 'cToken', type: 'address' },
        { internalType: 'uint256', name: 'compSupplySpeed', type: 'uint256' },
        { internalType: 'uint256', name: 'compBorrowSpeed', type: 'uint256' },
      ],
      name: '_setDynamicCompSpeed',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'contract CToken[]',
          name: '_cTokens',
          type: 'address[]',
        },
        {
          internalType: 'uint256[]',
          name: '_compSupplySpeeds',
          type: 'uint256[]',
        },
        {
          internalType: 'uint256[]',
          name: '_compBorrowSpeeds',
          type: 'uint256[]',
        },
      ],
      name: '_setDynamicCompSpeeds',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'address',
          name: 'incentiveTokenAddress',
          type: 'address',
        },
      ],
      name: '_setLnIncentiveToken',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'newPendingAdmin', type: 'address' },
      ],
      name: '_setPendingAdmin',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'address', name: 'cToken', type: 'address' }],
      name: '_supportMarket',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'admin',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      name: 'allMarkets',
      outputs: [{ internalType: 'contract CToken', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'baseUnits',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'holder', type: 'address' },
        {
          internalType: 'contract CToken[]',
          name: 'cTokens',
          type: 'address[]',
        },
      ],
      name: 'claimComp',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address[]', name: 'holders', type: 'address[]' },
        {
          internalType: 'contract CToken[]',
          name: 'cTokens',
          type: 'address[]',
        },
        { internalType: 'bool', name: 'borrowers', type: 'bool' },
        { internalType: 'bool', name: 'suppliers', type: 'bool' },
      ],
      name: 'claimComp',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'address', name: 'holder', type: 'address' }],
      name: 'claimComp',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'compAccrued',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'compBorrowSpeeds',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'compBorrowState',
      outputs: [
        { internalType: 'uint224', name: 'index', type: 'uint224' },
        { internalType: 'uint32', name: 'block', type: 'uint32' },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [
        { internalType: 'address', name: '', type: 'address' },
        { internalType: 'address', name: '', type: 'address' },
      ],
      name: 'compBorrowerIndex',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'compInitialIndex',
      outputs: [{ internalType: 'uint224', name: '', type: 'uint224' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: 'market', type: 'address' }],
      name: 'compSpeeds',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [
        { internalType: 'address', name: '', type: 'address' },
        { internalType: 'address', name: '', type: 'address' },
      ],
      name: 'compSupplierIndex',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'compSupplySpeeds',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'compSupplyState',
      outputs: [
        { internalType: 'uint224', name: 'index', type: 'uint224' },
        { internalType: 'uint32', name: 'block', type: 'uint32' },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'comptroller',
      outputs: [
        {
          internalType: 'contract ComptrollerInterface',
          name: '',
          type: 'address',
        },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'bytes', name: 'params', type: 'bytes' }],
      name: 'connect',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'contractNameHash',
      outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'borrower', type: 'address' },
        {
          internalType: 'uint256',
          name: 'marketBorrowIndex_',
          type: 'uint256',
        },
      ],
      name: 'distributeBorrowerComp',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'supplier', type: 'address' },
      ],
      name: 'distributeSupplierComp',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'getBlockNumber',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'getLnIncentiveTokenAddress',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'isListed',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'isRainMaker',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'isRetired',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'lnIncentiveTokenAddress',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'pendingAdmin',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'bytes', name: 'params', type: 'bytes' }],
      name: 'retire',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [],
      name: 'retireRainMaker',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'contract EIP20NonStandardInterface',
          name: 'token',
          type: 'address',
        },
      ],
      name: 'sweepToken',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        {
          internalType: 'uint256',
          name: 'marketBorrowIndex_',
          type: 'uint256',
        },
      ],
      name: 'updateCompBorrowIndex',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'address', name: 'cToken', type: 'address' }],
      name: 'updateCompSupplyIndex',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'version',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
  ],
  comptrollerAbi: [
    {
      inputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'constructor',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'string',
          name: 'action',
          type: 'string',
        },
        {
          indexed: false,
          internalType: 'bool',
          name: 'pauseState',
          type: 'bool',
        },
      ],
      name: 'ActionPaused',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'string',
          name: 'action',
          type: 'string',
        },
        {
          indexed: false,
          internalType: 'bool',
          name: 'pauseState',
          type: 'bool',
        },
      ],
      name: 'ActionPaused',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'oldCollateralUsage',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newCollateralUsage',
          type: 'uint256',
        },
      ],
      name: 'ActiveCollateralUsageChange',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'uint256',
          name: 'error',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'info',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'detail',
          type: 'uint256',
        },
      ],
      name: 'Failure',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'bool',
          name: 'newValue',
          type: 'bool',
        },
      ],
      name: 'LimitBorrowingFlagChanged',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'bool',
          name: 'newValue',
          type: 'bool',
        },
      ],
      name: 'LimitMintingFlagChanged',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'account',
          type: 'address',
        },
      ],
      name: 'MarketEntered',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'account',
          type: 'address',
        },
      ],
      name: 'MarketExited',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
      ],
      name: 'MarketListed',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newActiveCollateralCap',
          type: 'uint256',
        },
      ],
      name: 'NewActiveCollateralCap',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'oldAdminBankAddress',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'newAdminBankAddress',
          type: 'address',
        },
      ],
      name: 'NewAdminBankAddress',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: true,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newBorrowCap',
          type: 'uint256',
        },
      ],
      name: 'NewBorrowCap',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'oldBorrowCapGuardian',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'newBorrowCapGuardian',
          type: 'address',
        },
      ],
      name: 'NewBorrowCapGuardian',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'oldBouncer',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'newBouncer',
          type: 'address',
        },
      ],
      name: 'NewBouncer',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'oldCollateralFactorMantissa',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newCollateralFactorMantissa',
          type: 'uint256',
        },
      ],
      name: 'NewCollateralFactor',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'contract CToken',
          name: 'cToken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'oldLiquidationFactorMantissa',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newLiquidationFactorMantissa',
          type: 'uint256',
        },
      ],
      name: 'NewLiquidationFactor',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'contract CToken',
          name: 'ctoken',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'oldLiquidationIncentiveMantissa',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newLiquidationIncentiveMantissa',
          type: 'uint256',
        },
      ],
      name: 'NewLiquidationIncentive',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'uint256',
          name: 'oldMinBorrowAmount',
          type: 'uint256',
        },
        {
          indexed: false,
          internalType: 'uint256',
          name: 'newMinBorrowAmount',
          type: 'uint256',
        },
      ],
      name: 'NewMinBorrowAmount',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'oldPauseGuardian',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'newPauseGuardian',
          type: 'address',
        },
      ],
      name: 'NewPauseGuardian',
      type: 'event',
    },
    {
      anonymous: false,
      inputs: [
        {
          indexed: false,
          internalType: 'address',
          name: 'oldRainMaker',
          type: 'address',
        },
        {
          indexed: false,
          internalType: 'address',
          name: 'newRainMaker',
          type: 'address',
        },
      ],
      name: 'NewRainMaker',
      type: 'event',
    },
    {
      constant: false,
      inputs: [],
      name: '_afterNonReentrant',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [],
      name: '_beforeNonReentrant',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: '_borrowGuardianPaused',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: '_latestVersionSynced',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: '_mintGuardianPaused',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'contract CToken[]',
          name: 'cTokens',
          type: 'address[]',
        },
        {
          internalType: 'uint256[]',
          name: 'newActiveCollateralCaps',
          type: 'uint256[]',
        },
      ],
      name: '_setActiveCollateralCaps',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'address payable',
          name: 'newAdminBankAddress',
          type: 'address',
        },
      ],
      name: '_setAdminBankAddress',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'address',
          name: 'newBorrowCapGuardian',
          type: 'address',
        },
      ],
      name: '_setBorrowCapGuardian',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'contract CToken', name: 'cToken', type: 'address' },
        { internalType: 'bool', name: 'state', type: 'bool' },
      ],
      name: '_setBorrowPaused',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'bytes32', name: 'contractNameHash', type: 'bytes32' },
        { internalType: 'bytes', name: 'deployParams', type: 'bytes' },
        { internalType: 'bytes', name: 'retireParams', type: 'bytes' },
        { internalType: 'bytes', name: 'connectParams', type: 'bytes' },
      ],
      name: '_setBouncer',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'contract CToken', name: 'cToken', type: 'address' },
        {
          internalType: 'uint256',
          name: 'newCollateralFactorMantissa',
          type: 'uint256',
        },
      ],
      name: '_setCollateralFactor',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'bool', name: 'flagValue', type: 'bool' }],
      name: '_setLimitBorrowing',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'bool', name: 'flagValue', type: 'bool' }],
      name: '_setLimitMinting',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'contract CToken', name: 'cToken', type: 'address' },
        {
          internalType: 'uint256',
          name: 'newLiquidationFactorMantissa',
          type: 'uint256',
        },
      ],
      name: '_setLiquidationFactor',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'contract CToken', name: 'cToken', type: 'address' },
        {
          internalType: 'uint256',
          name: 'newLiquidationIncentiveMantissa',
          type: 'uint256',
        },
      ],
      name: '_setLiquidationIncentive',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'contract CToken[]',
          name: 'cTokens',
          type: 'address[]',
        },
        { internalType: 'uint256[]', name: 'newBorrowCaps', type: 'uint256[]' },
      ],
      name: '_setMarketBorrowCaps',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'uint256',
          name: 'minBorrowAmountUsd_',
          type: 'uint256',
        },
      ],
      name: '_setMinBorrowAmountUsd',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'contract CToken', name: 'cToken', type: 'address' },
        { internalType: 'bool', name: 'state', type: 'bool' },
      ],
      name: '_setMintPaused',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'newPauseGuardian', type: 'address' },
      ],
      name: '_setPauseGuardian',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'bytes32', name: 'contractNameHash', type: 'bytes32' },
        { internalType: 'bytes', name: 'deployParams', type: 'bytes' },
        { internalType: 'bytes', name: 'retireParams', type: 'bytes' },
        { internalType: 'bytes', name: 'connectParams', type: 'bytes' },
      ],
      name: '_setRainMaker',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [{ internalType: 'bool', name: 'state', type: 'bool' }],
      name: '_setTransferPaused',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'underlying', type: 'address' },
        { internalType: 'bytes32', name: 'contractNameHash', type: 'bytes32' },
        { internalType: 'bytes', name: 'params', type: 'bytes' },
        { internalType: 'address', name: 'interestRateModel', type: 'address' },
        {
          internalType: 'bytes',
          name: 'becomeImplementationData',
          type: 'bytes',
        },
      ],
      name: '_supportNewMarket',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [
        { internalType: 'address', name: '', type: 'address' },
        { internalType: 'uint256', name: '', type: 'uint256' },
      ],
      name: 'accountAssets',
      outputs: [{ internalType: 'contract CToken', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'admin',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'adminBankAddress',
      outputs: [{ internalType: 'address payable', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      name: 'allMarkets',
      outputs: [{ internalType: 'contract CToken', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'borrowAmount', type: 'uint256' },
      ],
      name: 'borrowAllowed',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'borrowCapGuardian',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'borrowCaps',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'borrowGuardianPaused',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'borrowAmount', type: 'uint256' },
      ],
      name: 'borrowVerify',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'bouncer',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [
        { internalType: 'address', name: 'account', type: 'address' },
        { internalType: 'contract CToken', name: 'cToken', type: 'address' },
      ],
      name: 'checkMembership',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'closeFactorMantissa',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address[]', name: 'cTokens', type: 'address[]' },
      ],
      name: 'enterMarkets',
      outputs: [{ internalType: 'uint256[]', name: '', type: 'uint256[]' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [
        { internalType: 'address', name: '', type: 'address' },
        { internalType: 'bytes32', name: '', type: 'bytes32' },
      ],
      name: 'existingMarketTypes',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cTokenAddress', type: 'address' },
      ],
      name: 'exitMarket',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: 'account', type: 'address' }],
      name: 'getAccountLiquidity',
      outputs: [
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: 'account', type: 'address' }],
      name: 'getAccountLiquidityByLiquidationFactor',
      outputs: [
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'getAllMarkets',
      outputs: [
        { internalType: 'contract CToken[]', name: '', type: 'address[]' },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: 'account', type: 'address' }],
      name: 'getAssetsIn',
      outputs: [
        { internalType: 'contract CToken[]', name: '', type: 'address[]' },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [
        { internalType: 'address', name: 'account', type: 'address' },
        { internalType: 'address', name: 'cTokenModify', type: 'address' },
        { internalType: 'uint256', name: 'redeemTokens', type: 'uint256' },
        { internalType: 'uint256', name: 'borrowAmount', type: 'uint256' },
      ],
      name: 'getHypotheticalAccountLiquidity',
      outputs: [
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [
        { internalType: 'address', name: 'account', type: 'address' },
        { internalType: 'address', name: 'cTokenModify', type: 'address' },
        { internalType: 'uint256', name: 'redeemTokens', type: 'uint256' },
        { internalType: 'uint256', name: 'borrowAmount', type: 'uint256' },
      ],
      name: 'getHypotheticalAccountLiquidityByLiquidationFactor',
      outputs: [
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'getRegistry',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'hasBouncer',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'hasRainMaker',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'implementation',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [],
      name: 'initializeNewComptroller',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: 'account', type: 'address' }],
      name: 'isAccountApproved',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'isComptroller',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'limitBorrowing',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'limitMinting',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cTokenBorrowed', type: 'address' },
        { internalType: 'address', name: 'cTokenCollateral', type: 'address' },
        { internalType: 'address', name: 'liquidator', type: 'address' },
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'repayAmount', type: 'uint256' },
      ],
      name: 'liquidateBorrowAllowed',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cTokenBorrowed', type: 'address' },
        { internalType: 'address', name: 'cTokenCollateral', type: 'address' },
        { internalType: 'address', name: 'liquidator', type: 'address' },
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'actualRepayAmount', type: 'uint256' },
        { internalType: 'uint256', name: 'seizeTokens', type: 'uint256' },
      ],
      name: 'liquidateBorrowVerify',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [
        { internalType: 'address', name: 'cTokenBorrowed', type: 'address' },
        { internalType: 'address', name: 'cTokenCollateral', type: 'address' },
        { internalType: 'uint256', name: 'actualRepayAmount', type: 'uint256' },
      ],
      name: 'liquidateCalculateSeizeTokens',
      outputs: [
        { internalType: 'uint256', name: '', type: 'uint256' },
        { internalType: 'uint256', name: '', type: 'uint256' },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'markets',
      outputs: [
        { internalType: 'bool', name: 'isListed', type: 'bool' },
        {
          internalType: 'uint256',
          name: 'collateralFactorMantissa',
          type: 'uint256',
        },
        {
          internalType: 'uint256',
          name: 'liquidationFactorMantissa',
          type: 'uint256',
        },
        {
          internalType: 'uint256',
          name: 'liquidationIncentiveMantissa',
          type: 'uint256',
        },
        {
          internalType: 'uint256',
          name: 'activeCollateralUSDCap',
          type: 'uint256',
        },
        {
          internalType: 'uint256',
          name: 'activeCollateralCTokenUsage',
          type: 'uint256',
        },
      ],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'maxAssets',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'minBorrowAmountUsd',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'minter', type: 'address' },
        { internalType: 'uint256', name: 'mintAmount', type: 'uint256' },
      ],
      name: 'mintAllowed',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [{ internalType: 'address', name: '', type: 'address' }],
      name: 'mintGuardianPaused',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'minter', type: 'address' },
        { internalType: 'uint256', name: 'actualMintAmount', type: 'uint256' },
        { internalType: 'uint256', name: 'mintTokens', type: 'uint256' },
      ],
      name: 'mintVerify',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'pauseGuardian',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'pendingAdmin',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'rainMaker',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'redeemer', type: 'address' },
        { internalType: 'uint256', name: 'redeemTokens', type: 'uint256' },
      ],
      name: 'redeemAllowed',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'redeemer', type: 'address' },
        { internalType: 'uint256', name: 'redeemAmount', type: 'uint256' },
        { internalType: 'uint256', name: 'redeemTokens', type: 'uint256' },
      ],
      name: 'redeemVerify',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'registry',
      outputs: [{ internalType: 'address', name: '', type: 'address' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'payer', type: 'address' },
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'repayAmount', type: 'uint256' },
      ],
      name: 'repayBorrowAllowed',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'payer', type: 'address' },
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'actualRepayAmount', type: 'uint256' },
        { internalType: 'uint256', name: 'borrowerIndex', type: 'uint256' },
      ],
      name: 'repayBorrowVerify',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cTokenCollateral', type: 'address' },
        { internalType: 'address', name: 'cTokenBorrowed', type: 'address' },
        { internalType: 'address', name: 'liquidator', type: 'address' },
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'seizeTokens', type: 'uint256' },
      ],
      name: 'seizeAllowed',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'seizeGuardianPaused',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cTokenCollateral', type: 'address' },
        { internalType: 'address', name: 'cTokenBorrowed', type: 'address' },
        { internalType: 'address', name: 'liquidator', type: 'address' },
        { internalType: 'address', name: 'borrower', type: 'address' },
        { internalType: 'uint256', name: 'seizeTokens', type: 'uint256' },
      ],
      name: 'seizeVerify',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'src', type: 'address' },
        { internalType: 'address', name: 'dst', type: 'address' },
        { internalType: 'uint256', name: 'transferTokens', type: 'uint256' },
      ],
      name: 'transferAllowed',
      outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'transferGuardianPaused',
      outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        { internalType: 'address', name: 'cToken', type: 'address' },
        { internalType: 'address', name: 'src', type: 'address' },
        { internalType: 'address', name: 'dst', type: 'address' },
        { internalType: 'uint256', name: 'transferTokens', type: 'uint256' },
      ],
      name: 'transferVerify',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
    {
      constant: true,
      inputs: [],
      name: 'unitrollerContractHash',
      outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
      payable: false,
      stateMutability: 'view',
      type: 'function',
    },
    {
      constant: false,
      inputs: [
        {
          internalType: 'bytes',
          name: 'becomeImplementationData',
          type: 'bytes',
        },
      ],
      name: 'updateDelegatedImplementations',
      outputs: [],
      payable: false,
      stateMutability: 'nonpayable',
      type: 'function',
    },
  ],
};
