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 type HarvestSwapParamsStruct = {
    path: PromiseOrValue<string>[];
    min: PromiseOrValue<BigNumberish>;
    deadline: PromiseOrValue<BigNumberish>;
};
export type HarvestSwapParamsStructOutput = [string[], BigNumber, BigNumber] & {
    path: string[];
    min: BigNumber;
    deadline: BigNumber;
};
export interface IStrategyInterface extends utils.Interface {
    functions: {
        "DEFAULT_ADMIN_ROLE()": FunctionFragment;
        "GUARDIAN()": FunctionFragment;
        "MANAGER()": FunctionFragment;
        "acceptOwnership()": FunctionFragment;
        "accrueInterest()": FunctionFragment;
        "closePosition()": FunctionFragment;
        "collateralToUnderlying()": FunctionFragment;
        "collateralToken()": FunctionFragment;
        "decimals()": FunctionFragment;
        "deposit(uint256)": FunctionFragment;
        "emergencyWithdraw(address,address[])": FunctionFragment;
        "farmRouter()": FunctionFragment;
        "getAndUpdateTVL()": FunctionFragment;
        "getExpectedPrice()": FunctionFragment;
        "getLPBalances()": FunctionFragment;
        "getLiquidity()": FunctionFragment;
        "getMaxDeposit()": FunctionFragment;
        "getMaxTvl()": FunctionFragment;
        "getPositionOffset()": FunctionFragment;
        "getRoleAdmin(bytes32)": FunctionFragment;
        "getTVL()": FunctionFragment;
        "getTotalTVL()": FunctionFragment;
        "getUnderlyingShortReserves()": FunctionFragment;
        "grantRole(bytes32,address)": FunctionFragment;
        "harvest((address[],uint256,uint256))": FunctionFragment;
        "hasRole(bytes32,address)": FunctionFragment;
        "loanHealth()": FunctionFragment;
        "maxPriceOffset()": FunctionFragment;
        "owner()": FunctionFragment;
        "pair()": FunctionFragment;
        "pendingHarvest()": FunctionFragment;
        "pendingOwner()": FunctionFragment;
        "rebalance(uint256,uint256)": FunctionFragment;
        "rebalanceThreshold()": FunctionFragment;
        "redeem(uint256,address)": FunctionFragment;
        "renounceRole(bytes32,address)": FunctionFragment;
        "revokeRole(bytes32,address)": FunctionFragment;
        "setMaxPriceOffset(uint256)": FunctionFragment;
        "setRebalanceThreshold(uint16)": FunctionFragment;
        "short()": FunctionFragment;
        "underlying()": FunctionFragment;
        "vault()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "DEFAULT_ADMIN_ROLE" | "GUARDIAN" | "MANAGER" | "acceptOwnership" | "accrueInterest" | "closePosition" | "collateralToUnderlying" | "collateralToken" | "decimals" | "deposit" | "emergencyWithdraw" | "farmRouter" | "getAndUpdateTVL" | "getExpectedPrice" | "getLPBalances" | "getLiquidity" | "getMaxDeposit" | "getMaxTvl" | "getPositionOffset" | "getRoleAdmin" | "getTVL" | "getTotalTVL" | "getUnderlyingShortReserves" | "grantRole" | "harvest" | "hasRole" | "loanHealth" | "maxPriceOffset" | "owner" | "pair" | "pendingHarvest" | "pendingOwner" | "rebalance" | "rebalanceThreshold" | "redeem" | "renounceRole" | "revokeRole" | "setMaxPriceOffset" | "setRebalanceThreshold" | "short" | "underlying" | "vault"): FunctionFragment;
    encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "GUARDIAN", values?: undefined): string;
    encodeFunctionData(functionFragment: "MANAGER", values?: undefined): string;
    encodeFunctionData(functionFragment: "acceptOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "accrueInterest", values?: undefined): string;
    encodeFunctionData(functionFragment: "closePosition", values?: undefined): string;
    encodeFunctionData(functionFragment: "collateralToUnderlying", values?: undefined): string;
    encodeFunctionData(functionFragment: "collateralToken", values?: undefined): string;
    encodeFunctionData(functionFragment: "decimals", values?: undefined): string;
    encodeFunctionData(functionFragment: "deposit", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "emergencyWithdraw", values: [PromiseOrValue<string>, PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "farmRouter", values?: undefined): string;
    encodeFunctionData(functionFragment: "getAndUpdateTVL", values?: undefined): string;
    encodeFunctionData(functionFragment: "getExpectedPrice", values?: undefined): string;
    encodeFunctionData(functionFragment: "getLPBalances", values?: undefined): string;
    encodeFunctionData(functionFragment: "getLiquidity", values?: undefined): string;
    encodeFunctionData(functionFragment: "getMaxDeposit", values?: undefined): string;
    encodeFunctionData(functionFragment: "getMaxTvl", values?: undefined): string;
    encodeFunctionData(functionFragment: "getPositionOffset", values?: undefined): string;
    encodeFunctionData(functionFragment: "getRoleAdmin", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "getTVL", values?: undefined): string;
    encodeFunctionData(functionFragment: "getTotalTVL", values?: undefined): string;
    encodeFunctionData(functionFragment: "getUnderlyingShortReserves", values?: undefined): string;
    encodeFunctionData(functionFragment: "grantRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "harvest", values: [HarvestSwapParamsStruct]): string;
    encodeFunctionData(functionFragment: "hasRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "loanHealth", values?: undefined): string;
    encodeFunctionData(functionFragment: "maxPriceOffset", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "pair", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingHarvest", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingOwner", values?: undefined): string;
    encodeFunctionData(functionFragment: "rebalance", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "rebalanceThreshold", values?: undefined): string;
    encodeFunctionData(functionFragment: "redeem", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "renounceRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "revokeRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setMaxPriceOffset", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setRebalanceThreshold", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "short", values?: undefined): string;
    encodeFunctionData(functionFragment: "underlying", values?: undefined): string;
    encodeFunctionData(functionFragment: "vault", values?: undefined): string;
    decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "GUARDIAN", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "MANAGER", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "acceptOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "accrueInterest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "closePosition", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collateralToUnderlying", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collateralToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "emergencyWithdraw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "farmRouter", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAndUpdateTVL", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getExpectedPrice", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getLPBalances", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getLiquidity", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getMaxDeposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getMaxTvl", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPositionOffset", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRoleAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTVL", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTotalTVL", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getUnderlyingShortReserves", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "harvest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "loanHealth", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "maxPriceOffset", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pair", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingHarvest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingOwner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rebalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rebalanceThreshold", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "redeem", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setMaxPriceOffset", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setRebalanceThreshold", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "short", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "underlying", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vault", data: BytesLike): Result;
    events: {};
}
export interface IStrategy extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IStrategyInterface;
    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: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        GUARDIAN(overrides?: CallOverrides): Promise<[string]>;
        MANAGER(overrides?: CallOverrides): Promise<[string]>;
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        accrueInterest(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        closePosition(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        collateralToUnderlying(overrides?: CallOverrides): Promise<[BigNumber]>;
        collateralToken(overrides?: CallOverrides): Promise<[string]>;
        decimals(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        deposit(underlyingAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        emergencyWithdraw(recipient: PromiseOrValue<string>, tokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        farmRouter(overrides?: CallOverrides): Promise<[string]>;
        getAndUpdateTVL(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getExpectedPrice(overrides?: CallOverrides): Promise<[BigNumber]>;
        getLPBalances(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getLiquidity(overrides?: CallOverrides): Promise<[BigNumber]>;
        getMaxDeposit(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getMaxTvl(overrides?: CallOverrides): Promise<[BigNumber]>;
        getPositionOffset(overrides?: CallOverrides): Promise<[BigNumber] & {
            positionOffset: BigNumber;
        }>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        getTVL(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            tvl: BigNumber;
            collateralBalance: BigNumber;
            borrowPosition: BigNumber;
            borrowBalance: BigNumber;
            lpBalance: BigNumber;
            underlyingBalance: BigNumber;
        }>;
        getTotalTVL(overrides?: CallOverrides): Promise<[BigNumber]>;
        getUnderlyingShortReserves(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            reserveA: BigNumber;
            reserveB: BigNumber;
        }>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        harvest(harvestParams: HarvestSwapParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        loanHealth(overrides?: CallOverrides): Promise<[BigNumber]>;
        maxPriceOffset(overrides?: CallOverrides): Promise<[BigNumber]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        pair(overrides?: CallOverrides): Promise<[string]>;
        pendingHarvest(overrides?: CallOverrides): Promise<[BigNumber] & {
            harvested: BigNumber;
        }>;
        pendingOwner(overrides?: CallOverrides): Promise<[string]>;
        rebalance(expectedPrice: PromiseOrValue<BigNumberish>, maxDelta: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        rebalanceThreshold(overrides?: CallOverrides): Promise<[number]>;
        redeem(removeCollateral: PromiseOrValue<BigNumberish>, recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setMaxPriceOffset(_maxPriceOffset: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRebalanceThreshold(rebalanceThreshold_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        short(overrides?: CallOverrides): Promise<[string]>;
        underlying(overrides?: CallOverrides): Promise<[string]>;
        vault(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    GUARDIAN(overrides?: CallOverrides): Promise<string>;
    MANAGER(overrides?: CallOverrides): Promise<string>;
    acceptOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    accrueInterest(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    closePosition(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    collateralToUnderlying(overrides?: CallOverrides): Promise<BigNumber>;
    collateralToken(overrides?: CallOverrides): Promise<string>;
    decimals(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    deposit(underlyingAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    emergencyWithdraw(recipient: PromiseOrValue<string>, tokens: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    farmRouter(overrides?: CallOverrides): Promise<string>;
    getAndUpdateTVL(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getExpectedPrice(overrides?: CallOverrides): Promise<BigNumber>;
    getLPBalances(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getLiquidity(overrides?: CallOverrides): Promise<BigNumber>;
    getMaxDeposit(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getMaxTvl(overrides?: CallOverrides): Promise<BigNumber>;
    getPositionOffset(overrides?: CallOverrides): Promise<BigNumber>;
    getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    getTVL(overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        tvl: BigNumber;
        collateralBalance: BigNumber;
        borrowPosition: BigNumber;
        borrowBalance: BigNumber;
        lpBalance: BigNumber;
        underlyingBalance: BigNumber;
    }>;
    getTotalTVL(overrides?: CallOverrides): Promise<BigNumber>;
    getUnderlyingShortReserves(overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        reserveA: BigNumber;
        reserveB: BigNumber;
    }>;
    grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    harvest(harvestParams: HarvestSwapParamsStruct, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    loanHealth(overrides?: CallOverrides): Promise<BigNumber>;
    maxPriceOffset(overrides?: CallOverrides): Promise<BigNumber>;
    owner(overrides?: CallOverrides): Promise<string>;
    pair(overrides?: CallOverrides): Promise<string>;
    pendingHarvest(overrides?: CallOverrides): Promise<BigNumber>;
    pendingOwner(overrides?: CallOverrides): Promise<string>;
    rebalance(expectedPrice: PromiseOrValue<BigNumberish>, maxDelta: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    rebalanceThreshold(overrides?: CallOverrides): Promise<number>;
    redeem(removeCollateral: PromiseOrValue<BigNumberish>, recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setMaxPriceOffset(_maxPriceOffset: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRebalanceThreshold(rebalanceThreshold_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    short(overrides?: CallOverrides): Promise<string>;
    underlying(overrides?: CallOverrides): Promise<string>;
    vault(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        GUARDIAN(overrides?: CallOverrides): Promise<string>;
        MANAGER(overrides?: CallOverrides): Promise<string>;
        acceptOwnership(overrides?: CallOverrides): Promise<void>;
        accrueInterest(overrides?: CallOverrides): Promise<void>;
        closePosition(overrides?: CallOverrides): Promise<BigNumber>;
        collateralToUnderlying(overrides?: CallOverrides): Promise<BigNumber>;
        collateralToken(overrides?: CallOverrides): Promise<string>;
        decimals(overrides?: CallOverrides): Promise<number>;
        deposit(underlyingAmnt: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        emergencyWithdraw(recipient: PromiseOrValue<string>, tokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        farmRouter(overrides?: CallOverrides): Promise<string>;
        getAndUpdateTVL(overrides?: CallOverrides): Promise<BigNumber>;
        getExpectedPrice(overrides?: CallOverrides): Promise<BigNumber>;
        getLPBalances(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        getLiquidity(overrides?: CallOverrides): Promise<BigNumber>;
        getMaxDeposit(overrides?: CallOverrides): Promise<BigNumber>;
        getMaxTvl(overrides?: CallOverrides): Promise<BigNumber>;
        getPositionOffset(overrides?: CallOverrides): Promise<BigNumber>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        getTVL(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            tvl: BigNumber;
            collateralBalance: BigNumber;
            borrowPosition: BigNumber;
            borrowBalance: BigNumber;
            lpBalance: BigNumber;
            underlyingBalance: BigNumber;
        }>;
        getTotalTVL(overrides?: CallOverrides): Promise<BigNumber>;
        getUnderlyingShortReserves(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            reserveA: BigNumber;
            reserveB: BigNumber;
        }>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        harvest(harvestParams: HarvestSwapParamsStruct, overrides?: CallOverrides): Promise<BigNumber>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        loanHealth(overrides?: CallOverrides): Promise<BigNumber>;
        maxPriceOffset(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<string>;
        pair(overrides?: CallOverrides): Promise<string>;
        pendingHarvest(overrides?: CallOverrides): Promise<BigNumber>;
        pendingOwner(overrides?: CallOverrides): Promise<string>;
        rebalance(expectedPrice: PromiseOrValue<BigNumberish>, maxDelta: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        rebalanceThreshold(overrides?: CallOverrides): Promise<number>;
        redeem(removeCollateral: PromiseOrValue<BigNumberish>, recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setMaxPriceOffset(_maxPriceOffset: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setRebalanceThreshold(rebalanceThreshold_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        short(overrides?: CallOverrides): Promise<string>;
        underlying(overrides?: CallOverrides): Promise<string>;
        vault(overrides?: CallOverrides): Promise<string>;
    };
    filters: {};
    estimateGas: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        GUARDIAN(overrides?: CallOverrides): Promise<BigNumber>;
        MANAGER(overrides?: CallOverrides): Promise<BigNumber>;
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        accrueInterest(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        closePosition(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        collateralToUnderlying(overrides?: CallOverrides): Promise<BigNumber>;
        collateralToken(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        deposit(underlyingAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        emergencyWithdraw(recipient: PromiseOrValue<string>, tokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        farmRouter(overrides?: CallOverrides): Promise<BigNumber>;
        getAndUpdateTVL(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getExpectedPrice(overrides?: CallOverrides): Promise<BigNumber>;
        getLPBalances(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getLiquidity(overrides?: CallOverrides): Promise<BigNumber>;
        getMaxDeposit(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getMaxTvl(overrides?: CallOverrides): Promise<BigNumber>;
        getPositionOffset(overrides?: CallOverrides): Promise<BigNumber>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        getTVL(overrides?: CallOverrides): Promise<BigNumber>;
        getTotalTVL(overrides?: CallOverrides): Promise<BigNumber>;
        getUnderlyingShortReserves(overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        harvest(harvestParams: HarvestSwapParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        loanHealth(overrides?: CallOverrides): Promise<BigNumber>;
        maxPriceOffset(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        pair(overrides?: CallOverrides): Promise<BigNumber>;
        pendingHarvest(overrides?: CallOverrides): Promise<BigNumber>;
        pendingOwner(overrides?: CallOverrides): Promise<BigNumber>;
        rebalance(expectedPrice: PromiseOrValue<BigNumberish>, maxDelta: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        rebalanceThreshold(overrides?: CallOverrides): Promise<BigNumber>;
        redeem(removeCollateral: PromiseOrValue<BigNumberish>, recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setMaxPriceOffset(_maxPriceOffset: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRebalanceThreshold(rebalanceThreshold_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        short(overrides?: CallOverrides): Promise<BigNumber>;
        underlying(overrides?: CallOverrides): Promise<BigNumber>;
        vault(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        GUARDIAN(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MANAGER(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        accrueInterest(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        closePosition(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        collateralToUnderlying(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        collateralToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decimals(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        deposit(underlyingAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        emergencyWithdraw(recipient: PromiseOrValue<string>, tokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        farmRouter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAndUpdateTVL(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getExpectedPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLPBalances(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getLiquidity(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getMaxDeposit(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getMaxTvl(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPositionOffset(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTVL(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTotalTVL(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getUnderlyingShortReserves(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        harvest(harvestParams: HarvestSwapParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        loanHealth(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        maxPriceOffset(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pair(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingHarvest(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rebalance(expectedPrice: PromiseOrValue<BigNumberish>, maxDelta: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        rebalanceThreshold(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        redeem(removeCollateral: PromiseOrValue<BigNumberish>, recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setMaxPriceOffset(_maxPriceOffset: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRebalanceThreshold(rebalanceThreshold_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        short(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        underlying(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        vault(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
