"use strict";
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
exports.__esModule = true;
exports.CompoundLens__factory = void 0;
var ethers_1 = require("ethers");
var _abi = [
    {
        inputs: [
            {
                internalType: "contract ICToken",
                name: "cToken",
                type: "address"
            },
            {
                internalType: "address payable",
                name: "account",
                type: "address"
            },
        ],
        name: "cTokenBalances",
        outputs: [
            {
                components: [
                    {
                        internalType: "address",
                        name: "cToken",
                        type: "address"
                    },
                    {
                        internalType: "bool",
                        name: "isCToken",
                        type: "bool"
                    },
                    {
                        internalType: "bool",
                        name: "isCEther",
                        type: "bool"
                    },
                    {
                        internalType: "uint256",
                        name: "balanceOf",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "borrowBalanceCurrent",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "balanceOfUnderlying",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "tokenBalance",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "tokenAllowance",
                        type: "uint256"
                    },
                ],
                internalType: "struct CompoundLens.CTokenBalances",
                name: "",
                type: "tuple"
            },
        ],
        stateMutability: "nonpayable",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract ICToken[]",
                name: "cTokens",
                type: "address[]"
            },
            {
                internalType: "address payable",
                name: "account",
                type: "address"
            },
        ],
        name: "cTokenBalancesAll",
        outputs: [
            {
                components: [
                    {
                        internalType: "address",
                        name: "cToken",
                        type: "address"
                    },
                    {
                        internalType: "bool",
                        name: "isCToken",
                        type: "bool"
                    },
                    {
                        internalType: "bool",
                        name: "isCEther",
                        type: "bool"
                    },
                    {
                        internalType: "uint256",
                        name: "balanceOf",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "borrowBalanceCurrent",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "balanceOfUnderlying",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "tokenBalance",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "tokenAllowance",
                        type: "uint256"
                    },
                ],
                internalType: "struct CompoundLens.CTokenBalances[]",
                name: "",
                type: "tuple[]"
            },
        ],
        stateMutability: "nonpayable",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract ICToken",
                name: "cToken",
                type: "address"
            },
        ],
        name: "cTokenMetadata",
        outputs: [
            {
                components: [
                    {
                        internalType: "address",
                        name: "cToken",
                        type: "address"
                    },
                    {
                        internalType: "uint256",
                        name: "exchangeRateCurrent",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "supplyRatePerBlock",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "borrowRatePerBlock",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "reserveFactorMantissa",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "totalBorrows",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "totalReserves",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "totalSupply",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "totalCash",
                        type: "uint256"
                    },
                    {
                        internalType: "bool",
                        name: "isListed",
                        type: "bool"
                    },
                    {
                        internalType: "address",
                        name: "underlyingAssetAddress",
                        type: "address"
                    },
                    {
                        internalType: "uint256",
                        name: "cTokenDecimals",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "underlyingDecimals",
                        type: "uint256"
                    },
                    {
                        internalType: "bool",
                        name: "isCToken",
                        type: "bool"
                    },
                    {
                        internalType: "bool",
                        name: "isCEther",
                        type: "bool"
                    },
                    {
                        internalType: "uint256",
                        name: "borrowCap",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "depositCap",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "heteroLiquidationIncentive",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "homoLiquidationIncentive",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "sutokenLiquidationIncentive",
                        type: "uint256"
                    },
                    {
                        internalType: "uint8",
                        name: "groupId",
                        type: "uint8"
                    },
                    {
                        internalType: "uint256",
                        name: "intraRate",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "mintRate",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "interRate",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "discountRate",
                        type: "uint256"
                    },
                ],
                internalType: "struct CompoundLens.CTokenMetadata",
                name: "",
                type: "tuple"
            },
        ],
        stateMutability: "nonpayable",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract ICToken[]",
                name: "cTokens",
                type: "address[]"
            },
        ],
        name: "cTokenMetadataAll",
        outputs: [
            {
                components: [
                    {
                        internalType: "address",
                        name: "cToken",
                        type: "address"
                    },
                    {
                        internalType: "uint256",
                        name: "exchangeRateCurrent",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "supplyRatePerBlock",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "borrowRatePerBlock",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "reserveFactorMantissa",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "totalBorrows",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "totalReserves",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "totalSupply",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "totalCash",
                        type: "uint256"
                    },
                    {
                        internalType: "bool",
                        name: "isListed",
                        type: "bool"
                    },
                    {
                        internalType: "address",
                        name: "underlyingAssetAddress",
                        type: "address"
                    },
                    {
                        internalType: "uint256",
                        name: "cTokenDecimals",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "underlyingDecimals",
                        type: "uint256"
                    },
                    {
                        internalType: "bool",
                        name: "isCToken",
                        type: "bool"
                    },
                    {
                        internalType: "bool",
                        name: "isCEther",
                        type: "bool"
                    },
                    {
                        internalType: "uint256",
                        name: "borrowCap",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "depositCap",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "heteroLiquidationIncentive",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "homoLiquidationIncentive",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "sutokenLiquidationIncentive",
                        type: "uint256"
                    },
                    {
                        internalType: "uint8",
                        name: "groupId",
                        type: "uint8"
                    },
                    {
                        internalType: "uint256",
                        name: "intraRate",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "mintRate",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "interRate",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "discountRate",
                        type: "uint256"
                    },
                ],
                internalType: "struct CompoundLens.CTokenMetadata[]",
                name: "",
                type: "tuple[]"
            },
        ],
        stateMutability: "nonpayable",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract ICToken",
                name: "cToken",
                type: "address"
            },
        ],
        name: "cTokenUnderlyingPrice",
        outputs: [
            {
                components: [
                    {
                        internalType: "address",
                        name: "cToken",
                        type: "address"
                    },
                    {
                        internalType: "uint256",
                        name: "underlyingPrice",
                        type: "uint256"
                    },
                ],
                internalType: "struct CompoundLens.CTokenUnderlyingPrice",
                name: "",
                type: "tuple"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract ICToken[]",
                name: "cTokens",
                type: "address[]"
            },
        ],
        name: "cTokenUnderlyingPriceAll",
        outputs: [
            {
                components: [
                    {
                        internalType: "address",
                        name: "cToken",
                        type: "address"
                    },
                    {
                        internalType: "uint256",
                        name: "underlyingPrice",
                        type: "uint256"
                    },
                ],
                internalType: "struct CompoundLens.CTokenUnderlyingPrice[]",
                name: "",
                type: "tuple[]"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract IComptroller",
                name: "comptroller",
                type: "address"
            },
            {
                internalType: "address",
                name: "account",
                type: "address"
            },
        ],
        name: "getAccountLimits",
        outputs: [
            {
                components: [
                    {
                        internalType: "address[]",
                        name: "markets",
                        type: "address[]"
                    },
                    {
                        internalType: "uint256",
                        name: "liquidity",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "shortfall",
                        type: "uint256"
                    },
                ],
                internalType: "struct CompoundLens.AccountLimits",
                name: "",
                type: "tuple"
            },
        ],
        stateMutability: "nonpayable",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract ICToken",
                name: "comp",
                type: "address"
            },
            {
                internalType: "address",
                name: "account",
                type: "address"
            },
        ],
        name: "getCompBalanceMetadata",
        outputs: [
            {
                components: [
                    {
                        internalType: "uint256",
                        name: "balance",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "votes",
                        type: "uint256"
                    },
                    {
                        internalType: "address",
                        name: "delegate",
                        type: "address"
                    },
                ],
                internalType: "struct CompoundLens.CompBalanceMetadata",
                name: "",
                type: "tuple"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract ICToken",
                name: "comp",
                type: "address"
            },
            {
                internalType: "contract IComptroller",
                name: "comptroller",
                type: "address"
            },
            {
                internalType: "address",
                name: "account",
                type: "address"
            },
        ],
        name: "getCompBalanceMetadataExt",
        outputs: [
            {
                components: [
                    {
                        internalType: "uint256",
                        name: "balance",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "votes",
                        type: "uint256"
                    },
                    {
                        internalType: "address",
                        name: "delegate",
                        type: "address"
                    },
                    {
                        internalType: "uint256",
                        name: "allocated",
                        type: "uint256"
                    },
                ],
                internalType: "struct CompoundLens.CompBalanceMetadataExt",
                name: "",
                type: "tuple"
            },
        ],
        stateMutability: "nonpayable",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract ICToken",
                name: "comp",
                type: "address"
            },
            {
                internalType: "address",
                name: "account",
                type: "address"
            },
            {
                internalType: "uint32[]",
                name: "blockNumbers",
                type: "uint32[]"
            },
        ],
        name: "getCompVotes",
        outputs: [
            {
                components: [
                    {
                        internalType: "uint256",
                        name: "blockNumber",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "votes",
                        type: "uint256"
                    },
                ],
                internalType: "struct CompoundLens.CompVotes[]",
                name: "",
                type: "tuple[]"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract IGovernorBravo",
                name: "governor",
                type: "address"
            },
            {
                internalType: "uint256[]",
                name: "proposalIds",
                type: "uint256[]"
            },
        ],
        name: "getGovBravoProposals",
        outputs: [
            {
                components: [
                    {
                        internalType: "uint256",
                        name: "proposalId",
                        type: "uint256"
                    },
                    {
                        internalType: "address",
                        name: "proposer",
                        type: "address"
                    },
                    {
                        internalType: "uint256",
                        name: "eta",
                        type: "uint256"
                    },
                    {
                        internalType: "address[]",
                        name: "targets",
                        type: "address[]"
                    },
                    {
                        internalType: "uint256[]",
                        name: "values",
                        type: "uint256[]"
                    },
                    {
                        internalType: "string[]",
                        name: "signatures",
                        type: "string[]"
                    },
                    {
                        internalType: "bytes[]",
                        name: "calldatas",
                        type: "bytes[]"
                    },
                    {
                        internalType: "uint256",
                        name: "startBlock",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "endBlock",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "forVotes",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "againstVotes",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "abstainVotes",
                        type: "uint256"
                    },
                    {
                        internalType: "bool",
                        name: "canceled",
                        type: "bool"
                    },
                    {
                        internalType: "bool",
                        name: "executed",
                        type: "bool"
                    },
                ],
                internalType: "struct CompoundLens.GovBravoProposal[]",
                name: "",
                type: "tuple[]"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract IGovernorBravo",
                name: "governor",
                type: "address"
            },
            {
                internalType: "address",
                name: "voter",
                type: "address"
            },
            {
                internalType: "uint256[]",
                name: "proposalIds",
                type: "uint256[]"
            },
        ],
        name: "getGovBravoReceipts",
        outputs: [
            {
                components: [
                    {
                        internalType: "uint256",
                        name: "proposalId",
                        type: "uint256"
                    },
                    {
                        internalType: "bool",
                        name: "hasVoted",
                        type: "bool"
                    },
                    {
                        internalType: "uint8",
                        name: "support",
                        type: "uint8"
                    },
                    {
                        internalType: "uint96",
                        name: "votes",
                        type: "uint96"
                    },
                ],
                internalType: "struct CompoundLens.GovBravoReceipt[]",
                name: "",
                type: "tuple[]"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract IGovernorAlpha",
                name: "governor",
                type: "address"
            },
            {
                internalType: "uint256[]",
                name: "proposalIds",
                type: "uint256[]"
            },
        ],
        name: "getGovProposals",
        outputs: [
            {
                components: [
                    {
                        internalType: "uint256",
                        name: "proposalId",
                        type: "uint256"
                    },
                    {
                        internalType: "address",
                        name: "proposer",
                        type: "address"
                    },
                    {
                        internalType: "uint256",
                        name: "eta",
                        type: "uint256"
                    },
                    {
                        internalType: "address[]",
                        name: "targets",
                        type: "address[]"
                    },
                    {
                        internalType: "uint256[]",
                        name: "values",
                        type: "uint256[]"
                    },
                    {
                        internalType: "string[]",
                        name: "signatures",
                        type: "string[]"
                    },
                    {
                        internalType: "bytes[]",
                        name: "calldatas",
                        type: "bytes[]"
                    },
                    {
                        internalType: "uint256",
                        name: "startBlock",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "endBlock",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "forVotes",
                        type: "uint256"
                    },
                    {
                        internalType: "uint256",
                        name: "againstVotes",
                        type: "uint256"
                    },
                    {
                        internalType: "bool",
                        name: "canceled",
                        type: "bool"
                    },
                    {
                        internalType: "bool",
                        name: "executed",
                        type: "bool"
                    },
                ],
                internalType: "struct CompoundLens.GovProposal[]",
                name: "",
                type: "tuple[]"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "contract IGovernorAlpha",
                name: "governor",
                type: "address"
            },
            {
                internalType: "address",
                name: "voter",
                type: "address"
            },
            {
                internalType: "uint256[]",
                name: "proposalIds",
                type: "uint256[]"
            },
        ],
        name: "getGovReceipts",
        outputs: [
            {
                components: [
                    {
                        internalType: "uint256",
                        name: "proposalId",
                        type: "uint256"
                    },
                    {
                        internalType: "bool",
                        name: "hasVoted",
                        type: "bool"
                    },
                    {
                        internalType: "bool",
                        name: "support",
                        type: "bool"
                    },
                    {
                        internalType: "uint96",
                        name: "votes",
                        type: "uint96"
                    },
                ],
                internalType: "struct CompoundLens.GovReceipt[]",
                name: "",
                type: "tuple[]"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "address",
                name: "cToken",
                type: "address"
            },
            {
                internalType: "contract IComptroller",
                name: "comptroller",
                type: "address"
            },
        ],
        name: "isDeprecated",
        outputs: [
            {
                internalType: "bool",
                name: "",
                type: "bool"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
    {
        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"
            },
            {
                internalType: "contract IComptroller",
                name: "comptroller",
                type: "address"
            },
        ],
        name: "liquidateBorrowAllowed",
        outputs: [
            {
                internalType: "uint256",
                name: "",
                type: "uint256"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
    {
        inputs: [
            {
                internalType: "address",
                name: "cTokenBorrowed",
                type: "address"
            },
            {
                internalType: "address",
                name: "cTokenCollateral",
                type: "address"
            },
            {
                internalType: "uint256",
                name: "actualRepayAmount",
                type: "uint256"
            },
            {
                internalType: "contract IComptroller",
                name: "comptroller",
                type: "address"
            },
        ],
        name: "liquidateCalculateSeizeTokens",
        outputs: [
            {
                internalType: "uint256",
                name: "",
                type: "uint256"
            },
            {
                internalType: "uint256",
                name: "",
                type: "uint256"
            },
        ],
        stateMutability: "view",
        type: "function"
    },
];
var _bytecode = " ";
var CompoundLens__factory = /** @class */ (function (_super) {
    __extends(CompoundLens__factory, _super);
    function CompoundLens__factory() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
        }
        var _this = this;
        if (args.length === 1) {
            _this = _super.call(this, _abi, _bytecode, args[0]) || this;
        }
        else {
            _this = _super.apply(this, args) || this;
        }
        return _this;
    }
    CompoundLens__factory.prototype.deploy = function (overrides) {
        return _super.prototype.deploy.call(this, overrides || {});
    };
    CompoundLens__factory.prototype.getDeployTransaction = function (overrides) {
        return _super.prototype.getDeployTransaction.call(this, overrides || {});
    };
    CompoundLens__factory.prototype.attach = function (address) {
        return _super.prototype.attach.call(this, address);
    };
    CompoundLens__factory.prototype.connect = function (signer) {
        return _super.prototype.connect.call(this, signer);
    };
    CompoundLens__factory.createInterface = function () {
        return new ethers_1.utils.Interface(_abi);
    };
    CompoundLens__factory.connect = function (address, signerOrProvider) {
        return new ethers_1.Contract(address, _abi, signerOrProvider);
    };
    CompoundLens__factory.bytecode = _bytecode;
    CompoundLens__factory.abi = _abi;
    return CompoundLens__factory;
}(ethers_1.ContractFactory));
exports.CompoundLens__factory = CompoundLens__factory;
//# sourceMappingURL=CompoundLens__factory.js.map