aftermath-ts-sdk
Version:
Aftermath TypeScript SDK
156 lines (155 loc) • 6.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.perpetualsRegistry = exports.isUpdatedFundingEvent = exports.isUpdatedSpreadTwapEvent = exports.isUpdatedPremiumTwapEvent = exports.isReducedOrderEvent = exports.isFilledTakerOrderEvent = exports.isFilledMakerOrderEvent = exports.isPostedOrderReceiptEvent = exports.isPostedOrderEvent = exports.isCanceledOrderEvent = exports.isLiquidatedEvent = exports.isSettledFundingEvent = exports.isAllocatedCollateralEvent = exports.isDeallocatedCollateralEvent = exports.isDepositedCollateralEvent = exports.isWithdrewCollateralEvent = exports.isUpdatedMarketVersion = 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 OrderInfo = bcs_1.bcs.struct("OrderInfo", {
price: bcs_1.bcs.u64(),
size: bcs_1.bcs.u64(),
});
const isUpdatedMarketVersion = (event) => {
return event.type.toLowerCase().endsWith("::updatedclearinghouseversion");
};
exports.isUpdatedMarketVersion = isUpdatedMarketVersion;
// 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;
const isReducedOrderEvent = (event) => {
return event.type.toLowerCase().endsWith("::reducedorder");
};
exports.isReducedOrderEvent = isReducedOrderEvent;
const isUpdatedPremiumTwapEvent = (event) => {
return event.type.toLowerCase().endsWith("::updatedpremiumtwap");
};
exports.isUpdatedPremiumTwapEvent = isUpdatedPremiumTwapEvent;
const isUpdatedSpreadTwapEvent = (event) => {
return event.type.toLowerCase().endsWith("::updatedspreadtwap");
};
exports.isUpdatedSpreadTwapEvent = isUpdatedSpreadTwapEvent;
const isUpdatedFundingEvent = (event) => {
return event.type.toLowerCase().endsWith("::updatedfunding");
};
exports.isUpdatedFundingEvent = isUpdatedFundingEvent;
exports.perpetualsRegistry = {
Account,
AdminCapability,
BalanceStruct,
// Branch,
Coin,
Field,
// Leaf,
MarketKey,
// Order,
// Orderbook,
OrderInfo,
// PerpetualsMap,
Position,
PositionKey,
Registry,
Vault,
};