UNITROLLER_ABI = [
    {
        "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 VToken",
                "name": "vToken",
                "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": False, "internalType": "bool", "name": "state", "type": "bool"}],
        "name": "ActionProtocolPaused",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": True,
                "internalType": "address",
                "name": "contributor",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "newSpeed",
                "type": "uint256",
            },
        ],
        "name": "ContributorVenusSpeedUpdated",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": True,
                "internalType": "contract VToken",
                "name": "vToken",
                "type": "address",
            },
            {
                "indexed": True,
                "internalType": "address",
                "name": "borrower",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "venusDelta",
                "type": "uint256",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "venusBorrowIndex",
                "type": "uint256",
            },
        ],
        "name": "DistributedBorrowerVenus",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": True,
                "internalType": "contract VToken",
                "name": "vToken",
                "type": "address",
            },
            {
                "indexed": True,
                "internalType": "address",
                "name": "supplier",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "venusDelta",
                "type": "uint256",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "venusSupplyIndex",
                "type": "uint256",
            },
        ],
        "name": "DistributedSupplierVenus",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": True,
                "internalType": "address",
                "name": "vaiMinter",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "venusDelta",
                "type": "uint256",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "venusVAIMintIndex",
                "type": "uint256",
            },
        ],
        "name": "DistributedVAIMinterVenus",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256",
            }
        ],
        "name": "DistributedVAIVaultVenus",
        "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": "contract VToken",
                "name": "vToken",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "address",
                "name": "account",
                "type": "address",
            },
        ],
        "name": "MarketEntered",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "contract VToken",
                "name": "vToken",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "address",
                "name": "account",
                "type": "address",
            },
        ],
        "name": "MarketExited",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "contract VToken",
                "name": "vToken",
                "type": "address",
            }
        ],
        "name": "MarketListed",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": True,
                "internalType": "contract VToken",
                "name": "vToken",
                "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": "uint256",
                "name": "oldCloseFactorMantissa",
                "type": "uint256",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "newCloseFactorMantissa",
                "type": "uint256",
            },
        ],
        "name": "NewCloseFactor",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "contract VToken",
                "name": "vToken",
                "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": "uint256",
                "name": "oldLiquidationIncentiveMantissa",
                "type": "uint256",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "newLiquidationIncentiveMantissa",
                "type": "uint256",
            },
        ],
        "name": "NewLiquidationIncentive",
        "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": "contract PriceOracle",
                "name": "oldPriceOracle",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "contract PriceOracle",
                "name": "newPriceOracle",
                "type": "address",
            },
        ],
        "name": "NewPriceOracle",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "address",
                "name": "oldTreasuryAddress",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "address",
                "name": "newTreasuryAddress",
                "type": "address",
            },
        ],
        "name": "NewTreasuryAddress",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "address",
                "name": "oldTreasuryGuardian",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "address",
                "name": "newTreasuryGuardian",
                "type": "address",
            },
        ],
        "name": "NewTreasuryGuardian",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "oldTreasuryPercent",
                "type": "uint256",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "newTreasuryPercent",
                "type": "uint256",
            },
        ],
        "name": "NewTreasuryPercent",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "contract VAIControllerInterface",
                "name": "oldVAIController",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "contract VAIControllerInterface",
                "name": "newVAIController",
                "type": "address",
            },
        ],
        "name": "NewVAIController",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "oldVAIMintRate",
                "type": "uint256",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "newVAIMintRate",
                "type": "uint256",
            },
        ],
        "name": "NewVAIMintRate",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "address",
                "name": "vault_",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "releaseStartBlock_",
                "type": "uint256",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "releaseInterval_",
                "type": "uint256",
            },
        ],
        "name": "NewVAIVaultInfo",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "oldVenusVAIRate",
                "type": "uint256",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "newVenusVAIRate",
                "type": "uint256",
            },
        ],
        "name": "NewVenusVAIRate",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "oldVenusVAIVaultRate",
                "type": "uint256",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "newVenusVAIVaultRate",
                "type": "uint256",
            },
        ],
        "name": "NewVenusVAIVaultRate",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": False,
                "internalType": "address",
                "name": "recipient",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256",
            },
        ],
        "name": "VenusGranted",
        "type": "event",
    },
    {
        "anonymous": False,
        "inputs": [
            {
                "indexed": True,
                "internalType": "contract VToken",
                "name": "vToken",
                "type": "address",
            },
            {
                "indexed": False,
                "internalType": "uint256",
                "name": "newSpeed",
                "type": "uint256",
            },
        ],
        "name": "VenusSpeedUpdated",
        "type": "event",
    },
    {
        "constant": False,
        "inputs": [
            {
                "internalType": "contract Unitroller",
                "name": "unitroller",
                "type": "address",
            }
        ],
        "name": "_become",
        "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": False,
        "inputs": [
            {"internalType": "address", "name": "recipient", "type": "address"},
            {"internalType": "uint256", "name": "amount", "type": "uint256"},
        ],
        "name": "_grantXVS",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "_mintGuardianPaused",
        "outputs": [{"internalType": "bool", "name": "", "type": "bool"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {
                "internalType": "address",
                "name": "newBorrowCapGuardian",
                "type": "address",
            }
        ],
        "name": "_setBorrowCapGuardian",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {
                "internalType": "uint256",
                "name": "newCloseFactorMantissa",
                "type": "uint256",
            }
        ],
        "name": "_setCloseFactor",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "contract VToken", "name": "vToken", "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": "uint256",
                "name": "newLiquidationIncentiveMantissa",
                "type": "uint256",
            }
        ],
        "name": "_setLiquidationIncentive",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {
                "internalType": "contract VToken[]",
                "name": "vTokens",
                "type": "address[]",
            },
            {"internalType": "uint256[]", "name": "newBorrowCaps", "type": "uint256[]"},
        ],
        "name": "_setMarketBorrowCaps",
        "outputs": [],
        "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": "contract PriceOracle",
                "name": "newOracle",
                "type": "address",
            }
        ],
        "name": "_setPriceOracle",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [{"internalType": "bool", "name": "state", "type": "bool"}],
        "name": "_setProtocolPaused",
        "outputs": [{"internalType": "bool", "name": "", "type": "bool"}],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {
                "internalType": "address",
                "name": "newTreasuryGuardian",
                "type": "address",
            },
            {
                "internalType": "address",
                "name": "newTreasuryAddress",
                "type": "address",
            },
            {
                "internalType": "uint256",
                "name": "newTreasuryPercent",
                "type": "uint256",
            },
        ],
        "name": "_setTreasuryData",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {
                "internalType": "contract VAIControllerInterface",
                "name": "vaiController_",
                "type": "address",
            }
        ],
        "name": "_setVAIController",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [{"internalType": "uint256", "name": "newVAIMintRate", "type": "uint256"}],
        "name": "_setVAIMintRate",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address", "name": "vault_", "type": "address"},
            {
                "internalType": "uint256",
                "name": "releaseStartBlock_",
                "type": "uint256",
            },
            {"internalType": "uint256", "name": "minReleaseAmount_", "type": "uint256"},
        ],
        "name": "_setVAIVaultInfo",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "contract VToken", "name": "vToken", "type": "address"},
            {"internalType": "uint256", "name": "venusSpeed", "type": "uint256"},
        ],
        "name": "_setVenusSpeed",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [{"internalType": "uint256", "name": "venusVAIRate_", "type": "uint256"}],
        "name": "_setVenusVAIRate",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [{"internalType": "uint256", "name": "venusVAIVaultRate_", "type": "uint256"}],
        "name": "_setVenusVAIVaultRate",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [{"internalType": "contract VToken", "name": "vToken", "type": "address"}],
        "name": "_supportMarket",
        "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 VToken", "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": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "name": "allMarkets",
        "outputs": [{"internalType": "contract VToken", "name": "", "type": "address"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address", "name": "vToken", "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": "vToken", "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": [
            {"internalType": "address", "name": "account", "type": "address"},
            {"internalType": "contract VToken", "name": "vToken", "type": "address"},
        ],
        "name": "checkMembership",
        "outputs": [{"internalType": "bool", "name": "", "type": "bool"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address", "name": "holder", "type": "address"},
            {
                "internalType": "contract VToken[]",
                "name": "vTokens",
                "type": "address[]",
            },
        ],
        "name": "claimVenus",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [{"internalType": "address", "name": "holder", "type": "address"}],
        "name": "claimVenus",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address[]", "name": "holders", "type": "address[]"},
            {
                "internalType": "contract VToken[]",
                "name": "vTokens",
                "type": "address[]",
            },
            {"internalType": "bool", "name": "borrowers", "type": "bool"},
            {"internalType": "bool", "name": "suppliers", "type": "bool"},
        ],
        "name": "claimVenus",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "closeFactorMantissa",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "comptrollerImplementation",
        "outputs": [{"internalType": "address", "name": "", "type": "address"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [{"internalType": "address", "name": "vaiMinter", "type": "address"}],
        "name": "distributeVAIMinterVenus",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [{"internalType": "address[]", "name": "vTokens", "type": "address[]"}],
        "name": "enterMarkets",
        "outputs": [{"internalType": "uint256[]", "name": "", "type": "uint256[]"}],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [{"internalType": "address", "name": "vTokenAddress", "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": [],
        "name": "getAllMarkets",
        "outputs": [{"internalType": "contract VToken[]", "name": "", "type": "address[]"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [{"internalType": "address", "name": "account", "type": "address"}],
        "name": "getAssetsIn",
        "outputs": [{"internalType": "contract VToken[]", "name": "", "type": "address[]"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "getBlockNumber",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [
            {"internalType": "address", "name": "account", "type": "address"},
            {"internalType": "address", "name": "vTokenModify", "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": [],
        "name": "getXVSAddress",
        "outputs": [{"internalType": "address", "name": "", "type": "address"}],
        "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": [{"internalType": "address", "name": "", "type": "address"}],
        "name": "lastContributorBlock",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address", "name": "vTokenBorrowed", "type": "address"},
            {"internalType": "address", "name": "vTokenCollateral", "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": "vTokenBorrowed", "type": "address"},
            {"internalType": "address", "name": "vTokenCollateral", "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": "vTokenBorrowed", "type": "address"},
            {"internalType": "address", "name": "vTokenCollateral", "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": "vTokenCollateral", "type": "address"},
            {"internalType": "uint256", "name": "actualRepayAmount", "type": "uint256"},
        ],
        "name": "liquidateVAICalculateSeizeTokens",
        "outputs": [
            {"internalType": "uint256", "name": "", "type": "uint256"},
            {"internalType": "uint256", "name": "", "type": "uint256"},
        ],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "liquidationIncentiveMantissa",
        "outputs": [{"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": "bool", "name": "isVenus", "type": "bool"},
        ],
        "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": "minReleaseAmount",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address", "name": "vToken", "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": True,
        "inputs": [],
        "name": "mintVAIGuardianPaused",
        "outputs": [{"internalType": "bool", "name": "", "type": "bool"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address", "name": "vToken", "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": [{"internalType": "address", "name": "", "type": "address"}],
        "name": "mintedVAIs",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "oracle",
        "outputs": [{"internalType": "contract PriceOracle", "name": "", "type": "address"}],
        "payable": False,
        "stateMutability": "view",
        "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": "pendingComptrollerImplementation",
        "outputs": [{"internalType": "address", "name": "", "type": "address"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "protocolPaused",
        "outputs": [{"internalType": "bool", "name": "", "type": "bool"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address", "name": "vToken", "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": "vToken", "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": "releaseStartBlock",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [],
        "name": "releaseToVault",
        "outputs": [],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address", "name": "vToken", "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": "vToken", "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": True,
        "inputs": [],
        "name": "repayVAIGuardianPaused",
        "outputs": [{"internalType": "bool", "name": "", "type": "bool"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address", "name": "vTokenCollateral", "type": "address"},
            {"internalType": "address", "name": "vTokenBorrowed", "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": "vTokenCollateral", "type": "address"},
            {"internalType": "address", "name": "vTokenBorrowed", "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": "owner", "type": "address"},
            {"internalType": "uint256", "name": "amount", "type": "uint256"},
        ],
        "name": "setMintedVAIOf",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "nonpayable",
        "type": "function",
    },
    {
        "constant": False,
        "inputs": [
            {"internalType": "address", "name": "vToken", "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": "vToken", "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": "treasuryAddress",
        "outputs": [{"internalType": "address", "name": "", "type": "address"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "treasuryGuardian",
        "outputs": [{"internalType": "address", "name": "", "type": "address"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "treasuryPercent",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "vaiController",
        "outputs": [
            {
                "internalType": "contract VAIControllerInterface",
                "name": "",
                "type": "address",
            }
        ],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "vaiMintRate",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "vaiVaultAddress",
        "outputs": [{"internalType": "address", "name": "", "type": "address"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [{"internalType": "address", "name": "", "type": "address"}],
        "name": "venusAccrued",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [{"internalType": "address", "name": "", "type": "address"}],
        "name": "venusBorrowState",
        "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": "venusBorrowerIndex",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [{"internalType": "address", "name": "", "type": "address"}],
        "name": "venusContributorSpeeds",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "venusInitialIndex",
        "outputs": [{"internalType": "uint224", "name": "", "type": "uint224"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "venusRate",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [{"internalType": "address", "name": "", "type": "address"}],
        "name": "venusSpeeds",
        "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": "venusSupplierIndex",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [{"internalType": "address", "name": "", "type": "address"}],
        "name": "venusSupplyState",
        "outputs": [
            {"internalType": "uint224", "name": "index", "type": "uint224"},
            {"internalType": "uint32", "name": "block", "type": "uint32"},
        ],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "venusVAIRate",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
    {
        "constant": True,
        "inputs": [],
        "name": "venusVAIVaultRate",
        "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
        "payable": False,
        "stateMutability": "view",
        "type": "function",
    },
]
