import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common';
export declare type AssetStruct = {
    symbol: PromiseOrValue<BytesLike>;
    tokenAddress: PromiseOrValue<string>;
    id: PromiseOrValue<BigNumberish>;
    decimals: PromiseOrValue<BigNumberish>;
    flags: PromiseOrValue<BigNumberish>;
    _flagsPadding: PromiseOrValue<BigNumberish>;
    initialMarginRate: PromiseOrValue<BigNumberish>;
    maintenanceMarginRate: PromiseOrValue<BigNumberish>;
    minProfitRate: PromiseOrValue<BigNumberish>;
    minProfitTime: PromiseOrValue<BigNumberish>;
    positionFeeRate: PromiseOrValue<BigNumberish>;
    referenceOracle: PromiseOrValue<string>;
    referenceDeviation: PromiseOrValue<BigNumberish>;
    referenceOracleType: PromiseOrValue<BigNumberish>;
    halfSpread: PromiseOrValue<BigNumberish>;
    credit: PromiseOrValue<BigNumberish>;
    _reserved2: PromiseOrValue<BigNumberish>;
    collectedFee: PromiseOrValue<BigNumberish>;
    liquidationFeeRate: PromiseOrValue<BigNumberish>;
    spotLiquidity: PromiseOrValue<BigNumberish>;
    maxLongPositionSize: PromiseOrValue<BigNumberish>;
    totalLongPosition: PromiseOrValue<BigNumberish>;
    averageLongPrice: PromiseOrValue<BigNumberish>;
    maxShortPositionSize: PromiseOrValue<BigNumberish>;
    totalShortPosition: PromiseOrValue<BigNumberish>;
    averageShortPrice: PromiseOrValue<BigNumberish>;
    muxTokenAddress: PromiseOrValue<string>;
    spotWeight: PromiseOrValue<BigNumberish>;
    longFundingBaseRate8H: PromiseOrValue<BigNumberish>;
    longFundingLimitRate8H: PromiseOrValue<BigNumberish>;
    longCumulativeFundingRate: PromiseOrValue<BigNumberish>;
    shortCumulativeFunding: PromiseOrValue<BigNumberish>;
};
export declare type AssetStructOutput = [
    string,
    string,
    number,
    number,
    BigNumber,
    number,
    number,
    number,
    number,
    number,
    number,
    string,
    number,
    number,
    number,
    BigNumber,
    BigNumber,
    BigNumber,
    number,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    string,
    number,
    number,
    number,
    BigNumber,
    BigNumber
] & {
    symbol: string;
    tokenAddress: string;
    id: number;
    decimals: number;
    flags: BigNumber;
    _flagsPadding: number;
    initialMarginRate: number;
    maintenanceMarginRate: number;
    minProfitRate: number;
    minProfitTime: number;
    positionFeeRate: number;
    referenceOracle: string;
    referenceDeviation: number;
    referenceOracleType: number;
    halfSpread: number;
    credit: BigNumber;
    _reserved2: BigNumber;
    collectedFee: BigNumber;
    liquidationFeeRate: number;
    spotLiquidity: BigNumber;
    maxLongPositionSize: BigNumber;
    totalLongPosition: BigNumber;
    averageLongPrice: BigNumber;
    maxShortPositionSize: BigNumber;
    totalShortPosition: BigNumber;
    averageShortPrice: BigNumber;
    muxTokenAddress: string;
    spotWeight: number;
    longFundingBaseRate8H: number;
    longFundingLimitRate8H: number;
    longCumulativeFundingRate: BigNumber;
    shortCumulativeFunding: BigNumber;
};
export declare namespace Events {
    type ClosePositionArgsStruct = {
        subAccountId: PromiseOrValue<BytesLike>;
        collateralId: PromiseOrValue<BigNumberish>;
        profitAssetId: PromiseOrValue<BigNumberish>;
        isLong: PromiseOrValue<boolean>;
        amount: PromiseOrValue<BigNumberish>;
        assetPrice: PromiseOrValue<BigNumberish>;
        collateralPrice: PromiseOrValue<BigNumberish>;
        profitAssetPrice: PromiseOrValue<BigNumberish>;
        feeUsd: PromiseOrValue<BigNumberish>;
        hasProfit: PromiseOrValue<boolean>;
        pnlUsd: PromiseOrValue<BigNumberish>;
        remainPosition: PromiseOrValue<BigNumberish>;
        remainCollateral: PromiseOrValue<BigNumberish>;
    };
    type ClosePositionArgsStructOutput = [
        string,
        number,
        number,
        boolean,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        boolean,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        subAccountId: string;
        collateralId: number;
        profitAssetId: number;
        isLong: boolean;
        amount: BigNumber;
        assetPrice: BigNumber;
        collateralPrice: BigNumber;
        profitAssetPrice: BigNumber;
        feeUsd: BigNumber;
        hasProfit: boolean;
        pnlUsd: BigNumber;
        remainPosition: BigNumber;
        remainCollateral: BigNumber;
    };
    type LiquidateArgsStruct = {
        subAccountId: PromiseOrValue<BytesLike>;
        collateralId: PromiseOrValue<BigNumberish>;
        profitAssetId: PromiseOrValue<BigNumberish>;
        isLong: PromiseOrValue<boolean>;
        amount: PromiseOrValue<BigNumberish>;
        assetPrice: PromiseOrValue<BigNumberish>;
        collateralPrice: PromiseOrValue<BigNumberish>;
        profitAssetPrice: PromiseOrValue<BigNumberish>;
        feeUsd: PromiseOrValue<BigNumberish>;
        hasProfit: PromiseOrValue<boolean>;
        pnlUsd: PromiseOrValue<BigNumberish>;
        remainCollateral: PromiseOrValue<BigNumberish>;
    };
    type LiquidateArgsStructOutput = [
        string,
        number,
        number,
        boolean,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        boolean,
        BigNumber,
        BigNumber
    ] & {
        subAccountId: string;
        collateralId: number;
        profitAssetId: number;
        isLong: boolean;
        amount: BigNumber;
        assetPrice: BigNumber;
        collateralPrice: BigNumber;
        profitAssetPrice: BigNumber;
        feeUsd: BigNumber;
        hasProfit: boolean;
        pnlUsd: BigNumber;
        remainCollateral: BigNumber;
    };
    type OpenPositionArgsStruct = {
        subAccountId: PromiseOrValue<BytesLike>;
        collateralId: PromiseOrValue<BigNumberish>;
        isLong: PromiseOrValue<boolean>;
        amount: PromiseOrValue<BigNumberish>;
        assetPrice: PromiseOrValue<BigNumberish>;
        collateralPrice: PromiseOrValue<BigNumberish>;
        newEntryPrice: PromiseOrValue<BigNumberish>;
        feeUsd: PromiseOrValue<BigNumberish>;
        remainPosition: PromiseOrValue<BigNumberish>;
        remainCollateral: PromiseOrValue<BigNumberish>;
    };
    type OpenPositionArgsStructOutput = [
        string,
        number,
        boolean,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        subAccountId: string;
        collateralId: number;
        isLong: boolean;
        amount: BigNumber;
        assetPrice: BigNumber;
        collateralPrice: BigNumber;
        newEntryPrice: BigNumber;
        feeUsd: BigNumber;
        remainPosition: BigNumber;
        remainCollateral: BigNumber;
    };
    type WithdrawProfitArgsStruct = {
        subAccountId: PromiseOrValue<BytesLike>;
        collateralId: PromiseOrValue<BigNumberish>;
        profitAssetId: PromiseOrValue<BigNumberish>;
        isLong: PromiseOrValue<boolean>;
        withdrawRawAmount: PromiseOrValue<BigNumberish>;
        assetPrice: PromiseOrValue<BigNumberish>;
        collateralPrice: PromiseOrValue<BigNumberish>;
        profitAssetPrice: PromiseOrValue<BigNumberish>;
        entryPrice: PromiseOrValue<BigNumberish>;
        feeUsd: PromiseOrValue<BigNumberish>;
    };
    type WithdrawProfitArgsStructOutput = [
        string,
        number,
        number,
        boolean,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        subAccountId: string;
        collateralId: number;
        profitAssetId: number;
        isLong: boolean;
        withdrawRawAmount: BigNumber;
        assetPrice: BigNumber;
        collateralPrice: BigNumber;
        profitAssetPrice: BigNumber;
        entryPrice: BigNumber;
        feeUsd: BigNumber;
    };
}
export interface MuxPoolInterface extends utils.Interface {
    functions: {
        'closePosition(bytes32,uint96,uint8,uint96,uint96,uint96)': FunctionFragment;
        'depositCollateral(bytes32,uint256)': FunctionFragment;
        'getAllAssetInfo()': FunctionFragment;
        'getAssetAddress(uint8)': FunctionFragment;
        'getAssetInfo(uint8)': FunctionFragment;
        'getLiquidityPoolStorage()': FunctionFragment;
        'getSubAccount(bytes32)': FunctionFragment;
        'initialize(address,address,address,address,address,address)': FunctionFragment;
        'liquidate(bytes32,uint8,uint96,uint96,uint96)': FunctionFragment;
        'openPosition(bytes32,uint96,uint96,uint96)': FunctionFragment;
        'owner()': FunctionFragment;
        'renounceOwnership()': FunctionFragment;
        'takeOwnership()': FunctionFragment;
        'transferOwnership(address)': FunctionFragment;
        'upgradeChainedProxy(address)': FunctionFragment;
        'withdrawAllCollateral(bytes32)': FunctionFragment;
        'withdrawCollateral(bytes32,uint256,uint96,uint96)': FunctionFragment;
        'withdrawProfit(bytes32,uint256,uint8,uint96,uint96,uint96)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'closePosition' | 'depositCollateral' | 'getAllAssetInfo' | 'getAssetAddress' | 'getAssetInfo' | 'getLiquidityPoolStorage' | 'getSubAccount' | 'initialize' | 'liquidate' | 'openPosition' | 'owner' | 'renounceOwnership' | 'takeOwnership' | 'transferOwnership' | 'upgradeChainedProxy' | 'withdrawAllCollateral' | 'withdrawCollateral' | 'withdrawProfit'): FunctionFragment;
    encodeFunctionData(functionFragment: 'closePosition', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'depositCollateral', values: [PromiseOrValue<BytesLike>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getAllAssetInfo', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getAssetAddress', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getAssetInfo', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getLiquidityPoolStorage', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getSubAccount', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'initialize', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: 'liquidate', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'openPosition', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string;
    encodeFunctionData(functionFragment: 'takeOwnership', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transferOwnership', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'upgradeChainedProxy', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'withdrawAllCollateral', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'withdrawCollateral', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'withdrawProfit', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    decodeFunctionResult(functionFragment: 'closePosition', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositCollateral', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getAllAssetInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getAssetAddress', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getAssetInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getLiquidityPoolStorage', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getSubAccount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'liquidate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'openPosition', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'takeOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'upgradeChainedProxy', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawAllCollateral', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawCollateral', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawProfit', data: BytesLike): Result;
    events: {
        'AddAsset(uint8,bytes32,uint8,bool,address,address)': EventFragment;
        'AddLiquidity(address,uint8,uint96,uint96,uint96,uint96)': EventFragment;
        'BorrowAsset(uint8,address,address,uint256,uint256)': EventFragment;
        'ClaimBrokerGasRebate(address,uint32,uint256)': EventFragment;
        'ClosePosition(address,uint8,tuple)': EventFragment;
        'CollectedFee(uint8,uint96)': EventFragment;
        'DepositCollateral(bytes32,address,uint8,uint256,uint96)': EventFragment;
        'IssueMuxToken(uint8,bool,uint96)': EventFragment;
        'Liquidate(address,uint8,tuple)': EventFragment;
        'OpenPosition(address,uint8,tuple)': EventFragment;
        'OwnershipTransferred(address,address)': EventFragment;
        'PrepareToTransferOwnership(address)': EventFragment;
        'Rebalance(address,uint8,uint8,uint96,uint96,uint96,uint96)': EventFragment;
        'RedeemMuxToken(address,uint8,uint96)': EventFragment;
        'RemoveLiquidity(address,uint8,uint96,uint96,uint96,uint96)': EventFragment;
        'RepayAsset(uint8,address,address,uint256,uint256,uint256)': EventFragment;
        'SetAssetFlags(uint8,uint56,uint56)': EventFragment;
        'SetAssetParams(uint8,bytes32,uint32,uint32,uint32,uint32,uint32,uint32,uint96,uint96,uint32,uint32)': EventFragment;
        'SetBrokerGasRebate(uint96)': EventFragment;
        'SetFundingInterval(uint32,uint32)': EventFragment;
        'SetFundingParams(uint8,uint32,uint32)': EventFragment;
        'SetLiquidityFee(uint32,uint32)': EventFragment;
        'SetLiquidityManager(address,bool)': EventFragment;
        'SetMaintainer(address)': EventFragment;
        'SetMlpPriceRange(uint96,uint96)': EventFragment;
        'SetReferenceOracle(uint8,uint8,address,uint32)': EventFragment;
        'SetStrictStableDeviation(uint32)': EventFragment;
        'TransferLiquidity(address,address,uint8,uint256)': EventFragment;
        'UpdateFundingRate(uint8,uint32,uint128,uint32,uint128)': EventFragment;
        'UpdateSequence(uint32)': EventFragment;
        'UpgradeChainedProxy(address,address)': EventFragment;
        'WithdrawCollateral(bytes32,address,uint8,uint256,uint96)': EventFragment;
        'WithdrawCollectedFee(uint8,uint96)': EventFragment;
        'WithdrawProfit(address,uint8,tuple)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'AddAsset'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'AddLiquidity'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'BorrowAsset'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ClaimBrokerGasRebate'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ClosePosition'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'CollectedFee'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'DepositCollateral'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'IssueMuxToken'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Liquidate'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OpenPosition'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PrepareToTransferOwnership'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Rebalance'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RedeemMuxToken'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RemoveLiquidity'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RepayAsset'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetAssetFlags'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetAssetParams'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetBrokerGasRebate'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetFundingInterval'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetFundingParams'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetLiquidityFee'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetLiquidityManager'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetMaintainer'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetMlpPriceRange'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetReferenceOracle'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetStrictStableDeviation'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'TransferLiquidity'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdateFundingRate'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdateSequence'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpgradeChainedProxy'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'WithdrawCollateral'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'WithdrawCollectedFee'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'WithdrawProfit'): EventFragment;
}
export interface AddAssetEventObject {
    id: number;
    symbol: string;
    decimals: number;
    isStable: boolean;
    tokenAddress: string;
    muxTokenAddress: string;
}
export declare type AddAssetEvent = TypedEvent<[number, string, number, boolean, string, string], AddAssetEventObject>;
export declare type AddAssetEventFilter = TypedEventFilter<AddAssetEvent>;
export interface AddLiquidityEventObject {
    trader: string;
    tokenId: number;
    tokenPrice: BigNumber;
    mlpPrice: BigNumber;
    mlpAmount: BigNumber;
    fee: BigNumber;
}
export declare type AddLiquidityEvent = TypedEvent<[
    string,
    number,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], AddLiquidityEventObject>;
export declare type AddLiquidityEventFilter = TypedEventFilter<AddLiquidityEvent>;
export interface BorrowAssetEventObject {
    assetId: number;
    project: string;
    borrower: string;
    rawBorrowAmount: BigNumber;
    rawFee: BigNumber;
}
export declare type BorrowAssetEvent = TypedEvent<[number, string, string, BigNumber, BigNumber], BorrowAssetEventObject>;
export declare type BorrowAssetEventFilter = TypedEventFilter<BorrowAssetEvent>;
export interface ClaimBrokerGasRebateEventObject {
    receiver: string;
    transactions: number;
    rawAmount: BigNumber;
}
export declare type ClaimBrokerGasRebateEvent = TypedEvent<[string, number, BigNumber], ClaimBrokerGasRebateEventObject>;
export declare type ClaimBrokerGasRebateEventFilter = TypedEventFilter<ClaimBrokerGasRebateEvent>;
export interface ClosePositionEventObject {
    trader: string;
    assetId: number;
    args: Events.ClosePositionArgsStructOutput;
}
export declare type ClosePositionEvent = TypedEvent<[
    string,
    number,
    Events.ClosePositionArgsStructOutput
], ClosePositionEventObject>;
export declare type ClosePositionEventFilter = TypedEventFilter<ClosePositionEvent>;
export interface CollectedFeeEventObject {
    tokenId: number;
    fee: BigNumber;
}
export declare type CollectedFeeEvent = TypedEvent<[number, BigNumber], CollectedFeeEventObject>;
export declare type CollectedFeeEventFilter = TypedEventFilter<CollectedFeeEvent>;
export interface DepositCollateralEventObject {
    subAccountId: string;
    trader: string;
    collateralId: number;
    rawAmount: BigNumber;
    wadAmount: BigNumber;
}
export declare type DepositCollateralEvent = TypedEvent<[
    string,
    string,
    number,
    BigNumber,
    BigNumber
], DepositCollateralEventObject>;
export declare type DepositCollateralEventFilter = TypedEventFilter<DepositCollateralEvent>;
export interface IssueMuxTokenEventObject {
    tokenId: number;
    isStable: boolean;
    muxTokenAmount: BigNumber;
}
export declare type IssueMuxTokenEvent = TypedEvent<[number, boolean, BigNumber], IssueMuxTokenEventObject>;
export declare type IssueMuxTokenEventFilter = TypedEventFilter<IssueMuxTokenEvent>;
export interface LiquidateEventObject {
    trader: string;
    assetId: number;
    args: Events.LiquidateArgsStructOutput;
}
export declare type LiquidateEvent = TypedEvent<[string, number, Events.LiquidateArgsStructOutput], LiquidateEventObject>;
export declare type LiquidateEventFilter = TypedEventFilter<LiquidateEvent>;
export interface OpenPositionEventObject {
    trader: string;
    assetId: number;
    args: Events.OpenPositionArgsStructOutput;
}
export declare type OpenPositionEvent = TypedEvent<[
    string,
    number,
    Events.OpenPositionArgsStructOutput
], OpenPositionEventObject>;
export declare type OpenPositionEventFilter = TypedEventFilter<OpenPositionEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export declare type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>;
export declare type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface PrepareToTransferOwnershipEventObject {
    pendingOwner: string;
}
export declare type PrepareToTransferOwnershipEvent = TypedEvent<[string], PrepareToTransferOwnershipEventObject>;
export declare type PrepareToTransferOwnershipEventFilter = TypedEventFilter<PrepareToTransferOwnershipEvent>;
export interface RebalanceEventObject {
    rebalancer: string;
    tokenId0: number;
    tokenId1: number;
    price0: BigNumber;
    price1: BigNumber;
    rawAmount0: BigNumber;
    rawAmount1: BigNumber;
}
export declare type RebalanceEvent = TypedEvent<[
    string,
    number,
    number,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], RebalanceEventObject>;
export declare type RebalanceEventFilter = TypedEventFilter<RebalanceEvent>;
export interface RedeemMuxTokenEventObject {
    trader: string;
    tokenId: number;
    muxTokenAmount: BigNumber;
}
export declare type RedeemMuxTokenEvent = TypedEvent<[string, number, BigNumber], RedeemMuxTokenEventObject>;
export declare type RedeemMuxTokenEventFilter = TypedEventFilter<RedeemMuxTokenEvent>;
export interface RemoveLiquidityEventObject {
    trader: string;
    tokenId: number;
    tokenPrice: BigNumber;
    mlpPrice: BigNumber;
    mlpAmount: BigNumber;
    fee: BigNumber;
}
export declare type RemoveLiquidityEvent = TypedEvent<[
    string,
    number,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], RemoveLiquidityEventObject>;
export declare type RemoveLiquidityEventFilter = TypedEventFilter<RemoveLiquidityEvent>;
export interface RepayAssetEventObject {
    assetId: number;
    project: string;
    repayer: string;
    rawRepayAmount: BigNumber;
    rawFee: BigNumber;
    badDebt: BigNumber;
}
export declare type RepayAssetEvent = TypedEvent<[
    number,
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber
], RepayAssetEventObject>;
export declare type RepayAssetEventFilter = TypedEventFilter<RepayAssetEvent>;
export interface SetAssetFlagsEventObject {
    assetId: number;
    oldFlags: BigNumber;
    newFlags: BigNumber;
}
export declare type SetAssetFlagsEvent = TypedEvent<[number, BigNumber, BigNumber], SetAssetFlagsEventObject>;
export declare type SetAssetFlagsEventFilter = TypedEventFilter<SetAssetFlagsEvent>;
export interface SetAssetParamsEventObject {
    assetId: number;
    symbol: string;
    newInitialMarginRate: number;
    newMaintenanceMarginRate: number;
    newPositionFeeRate: number;
    newLiquidationFeeRate: number;
    newMinProfitRate: number;
    newMinProfitTime: number;
    newMaxLongPositionSize: BigNumber;
    newMaxShortPositionSize: BigNumber;
    newSpotWeight: number;
    newHalfSpread: number;
}
export declare type SetAssetParamsEvent = TypedEvent<[
    number,
    string,
    number,
    number,
    number,
    number,
    number,
    number,
    BigNumber,
    BigNumber,
    number,
    number
], SetAssetParamsEventObject>;
export declare type SetAssetParamsEventFilter = TypedEventFilter<SetAssetParamsEvent>;
export interface SetBrokerGasRebateEventObject {
    newBrokerGasRebate: BigNumber;
}
export declare type SetBrokerGasRebateEvent = TypedEvent<[BigNumber], SetBrokerGasRebateEventObject>;
export declare type SetBrokerGasRebateEventFilter = TypedEventFilter<SetBrokerGasRebateEvent>;
export interface SetFundingIntervalEventObject {
    oldFundingInterval: number;
    newFundingInterval: number;
}
export declare type SetFundingIntervalEvent = TypedEvent<[number, number], SetFundingIntervalEventObject>;
export declare type SetFundingIntervalEventFilter = TypedEventFilter<SetFundingIntervalEvent>;
export interface SetFundingParamsEventObject {
    assetId: number;
    newBaseRate8H: number;
    newLimitRate8H: number;
}
export declare type SetFundingParamsEvent = TypedEvent<[number, number, number], SetFundingParamsEventObject>;
export declare type SetFundingParamsEventFilter = TypedEventFilter<SetFundingParamsEvent>;
export interface SetLiquidityFeeEventObject {
    newLiquidityBaseFeeRate: number;
    newLiquidityDynamicFeeRate: number;
}
export declare type SetLiquidityFeeEvent = TypedEvent<[number, number], SetLiquidityFeeEventObject>;
export declare type SetLiquidityFeeEventFilter = TypedEventFilter<SetLiquidityFeeEvent>;
export interface SetLiquidityManagerEventObject {
    newLiquidityManager: string;
    isAdd: boolean;
}
export declare type SetLiquidityManagerEvent = TypedEvent<[string, boolean], SetLiquidityManagerEventObject>;
export declare type SetLiquidityManagerEventFilter = TypedEventFilter<SetLiquidityManagerEvent>;
export interface SetMaintainerEventObject {
    newMaintainer: string;
}
export declare type SetMaintainerEvent = TypedEvent<[string], SetMaintainerEventObject>;
export declare type SetMaintainerEventFilter = TypedEventFilter<SetMaintainerEvent>;
export interface SetMlpPriceRangeEventObject {
    newLowerBound: BigNumber;
    newUpperBound: BigNumber;
}
export declare type SetMlpPriceRangeEvent = TypedEvent<[BigNumber, BigNumber], SetMlpPriceRangeEventObject>;
export declare type SetMlpPriceRangeEventFilter = TypedEventFilter<SetMlpPriceRangeEvent>;
export interface SetReferenceOracleEventObject {
    assetId: number;
    referenceOracleType: number;
    referenceOracle: string;
    referenceDeviation: number;
}
export declare type SetReferenceOracleEvent = TypedEvent<[number, number, string, number], SetReferenceOracleEventObject>;
export declare type SetReferenceOracleEventFilter = TypedEventFilter<SetReferenceOracleEvent>;
export interface SetStrictStableDeviationEventObject {
    newStrictStableDeviation: number;
}
export declare type SetStrictStableDeviationEvent = TypedEvent<[number], SetStrictStableDeviationEventObject>;
export declare type SetStrictStableDeviationEventFilter = TypedEventFilter<SetStrictStableDeviationEvent>;
export interface TransferLiquidityEventObject {
    sender: string;
    recipient: string;
    assetId: number;
    amount: BigNumber;
}
export declare type TransferLiquidityEvent = TypedEvent<[string, string, number, BigNumber], TransferLiquidityEventObject>;
export declare type TransferLiquidityEventFilter = TypedEventFilter<TransferLiquidityEvent>;
export interface UpdateFundingRateEventObject {
    tokenId: number;
    longFundingRate: number;
    longCumulativeFundingRate: BigNumber;
    shortFundingRate: number;
    shortCumulativeFunding: BigNumber;
}
export declare type UpdateFundingRateEvent = TypedEvent<[
    number,
    number,
    BigNumber,
    number,
    BigNumber
], UpdateFundingRateEventObject>;
export declare type UpdateFundingRateEventFilter = TypedEventFilter<UpdateFundingRateEvent>;
export interface UpdateSequenceEventObject {
    sequence: number;
}
export declare type UpdateSequenceEvent = TypedEvent<[number], UpdateSequenceEventObject>;
export declare type UpdateSequenceEventFilter = TypedEventFilter<UpdateSequenceEvent>;
export interface UpgradeChainedProxyEventObject {
    prevNextHop: string;
    nextHop: string;
}
export declare type UpgradeChainedProxyEvent = TypedEvent<[string, string], UpgradeChainedProxyEventObject>;
export declare type UpgradeChainedProxyEventFilter = TypedEventFilter<UpgradeChainedProxyEvent>;
export interface WithdrawCollateralEventObject {
    subAccountId: string;
    trader: string;
    collateralId: number;
    rawAmount: BigNumber;
    wadAmount: BigNumber;
}
export declare type WithdrawCollateralEvent = TypedEvent<[
    string,
    string,
    number,
    BigNumber,
    BigNumber
], WithdrawCollateralEventObject>;
export declare type WithdrawCollateralEventFilter = TypedEventFilter<WithdrawCollateralEvent>;
export interface WithdrawCollectedFeeEventObject {
    assetId: number;
    collectedFee: BigNumber;
}
export declare type WithdrawCollectedFeeEvent = TypedEvent<[number, BigNumber], WithdrawCollectedFeeEventObject>;
export declare type WithdrawCollectedFeeEventFilter = TypedEventFilter<WithdrawCollectedFeeEvent>;
export interface WithdrawProfitEventObject {
    trader: string;
    assetId: number;
    args: Events.WithdrawProfitArgsStructOutput;
}
export declare type WithdrawProfitEvent = TypedEvent<[
    string,
    number,
    Events.WithdrawProfitArgsStructOutput
], WithdrawProfitEventObject>;
export declare type WithdrawProfitEventFilter = TypedEventFilter<WithdrawProfitEvent>;
export interface MuxPool extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: MuxPoolInterface;
    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: {
        closePosition(subAccountId: PromiseOrValue<BytesLike>, amount: PromiseOrValue<BigNumberish>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        depositCollateral(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getAllAssetInfo(overrides?: CallOverrides): Promise<[AssetStructOutput[]]>;
        getAssetAddress(assetId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        getAssetInfo(assetId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[AssetStructOutput]>;
        getLiquidityPoolStorage(overrides?: CallOverrides): Promise<[
            number[],
            [BigNumber, BigNumber]
        ] & {
            u32s: number[];
            u96s: [BigNumber, BigNumber];
        }>;
        getSubAccount(subAccountId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            number,
            BigNumber,
            BigNumber
        ] & {
            collateral: BigNumber;
            size: BigNumber;
            lastIncreasedTime: number;
            entryPrice: BigNumber;
            entryFunding: BigNumber;
        }>;
        initialize(nextHop: PromiseOrValue<string>, mlp: PromiseOrValue<string>, orderBook: PromiseOrValue<string>, weth: PromiseOrValue<string>, nativeUnwrapper: PromiseOrValue<string>, vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        liquidate(subAccountId: PromiseOrValue<BytesLike>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        openPosition(subAccountId: PromiseOrValue<BytesLike>, amount: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        takeOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        upgradeChainedProxy(nextHop: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawAllCollateral(subAccountId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawCollateral(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawProfit(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    closePosition(subAccountId: PromiseOrValue<BytesLike>, amount: PromiseOrValue<BigNumberish>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    depositCollateral(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getAllAssetInfo(overrides?: CallOverrides): Promise<AssetStructOutput[]>;
    getAssetAddress(assetId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    getAssetInfo(assetId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<AssetStructOutput>;
    getLiquidityPoolStorage(overrides?: CallOverrides): Promise<[
        number[],
        [BigNumber, BigNumber]
    ] & {
        u32s: number[];
        u96s: [BigNumber, BigNumber];
    }>;
    getSubAccount(subAccountId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        number,
        BigNumber,
        BigNumber
    ] & {
        collateral: BigNumber;
        size: BigNumber;
        lastIncreasedTime: number;
        entryPrice: BigNumber;
        entryFunding: BigNumber;
    }>;
    initialize(nextHop: PromiseOrValue<string>, mlp: PromiseOrValue<string>, orderBook: PromiseOrValue<string>, weth: PromiseOrValue<string>, nativeUnwrapper: PromiseOrValue<string>, vault: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    liquidate(subAccountId: PromiseOrValue<BytesLike>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    openPosition(subAccountId: PromiseOrValue<BytesLike>, amount: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    owner(overrides?: CallOverrides): Promise<string>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    takeOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    upgradeChainedProxy(nextHop: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawAllCollateral(subAccountId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawCollateral(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawProfit(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        closePosition(subAccountId: PromiseOrValue<BytesLike>, amount: PromiseOrValue<BigNumberish>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        depositCollateral(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        getAllAssetInfo(overrides?: CallOverrides): Promise<AssetStructOutput[]>;
        getAssetAddress(assetId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        getAssetInfo(assetId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<AssetStructOutput>;
        getLiquidityPoolStorage(overrides?: CallOverrides): Promise<[
            number[],
            [BigNumber, BigNumber]
        ] & {
            u32s: number[];
            u96s: [BigNumber, BigNumber];
        }>;
        getSubAccount(subAccountId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            number,
            BigNumber,
            BigNumber
        ] & {
            collateral: BigNumber;
            size: BigNumber;
            lastIncreasedTime: number;
            entryPrice: BigNumber;
            entryFunding: BigNumber;
        }>;
        initialize(nextHop: PromiseOrValue<string>, mlp: PromiseOrValue<string>, orderBook: PromiseOrValue<string>, weth: PromiseOrValue<string>, nativeUnwrapper: PromiseOrValue<string>, vault: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        liquidate(subAccountId: PromiseOrValue<BytesLike>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        openPosition(subAccountId: PromiseOrValue<BytesLike>, amount: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<string>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        takeOwnership(overrides?: CallOverrides): Promise<void>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        upgradeChainedProxy(nextHop: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        withdrawAllCollateral(subAccountId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        withdrawCollateral(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        withdrawProfit(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        'AddAsset(uint8,bytes32,uint8,bool,address,address)'(id?: PromiseOrValue<BigNumberish> | null, symbol?: null, decimals?: null, isStable?: null, tokenAddress?: null, muxTokenAddress?: null): AddAssetEventFilter;
        AddAsset(id?: PromiseOrValue<BigNumberish> | null, symbol?: null, decimals?: null, isStable?: null, tokenAddress?: null, muxTokenAddress?: null): AddAssetEventFilter;
        'AddLiquidity(address,uint8,uint96,uint96,uint96,uint96)'(trader?: PromiseOrValue<string> | null, tokenId?: PromiseOrValue<BigNumberish> | null, tokenPrice?: null, mlpPrice?: null, mlpAmount?: null, fee?: null): AddLiquidityEventFilter;
        AddLiquidity(trader?: PromiseOrValue<string> | null, tokenId?: PromiseOrValue<BigNumberish> | null, tokenPrice?: null, mlpPrice?: null, mlpAmount?: null, fee?: null): AddLiquidityEventFilter;
        'BorrowAsset(uint8,address,address,uint256,uint256)'(assetId?: PromiseOrValue<BigNumberish> | null, project?: PromiseOrValue<string> | null, borrower?: PromiseOrValue<string> | null, rawBorrowAmount?: null, rawFee?: null): BorrowAssetEventFilter;
        BorrowAsset(assetId?: PromiseOrValue<BigNumberish> | null, project?: PromiseOrValue<string> | null, borrower?: PromiseOrValue<string> | null, rawBorrowAmount?: null, rawFee?: null): BorrowAssetEventFilter;
        'ClaimBrokerGasRebate(address,uint32,uint256)'(receiver?: PromiseOrValue<string> | null, transactions?: null, rawAmount?: null): ClaimBrokerGasRebateEventFilter;
        ClaimBrokerGasRebate(receiver?: PromiseOrValue<string> | null, transactions?: null, rawAmount?: null): ClaimBrokerGasRebateEventFilter;
        'ClosePosition(address,uint8,tuple)'(trader?: PromiseOrValue<string> | null, assetId?: PromiseOrValue<BigNumberish> | null, args?: null): ClosePositionEventFilter;
        ClosePosition(trader?: PromiseOrValue<string> | null, assetId?: PromiseOrValue<BigNumberish> | null, args?: null): ClosePositionEventFilter;
        'CollectedFee(uint8,uint96)'(tokenId?: null, fee?: null): CollectedFeeEventFilter;
        CollectedFee(tokenId?: null, fee?: null): CollectedFeeEventFilter;
        'DepositCollateral(bytes32,address,uint8,uint256,uint96)'(subAccountId?: PromiseOrValue<BytesLike> | null, trader?: PromiseOrValue<string> | null, collateralId?: null, rawAmount?: null, wadAmount?: null): DepositCollateralEventFilter;
        DepositCollateral(subAccountId?: PromiseOrValue<BytesLike> | null, trader?: PromiseOrValue<string> | null, collateralId?: null, rawAmount?: null, wadAmount?: null): DepositCollateralEventFilter;
        'IssueMuxToken(uint8,bool,uint96)'(tokenId?: PromiseOrValue<BigNumberish> | null, isStable?: null, muxTokenAmount?: null): IssueMuxTokenEventFilter;
        IssueMuxToken(tokenId?: PromiseOrValue<BigNumberish> | null, isStable?: null, muxTokenAmount?: null): IssueMuxTokenEventFilter;
        'Liquidate(address,uint8,tuple)'(trader?: PromiseOrValue<string> | null, assetId?: PromiseOrValue<BigNumberish> | null, args?: null): LiquidateEventFilter;
        Liquidate(trader?: PromiseOrValue<string> | null, assetId?: PromiseOrValue<BigNumberish> | null, args?: null): LiquidateEventFilter;
        'OpenPosition(address,uint8,tuple)'(trader?: PromiseOrValue<string> | null, assetId?: PromiseOrValue<BigNumberish> | null, args?: null): OpenPositionEventFilter;
        OpenPosition(trader?: PromiseOrValue<string> | null, assetId?: PromiseOrValue<BigNumberish> | null, args?: null): OpenPositionEventFilter;
        'OwnershipTransferred(address,address)'(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        'PrepareToTransferOwnership(address)'(pendingOwner?: PromiseOrValue<string> | null): PrepareToTransferOwnershipEventFilter;
        PrepareToTransferOwnership(pendingOwner?: PromiseOrValue<string> | null): PrepareToTransferOwnershipEventFilter;
        'Rebalance(address,uint8,uint8,uint96,uint96,uint96,uint96)'(rebalancer?: PromiseOrValue<string> | null, tokenId0?: null, tokenId1?: null, price0?: null, price1?: null, rawAmount0?: null, rawAmount1?: null): RebalanceEventFilter;
        Rebalance(rebalancer?: PromiseOrValue<string> | null, tokenId0?: null, tokenId1?: null, price0?: null, price1?: null, rawAmount0?: null, rawAmount1?: null): RebalanceEventFilter;
        'RedeemMuxToken(address,uint8,uint96)'(trader?: null, tokenId?: null, muxTokenAmount?: null): RedeemMuxTokenEventFilter;
        RedeemMuxToken(trader?: null, tokenId?: null, muxTokenAmount?: null): RedeemMuxTokenEventFilter;
        'RemoveLiquidity(address,uint8,uint96,uint96,uint96,uint96)'(trader?: PromiseOrValue<string> | null, tokenId?: PromiseOrValue<BigNumberish> | null, tokenPrice?: null, mlpPrice?: null, mlpAmount?: null, fee?: null): RemoveLiquidityEventFilter;
        RemoveLiquidity(trader?: PromiseOrValue<string> | null, tokenId?: PromiseOrValue<BigNumberish> | null, tokenPrice?: null, mlpPrice?: null, mlpAmount?: null, fee?: null): RemoveLiquidityEventFilter;
        'RepayAsset(uint8,address,address,uint256,uint256,uint256)'(assetId?: PromiseOrValue<BigNumberish> | null, project?: PromiseOrValue<string> | null, repayer?: PromiseOrValue<string> | null, rawRepayAmount?: null, rawFee?: null, badDebt?: null): RepayAssetEventFilter;
        RepayAsset(assetId?: PromiseOrValue<BigNumberish> | null, project?: PromiseOrValue<string> | null, repayer?: PromiseOrValue<string> | null, rawRepayAmount?: null, rawFee?: null, badDebt?: null): RepayAssetEventFilter;
        'SetAssetFlags(uint8,uint56,uint56)'(assetId?: PromiseOrValue<BigNumberish> | null, oldFlags?: null, newFlags?: null): SetAssetFlagsEventFilter;
        SetAssetFlags(assetId?: PromiseOrValue<BigNumberish> | null, oldFlags?: null, newFlags?: null): SetAssetFlagsEventFilter;
        'SetAssetParams(uint8,bytes32,uint32,uint32,uint32,uint32,uint32,uint32,uint96,uint96,uint32,uint32)'(assetId?: PromiseOrValue<BigNumberish> | null, symbol?: null, newInitialMarginRate?: null, newMaintenanceMarginRate?: null, newPositionFeeRate?: null, newLiquidationFeeRate?: null, newMinProfitRate?: null, newMinProfitTime?: null, newMaxLongPositionSize?: null, newMaxShortPositionSize?: null, newSpotWeight?: null, newHalfSpread?: null): SetAssetParamsEventFilter;
        SetAssetParams(assetId?: PromiseOrValue<BigNumberish> | null, symbol?: null, newInitialMarginRate?: null, newMaintenanceMarginRate?: null, newPositionFeeRate?: null, newLiquidationFeeRate?: null, newMinProfitRate?: null, newMinProfitTime?: null, newMaxLongPositionSize?: null, newMaxShortPositionSize?: null, newSpotWeight?: null, newHalfSpread?: null): SetAssetParamsEventFilter;
        'SetBrokerGasRebate(uint96)'(newBrokerGasRebate?: null): SetBrokerGasRebateEventFilter;
        SetBrokerGasRebate(newBrokerGasRebate?: null): SetBrokerGasRebateEventFilter;
        'SetFundingInterval(uint32,uint32)'(oldFundingInterval?: null, newFundingInterval?: null): SetFundingIntervalEventFilter;
        SetFundingInterval(oldFundingInterval?: null, newFundingInterval?: null): SetFundingIntervalEventFilter;
        'SetFundingParams(uint8,uint32,uint32)'(assetId?: PromiseOrValue<BigNumberish> | null, newBaseRate8H?: null, newLimitRate8H?: null): SetFundingParamsEventFilter;
        SetFundingParams(assetId?: PromiseOrValue<BigNumberish> | null, newBaseRate8H?: null, newLimitRate8H?: null): SetFundingParamsEventFilter;
        'SetLiquidityFee(uint32,uint32)'(newLiquidityBaseFeeRate?: null, newLiquidityDynamicFeeRate?: null): SetLiquidityFeeEventFilter;
        SetLiquidityFee(newLiquidityBaseFeeRate?: null, newLiquidityDynamicFeeRate?: null): SetLiquidityFeeEventFilter;
        'SetLiquidityManager(address,bool)'(newLiquidityManager?: PromiseOrValue<string> | null, isAdd?: null): SetLiquidityManagerEventFilter;
        SetLiquidityManager(newLiquidityManager?: PromiseOrValue<string> | null, isAdd?: null): SetLiquidityManagerEventFilter;
        'SetMaintainer(address)'(newMaintainer?: PromiseOrValue<string> | null): SetMaintainerEventFilter;
        SetMaintainer(newMaintainer?: PromiseOrValue<string> | null): SetMaintainerEventFilter;
        'SetMlpPriceRange(uint96,uint96)'(newLowerBound?: null, newUpperBound?: null): SetMlpPriceRangeEventFilter;
        SetMlpPriceRange(newLowerBound?: null, newUpperBound?: null): SetMlpPriceRangeEventFilter;
        'SetReferenceOracle(uint8,uint8,address,uint32)'(assetId?: PromiseOrValue<BigNumberish> | null, referenceOracleType?: null, referenceOracle?: null, referenceDeviation?: null): SetReferenceOracleEventFilter;
        SetReferenceOracle(assetId?: PromiseOrValue<BigNumberish> | null, referenceOracleType?: null, referenceOracle?: null, referenceDeviation?: null): SetReferenceOracleEventFilter;
        'SetStrictStableDeviation(uint32)'(newStrictStableDeviation?: null): SetStrictStableDeviationEventFilter;
        SetStrictStableDeviation(newStrictStableDeviation?: null): SetStrictStableDeviationEventFilter;
        'TransferLiquidity(address,address,uint8,uint256)'(sender?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, assetId?: null, amount?: null): TransferLiquidityEventFilter;
        TransferLiquidity(sender?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, assetId?: null, amount?: null): TransferLiquidityEventFilter;
        'UpdateFundingRate(uint8,uint32,uint128,uint32,uint128)'(tokenId?: PromiseOrValue<BigNumberish> | null, longFundingRate?: null, longCumulativeFundingRate?: null, shortFundingRate?: null, shortCumulativeFunding?: null): UpdateFundingRateEventFilter;
        UpdateFundingRate(tokenId?: PromiseOrValue<BigNumberish> | null, longFundingRate?: null, longCumulativeFundingRate?: null, shortFundingRate?: null, shortCumulativeFunding?: null): UpdateFundingRateEventFilter;
        'UpdateSequence(uint32)'(sequence?: null): UpdateSequenceEventFilter;
        UpdateSequence(sequence?: null): UpdateSequenceEventFilter;
        'UpgradeChainedProxy(address,address)'(prevNextHop?: null, nextHop?: null): UpgradeChainedProxyEventFilter;
        UpgradeChainedProxy(prevNextHop?: null, nextHop?: null): UpgradeChainedProxyEventFilter;
        'WithdrawCollateral(bytes32,address,uint8,uint256,uint96)'(subAccountId?: PromiseOrValue<BytesLike> | null, trader?: PromiseOrValue<string> | null, collateralId?: null, rawAmount?: null, wadAmount?: null): WithdrawCollateralEventFilter;
        WithdrawCollateral(subAccountId?: PromiseOrValue<BytesLike> | null, trader?: PromiseOrValue<string> | null, collateralId?: null, rawAmount?: null, wadAmount?: null): WithdrawCollateralEventFilter;
        'WithdrawCollectedFee(uint8,uint96)'(assetId?: PromiseOrValue<BigNumberish> | null, collectedFee?: null): WithdrawCollectedFeeEventFilter;
        WithdrawCollectedFee(assetId?: PromiseOrValue<BigNumberish> | null, collectedFee?: null): WithdrawCollectedFeeEventFilter;
        'WithdrawProfit(address,uint8,tuple)'(trader?: PromiseOrValue<string> | null, assetId?: PromiseOrValue<BigNumberish> | null, args?: null): WithdrawProfitEventFilter;
        WithdrawProfit(trader?: PromiseOrValue<string> | null, assetId?: PromiseOrValue<BigNumberish> | null, args?: null): WithdrawProfitEventFilter;
    };
    estimateGas: {
        closePosition(subAccountId: PromiseOrValue<BytesLike>, amount: PromiseOrValue<BigNumberish>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        depositCollateral(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getAllAssetInfo(overrides?: CallOverrides): Promise<BigNumber>;
        getAssetAddress(assetId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getAssetInfo(assetId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getLiquidityPoolStorage(overrides?: CallOverrides): Promise<BigNumber>;
        getSubAccount(subAccountId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(nextHop: PromiseOrValue<string>, mlp: PromiseOrValue<string>, orderBook: PromiseOrValue<string>, weth: PromiseOrValue<string>, nativeUnwrapper: PromiseOrValue<string>, vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        liquidate(subAccountId: PromiseOrValue<BytesLike>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        openPosition(subAccountId: PromiseOrValue<BytesLike>, amount: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        takeOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        upgradeChainedProxy(nextHop: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawAllCollateral(subAccountId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawCollateral(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawProfit(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        closePosition(subAccountId: PromiseOrValue<BytesLike>, amount: PromiseOrValue<BigNumberish>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        depositCollateral(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getAllAssetInfo(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAssetAddress(assetId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAssetInfo(assetId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLiquidityPoolStorage(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getSubAccount(subAccountId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(nextHop: PromiseOrValue<string>, mlp: PromiseOrValue<string>, orderBook: PromiseOrValue<string>, weth: PromiseOrValue<string>, nativeUnwrapper: PromiseOrValue<string>, vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        liquidate(subAccountId: PromiseOrValue<BytesLike>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        openPosition(subAccountId: PromiseOrValue<BytesLike>, amount: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        takeOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        upgradeChainedProxy(nextHop: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawAllCollateral(subAccountId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawCollateral(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawProfit(subAccountId: PromiseOrValue<BytesLike>, rawAmount: PromiseOrValue<BigNumberish>, profitAssetId: PromiseOrValue<BigNumberish>, collateralPrice: PromiseOrValue<BigNumberish>, assetPrice: PromiseOrValue<BigNumberish>, profitAssetPrice: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
