import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, 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, PromiseOrValue } from "../../../../../common";
export type AuthConfigStruct = {
    owner: PromiseOrValue<string>;
    guardian: PromiseOrValue<string>;
    manager: PromiseOrValue<string>;
};
export type AuthConfigStructOutput = [string, string, string] & {
    owner: string;
    guardian: string;
    manager: string;
};
export type HLPConfigStruct = {
    symbol: PromiseOrValue<string>;
    name: PromiseOrValue<string>;
    underlying: PromiseOrValue<string>;
    short: PromiseOrValue<string>;
    cTokenLend: PromiseOrValue<string>;
    cTokenBorrow: PromiseOrValue<string>;
    uniPair: PromiseOrValue<string>;
    uniFarm: PromiseOrValue<string>;
    farmToken: PromiseOrValue<string>;
    farmId: PromiseOrValue<BigNumberish>;
    farmRouter: PromiseOrValue<string>;
    comptroller: PromiseOrValue<string>;
    lendRewardRouter: PromiseOrValue<string>;
    lendRewardToken: PromiseOrValue<string>;
    vault: PromiseOrValue<string>;
    nativeToken: PromiseOrValue<BigNumberish>;
};
export type HLPConfigStructOutput = [
    string,
    string,
    string,
    string,
    string,
    string,
    string,
    string,
    string,
    BigNumber,
    string,
    string,
    string,
    string,
    string,
    number
] & {
    symbol: string;
    name: string;
    underlying: string;
    short: string;
    cTokenLend: string;
    cTokenBorrow: string;
    uniPair: string;
    uniFarm: string;
    farmToken: string;
    farmId: BigNumber;
    farmRouter: string;
    comptroller: string;
    lendRewardRouter: string;
    lendRewardToken: string;
    vault: string;
    nativeToken: number;
};
export type EActionStruct = {
    target: PromiseOrValue<string>;
    value: PromiseOrValue<BigNumberish>;
    data: PromiseOrValue<BytesLike>;
};
export type EActionStructOutput = [string, BigNumber, string] & {
    target: string;
    value: BigNumber;
    data: string;
};
export type HarvestSwapParamsStruct = {
    path: PromiseOrValue<string>[];
    min: PromiseOrValue<BigNumberish>;
    deadline: PromiseOrValue<BigNumberish>;
    pathData: PromiseOrValue<BytesLike>;
};
export type HarvestSwapParamsStructOutput = [
    string[],
    BigNumber,
    BigNumber,
    string
] & {
    path: string[];
    min: BigNumber;
    deadline: BigNumber;
    pathData: string;
};
export interface CamelotAaveInterface extends utils.Interface {
    functions: {
        "DEFAULT_ADMIN_ROLE()": FunctionFragment;
        "GUARDIAN()": FunctionFragment;
        "INTEREST_RATE_MODE_VARIABLE()": FunctionFragment;
        "MANAGER()": FunctionFragment;
        "acceptOwnership()": FunctionFragment;
        "balanceOfUnderlying()": FunctionFragment;
        "cTokenBorrow()": FunctionFragment;
        "cTokenLend()": FunctionFragment;
        "closePosition(uint256)": FunctionFragment;
        "collateralToUnderlying()": FunctionFragment;
        "comptroller()": FunctionFragment;
        "decimals()": FunctionFragment;
        "deposit(uint256)": FunctionFragment;
        "emergencyAction((address,uint256,bytes)[])": FunctionFragment;
        "farmRouter()": FunctionFragment;
        "getAndUpdateTvl()": FunctionFragment;
        "getCollateralRatio()": FunctionFragment;
        "getDepositAmnt(uint256)": FunctionFragment;
        "getLPBalances()": FunctionFragment;
        "getLpBalance()": FunctionFragment;
        "getLpToken()": FunctionFragment;
        "getMaxDeposit()": FunctionFragment;
        "getMaxTvl()": FunctionFragment;
        "getPositionOffset()": FunctionFragment;
        "getPriceOffset()": FunctionFragment;
        "getRoleAdmin(bytes32)": FunctionFragment;
        "getTVL()": FunctionFragment;
        "getTotalTVL()": FunctionFragment;
        "getTvl()": FunctionFragment;
        "getUnderlyingShortReserves()": FunctionFragment;
        "getWithdrawAmnt(uint256)": FunctionFragment;
        "grantRole(bytes32,address)": FunctionFragment;
        "harvest((address[],uint256,uint256,bytes)[],(address[],uint256,uint256,bytes)[])": FunctionFragment;
        "harvestIsEnabled()": FunctionFragment;
        "hasRole(bytes32,address)": FunctionFragment;
        "lastHarvest()": FunctionFragment;
        "lendFarmRouter()": FunctionFragment;
        "loanHealth()": FunctionFragment;
        "maxAllowedMismatch()": FunctionFragment;
        "maxDefaultPriceMismatch()": FunctionFragment;
        "maxPriceOffset()": FunctionFragment;
        "minLoanHealth()": FunctionFragment;
        "onERC721Received(address,address,uint256,bytes)": FunctionFragment;
        "onNFTAddToPosition(address,uint256,uint256)": FunctionFragment;
        "onNFTHarvest(address,address,uint256,uint256,uint256)": FunctionFragment;
        "onNFTWithdraw(address,uint256,uint256)": FunctionFragment;
        "oracle()": FunctionFragment;
        "owner()": FunctionFragment;
        "pair()": FunctionFragment;
        "pendingOwner()": FunctionFragment;
        "positionId()": FunctionFragment;
        "rebalance(uint256)": FunctionFragment;
        "rebalanceLoan()": FunctionFragment;
        "rebalanceThreshold()": FunctionFragment;
        "redeem(address,uint256)": FunctionFragment;
        "redeemCollateral(uint256,uint256)": FunctionFragment;
        "removeLiquidity(uint256,uint256)": FunctionFragment;
        "renounceRole(bytes32,address)": FunctionFragment;
        "revokeRole(bytes32,address)": FunctionFragment;
        "safeCollateralRatio()": FunctionFragment;
        "setMaxDefaultPriceMismatch(uint256)": FunctionFragment;
        "setMinLoanHeath(uint256)": FunctionFragment;
        "setRebalanceThreshold(uint16)": FunctionFragment;
        "setSafeCollateralRatio(uint256)": FunctionFragment;
        "short()": FunctionFragment;
        "supportsInterface(bytes4)": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
        "underlying()": FunctionFragment;
        "vault()": FunctionFragment;
        "version()": FunctionFragment;
        "withdrawFromFarm()": FunctionFragment;
        "xGrailToken()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "DEFAULT_ADMIN_ROLE" | "GUARDIAN" | "INTEREST_RATE_MODE_VARIABLE" | "MANAGER" | "acceptOwnership" | "balanceOfUnderlying" | "cTokenBorrow" | "cTokenLend" | "closePosition" | "collateralToUnderlying" | "comptroller" | "decimals" | "deposit" | "emergencyAction" | "farmRouter" | "getAndUpdateTvl" | "getCollateralRatio" | "getDepositAmnt" | "getLPBalances" | "getLpBalance" | "getLpToken" | "getMaxDeposit" | "getMaxTvl" | "getPositionOffset" | "getPriceOffset" | "getRoleAdmin" | "getTVL" | "getTotalTVL" | "getTvl" | "getUnderlyingShortReserves" | "getWithdrawAmnt" | "grantRole" | "harvest" | "harvestIsEnabled" | "hasRole" | "lastHarvest" | "lendFarmRouter" | "loanHealth" | "maxAllowedMismatch" | "maxDefaultPriceMismatch" | "maxPriceOffset" | "minLoanHealth" | "onERC721Received" | "onNFTAddToPosition" | "onNFTHarvest" | "onNFTWithdraw" | "oracle" | "owner" | "pair" | "pendingOwner" | "positionId" | "rebalance" | "rebalanceLoan" | "rebalanceThreshold" | "redeem" | "redeemCollateral" | "removeLiquidity" | "renounceRole" | "revokeRole" | "safeCollateralRatio" | "setMaxDefaultPriceMismatch" | "setMinLoanHeath" | "setRebalanceThreshold" | "setSafeCollateralRatio" | "short" | "supportsInterface" | "transferOwnership" | "underlying" | "vault" | "version" | "withdrawFromFarm" | "xGrailToken"): FunctionFragment;
    encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "GUARDIAN", values?: undefined): string;
    encodeFunctionData(functionFragment: "INTEREST_RATE_MODE_VARIABLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "MANAGER", values?: undefined): string;
    encodeFunctionData(functionFragment: "acceptOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "balanceOfUnderlying", values?: undefined): string;
    encodeFunctionData(functionFragment: "cTokenBorrow", values?: undefined): string;
    encodeFunctionData(functionFragment: "cTokenLend", values?: undefined): string;
    encodeFunctionData(functionFragment: "closePosition", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "collateralToUnderlying", values?: undefined): string;
    encodeFunctionData(functionFragment: "comptroller", values?: undefined): string;
    encodeFunctionData(functionFragment: "decimals", values?: undefined): string;
    encodeFunctionData(functionFragment: "deposit", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "emergencyAction", values: [EActionStruct[]]): string;
    encodeFunctionData(functionFragment: "farmRouter", values?: undefined): string;
    encodeFunctionData(functionFragment: "getAndUpdateTvl", values?: undefined): string;
    encodeFunctionData(functionFragment: "getCollateralRatio", values?: undefined): string;
    encodeFunctionData(functionFragment: "getDepositAmnt", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "getLPBalances", values?: undefined): string;
    encodeFunctionData(functionFragment: "getLpBalance", values?: undefined): string;
    encodeFunctionData(functionFragment: "getLpToken", values?: undefined): string;
    encodeFunctionData(functionFragment: "getMaxDeposit", values?: undefined): string;
    encodeFunctionData(functionFragment: "getMaxTvl", values?: undefined): string;
    encodeFunctionData(functionFragment: "getPositionOffset", values?: undefined): string;
    encodeFunctionData(functionFragment: "getPriceOffset", values?: undefined): string;
    encodeFunctionData(functionFragment: "getRoleAdmin", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "getTVL", values?: undefined): string;
    encodeFunctionData(functionFragment: "getTotalTVL", values?: undefined): string;
    encodeFunctionData(functionFragment: "getTvl", values?: undefined): string;
    encodeFunctionData(functionFragment: "getUnderlyingShortReserves", values?: undefined): string;
    encodeFunctionData(functionFragment: "getWithdrawAmnt", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "grantRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "harvest", values: [HarvestSwapParamsStruct[], HarvestSwapParamsStruct[]]): string;
    encodeFunctionData(functionFragment: "harvestIsEnabled", values?: undefined): string;
    encodeFunctionData(functionFragment: "hasRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "lastHarvest", values?: undefined): string;
    encodeFunctionData(functionFragment: "lendFarmRouter", values?: undefined): string;
    encodeFunctionData(functionFragment: "loanHealth", values?: undefined): string;
    encodeFunctionData(functionFragment: "maxAllowedMismatch", values?: undefined): string;
    encodeFunctionData(functionFragment: "maxDefaultPriceMismatch", values?: undefined): string;
    encodeFunctionData(functionFragment: "maxPriceOffset", values?: undefined): string;
    encodeFunctionData(functionFragment: "minLoanHealth", values?: undefined): string;
    encodeFunctionData(functionFragment: "onERC721Received", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "onNFTAddToPosition", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "onNFTHarvest", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "onNFTWithdraw", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "oracle", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "pair", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingOwner", values?: undefined): string;
    encodeFunctionData(functionFragment: "positionId", values?: undefined): string;
    encodeFunctionData(functionFragment: "rebalance", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "rebalanceLoan", values?: undefined): string;
    encodeFunctionData(functionFragment: "rebalanceThreshold", values?: undefined): string;
    encodeFunctionData(functionFragment: "redeem", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "redeemCollateral", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "removeLiquidity", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "renounceRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "revokeRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "safeCollateralRatio", values?: undefined): string;
    encodeFunctionData(functionFragment: "setMaxDefaultPriceMismatch", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setMinLoanHeath", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setRebalanceThreshold", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setSafeCollateralRatio", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "short", values?: undefined): string;
    encodeFunctionData(functionFragment: "supportsInterface", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "underlying", values?: undefined): string;
    encodeFunctionData(functionFragment: "vault", values?: undefined): string;
    encodeFunctionData(functionFragment: "version", values?: undefined): string;
    encodeFunctionData(functionFragment: "withdrawFromFarm", values?: undefined): string;
    encodeFunctionData(functionFragment: "xGrailToken", values?: undefined): string;
    decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "GUARDIAN", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "INTEREST_RATE_MODE_VARIABLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "MANAGER", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "acceptOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "balanceOfUnderlying", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "cTokenBorrow", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "cTokenLend", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "closePosition", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collateralToUnderlying", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "comptroller", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "emergencyAction", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "farmRouter", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAndUpdateTvl", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getCollateralRatio", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getDepositAmnt", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getLPBalances", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getLpBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getLpToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getMaxDeposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getMaxTvl", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPositionOffset", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPriceOffset", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRoleAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTVL", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTotalTVL", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTvl", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getUnderlyingShortReserves", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getWithdrawAmnt", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "harvest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "harvestIsEnabled", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lastHarvest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lendFarmRouter", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "loanHealth", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "maxAllowedMismatch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "maxDefaultPriceMismatch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "maxPriceOffset", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "minLoanHealth", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "onERC721Received", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "onNFTAddToPosition", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "onNFTHarvest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "onNFTWithdraw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "oracle", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pair", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingOwner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "positionId", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rebalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rebalanceLoan", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rebalanceThreshold", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "redeem", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "redeemCollateral", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeLiquidity", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "safeCollateralRatio", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setMaxDefaultPriceMismatch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setMinLoanHeath", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setRebalanceThreshold", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setSafeCollateralRatio", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "short", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supportsInterface", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "underlying", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vault", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawFromFarm", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "xGrailToken", data: BytesLike): Result;
    events: {
        "Deposit(address,uint256)": EventFragment;
        "EmergencyAction(address,bytes)": EventFragment;
        "EmergencyWithdraw(address,address[])": EventFragment;
        "Harvest(uint256)": EventFragment;
        "HarvestedToken(address,uint256)": EventFragment;
        "OwnershipTransferInitiated(address,address)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "Rebalance(uint256,uint256,uint256)": EventFragment;
        "RebalanceLoan(address,uint256,uint256)": EventFragment;
        "Redeem(address,uint256)": EventFragment;
        "RoleAdminChanged(bytes32,bytes32,bytes32)": EventFragment;
        "RoleGranted(bytes32,address,address)": EventFragment;
        "RoleRevoked(bytes32,address,address)": EventFragment;
        "SetMaxDefaultPriceMismatch(uint256)": EventFragment;
        "SetMaxTvl(uint256)": EventFragment;
        "SetRebalanceThreshold(uint256)": EventFragment;
        "SetSafeCollateralRaio(uint256)": EventFragment;
        "UpdatePosition()": EventFragment;
        "setMinLoanHealth(uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "EmergencyAction"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "EmergencyWithdraw"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Harvest"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "HarvestedToken"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferInitiated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Rebalance"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RebalanceLoan"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Redeem"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RoleAdminChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RoleGranted"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RoleRevoked"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "SetMaxDefaultPriceMismatch"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "SetMaxTvl"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "SetRebalanceThreshold"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "SetSafeCollateralRaio"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "UpdatePosition"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "setMinLoanHealth"): EventFragment;
}
export interface DepositEventObject {
    sender: string;
    amount: BigNumber;
}
export type DepositEvent = TypedEvent<[string, BigNumber], DepositEventObject>;
export type DepositEventFilter = TypedEventFilter<DepositEvent>;
export interface EmergencyActionEventObject {
    target: string;
    data: string;
}
export type EmergencyActionEvent = TypedEvent<[
    string,
    string
], EmergencyActionEventObject>;
export type EmergencyActionEventFilter = TypedEventFilter<EmergencyActionEvent>;
export interface EmergencyWithdrawEventObject {
    recipient: string;
    tokens: string[];
}
export type EmergencyWithdrawEvent = TypedEvent<[
    string,
    string[]
], EmergencyWithdrawEventObject>;
export type EmergencyWithdrawEventFilter = TypedEventFilter<EmergencyWithdrawEvent>;
export interface HarvestEventObject {
    harvested: BigNumber;
}
export type HarvestEvent = TypedEvent<[BigNumber], HarvestEventObject>;
export type HarvestEventFilter = TypedEventFilter<HarvestEvent>;
export interface HarvestedTokenEventObject {
    token: string;
    amount: BigNumber;
}
export type HarvestedTokenEvent = TypedEvent<[
    string,
    BigNumber
], HarvestedTokenEventObject>;
export type HarvestedTokenEventFilter = TypedEventFilter<HarvestedTokenEvent>;
export interface OwnershipTransferInitiatedEventObject {
    owner: string;
    pendingOwner: string;
}
export type OwnershipTransferInitiatedEvent = TypedEvent<[
    string,
    string
], OwnershipTransferInitiatedEventObject>;
export type OwnershipTransferInitiatedEventFilter = TypedEventFilter<OwnershipTransferInitiatedEvent>;
export interface OwnershipTransferredEventObject {
    oldOwner: string;
    newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject>;
export type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface RebalanceEventObject {
    shortPrice: BigNumber;
    tvlBeforeRebalance: BigNumber;
    positionOffset: BigNumber;
}
export type RebalanceEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber
], RebalanceEventObject>;
export type RebalanceEventFilter = TypedEventFilter<RebalanceEvent>;
export interface RebalanceLoanEventObject {
    sender: string;
    startLoanHealth: BigNumber;
    updatedLoanHealth: BigNumber;
}
export type RebalanceLoanEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber
], RebalanceLoanEventObject>;
export type RebalanceLoanEventFilter = TypedEventFilter<RebalanceLoanEvent>;
export interface RedeemEventObject {
    sender: string;
    amount: BigNumber;
}
export type RedeemEvent = TypedEvent<[string, BigNumber], RedeemEventObject>;
export type RedeemEventFilter = TypedEventFilter<RedeemEvent>;
export interface RoleAdminChangedEventObject {
    role: string;
    previousAdminRole: string;
    newAdminRole: string;
}
export type RoleAdminChangedEvent = TypedEvent<[
    string,
    string,
    string
], RoleAdminChangedEventObject>;
export type RoleAdminChangedEventFilter = TypedEventFilter<RoleAdminChangedEvent>;
export interface RoleGrantedEventObject {
    role: string;
    account: string;
    sender: string;
}
export type RoleGrantedEvent = TypedEvent<[
    string,
    string,
    string
], RoleGrantedEventObject>;
export type RoleGrantedEventFilter = TypedEventFilter<RoleGrantedEvent>;
export interface RoleRevokedEventObject {
    role: string;
    account: string;
    sender: string;
}
export type RoleRevokedEvent = TypedEvent<[
    string,
    string,
    string
], RoleRevokedEventObject>;
export type RoleRevokedEventFilter = TypedEventFilter<RoleRevokedEvent>;
export interface SetMaxDefaultPriceMismatchEventObject {
    maxDefaultPriceMismatch: BigNumber;
}
export type SetMaxDefaultPriceMismatchEvent = TypedEvent<[
    BigNumber
], SetMaxDefaultPriceMismatchEventObject>;
export type SetMaxDefaultPriceMismatchEventFilter = TypedEventFilter<SetMaxDefaultPriceMismatchEvent>;
export interface SetMaxTvlEventObject {
    maxTvl: BigNumber;
}
export type SetMaxTvlEvent = TypedEvent<[BigNumber], SetMaxTvlEventObject>;
export type SetMaxTvlEventFilter = TypedEventFilter<SetMaxTvlEvent>;
export interface SetRebalanceThresholdEventObject {
    rebalanceThreshold: BigNumber;
}
export type SetRebalanceThresholdEvent = TypedEvent<[
    BigNumber
], SetRebalanceThresholdEventObject>;
export type SetRebalanceThresholdEventFilter = TypedEventFilter<SetRebalanceThresholdEvent>;
export interface SetSafeCollateralRaioEventObject {
    collateralRatio: BigNumber;
}
export type SetSafeCollateralRaioEvent = TypedEvent<[
    BigNumber
], SetSafeCollateralRaioEventObject>;
export type SetSafeCollateralRaioEventFilter = TypedEventFilter<SetSafeCollateralRaioEvent>;
export interface UpdatePositionEventObject {
}
export type UpdatePositionEvent = TypedEvent<[], UpdatePositionEventObject>;
export type UpdatePositionEventFilter = TypedEventFilter<UpdatePositionEvent>;
export interface setMinLoanHealthEventObject {
    loanHealth: BigNumber;
}
export type setMinLoanHealthEvent = TypedEvent<[
    BigNumber
], setMinLoanHealthEventObject>;
export type setMinLoanHealthEventFilter = TypedEventFilter<setMinLoanHealthEvent>;
export interface CamelotAave extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: CamelotAaveInterface;
    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]>;
        INTEREST_RATE_MODE_VARIABLE(overrides?: CallOverrides): Promise<[BigNumber]>;
        MANAGER(overrides?: CallOverrides): Promise<[string]>;
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        balanceOfUnderlying(overrides?: CallOverrides): Promise<[BigNumber] & {
            assets: BigNumber;
        }>;
        cTokenBorrow(overrides?: CallOverrides): Promise<[string]>;
        cTokenLend(overrides?: CallOverrides): Promise<[string]>;
        closePosition(maxSlippage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        collateralToUnderlying(overrides?: CallOverrides): Promise<[BigNumber]>;
        comptroller(overrides?: CallOverrides): Promise<[string]>;
        decimals(overrides?: CallOverrides): Promise<[number]>;
        deposit(underlyingAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        emergencyAction(actions: EActionStruct[], overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        farmRouter(overrides?: CallOverrides): Promise<[string]>;
        getAndUpdateTvl(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getCollateralRatio(overrides?: CallOverrides): Promise<[BigNumber]>;
        getDepositAmnt(uAmnt: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getLPBalances(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            underlyingLp: BigNumber;
            shortLp: BigNumber;
        }>;
        getLpBalance(overrides?: CallOverrides): Promise<[BigNumber]>;
        getLpToken(overrides?: CallOverrides): Promise<[string]>;
        getMaxDeposit(overrides?: CallOverrides): Promise<[BigNumber]>;
        getMaxTvl(overrides?: CallOverrides): Promise<[BigNumber]>;
        getPositionOffset(overrides?: CallOverrides): Promise<[BigNumber] & {
            positionOffset: BigNumber;
        }>;
        getPriceOffset(overrides?: CallOverrides): Promise<[BigNumber] & {
            offset: 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] & {
            tvl: BigNumber;
        }>;
        getTvl(overrides?: CallOverrides): Promise<[BigNumber] & {
            tvl: BigNumber;
        }>;
        getUnderlyingShortReserves(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            reserveA: BigNumber;
            reserveB: BigNumber;
        }>;
        getWithdrawAmnt(lpTokens: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        harvest(uniParams: HarvestSwapParamsStruct[], lendingParams: HarvestSwapParamsStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        harvestIsEnabled(overrides?: CallOverrides): Promise<[boolean]>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        lastHarvest(overrides?: CallOverrides): Promise<[BigNumber]>;
        lendFarmRouter(overrides?: CallOverrides): Promise<[string]>;
        loanHealth(overrides?: CallOverrides): Promise<[BigNumber]>;
        maxAllowedMismatch(overrides?: CallOverrides): Promise<[BigNumber]>;
        maxDefaultPriceMismatch(overrides?: CallOverrides): Promise<[BigNumber]>;
        maxPriceOffset(overrides?: CallOverrides): Promise<[BigNumber]>;
        minLoanHealth(overrides?: CallOverrides): Promise<[BigNumber]>;
        onERC721Received(operator: PromiseOrValue<string>, from: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        onNFTAddToPosition(operator: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, lpAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        onNFTHarvest(send: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, grailAmount: PromiseOrValue<BigNumberish>, xGrailAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        onNFTWithdraw(operator: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, lpAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        oracle(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        pair(overrides?: CallOverrides): Promise<[string]>;
        pendingOwner(overrides?: CallOverrides): Promise<[string]>;
        positionId(overrides?: CallOverrides): Promise<[BigNumber]>;
        rebalance(maxSlippage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        rebalanceLoan(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        rebalanceThreshold(overrides?: CallOverrides): Promise<[number]>;
        redeem(recipient: PromiseOrValue<string>, removeLp: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        redeemCollateral(repayAmnt: PromiseOrValue<BigNumberish>, withdrawAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeLiquidity(removeLp: PromiseOrValue<BigNumberish>, maxSlippage: PromiseOrValue<BigNumberish>, 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>;
        safeCollateralRatio(overrides?: CallOverrides): Promise<[BigNumber]>;
        setMaxDefaultPriceMismatch(maxDefaultPriceMismatch_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setMinLoanHeath(minLoanHealth_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRebalanceThreshold(rebalanceThreshold_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setSafeCollateralRatio(safeCollateralRatio_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        short(overrides?: CallOverrides): Promise<[string]>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[boolean]>;
        transferOwnership(_pendingOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        underlying(overrides?: CallOverrides): Promise<[string]>;
        vault(overrides?: CallOverrides): Promise<[string]>;
        version(overrides?: CallOverrides): Promise<[BigNumber]>;
        withdrawFromFarm(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        xGrailToken(overrides?: CallOverrides): Promise<[string]>;
    };
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    GUARDIAN(overrides?: CallOverrides): Promise<string>;
    INTEREST_RATE_MODE_VARIABLE(overrides?: CallOverrides): Promise<BigNumber>;
    MANAGER(overrides?: CallOverrides): Promise<string>;
    acceptOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    balanceOfUnderlying(overrides?: CallOverrides): Promise<BigNumber>;
    cTokenBorrow(overrides?: CallOverrides): Promise<string>;
    cTokenLend(overrides?: CallOverrides): Promise<string>;
    closePosition(maxSlippage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    collateralToUnderlying(overrides?: CallOverrides): Promise<BigNumber>;
    comptroller(overrides?: CallOverrides): Promise<string>;
    decimals(overrides?: CallOverrides): Promise<number>;
    deposit(underlyingAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    emergencyAction(actions: EActionStruct[], overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    farmRouter(overrides?: CallOverrides): Promise<string>;
    getAndUpdateTvl(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getCollateralRatio(overrides?: CallOverrides): Promise<BigNumber>;
    getDepositAmnt(uAmnt: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getLPBalances(overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        underlyingLp: BigNumber;
        shortLp: BigNumber;
    }>;
    getLpBalance(overrides?: CallOverrides): Promise<BigNumber>;
    getLpToken(overrides?: CallOverrides): Promise<string>;
    getMaxDeposit(overrides?: CallOverrides): Promise<BigNumber>;
    getMaxTvl(overrides?: CallOverrides): Promise<BigNumber>;
    getPositionOffset(overrides?: CallOverrides): Promise<BigNumber>;
    getPriceOffset(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>;
    getTvl(overrides?: CallOverrides): Promise<BigNumber>;
    getUnderlyingShortReserves(overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        reserveA: BigNumber;
        reserveB: BigNumber;
    }>;
    getWithdrawAmnt(lpTokens: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    harvest(uniParams: HarvestSwapParamsStruct[], lendingParams: HarvestSwapParamsStruct[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    harvestIsEnabled(overrides?: CallOverrides): Promise<boolean>;
    hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    lastHarvest(overrides?: CallOverrides): Promise<BigNumber>;
    lendFarmRouter(overrides?: CallOverrides): Promise<string>;
    loanHealth(overrides?: CallOverrides): Promise<BigNumber>;
    maxAllowedMismatch(overrides?: CallOverrides): Promise<BigNumber>;
    maxDefaultPriceMismatch(overrides?: CallOverrides): Promise<BigNumber>;
    maxPriceOffset(overrides?: CallOverrides): Promise<BigNumber>;
    minLoanHealth(overrides?: CallOverrides): Promise<BigNumber>;
    onERC721Received(operator: PromiseOrValue<string>, from: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    onNFTAddToPosition(operator: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, lpAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    onNFTHarvest(send: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, grailAmount: PromiseOrValue<BigNumberish>, xGrailAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    onNFTWithdraw(operator: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, lpAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    oracle(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    pair(overrides?: CallOverrides): Promise<string>;
    pendingOwner(overrides?: CallOverrides): Promise<string>;
    positionId(overrides?: CallOverrides): Promise<BigNumber>;
    rebalance(maxSlippage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    rebalanceLoan(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    rebalanceThreshold(overrides?: CallOverrides): Promise<number>;
    redeem(recipient: PromiseOrValue<string>, removeLp: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    redeemCollateral(repayAmnt: PromiseOrValue<BigNumberish>, withdrawAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeLiquidity(removeLp: PromiseOrValue<BigNumberish>, maxSlippage: PromiseOrValue<BigNumberish>, 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>;
    safeCollateralRatio(overrides?: CallOverrides): Promise<BigNumber>;
    setMaxDefaultPriceMismatch(maxDefaultPriceMismatch_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setMinLoanHeath(minLoanHealth_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRebalanceThreshold(rebalanceThreshold_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setSafeCollateralRatio(safeCollateralRatio_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    short(overrides?: CallOverrides): Promise<string>;
    supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
    transferOwnership(_pendingOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    underlying(overrides?: CallOverrides): Promise<string>;
    vault(overrides?: CallOverrides): Promise<string>;
    version(overrides?: CallOverrides): Promise<BigNumber>;
    withdrawFromFarm(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    xGrailToken(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        GUARDIAN(overrides?: CallOverrides): Promise<string>;
        INTEREST_RATE_MODE_VARIABLE(overrides?: CallOverrides): Promise<BigNumber>;
        MANAGER(overrides?: CallOverrides): Promise<string>;
        acceptOwnership(overrides?: CallOverrides): Promise<void>;
        balanceOfUnderlying(overrides?: CallOverrides): Promise<BigNumber>;
        cTokenBorrow(overrides?: CallOverrides): Promise<string>;
        cTokenLend(overrides?: CallOverrides): Promise<string>;
        closePosition(maxSlippage: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        collateralToUnderlying(overrides?: CallOverrides): Promise<BigNumber>;
        comptroller(overrides?: CallOverrides): Promise<string>;
        decimals(overrides?: CallOverrides): Promise<number>;
        deposit(underlyingAmnt: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        emergencyAction(actions: EActionStruct[], overrides?: CallOverrides): Promise<void>;
        farmRouter(overrides?: CallOverrides): Promise<string>;
        getAndUpdateTvl(overrides?: CallOverrides): Promise<BigNumber>;
        getCollateralRatio(overrides?: CallOverrides): Promise<BigNumber>;
        getDepositAmnt(uAmnt: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getLPBalances(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            underlyingLp: BigNumber;
            shortLp: BigNumber;
        }>;
        getLpBalance(overrides?: CallOverrides): Promise<BigNumber>;
        getLpToken(overrides?: CallOverrides): Promise<string>;
        getMaxDeposit(overrides?: CallOverrides): Promise<BigNumber>;
        getMaxTvl(overrides?: CallOverrides): Promise<BigNumber>;
        getPositionOffset(overrides?: CallOverrides): Promise<BigNumber>;
        getPriceOffset(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>;
        getTvl(overrides?: CallOverrides): Promise<BigNumber>;
        getUnderlyingShortReserves(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            reserveA: BigNumber;
            reserveB: BigNumber;
        }>;
        getWithdrawAmnt(lpTokens: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        harvest(uniParams: HarvestSwapParamsStruct[], lendingParams: HarvestSwapParamsStruct[], overrides?: CallOverrides): Promise<[
            BigNumber[],
            BigNumber[]
        ] & {
            farmHarvest: BigNumber[];
            lendHarvest: BigNumber[];
        }>;
        harvestIsEnabled(overrides?: CallOverrides): Promise<boolean>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        lastHarvest(overrides?: CallOverrides): Promise<BigNumber>;
        lendFarmRouter(overrides?: CallOverrides): Promise<string>;
        loanHealth(overrides?: CallOverrides): Promise<BigNumber>;
        maxAllowedMismatch(overrides?: CallOverrides): Promise<BigNumber>;
        maxDefaultPriceMismatch(overrides?: CallOverrides): Promise<BigNumber>;
        maxPriceOffset(overrides?: CallOverrides): Promise<BigNumber>;
        minLoanHealth(overrides?: CallOverrides): Promise<BigNumber>;
        onERC721Received(operator: PromiseOrValue<string>, from: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        onNFTAddToPosition(operator: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, lpAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        onNFTHarvest(send: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, grailAmount: PromiseOrValue<BigNumberish>, xGrailAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        onNFTWithdraw(operator: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, lpAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        oracle(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        pair(overrides?: CallOverrides): Promise<string>;
        pendingOwner(overrides?: CallOverrides): Promise<string>;
        positionId(overrides?: CallOverrides): Promise<BigNumber>;
        rebalance(maxSlippage: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        rebalanceLoan(overrides?: CallOverrides): Promise<void>;
        rebalanceThreshold(overrides?: CallOverrides): Promise<number>;
        redeem(recipient: PromiseOrValue<string>, removeLp: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        redeemCollateral(repayAmnt: PromiseOrValue<BigNumberish>, withdrawAmnt: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        removeLiquidity(removeLp: PromiseOrValue<BigNumberish>, maxSlippage: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        safeCollateralRatio(overrides?: CallOverrides): Promise<BigNumber>;
        setMaxDefaultPriceMismatch(maxDefaultPriceMismatch_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setMinLoanHeath(minLoanHealth_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setRebalanceThreshold(rebalanceThreshold_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setSafeCollateralRatio(safeCollateralRatio_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        short(overrides?: CallOverrides): Promise<string>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        transferOwnership(_pendingOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        underlying(overrides?: CallOverrides): Promise<string>;
        vault(overrides?: CallOverrides): Promise<string>;
        version(overrides?: CallOverrides): Promise<BigNumber>;
        withdrawFromFarm(overrides?: CallOverrides): Promise<void>;
        xGrailToken(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "Deposit(address,uint256)"(sender?: null, amount?: null): DepositEventFilter;
        Deposit(sender?: null, amount?: null): DepositEventFilter;
        "EmergencyAction(address,bytes)"(target?: PromiseOrValue<string> | null, data?: null): EmergencyActionEventFilter;
        EmergencyAction(target?: PromiseOrValue<string> | null, data?: null): EmergencyActionEventFilter;
        "EmergencyWithdraw(address,address[])"(recipient?: PromiseOrValue<string> | null, tokens?: null): EmergencyWithdrawEventFilter;
        EmergencyWithdraw(recipient?: PromiseOrValue<string> | null, tokens?: null): EmergencyWithdrawEventFilter;
        "Harvest(uint256)"(harvested?: null): HarvestEventFilter;
        Harvest(harvested?: null): HarvestEventFilter;
        "HarvestedToken(address,uint256)"(token?: PromiseOrValue<string> | null, amount?: null): HarvestedTokenEventFilter;
        HarvestedToken(token?: PromiseOrValue<string> | null, amount?: null): HarvestedTokenEventFilter;
        "OwnershipTransferInitiated(address,address)"(owner?: null, pendingOwner?: null): OwnershipTransferInitiatedEventFilter;
        OwnershipTransferInitiated(owner?: null, pendingOwner?: null): OwnershipTransferInitiatedEventFilter;
        "OwnershipTransferred(address,address)"(oldOwner?: null, newOwner?: null): OwnershipTransferredEventFilter;
        OwnershipTransferred(oldOwner?: null, newOwner?: null): OwnershipTransferredEventFilter;
        "Rebalance(uint256,uint256,uint256)"(shortPrice?: null, tvlBeforeRebalance?: null, positionOffset?: null): RebalanceEventFilter;
        Rebalance(shortPrice?: null, tvlBeforeRebalance?: null, positionOffset?: null): RebalanceEventFilter;
        "RebalanceLoan(address,uint256,uint256)"(sender?: PromiseOrValue<string> | null, startLoanHealth?: null, updatedLoanHealth?: null): RebalanceLoanEventFilter;
        RebalanceLoan(sender?: PromiseOrValue<string> | null, startLoanHealth?: null, updatedLoanHealth?: null): RebalanceLoanEventFilter;
        "Redeem(address,uint256)"(sender?: null, amount?: null): RedeemEventFilter;
        Redeem(sender?: null, amount?: null): RedeemEventFilter;
        "RoleAdminChanged(bytes32,bytes32,bytes32)"(role?: PromiseOrValue<BytesLike> | null, previousAdminRole?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        RoleAdminChanged(role?: PromiseOrValue<BytesLike> | null, previousAdminRole?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        "RoleGranted(bytes32,address,address)"(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleGrantedEventFilter;
        RoleGranted(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleGrantedEventFilter;
        "RoleRevoked(bytes32,address,address)"(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleRevokedEventFilter;
        RoleRevoked(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleRevokedEventFilter;
        "SetMaxDefaultPriceMismatch(uint256)"(maxDefaultPriceMismatch?: null): SetMaxDefaultPriceMismatchEventFilter;
        SetMaxDefaultPriceMismatch(maxDefaultPriceMismatch?: null): SetMaxDefaultPriceMismatchEventFilter;
        "SetMaxTvl(uint256)"(maxTvl?: null): SetMaxTvlEventFilter;
        SetMaxTvl(maxTvl?: null): SetMaxTvlEventFilter;
        "SetRebalanceThreshold(uint256)"(rebalanceThreshold?: null): SetRebalanceThresholdEventFilter;
        SetRebalanceThreshold(rebalanceThreshold?: null): SetRebalanceThresholdEventFilter;
        "SetSafeCollateralRaio(uint256)"(collateralRatio?: null): SetSafeCollateralRaioEventFilter;
        SetSafeCollateralRaio(collateralRatio?: null): SetSafeCollateralRaioEventFilter;
        "UpdatePosition()"(): UpdatePositionEventFilter;
        UpdatePosition(): UpdatePositionEventFilter;
        "setMinLoanHealth(uint256)"(loanHealth?: null): setMinLoanHealthEventFilter;
        setMinLoanHealth(loanHealth?: null): setMinLoanHealthEventFilter;
    };
    estimateGas: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        GUARDIAN(overrides?: CallOverrides): Promise<BigNumber>;
        INTEREST_RATE_MODE_VARIABLE(overrides?: CallOverrides): Promise<BigNumber>;
        MANAGER(overrides?: CallOverrides): Promise<BigNumber>;
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        balanceOfUnderlying(overrides?: CallOverrides): Promise<BigNumber>;
        cTokenBorrow(overrides?: CallOverrides): Promise<BigNumber>;
        cTokenLend(overrides?: CallOverrides): Promise<BigNumber>;
        closePosition(maxSlippage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        collateralToUnderlying(overrides?: CallOverrides): Promise<BigNumber>;
        comptroller(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        deposit(underlyingAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        emergencyAction(actions: EActionStruct[], overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        farmRouter(overrides?: CallOverrides): Promise<BigNumber>;
        getAndUpdateTvl(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getCollateralRatio(overrides?: CallOverrides): Promise<BigNumber>;
        getDepositAmnt(uAmnt: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getLPBalances(overrides?: CallOverrides): Promise<BigNumber>;
        getLpBalance(overrides?: CallOverrides): Promise<BigNumber>;
        getLpToken(overrides?: CallOverrides): Promise<BigNumber>;
        getMaxDeposit(overrides?: CallOverrides): Promise<BigNumber>;
        getMaxTvl(overrides?: CallOverrides): Promise<BigNumber>;
        getPositionOffset(overrides?: CallOverrides): Promise<BigNumber>;
        getPriceOffset(overrides?: CallOverrides): Promise<BigNumber>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        getTVL(overrides?: CallOverrides): Promise<BigNumber>;
        getTotalTVL(overrides?: CallOverrides): Promise<BigNumber>;
        getTvl(overrides?: CallOverrides): Promise<BigNumber>;
        getUnderlyingShortReserves(overrides?: CallOverrides): Promise<BigNumber>;
        getWithdrawAmnt(lpTokens: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        harvest(uniParams: HarvestSwapParamsStruct[], lendingParams: HarvestSwapParamsStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        harvestIsEnabled(overrides?: CallOverrides): Promise<BigNumber>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        lastHarvest(overrides?: CallOverrides): Promise<BigNumber>;
        lendFarmRouter(overrides?: CallOverrides): Promise<BigNumber>;
        loanHealth(overrides?: CallOverrides): Promise<BigNumber>;
        maxAllowedMismatch(overrides?: CallOverrides): Promise<BigNumber>;
        maxDefaultPriceMismatch(overrides?: CallOverrides): Promise<BigNumber>;
        maxPriceOffset(overrides?: CallOverrides): Promise<BigNumber>;
        minLoanHealth(overrides?: CallOverrides): Promise<BigNumber>;
        onERC721Received(operator: PromiseOrValue<string>, from: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        onNFTAddToPosition(operator: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, lpAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        onNFTHarvest(send: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, grailAmount: PromiseOrValue<BigNumberish>, xGrailAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        onNFTWithdraw(operator: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, lpAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        oracle(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        pair(overrides?: CallOverrides): Promise<BigNumber>;
        pendingOwner(overrides?: CallOverrides): Promise<BigNumber>;
        positionId(overrides?: CallOverrides): Promise<BigNumber>;
        rebalance(maxSlippage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        rebalanceLoan(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        rebalanceThreshold(overrides?: CallOverrides): Promise<BigNumber>;
        redeem(recipient: PromiseOrValue<string>, removeLp: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        redeemCollateral(repayAmnt: PromiseOrValue<BigNumberish>, withdrawAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeLiquidity(removeLp: PromiseOrValue<BigNumberish>, maxSlippage: PromiseOrValue<BigNumberish>, 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>;
        safeCollateralRatio(overrides?: CallOverrides): Promise<BigNumber>;
        setMaxDefaultPriceMismatch(maxDefaultPriceMismatch_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setMinLoanHeath(minLoanHealth_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRebalanceThreshold(rebalanceThreshold_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setSafeCollateralRatio(safeCollateralRatio_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        short(overrides?: CallOverrides): Promise<BigNumber>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(_pendingOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        underlying(overrides?: CallOverrides): Promise<BigNumber>;
        vault(overrides?: CallOverrides): Promise<BigNumber>;
        version(overrides?: CallOverrides): Promise<BigNumber>;
        withdrawFromFarm(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        xGrailToken(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        GUARDIAN(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        INTEREST_RATE_MODE_VARIABLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MANAGER(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        balanceOfUnderlying(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        cTokenBorrow(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        cTokenLend(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        closePosition(maxSlippage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        collateralToUnderlying(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        comptroller(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deposit(underlyingAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        emergencyAction(actions: EActionStruct[], overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        farmRouter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAndUpdateTvl(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getCollateralRatio(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getDepositAmnt(uAmnt: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLPBalances(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLpBalance(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLpToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getMaxDeposit(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getMaxTvl(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPositionOffset(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPriceOffset(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTVL(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTotalTVL(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTvl(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getUnderlyingShortReserves(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getWithdrawAmnt(lpTokens: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        harvest(uniParams: HarvestSwapParamsStruct[], lendingParams: HarvestSwapParamsStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        harvestIsEnabled(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastHarvest(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lendFarmRouter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        loanHealth(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        maxAllowedMismatch(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        maxDefaultPriceMismatch(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        maxPriceOffset(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        minLoanHealth(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        onERC721Received(operator: PromiseOrValue<string>, from: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        onNFTAddToPosition(operator: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, lpAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        onNFTHarvest(send: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, grailAmount: PromiseOrValue<BigNumberish>, xGrailAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        onNFTWithdraw(operator: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, lpAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        oracle(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pair(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        positionId(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rebalance(maxSlippage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        rebalanceLoan(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        rebalanceThreshold(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        redeem(recipient: PromiseOrValue<string>, removeLp: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        redeemCollateral(repayAmnt: PromiseOrValue<BigNumberish>, withdrawAmnt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeLiquidity(removeLp: PromiseOrValue<BigNumberish>, maxSlippage: PromiseOrValue<BigNumberish>, 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>;
        safeCollateralRatio(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setMaxDefaultPriceMismatch(maxDefaultPriceMismatch_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setMinLoanHeath(minLoanHealth_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRebalanceThreshold(rebalanceThreshold_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setSafeCollateralRatio(safeCollateralRatio_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        short(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(_pendingOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        underlying(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        vault(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        version(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdrawFromFarm(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        xGrailToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
