"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MeshswapSinglePool__factory = void 0;
const ethers_1 = require("ethers");
const _abi = [
    {
        constant: true,
        inputs: [],
        name: 'name',
        outputs: [
            {
                name: '',
                type: 'string',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [],
        name: 'initPool',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: '_spender',
                type: 'address',
            },
            {
                name: '_value',
                type: 'uint256',
            },
        ],
        name: 'approve',
        outputs: [
            {
                name: '',
                type: 'bool',
            },
        ],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'user',
                type: 'address',
            },
            {
                name: 'plusPoolAddress',
                type: 'address',
            },
            {
                name: 'insurance',
                type: 'address',
            },
        ],
        name: 'transferDebt',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'totalSupply',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'exchangeRateStored',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'newReserveFactor',
                type: 'uint256',
            },
        ],
        name: 'setReserveFactor',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: '_from',
                type: 'address',
            },
            {
                name: '_to',
                type: 'address',
            },
            {
                name: '_value',
                type: 'uint256',
            },
        ],
        name: 'transferFrom',
        outputs: [
            {
                name: '',
                type: 'bool',
            },
        ],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'decimals',
        outputs: [
            {
                name: '',
                type: 'uint8',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [
            {
                name: '',
                type: 'address',
            },
        ],
        name: 'poolTotalBorrows',
        outputs: [
            {
                name: 'principal',
                type: 'uint256',
            },
            {
                name: 'interestIndex',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'getCash',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: '_mining',
                type: 'uint256',
            },
        ],
        name: 'changeMiningRate',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'reserveFactor',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'totalBorrows',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'singlePoolFactory',
        outputs: [
            {
                name: '',
                type: 'address',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'withdrawAmount',
                type: 'uint256',
            },
        ],
        name: 'withdrawToken',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'version',
        outputs: [
            {
                name: '',
                type: 'string',
            },
        ],
        payable: false,
        stateMutability: 'pure',
        type: 'function',
    },
    {
        constant: true,
        inputs: [
            {
                name: '',
                type: 'address',
            },
        ],
        name: 'userRewardSum',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [
            {
                name: 'poolAddress',
                type: 'address',
            },
        ],
        name: 'borrowBalancePoolTotal',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'depositAmount',
                type: 'uint256',
            },
        ],
        name: 'depositToken',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'mining',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'accrualBlockNumber',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'user',
                type: 'address',
            },
            {
                name: 'borrowAmount',
                type: 'uint256',
            },
            {
                name: 'plusPoolAddress',
                type: 'address',
            },
        ],
        name: 'borrow',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'admin',
                type: 'address',
            },
            {
                name: 'reduceAmount',
                type: 'uint256',
            },
        ],
        name: 'reduceReserves',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [
            {
                name: '',
                type: 'address',
            },
        ],
        name: 'balanceOf',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [
            {
                name: 'account',
                type: 'address',
            },
            {
                name: 'poolAddress',
                type: 'address',
            },
        ],
        name: 'borrowBalanceStored',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [],
        name: 'totalBorrowsCurrent',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'addAmount',
                type: 'uint256',
            },
        ],
        name: 'addReserves',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: true,
        stateMutability: 'payable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'newInterestRateModel',
                type: 'address',
            },
        ],
        name: 'setInterestRateModel',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'miningIndex',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'totalReserves',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'symbol',
        outputs: [
            {
                name: '',
                type: 'string',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [],
        name: 'accrueInterest',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'entered',
        outputs: [
            {
                name: '',
                type: 'bool',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: '_to',
                type: 'address',
            },
            {
                name: '_value',
                type: 'uint256',
            },
        ],
        name: 'transfer',
        outputs: [
            {
                name: '',
                type: 'bool',
            },
        ],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'borrowIndex',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'supplyRatePerBlock',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'lastMined',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'withdrawActive',
        outputs: [
            {
                name: '',
                type: 'bool',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [],
        name: 'claimReward',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [],
        name: 'exchangeRateCurrent',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [],
        name: 'updateMiningIndex',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'b',
                type: 'bool',
            },
        ],
        name: 'setDepositActive',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'withdrawTokens',
                type: 'uint256',
            },
        ],
        name: 'withdrawETHByAmount',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'depositActive',
        outputs: [
            {
                name: '',
                type: 'bool',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'withdrawTokens',
                type: 'uint256',
            },
        ],
        name: 'withdrawTokenByAmount',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [
            {
                name: '',
                type: 'address',
            },
            {
                name: '',
                type: 'address',
            },
        ],
        name: 'allowance',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'user',
                type: 'address',
            },
            {
                name: 'repayAmount',
                type: 'uint256',
            },
            {
                name: 'plusPoolAddress',
                type: 'address',
            },
            {
                name: 'spender',
                type: 'address',
            },
        ],
        name: 'repayToken',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [
            {
                name: 'account',
                type: 'address',
            },
            {
                name: 'poolAddress',
                type: 'address',
            },
        ],
        name: 'borrowBalanceInfo',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'account',
                type: 'address',
            },
            {
                name: 'poolAddress',
                type: 'address',
            },
        ],
        name: 'borrowBalanceCurrent',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [
            {
                name: '',
                type: 'address',
            },
        ],
        name: 'userLastIndex',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: '_singlePoolFactoryAddress',
                type: 'address',
            },
            {
                name: '_token',
                type: 'address',
            },
            {
                name: '_interestRateModelAddress',
                type: 'address',
            },
        ],
        name: '__SinglePool_init',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'withdrawAmount',
                type: 'uint256',
            },
        ],
        name: 'withdrawETH',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'interestRateModel',
        outputs: [
            {
                name: '',
                type: 'address',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [],
        name: 'depositETH',
        outputs: [],
        payable: true,
        stateMutability: 'payable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            {
                name: 'b',
                type: 'bool',
            },
        ],
        name: 'setWithdrawActive',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'borrowRatePerBlock',
        outputs: [
            {
                name: '',
                type: 'uint256',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'token',
        outputs: [
            {
                name: '',
                type: 'address',
            },
        ],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        payable: true,
        stateMutability: 'payable',
        type: 'fallback',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: '_mining',
                type: 'uint256',
            },
        ],
        name: 'ChangeMiningRate',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'lastMined',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'miningIndex',
                type: 'uint256',
            },
        ],
        name: 'UpdateMiningIndex',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'user',
                type: 'address',
            },
            {
                indexed: false,
                name: 'amount',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'lastIndex',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'rewardSum',
                type: 'uint256',
            },
        ],
        name: 'GiveReward',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'cashPrior',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'interestAccumulated',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'borrowIndex',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'totalBorrows',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'totalReserves',
                type: 'uint256',
            },
        ],
        name: 'AccrueInterest',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'user',
                type: 'address',
            },
            {
                indexed: false,
                name: 'depositAmount',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'depositTokens',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'totalAmount',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'totalSupply',
                type: 'uint256',
            },
        ],
        name: 'Deposit',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'user',
                type: 'address',
            },
            {
                indexed: false,
                name: 'withdrawAmount',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'withdrawTokens',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'totalAmount',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'totalSupply',
                type: 'uint256',
            },
        ],
        name: 'Withdraw',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'user',
                type: 'address',
            },
            {
                indexed: false,
                name: 'plusPoolAddress',
                type: 'address',
            },
            {
                indexed: false,
                name: 'borrowAmount',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'accountBorrows',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'totalBorrows',
                type: 'uint256',
            },
        ],
        name: 'Borrow',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'user',
                type: 'address',
            },
            {
                indexed: false,
                name: 'plusPoolAddress',
                type: 'address',
            },
            {
                indexed: false,
                name: 'repayAmount',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'accountBorrows',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'totalBorrows',
                type: 'uint256',
            },
        ],
        name: 'Repay',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'user',
                type: 'address',
            },
            {
                indexed: false,
                name: 'plusPoolAddress',
                type: 'address',
            },
            {
                indexed: false,
                name: 'insurance',
                type: 'address',
            },
            {
                indexed: false,
                name: 'userDebt',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'insuranceDebtBefore',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'insuranceDebt',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'borrowIndex',
                type: 'uint256',
            },
        ],
        name: 'TransferDebt',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'oldReserveFactor',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'newReserveFactor',
                type: 'uint256',
            },
        ],
        name: 'NewReserveFactor',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'user',
                type: 'address',
            },
            {
                indexed: false,
                name: 'addAmount',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'newTotalReserves',
                type: 'uint256',
            },
        ],
        name: 'ReservesAdded',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'admin',
                type: 'address',
            },
            {
                indexed: false,
                name: 'reduceAmount',
                type: 'uint256',
            },
            {
                indexed: false,
                name: 'newTotalReserves',
                type: 'uint256',
            },
        ],
        name: 'ReservesReduced',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                name: 'oldInterestRateModel',
                type: 'address',
            },
            {
                indexed: false,
                name: 'newInterestRateModel',
                type: 'address',
            },
        ],
        name: 'NewMarketInterestRateModel',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                name: 'from',
                type: 'address',
            },
            {
                indexed: true,
                name: 'to',
                type: 'address',
            },
            {
                indexed: false,
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'Transfer',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                name: 'holder',
                type: 'address',
            },
            {
                indexed: true,
                name: 'spender',
                type: 'address',
            },
            {
                indexed: false,
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'Approval',
        type: 'event',
    },
];
class MeshswapSinglePool__factory {
    static createInterface() {
        return new ethers_1.utils.Interface(_abi);
    }
    static connect(address, signerOrProvider) {
        return new ethers_1.Contract(address, _abi, signerOrProvider);
    }
}
exports.MeshswapSinglePool__factory = MeshswapSinglePool__factory;
MeshswapSinglePool__factory.abi = _abi;
//# sourceMappingURL=MeshswapSinglePool__factory.js.map