@lifi/perps-sdk-provider-lighter 36.0.0 → 37.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 (103) hide show
  1. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  2. package/dist/cjs/LighterProvider.js +4 -6
  3. package/dist/cjs/LighterProvider.js.map +1 -1
  4. package/dist/cjs/accountSummary.d.ts.map +1 -1
  5. package/dist/cjs/accountSummary.js +13 -6
  6. package/dist/cjs/accountSummary.js.map +1 -1
  7. package/dist/cjs/utils/index.d.ts +1 -1
  8. package/dist/cjs/utils/index.d.ts.map +1 -1
  9. package/dist/cjs/utils/index.js +1 -3
  10. package/dist/cjs/utils/index.js.map +1 -1
  11. package/dist/cjs/utils/mapFill.js +1 -1
  12. package/dist/cjs/utils/mapFill.js.map +1 -1
  13. package/dist/cjs/utils/mapOpenPositions.d.ts +1 -2
  14. package/dist/cjs/utils/mapOpenPositions.d.ts.map +1 -1
  15. package/dist/cjs/utils/mapOpenPositions.js +1 -13
  16. package/dist/cjs/utils/mapOpenPositions.js.map +1 -1
  17. package/dist/cjs/utils/mapOrder.d.ts.map +1 -1
  18. package/dist/cjs/utils/mapOrder.js +26 -43
  19. package/dist/cjs/utils/mapOrder.js.map +1 -1
  20. package/dist/cjs/utils/mapPosition.d.ts.map +1 -1
  21. package/dist/cjs/utils/mapPosition.js +34 -16
  22. package/dist/cjs/utils/mapPosition.js.map +1 -1
  23. package/dist/cjs/utils/transferMargin.js +1 -1
  24. package/dist/cjs/utils/transferMargin.js.map +1 -1
  25. package/dist/cjs/utils/wireEncoding.d.ts +0 -2
  26. package/dist/cjs/utils/wireEncoding.d.ts.map +1 -1
  27. package/dist/cjs/utils/wireEncoding.js +1 -15
  28. package/dist/cjs/utils/wireEncoding.js.map +1 -1
  29. package/dist/cjs/websocket/LighterWsProvider.d.ts.map +1 -1
  30. package/dist/cjs/websocket/LighterWsProvider.js +46 -26
  31. package/dist/cjs/websocket/LighterWsProvider.js.map +1 -1
  32. package/dist/cjs/websocket/orderBookSide.d.ts +2 -1
  33. package/dist/cjs/websocket/orderBookSide.d.ts.map +1 -1
  34. package/dist/cjs/websocket/orderBookSide.js +5 -3
  35. package/dist/cjs/websocket/orderBookSide.js.map +1 -1
  36. package/dist/esm/LighterProvider.d.ts.map +1 -1
  37. package/dist/esm/LighterProvider.js +5 -8
  38. package/dist/esm/LighterProvider.js.map +1 -1
  39. package/dist/esm/accountSummary.d.ts.map +1 -1
  40. package/dist/esm/accountSummary.js +14 -7
  41. package/dist/esm/accountSummary.js.map +1 -1
  42. package/dist/esm/utils/index.d.ts +1 -1
  43. package/dist/esm/utils/index.d.ts.map +1 -1
  44. package/dist/esm/utils/index.js +1 -1
  45. package/dist/esm/utils/index.js.map +1 -1
  46. package/dist/esm/utils/mapFill.js +1 -1
  47. package/dist/esm/utils/mapFill.js.map +1 -1
  48. package/dist/esm/utils/mapOpenPositions.d.ts +1 -8
  49. package/dist/esm/utils/mapOpenPositions.d.ts.map +1 -1
  50. package/dist/esm/utils/mapOpenPositions.js +1 -18
  51. package/dist/esm/utils/mapOpenPositions.js.map +1 -1
  52. package/dist/esm/utils/mapOrder.d.ts +6 -3
  53. package/dist/esm/utils/mapOrder.d.ts.map +1 -1
  54. package/dist/esm/utils/mapOrder.js +33 -47
  55. package/dist/esm/utils/mapOrder.js.map +1 -1
  56. package/dist/esm/utils/mapPortfolioHistory.d.ts +2 -2
  57. package/dist/esm/utils/mapPortfolioHistory.js +2 -2
  58. package/dist/esm/utils/mapPosition.d.ts +4 -3
  59. package/dist/esm/utils/mapPosition.d.ts.map +1 -1
  60. package/dist/esm/utils/mapPosition.js +39 -20
  61. package/dist/esm/utils/mapPosition.js.map +1 -1
  62. package/dist/esm/utils/transferMargin.js +1 -1
  63. package/dist/esm/utils/transferMargin.js.map +1 -1
  64. package/dist/esm/utils/wireEncoding.d.ts +2 -28
  65. package/dist/esm/utils/wireEncoding.d.ts.map +1 -1
  66. package/dist/esm/utils/wireEncoding.js +2 -38
  67. package/dist/esm/utils/wireEncoding.js.map +1 -1
  68. package/dist/esm/websocket/LighterWsProvider.d.ts.map +1 -1
  69. package/dist/esm/websocket/LighterWsProvider.js +56 -27
  70. package/dist/esm/websocket/LighterWsProvider.js.map +1 -1
  71. package/dist/esm/websocket/orderBookSide.d.ts +3 -2
  72. package/dist/esm/websocket/orderBookSide.d.ts.map +1 -1
  73. package/dist/esm/websocket/orderBookSide.js +5 -3
  74. package/dist/esm/websocket/orderBookSide.js.map +1 -1
  75. package/dist/types/LighterProvider.d.ts.map +1 -1
  76. package/dist/types/accountSummary.d.ts.map +1 -1
  77. package/dist/types/utils/index.d.ts +1 -1
  78. package/dist/types/utils/index.d.ts.map +1 -1
  79. package/dist/types/utils/mapOpenPositions.d.ts +1 -8
  80. package/dist/types/utils/mapOpenPositions.d.ts.map +1 -1
  81. package/dist/types/utils/mapOrder.d.ts +6 -3
  82. package/dist/types/utils/mapOrder.d.ts.map +1 -1
  83. package/dist/types/utils/mapPortfolioHistory.d.ts +2 -2
  84. package/dist/types/utils/mapPosition.d.ts +4 -3
  85. package/dist/types/utils/mapPosition.d.ts.map +1 -1
  86. package/dist/types/utils/wireEncoding.d.ts +2 -28
  87. package/dist/types/utils/wireEncoding.d.ts.map +1 -1
  88. package/dist/types/websocket/LighterWsProvider.d.ts.map +1 -1
  89. package/dist/types/websocket/orderBookSide.d.ts +3 -2
  90. package/dist/types/websocket/orderBookSide.d.ts.map +1 -1
  91. package/package.json +3 -3
  92. package/src/LighterProvider.ts +14 -16
  93. package/src/accountSummary.ts +27 -6
  94. package/src/utils/index.ts +0 -2
  95. package/src/utils/mapFill.ts +1 -1
  96. package/src/utils/mapOpenPositions.ts +2 -30
  97. package/src/utils/mapOrder.ts +46 -67
  98. package/src/utils/mapPortfolioHistory.ts +2 -2
  99. package/src/utils/mapPosition.ts +50 -23
  100. package/src/utils/transferMargin.ts +1 -1
  101. package/src/utils/wireEncoding.ts +2 -43
  102. package/src/websocket/LighterWsProvider.ts +100 -60
  103. package/src/websocket/orderBookSide.ts +17 -4
@@ -1 +1 @@
1
- {"version":3,"file":"orderBookSide.js","sourceRoot":"","sources":["../../../src/websocket/orderBookSide.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orderBookSide.js","sourceRoot":"","sources":["../../../src/websocket/orderBookSide.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,EAgBL,KAAK,mBAAmB,EAsBxB,KAAK,cAAc,EAQpB,MAAM,iBAAiB,CAAA;AAkCxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAQnC,OAAO,EAUL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAA;AA4LvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,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;;;;OAIG;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,oBA8nDF,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,EAiBL,KAAK,mBAAmB,EAsBxB,KAAK,cAAc,EAQpB,MAAM,iBAAiB,CAAA;AAkCxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAQnC,OAAO,EAUL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAA;AAsLvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,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;;;;OAIG;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,oBAioDF,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 +1 @@
1
- {"version":3,"file":"accountSummary.d.ts","sourceRoot":"","sources":["../../src/accountSummary.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAS1B;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,SAAS,eAAe,KACvB,oBAYF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,EACnB,kBAAkB,SAAS,MAAM,EAAE,KAClC,MAQA,CAAA;AAEH;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,QAAQ,EAAE,GACpB,cAAc,CA8ChB"}
1
+ {"version":3,"file":"accountSummary.d.ts","sourceRoot":"","sources":["../../src/accountSummary.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAS1B;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,SAAS,eAAe,KACvB,oBAYF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,EACnB,kBAAkB,SAAS,MAAM,EAAE,KAClC,MAQA,CAAA;AAkBH;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,QAAQ,EAAE,GACpB,cAAc,CAgDhB"}
@@ -15,7 +15,7 @@ export { mapInterval } from './ohlcvInterval.js';
15
15
  export { snapOrderPrice, snapOrderSize } from './orderFormatting.js';
16
16
  export { toIsoFromMs, toIsoFromSeconds } from './time.js';
17
17
  export { positionRemovableMargin } from './transferMargin.js';
18
- export { leverageToFraction, mapOrderTypeToInt, mapTimeInForceToInt, marginFractionToMaxLeverage, orderExpiryForTif, resolveTimeInForce, } from './wireEncoding.js';
18
+ export { mapOrderTypeToInt, mapTimeInForceToInt, orderExpiryForTif, resolveTimeInForce, } from './wireEncoding.js';
19
19
  export { lighterWithdrawableBalances } from './withdrawableBalances.js';
20
20
  export type { LighterFastWithdrawal, LighterWithdrawalOptions, } from './withdrawalTypes.js';
21
21
  export { lighterFastWithdrawal, lighterWithdrawalTypes, } from './withdrawalTypes.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AACvE,YAAY,EACV,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AACvE,YAAY,EACV,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sBAAsB,CAAA"}
@@ -1,4 +1,4 @@
1
- import { type PerpsMarketDisplay, type Position } from '@lifi/perps-types';
1
+ import type { PerpsMarketDisplay, Position } from '@lifi/perps-types';
2
2
  import type { LtAccountPosition } from '../types/index.js';
3
3
  /**
4
4
  * True when the Lighter position row has a non-zero size. A malformed size
@@ -15,11 +15,4 @@ export declare const isOpenPosition: (p: LtAccountPosition) => boolean;
15
15
  * @public
16
16
  */
17
17
  export declare const mapOpenPositions: (positions: LtAccountPosition[], resolveMarket: (marketId: number) => PerpsMarketDisplay) => Position[];
18
- /**
19
- * Map every open Lighter position for account totals, which must not leave a
20
- * position out.
21
- *
22
- * @throws {PerpsError} `SDKError` when `mapPosition` skips an open row.
23
- */
24
- export declare const requireOpenPositions: (positions: LtAccountPosition[], resolveMarket: (marketId: number) => PerpsMarketDisplay) => Position[];
25
18
  //# sourceMappingURL=mapOpenPositions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapOpenPositions.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOpenPositions.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,GAAG,iBAAiB,KAAG,OACR,CAAA;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,iBAAiB,EAAE,EAC9B,eAAe,CAAC,QAAQ,EAAE,MAAM,KAAK,kBAAkB,KACtD,QAAQ,EAIP,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,WAAW,iBAAiB,EAAE,EAC9B,eAAe,CAAC,QAAQ,EAAE,MAAM,KAAK,kBAAkB,KACtD,QAAQ,EAYP,CAAA"}
1
+ {"version":3,"file":"mapOpenPositions.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOpenPositions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,GAAG,iBAAiB,KAAG,OACR,CAAA;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,iBAAiB,EAAE,EAC9B,eAAe,CAAC,QAAQ,EAAE,MAAM,KAAK,kBAAkB,KACtD,QAAQ,EAIP,CAAA"}
@@ -2,11 +2,14 @@ import type { MarketDisplay, Order } from '@lifi/perps-types';
2
2
  import type { LtOrder } from '../types/index.js';
3
3
  /**
4
4
  * Map a Lighter order with its venue identity, lifecycle, and execution fields.
5
- * A row with an invalid size or time gives `undefined`. An invalid limit price or
6
- * filled quote amount omits that field.
5
+ * Venue sizes and prices pass verbatim. A row with an invalid time gives
6
+ * `undefined`. An average price that cannot be derived is omitted.
7
7
  */
8
8
  export declare const mapOrder: (order: LtOrder, market: MarketDisplay) => Order | undefined;
9
- /** Include terminal rows and their ids so consumers can update history and active caches. */
9
+ /**
10
+ * Include terminal rows and their ids so consumers can update history and
11
+ * active caches. A row the mapper rejects is dropped and warns once.
12
+ */
10
13
  export declare const mapOrderUpdates: (rawOrders: LtOrder[], resolveMarket: (marketIndex: number) => MarketDisplay | undefined) => {
11
14
  orders: Order[];
12
15
  terminated: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAa,MAAM,mBAAmB,CAAA;AASxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AA2GhD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GACnB,OAAO,OAAO,EACd,QAAQ,aAAa,KACpB,KAAK,GAAG,SAmGV,CAAA;AAED,6FAA6F;AAC7F,eAAO,MAAM,eAAe,GAC1B,WAAW,OAAO,EAAE,EACpB,eAAe,CAAC,WAAW,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KAChE;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAczC,CAAA"}
1
+ {"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAa,MAAM,mBAAmB,CAAA;AASxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AA+FhD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GACnB,OAAO,OAAO,EACd,QAAQ,aAAa,KACpB,KAAK,GAAG,SAwEV,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,WAAW,OAAO,EAAE,EACpB,eAAe,CAAC,WAAW,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KAChE;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CA6BzC,CAAA"}
@@ -5,8 +5,8 @@ import type { LtPnLEntry } from '../types/pnl.js';
5
5
  * Historical account values are anchored to the current account value. A
6
6
  * snapshot with a non-finite value is skipped.
7
7
  *
8
- * @throws {PerpsError} `ValidationError` when `currentValue` is not a decimal
9
- * string.
8
+ * @throws {PerpsError} `ValidationError` when `currentValue` does not match the
9
+ * decimal pattern.
10
10
  */
11
11
  export declare const mapPortfolioHistory: (range: PortfolioHistoryRange, snapshots: LtPnLEntry[], currentValue: string) => PortfolioHistoryResponse;
12
12
  //# sourceMappingURL=mapPortfolioHistory.d.ts.map
@@ -18,9 +18,10 @@ export declare const leverageFromImf: (imf: string) => string | undefined;
18
18
  export declare const leverageFromScaledImf: (imf: number) => string | undefined;
19
19
  /**
20
20
  * Map a raw Lighter account position to the generic Position type. A row with
21
- * an invalid size or value, or a non-positive initial margin fraction, gives
22
- * `undefined`: the mapper derives the size, mark price, margin and leverage
23
- * from them. Prices, PnL, funding and isolated margin pass through raw.
21
+ * an invalid size gives `undefined`. An invalid position value or a
22
+ * non-positive initial margin fraction keeps the row, leaves `leverage` and
23
+ * `initialMarginRequirement` absent, sets a cross `marginUsed` to `'0'` and
24
+ * warns once. Prices, PnL, funding and isolated margin pass through raw.
24
25
  * @param market - Backend-resolved market identity for `pos.market_id`.
25
26
  * @public
26
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAOrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAQtD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAO5D,CAAA;AAOD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,iBAAiB,EACtB,QAAQ,kBAAkB,KACzB,QAAQ,GAAG,SAqCb,CAAA"}
1
+ {"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAOrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAQtD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAO5D,CAAA;AAsBD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,iBAAiB,EACtB,QAAQ,kBAAkB,KACzB,QAAQ,GAAG,SA+Cb,CAAA"}
@@ -1,33 +1,7 @@
1
1
  /**
2
- * Lighter wire encoding for the WASM signer: basis-point margin fractions and
3
- * order-type/time-in-force/expiry resolution mirroring lighter-go's rules.
2
+ * Lighter wire encoding for the WASM signer: order-type/time-in-force/expiry
3
+ * resolution mirroring lighter-go's rules.
4
4
  */
5
- /**
6
- * Convert Lighter's initial-margin fraction to the largest whole-number
7
- * leverage exposed by the provider.
8
- *
9
- * Lighter expresses margin fractions in basis points (`10_000` = 100%), so
10
- * the conversion is `floor(10_000 / fraction)`. Non-finite or non-positive
11
- * input uses the safe `1x` fallback.
12
- *
13
- * @param fraction - Lighter's basis-point initial-margin fraction.
14
- * @returns The floored maximum leverage, or `1` for invalid input.
15
- * @public
16
- */
17
- export declare const marginFractionToMaxLeverage: (fraction: number) => number;
18
- /**
19
- * Convert requested leverage to Lighter's basis-point margin fraction.
20
- *
21
- * The signer expects `round(10_000 / leverage)`, where the result is the
22
- * margin requirement in basis points.
23
- *
24
- * @param leverage - Requested leverage multiplier.
25
- * @returns The rounded basis-point margin fraction.
26
- * @throws {PerpsError} With `ValidationError` when leverage is less than
27
- * or equal to zero.
28
- * @public
29
- */
30
- export declare const leverageToFraction: (leverage: number) => number;
31
5
  /**
32
6
  * Map a LI.FI `OrderType` value to Lighter's integer wire type.
33
7
  * Supported mappings are LIMIT → 0, MARKET → 1, STOP_MARKET → 2,
@@ -1 +1 @@
1
- {"version":3,"file":"wireEncoding.d.ts","sourceRoot":"","sources":["../../../src/utils/wireEncoding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,GAAI,UAAU,MAAM,KAAG,MAK9D,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,MAQrD,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAWjD,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,EACpB,MAAM,MAAM,KACX,MAgBF,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,MAOlD,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MAKlD,CAAA"}
1
+ {"version":3,"file":"wireEncoding.d.ts","sourceRoot":"","sources":["../../../src/utils/wireEncoding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAWjD,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,EACpB,MAAM,MAAM,KACX,MAgBF,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,MAOlD,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MAKlD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"LighterWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/LighterWsProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LighterWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/LighterWsProvider.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import type { LtWsOrderBook } from '../types/index.js';
2
2
  /**
3
3
  * Orders two decimal-string prices: a negative result puts `a` before `b`.
4
4
  *
5
- * @throws {PerpsError} `ValidationError` when a price is not a decimal string.
5
+ * @throws {PerpsError} `ValidationError` when a price does not match the decimal pattern.
6
6
  */
7
7
  export type PriceOrder = (a: string, b: string) => number;
8
8
  export declare const bidOrder: PriceOrder;
@@ -14,9 +14,10 @@ export declare const askOrder: PriceOrder;
14
14
  export declare class OrderBookSide {
15
15
  private readonly order;
16
16
  private readonly providerKey;
17
+ private readonly marketId;
17
18
  private readonly byPrice;
18
19
  private readonly levels;
19
- constructor(order: PriceOrder, providerKey: string);
20
+ constructor(order: PriceOrder, providerKey: string, marketId: string);
20
21
  /**
21
22
  * Applies snapshot or delta levels; a zero size deletes the level. A level
22
23
  * with an invalid size also deletes the level at its price, so the book
@@ -1 +1 @@
1
- {"version":3,"file":"orderBookSide.d.ts","sourceRoot":"","sources":["../../../src/websocket/orderBookSide.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;AAEzD,eAAO,MAAM,QAAQ,EAAE,UAAkD,CAAA;AACzE,eAAO,MAAM,QAAQ,EAAE,UAAkD,CAAA;AAOzE;;;GAGG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAL9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAGtB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM;IAGtC;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI;IAgC3C,QAAQ,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAIlD,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,KAAK;CAad"}
1
+ {"version":3,"file":"orderBookSide.d.ts","sourceRoot":"","sources":["../../../src/websocket/orderBookSide.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;AAEzD,eAAO,MAAM,QAAQ,EAAE,UAAkD,CAAA;AACzE,eAAO,MAAM,QAAQ,EAAE,UAAkD,CAAA;AAOzE;;;GAGG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAGtB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM;IAGnC;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI;IA4C3C,QAAQ,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAIlD,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,KAAK;CAad"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk-provider-lighter",
3
- "version": "36.0.0",
3
+ "version": "37.0.0",
4
4
  "description": "Lighter provider plugin for @lifi/perps-sdk",
5
5
  "homepage": "https://github.com/lifinance/perps-sdk",
6
6
  "bugs": {
@@ -44,10 +44,10 @@
44
44
  "dependencies": {
45
45
  "big.js": "^7.0.1",
46
46
  "viem": "^2.55.18",
47
- "@lifi/perps-types": "^21.0.0"
47
+ "@lifi/perps-types": "^22.0.0"
48
48
  },
49
49
  "peerDependencies": {
50
- "@lifi/perps-sdk": "^24.0.0"
50
+ "@lifi/perps-sdk": "^25.0.0"
51
51
  },
52
52
  "publishConfig": {
53
53
  "access": "public"
@@ -2,6 +2,7 @@ import {
2
2
  ACTIVE_ORDER_STATUSES,
3
3
  calculateTransferable,
4
4
  type DepositFlow,
5
+ divideDecimalString,
5
6
  estimateLiquidationPriceAtMarketRate,
6
7
  explorerTxUrl,
7
8
  explorerTxUrlFromBase,
@@ -38,7 +39,7 @@ import {
38
39
  type SignActionsContext,
39
40
  type StorageAdapter,
40
41
  safeAbsDecimalString,
41
- safeAddDecimalString,
42
+ safeAddDecimalStrings,
42
43
  safeMultiplyDecimalString,
43
44
  subtractDecimalString,
44
45
  toPerpsMarketDisplay,
@@ -168,7 +169,6 @@ import {
168
169
  toIsoFromMs,
169
170
  toIsoFromSeconds,
170
171
  } from './utils/index.js'
171
- import { requireOpenPositions } from './utils/mapOpenPositions.js'
172
172
  import {
173
173
  fetchRegisteredApiKey,
174
174
  normalizeLighterPublicKey,
@@ -184,16 +184,11 @@ import { wireList } from './utils/wireList.js'
184
184
 
185
185
  const ZERO_FEE_TIER = { maker: '0', taker: '0' }
186
186
 
187
- /** The sum of `values`, or `undefined` when any term is not a decimal string. */
188
- const safeSum = (values: readonly string[]): string | undefined =>
189
- values.reduce<string | undefined>(
190
- (sum, value) =>
191
- sum === undefined ? undefined : safeAddDecimalString(sum, value),
192
- '0'
193
- )
194
-
195
187
  const tickToFeeString = (tick: number): string =>
196
- numberToDecimalString(tick / LIGHTER_FEE_TICK_SCALE)
188
+ divideDecimalString(
189
+ numberToDecimalString(tick),
190
+ numberToDecimalString(LIGHTER_FEE_TICK_SCALE)
191
+ )
197
192
 
198
193
  const projectFeeTier = (
199
194
  limits: LtAccountLimits
@@ -1095,13 +1090,16 @@ export const createLighterProvider = (
1095
1090
  ? readOnlyTokenManager.get(params.address, localKey.accountIndex)
1096
1091
  : Promise.resolve(undefined),
1097
1092
  ])
1098
- const positions: Position[] = requireOpenPositions(
1099
- account.positions,
1100
- (id) => toPerpsMarketDisplay(registry.require(String(id)))
1093
+ const positions: Position[] = mapOpenPositions(account.positions, (id) =>
1094
+ toPerpsMarketDisplay(registry.require(String(id)))
1101
1095
  )
1102
1096
 
1103
- const totalMarginUsed = safeSum(positions.map((p) => p.marginUsed))
1104
- const totalUnrealizedPnl = safeSum(positions.map((p) => p.unrealizedPnl))
1097
+ const totalMarginUsed = safeAddDecimalStrings(
1098
+ positions.map((p) => p.marginUsed)
1099
+ )
1100
+ const totalUnrealizedPnl = safeAddDecimalStrings(
1101
+ positions.map((p) => p.unrealizedPnl)
1102
+ )
1105
1103
 
1106
1104
  const instanceMeta = providers.find((p) => p.key === providerKey)
1107
1105
  const categories = instanceMeta?.categories ?? []
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  addDecimalString,
3
+ createWarnOnce,
4
+ isDecimalString,
3
5
  PerpsError,
6
+ safeAddDecimalStrings,
4
7
  subtractDecimalString,
5
8
  unknownToDecimalString,
6
9
  } from '@lifi/perps-sdk'
@@ -55,6 +58,22 @@ export const lighterPortfolioValue = (
55
58
  perpsEquity
56
59
  )
57
60
 
61
+ const warnSkippedTermOnce = createWarnOnce()
62
+
63
+ const sumReadableTerms = (terms: readonly string[], field: string): string => {
64
+ const readable = terms.filter((term) => {
65
+ if (isDecimalString(term)) {
66
+ return true
67
+ }
68
+ warnSkippedTermOnce(
69
+ `${LIGHTER_PROVIDER_KEY}|${field}`,
70
+ `[${LIGHTER_PROVIDER_KEY}] skipping a \`${field}\` term that does not match the decimal pattern: '${String(term).slice(0, 64)}'`
71
+ )
72
+ return false
73
+ })
74
+ return safeAddDecimalStrings(readable) ?? '0'
75
+ }
76
+
58
77
  /**
59
78
  * Roll up settlement equity, spot holdings and non-settlement margin holdings.
60
79
  * The settlement asset counts as `totalAssetValue` plus its spot-route balance,
@@ -105,11 +124,13 @@ export function getAccountSummary(
105
124
  )
106
125
  )
107
126
  ),
108
- marginUsed: positions
109
- .map((p) => p.marginUsed)
110
- .reduce(addDecimalString, '0'),
111
- unrealizedPnl: positions
112
- .map((p) => p.unrealizedPnl)
113
- .reduce(addDecimalString, '0'),
127
+ marginUsed: sumReadableTerms(
128
+ positions.map((p) => p.marginUsed),
129
+ 'position.marginUsed'
130
+ ),
131
+ unrealizedPnl: sumReadableTerms(
132
+ positions.map((p) => p.unrealizedPnl),
133
+ 'position.unrealizedPnl'
134
+ ),
114
135
  }
115
136
  }
@@ -23,10 +23,8 @@ export { snapOrderPrice, snapOrderSize } from './orderFormatting.js'
23
23
  export { toIsoFromMs, toIsoFromSeconds } from './time.js'
24
24
  export { positionRemovableMargin } from './transferMargin.js'
25
25
  export {
26
- leverageToFraction,
27
26
  mapOrderTypeToInt,
28
27
  mapTimeInForceToInt,
29
- marginFractionToMaxLeverage,
30
28
  orderExpiryForTif,
31
29
  resolveTimeInForce,
32
30
  } from './wireEncoding.js'
@@ -130,7 +130,7 @@ export const mapFill = (
130
130
  'fill',
131
131
  'timestamp',
132
132
  trade.timestamp,
133
- 'timestamp'
133
+ { marketId: market.id, expected: 'timestamp' }
134
134
  )
135
135
  return undefined
136
136
  }
@@ -1,10 +1,5 @@
1
- import { PerpsError, safeIsDecimalStringZero } from '@lifi/perps-sdk'
2
- import {
3
- PerpsErrorCode,
4
- type PerpsMarketDisplay,
5
- type Position,
6
- } from '@lifi/perps-types'
7
- import { LIGHTER_PROVIDER_KEY } from '../constants.js'
1
+ import { safeIsDecimalStringZero } from '@lifi/perps-sdk'
2
+ import type { PerpsMarketDisplay, Position } from '@lifi/perps-types'
8
3
  import type { LtAccountPosition } from '../types/index.js'
9
4
  import { mapPosition } from './mapPosition.js'
10
5
 
@@ -32,26 +27,3 @@ export const mapOpenPositions = (
32
27
  const position = mapPosition(p, resolveMarket(p.market_id))
33
28
  return position === undefined ? [] : [position]
34
29
  })
35
-
36
- /**
37
- * Map every open Lighter position for account totals, which must not leave a
38
- * position out.
39
- *
40
- * @throws {PerpsError} `SDKError` when `mapPosition` skips an open row.
41
- */
42
- export const requireOpenPositions = (
43
- positions: LtAccountPosition[],
44
- resolveMarket: (marketId: number) => PerpsMarketDisplay
45
- ): Position[] =>
46
- positions.filter(isOpenPosition).map((p) => {
47
- const position = mapPosition(p, resolveMarket(p.market_id))
48
- if (position !== undefined) {
49
- return position
50
- }
51
- const error = new PerpsError(
52
- PerpsErrorCode.SDKError,
53
- `${LIGHTER_PROVIDER_KEY} position for market ${p.market_id} is not valid, so the account totals are unknown.`
54
- )
55
- error.tool = LIGHTER_PROVIDER_KEY
56
- throw error
57
- })
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  isActiveOrderStatus,
3
- isDecimalStringGreaterThan,
4
3
  PerpsError,
5
4
  safeDivideDecimalString,
5
+ safeIsDecimalStringGreaterThan,
6
6
  safeTimestampToIsoString,
7
7
  triggerConditionFor,
8
- unknownToDecimalString,
9
8
  warnSkippedVenueRow,
9
+ wsLog,
10
10
  } from '@lifi/perps-sdk'
11
11
  import type { MarketDisplay, Order, OrderBase } from '@lifi/perps-types'
12
12
  import {
@@ -62,18 +62,8 @@ const mapTimeInForce = (tif: string): TimeInForce => {
62
62
  }
63
63
  }
64
64
 
65
- const venueDecimal = (value: unknown, field: string): string | undefined => {
66
- try {
67
- return unknownToDecimalString(value, field, LIGHTER_PROVIDER_KEY)
68
- } catch {
69
- return undefined
70
- }
71
- }
72
-
73
- const hasFill = (order: LtOrder): boolean => {
74
- const filled = venueDecimal(order.filled_base_amount, 'filled_base_amount')
75
- return filled !== undefined && isDecimalStringGreaterThan(filled, '0')
76
- }
65
+ const hasFill = (order: LtOrder): boolean =>
66
+ safeIsDecimalStringGreaterThan(order.filled_base_amount, '0') === true
77
67
 
78
68
  const mapOrderStatus = (order: LtOrder): OrderStatus => {
79
69
  switch (order.status) {
@@ -113,67 +103,39 @@ const mapOrderStatus = (order: LtOrder): OrderStatus => {
113
103
  }
114
104
  }
115
105
 
116
- const skipOrder = (field: string, value: unknown): undefined => {
117
- warnSkippedVenueRow(LIGHTER_PROVIDER_KEY, 'order', field, value)
106
+ const skipOrder = (
107
+ marketId: string,
108
+ field: string,
109
+ value: unknown
110
+ ): undefined => {
111
+ warnSkippedVenueRow(LIGHTER_PROVIDER_KEY, 'order', field, value, { marketId })
118
112
  return undefined
119
113
  }
120
114
 
121
- const orderSizeOrSkip = (
122
- field: 'initial_base_amount' | 'remaining_base_amount' | 'filled_base_amount',
123
- value: string
124
- ): string | undefined =>
125
- venueDecimal(value, field) === undefined ? skipOrder(field, value) : value
126
-
127
115
  /**
128
116
  * Map a Lighter order with its venue identity, lifecycle, and execution fields.
129
- * A row with an invalid size or time gives `undefined`. An invalid limit price or
130
- * filled quote amount omits that field.
117
+ * Venue sizes and prices pass verbatim. A row with an invalid time gives
118
+ * `undefined`. An average price that cannot be derived is omitted.
131
119
  */
132
120
  export const mapOrder = (
133
121
  order: LtOrder,
134
122
  market: MarketDisplay
135
123
  ): Order | undefined => {
136
124
  const type = mapOrderType(order.type)
137
- const originalSize = orderSizeOrSkip(
138
- 'initial_base_amount',
139
- order.initial_base_amount
140
- )
141
- if (originalSize === undefined) {
142
- return undefined
143
- }
144
- const remainingSize = orderSizeOrSkip(
145
- 'remaining_base_amount',
146
- order.remaining_base_amount
147
- )
148
- if (remainingSize === undefined) {
149
- return undefined
150
- }
151
- const filledSize = orderSizeOrSkip(
152
- 'filled_base_amount',
153
- order.filled_base_amount
154
- )
155
- if (filledSize === undefined) {
156
- return undefined
157
- }
158
125
  const createdAt = rowTimestampToIsoStringOrUndefined(order.created_at * 1000)
159
126
  if (createdAt === undefined) {
160
- return skipOrder('created_at', order.created_at)
127
+ return skipOrder(market.id, 'created_at', order.created_at)
161
128
  }
162
129
  const updatedAt = rowTimestampToIsoStringOrUndefined(order.updated_at * 1000)
163
130
  if (updatedAt === undefined) {
164
- return skipOrder('updated_at', order.updated_at)
131
+ return skipOrder(market.id, 'updated_at', order.updated_at)
165
132
  }
166
- const filledQuote = venueDecimal(
167
- order.filled_quote_amount,
168
- 'filled_quote_amount'
169
- )
170
- const filledAmount = venueDecimal(filledSize, 'filled_base_amount')
171
- const averagePrice =
172
- filledQuote !== undefined &&
173
- filledAmount !== undefined &&
174
- isDecimalStringGreaterThan(filledAmount, '0')
175
- ? safeDivideDecimalString(filledQuote, filledAmount)
176
- : undefined
133
+ const averagePrice = hasFill(order)
134
+ ? safeDivideDecimalString(
135
+ order.filled_quote_amount,
136
+ order.filled_base_amount
137
+ )
138
+ : undefined
177
139
  const expiresAt =
178
140
  order.order_expiry > 0
179
141
  ? safeTimestampToIsoString(order.order_expiry)
@@ -188,9 +150,9 @@ export const mapOrder = (
188
150
  side: order.is_ask ? OrderSide.SELL : OrderSide.BUY,
189
151
  status,
190
152
  ...(status === OrderStatus.CANCELLED ? { statusReason: order.status } : {}),
191
- originalSize,
192
- remainingSize,
193
- filledSize,
153
+ originalSize: order.initial_base_amount,
154
+ remainingSize: order.remaining_base_amount,
155
+ filledSize: order.filled_base_amount,
194
156
  ...(averagePrice === undefined ? {} : { averagePrice }),
195
157
  reduceOnly: order.reduce_only,
196
158
  ...(order.parent_order_id ? { parentOrderId: order.parent_order_id } : {}),
@@ -214,9 +176,8 @@ export const mapOrder = (
214
176
  type,
215
177
  triggerPrice: order.trigger_price,
216
178
  triggerCondition: triggerConditionFor(type, base.side),
217
- ...((type === OrderType.STOP_LIMIT ||
218
- type === OrderType.TAKE_PROFIT_LIMIT) &&
219
- venueDecimal(order.price, 'price') !== undefined
179
+ ...(type === OrderType.STOP_LIMIT ||
180
+ type === OrderType.TAKE_PROFIT_LIMIT
220
181
  ? { limitPrice: order.price }
221
182
  : {}),
222
183
  }
@@ -233,7 +194,10 @@ export const mapOrder = (
233
194
  }
234
195
  }
235
196
 
236
- /** Include terminal rows and their ids so consumers can update history and active caches. */
197
+ /**
198
+ * Include terminal rows and their ids so consumers can update history and
199
+ * active caches. A row the mapper rejects is dropped and warns once.
200
+ */
237
201
  export const mapOrderUpdates = (
238
202
  rawOrders: LtOrder[],
239
203
  resolveMarket: (marketIndex: number) => MarketDisplay | undefined
@@ -242,8 +206,23 @@ export const mapOrderUpdates = (
242
206
  const terminated: string[] = []
243
207
  for (const raw of rawOrders) {
244
208
  const market = resolveMarket(raw.market_index)
245
- const order = market === undefined ? undefined : mapOrder(raw, market)
246
- if (!isActiveOrderStatus(order?.status ?? mapOrderStatus(raw))) {
209
+ let order: Order | undefined
210
+ let status: OrderStatus
211
+ try {
212
+ order = market === undefined ? undefined : mapOrder(raw, market)
213
+ status = order?.status ?? mapOrderStatus(raw)
214
+ } catch (error) {
215
+ if (!(error instanceof PerpsError)) {
216
+ throw error
217
+ }
218
+ wsLog.droppedRow(
219
+ LIGHTER_PROVIDER_KEY,
220
+ 'order',
221
+ `${raw.order_index}: ${error.message}`
222
+ )
223
+ continue
224
+ }
225
+ if (!isActiveOrderStatus(status)) {
247
226
  terminated.push(String(raw.order_index))
248
227
  }
249
228
  if (order !== undefined) {
@@ -69,8 +69,8 @@ function getCumulativeNetFlow(snapshot: LtPnLEntry): string {
69
69
  * Historical account values are anchored to the current account value. A
70
70
  * snapshot with a non-finite value is skipped.
71
71
  *
72
- * @throws {PerpsError} `ValidationError` when `currentValue` is not a decimal
73
- * string.
72
+ * @throws {PerpsError} `ValidationError` when `currentValue` does not match the
73
+ * decimal pattern.
74
74
  */
75
75
  export const mapPortfolioHistory = (
76
76
  range: PortfolioHistoryRange,