UNPKG

hm-aftermath-ts-sdk

Version:
173 lines (172 loc) 6.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.perpetualsRegistry = exports.isFilledTakerOrderEvent = exports.isFilledMakerOrderEvent = exports.isPostedOrderReceiptEvent = exports.isPostedOrderEvent = exports.isCanceledOrderEvent = exports.isLiquidatedEvent = exports.isSettledFundingEvent = exports.isAllocatedCollateralEvent = exports.isDeallocatedCollateralEvent = exports.isDepositedCollateralEvent = exports.isWithdrewCollateralEvent = exports.Leaf = exports.Branch = exports.PerpetualsOrderType = exports.PerpetualsOrderSide = void 0; const bcs_1 = require("@mysten/sui/bcs"); // ========================================================================= // Enums // ========================================================================= var PerpetualsOrderSide; (function (PerpetualsOrderSide) { PerpetualsOrderSide[PerpetualsOrderSide["Ask"] = 1] = "Ask"; PerpetualsOrderSide[PerpetualsOrderSide["Bid"] = 0] = "Bid"; })(PerpetualsOrderSide || (exports.PerpetualsOrderSide = PerpetualsOrderSide = {})); var PerpetualsOrderType; (function (PerpetualsOrderType) { PerpetualsOrderType[PerpetualsOrderType["Standard"] = 0] = "Standard"; PerpetualsOrderType[PerpetualsOrderType["FillOrKill"] = 1] = "FillOrKill"; PerpetualsOrderType[PerpetualsOrderType["PostOnly"] = 2] = "PostOnly"; PerpetualsOrderType[PerpetualsOrderType["ImmediateOrCancel"] = 3] = "ImmediateOrCancel"; })(PerpetualsOrderType || (exports.PerpetualsOrderType = PerpetualsOrderType = {})); // ========================================================================= // BCS - Binary Canonical Serialization // ========================================================================= function Field(name, value) { return bcs_1.bcs.struct("Field", { name, value }); } const AdminCapability = bcs_1.bcs.struct("AdminCapability", { id: bcs_1.bcs.Address, }); const Registry = bcs_1.bcs.struct("Registry", { id: bcs_1.bcs.Address, activeCollaterals: bcs_1.bcs.vector(bcs_1.bcs.string()), nextAccountId: bcs_1.bcs.u64(), }); const MarketKey = bcs_1.bcs.struct("MarketKey", { marketId: bcs_1.bcs.u64(), }); const BalanceStruct = bcs_1.bcs.struct("Balance", { value: bcs_1.bcs.u64() }); const Coin = bcs_1.bcs.struct("Coin", { id: bcs_1.bcs.Address, balance: BalanceStruct, }); const Vault = bcs_1.bcs.struct("Vault", { id: bcs_1.bcs.Address, collateral_balance: BalanceStruct, insurance_fund_balance: BalanceStruct, scalingFactor: bcs_1.bcs.u64(), }); const Account = bcs_1.bcs.struct("Account", { id: bcs_1.bcs.Address, accountId: bcs_1.bcs.u64(), collateral: BalanceStruct, }); const Position = bcs_1.bcs.struct("Position", { collateral: bcs_1.bcs.u256(), baseAssetAmount: bcs_1.bcs.u256(), quoteAssetNotionalAmount: bcs_1.bcs.u256(), cumFundingRateLong: bcs_1.bcs.u256(), cumFundingRateShort: bcs_1.bcs.u256(), asksQuantity: bcs_1.bcs.u256(), bidsQuantity: bcs_1.bcs.u256(), pendingOrders: bcs_1.bcs.u64(), makerFee: bcs_1.bcs.u256(), takerFee: bcs_1.bcs.u256(), }); const PositionKey = bcs_1.bcs.struct("PositionKey", { accountId: bcs_1.bcs.u64(), }); const Order = bcs_1.bcs.struct("Order", { accountId: bcs_1.bcs.u64(), size: bcs_1.bcs.u64(), }); const Orderbook = bcs_1.bcs.struct("Orderbook", { id: bcs_1.bcs.Address, asks: PerpetualsMap(Order), bids: PerpetualsMap(Order), counter: bcs_1.bcs.u64(), }); const OrderInfo = bcs_1.bcs.struct("OrderInfo", { price: bcs_1.bcs.u64(), size: bcs_1.bcs.u64(), }); function PerpetualsMap(T) { return bcs_1.bcs.struct("Map", { id: bcs_1.bcs.Address, size: bcs_1.bcs.u64(), counter: bcs_1.bcs.u64(), root: bcs_1.bcs.u64(), first: bcs_1.bcs.u64(), branchMin: bcs_1.bcs.u64(), branchMax: bcs_1.bcs.u64(), leafMin: bcs_1.bcs.u64(), leafMax: bcs_1.bcs.u64(), branchesMergeMax: bcs_1.bcs.u64(), leavesMergeMax: bcs_1.bcs.u64(), }); } exports.Branch = bcs_1.bcs.struct("Branch", { keys: bcs_1.bcs.vector(bcs_1.bcs.u128()), kids: bcs_1.bcs.vector(bcs_1.bcs.u64()), }); function Leaf(V) { return bcs_1.bcs.struct("Leaf", { keys: bcs_1.bcs.vector(bcs_1.bcs.u128()), vals: bcs_1.bcs.vector(V), next: bcs_1.bcs.u64(), }); } exports.Leaf = Leaf; // TODO: make all these checks use string value from perps api const isWithdrewCollateralEvent = (event) => { return event.type.toLowerCase().endsWith("::withdrewcollateral"); }; exports.isWithdrewCollateralEvent = isWithdrewCollateralEvent; const isDepositedCollateralEvent = (event) => { return event.type.toLowerCase().endsWith("::depositedcollateral"); }; exports.isDepositedCollateralEvent = isDepositedCollateralEvent; const isDeallocatedCollateralEvent = (event) => { return event.type.toLowerCase().endsWith("::deallocatedcollateral"); }; exports.isDeallocatedCollateralEvent = isDeallocatedCollateralEvent; const isAllocatedCollateralEvent = (event) => { return event.type.toLowerCase().endsWith("::allocatedcollateral"); }; exports.isAllocatedCollateralEvent = isAllocatedCollateralEvent; const isSettledFundingEvent = (event) => { return event.type.toLowerCase().endsWith("::settledfunding"); }; exports.isSettledFundingEvent = isSettledFundingEvent; const isLiquidatedEvent = (event) => { return event.type.toLowerCase().endsWith("::liquidatedposition"); }; exports.isLiquidatedEvent = isLiquidatedEvent; // TODO: make all these checks use string value from perps api const isCanceledOrderEvent = (event) => { return event.type.toLowerCase().endsWith("::canceledorder"); }; exports.isCanceledOrderEvent = isCanceledOrderEvent; const isPostedOrderEvent = (event) => { return event.type.toLowerCase().endsWith("::postedorder"); }; exports.isPostedOrderEvent = isPostedOrderEvent; const isPostedOrderReceiptEvent = (event) => { return event.type.toLowerCase().endsWith("::orderbookpostreceipt"); }; exports.isPostedOrderReceiptEvent = isPostedOrderReceiptEvent; const isFilledMakerOrderEvent = (event) => { return event.type.toLowerCase().endsWith("::filledmakerorder"); }; exports.isFilledMakerOrderEvent = isFilledMakerOrderEvent; const isFilledTakerOrderEvent = (event) => { return event.type.toLowerCase().endsWith("::filledtakerorder"); }; exports.isFilledTakerOrderEvent = isFilledTakerOrderEvent; exports.perpetualsRegistry = { Account, AdminCapability, BalanceStruct, Branch: exports.Branch, Coin, Field, Leaf, MarketKey, Order, Orderbook, OrderInfo, PerpetualsMap, Position, PositionKey, Registry, Vault, };