import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common';
export interface ERC20PoolInterface extends utils.Interface {
    functions: {
        'addCollateral(uint256,uint256,uint256)': FunctionFragment;
        'addQuoteToken(uint256,uint256,uint256)': FunctionFragment;
        'approveLPTransferors(address[])': FunctionFragment;
        'approvedTransferors(address,address)': FunctionFragment;
        'auctionInfo(address)': FunctionFragment;
        'borrowerInfo(address)': FunctionFragment;
        'bucketCollateralDust(uint256)': FunctionFragment;
        'bucketExchangeRate(uint256)': FunctionFragment;
        'bucketInfo(uint256)': FunctionFragment;
        'bucketTake(address,bool,uint256)': FunctionFragment;
        'burnInfo(uint256)': FunctionFragment;
        'collateralAddress()': FunctionFragment;
        'collateralScale()': FunctionFragment;
        'currentBurnEpoch()': FunctionFragment;
        'debtInfo()': FunctionFragment;
        'decreaseLPAllowance(address,uint256[],uint256[])': FunctionFragment;
        'depositIndex(uint256)': FunctionFragment;
        'depositScale(uint256)': FunctionFragment;
        'depositSize()': FunctionFragment;
        'depositUpToIndex(uint256)': FunctionFragment;
        'depositUtilization()': FunctionFragment;
        'drawDebt(address,uint256,uint256,uint256)': FunctionFragment;
        'emasInfo()': FunctionFragment;
        'flashFee(address,uint256)': FunctionFragment;
        'flashLoan(address,address,uint256,bytes)': FunctionFragment;
        'increaseLPAllowance(address,uint256[],uint256[])': FunctionFragment;
        'inflatorInfo()': FunctionFragment;
        'initialize(uint256)': FunctionFragment;
        'interestRateInfo()': FunctionFragment;
        'kick(address,uint256)': FunctionFragment;
        'kickReserveAuction()': FunctionFragment;
        'kickerInfo(address)': FunctionFragment;
        'lenderInfo(uint256,address)': FunctionFragment;
        'lenderKick(uint256,uint256)': FunctionFragment;
        'loanInfo(uint256)': FunctionFragment;
        'loansInfo()': FunctionFragment;
        'lpAllowance(uint256,address,address)': FunctionFragment;
        'maxFlashLoan(address)': FunctionFragment;
        'moveQuoteToken(uint256,uint256,uint256,uint256)': FunctionFragment;
        'multicall(bytes[])': FunctionFragment;
        'pledgedCollateral()': FunctionFragment;
        'poolType()': FunctionFragment;
        'quoteTokenAddress()': FunctionFragment;
        'quoteTokenScale()': FunctionFragment;
        'removeCollateral(uint256,uint256)': FunctionFragment;
        'removeQuoteToken(uint256,uint256)': FunctionFragment;
        'repayDebt(address,uint256,uint256,address,uint256)': FunctionFragment;
        'reservesInfo()': FunctionFragment;
        'revokeLPAllowance(address,uint256[])': FunctionFragment;
        'revokeLPTransferors(address[])': FunctionFragment;
        'settle(address,uint256)': FunctionFragment;
        'stampLoan()': FunctionFragment;
        'take(address,uint256,address,bytes)': FunctionFragment;
        'takeReserves(uint256)': FunctionFragment;
        'totalAuctionsInPool()': FunctionFragment;
        'totalT0Debt()': FunctionFragment;
        'totalT0DebtInAuction()': FunctionFragment;
        'transferLP(address,address,uint256[])': FunctionFragment;
        'updateInterest()': FunctionFragment;
        'withdrawBonds(address,uint256)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'addCollateral' | 'addQuoteToken' | 'approveLPTransferors' | 'approvedTransferors' | 'auctionInfo' | 'borrowerInfo' | 'bucketCollateralDust' | 'bucketExchangeRate' | 'bucketInfo' | 'bucketTake' | 'burnInfo' | 'collateralAddress' | 'collateralScale' | 'currentBurnEpoch' | 'debtInfo' | 'decreaseLPAllowance' | 'depositIndex' | 'depositScale' | 'depositSize' | 'depositUpToIndex' | 'depositUtilization' | 'drawDebt' | 'emasInfo' | 'flashFee' | 'flashLoan' | 'increaseLPAllowance' | 'inflatorInfo' | 'initialize' | 'interestRateInfo' | 'kick' | 'kickReserveAuction' | 'kickerInfo' | 'lenderInfo' | 'lenderKick' | 'loanInfo' | 'loansInfo' | 'lpAllowance' | 'maxFlashLoan' | 'moveQuoteToken' | 'multicall' | 'pledgedCollateral' | 'poolType' | 'quoteTokenAddress' | 'quoteTokenScale' | 'removeCollateral' | 'removeQuoteToken' | 'repayDebt' | 'reservesInfo' | 'revokeLPAllowance' | 'revokeLPTransferors' | 'settle' | 'stampLoan' | 'take' | 'takeReserves' | 'totalAuctionsInPool' | 'totalT0Debt' | 'totalT0DebtInAuction' | 'transferLP' | 'updateInterest' | 'withdrawBonds'): FunctionFragment;
    encodeFunctionData(functionFragment: 'addCollateral', values: [BigNumberish, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'addQuoteToken', values: [BigNumberish, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'approveLPTransferors', values: [string[]]): string;
    encodeFunctionData(functionFragment: 'approvedTransferors', values: [string, string]): string;
    encodeFunctionData(functionFragment: 'auctionInfo', values: [string]): string;
    encodeFunctionData(functionFragment: 'borrowerInfo', values: [string]): string;
    encodeFunctionData(functionFragment: 'bucketCollateralDust', values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: 'bucketExchangeRate', values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: 'bucketInfo', values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: 'bucketTake', values: [string, boolean, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'burnInfo', values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: 'collateralAddress', values?: undefined): string;
    encodeFunctionData(functionFragment: 'collateralScale', values?: undefined): string;
    encodeFunctionData(functionFragment: 'currentBurnEpoch', values?: undefined): string;
    encodeFunctionData(functionFragment: 'debtInfo', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decreaseLPAllowance', values: [string, BigNumberish[], BigNumberish[]]): string;
    encodeFunctionData(functionFragment: 'depositIndex', values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: 'depositScale', values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: 'depositSize', values?: undefined): string;
    encodeFunctionData(functionFragment: 'depositUpToIndex', values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: 'depositUtilization', values?: undefined): string;
    encodeFunctionData(functionFragment: 'drawDebt', values: [string, BigNumberish, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'emasInfo', values?: undefined): string;
    encodeFunctionData(functionFragment: 'flashFee', values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'flashLoan', values: [string, string, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: 'increaseLPAllowance', values: [string, BigNumberish[], BigNumberish[]]): string;
    encodeFunctionData(functionFragment: 'inflatorInfo', values?: undefined): string;
    encodeFunctionData(functionFragment: 'initialize', values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: 'interestRateInfo', values?: undefined): string;
    encodeFunctionData(functionFragment: 'kick', values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'kickReserveAuction', values?: undefined): string;
    encodeFunctionData(functionFragment: 'kickerInfo', values: [string]): string;
    encodeFunctionData(functionFragment: 'lenderInfo', values: [BigNumberish, string]): string;
    encodeFunctionData(functionFragment: 'lenderKick', values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'loanInfo', values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: 'loansInfo', values?: undefined): string;
    encodeFunctionData(functionFragment: 'lpAllowance', values: [BigNumberish, string, string]): string;
    encodeFunctionData(functionFragment: 'maxFlashLoan', values: [string]): string;
    encodeFunctionData(functionFragment: 'moveQuoteToken', values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'multicall', values: [BytesLike[]]): string;
    encodeFunctionData(functionFragment: 'pledgedCollateral', values?: undefined): string;
    encodeFunctionData(functionFragment: 'poolType', values?: undefined): string;
    encodeFunctionData(functionFragment: 'quoteTokenAddress', values?: undefined): string;
    encodeFunctionData(functionFragment: 'quoteTokenScale', values?: undefined): string;
    encodeFunctionData(functionFragment: 'removeCollateral', values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'removeQuoteToken', values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'repayDebt', values: [string, BigNumberish, BigNumberish, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'reservesInfo', values?: undefined): string;
    encodeFunctionData(functionFragment: 'revokeLPAllowance', values: [string, BigNumberish[]]): string;
    encodeFunctionData(functionFragment: 'revokeLPTransferors', values: [string[]]): string;
    encodeFunctionData(functionFragment: 'settle', values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'stampLoan', values?: undefined): string;
    encodeFunctionData(functionFragment: 'take', values: [string, BigNumberish, string, BytesLike]): string;
    encodeFunctionData(functionFragment: 'takeReserves', values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: 'totalAuctionsInPool', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalT0Debt', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalT0DebtInAuction', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transferLP', values: [string, string, BigNumberish[]]): string;
    encodeFunctionData(functionFragment: 'updateInterest', values?: undefined): string;
    encodeFunctionData(functionFragment: 'withdrawBonds', values: [string, BigNumberish]): string;
    decodeFunctionResult(functionFragment: 'addCollateral', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addQuoteToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'approveLPTransferors', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'approvedTransferors', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'auctionInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrowerInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'bucketCollateralDust', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'bucketExchangeRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'bucketInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'bucketTake', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'burnInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'collateralAddress', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'collateralScale', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'currentBurnEpoch', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'debtInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decreaseLPAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositIndex', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositScale', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositSize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositUpToIndex', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositUtilization', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'drawDebt', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'emasInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'flashFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'flashLoan', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'increaseLPAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'inflatorInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'interestRateInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'kick', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'kickReserveAuction', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'kickerInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lenderInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lenderKick', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'loanInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'loansInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lpAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'maxFlashLoan', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'moveQuoteToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'multicall', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pledgedCollateral', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'poolType', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'quoteTokenAddress', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'quoteTokenScale', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeCollateral', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeQuoteToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'repayDebt', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'reservesInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'revokeLPAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'revokeLPTransferors', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'settle', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stampLoan', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'take', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'takeReserves', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalAuctionsInPool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalT0Debt', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalT0DebtInAuction', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferLP', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateInterest', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawBonds', data: BytesLike): Result;
    events: {
        'AddCollateral(address,uint256,uint256,uint256)': EventFragment;
        'AddQuoteToken(address,uint256,uint256,uint256,uint256)': EventFragment;
        'ApproveLPTransferors(address,address[])': EventFragment;
        'AuctionNFTSettle(address,uint256,uint256,uint256)': EventFragment;
        'AuctionSettle(address,uint256)': EventFragment;
        'BondWithdrawn(address,address,uint256)': EventFragment;
        'BucketBankruptcy(uint256,uint256)': EventFragment;
        'BucketTake(address,uint256,uint256,uint256,uint256,bool)': EventFragment;
        'BucketTakeLPAwarded(address,address,uint256,uint256)': EventFragment;
        'DecreaseLPAllowance(address,address,uint256[],uint256[])': EventFragment;
        'DrawDebt(address,uint256,uint256,uint256)': EventFragment;
        'Flashloan(address,address,uint256)': EventFragment;
        'IncreaseLPAllowance(address,address,uint256[],uint256[])': EventFragment;
        'InterestUpdateFailure()': EventFragment;
        'Kick(address,uint256,uint256,uint256)': EventFragment;
        'KickReserveAuction(uint256,uint256,uint256)': EventFragment;
        'LoanStamped(address)': EventFragment;
        'MoveQuoteToken(address,uint256,uint256,uint256,uint256,uint256,uint256)': EventFragment;
        'RemoveCollateral(address,uint256,uint256,uint256)': EventFragment;
        'RemoveQuoteToken(address,uint256,uint256,uint256,uint256)': EventFragment;
        'RepayDebt(address,uint256,uint256,uint256)': EventFragment;
        'ReserveAuction(uint256,uint256,uint256)': EventFragment;
        'ResetInterestRate(uint256,uint256)': EventFragment;
        'RevokeLPAllowance(address,address,uint256[])': EventFragment;
        'RevokeLPTransferors(address,address[])': EventFragment;
        'Settle(address,uint256)': EventFragment;
        'Take(address,uint256,uint256,uint256,bool)': EventFragment;
        'TransferLP(address,address,uint256[],uint256)': EventFragment;
        'UpdateInterestRate(uint256,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'AddCollateral'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'AddQuoteToken'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ApproveLPTransferors'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'AuctionNFTSettle'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'AuctionSettle'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'BondWithdrawn'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'BucketBankruptcy'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'BucketTake'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'BucketTakeLPAwarded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'DecreaseLPAllowance'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'DrawDebt'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Flashloan'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'IncreaseLPAllowance'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'InterestUpdateFailure'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Kick'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'KickReserveAuction'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LoanStamped'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'MoveQuoteToken'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RemoveCollateral'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RemoveQuoteToken'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RepayDebt'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ReserveAuction'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ResetInterestRate'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RevokeLPAllowance'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RevokeLPTransferors'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Settle'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Take'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'TransferLP'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdateInterestRate'): EventFragment;
}
export interface AddCollateralEventObject {
    actor: string;
    index: BigNumber;
    amount: BigNumber;
    lpAwarded: BigNumber;
}
export type AddCollateralEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber
], AddCollateralEventObject>;
export type AddCollateralEventFilter = TypedEventFilter<AddCollateralEvent>;
export interface AddQuoteTokenEventObject {
    lender: string;
    index: BigNumber;
    amount: BigNumber;
    lpAwarded: BigNumber;
    lup: BigNumber;
}
export type AddQuoteTokenEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], AddQuoteTokenEventObject>;
export type AddQuoteTokenEventFilter = TypedEventFilter<AddQuoteTokenEvent>;
export interface ApproveLPTransferorsEventObject {
    lender: string;
    transferors: string[];
}
export type ApproveLPTransferorsEvent = TypedEvent<[
    string,
    string[]
], ApproveLPTransferorsEventObject>;
export type ApproveLPTransferorsEventFilter = TypedEventFilter<ApproveLPTransferorsEvent>;
export interface AuctionNFTSettleEventObject {
    borrower: string;
    collateral: BigNumber;
    lp: BigNumber;
    index: BigNumber;
}
export type AuctionNFTSettleEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber
], AuctionNFTSettleEventObject>;
export type AuctionNFTSettleEventFilter = TypedEventFilter<AuctionNFTSettleEvent>;
export interface AuctionSettleEventObject {
    borrower: string;
    collateral: BigNumber;
}
export type AuctionSettleEvent = TypedEvent<[string, BigNumber], AuctionSettleEventObject>;
export type AuctionSettleEventFilter = TypedEventFilter<AuctionSettleEvent>;
export interface BondWithdrawnEventObject {
    kicker: string;
    reciever: string;
    amount: BigNumber;
}
export type BondWithdrawnEvent = TypedEvent<[string, string, BigNumber], BondWithdrawnEventObject>;
export type BondWithdrawnEventFilter = TypedEventFilter<BondWithdrawnEvent>;
export interface BucketBankruptcyEventObject {
    index: BigNumber;
    lpForfeited: BigNumber;
}
export type BucketBankruptcyEvent = TypedEvent<[BigNumber, BigNumber], BucketBankruptcyEventObject>;
export type BucketBankruptcyEventFilter = TypedEventFilter<BucketBankruptcyEvent>;
export interface BucketTakeEventObject {
    borrower: string;
    index: BigNumber;
    amount: BigNumber;
    collateral: BigNumber;
    bondChange: BigNumber;
    isReward: boolean;
}
export type BucketTakeEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    boolean
], BucketTakeEventObject>;
export type BucketTakeEventFilter = TypedEventFilter<BucketTakeEvent>;
export interface BucketTakeLPAwardedEventObject {
    taker: string;
    kicker: string;
    lpAwardedTaker: BigNumber;
    lpAwardedKicker: BigNumber;
}
export type BucketTakeLPAwardedEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber
], BucketTakeLPAwardedEventObject>;
export type BucketTakeLPAwardedEventFilter = TypedEventFilter<BucketTakeLPAwardedEvent>;
export interface DecreaseLPAllowanceEventObject {
    owner: string;
    spender: string;
    indexes: BigNumber[];
    amounts: BigNumber[];
}
export type DecreaseLPAllowanceEvent = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber[]
], DecreaseLPAllowanceEventObject>;
export type DecreaseLPAllowanceEventFilter = TypedEventFilter<DecreaseLPAllowanceEvent>;
export interface DrawDebtEventObject {
    borrower: string;
    amountBorrowed: BigNumber;
    collateralPledged: BigNumber;
    lup: BigNumber;
}
export type DrawDebtEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber
], DrawDebtEventObject>;
export type DrawDebtEventFilter = TypedEventFilter<DrawDebtEvent>;
export interface FlashloanEventObject {
    receiver: string;
    token: string;
    amount: BigNumber;
}
export type FlashloanEvent = TypedEvent<[string, string, BigNumber], FlashloanEventObject>;
export type FlashloanEventFilter = TypedEventFilter<FlashloanEvent>;
export interface IncreaseLPAllowanceEventObject {
    owner: string;
    spender: string;
    indexes: BigNumber[];
    amounts: BigNumber[];
}
export type IncreaseLPAllowanceEvent = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber[]
], IncreaseLPAllowanceEventObject>;
export type IncreaseLPAllowanceEventFilter = TypedEventFilter<IncreaseLPAllowanceEvent>;
export interface InterestUpdateFailureEventObject {
}
export type InterestUpdateFailureEvent = TypedEvent<[], InterestUpdateFailureEventObject>;
export type InterestUpdateFailureEventFilter = TypedEventFilter<InterestUpdateFailureEvent>;
export interface KickEventObject {
    borrower: string;
    debt: BigNumber;
    collateral: BigNumber;
    bond: BigNumber;
}
export type KickEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], KickEventObject>;
export type KickEventFilter = TypedEventFilter<KickEvent>;
export interface KickReserveAuctionEventObject {
    claimableReservesRemaining: BigNumber;
    auctionPrice: BigNumber;
    currentBurnEpoch: BigNumber;
}
export type KickReserveAuctionEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber
], KickReserveAuctionEventObject>;
export type KickReserveAuctionEventFilter = TypedEventFilter<KickReserveAuctionEvent>;
export interface LoanStampedEventObject {
    borrower: string;
}
export type LoanStampedEvent = TypedEvent<[string], LoanStampedEventObject>;
export type LoanStampedEventFilter = TypedEventFilter<LoanStampedEvent>;
export interface MoveQuoteTokenEventObject {
    lender: string;
    from: BigNumber;
    to: BigNumber;
    amount: BigNumber;
    lpRedeemedFrom: BigNumber;
    lpAwardedTo: BigNumber;
    lup: BigNumber;
}
export type MoveQuoteTokenEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], MoveQuoteTokenEventObject>;
export type MoveQuoteTokenEventFilter = TypedEventFilter<MoveQuoteTokenEvent>;
export interface RemoveCollateralEventObject {
    claimer: string;
    index: BigNumber;
    amount: BigNumber;
    lpRedeemed: BigNumber;
}
export type RemoveCollateralEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber
], RemoveCollateralEventObject>;
export type RemoveCollateralEventFilter = TypedEventFilter<RemoveCollateralEvent>;
export interface RemoveQuoteTokenEventObject {
    lender: string;
    index: BigNumber;
    amount: BigNumber;
    lpRedeemed: BigNumber;
    lup: BigNumber;
}
export type RemoveQuoteTokenEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], RemoveQuoteTokenEventObject>;
export type RemoveQuoteTokenEventFilter = TypedEventFilter<RemoveQuoteTokenEvent>;
export interface RepayDebtEventObject {
    borrower: string;
    quoteRepaid: BigNumber;
    collateralPulled: BigNumber;
    lup: BigNumber;
}
export type RepayDebtEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber
], RepayDebtEventObject>;
export type RepayDebtEventFilter = TypedEventFilter<RepayDebtEvent>;
export interface ReserveAuctionEventObject {
    claimableReservesRemaining: BigNumber;
    auctionPrice: BigNumber;
    currentBurnEpoch: BigNumber;
}
export type ReserveAuctionEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber
], ReserveAuctionEventObject>;
export type ReserveAuctionEventFilter = TypedEventFilter<ReserveAuctionEvent>;
export interface ResetInterestRateEventObject {
    oldRate: BigNumber;
    newRate: BigNumber;
}
export type ResetInterestRateEvent = TypedEvent<[
    BigNumber,
    BigNumber
], ResetInterestRateEventObject>;
export type ResetInterestRateEventFilter = TypedEventFilter<ResetInterestRateEvent>;
export interface RevokeLPAllowanceEventObject {
    owner: string;
    spender: string;
    indexes: BigNumber[];
}
export type RevokeLPAllowanceEvent = TypedEvent<[
    string,
    string,
    BigNumber[]
], RevokeLPAllowanceEventObject>;
export type RevokeLPAllowanceEventFilter = TypedEventFilter<RevokeLPAllowanceEvent>;
export interface RevokeLPTransferorsEventObject {
    lender: string;
    transferors: string[];
}
export type RevokeLPTransferorsEvent = TypedEvent<[
    string,
    string[]
], RevokeLPTransferorsEventObject>;
export type RevokeLPTransferorsEventFilter = TypedEventFilter<RevokeLPTransferorsEvent>;
export interface SettleEventObject {
    borrower: string;
    settledDebt: BigNumber;
}
export type SettleEvent = TypedEvent<[string, BigNumber], SettleEventObject>;
export type SettleEventFilter = TypedEventFilter<SettleEvent>;
export interface TakeEventObject {
    borrower: string;
    amount: BigNumber;
    collateral: BigNumber;
    bondChange: BigNumber;
    isReward: boolean;
}
export type TakeEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    boolean
], TakeEventObject>;
export type TakeEventFilter = TypedEventFilter<TakeEvent>;
export interface TransferLPEventObject {
    owner: string;
    newOwner: string;
    indexes: BigNumber[];
    lp: BigNumber;
}
export type TransferLPEvent = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber
], TransferLPEventObject>;
export type TransferLPEventFilter = TypedEventFilter<TransferLPEvent>;
export interface UpdateInterestRateEventObject {
    oldRate: BigNumber;
    newRate: BigNumber;
}
export type UpdateInterestRateEvent = TypedEvent<[
    BigNumber,
    BigNumber
], UpdateInterestRateEventObject>;
export type UpdateInterestRateEventFilter = TypedEventFilter<UpdateInterestRateEvent>;
export interface ERC20Pool extends BaseContract {
    contractName: 'ERC20Pool';
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ERC20PoolInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        addCollateral(amountToAdd_: BigNumberish, index_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        addQuoteToken(amount_: BigNumberish, index_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        approveLPTransferors(transferors_: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        approvedTransferors(arg0: string, arg1: string, overrides?: CallOverrides): Promise<[boolean]>;
        auctionInfo(borrower_: string, overrides?: CallOverrides): Promise<[
            string,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            string,
            string,
            string
        ] & {
            kicker_: string;
            bondFactor_: BigNumber;
            bondSize_: BigNumber;
            kickTime_: BigNumber;
            referencePrice_: BigNumber;
            neutralPrice_: BigNumber;
            debtToCollateral_: BigNumber;
            head_: string;
            next_: string;
            prev_: string;
        }>;
        borrowerInfo(borrower_: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber]>;
        bucketCollateralDust(bucketIndex_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        bucketExchangeRate(index_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & {
            exchangeRate_: BigNumber;
        }>;
        bucketInfo(index_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber, BigNumber]>;
        bucketTake(borrowerAddress_: string, depositTake_: boolean, index_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        burnInfo(burnEventEpoch_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber]>;
        collateralAddress(overrides?: CallOverrides): Promise<[string]>;
        collateralScale(overrides?: CallOverrides): Promise<[BigNumber]>;
        currentBurnEpoch(overrides?: CallOverrides): Promise<[BigNumber]>;
        debtInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
        decreaseLPAllowance(spender_: string, indexes_: BigNumberish[], amounts_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        depositIndex(debt_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        depositScale(index_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        depositSize(overrides?: CallOverrides): Promise<[BigNumber]>;
        depositUpToIndex(index_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        depositUtilization(overrides?: CallOverrides): Promise<[BigNumber]>;
        drawDebt(borrowerAddress_: string, amountToBorrow_: BigNumberish, limitIndex_: BigNumberish, collateralToPledge_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        emasInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
        flashFee(token_: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        flashLoan(receiver_: string, token_: string, amount_: BigNumberish, data_: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        increaseLPAllowance(spender_: string, indexes_: BigNumberish[], amounts_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        inflatorInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        initialize(rate_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        interestRateInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        kick(borrower_: string, npLimitIndex_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        kickReserveAuction(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        kickerInfo(kicker_: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        lenderInfo(index_: BigNumberish, lender_: string, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            lpBalance_: BigNumber;
            depositTime_: BigNumber;
        }>;
        lenderKick(index_: BigNumberish, npLimitIndex_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        loanInfo(loanId_: BigNumberish, overrides?: CallOverrides): Promise<[string, BigNumber]>;
        loansInfo(overrides?: CallOverrides): Promise<[string, BigNumber, BigNumber]>;
        lpAllowance(index_: BigNumberish, spender_: string, owner_: string, overrides?: CallOverrides): Promise<[BigNumber] & {
            allowance_: BigNumber;
        }>;
        maxFlashLoan(token_: string, overrides?: CallOverrides): Promise<[BigNumber] & {
            maxLoan_: BigNumber;
        }>;
        moveQuoteToken(maxAmount_: BigNumberish, fromIndex_: BigNumberish, toIndex_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        multicall(data: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        pledgedCollateral(overrides?: CallOverrides): Promise<[BigNumber]>;
        poolType(overrides?: CallOverrides): Promise<[number]>;
        quoteTokenAddress(overrides?: CallOverrides): Promise<[string]>;
        quoteTokenScale(overrides?: CallOverrides): Promise<[BigNumber]>;
        removeCollateral(maxAmount_: BigNumberish, index_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        removeQuoteToken(maxAmount_: BigNumberish, index_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        repayDebt(borrowerAddress_: string, maxQuoteTokenAmountToRepay_: BigNumberish, collateralAmountToPull_: BigNumberish, collateralReceiver_: string, limitIndex_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        reservesInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber, BigNumber]>;
        revokeLPAllowance(spender_: string, indexes_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        revokeLPTransferors(transferors_: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        settle(borrowerAddress_: string, maxDepth_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        stampLoan(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        take(borrowerAddress_: string, maxAmount_: BigNumberish, callee_: string, data_: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        takeReserves(maxAmount_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        totalAuctionsInPool(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalT0Debt(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalT0DebtInAuction(overrides?: CallOverrides): Promise<[BigNumber]>;
        transferLP(owner_: string, newOwner_: string, indexes_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        updateInterest(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        withdrawBonds(recipient_: string, maxAmount_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    addCollateral(amountToAdd_: BigNumberish, index_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    addQuoteToken(amount_: BigNumberish, index_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    approveLPTransferors(transferors_: string[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    approvedTransferors(arg0: string, arg1: string, overrides?: CallOverrides): Promise<boolean>;
    auctionInfo(borrower_: string, overrides?: CallOverrides): Promise<[
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        string,
        string
    ] & {
        kicker_: string;
        bondFactor_: BigNumber;
        bondSize_: BigNumber;
        kickTime_: BigNumber;
        referencePrice_: BigNumber;
        neutralPrice_: BigNumber;
        debtToCollateral_: BigNumber;
        head_: string;
        next_: string;
        prev_: string;
    }>;
    borrowerInfo(borrower_: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber]>;
    bucketCollateralDust(bucketIndex_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    bucketExchangeRate(index_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    bucketInfo(index_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber, BigNumber]>;
    bucketTake(borrowerAddress_: string, depositTake_: boolean, index_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    burnInfo(burnEventEpoch_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber]>;
    collateralAddress(overrides?: CallOverrides): Promise<string>;
    collateralScale(overrides?: CallOverrides): Promise<BigNumber>;
    currentBurnEpoch(overrides?: CallOverrides): Promise<BigNumber>;
    debtInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
    decreaseLPAllowance(spender_: string, indexes_: BigNumberish[], amounts_: BigNumberish[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    depositIndex(debt_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    depositScale(index_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    depositSize(overrides?: CallOverrides): Promise<BigNumber>;
    depositUpToIndex(index_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    depositUtilization(overrides?: CallOverrides): Promise<BigNumber>;
    drawDebt(borrowerAddress_: string, amountToBorrow_: BigNumberish, limitIndex_: BigNumberish, collateralToPledge_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    emasInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
    flashFee(token_: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    flashLoan(receiver_: string, token_: string, amount_: BigNumberish, data_: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    increaseLPAllowance(spender_: string, indexes_: BigNumberish[], amounts_: BigNumberish[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    inflatorInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    initialize(rate_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    interestRateInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    kick(borrower_: string, npLimitIndex_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    kickReserveAuction(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    kickerInfo(kicker_: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    lenderInfo(index_: BigNumberish, lender_: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        lpBalance_: BigNumber;
        depositTime_: BigNumber;
    }>;
    lenderKick(index_: BigNumberish, npLimitIndex_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    loanInfo(loanId_: BigNumberish, overrides?: CallOverrides): Promise<[string, BigNumber]>;
    loansInfo(overrides?: CallOverrides): Promise<[string, BigNumber, BigNumber]>;
    lpAllowance(index_: BigNumberish, spender_: string, owner_: string, overrides?: CallOverrides): Promise<BigNumber>;
    maxFlashLoan(token_: string, overrides?: CallOverrides): Promise<BigNumber>;
    moveQuoteToken(maxAmount_: BigNumberish, fromIndex_: BigNumberish, toIndex_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    multicall(data: BytesLike[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    pledgedCollateral(overrides?: CallOverrides): Promise<BigNumber>;
    poolType(overrides?: CallOverrides): Promise<number>;
    quoteTokenAddress(overrides?: CallOverrides): Promise<string>;
    quoteTokenScale(overrides?: CallOverrides): Promise<BigNumber>;
    removeCollateral(maxAmount_: BigNumberish, index_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    removeQuoteToken(maxAmount_: BigNumberish, index_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    repayDebt(borrowerAddress_: string, maxQuoteTokenAmountToRepay_: BigNumberish, collateralAmountToPull_: BigNumberish, collateralReceiver_: string, limitIndex_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    reservesInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber, BigNumber]>;
    revokeLPAllowance(spender_: string, indexes_: BigNumberish[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    revokeLPTransferors(transferors_: string[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    settle(borrowerAddress_: string, maxDepth_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    stampLoan(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    take(borrowerAddress_: string, maxAmount_: BigNumberish, callee_: string, data_: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    takeReserves(maxAmount_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    totalAuctionsInPool(overrides?: CallOverrides): Promise<BigNumber>;
    totalT0Debt(overrides?: CallOverrides): Promise<BigNumber>;
    totalT0DebtInAuction(overrides?: CallOverrides): Promise<BigNumber>;
    transferLP(owner_: string, newOwner_: string, indexes_: BigNumberish[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    updateInterest(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    withdrawBonds(recipient_: string, maxAmount_: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        addCollateral(amountToAdd_: BigNumberish, index_: BigNumberish, expiry_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        addQuoteToken(amount_: BigNumberish, index_: BigNumberish, expiry_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            bucketLP_: BigNumber;
            addedAmount_: BigNumber;
        }>;
        approveLPTransferors(transferors_: string[], overrides?: CallOverrides): Promise<void>;
        approvedTransferors(arg0: string, arg1: string, overrides?: CallOverrides): Promise<boolean>;
        auctionInfo(borrower_: string, overrides?: CallOverrides): Promise<[
            string,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            string,
            string,
            string
        ] & {
            kicker_: string;
            bondFactor_: BigNumber;
            bondSize_: BigNumber;
            kickTime_: BigNumber;
            referencePrice_: BigNumber;
            neutralPrice_: BigNumber;
            debtToCollateral_: BigNumber;
            head_: string;
            next_: string;
            prev_: string;
        }>;
        borrowerInfo(borrower_: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber]>;
        bucketCollateralDust(bucketIndex_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        bucketExchangeRate(index_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        bucketInfo(index_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber, BigNumber]>;
        bucketTake(borrowerAddress_: string, depositTake_: boolean, index_: BigNumberish, overrides?: CallOverrides): Promise<void>;
        burnInfo(burnEventEpoch_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber]>;
        collateralAddress(overrides?: CallOverrides): Promise<string>;
        collateralScale(overrides?: CallOverrides): Promise<BigNumber>;
        currentBurnEpoch(overrides?: CallOverrides): Promise<BigNumber>;
        debtInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
        decreaseLPAllowance(spender_: string, indexes_: BigNumberish[], amounts_: BigNumberish[], overrides?: CallOverrides): Promise<void>;
        depositIndex(debt_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        depositScale(index_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        depositSize(overrides?: CallOverrides): Promise<BigNumber>;
        depositUpToIndex(index_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        depositUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        drawDebt(borrowerAddress_: string, amountToBorrow_: BigNumberish, limitIndex_: BigNumberish, collateralToPledge_: BigNumberish, overrides?: CallOverrides): Promise<void>;
        emasInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
        flashFee(token_: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        flashLoan(receiver_: string, token_: string, amount_: BigNumberish, data_: BytesLike, overrides?: CallOverrides): Promise<boolean>;
        increaseLPAllowance(spender_: string, indexes_: BigNumberish[], amounts_: BigNumberish[], overrides?: CallOverrides): Promise<void>;
        inflatorInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        initialize(rate_: BigNumberish, overrides?: CallOverrides): Promise<void>;
        interestRateInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        kick(borrower_: string, npLimitIndex_: BigNumberish, overrides?: CallOverrides): Promise<void>;
        kickReserveAuction(overrides?: CallOverrides): Promise<void>;
        kickerInfo(kicker_: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        lenderInfo(index_: BigNumberish, lender_: string, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            lpBalance_: BigNumber;
            depositTime_: BigNumber;
        }>;
        lenderKick(index_: BigNumberish, npLimitIndex_: BigNumberish, overrides?: CallOverrides): Promise<void>;
        loanInfo(loanId_: BigNumberish, overrides?: CallOverrides): Promise<[string, BigNumber]>;
        loansInfo(overrides?: CallOverrides): Promise<[string, BigNumber, BigNumber]>;
        lpAllowance(index_: BigNumberish, spender_: string, owner_: string, overrides?: CallOverrides): Promise<BigNumber>;
        maxFlashLoan(token_: string, overrides?: CallOverrides): Promise<BigNumber>;
        moveQuoteToken(maxAmount_: BigNumberish, fromIndex_: BigNumberish, toIndex_: BigNumberish, expiry_: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            fromBucketLP_: BigNumber;
            toBucketLP_: BigNumber;
            movedAmount_: BigNumber;
        }>;
        multicall(data: BytesLike[], overrides?: CallOverrides): Promise<string[]>;
        pledgedCollateral(overrides?: CallOverrides): Promise<BigNumber>;
        poolType(overrides?: CallOverrides): Promise<number>;
        quoteTokenAddress(overrides?: CallOverrides): Promise<string>;
        quoteTokenScale(overrides?: CallOverrides): Promise<BigNumber>;
        removeCollateral(maxAmount_: BigNumberish, index_: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            removedAmount_: BigNumber;
            redeemedLP_: BigNumber;
        }>;
        removeQuoteToken(maxAmount_: BigNumberish, index_: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            removedAmount_: BigNumber;
            redeemedLP_: BigNumber;
        }>;
        repayDebt(borrowerAddress_: string, maxQuoteTokenAmountToRepay_: BigNumberish, collateralAmountToPull_: BigNumberish, collateralReceiver_: string, limitIndex_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        reservesInfo(overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber, BigNumber]>;
        revokeLPAllowance(spender_: string, indexes_: BigNumberish[], overrides?: CallOverrides): Promise<void>;
        revokeLPTransferors(transferors_: string[], overrides?: CallOverrides): Promise<void>;
        settle(borrowerAddress_: string, maxDepth_: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            boolean
        ] & {
            collateralSettled_: BigNumber;
            isBorrowerSettled_: boolean;
        }>;
        stampLoan(overrides?: CallOverrides): Promise<void>;
        take(borrowerAddress_: string, maxAmount_: BigNumberish, callee_: string, data_: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        takeReserves(maxAmount_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        totalAuctionsInPool(overrides?: CallOverrides): Promise<BigNumber>;
        totalT0Debt(overrides?: CallOverrides): Promise<BigNumber>;
        totalT0DebtInAuction(overrides?: CallOverrides): Promise<BigNumber>;
        transferLP(owner_: string, newOwner_: string, indexes_: BigNumberish[], overrides?: CallOverrides): Promise<void>;
        updateInterest(overrides?: CallOverrides): Promise<void>;
        withdrawBonds(recipient_: string, maxAmount_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    };
    filters: {
        'AddCollateral(address,uint256,uint256,uint256)'(actor?: string | null, index?: BigNumberish | null, amount?: null, lpAwarded?: null): AddCollateralEventFilter;
        AddCollateral(actor?: string | null, index?: BigNumberish | null, amount?: null, lpAwarded?: null): AddCollateralEventFilter;
        'AddQuoteToken(address,uint256,uint256,uint256,uint256)'(lender?: string | null, index?: BigNumberish | null, amount?: null, lpAwarded?: null, lup?: null): AddQuoteTokenEventFilter;
        AddQuoteToken(lender?: string | null, index?: BigNumberish | null, amount?: null, lpAwarded?: null, lup?: null): AddQuoteTokenEventFilter;
        'ApproveLPTransferors(address,address[])'(lender?: string | null, transferors?: null): ApproveLPTransferorsEventFilter;
        ApproveLPTransferors(lender?: string | null, transferors?: null): ApproveLPTransferorsEventFilter;
        'AuctionNFTSettle(address,uint256,uint256,uint256)'(borrower?: string | null, collateral?: null, lp?: null, index?: null): AuctionNFTSettleEventFilter;
        AuctionNFTSettle(borrower?: string | null, collateral?: null, lp?: null, index?: null): AuctionNFTSettleEventFilter;
        'AuctionSettle(address,uint256)'(borrower?: string | null, collateral?: null): AuctionSettleEventFilter;
        AuctionSettle(borrower?: string | null, collateral?: null): AuctionSettleEventFilter;
        'BondWithdrawn(address,address,uint256)'(kicker?: string | null, reciever?: string | null, amount?: null): BondWithdrawnEventFilter;
        BondWithdrawn(kicker?: string | null, reciever?: string | null, amount?: null): BondWithdrawnEventFilter;
        'BucketBankruptcy(uint256,uint256)'(index?: BigNumberish | null, lpForfeited?: null): BucketBankruptcyEventFilter;
        BucketBankruptcy(index?: BigNumberish | null, lpForfeited?: null): BucketBankruptcyEventFilter;
        'BucketTake(address,uint256,uint256,uint256,uint256,bool)'(borrower?: string | null, index?: null, amount?: null, collateral?: null, bondChange?: null, isReward?: null): BucketTakeEventFilter;
        BucketTake(borrower?: string | null, index?: null, amount?: null, collateral?: null, bondChange?: null, isReward?: null): BucketTakeEventFilter;
        'BucketTakeLPAwarded(address,address,uint256,uint256)'(taker?: string | null, kicker?: string | null, lpAwardedTaker?: null, lpAwardedKicker?: null): BucketTakeLPAwardedEventFilter;
        BucketTakeLPAwarded(taker?: string | null, kicker?: string | null, lpAwardedTaker?: null, lpAwardedKicker?: null): BucketTakeLPAwardedEventFilter;
        'DecreaseLPAllowance(address,address,uint256[],uint256[])'(owner?: string | null, spender?: string | null, indexes?: null, amounts?: null): DecreaseLPAllowanceEventFilter;
        DecreaseLPAllowance(owner?: string | null, spender?: string | null, indexes?: null, amounts?: null): DecreaseLPAllowanceEventFilter;
        'DrawDebt(address,uint256,uint256,uint256)'(borrower?: string | null, amountBorrowed?: null, collateralPledged?: null, lup?: null): DrawDebtEventFilter;
        DrawDebt(borrower?: string | null, amountBorrowed?: null, collateralPledged?: null, lup?: null): DrawDebtEventFilter;
        'Flashloan(address,address,uint256)'(receiver?: string | null, token?: string | null, amount?: null): FlashloanEventFilter;
        Flashloan(receiver?: string | null, token?: string | null, amount?: null): FlashloanEventFilter;
        'IncreaseLPAllowance(address,address,uint256[],uint256[])'(owner?: string | null, spender?: string | null, indexes?: null, amounts?: null): IncreaseLPAllowanceEventFilter;
        IncreaseLPAllowance(owner?: string | null, spender?: string | null, indexes?: null, amounts?: null): IncreaseLPAllowanceEventFilter;
        'InterestUpdateFailure()'(): InterestUpdateFailureEventFilter;
        InterestUpdateFailure(): InterestUpdateFailureEventFilter;
        'Kick(address,uint256,uint256,uint256)'(borrower?: string | null, debt?: null, collateral?: null, bond?: null): KickEventFilter;
        Kick(borrower?: string | null, debt?: null, collateral?: null, bond?: null): KickEventFilter;
        'KickReserveAuction(uint256,uint256,uint256)'(claimableReservesRemaining?: null, auctionPrice?: null, currentBurnEpoch?: null): KickReserveAuctionEventFilter;
        KickReserveAuction(claimableReservesRemaining?: null, auctionPrice?: null, currentBurnEpoch?: null): KickReserveAuctionEventFilter;
        'LoanStamped(address)'(borrower?: string | null): LoanStampedEventFilter;
        LoanStamped(borrower?: string | null): LoanStampedEventFilter;
        'MoveQuoteToken(address,uint256,uint256,uint256,uint256,uint256,uint256)'(lender?: string | null, from?: BigNumberish | null, to?: BigNumberish | null, amount?: null, lpRedeemedFrom?: null, lpAwardedTo?: null, lup?: null): MoveQuoteTokenEventFilter;
        MoveQuoteToken(lender?: string | null, from?: BigNumberish | null, to?: BigNumberish | null, amount?: null, lpRedeemedFrom?: null, lpAwardedTo?: null, lup?: null): MoveQuoteTokenEventFilter;
        'RemoveCollateral(address,uint256,uint256,uint256)'(claimer?: string | null, index?: BigNumberish | null, amount?: null, lpRedeemed?: null): RemoveCollateralEventFilter;
        RemoveCollateral(claimer?: string | null, index?: BigNumberish | null, amount?: null, lpRedeemed?: null): RemoveCollateralEventFilter;
        'RemoveQuoteToken(address,uint256,uint256,uint256,uint256)'(lender?: string | null, index?: BigNumberish | null, amount?: null, lpRedeemed?: null, lup?: null): RemoveQuoteTokenEventFilter;
        RemoveQuoteToken(lender?: string | null, index?: BigNumberish | null, amount?: null, lpRedeemed?: null, lup?: null): RemoveQuoteTokenEventFilter;
        'RepayDebt(address,uint256,uint256,uint256)'(borrower?: string | null, quoteRepaid?: null, collateralPulled?: null, lup?: null): RepayDebtEventFilter;
        RepayDebt(borrower?: string | null, quoteRepaid?: null, collateralPulled?: null, lup?: null): RepayDebtEventFilter;
        'ReserveAuction(uint256,uint256,uint256)'(claimableReservesRemaining?: null, auctionPrice?: null, currentBurnEpoch?: null): ReserveAuctionEventFilter;
        ReserveAuction(claimableReservesRemaining?: null, auctionPrice?: null, currentBurnEpoch?: null): ReserveAuctionEventFilter;
        'ResetInterestRate(uint256,uint256)'(oldRate?: null, newRate?: null): ResetInterestRateEventFilter;
        ResetInterestRate(oldRate?: null, newRate?: null): ResetInterestRateEventFilter;
        'RevokeLPAllowance(address,address,uint256[])'(owner?: string | null, spender?: string | null, indexes?: null): RevokeLPAllowanceEventFilter;
        RevokeLPAllowance(owner?: string | null, spender?: string | null, indexes?: null): RevokeLPAllowanceEventFilter;
        'RevokeLPTransferors(address,address[])'(lender?: string | null, transferors?: null): RevokeLPTransferorsEventFilter;
        RevokeLPTransferors(lender?: string | null, transferors?: null): RevokeLPTransferorsEventFilter;
        'Settle(address,uint256)'(borrower?: string | null, settledDebt?: null): SettleEventFilter;
        Settle(borrower?: string | null, settledDebt?: null): SettleEventFilter;
        'Take(address,uint256,uint256,uint256,bool)'(borrower?: string | null, amount?: null, collateral?: null, bondChange?: null, isReward?: null): TakeEventFilter;
        Take(borrower?: string | null, amount?: null, collateral?: null, bondChange?: null, isReward?: null): TakeEventFilter;
        'TransferLP(address,address,uint256[],uint256)'(owner?: null, newOwner?: null, indexes?: null, lp?: null): TransferLPEventFilter;
        TransferLP(owner?: null, newOwner?: null, indexes?: null, lp?: null): TransferLPEventFilter;
        'UpdateInterestRate(uint256,uint256)'(oldRate?: null, newRate?: null): UpdateInterestRateEventFilter;
        UpdateInterestRate(oldRate?: null, newRate?: null): UpdateInterestRateEventFilter;
    };
    estimateGas: {
        addCollateral(amountToAdd_: BigNumberish, index_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        addQuoteToken(amount_: BigNumberish, index_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        approveLPTransferors(transferors_: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        approvedTransferors(arg0: string, arg1: string, overrides?: CallOverrides): Promise<BigNumber>;
        auctionInfo(borrower_: string, overrides?: CallOverrides): Promise<BigNumber>;
        borrowerInfo(borrower_: string, overrides?: CallOverrides): Promise<BigNumber>;
        bucketCollateralDust(bucketIndex_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        bucketExchangeRate(index_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        bucketInfo(index_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        bucketTake(borrowerAddress_: string, depositTake_: boolean, index_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        burnInfo(burnEventEpoch_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        collateralAddress(overrides?: CallOverrides): Promise<BigNumber>;
        collateralScale(overrides?: CallOverrides): Promise<BigNumber>;
        currentBurnEpoch(overrides?: CallOverrides): Promise<BigNumber>;
        debtInfo(overrides?: CallOverrides): Promise<BigNumber>;
        decreaseLPAllowance(spender_: string, indexes_: BigNumberish[], amounts_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        depositIndex(debt_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        depositScale(index_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        depositSize(overrides?: CallOverrides): Promise<BigNumber>;
        depositUpToIndex(index_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        depositUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        drawDebt(borrowerAddress_: string, amountToBorrow_: BigNumberish, limitIndex_: BigNumberish, collateralToPledge_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        emasInfo(overrides?: CallOverrides): Promise<BigNumber>;
        flashFee(token_: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        flashLoan(receiver_: string, token_: string, amount_: BigNumberish, data_: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        increaseLPAllowance(spender_: string, indexes_: BigNumberish[], amounts_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        inflatorInfo(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(rate_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        interestRateInfo(overrides?: CallOverrides): Promise<BigNumber>;
        kick(borrower_: string, npLimitIndex_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        kickReserveAuction(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        kickerInfo(kicker_: string, overrides?: CallOverrides): Promise<BigNumber>;
        lenderInfo(index_: BigNumberish, lender_: string, overrides?: CallOverrides): Promise<BigNumber>;
        lenderKick(index_: BigNumberish, npLimitIndex_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        loanInfo(loanId_: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        loansInfo(overrides?: CallOverrides): Promise<BigNumber>;
        lpAllowance(index_: BigNumberish, spender_: string, owner_: string, overrides?: CallOverrides): Promise<BigNumber>;
        maxFlashLoan(token_: string, overrides?: CallOverrides): Promise<BigNumber>;
        moveQuoteToken(maxAmount_: BigNumberish, fromIndex_: BigNumberish, toIndex_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        multicall(data: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        pledgedCollateral(overrides?: CallOverrides): Promise<BigNumber>;
        poolType(overrides?: CallOverrides): Promise<BigNumber>;
        quoteTokenAddress(overrides?: CallOverrides): Promise<BigNumber>;
        quoteTokenScale(overrides?: CallOverrides): Promise<BigNumber>;
        removeCollateral(maxAmount_: BigNumberish, index_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        removeQuoteToken(maxAmount_: BigNumberish, index_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        repayDebt(borrowerAddress_: string, maxQuoteTokenAmountToRepay_: BigNumberish, collateralAmountToPull_: BigNumberish, collateralReceiver_: string, limitIndex_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        reservesInfo(overrides?: CallOverrides): Promise<BigNumber>;
        revokeLPAllowance(spender_: string, indexes_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        revokeLPTransferors(transferors_: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        settle(borrowerAddress_: string, maxDepth_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        stampLoan(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        take(borrowerAddress_: string, maxAmount_: BigNumberish, callee_: string, data_: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        takeReserves(maxAmount_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        totalAuctionsInPool(overrides?: CallOverrides): Promise<BigNumber>;
        totalT0Debt(overrides?: CallOverrides): Promise<BigNumber>;
        totalT0DebtInAuction(overrides?: CallOverrides): Promise<BigNumber>;
        transferLP(owner_: string, newOwner_: string, indexes_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        updateInterest(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        withdrawBonds(recipient_: string, maxAmount_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        addCollateral(amountToAdd_: BigNumberish, index_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        addQuoteToken(amount_: BigNumberish, index_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        approveLPTransferors(transferors_: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        approvedTransferors(arg0: string, arg1: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        auctionInfo(borrower_: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrowerInfo(borrower_: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        bucketCollateralDust(bucketIndex_: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        bucketExchangeRate(index_: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        bucketInfo(index_: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        bucketTake(borrowerAddress_: string, depositTake_: boolean, index_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        burnInfo(burnEventEpoch_: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        collateralAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        collateralScale(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        currentBurnEpoch(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        debtInfo(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decreaseLPAllowance(spender_: string, indexes_: BigNumberish[], amounts_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        depositIndex(debt_: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        depositScale(index_: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        depositSize(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        depositUpToIndex(index_: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        depositUtilization(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        drawDebt(borrowerAddress_: string, amountToBorrow_: BigNumberish, limitIndex_: BigNumberish, collateralToPledge_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        emasInfo(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        flashFee(token_: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        flashLoan(receiver_: string, token_: string, amount_: BigNumberish, data_: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        increaseLPAllowance(spender_: string, indexes_: BigNumberish[], amounts_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        inflatorInfo(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(rate_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        interestRateInfo(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        kick(borrower_: string, npLimitIndex_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        kickReserveAuction(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        kickerInfo(kicker_: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lenderInfo(index_: BigNumberish, lender_: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lenderKick(index_: BigNumberish, npLimitIndex_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        loanInfo(loanId_: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        loansInfo(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lpAllowance(index_: BigNumberish, spender_: string, owner_: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        maxFlashLoan(token_: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        moveQuoteToken(maxAmount_: BigNumberish, fromIndex_: BigNumberish, toIndex_: BigNumberish, expiry_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        multicall(data: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        pledgedCollateral(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolType(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        quoteTokenAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        quoteTokenScale(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        removeCollateral(maxAmount_: BigNumberish, index_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        removeQuoteToken(maxAmount_: BigNumberish, index_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        repayDebt(borrowerAddress_: string, maxQuoteTokenAmountToRepay_: BigNumberish, collateralAmountToPull_: BigNumberish, collateralReceiver_: string, limitIndex_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        reservesInfo(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        revokeLPAllowance(spender_: string, indexes_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        revokeLPTransferors(transferors_: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        settle(borrowerAddress_: string, maxDepth_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        stampLoan(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        take(borrowerAddress_: string, maxAmount_: BigNumberish, callee_: string, data_: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        takeReserves(maxAmount_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        totalAuctionsInPool(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalT0Debt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalT0DebtInAuction(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferLP(owner_: string, newOwner_: string, indexes_: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        updateInterest(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        withdrawBonds(recipient_: string, maxAmount_: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}
