hm-aftermath-ts-sdk
Version:
Aftermath TypeScript SDK
173 lines (172 loc) • 6.72 kB
JavaScript
"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,
};