import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from "../../../../common";
export interface ICollateralInterface extends utils.Interface {
    functions: {
        "accountLiquidity(address)": FunctionFragment;
        "balanceOf(address)": FunctionFragment;
        "borrowable0()": FunctionFragment;
        "borrowable1()": FunctionFragment;
        "exchangeRate()": FunctionFragment;
        "flashRedeem(address,uint256,bytes)": FunctionFragment;
        "getPrices()": FunctionFragment;
        "getTwapPrice112x112()": FunctionFragment;
        "liquidationIncentive()": FunctionFragment;
        "mint(address)": FunctionFragment;
        "safetyMarginSqrt()": FunctionFragment;
        "simpleUniswapOracle()": FunctionFragment;
        "underlying()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "accountLiquidity" | "balanceOf" | "borrowable0" | "borrowable1" | "exchangeRate" | "flashRedeem" | "getPrices" | "getTwapPrice112x112" | "liquidationIncentive" | "mint" | "safetyMarginSqrt" | "simpleUniswapOracle" | "underlying"): FunctionFragment;
    encodeFunctionData(functionFragment: "accountLiquidity", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "balanceOf", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "borrowable0", values?: undefined): string;
    encodeFunctionData(functionFragment: "borrowable1", values?: undefined): string;
    encodeFunctionData(functionFragment: "exchangeRate", values?: undefined): string;
    encodeFunctionData(functionFragment: "flashRedeem", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "getPrices", values?: undefined): string;
    encodeFunctionData(functionFragment: "getTwapPrice112x112", values?: undefined): string;
    encodeFunctionData(functionFragment: "liquidationIncentive", values?: undefined): string;
    encodeFunctionData(functionFragment: "mint", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "safetyMarginSqrt", values?: undefined): string;
    encodeFunctionData(functionFragment: "simpleUniswapOracle", values?: undefined): string;
    encodeFunctionData(functionFragment: "underlying", values?: undefined): string;
    decodeFunctionResult(functionFragment: "accountLiquidity", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "borrowable0", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "borrowable1", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "exchangeRate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "flashRedeem", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPrices", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTwapPrice112x112", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "liquidationIncentive", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "safetyMarginSqrt", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "simpleUniswapOracle", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "underlying", data: BytesLike): Result;
    events: {};
}
export interface ICollateral extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ICollateralInterface;
    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: {
        accountLiquidity(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            liquidity: BigNumber;
            shortfall: BigNumber;
        }>;
        balanceOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        borrowable0(overrides?: CallOverrides): Promise<[string]>;
        borrowable1(overrides?: CallOverrides): Promise<[string]>;
        exchangeRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        flashRedeem(redeemer: PromiseOrValue<string>, redeemAmount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getPrices(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            price0: BigNumber;
            price1: BigNumber;
        }>;
        getTwapPrice112x112(overrides?: CallOverrides): Promise<[BigNumber] & {
            twapPrice112x112: BigNumber;
        }>;
        liquidationIncentive(overrides?: CallOverrides): Promise<[BigNumber]>;
        mint(minter: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        safetyMarginSqrt(overrides?: CallOverrides): Promise<[BigNumber]>;
        simpleUniswapOracle(overrides?: CallOverrides): Promise<[string]>;
        underlying(overrides?: CallOverrides): Promise<[string]>;
    };
    accountLiquidity(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        liquidity: BigNumber;
        shortfall: BigNumber;
    }>;
    balanceOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    borrowable0(overrides?: CallOverrides): Promise<string>;
    borrowable1(overrides?: CallOverrides): Promise<string>;
    exchangeRate(overrides?: CallOverrides): Promise<BigNumber>;
    flashRedeem(redeemer: PromiseOrValue<string>, redeemAmount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getPrices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        price0: BigNumber;
        price1: BigNumber;
    }>;
    getTwapPrice112x112(overrides?: CallOverrides): Promise<BigNumber>;
    liquidationIncentive(overrides?: CallOverrides): Promise<BigNumber>;
    mint(minter: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    safetyMarginSqrt(overrides?: CallOverrides): Promise<BigNumber>;
    simpleUniswapOracle(overrides?: CallOverrides): Promise<string>;
    underlying(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        accountLiquidity(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            liquidity: BigNumber;
            shortfall: BigNumber;
        }>;
        balanceOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        borrowable0(overrides?: CallOverrides): Promise<string>;
        borrowable1(overrides?: CallOverrides): Promise<string>;
        exchangeRate(overrides?: CallOverrides): Promise<BigNumber>;
        flashRedeem(redeemer: PromiseOrValue<string>, redeemAmount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        getPrices(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            price0: BigNumber;
            price1: BigNumber;
        }>;
        getTwapPrice112x112(overrides?: CallOverrides): Promise<BigNumber>;
        liquidationIncentive(overrides?: CallOverrides): Promise<BigNumber>;
        mint(minter: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        safetyMarginSqrt(overrides?: CallOverrides): Promise<BigNumber>;
        simpleUniswapOracle(overrides?: CallOverrides): Promise<string>;
        underlying(overrides?: CallOverrides): Promise<string>;
    };
    filters: {};
    estimateGas: {
        accountLiquidity(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        borrowable0(overrides?: CallOverrides): Promise<BigNumber>;
        borrowable1(overrides?: CallOverrides): Promise<BigNumber>;
        exchangeRate(overrides?: CallOverrides): Promise<BigNumber>;
        flashRedeem(redeemer: PromiseOrValue<string>, redeemAmount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getPrices(overrides?: CallOverrides): Promise<BigNumber>;
        getTwapPrice112x112(overrides?: CallOverrides): Promise<BigNumber>;
        liquidationIncentive(overrides?: CallOverrides): Promise<BigNumber>;
        mint(minter: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        safetyMarginSqrt(overrides?: CallOverrides): Promise<BigNumber>;
        simpleUniswapOracle(overrides?: CallOverrides): Promise<BigNumber>;
        underlying(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        accountLiquidity(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        balanceOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrowable0(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrowable1(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        exchangeRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        flashRedeem(redeemer: PromiseOrValue<string>, redeemAmount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getPrices(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTwapPrice112x112(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        liquidationIncentive(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        mint(minter: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        safetyMarginSqrt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        simpleUniswapOracle(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        underlying(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
