@lifi/perps-sdk-provider-lighter 30.0.0 → 31.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  2. package/dist/cjs/LighterProvider.js +62 -54
  3. package/dist/cjs/LighterProvider.js.map +1 -1
  4. package/dist/cjs/accountSummary.d.ts +4 -1
  5. package/dist/cjs/accountSummary.d.ts.map +1 -1
  6. package/dist/cjs/accountSummary.js +8 -7
  7. package/dist/cjs/accountSummary.js.map +1 -1
  8. package/dist/cjs/availableToTrade.d.ts +2 -0
  9. package/dist/cjs/availableToTrade.d.ts.map +1 -1
  10. package/dist/cjs/availableToTrade.js +6 -7
  11. package/dist/cjs/availableToTrade.js.map +1 -1
  12. package/dist/cjs/types/pnl.d.ts.map +1 -1
  13. package/dist/cjs/types/ws.d.ts +5 -0
  14. package/dist/cjs/types/ws.d.ts.map +1 -1
  15. package/dist/cjs/utils/apiClient.d.ts +3 -2
  16. package/dist/cjs/utils/apiClient.d.ts.map +1 -1
  17. package/dist/cjs/utils/apiClient.js +5 -3
  18. package/dist/cjs/utils/apiClient.js.map +1 -1
  19. package/dist/cjs/utils/fetchDetailedAccount.d.ts +1 -1
  20. package/dist/cjs/utils/fetchDetailedAccount.d.ts.map +1 -1
  21. package/dist/cjs/utils/fetchDetailedAccount.js +2 -1
  22. package/dist/cjs/utils/fetchDetailedAccount.js.map +1 -1
  23. package/dist/cjs/utils/mapFill.d.ts.map +1 -1
  24. package/dist/cjs/utils/mapFill.js +1 -3
  25. package/dist/cjs/utils/mapFill.js.map +1 -1
  26. package/dist/cjs/utils/mapPortfolioHistory.d.ts +1 -1
  27. package/dist/cjs/utils/mapPortfolioHistory.d.ts.map +1 -1
  28. package/dist/cjs/utils/mapPortfolioHistory.js +36 -21
  29. package/dist/cjs/utils/mapPortfolioHistory.js.map +1 -1
  30. package/dist/cjs/utils/mapPosition.d.ts +1 -0
  31. package/dist/cjs/utils/mapPosition.d.ts.map +1 -1
  32. package/dist/cjs/utils/mapPosition.js +13 -1
  33. package/dist/cjs/utils/mapPosition.js.map +1 -1
  34. package/dist/cjs/utils/ohlcvInterval.d.ts.map +1 -1
  35. package/dist/cjs/utils/ohlcvInterval.js.map +1 -1
  36. package/dist/cjs/utils/spotPrice.d.ts +5 -1
  37. package/dist/cjs/utils/spotPrice.d.ts.map +1 -1
  38. package/dist/cjs/utils/spotPrice.js +14 -1
  39. package/dist/cjs/utils/spotPrice.js.map +1 -1
  40. package/dist/cjs/utils/withdrawableBalances.d.ts +3 -3
  41. package/dist/cjs/utils/withdrawableBalances.d.ts.map +1 -1
  42. package/dist/cjs/utils/withdrawableBalances.js +11 -3
  43. package/dist/cjs/utils/withdrawableBalances.js.map +1 -1
  44. package/dist/cjs/websocket/LighterWsProvider.d.ts +6 -0
  45. package/dist/cjs/websocket/LighterWsProvider.d.ts.map +1 -1
  46. package/dist/cjs/websocket/LighterWsProvider.js +120 -9
  47. package/dist/cjs/websocket/LighterWsProvider.js.map +1 -1
  48. package/dist/esm/LighterProvider.d.ts.map +1 -1
  49. package/dist/esm/LighterProvider.js +71 -61
  50. package/dist/esm/LighterProvider.js.map +1 -1
  51. package/dist/esm/accountSummary.d.ts +17 -3
  52. package/dist/esm/accountSummary.d.ts.map +1 -1
  53. package/dist/esm/accountSummary.js +18 -9
  54. package/dist/esm/accountSummary.js.map +1 -1
  55. package/dist/esm/availableToTrade.d.ts +2 -0
  56. package/dist/esm/availableToTrade.d.ts.map +1 -1
  57. package/dist/esm/availableToTrade.js +4 -6
  58. package/dist/esm/availableToTrade.js.map +1 -1
  59. package/dist/esm/types/pnl.d.ts +2 -3
  60. package/dist/esm/types/pnl.d.ts.map +1 -1
  61. package/dist/esm/types/ws.d.ts +13 -0
  62. package/dist/esm/types/ws.d.ts.map +1 -1
  63. package/dist/esm/types/ws.js +0 -11
  64. package/dist/esm/types/ws.js.map +1 -1
  65. package/dist/esm/utils/apiClient.d.ts +9 -2
  66. package/dist/esm/utils/apiClient.d.ts.map +1 -1
  67. package/dist/esm/utils/apiClient.js +9 -2
  68. package/dist/esm/utils/apiClient.js.map +1 -1
  69. package/dist/esm/utils/fetchDetailedAccount.d.ts +1 -1
  70. package/dist/esm/utils/fetchDetailedAccount.d.ts.map +1 -1
  71. package/dist/esm/utils/fetchDetailedAccount.js +2 -1
  72. package/dist/esm/utils/fetchDetailedAccount.js.map +1 -1
  73. package/dist/esm/utils/mapFill.d.ts.map +1 -1
  74. package/dist/esm/utils/mapFill.js +6 -10
  75. package/dist/esm/utils/mapFill.js.map +1 -1
  76. package/dist/esm/utils/mapPortfolioHistory.d.ts +3 -6
  77. package/dist/esm/utils/mapPortfolioHistory.d.ts.map +1 -1
  78. package/dist/esm/utils/mapPortfolioHistory.js +38 -26
  79. package/dist/esm/utils/mapPortfolioHistory.js.map +1 -1
  80. package/dist/esm/utils/mapPosition.d.ts +7 -0
  81. package/dist/esm/utils/mapPosition.d.ts.map +1 -1
  82. package/dist/esm/utils/mapPosition.js +17 -0
  83. package/dist/esm/utils/mapPosition.js.map +1 -1
  84. package/dist/esm/utils/ohlcvInterval.d.ts.map +1 -1
  85. package/dist/esm/utils/ohlcvInterval.js +5 -3
  86. package/dist/esm/utils/ohlcvInterval.js.map +1 -1
  87. package/dist/esm/utils/spotPrice.d.ts +10 -1
  88. package/dist/esm/utils/spotPrice.d.ts.map +1 -1
  89. package/dist/esm/utils/spotPrice.js +14 -0
  90. package/dist/esm/utils/spotPrice.js.map +1 -1
  91. package/dist/esm/utils/withdrawableBalances.d.ts +12 -5
  92. package/dist/esm/utils/withdrawableBalances.d.ts.map +1 -1
  93. package/dist/esm/utils/withdrawableBalances.js +17 -5
  94. package/dist/esm/utils/withdrawableBalances.js.map +1 -1
  95. package/dist/esm/websocket/LighterWsProvider.d.ts +24 -0
  96. package/dist/esm/websocket/LighterWsProvider.d.ts.map +1 -1
  97. package/dist/esm/websocket/LighterWsProvider.js +153 -15
  98. package/dist/esm/websocket/LighterWsProvider.js.map +1 -1
  99. package/dist/types/LighterProvider.d.ts.map +1 -1
  100. package/dist/types/accountSummary.d.ts +17 -3
  101. package/dist/types/accountSummary.d.ts.map +1 -1
  102. package/dist/types/availableToTrade.d.ts +2 -0
  103. package/dist/types/availableToTrade.d.ts.map +1 -1
  104. package/dist/types/types/pnl.d.ts +2 -3
  105. package/dist/types/types/pnl.d.ts.map +1 -1
  106. package/dist/types/types/ws.d.ts +13 -0
  107. package/dist/types/types/ws.d.ts.map +1 -1
  108. package/dist/types/utils/apiClient.d.ts +9 -2
  109. package/dist/types/utils/apiClient.d.ts.map +1 -1
  110. package/dist/types/utils/fetchDetailedAccount.d.ts +1 -1
  111. package/dist/types/utils/fetchDetailedAccount.d.ts.map +1 -1
  112. package/dist/types/utils/mapFill.d.ts.map +1 -1
  113. package/dist/types/utils/mapPortfolioHistory.d.ts +3 -6
  114. package/dist/types/utils/mapPortfolioHistory.d.ts.map +1 -1
  115. package/dist/types/utils/mapPosition.d.ts +7 -0
  116. package/dist/types/utils/mapPosition.d.ts.map +1 -1
  117. package/dist/types/utils/ohlcvInterval.d.ts.map +1 -1
  118. package/dist/types/utils/spotPrice.d.ts +10 -1
  119. package/dist/types/utils/spotPrice.d.ts.map +1 -1
  120. package/dist/types/utils/withdrawableBalances.d.ts +12 -5
  121. package/dist/types/utils/withdrawableBalances.d.ts.map +1 -1
  122. package/dist/types/websocket/LighterWsProvider.d.ts +24 -0
  123. package/dist/types/websocket/LighterWsProvider.d.ts.map +1 -1
  124. package/package.json +3 -3
  125. package/src/LighterProvider.ts +119 -74
  126. package/src/accountSummary.ts +37 -14
  127. package/src/availableToTrade.ts +6 -10
  128. package/src/types/pnl.ts +2 -3
  129. package/src/types/ws.ts +23 -0
  130. package/src/utils/apiClient.ts +16 -7
  131. package/src/utils/fetchDetailedAccount.ts +2 -2
  132. package/src/utils/mapFill.ts +6 -13
  133. package/src/utils/mapPortfolioHistory.ts +42 -27
  134. package/src/utils/mapPosition.ts +17 -0
  135. package/src/utils/ohlcvInterval.ts +5 -3
  136. package/src/utils/spotPrice.ts +21 -1
  137. package/src/utils/withdrawableBalances.ts +26 -7
  138. package/src/websocket/LighterWsProvider.ts +222 -14
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.lighterWsProvider = exports.LighterWsProvider = void 0;
4
4
  const perps_sdk_1 = require("@lifi/perps-sdk");
5
5
  const perps_types_1 = require("@lifi/perps-types");
6
+ const accountSummary_js_1 = require("../accountSummary.js");
6
7
  const constants_js_1 = require("../constants.js");
7
8
  const apiClient_js_1 = require("../utils/apiClient.js");
8
9
  const index_js_1 = require("../utils/index.js");
10
+ const spotPrice_js_1 = require("../utils/spotPrice.js");
9
11
  const LIGHTER_AUTH_CHANNEL = {
10
12
  orderUpdates: 'account_all_orders',
11
13
  fills: 'account_all_trades',
@@ -13,6 +15,7 @@ const LIGHTER_AUTH_CHANNEL = {
13
15
  };
14
16
  function channelNeedsMarkets(channel) {
15
17
  return (channel === 'marketContext' ||
18
+ channel === 'accountSummary' ||
16
19
  channel === 'orderUpdates' ||
17
20
  channel === 'fills' ||
18
21
  channel === 'positions');
@@ -24,6 +27,7 @@ class LighterWsProvider extends perps_sdk_1.WsProviderBase {
24
27
  orderbooks = new Map();
25
28
  marketsContext = {};
26
29
  positionsByAddress = new Map();
30
+ accountSummaryInputs = new Map();
27
31
  registry;
28
32
  accountIndexCache = new Map();
29
33
  accountIndexPromises = new Map();
@@ -65,11 +69,30 @@ class LighterWsProvider extends perps_sdk_1.WsProviderBase {
65
69
  await this.requireAuthToken(channel, address);
66
70
  }
67
71
  }
68
- for (const { channel, needsAuth, address } of wireChannels) {
69
- await this.registerSub(channel, { channel, needsAuth, address });
72
+ const releaseSpotMarks = sub.channel === 'accountSummary'
73
+ ? await this.subscribeSpotMarks(sub)
74
+ : undefined;
75
+ if (sub.channel === 'accountSummary') {
76
+ this.accountSummaryInputs.set(sub.address.toLowerCase(), {});
77
+ }
78
+ try {
79
+ for (const { channel, needsAuth, address } of wireChannels) {
80
+ await this.registerSub(channel, { channel, needsAuth, address });
81
+ }
82
+ await this.rws.ready();
83
+ }
84
+ catch (error) {
85
+ releaseSpotMarks?.();
86
+ for (const { channel } of wireChannels) {
87
+ this.unregisterSub(channel);
88
+ }
89
+ if (sub.channel === 'accountSummary') {
90
+ this.accountSummaryInputs.delete(sub.address.toLowerCase());
91
+ }
92
+ throw error;
70
93
  }
71
- await this.rws.ready();
72
94
  return () => {
95
+ releaseSpotMarks?.();
73
96
  for (const { channel } of wireChannels) {
74
97
  this.unregisterSub(channel);
75
98
  this.rws.send(JSON.stringify({ type: 'unsubscribe', channel }));
@@ -83,12 +106,20 @@ class LighterWsProvider extends perps_sdk_1.WsProviderBase {
83
106
  if (sub.channel === 'positions') {
84
107
  this.positionsByAddress.delete(sub.address.toLowerCase());
85
108
  }
109
+ if (sub.channel === 'accountSummary') {
110
+ this.accountSummaryInputs.delete(sub.address.toLowerCase());
111
+ }
86
112
  };
87
113
  }
114
+ subscribeSpotMarks(sub) {
115
+ const address = sub.address.toLowerCase();
116
+ return this.subscribe({ channel: 'marketsContext', dex: sub.dex }, () => this.emitAccountSummary(address, true));
117
+ }
88
118
  onClose() {
89
119
  this.orderbooks.clear();
90
120
  this.marketsContext = {};
91
121
  this.positionsByAddress.clear();
122
+ this.accountSummaryInputs.clear();
92
123
  }
93
124
  async sendSubscribe({ channel, needsAuth, address, }) {
94
125
  const payload = {
@@ -112,6 +143,18 @@ class LighterWsProvider extends perps_sdk_1.WsProviderBase {
112
143
  }
113
144
  return token;
114
145
  }
146
+ async canResolveAuthToken(address) {
147
+ const resolve = this.authTokenResolver();
148
+ if (!resolve) {
149
+ return false;
150
+ }
151
+ try {
152
+ return Boolean(await resolve(address));
153
+ }
154
+ catch {
155
+ return false;
156
+ }
157
+ }
115
158
  toKey(sub) {
116
159
  switch (sub.channel) {
117
160
  case 'marketsContext':
@@ -171,13 +214,21 @@ class LighterWsProvider extends perps_sdk_1.WsProviderBase {
171
214
  return [{ channel: `trade/${id}`, needsAuth: false }];
172
215
  }
173
216
  if (sub.channel === 'accountSummary') {
217
+ this.settlementAssetIndex();
174
218
  const accountIndex = await this.resolveAccountIndex(sub.address);
219
+ const hasToken = await this.canResolveAuthToken(sub.address);
220
+ const assetsChannel = hasToken ? 'account_all_assets' : 'account_all';
175
221
  return [
176
222
  {
177
223
  channel: `user_stats/${accountIndex}`,
178
224
  needsAuth: false,
179
225
  address: sub.address,
180
226
  },
227
+ {
228
+ channel: `${assetsChannel}/${accountIndex}`,
229
+ needsAuth: hasToken,
230
+ address: sub.address,
231
+ },
181
232
  ];
182
233
  }
183
234
  if (sub.channel === 'orderUpdates' ||
@@ -276,6 +327,16 @@ class LighterWsProvider extends perps_sdk_1.WsProviderBase {
276
327
  this.handleUserStats(msg);
277
328
  return;
278
329
  }
330
+ if (msg.type === 'subscribed/account_all' ||
331
+ msg.type === 'update/account_all') {
332
+ this.handleAccountAll(msg, 'account_all', msg.type === 'subscribed/account_all');
333
+ return;
334
+ }
335
+ if (msg.type === 'subscribed/account_all_assets' ||
336
+ msg.type === 'update/account_all_assets') {
337
+ this.handleAccountAll(msg, 'account_all_assets', msg.type === 'subscribed/account_all_assets');
338
+ return;
339
+ }
279
340
  if (msg.type === 'subscribed/account_all_positions' ||
280
341
  msg.type === 'update/account_all_positions') {
281
342
  this.handleAccountPositions(msg, msg.type === 'subscribed/account_all_positions');
@@ -319,16 +380,66 @@ class LighterWsProvider extends perps_sdk_1.WsProviderBase {
319
380
  const crossMargin = crossPortfolio.minus(available);
320
381
  marginUsed = isolatedMargin.plus(crossMargin);
321
382
  }
383
+ const inputs = this.accountSummaryInputs.get(address);
384
+ if (inputs === undefined) {
385
+ return;
386
+ }
387
+ inputs.perps = {
388
+ equity: portfolio,
389
+ availableMargin: available.toFixed(),
390
+ marginUsed: marginUsed.toFixed(),
391
+ unrealizedPnl: portfolio.minus(collateral).toFixed(),
392
+ };
393
+ this.emitAccountSummary(address);
394
+ }
395
+ handleAccountAll(msg, prefix, isSnapshot) {
396
+ const address = this.addressFromChannel(msg.channel, prefix);
397
+ if (!address) {
398
+ return;
399
+ }
400
+ const inputs = this.accountSummaryInputs.get(address);
401
+ if (inputs === undefined || (!isSnapshot && !msg.assets)) {
402
+ return;
403
+ }
404
+ const parsed = Object.values(msg.assets ?? {}).map((asset) => [asset.asset_id, (0, index_js_1.toRequiredBig)(asset.balance, 'balance')]);
405
+ const balances = isSnapshot ? new Map() : inputs.spotBalances;
406
+ if (balances === undefined) {
407
+ return;
408
+ }
409
+ for (const [assetId, balance] of parsed) {
410
+ balances.set(assetId, balance);
411
+ }
412
+ inputs.spotBalances = balances;
413
+ this.emitAccountSummary(address);
414
+ }
415
+ emitAccountSummary(address, onlyOnChange = false) {
416
+ const inputs = this.accountSummaryInputs.get(address);
417
+ if (inputs?.perps === undefined || inputs.spotBalances === undefined) {
418
+ return;
419
+ }
420
+ const settlementAssetIndex = this.settlementAssetIndex();
421
+ const held = [...inputs.spotBalances].filter(([, balance]) => balance.gt(0));
422
+ const spotPrices = (0, spotPrice_js_1.spotPriceByAssetId)(this.registry?.markets ?? [], constants_js_1.LIGHTER_SPOT_CATEGORY_ID, Object.values(this.marketsContext), new Set(held
423
+ .filter(([assetId]) => assetId !== settlementAssetIndex)
424
+ .map(([assetId]) => String(assetId))));
425
+ const portfolioValue = (0, accountSummary_js_1.lighterPortfolioValue)(inputs.perps.equity, held.map(([assetId, balance]) => (0, spotPrice_js_1.spotValuation)(assetId, balance.toFixed(), settlementAssetIndex, spotPrices).valueUsd)).toFixed();
426
+ if (onlyOnChange && portfolioValue === inputs.lastPortfolioValue) {
427
+ return;
428
+ }
429
+ inputs.lastPortfolioValue = portfolioValue;
430
+ const { equity: _equity, ...perps } = inputs.perps;
322
431
  this.emit(`accountSummary:${address}`, {
323
432
  channel: 'accountSummary',
324
- data: {
325
- portfolioValue: portfolio.toFixed(),
326
- availableMargin: available.toFixed(),
327
- marginUsed: marginUsed.toFixed(),
328
- unrealizedPnl: portfolio.minus(collateral).toFixed(),
329
- },
433
+ data: { portfolioValue, ...perps },
330
434
  });
331
435
  }
436
+ settlementAssetIndex() {
437
+ const key = this.providerKey;
438
+ if (key === constants_js_1.LIGHTER_PROVIDER_KEY || key === constants_js_1.LIGHTER_RH_PROVIDER_KEY) {
439
+ return constants_js_1.LIGHTER_COLLATERAL_ASSETS[key].assetIndex;
440
+ }
441
+ throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.SDKError, `Lighter WS: no settlement asset for provider '${key}'.`);
442
+ }
332
443
  handleAccountTrades(msg) {
333
444
  const address = this.addressFromChannel(msg.channel, 'account_all_trades');
334
445
  if (!address) {
@@ -1 +1 @@
1
- {"version":3,"file":"LighterWsProvider.js","sourceRoot":"","sources":["../../../src/websocket/LighterWsProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LighterWsProvider.js","sourceRoot":"","sources":["../../../src/websocket/LighterWsProvider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LighterProvider.d.ts","sourceRoot":"","sources":["../../src/LighterProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,mBAAmB,EAqBxB,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAA;AAmCxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAQnC,OAAO,EAUL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAA;AAkLvB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACrD,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,4FAA4F;IAC5F,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AAcD;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CAChE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,YAAY,iBAAiB,EAC7B,UAAS,sBAA2B,KACnC,oBAg9CF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAS,sBAA2B,KACnC,oBACyD,CAAA;AAE5D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAS,sBAA2B,KACnC,oBAA6E,CAAA;AAEhF;;;;GAIG;AACH,eAAO,MAAM,OAAO,aA7BT,sBAAsB,KAC9B,oBA4BmC,CAAA"}
1
+ {"version":3,"file":"LighterProvider.d.ts","sourceRoot":"","sources":["../../src/LighterProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,mBAAmB,EAqBxB,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAA;AAmCxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAQnC,OAAO,EAUL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAA;AA2KvB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACrD,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,4FAA4F;IAC5F,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AAcD;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CAChE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,YAAY,iBAAiB,EAC7B,UAAS,sBAA2B,KACnC,oBAkgDF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAS,sBAA2B,KACnC,oBACyD,CAAA;AAE5D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAS,sBAA2B,KACnC,oBAA6E,CAAA;AAEhF;;;;GAIG;AACH,eAAO,MAAM,OAAO,aA7BT,sBAAsB,KAC9B,oBA4BmC,CAAA"}
@@ -1,8 +1,8 @@
1
- import { ACTIVE_ORDER_STATUSES, explorerTxUrl, explorerTxUrlFromBase, getAssetRegistry, getMarketRegistry, getMarketsContext, getProviders, isActiveOrderStatus, localStorageAdapter, PerpsError, paginateActivity, resolveQuote, resolveRetryPolicy, toPerpsMarketDisplay, } from '@lifi/perps-sdk';
1
+ import { ACTIVE_ORDER_STATUSES, explorerTxUrl, explorerTxUrlFromBase, getAssetRegistry, getMarketRegistry, getMarketsContext, getProviders, isActiveOrderStatus, localStorageAdapter, maxOf, minOf, PerpsError, paginateActivity, resolveQuote, resolveRetryPolicy, toPerpsMarketDisplay, } from '@lifi/perps-sdk';
2
2
  import { ActionType, ActivityType, MarginMode, PerpsErrorCode, } from '@lifi/perps-types';
3
3
  import Big from 'big.js';
4
4
  import { boundAccountTiers, projectLighterConfigSettings, resolveAccountTier, } from './accountConfig.js';
5
- import { getAccountSummary } from './accountSummary.js';
5
+ import { getAccountSummary, lighterConfig } from './accountSummary.js';
6
6
  import { lighterAvailableToTrade } from './availableToTrade.js';
7
7
  import { DEFAULT_TRADES_LIMIT, LIGHTER_ALL_MARKETS_WILDCARD, LIGHTER_BASE_FEE_TIER, LIGHTER_CLIENT_ORDER_INDEX_ID_PREFIX, LIGHTER_FEE_TICK_SCALE, LIGHTER_HISTORY_PAGE_SIZE, LIGHTER_MAINNET_DEPLOYMENT, LIGHTER_RH_DEPLOYMENT, LIGHTER_SPOT_CATEGORY_ID, } from './constants.js';
8
8
  import { lighterDepositFlow } from './depositFlow.js';
@@ -17,17 +17,11 @@ import { LIGHTER_RETRY_DEFAULTS, LighterApiClient, LighterAuthRejectedError, Lig
17
17
  import { isAssetMarginEnabled } from './utils/assetCollateral.js';
18
18
  import { estimateLiquidationPrice, fetchDetailedAccount, formatOrderPrice, formatOrderSize, leverageFromImf, lighterAsset, lighterWithdrawableBalances, mapFill, mapOpenPositions, mapOrder, mapPortfolioHistory, positionRemovableMargin, toBigOrNull, toIsoFromMs, toIsoFromSeconds, toRequiredBig, } from './utils/index.js';
19
19
  import { fetchRegisteredApiKey, normalizeLighterPublicKey, } from './utils/registeredApiKey.js';
20
- import { spotPriceByAssetId } from './utils/spotPrice.js';
20
+ import { spotPriceByAssetId, spotValuation } from './utils/spotPrice.js';
21
21
  import { isPlaceholderTxHash } from './utils/txHash.js';
22
22
  import { wireList } from './utils/wireList.js';
23
23
  const ZERO_FEE_TIER = { maker: '0', taker: '0' };
24
24
  const tickToFeeString = (tick) => String(tick / LIGHTER_FEE_TICK_SCALE);
25
- const transferableWithin = (venueFigure, units) => {
26
- if (venueFigure.lt(0)) {
27
- return '0';
28
- }
29
- return (venueFigure.gt(units) ? units : venueFigure).toFixed();
30
- };
31
25
  const projectFeeTier = (limits) => ({
32
26
  maker: tickToFeeString(limits.current_maker_fee_tick),
33
27
  taker: tickToFeeString(limits.current_taker_fee_tick),
@@ -46,15 +40,15 @@ const TX_HASH_PATTERN = /^[0-9a-f]{80}$/;
46
40
  */
47
41
  const CLIENT_ORDER_INDEX_PATTERN = /^\d+$/;
48
42
  const INACTIVE_ORDERS_LOOKUP_LIMIT = 100;
49
- const HOUR_MS = 60 * 60 * 1000;
50
- const DAY_MS = 24 * HOUR_MS;
43
+ const HOUR_SECONDS = 60 * 60;
44
+ const DAY_SECONDS = 24 * HOUR_SECONDS;
51
45
  // `all` has no natural bucket count; 1000 daily buckets reach back past the
52
46
  // venue's launch for every account.
53
47
  const PNL_WINDOWS = {
54
- '24h': { resolution: '1h', bucketMs: HOUR_MS, countBack: 24 },
55
- '7d': { resolution: '4h', bucketMs: 4 * HOUR_MS, countBack: 42 },
56
- '30d': { resolution: '1d', bucketMs: DAY_MS, countBack: 30 },
57
- all: { resolution: '1d', bucketMs: DAY_MS, countBack: 1000 },
48
+ '24h': { resolution: '1h', bucketSeconds: HOUR_SECONDS, countBack: 24 },
49
+ '7d': { resolution: '1h', bucketSeconds: HOUR_SECONDS, countBack: 168 },
50
+ '30d': { resolution: '1d', bucketSeconds: DAY_SECONDS, countBack: 30 },
51
+ all: { resolution: '1d', bucketSeconds: DAY_SECONDS, countBack: 1000 },
58
52
  };
59
53
  /** Batches that get the pre-sign account tier check. */
60
54
  const ORDER_PLACEMENT_ACTIONS = new Set([
@@ -401,19 +395,31 @@ export const createLighterProvider = (deployment, options = {}) => {
401
395
  },
402
396
  };
403
397
  };
404
- const resolveAccountExists = async (address, opts) => {
398
+ /** The account, or `undefined` when Lighter has no account for the address. */
399
+ const fetchAccountIfExists = async (client, address) => {
405
400
  try {
406
- await fetchDetailedAccount(apiClient(opts), address);
407
- return true;
401
+ return await fetchDetailedAccount(client, address);
408
402
  }
409
403
  catch (err) {
410
404
  if (err instanceof PerpsError &&
411
405
  err.code === PerpsErrorCode.AccountNotFound) {
412
- return false;
406
+ return undefined;
413
407
  }
414
408
  throw err;
415
409
  }
416
410
  };
411
+ /** The venue default for a market: its backend `defaultLeverage`, with cross margin. */
412
+ const resolveDefaultMarketSettings = async (marketId) => {
413
+ const registry = getMarketRegistry(requireClient(), providerKey);
414
+ await registry.sync();
415
+ const market = registry.require(marketId);
416
+ const leverage = 'maxLeverage' in market ? market.defaultLeverage : undefined;
417
+ if (leverage === undefined || !(leverage > 0)) {
418
+ throw new PerpsError(PerpsErrorCode.SDKError, `The backend market '${marketId}' carries no positive Lighter default leverage`);
419
+ }
420
+ return { marginMode: MarginMode.CROSS, leverage };
421
+ };
422
+ const resolveAccountExists = async (address, opts) => (await fetchAccountIfExists(apiClient(opts), address)) !== undefined;
417
423
  let setupPromise;
418
424
  /** The venue's own `Provider.setup` descriptor for an action, if declared. */
419
425
  const setupDescriptor = async (client, action) => {
@@ -515,26 +521,22 @@ export const createLighterProvider = (deployment, options = {}) => {
515
521
  const instanceMeta = providers.find((p) => p.key === providerKey);
516
522
  const categories = instanceMeta?.categories ?? [];
517
523
  const perpsCategory = categories.find((c) => c.quoteAsset !== null);
518
- const spotCategoryId = categories.find((c) => c.quoteAsset === null)?.id ??
519
- LIGHTER_SPOT_CATEGORY_ID;
520
524
  const availableBalance = toRequiredBig(account.available_balance, 'available_balance');
521
525
  // Each asset has a spot route (`balance`) and a perps route
522
526
  // (`margin_balance`). The instance's settlement asset is valued 1:1; an
523
527
  // asset no spot market prices keeps a zero USD value.
524
528
  const heldAssets = account.assets.filter((asset) => toRequiredBig(asset.balance, 'balance').gt(0));
525
529
  const marginAssets = account.assets.filter((asset) => toRequiredBig(asset.margin_balance, 'margin_balance').gt(0));
526
- const spotPrices = spotPriceByAssetId(registry.markets, spotCategoryId, prices, new Set([...heldAssets, ...marginAssets]
530
+ const spotPrices = spotPriceByAssetId(registry.markets, LIGHTER_SPOT_CATEGORY_ID, prices, new Set([...heldAssets, ...marginAssets]
527
531
  .filter((a) => a.asset_id !== collateral.assetIndex)
528
532
  .map((a) => String(a.asset_id))));
529
533
  const toBalance = (a, categoryId, asset, units) => {
530
- const price = a.asset_id === collateral.assetIndex
531
- ? new Big(1)
532
- : spotPrices.get(String(a.asset_id));
534
+ const { valueUsd, price } = spotValuation(a.asset_id, units, collateral.assetIndex, spotPrices);
533
535
  return {
534
536
  categoryId,
535
537
  asset,
536
538
  units,
537
- valueUsd: price === undefined ? '0' : new Big(units).times(price).toFixed(),
539
+ valueUsd,
538
540
  ...(price === undefined ? {} : { price: price.toFixed() }),
539
541
  };
540
542
  };
@@ -551,11 +553,17 @@ export const createLighterProvider = (deployment, options = {}) => {
551
553
  return {
552
554
  ...toBalance(a, perpsCategory?.id ?? providerKey, isSettlement ? settlementAsset : registryAsset(a), a.margin_balance),
553
555
  transferable: isSettlement
554
- ? transferableWithin(availableBalance, new Big(a.margin_balance))
556
+ ? minOf(maxOf(availableBalance, new Big(0)), new Big(a.margin_balance)).toFixed()
555
557
  : '0',
556
558
  };
557
559
  });
558
- const balances = heldAssets.map((a) => toBalance(a, spotCategoryId, registryAsset(a), a.balance));
560
+ const balances = heldAssets.map((a) => {
561
+ const balance = new Big(a.balance);
562
+ return {
563
+ ...toBalance(a, LIGHTER_SPOT_CATEGORY_ID, registryAsset(a), a.balance),
564
+ transferable: minOf(maxOf(balance.minus(toRequiredBig(a.locked_balance, 'locked_balance')), new Big(0)), balance).toFixed(),
565
+ };
566
+ });
559
567
  const assetCollateral = account.assets.flatMap((a) => a.margin_mode === undefined
560
568
  ? []
561
569
  : [
@@ -571,6 +579,8 @@ export const createLighterProvider = (deployment, options = {}) => {
571
579
  apiKeyRegistered,
572
580
  accountType: account.account_type,
573
581
  availableBalance: account.available_balance,
582
+ crossAssetValue: account.cross_asset_value,
583
+ crossInitialMarginRequirement: account.cross_initial_margin_requirement,
574
584
  totalAssetValue: account.total_asset_value,
575
585
  userTierName: limitsResult?.user_tier_name,
576
586
  accountTradingMode: account.account_trading_mode ?? LT_ACCOUNT_TRADING_MODE_SIMPLE,
@@ -605,16 +615,25 @@ export const createLighterProvider = (deployment, options = {}) => {
605
615
  return lighterDepositFlow(providerKey, await resolveAccountExists(params.address, opts));
606
616
  },
607
617
  async getWithdrawableBalances(params, opts) {
608
- const account = await fetchDetailedAccount(apiClient(opts), params.address);
609
- return lighterWithdrawableBalances(account.assets);
618
+ const account = await fetchAccountIfExists(apiClient(opts), params.address);
619
+ return account === undefined
620
+ ? []
621
+ : lighterWithdrawableBalances(account, collateral.assetIndex);
610
622
  },
611
623
  async getPositions(params, opts) {
612
624
  const client = apiClient(opts);
613
625
  const registry = getMarketRegistry(requireClient(), providerKey);
614
626
  const [account] = await Promise.all([
615
- fetchDetailedAccount(client, params.address),
627
+ fetchAccountIfExists(client, params.address),
616
628
  registry.sync(),
617
629
  ]);
630
+ if (account === undefined) {
631
+ return {
632
+ provider: providerKey,
633
+ positions: [],
634
+ pagination: { limit: params.limit ?? 0, hasMore: false },
635
+ };
636
+ }
618
637
  let positions = mapOpenPositions(account.positions, (id) => toPerpsMarketDisplay(registry.require(String(id))));
619
638
  if (params.marketId !== undefined) {
620
639
  positions = positions.filter((p) => p.market.id === params.marketId);
@@ -641,33 +660,24 @@ export const createLighterProvider = (deployment, options = {}) => {
641
660
  return lighterAvailableToTrade(market, availableMargin, account.positions);
642
661
  },
643
662
  /**
644
- * Lighter reports a market's margin mode and leverage only on the
645
- * account's position row, so a market the account never touched (or a
646
- * missing account) resolves `undefined` rather than a venue default.
663
+ * Lighter reports a market's margin mode and leverage on the account's
664
+ * position row. Without a row carrying a positive IMF (or without an
665
+ * account), the venue applies the market's default leverage with cross margin.
647
666
  */
648
667
  async getMarketSettings(params, opts) {
649
- // Spot markets carry no margin mode or leverage.
650
- if (params.market.categoryId === LIGHTER_SPOT_CATEGORY_ID) {
651
- return undefined;
652
- }
653
- let account;
654
- try {
655
- account = await fetchDetailedAccount(apiClient(opts), params.address);
656
- }
657
- catch (err) {
658
- if (err instanceof PerpsError &&
659
- err.code === PerpsErrorCode.AccountNotFound) {
660
- return undefined;
661
- }
662
- throw err;
668
+ const { marketId, categoryId } = params.market;
669
+ if (categoryId === LIGHTER_SPOT_CATEGORY_ID) {
670
+ throw new PerpsError(PerpsErrorCode.ValidationError, `Lighter market '${marketId}' is a spot market and carries no leverage setting`);
663
671
  }
664
- const row = account.positions.find((p) => String(p.market_id) === params.market.marketId);
665
- if (!row) {
666
- return undefined;
667
- }
668
- const leverage = leverageFromImf(row.initial_margin_fraction);
669
- if (leverage === undefined) {
670
- return undefined;
672
+ const client = apiClient(opts);
673
+ const account = await fetchAccountIfExists(client, params.address);
674
+ const row = account?.positions.find((p) => String(p.market_id) === marketId);
675
+ // An unparsable IMF throws; a non-positive one means no stored setting.
676
+ const leverage = row === undefined
677
+ ? undefined
678
+ : leverageFromImf(toRequiredBig(row.initial_margin_fraction, 'initial_margin_fraction').toFixed());
679
+ if (row === undefined || leverage === undefined) {
680
+ return resolveDefaultMarketSettings(marketId);
671
681
  }
672
682
  return {
673
683
  marginMode: row.margin_mode === LT_MARGIN_MODE_ISOLATED
@@ -877,17 +887,17 @@ export const createLighterProvider = (deployment, options = {}) => {
877
887
  return { range: params.range, points: [] };
878
888
  }
879
889
  const client = apiClient(opts);
880
- const account = await fetchDetailedAccount(client, params.address);
890
+ const account = await plugin.getAccount({ address: params.address }, opts);
881
891
  const window = PNL_WINDOWS[params.range];
882
- const endTimestamp = Date.now();
892
+ const endTimestampSeconds = Math.floor(Date.now() / 1_000);
883
893
  const queryParams = {
884
894
  by: 'index',
885
- value: String(account.index),
895
+ value: String(lighterConfig(account).accountIndex),
886
896
  resolution: window.resolution,
887
897
  start_timestamp: params.range === 'all'
888
898
  ? 0
889
- : endTimestamp - window.countBack * window.bucketMs,
890
- end_timestamp: endTimestamp,
899
+ : endTimestampSeconds - window.countBack * window.bucketSeconds,
900
+ end_timestamp: endTimestampSeconds,
891
901
  count_back: window.countBack,
892
902
  ignore_transfers: false,
893
903
  };
@@ -907,7 +917,7 @@ export const createLighterProvider = (deployment, options = {}) => {
907
917
  accountIndex: current.accountIndex,
908
918
  }));
909
919
  });
910
- return mapPortfolioHistory(params.range, wireList(response.pnl), toRequiredBig(account.total_asset_value, 'total_asset_value'));
920
+ return mapPortfolioHistory(params.range, wireList(response.pnl), new Big(getAccountSummary(account, account.positions).portfolioValue));
911
921
  },
912
922
  async getActivity(params, opts) {
913
923
  const token = await resolveAuthToken(opts, params.address);