UNPKG

hm-aftermath-ts-sdk

Version:
755 lines 23.8 kB
import { BcsType } from "@mysten/sui/bcs"; import { ApiDataWithCursorBody, Balance, Event, IFixed, Object, ObjectDigest, ObjectId, ObjectVersion, Percentage, SuiAddress, Timestamp, TransactionDigest } from "../../general/types/generalTypes"; import { CoinDecimal, CoinSymbol, CoinType } from "../coin/coinTypes"; export type PerpetualsMarketId = ObjectId; export type PerpetualsAccountId = bigint; export type PerpetualsOrderId = bigint; export type PerpetualsOrderPrice = bigint; export declare enum PerpetualsOrderSide { Ask = 1, Bid = 0 } export declare enum PerpetualsOrderType { Standard = 0, FillOrKill = 1, PostOnly = 2, ImmediateOrCancel = 3 } declare function Field<N extends BcsType<any>, V extends BcsType<any>>(name: N, value: V): BcsType<{ name: N extends BcsType<infer U, any> ? U : never; value: V extends BcsType<infer U, any> ? U : never; }, { name: N extends BcsType<any, infer U_1> ? U_1 : never; value: V extends BcsType<any, infer U_1> ? U_1 : never; }>; export interface PerpetualsAdminCapability extends Object { } export interface PerpetualsRegistry extends Object { activeCollaterals: CoinType[]; } export interface PerpetualsVault extends Object { balance: Balance; scalingFactor: bigint; } export interface PerpetualsMarketData { objectId: ObjectId; initialSharedVersion: ObjectVersion; collateralCoinType: CoinType; marketParams: PerpetualsMarketParams; marketState: PerpetualsMarketState; } export interface PerpetualsAccountCap extends Object { accountId: PerpetualsAccountId; collateralCoinType: CoinType; collateral: IFixed; collateralDecimals: CoinDecimal; objectVersion: ObjectVersion; objectDigest: ObjectDigest; } export type PerpetualsRawAccountCap = Omit<PerpetualsAccountCap, "collateral" | "collateralDecimals"> & { collateral: Balance; }; export interface PerpetualsPosition { collateral: IFixed; baseAssetAmount: IFixed; quoteAssetNotionalAmount: IFixed; cumFundingRateLong: IFixed; cumFundingRateShort: IFixed; asksQuantity: IFixed; bidsQuantity: IFixed; collateralCoinType: CoinType; marketId: PerpetualsMarketId; pendingOrders: { orderId: PerpetualsOrderId; side: PerpetualsOrderSide; size: bigint; }[]; makerFee: IFixed; takerFee: IFixed; leverage: number; } export interface PerpetualsMarketParams { marginRatioInitial: IFixed; marginRatioMaintenance: IFixed; baseAssetSymbol: CoinSymbol; basePriceFeedId: ObjectId; collateralPriceFeedId: ObjectId; fundingFrequencyMs: bigint; fundingPeriodMs: bigint; premiumTwapFrequencyMs: bigint; premiumTwapPeriodMs: bigint; spreadTwapFrequencyMs: bigint; spreadTwapPeriodMs: bigint; makerFee: IFixed; takerFee: IFixed; liquidationFee: IFixed; forceCancelFee: IFixed; insuranceFundFee: IFixed; minOrderUsdValue: IFixed; lotSize: bigint; tickSize: bigint; liquidationTolerance: bigint; maxPendingOrders: bigint; oracleTolerance: bigint; } export interface PerpetualsMarketState { cumFundingRateLong: IFixed; cumFundingRateShort: IFixed; fundingLastUpdMs: Timestamp; premiumTwap: IFixed; premiumTwapLastUpdMs: Timestamp; spreadTwap: IFixed; spreadTwapLastUpdMs: Timestamp; openInterest: IFixed; feesAccrued: IFixed; } export interface PerpetualsMarketCandleDataPoint { timestamp: Timestamp; high: number; low: number; open: number; close: number; volume: number; } export interface OrderbookDataPoint { price: number; size: number; totalSize: number; sizeUsd: number; totalSizeUsd: number; } export interface PerpetualsOrderbookState { bids: OrderbookDataPoint[]; asks: OrderbookDataPoint[]; minAskPrice: number; maxBidPrice: number; } export interface PerpetualsOrderData { orderId: PerpetualsOrderId; initialSize: bigint; filledSize: bigint; side: PerpetualsOrderSide; marketId: PerpetualsMarketId; } export interface PerpetualsFilledOrderData { size: number; price: number; } export interface PerpetualsOrderbook extends Object { asks: PerpetualsOrderedMap<PerpetualsOrder>; bids: PerpetualsOrderedMap<PerpetualsOrder>; counter: bigint; } export interface PerpetualsOrder { accountId: PerpetualsAccountId; size: bigint; } export interface PerpetualsOrderInfo { price: PerpetualsOrderPrice; size: bigint; } export interface PerpetualsOrderedMap<T> extends Object { size: bigint; counter: bigint; root: bigint; first: bigint; branchMin: bigint; branchMax: bigint; leafMin: bigint; leafMax: bigint; branchesMergeMax: bigint; leavesMergeMax: bigint; } declare function PerpetualsMap<T extends BcsType<any>>(T: T): BcsType<{ id: string; size: string; counter: string; root: string; first: string; branchMin: string; branchMax: string; leafMin: string; leafMax: string; branchesMergeMax: string; leavesMergeMax: string; }, { id: string | Uint8Array; size: string | number | bigint; counter: string | number | bigint; root: string | number | bigint; first: string | number | bigint; branchMin: string | number | bigint; branchMax: string | number | bigint; leafMin: string | number | bigint; leafMax: string | number | bigint; branchesMergeMax: string | number | bigint; leavesMergeMax: string | number | bigint; }>; export interface PerpetualsBranch { keys: bigint[]; kids: bigint[]; } export declare const Branch: BcsType<{ keys: string[]; kids: string[]; }, { keys: Iterable<string | number | bigint> & { length: number; }; kids: Iterable<string | number | bigint> & { length: number; }; }>; export interface PerpetualsLeaf<V> { keys: bigint[]; vals: V[]; next: bigint; } export declare function Leaf<V extends BcsType<any>>(V: V): BcsType<{ keys: string[]; vals: any[]; next: string; }, { keys: Iterable<string | number | bigint> & { length: number; }; vals: Iterable<any> & { length: number; }; next: string | number | bigint; }>; export interface PerpetualsAccountData { accountCap: PerpetualsAccountCap; account: PerpetualsAccountObject; } export interface PerpetualsAccountObject { positions: PerpetualsPosition[]; } export interface PerpetualsAccountCollateralChangesWithCursor { collateralChanges: PerpetualsAccountCollateralChange[]; nextCursor: Timestamp | undefined; } export type PerpetualsCollateralEventName = "Withdraw" | "Deposit" | "Allocate" | "Deallocate" | "SettleFunding" | "Liquidated" | "FilledTaker" | "FilledMaker"; export type PerpetualsAccountCollateralChange = { timestamp: Timestamp; txDigest: TransactionDigest; eventName: PerpetualsCollateralEventName; } & ({ collateralChange: Balance; } | { collateralChangeUsd: number; }); export interface PerpetualsAccountTradesWithCursor { trades: PerpetualsAccountTrade[]; nextCursor: Timestamp | undefined; } export type PerpetualsTradeEventName = "Canceled" | "Posted" | "FilledMaker" | "FilledTaker" | "Liquidated"; export type PerpetualsAccountTrade = { timestamp: Timestamp; txDigest: TransactionDigest; marketId: PerpetualsMarketId; eventName: PerpetualsTradeEventName; side: PerpetualsOrderSide; } & ({ orderPrice: bigint; } | { price: number; }) & ({ sizeLots: bigint; } | { size: number; }); export interface DepositedCollateralEvent extends Event { accountId: PerpetualsAccountId; collateralDelta: Balance; } export interface AllocatedCollateralEvent extends Event { accountId: PerpetualsAccountId; collateralDelta: Balance; positionCollateralAfter: IFixed; } export interface DeallocatedCollateralEvent extends Event { accountId: PerpetualsAccountId; collateralDelta: Balance; positionCollateralAfter: IFixed; } export interface WithdrewCollateralEvent extends Event { accountId: PerpetualsAccountId; collateralDelta: Balance; } export interface SettledFundingEvent extends Event { accountId: PerpetualsAccountId; collateralDeltaUsd: IFixed; marketId: PerpetualsMarketId; marketFundingRateLong: IFixed; marketFundingRateShort: IFixed; } export type CollateralEvent = WithdrewCollateralEvent | DepositedCollateralEvent | SettledFundingEvent | LiquidatedEvent | FilledTakerOrderEvent | FilledMakerOrderEvent | AllocatedCollateralEvent | DeallocatedCollateralEvent; export declare const isWithdrewCollateralEvent: (event: Event) => event is WithdrewCollateralEvent; export declare const isDepositedCollateralEvent: (event: Event) => event is DepositedCollateralEvent; export declare const isDeallocatedCollateralEvent: (event: Event) => event is DeallocatedCollateralEvent; export declare const isAllocatedCollateralEvent: (event: Event) => event is AllocatedCollateralEvent; export declare const isSettledFundingEvent: (event: Event) => event is SettledFundingEvent; export interface LiquidatedEvent extends Event { accountId: PerpetualsAccountId; collateralDeltaUsd: IFixed; liqorAccountId: PerpetualsAccountId; size: bigint; markPrice: IFixed; marketId: PerpetualsMarketId; side: PerpetualsOrderSide; } export declare const isLiquidatedEvent: (event: Event) => event is LiquidatedEvent; export interface CreatedAccountEvent extends Event { user: SuiAddress; accountId: PerpetualsAccountId; } export interface PerpetualsTradeHistoryData { timestamp: Timestamp; txDigest: TransactionDigest; side: PerpetualsOrderSide; sizeFilled: number; orderPrice: number; } export interface PerpetualsTradeHistoryWithCursor { trades: PerpetualsTradeHistoryData[]; nextCursor: Timestamp | undefined; } export interface OrderbookPostReceiptEvent extends Event { accountId: PerpetualsAccountId; orderId: PerpetualsOrderId; size: bigint; } export interface OrderbookFillReceiptEvent extends Event { accountId: PerpetualsAccountId; orderId: PerpetualsOrderId; size: bigint; dropped: boolean; } export interface CanceledOrderEvent extends Event { accountId: PerpetualsAccountId; marketId: PerpetualsMarketId; side: PerpetualsOrderSide; size: bigint; orderId: PerpetualsOrderId; } export interface PostedOrderEvent extends Event { accountId: PerpetualsAccountId; marketId: PerpetualsMarketId; side: PerpetualsOrderSide; size: bigint; asksQuantity: IFixed; bidsQuantity: IFixed; } export interface FilledMakerOrderEvent extends Event { accountId: PerpetualsAccountId; collateralDeltaUsd: IFixed; marketId: PerpetualsMarketId; side: PerpetualsOrderSide; size: bigint; orderId: PerpetualsOrderId; dropped: boolean; baseAssetAmount: IFixed; quoteAssetNotionalAmount: IFixed; asksQuantity: IFixed; bidsQuantity: IFixed; } export interface FilledTakerOrderEvent extends Event { accountId: PerpetualsAccountId; collateralDeltaUsd: IFixed; marketId: PerpetualsMarketId; baseAssetAmount: IFixed; quoteAssetNotionalAmount: IFixed; side: PerpetualsOrderSide; baseAssetDelta: IFixed; quoteAssetDelta: IFixed; liquidatedVolume: IFixed; } export type PerpetualsOrderEvent = CanceledOrderEvent | PostedOrderReceiptEvent | FilledMakerOrderEvent | FilledTakerOrderEvent | LiquidatedEvent; export interface PostedOrderReceiptEvent extends Event { accountId: PerpetualsAccountId; marketId: PerpetualsMarketId; orderId: PerpetualsOrderId; size: bigint; side: PerpetualsOrderSide; } export declare const isCanceledOrderEvent: (event: Event) => event is CanceledOrderEvent; export declare const isPostedOrderEvent: (event: Event) => event is PostedOrderEvent; export declare const isPostedOrderReceiptEvent: (event: Event) => event is PostedOrderReceiptEvent; export declare const isFilledMakerOrderEvent: (event: Event) => event is FilledMakerOrderEvent; export declare const isFilledTakerOrderEvent: (event: Event) => event is FilledTakerOrderEvent; export interface UpdatedPremiumTwapEvent extends Event { marketId: PerpetualsMarketId; bookPrice: IFixed; indexPrice: IFixed; premiumTwap: IFixed; premiumTwapLastUpdateMs: number; } export interface UpdatedSpreadTwapEvent extends Event { marketId: PerpetualsMarketId; bookPrice: IFixed; indexPrice: IFixed; spreadTwap: IFixed; spreadTwapLastUpdateMs: number; } export type PerpetualsTwapEvent = UpdatedPremiumTwapEvent | UpdatedSpreadTwapEvent; export interface ApiPerpetualsAccountsBody { walletAddress: SuiAddress; } export type ApiPerpetualsAccountOrderHistoryBody = ApiDataWithCursorBody<Timestamp> & { accountCapId: ObjectId; }; export type ApiPerpetualsAccountCollateralHistoryBody = ApiDataWithCursorBody<Timestamp> & { accountCapId: ObjectId; }; export interface ApiPerpetualsSetPositionLeverageBody { walletAddress: SuiAddress; bytes: string; signature: string; } export type ApiPerpetualsPreviewOrderBody = (Omit<ApiPerpetualsLimitOrderBody, "collateralChange" | "walletAddress" | "accountObjectId" | "accountObjectVersion" | "accountObjectDigest"> | Omit<ApiPerpetualsMarketOrderBody, "collateralChange" | "walletAddress" | "accountObjectId" | "accountObjectVersion" | "accountObjectDigest"> | Omit<ApiPerpetualsSLTPOrderBody, "collateralChange" | "walletAddress" | "accountObjectId" | "accountObjectVersion" | "accountObjectDigest">) & { collateralCoinType: CoinType; accountId: PerpetualsAccountId; lotSize: number; tickSize: number; leverage: number; }; export type ApiPerpetualsPreviewOrderResponse = { error: string; } | { positionAfterOrder: PerpetualsPosition; priceSlippage: number; percentSlippage: Percentage; filledSize: number; filledSizeUsd: number; postedSize: number; postedSizeUsd: number; collateralChange: number; executionPrice: number; }; export interface ApiPerpetualsOrderbookStateBody { orderbookPrice: number; lotSize: number; tickSize: number; priceBucketSize: number; } export interface ApiPerpetualsExecutionPriceBody { side: PerpetualsOrderSide; size: bigint; lotSize: number; collateral: Balance; basePriceFeedId: ObjectId; collateralPriceFeedId: ObjectId; price?: PerpetualsOrderPrice; } export interface ApiPerpetualsExecutionPriceResponse { executionPrice: number; sizeFilled: number; sizePosted: number; fills: PerpetualsFilledOrderData[]; } export type ApiPerpetualsHistoricalMarketDataResponse = PerpetualsMarketCandleDataPoint[]; export interface ApiPerpetualsMaxOrderSizeBody { accountId: PerpetualsAccountId; collateral: Balance; side: PerpetualsOrderSide; leverage: number; price?: PerpetualsOrderPrice; } export interface ApiPerpetualsAccountOrderDatasBody { accountCapId: ObjectId; orderDatas: { orderId: PerpetualsOrderId; currentSize: bigint; }[]; } export interface ApiPerpetualsCreateAccountBody { walletAddress: SuiAddress; collateralCoinType: CoinType; } export interface ApiPerpetualsDepositCollateralBody { walletAddress: SuiAddress; collateralCoinType: CoinType; accountCapId: ObjectId; amount: Balance; isSponsoredTx?: boolean; } export interface ApiPerpetualsWithdrawCollateralBody { walletAddress: SuiAddress; collateralCoinType: CoinType; accountCapId: ObjectId; amount: Balance; } export interface ApiPerpetualsTransferCollateralBody { walletAddress: SuiAddress; collateralCoinType: CoinType; fromAccountCapId: ObjectId; toAccountCapId: ObjectId; amount: Balance; } export interface ApiPerpetualsMarketOrderBody { walletAddress: SuiAddress; marketId: PerpetualsMarketId; accountObjectId: ObjectId; accountObjectVersion: number; accountObjectDigest: ObjectId; side: PerpetualsOrderSide; size: bigint; collateralChange: Balance; hasPosition: boolean; } export interface ApiPerpetualsLimitOrderBody { walletAddress: SuiAddress; marketId: PerpetualsMarketId; accountObjectId: ObjectId; accountObjectVersion: number; accountObjectDigest: ObjectId; side: PerpetualsOrderSide; size: bigint; price: PerpetualsOrderPrice; orderType: PerpetualsOrderType; collateralChange: Balance; hasPosition: boolean; } export interface ApiPerpetualsCancelOrderBody { walletAddress: SuiAddress; collateralCoinType: CoinType; accountCapId: ObjectId; marketId: PerpetualsMarketId; marketInitialSharedVersion: ObjectVersion; orderId: PerpetualsOrderId; collateral: Balance; basePriceFeedId: ObjectId; collateralPriceFeedId: ObjectId; } export interface ApiPerpetualsCancelOrdersBody { walletAddress: SuiAddress; collateralCoinType: CoinType; accountCapId: ObjectId; orderDatas: { orderId: PerpetualsOrderId; marketId: PerpetualsMarketId; marketInitialSharedVersion: ObjectVersion; collateral: Balance; basePriceFeedId: ObjectId; collateralPriceFeedId: ObjectId; }[]; } export type ApiPerpetualsSLTPOrderBody = ((ApiPerpetualsMarketOrderBody & { marketPrice: PerpetualsOrderPrice; }) | ApiPerpetualsLimitOrderBody) & ({ slPrice: PerpetualsOrderPrice; } | { tpPrice: PerpetualsOrderPrice; } | { slPrice: PerpetualsOrderPrice; tpPrice: PerpetualsOrderPrice; }); export interface ApiPerpetualsMarket24hrVolumeResponse { volumeBaseAssetAmount: number; volumeUsd: number; } export interface ApiPerpetualsMarket24hrVolumeResponse { volumeUsd: number; volumeBaseAssetAmount: number; } export type SdkPerpetualsMarketOrderInputs = Omit<ApiPerpetualsMarketOrderBody, "accountObjectId" | "accountObjectVersion" | "accountObjectDigest">; export type SdkPerpetualsLimitOrderInputs = Omit<ApiPerpetualsLimitOrderBody, "accountObjectId" | "accountObjectVersion" | "accountObjectDigest">; export type SdkPerpetualsSLTPOrderInputs = ((SdkPerpetualsMarketOrderInputs & { marketPrice: PerpetualsOrderPrice; }) | SdkPerpetualsLimitOrderInputs) & ({ slPrice: PerpetualsOrderPrice; } | { tpPrice: PerpetualsOrderPrice; } | { slPrice: PerpetualsOrderPrice; tpPrice: PerpetualsOrderPrice; }); export declare const perpetualsRegistry: { Account: BcsType<{ id: string; accountId: string; collateral: { value: string; }; }, { id: string | Uint8Array; accountId: string | number | bigint; collateral: { value: string | number | bigint; }; }>; AdminCapability: BcsType<{ id: string; }, { id: string | Uint8Array; }>; BalanceStruct: BcsType<{ value: string; }, { value: string | number | bigint; }>; Branch: BcsType<{ keys: string[]; kids: string[]; }, { keys: Iterable<string | number | bigint> & { length: number; }; kids: Iterable<string | number | bigint> & { length: number; }; }>; Coin: BcsType<{ id: string; balance: { value: string; }; }, { id: string | Uint8Array; balance: { value: string | number | bigint; }; }>; Field: typeof Field; Leaf: typeof Leaf; MarketKey: BcsType<{ marketId: string; }, { marketId: string | number | bigint; }>; Order: BcsType<{ accountId: string; size: string; }, { accountId: string | number | bigint; size: string | number | bigint; }>; Orderbook: BcsType<{ id: string; asks: { id: string; size: string; counter: string; root: string; first: string; branchMin: string; branchMax: string; leafMin: string; leafMax: string; branchesMergeMax: string; leavesMergeMax: string; }; bids: { id: string; size: string; counter: string; root: string; first: string; branchMin: string; branchMax: string; leafMin: string; leafMax: string; branchesMergeMax: string; leavesMergeMax: string; }; counter: string; }, { id: string | Uint8Array; asks: { id: string | Uint8Array; size: string | number | bigint; counter: string | number | bigint; root: string | number | bigint; first: string | number | bigint; branchMin: string | number | bigint; branchMax: string | number | bigint; leafMin: string | number | bigint; leafMax: string | number | bigint; branchesMergeMax: string | number | bigint; leavesMergeMax: string | number | bigint; }; bids: { id: string | Uint8Array; size: string | number | bigint; counter: string | number | bigint; root: string | number | bigint; first: string | number | bigint; branchMin: string | number | bigint; branchMax: string | number | bigint; leafMin: string | number | bigint; leafMax: string | number | bigint; branchesMergeMax: string | number | bigint; leavesMergeMax: string | number | bigint; }; counter: string | number | bigint; }>; OrderInfo: BcsType<{ price: string; size: string; }, { price: string | number | bigint; size: string | number | bigint; }>; PerpetualsMap: typeof PerpetualsMap; Position: BcsType<{ collateral: string; baseAssetAmount: string; quoteAssetNotionalAmount: string; cumFundingRateLong: string; cumFundingRateShort: string; asksQuantity: string; bidsQuantity: string; pendingOrders: string; makerFee: string; takerFee: string; }, { collateral: string | number | bigint; baseAssetAmount: string | number | bigint; quoteAssetNotionalAmount: string | number | bigint; cumFundingRateLong: string | number | bigint; cumFundingRateShort: string | number | bigint; asksQuantity: string | number | bigint; bidsQuantity: string | number | bigint; pendingOrders: string | number | bigint; makerFee: string | number | bigint; takerFee: string | number | bigint; }>; PositionKey: BcsType<{ accountId: string; }, { accountId: string | number | bigint; }>; Registry: BcsType<{ id: string; activeCollaterals: string[]; nextAccountId: string; }, { id: string | Uint8Array; activeCollaterals: Iterable<string> & { length: number; }; nextAccountId: string | number | bigint; }>; Vault: BcsType<{ id: string; collateral_balance: { value: string; }; insurance_fund_balance: { value: string; }; scalingFactor: string; }, { id: string | Uint8Array; collateral_balance: { value: string | number | bigint; }; insurance_fund_balance: { value: string | number | bigint; }; scalingFactor: string | number | bigint; }>; }; export {}; //# sourceMappingURL=perpetualsTypes.d.ts.map