@lifi/perps-sdk-provider-lighter 36.0.0 → 37.0.1

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 (143) hide show
  1. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  2. package/dist/cjs/LighterProvider.js +10 -10
  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/types/activity.d.ts.map +1 -1
  8. package/dist/cjs/types/fill.d.ts +5 -0
  9. package/dist/cjs/types/fill.d.ts.map +1 -1
  10. package/dist/cjs/types/ws.d.ts.map +1 -1
  11. package/dist/cjs/utils/fundingRate.d.ts +2 -0
  12. package/dist/cjs/utils/fundingRate.d.ts.map +1 -0
  13. package/dist/cjs/utils/fundingRate.js +8 -0
  14. package/dist/cjs/utils/fundingRate.js.map +1 -0
  15. package/dist/cjs/utils/index.d.ts +1 -1
  16. package/dist/cjs/utils/index.d.ts.map +1 -1
  17. package/dist/cjs/utils/index.js +1 -3
  18. package/dist/cjs/utils/index.js.map +1 -1
  19. package/dist/cjs/utils/mapFill.js +3 -3
  20. package/dist/cjs/utils/mapFill.js.map +1 -1
  21. package/dist/cjs/utils/mapMarketContext.d.ts.map +1 -1
  22. package/dist/cjs/utils/mapMarketContext.js +13 -4
  23. package/dist/cjs/utils/mapMarketContext.js.map +1 -1
  24. package/dist/cjs/utils/mapOpenPositions.d.ts +1 -2
  25. package/dist/cjs/utils/mapOpenPositions.d.ts.map +1 -1
  26. package/dist/cjs/utils/mapOpenPositions.js +1 -13
  27. package/dist/cjs/utils/mapOpenPositions.js.map +1 -1
  28. package/dist/cjs/utils/mapOrder.d.ts.map +1 -1
  29. package/dist/cjs/utils/mapOrder.js +31 -47
  30. package/dist/cjs/utils/mapOrder.js.map +1 -1
  31. package/dist/cjs/utils/mapPosition.d.ts.map +1 -1
  32. package/dist/cjs/utils/mapPosition.js +34 -16
  33. package/dist/cjs/utils/mapPosition.js.map +1 -1
  34. package/dist/cjs/utils/transferMargin.js +1 -1
  35. package/dist/cjs/utils/transferMargin.js.map +1 -1
  36. package/dist/cjs/utils/wireEncoding.d.ts +0 -2
  37. package/dist/cjs/utils/wireEncoding.d.ts.map +1 -1
  38. package/dist/cjs/utils/wireEncoding.js +1 -15
  39. package/dist/cjs/utils/wireEncoding.js.map +1 -1
  40. package/dist/cjs/websocket/LighterWsProvider.d.ts.map +1 -1
  41. package/dist/cjs/websocket/LighterWsProvider.js +46 -26
  42. package/dist/cjs/websocket/LighterWsProvider.js.map +1 -1
  43. package/dist/cjs/websocket/orderBookSide.d.ts +2 -1
  44. package/dist/cjs/websocket/orderBookSide.d.ts.map +1 -1
  45. package/dist/cjs/websocket/orderBookSide.js +5 -3
  46. package/dist/cjs/websocket/orderBookSide.js.map +1 -1
  47. package/dist/esm/LighterProvider.d.ts.map +1 -1
  48. package/dist/esm/LighterProvider.js +13 -13
  49. package/dist/esm/LighterProvider.js.map +1 -1
  50. package/dist/esm/accountSummary.d.ts.map +1 -1
  51. package/dist/esm/accountSummary.js +14 -7
  52. package/dist/esm/accountSummary.js.map +1 -1
  53. package/dist/esm/types/activity.d.ts +1 -0
  54. package/dist/esm/types/activity.d.ts.map +1 -1
  55. package/dist/esm/types/fill.d.ts +5 -0
  56. package/dist/esm/types/fill.d.ts.map +1 -1
  57. package/dist/esm/types/ws.d.ts +2 -0
  58. package/dist/esm/types/ws.d.ts.map +1 -1
  59. package/dist/esm/utils/fundingRate.d.ts +8 -0
  60. package/dist/esm/utils/fundingRate.d.ts.map +1 -0
  61. package/dist/esm/utils/fundingRate.js +10 -0
  62. package/dist/esm/utils/fundingRate.js.map +1 -0
  63. package/dist/esm/utils/index.d.ts +1 -1
  64. package/dist/esm/utils/index.d.ts.map +1 -1
  65. package/dist/esm/utils/index.js +1 -1
  66. package/dist/esm/utils/index.js.map +1 -1
  67. package/dist/esm/utils/mapFill.js +3 -3
  68. package/dist/esm/utils/mapFill.js.map +1 -1
  69. package/dist/esm/utils/mapMarketContext.d.ts +2 -1
  70. package/dist/esm/utils/mapMarketContext.d.ts.map +1 -1
  71. package/dist/esm/utils/mapMarketContext.js +15 -5
  72. package/dist/esm/utils/mapMarketContext.js.map +1 -1
  73. package/dist/esm/utils/mapOpenPositions.d.ts +1 -8
  74. package/dist/esm/utils/mapOpenPositions.d.ts.map +1 -1
  75. package/dist/esm/utils/mapOpenPositions.js +1 -18
  76. package/dist/esm/utils/mapOpenPositions.js.map +1 -1
  77. package/dist/esm/utils/mapOrder.d.ts +6 -3
  78. package/dist/esm/utils/mapOrder.d.ts.map +1 -1
  79. package/dist/esm/utils/mapOrder.js +39 -51
  80. package/dist/esm/utils/mapOrder.js.map +1 -1
  81. package/dist/esm/utils/mapPortfolioHistory.d.ts +2 -2
  82. package/dist/esm/utils/mapPortfolioHistory.js +2 -2
  83. package/dist/esm/utils/mapPosition.d.ts +4 -3
  84. package/dist/esm/utils/mapPosition.d.ts.map +1 -1
  85. package/dist/esm/utils/mapPosition.js +39 -20
  86. package/dist/esm/utils/mapPosition.js.map +1 -1
  87. package/dist/esm/utils/transferMargin.js +1 -1
  88. package/dist/esm/utils/transferMargin.js.map +1 -1
  89. package/dist/esm/utils/wireEncoding.d.ts +2 -28
  90. package/dist/esm/utils/wireEncoding.d.ts.map +1 -1
  91. package/dist/esm/utils/wireEncoding.js +2 -38
  92. package/dist/esm/utils/wireEncoding.js.map +1 -1
  93. package/dist/esm/websocket/LighterWsProvider.d.ts.map +1 -1
  94. package/dist/esm/websocket/LighterWsProvider.js +56 -27
  95. package/dist/esm/websocket/LighterWsProvider.js.map +1 -1
  96. package/dist/esm/websocket/orderBookSide.d.ts +3 -2
  97. package/dist/esm/websocket/orderBookSide.d.ts.map +1 -1
  98. package/dist/esm/websocket/orderBookSide.js +5 -3
  99. package/dist/esm/websocket/orderBookSide.js.map +1 -1
  100. package/dist/types/LighterProvider.d.ts.map +1 -1
  101. package/dist/types/accountSummary.d.ts.map +1 -1
  102. package/dist/types/types/activity.d.ts +1 -0
  103. package/dist/types/types/activity.d.ts.map +1 -1
  104. package/dist/types/types/fill.d.ts +5 -0
  105. package/dist/types/types/fill.d.ts.map +1 -1
  106. package/dist/types/types/ws.d.ts +2 -0
  107. package/dist/types/types/ws.d.ts.map +1 -1
  108. package/dist/types/utils/fundingRate.d.ts +8 -0
  109. package/dist/types/utils/fundingRate.d.ts.map +1 -0
  110. package/dist/types/utils/index.d.ts +1 -1
  111. package/dist/types/utils/index.d.ts.map +1 -1
  112. package/dist/types/utils/mapMarketContext.d.ts +2 -1
  113. package/dist/types/utils/mapMarketContext.d.ts.map +1 -1
  114. package/dist/types/utils/mapOpenPositions.d.ts +1 -8
  115. package/dist/types/utils/mapOpenPositions.d.ts.map +1 -1
  116. package/dist/types/utils/mapOrder.d.ts +6 -3
  117. package/dist/types/utils/mapOrder.d.ts.map +1 -1
  118. package/dist/types/utils/mapPortfolioHistory.d.ts +2 -2
  119. package/dist/types/utils/mapPosition.d.ts +4 -3
  120. package/dist/types/utils/mapPosition.d.ts.map +1 -1
  121. package/dist/types/utils/wireEncoding.d.ts +2 -28
  122. package/dist/types/utils/wireEncoding.d.ts.map +1 -1
  123. package/dist/types/websocket/LighterWsProvider.d.ts.map +1 -1
  124. package/dist/types/websocket/orderBookSide.d.ts +3 -2
  125. package/dist/types/websocket/orderBookSide.d.ts.map +1 -1
  126. package/package.json +3 -3
  127. package/src/LighterProvider.ts +22 -22
  128. package/src/accountSummary.ts +27 -6
  129. package/src/types/activity.ts +1 -0
  130. package/src/types/fill.ts +5 -0
  131. package/src/types/ws.ts +2 -0
  132. package/src/utils/fundingRate.ts +12 -0
  133. package/src/utils/index.ts +0 -2
  134. package/src/utils/mapFill.ts +3 -3
  135. package/src/utils/mapMarketContext.ts +18 -5
  136. package/src/utils/mapOpenPositions.ts +2 -30
  137. package/src/utils/mapOrder.ts +53 -71
  138. package/src/utils/mapPortfolioHistory.ts +2 -2
  139. package/src/utils/mapPosition.ts +50 -23
  140. package/src/utils/transferMargin.ts +1 -1
  141. package/src/utils/wireEncoding.ts +2 -43
  142. package/src/websocket/LighterWsProvider.ts +100 -60
  143. package/src/websocket/orderBookSide.ts +17 -4
@@ -13,6 +13,7 @@
13
13
  */
14
14
  export type LtTrade = {
15
15
  trade_id: number;
16
+ trade_id_str: string;
16
17
  tx_hash: string;
17
18
  type: string;
18
19
  market_id: number;
@@ -21,6 +22,10 @@ export type LtTrade = {
21
22
  usd_amount: string;
22
23
  ask_id: number;
23
24
  bid_id: number;
25
+ ask_id_str: string;
26
+ bid_id_str: string;
27
+ ask_client_id_str: string;
28
+ bid_client_id_str: string;
24
29
  ask_account_id: number;
25
30
  bid_account_id: number;
26
31
  is_maker_ask: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../../src/types/fill.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IAIjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAGlB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IAIxB,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAKnC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAKjC,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACzB"}
1
+ {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../../src/types/fill.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IAIjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAGlB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IAIxB,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAKnC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAKjC,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACzB"}
@@ -34,7 +34,9 @@ export type LtWsMarketStats = {
34
34
  mid_price: string;
35
35
  open_interest: string;
36
36
  last_trade_price: string;
37
+ /** Estimated next hourly funding rate, in percent. */
37
38
  current_funding_rate: string;
39
+ /** Last settled hourly funding rate, in percent. */
38
40
  funding_rate: string;
39
41
  funding_timestamp: number;
40
42
  daily_base_token_volume: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Convert a Lighter funding rate, which the venue publishes in percent
3
+ * (`'0.0012'` is 0.0012 %), to the decimal fraction the SDK funding fields
4
+ * carry (`'0.000012'`). `undefined` with a warning when `percent` does not
5
+ * match the decimal pattern.
6
+ */
7
+ export declare const fundingPercentToFraction: (percent: string) => string | undefined;
8
+ //# sourceMappingURL=fundingRate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fundingRate.d.ts","sourceRoot":"","sources":["../../../src/utils/fundingRate.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,SAAS,MAAM,KAAG,MAAM,GAAG,SACf,CAAA"}
@@ -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"}
@@ -4,7 +4,8 @@ import type { LtWsMarketStats, LtWsSpotMarketStats } from '../types/index.js';
4
4
  * Map a Lighter market-stats record to a {@link MarketContext}: `index_price`
5
5
  * is the oracle, `mid_price` the mid. Perp records carry the venue
6
6
  * `mark_price`, funding and open interest; spot records have none, so mark
7
- * falls back to the mid and the perp-only fields stay `undefined`.
7
+ * falls back to the mid and the perp-only fields stay `undefined`. The venue
8
+ * funding rate is hourly percent; `funding.rate` is its decimal fraction.
8
9
  * @public
9
10
  */
10
11
  export declare const mapMarketContext: (stats: LtWsMarketStats | LtWsSpotMarketStats) => MarketContext;
@@ -1 +1 @@
1
- {"version":3,"file":"mapMarketContext.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarketContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AA6B7E;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,eAAe,GAAG,mBAAmB,KAC3C,aAuBF,CAAA"}
1
+ {"version":3,"file":"mapMarketContext.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarketContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AA4C7E;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,eAAe,GAAG,mBAAmB,KAC3C,aAoBF,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;AAkGhD;;;;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":"AAAA,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAOlB,cAAc,EACd,KAAK,iBAAiB,EAGvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAuFnC;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;AAEhC,UAAU,QAAQ;IAChB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAA;CACnB;AAeD;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;CAC5C;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAE5B;IACb,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IAEnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,cAAc,CAAoC;IAE1D;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2C;IAE9E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAGlC;IAEH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IAErD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4B;IAC9D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqC;gBAGxE,KAAK,GAAE,MAA+B,EACtC,WAAW,GAAE,MAA6B,EAC1C,OAAO,GAAE,wBAA6B,EACtC,MAAM,CAAC,EAAE,cAAc;IAsBzB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;;;OAKG;IACG,cAAc,CAClB,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC;cAkBN,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IA6DnE;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;cASP,OAAO,IAAI,IAAI;cAOlB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,OAAO,GACR,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3B;;;;;;;OAOG;YACW,gBAAgB;IAsB9B,2FAA2F;YAC7E,mBAAmB;IAYjC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;YAyB5B,cAAc;YAwGd,mBAAmB;YAqBnB,iBAAiB;IAK/B,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAqB1C,OAAO,CAAC,QAAQ;IA0GhB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,eAAe;IAkEvB,4EAA4E;IAC5E,OAAO,CAAC,gBAAgB;IAyCxB,qEAAqE;IACrE,OAAO,CAAC,kBAAkB;IA8C1B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,sBAAsB;IAsC9B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,iBAAiB;IAuCzB,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,mBAAmB;CAc5B;AAmGD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,wBAAwB,KACjC,iBAKA,CAAA"}
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.1",
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.1"
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,
@@ -150,6 +151,7 @@ import {
150
151
  LighterTokenRevokedError,
151
152
  } from './utils/apiClient.js'
152
153
  import { isAssetMarginEnabled } from './utils/assetCollateral.js'
154
+ import { fundingPercentToFraction } from './utils/fundingRate.js'
153
155
  import {
154
156
  fetchDetailedAccount,
155
157
  type LighterFastWithdrawal,
@@ -168,7 +170,6 @@ import {
168
170
  toIsoFromMs,
169
171
  toIsoFromSeconds,
170
172
  } from './utils/index.js'
171
- import { requireOpenPositions } from './utils/mapOpenPositions.js'
172
173
  import {
173
174
  fetchRegisteredApiKey,
174
175
  normalizeLighterPublicKey,
@@ -184,16 +185,11 @@ import { wireList } from './utils/wireList.js'
184
185
 
185
186
  const ZERO_FEE_TIER = { maker: '0', taker: '0' }
186
187
 
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
188
  const tickToFeeString = (tick: number): string =>
196
- numberToDecimalString(tick / LIGHTER_FEE_TICK_SCALE)
189
+ divideDecimalString(
190
+ numberToDecimalString(tick),
191
+ numberToDecimalString(LIGHTER_FEE_TICK_SCALE)
192
+ )
197
193
 
198
194
  const projectFeeTier = (
199
195
  limits: LtAccountLimits
@@ -1095,13 +1091,16 @@ export const createLighterProvider = (
1095
1091
  ? readOnlyTokenManager.get(params.address, localKey.accountIndex)
1096
1092
  : Promise.resolve(undefined),
1097
1093
  ])
1098
- const positions: Position[] = requireOpenPositions(
1099
- account.positions,
1100
- (id) => toPerpsMarketDisplay(registry.require(String(id)))
1094
+ const positions: Position[] = mapOpenPositions(account.positions, (id) =>
1095
+ toPerpsMarketDisplay(registry.require(String(id)))
1101
1096
  )
1102
1097
 
1103
- const totalMarginUsed = safeSum(positions.map((p) => p.marginUsed))
1104
- const totalUnrealizedPnl = safeSum(positions.map((p) => p.unrealizedPnl))
1098
+ const totalMarginUsed = safeAddDecimalStrings(
1099
+ positions.map((p) => p.marginUsed)
1100
+ )
1101
+ const totalUnrealizedPnl = safeAddDecimalStrings(
1102
+ positions.map((p) => p.unrealizedPnl)
1103
+ )
1105
1104
 
1106
1105
  const instanceMeta = providers.find((p) => p.key === providerKey)
1107
1106
  const categories = instanceMeta?.categories ?? []
@@ -1618,7 +1617,7 @@ export const createLighterProvider = (
1618
1617
  // `accountOrders` reaches active and inactive rows alike, so a reused
1619
1618
  // client order index can match more than one row. Prefer the live one.
1620
1619
  const matches = orders
1621
- .filter((o) => String(o.client_order_index) === clientOrderIndex)
1620
+ .filter((o) => o.client_order_id === clientOrderIndex)
1622
1621
  .flatMap((o) => mapDetail(o) ?? [])
1623
1622
  const hit =
1624
1623
  matches.find((o) => isActiveOrderStatus(o.status)) ?? matches[0]
@@ -1628,8 +1627,7 @@ export const createLighterProvider = (
1628
1627
  return hit
1629
1628
  }
1630
1629
 
1631
- const byOrderIndex = (o: LtOrder): boolean =>
1632
- String(o.order_index) === params.id
1630
+ const byOrderIndex = (o: LtOrder): boolean => o.order_id === params.id
1633
1631
 
1634
1632
  const active = await retryOnRevoked(params.address, token, (t) =>
1635
1633
  fetchActiveOrders(
@@ -1811,10 +1809,12 @@ export const createLighterProvider = (
1811
1809
  // `get`, not `require`: a market id the backend list no longer carries
1812
1810
  // drops only its own row instead of rejecting the whole feed. The
1813
1811
  // registry warns once per unresolved id. A delisted market still
1814
- // resolves, so its rows stay.
1812
+ // resolves, so its rows stay. A `rate` that does not match the decimal
1813
+ // pattern also drops only its own row.
1815
1814
  ...history.fundings.position_fundings.flatMap((f): ActivityItem[] => {
1816
1815
  const market = marketRegistry.get(String(f.market_id))
1817
- if (market === undefined) {
1816
+ const fundingRate = fundingPercentToFraction(f.rate)
1817
+ if (market === undefined || fundingRate === undefined) {
1818
1818
  return []
1819
1819
  }
1820
1820
  return [
@@ -1826,7 +1826,7 @@ export const createLighterProvider = (
1826
1826
  market,
1827
1827
  amount: f.change,
1828
1828
  positionSize: f.position_size,
1829
- fundingRate: f.rate,
1829
+ fundingRate,
1830
1830
  },
1831
1831
  ]
1832
1832
  }),
@@ -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
  }
@@ -78,6 +78,7 @@ export interface LtPositionFunding {
78
78
  * `FundingActivity.amount`.
79
79
  */
80
80
  change: string
81
+ /** Hourly funding rate of this payment, in percent. */
81
82
  rate: string
82
83
  position_size: string
83
84
  position_side: string
package/src/types/fill.ts CHANGED
@@ -16,6 +16,7 @@
16
16
  */
17
17
  export type LtTrade = {
18
18
  trade_id: number
19
+ trade_id_str: string
19
20
  tx_hash: string
20
21
  type: string
21
22
  market_id: number
@@ -24,6 +25,10 @@ export type LtTrade = {
24
25
  usd_amount: string
25
26
  ask_id: number
26
27
  bid_id: number
28
+ ask_id_str: string
29
+ bid_id_str: string
30
+ ask_client_id_str: string
31
+ bid_client_id_str: string
27
32
  ask_account_id: number
28
33
  bid_account_id: number
29
34
  is_maker_ask: boolean
package/src/types/ws.ts CHANGED
@@ -48,7 +48,9 @@ export type LtWsMarketStats = {
48
48
  mid_price: string
49
49
  open_interest: string
50
50
  last_trade_price: string
51
+ /** Estimated next hourly funding rate, in percent. */
51
52
  current_funding_rate: string
53
+ /** Last settled hourly funding rate, in percent. */
52
54
  funding_rate: string
53
55
  funding_timestamp: number
54
56
  daily_base_token_volume: number
@@ -0,0 +1,12 @@
1
+ import { safeDivideDecimalString } from '@lifi/perps-sdk'
2
+
3
+ const PERCENT_PER_WHOLE = '100'
4
+
5
+ /**
6
+ * Convert a Lighter funding rate, which the venue publishes in percent
7
+ * (`'0.0012'` is 0.0012 %), to the decimal fraction the SDK funding fields
8
+ * carry (`'0.000012'`). `undefined` with a warning when `percent` does not
9
+ * match the decimal pattern.
10
+ */
11
+ export const fundingPercentToFraction = (percent: string): string | undefined =>
12
+ safeDivideDecimalString(percent, PERCENT_PER_WHOLE)
@@ -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
  }
@@ -161,8 +161,8 @@ export const mapFill = (
161
161
  : tickToFeeAmount(trade.usd_amount, feeTick, integratorFeeTick)
162
162
 
163
163
  return {
164
- id: trade.trade_id.toString(),
165
- orderId: String(isBuyer ? trade.bid_id : trade.ask_id),
164
+ id: trade.trade_id_str,
165
+ orderId: isBuyer ? trade.bid_id_str : trade.ask_id_str,
166
166
  market,
167
167
  side: isBuyer ? OrderSide.BUY : OrderSide.SELL,
168
168
  type: OrderType.LIMIT,
@@ -1,6 +1,7 @@
1
1
  import { numberToDecimalString } from '@lifi/perps-sdk'
2
2
  import type { MarketContext } from '@lifi/perps-types'
3
3
  import type { LtWsMarketStats, LtWsSpotMarketStats } from '../types/index.js'
4
+ import { fundingPercentToFraction } from './fundingRate.js'
4
5
 
5
6
  const FUNDING_PERIOD_MS = 60 * 60 * 1000
6
7
 
@@ -29,11 +30,26 @@ const dailyFigures = (stats: {
29
30
  : {}),
30
31
  })
31
32
 
33
+ const fundingInfo = (
34
+ stats: LtWsMarketStats
35
+ ): Pick<MarketContext, 'funding'> => {
36
+ const rate = fundingPercentToFraction(stats.current_funding_rate)
37
+ return rate === undefined
38
+ ? {}
39
+ : {
40
+ funding: {
41
+ rate,
42
+ nextFundingTime: stats.funding_timestamp + FUNDING_PERIOD_MS,
43
+ },
44
+ }
45
+ }
46
+
32
47
  /**
33
48
  * Map a Lighter market-stats record to a {@link MarketContext}: `index_price`
34
49
  * is the oracle, `mid_price` the mid. Perp records carry the venue
35
50
  * `mark_price`, funding and open interest; spot records have none, so mark
36
- * falls back to the mid and the perp-only fields stay `undefined`.
51
+ * falls back to the mid and the perp-only fields stay `undefined`. The venue
52
+ * funding rate is hourly percent; `funding.rate` is its decimal fraction.
37
53
  * @public
38
54
  */
39
55
  export const mapMarketContext = (
@@ -48,10 +64,7 @@ export const mapMarketContext = (
48
64
  oraclePrice: stats.index_price,
49
65
  ...dailyFigures(stats),
50
66
  openInterest: stats.open_interest,
51
- funding: {
52
- rate: stats.current_funding_rate,
53
- nextFundingTime: stats.funding_timestamp + FUNDING_PERIOD_MS,
54
- },
67
+ ...fundingInfo(stats),
55
68
  }
56
69
  }
57
70
  return {