UNPKG

@drift-labs/common

Version:

Common functions for Drift

64 lines 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MarketId = void 0; const sdk_1 = require("@drift-labs/sdk"); const utils_1 = require("../utils"); class MarketId { constructor(marketIndex, marketType) { this.marketIndex = marketIndex; this.marketType = marketType; this._key = MarketId.key(marketIndex, marketType); this._isSpot = utils_1.ENUM_UTILS.match(marketType, sdk_1.MarketType.SPOT); this._isPerp = utils_1.ENUM_UTILS.match(marketType, sdk_1.MarketType.PERP); this._marketTypeStr = utils_1.ENUM_UTILS.toStr(marketType); } static getOrCreate(marketIndex, marketType) { const key = MarketId.key(marketIndex, marketType); if (MarketId.cache.has(key)) { return MarketId.cache.get(key); } const marketId = new MarketId(marketIndex, marketType); MarketId.cache.set(key, marketId); return marketId; } static createPerpMarket(marketIndex) { return MarketId.getOrCreate(marketIndex, sdk_1.MarketType.PERP); } static createSpotMarket(marketIndex) { return MarketId.getOrCreate(marketIndex, sdk_1.MarketType.SPOT); } static getMarketIdFromKey(key) { if (MarketId.cache.has(key)) { return MarketId.cache.get(key); } const [marketType, marketIndex] = key.split('_'); const marketId = new MarketId(parseInt(marketIndex), utils_1.ENUM_UTILS.toObj(marketType)); MarketId.cache.set(key, marketId); return marketId; } get isSpot() { return this._isSpot; } get isPerp() { return this._isPerp; } get marketTypeStr() { return this._marketTypeStr; } static key(marketIndex, marketType) { return `${utils_1.ENUM_UTILS.toStr(marketType)}_${marketIndex}`; } /** * Returns a unique string that can be used as a key in a map. */ get key() { return this._key; // Micro-optimisation to avoid string concatenation every time the key is accessed } equals(other) { return (utils_1.ENUM_UTILS.match(this.marketType, other.marketType) && this.marketIndex === other.marketIndex); } } exports.MarketId = MarketId; MarketId.cache = new Map(); //# sourceMappingURL=MarketId.js.map