aftermath-ts-sdk
Version:
Aftermath TypeScript SDK
673 lines • 22.1 kB
TypeScript
import { BcsType } from "@mysten/sui/bcs";
import { AnyObjectType, ApiDataWithCursorBody, Balance, Event, IFixed, Object, ObjectDigest, ObjectId, ObjectVersion, PackageId, 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 PerpetualsOrderIdAsString = string;
export type PerpetualsOrderPrice = bigint;
export declare enum PerpetualsOrderSide {
Ask = 1,// true
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 {
packageId: PackageId;
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;
fundingLastUpdateMs: Timestamp;
premiumTwap: IFixed;
premiumTwapLastUpdateMs: Timestamp;
spreadTwap: IFixed;
spreadTwapLastUpdateMs: Timestamp;
openInterest: IFixed;
feesAccrued: IFixed;
}
export interface PerpetualsMarketCandleDataPoint {
time: Timestamp;
high: number;
low: number;
open: number;
close: number;
volume: number;
}
export interface PerpetualsOrderbook {
bids: Record<PerpetualsOrderIdAsString, {
accountId: PerpetualsAccountId;
size: number;
price: number;
}>;
asks: Record<PerpetualsOrderIdAsString, {
accountId: PerpetualsAccountId;
size: number;
price: number;
}>;
asksTotalSize: number;
bidsTotalSize: number;
bestBidPrice: number | undefined;
bestAskPrice: number | undefined;
midPrice: number | undefined;
}
export interface PerpetualsOrderData {
orderId: PerpetualsOrderId;
initialSize: bigint;
filledSize: bigint;
side: PerpetualsOrderSide;
marketId: PerpetualsMarketId;
}
export interface PerpetualsFilledOrderData {
size: number;
price: number;
}
export interface PerpetualsOrderInfo {
price: PerpetualsOrderPrice;
size: bigint;
}
export interface PerpetualsAccountData {
accountCap: PerpetualsAccountCap;
account: PerpetualsAccountObject;
}
export interface PerpetualsAccountObject {
positions: PerpetualsPosition[];
}
export interface UpdatedMarketVersionEvent extends Event {
marketId: PerpetualsMarketId;
version: bigint;
}
export declare const isUpdatedMarketVersion: (event: Event) => event is UpdatedMarketVersionEvent;
export interface PerpetualsAccountCollateralChangesWithCursor {
collateralChanges: PerpetualsAccountCollateralChange[];
nextCursor: Timestamp | undefined;
}
export type PerpetualsAccountCollateralChange = {
timestamp: Timestamp;
txDigest: TransactionDigest;
marketId: PerpetualsMarketId | undefined;
eventType: AnyObjectType;
collateralChange: number;
collateralChangeUsd: number;
};
export interface PerpetualsAccountTradesWithCursor {
trades: PerpetualsAccountTrade[];
nextCursor: Timestamp | undefined;
}
export type PerpetualsAccountTrade = {
timestamp: Timestamp;
txDigest: TransactionDigest;
marketId: PerpetualsMarketId;
eventType: AnyObjectType;
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 | ReducedOrderEvent;
export interface PostedOrderReceiptEvent extends Event {
accountId: PerpetualsAccountId;
marketId: PerpetualsMarketId;
orderId: PerpetualsOrderId;
size: bigint;
side: PerpetualsOrderSide;
}
export interface ReducedOrderEvent extends Event {
marketId: PerpetualsMarketId;
accountId: PerpetualsAccountId;
sizeChange: bigint;
orderId: PerpetualsOrderId;
}
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 declare const isReducedOrderEvent: (event: Event) => event is ReducedOrderEvent;
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 declare const isUpdatedPremiumTwapEvent: (event: Event) => event is UpdatedPremiumTwapEvent;
export declare const isUpdatedSpreadTwapEvent: (event: Event) => event is UpdatedSpreadTwapEvent;
export interface UpdatedFundingEvent extends Event {
marketId: PerpetualsMarketId;
cumFundingRateLong: IFixed;
cumFundingRateShort: IFixed;
fundingLastUpdateMs: Timestamp;
}
export declare const isUpdatedFundingEvent: (event: Event) => event is UpdatedFundingEvent;
export interface ApiPerpetualsAccountsBody {
walletAddress: SuiAddress;
}
export type ApiPerpetualsAccountOrderHistoryBody = ApiDataWithCursorBody<Timestamp>;
export type ApiPerpetualsAccountCollateralHistoryBody = ApiDataWithCursorBody<Timestamp>;
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 interface ApiPerpetualsPreviewCancelOrdersBody {
accountId: PerpetualsAccountId;
collateralCoinType: CoinType;
marketIdsToData: Record<PerpetualsMarketId, {
orderIds: PerpetualsOrderId[];
leverage: number;
}>;
}
export interface ApiPerpetualsPreviewReduceOrdersBody {
marketId: PerpetualsMarketId;
accountId: PerpetualsAccountId;
leverage: number;
orderIds: PerpetualsOrderId[];
sizesToSubtract: bigint[];
collateralCoinType: CoinType;
}
export type ApiPerpetualsPreviewReduceOrdersResponse = {
error: string;
} | {
positionAfterReduceOrders: PerpetualsPosition;
collateralChange: 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 type ApiPerpetualsPreviewCancelOrdersResponse = {
error: string;
} | {
marketIdsToPositionAfterCancelOrders: Record<PerpetualsMarketId, PerpetualsPosition>;
collateralChange: 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 {
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 ApiPerpetualsAllocateCollateralBody {
walletAddress: SuiAddress;
packageId: PackageId;
collateralCoinType: CoinType;
accountCapId: ObjectId;
marketId: PerpetualsMarketId;
marketInitialSharedVersion: ObjectVersion;
amount: Balance;
}
export interface ApiPerpetualsDeallocateCollateralBody {
walletAddress: SuiAddress;
packageId: PackageId;
collateralCoinType: CoinType;
accountCapId: ObjectId;
basePriceFeedId: ObjectId;
collateralPriceFeedId: ObjectId;
marketId: PerpetualsMarketId;
marketInitialSharedVersion: ObjectVersion;
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 {
packageId: PackageId;
walletAddress: SuiAddress;
collateralCoinType: CoinType;
accountCapId: ObjectId;
marketId: PerpetualsMarketId;
marketInitialSharedVersion: ObjectVersion;
orderId: PerpetualsOrderId;
collateralChange: Balance;
basePriceFeedId: ObjectId;
collateralPriceFeedId: ObjectId;
}
export interface ApiPerpetualsCancelOrdersBody {
walletAddress: SuiAddress;
collateralCoinType: CoinType;
accountCapId: ObjectId;
orderDatas: {
packageId: PackageId;
orderId: PerpetualsOrderId;
marketId: PerpetualsMarketId;
marketInitialSharedVersion: ObjectVersion;
collateralChange: Balance;
basePriceFeedId: ObjectId;
collateralPriceFeedId: ObjectId;
}[];
}
export interface ApiPerpetualsReduceOrdersBody {
walletAddress: SuiAddress;
packageId: PackageId;
collateralCoinType: CoinType;
accountCapId: ObjectId;
marketId: PerpetualsMarketId;
marketInitialSharedVersion: ObjectVersion;
orderIds: PerpetualsOrderId[];
sizesToSubtract: bigint[];
basePriceFeedId: ObjectId;
collateralPriceFeedId: ObjectId;
collateralChange: Balance;
}
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<ArrayBufferLike>;
accountId: string | number | bigint;
collateral: {
value: string | number | bigint;
};
}>;
AdminCapability: BcsType<{
id: string;
}, {
id: string | Uint8Array<ArrayBufferLike>;
}>;
BalanceStruct: BcsType<{
value: string;
}, {
value: string | number | bigint;
}>;
Coin: BcsType<{
id: string;
balance: {
value: string;
};
}, {
id: string | Uint8Array<ArrayBufferLike>;
balance: {
value: string | number | bigint;
};
}>;
Field: typeof Field;
MarketKey: BcsType<{
marketId: string;
}, {
marketId: string | number | bigint;
}>;
OrderInfo: BcsType<{
price: string;
size: string;
}, {
price: string | number | bigint;
size: string | number | bigint;
}>;
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<ArrayBufferLike>;
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<ArrayBufferLike>;
collateral_balance: {
value: string | number | bigint;
};
insurance_fund_balance: {
value: string | number | bigint;
};
scalingFactor: string | number | bigint;
}>;
};
export {};
//# sourceMappingURL=perpetualsTypes.d.ts.map