import { Caller } from "../../general/utils/caller";
import { ApiPerpetualsPreviewOrderBody, Balance, PerpetualsAccountCap, PerpetualsAccountObject, PerpetualsMarketId, PerpetualsOrderId, PerpetualsOrderSide, PerpetualsPosition, SdkPerpetualsLimitOrderInputs, SdkPerpetualsMarketOrderInputs, SdkPerpetualsSLTPOrderInputs, SuiAddress, ObjectId, PerpetualsOrderData, CoinDecimal, Percentage, ObjectVersion, ApiDataWithCursorBody, Timestamp, PerpetualsAccountCollateralChangesWithCursor, PerpetualsAccountTradesWithCursor, ApiPerpetualsSetPositionLeverageBody, ApiPerpetualsPreviewCancelOrdersBody, PackageId, ApiPerpetualsPreviewReduceOrdersBody, CallerConfig } from "../../types";
import { PerpetualsMarket } from "./perpetualsMarket";
import { Transaction } from "@mysten/sui/transactions";
export declare class PerpetualsAccount extends Caller {
    readonly account: PerpetualsAccountObject;
    readonly accountCap: PerpetualsAccountCap;
    private static readonly constants;
    constructor(account: PerpetualsAccountObject, accountCap: PerpetualsAccountCap, config?: CallerConfig);
    getDepositCollateralTx(inputs: {
        packageId: PackageId;
        walletAddress: SuiAddress;
        amount: Balance;
        isSponsoredTx?: boolean;
    }): Promise<Transaction>;
    getWithdrawCollateralTx(inputs: {
        walletAddress: SuiAddress;
        amount: Balance;
    }): Promise<Transaction>;
    getAllocateCollateralTx(inputs: {
        walletAddress: SuiAddress;
        market: PerpetualsMarket;
        amount: Balance;
    }): Promise<Transaction>;
    getDeallocateCollateralTx(inputs: {
        walletAddress: SuiAddress;
        market: PerpetualsMarket;
        amount: Balance;
    }): Promise<Transaction>;
    getTransferCollateralTx(inputs: {
        walletAddress: SuiAddress;
        amount: Balance;
        toAccountCapId: ObjectId;
    }): Promise<Transaction>;
    getPlaceMarketOrderTx(inputs: SdkPerpetualsMarketOrderInputs): Promise<Transaction>;
    getPlaceLimitOrderTx(inputs: SdkPerpetualsLimitOrderInputs): Promise<Transaction>;
    getPlaceSLTPOrder(inputs: SdkPerpetualsSLTPOrderInputs): Promise<Transaction>;
    getCancelOrderTx(inputs: {
        packageId: PackageId;
        walletAddress: SuiAddress;
        marketId: PerpetualsMarketId;
        marketInitialSharedVersion: ObjectVersion;
        basePriceFeedId: ObjectId;
        collateralPriceFeedId: ObjectId;
        side: PerpetualsOrderSide;
        orderId: PerpetualsOrderId;
        collateralChange: Balance;
    }): Promise<Transaction>;
    getCancelOrdersTx(inputs: {
        walletAddress: SuiAddress;
        orderDatas: {
            packageId: PackageId;
            marketId: PerpetualsMarketId;
            marketInitialSharedVersion: ObjectVersion;
            basePriceFeedId: ObjectId;
            collateralPriceFeedId: ObjectId;
            side: PerpetualsOrderSide;
            orderId: PerpetualsOrderId;
            collateralChange: Balance;
        }[];
    }): Promise<Transaction>;
    getReduceOrdersTx(inputs: {
        walletAddress: SuiAddress;
        market: PerpetualsMarket;
        collateralChange: Balance;
        orderDatas: {
            orderId: PerpetualsOrderId;
            sizeToSubtract: bigint;
        }[];
    }): Promise<Transaction>;
    getClosePositionTx(inputs: {
        size: bigint;
        walletAddress: SuiAddress;
        market: PerpetualsMarket;
        orderDatas: PerpetualsOrderData[];
        indexPrice: number;
        collateralPrice: number;
    }): Promise<Transaction>;
    setPositionLeverage(inputs: ApiPerpetualsSetPositionLeverageBody): Promise<boolean>;
    getPositionLeverages(inputs: {
        marketIds: PerpetualsMarketId[];
    }): Promise<number[]>;
    setPositionLeverageMessageToSign(inputs: {
        marketId: PerpetualsMarketId;
        leverage: number;
    }): {
        account_id: number;
        market_id: PerpetualsMarketId;
        leverage: number;
    };
    getOrderPreview(inputs: Omit<ApiPerpetualsPreviewOrderBody, "accountId" | "collateralCoinType" | "accountCapId">, abortSignal?: AbortSignal): Promise<{
        error: string;
    } | {
        positionAfterOrder: PerpetualsPosition;
        priceSlippage: number;
        percentSlippage: Percentage;
        filledSize: number;
        filledSizeUsd: number;
        postedSize: number;
        postedSizeUsd: number;
        collateralChange: Balance;
        executionPrice: number;
    }>;
    getCancelOrdersPreview(inputs: Omit<ApiPerpetualsPreviewCancelOrdersBody, "accountId" | "collateralCoinType">): Promise<{
        marketIdsToPositionAfterCancelOrders: Record<PerpetualsMarketId, PerpetualsPosition>;
        collateralChange: Balance;
    } | {
        error: string;
    }>;
    getReduceOrdersPreview(inputs: Omit<ApiPerpetualsPreviewReduceOrdersBody, "accountId" | "collateralCoinType" | "orderIds" | "sizesToSubtract"> & {
        orderDatas: {
            orderId: PerpetualsOrderId;
            sizeToSubtract: bigint;
        }[];
    }): Promise<{
        positionAfterReduceOrders: PerpetualsPosition;
        collateralChange: Balance;
    } | {
        error: string;
    }>;
    getOrderDatas(): Promise<PerpetualsOrderData[]>;
    getCollateralHistory(inputs: ApiDataWithCursorBody<Timestamp>): Promise<PerpetualsAccountCollateralChangesWithCursor>;
    getOrderHistory(inputs: ApiDataWithCursorBody<Timestamp>): Promise<PerpetualsAccountTradesWithCursor>;
    calcFreeCollateralForPosition: (inputs: {
        market: PerpetualsMarket;
        indexPrice: number;
        collateralPrice: number;
        position?: PerpetualsPosition;
    }) => number;
    calcMarginRatioAndLeverageForPosition: (inputs: {
        market: PerpetualsMarket;
        indexPrice: number;
        collateralPrice: number;
        position?: PerpetualsPosition;
    }) => {
        marginRatio: number;
        leverage: number;
    };
    calcUnrealizedFundings: (inputs: {
        markets: PerpetualsMarket[];
    }) => number;
    calcUnrealizedFundingsForPosition: (inputs: {
        market: PerpetualsMarket;
        position?: PerpetualsPosition;
    }) => number;
    calcPnLAndMarginForPosition: (inputs: {
        market: PerpetualsMarket;
        indexPrice: number;
        position?: PerpetualsPosition;
    }) => {
        pnl: number;
        minInitialMargin: number;
        minMaintenanceMargin: number;
        netAbsBaseValue: number;
    };
    calcLiquidationPriceForPosition: (inputs: {
        market: PerpetualsMarket;
        indexPrice: number;
        collateralPrice: number;
        position?: PerpetualsPosition;
    }) => number;
    calcFreeMarginUsdForPosition: (inputs: {
        market: PerpetualsMarket;
        indexPrice: number;
        collateralPrice: number;
        position?: PerpetualsPosition;
    }) => number;
    calcAccountState: (inputs: {
        markets: PerpetualsMarket[];
        indexPrices: number[];
        collateralPrice: number;
    }) => {
        accountEquity: number;
        totalPnL: number;
        totalFunding: number;
        totalCollateralAllocated: number;
    };
    positionForMarketId(inputs: {
        marketId: PerpetualsMarketId;
    }): PerpetualsPosition | undefined;
    collateral(): number;
    collateralDecimals(): CoinDecimal;
    collateralBalance(): Balance;
    closePositionTxInputs: (inputs: {
        size: bigint;
        walletAddress: SuiAddress;
        market: PerpetualsMarket;
        orderDatas: PerpetualsOrderData[];
        indexPrice: number;
        collateralPrice: number;
    }) => SdkPerpetualsMarketOrderInputs;
    emptyPosition: (inputs: {
        market: PerpetualsMarket;
    }) => PerpetualsPosition;
}
//# sourceMappingURL=perpetualsAccount.d.ts.map