@lifi/perps-sdk 18.1.0 → 20.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 (162) hide show
  1. package/README.md +15 -5
  2. package/dist/cjs/client/PerpsClient.d.ts +14 -8
  3. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  4. package/dist/cjs/client/PerpsClient.js +145 -53
  5. package/dist/cjs/client/PerpsClient.js.map +1 -1
  6. package/dist/cjs/client/createPerpsClient.d.ts +1 -6
  7. package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
  8. package/dist/cjs/client/createPerpsClient.js +1 -14
  9. package/dist/cjs/client/createPerpsClient.js.map +1 -1
  10. package/dist/cjs/index.d.ts +6 -4
  11. package/dist/cjs/index.d.ts.map +1 -1
  12. package/dist/cjs/index.js +11 -3
  13. package/dist/cjs/index.js.map +1 -1
  14. package/dist/cjs/services/getOhlcv.d.ts.map +1 -1
  15. package/dist/cjs/services/getOhlcv.js.map +1 -1
  16. package/dist/cjs/types/api.d.ts +7 -6
  17. package/dist/cjs/types/api.d.ts.map +1 -1
  18. package/dist/cjs/types/config.d.ts +0 -9
  19. package/dist/cjs/types/config.d.ts.map +1 -1
  20. package/dist/cjs/types/provider.d.ts +5 -6
  21. package/dist/cjs/types/provider.d.ts.map +1 -1
  22. package/dist/cjs/types/withdrawal.d.ts +4 -2
  23. package/dist/cjs/types/withdrawal.d.ts.map +1 -1
  24. package/dist/cjs/utils/calculations.d.ts.map +1 -1
  25. package/dist/cjs/utils/calculations.js +107 -38
  26. package/dist/cjs/utils/calculations.js.map +1 -1
  27. package/dist/cjs/utils/decimal.d.ts +4 -0
  28. package/dist/cjs/utils/decimal.d.ts.map +1 -0
  29. package/dist/cjs/utils/decimal.js +14 -0
  30. package/dist/cjs/utils/decimal.js.map +1 -0
  31. package/dist/cjs/utils/math.d.ts +4 -0
  32. package/dist/cjs/utils/math.d.ts.map +1 -0
  33. package/dist/cjs/utils/math.js +8 -0
  34. package/dist/cjs/utils/math.js.map +1 -0
  35. package/dist/cjs/utils/parse.d.ts +1 -0
  36. package/dist/cjs/utils/parse.d.ts.map +1 -1
  37. package/dist/cjs/utils/parse.js +15 -0
  38. package/dist/cjs/utils/parse.js.map +1 -1
  39. package/dist/cjs/utils/positionMath.d.ts +5 -0
  40. package/dist/cjs/utils/positionMath.d.ts.map +1 -1
  41. package/dist/cjs/utils/positionMath.js +53 -6
  42. package/dist/cjs/utils/positionMath.js.map +1 -1
  43. package/dist/cjs/utils/setupActions.d.ts +4 -2
  44. package/dist/cjs/utils/setupActions.d.ts.map +1 -1
  45. package/dist/cjs/utils/setupActions.js +9 -1
  46. package/dist/cjs/utils/setupActions.js.map +1 -1
  47. package/dist/cjs/utils/switchChain.js +1 -1
  48. package/dist/cjs/utils/switchChain.js.map +1 -1
  49. package/dist/cjs/version.d.ts +1 -1
  50. package/dist/cjs/version.js +1 -1
  51. package/dist/cjs/websocket/PerpsWsClient.d.ts +0 -1
  52. package/dist/cjs/websocket/PerpsWsClient.d.ts.map +1 -1
  53. package/dist/cjs/websocket/PerpsWsClient.js +0 -7
  54. package/dist/cjs/websocket/PerpsWsClient.js.map +1 -1
  55. package/dist/esm/client/PerpsClient.d.ts +70 -61
  56. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  57. package/dist/esm/client/PerpsClient.js +215 -107
  58. package/dist/esm/client/PerpsClient.js.map +1 -1
  59. package/dist/esm/client/createPerpsClient.d.ts +1 -12
  60. package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
  61. package/dist/esm/client/createPerpsClient.js +1 -19
  62. package/dist/esm/client/createPerpsClient.js.map +1 -1
  63. package/dist/esm/client/requireProvider.d.ts +1 -1
  64. package/dist/esm/client/requireProvider.js +1 -1
  65. package/dist/esm/index.d.ts +6 -4
  66. package/dist/esm/index.d.ts.map +1 -1
  67. package/dist/esm/index.js +5 -3
  68. package/dist/esm/index.js.map +1 -1
  69. package/dist/esm/services/getOhlcv.d.ts +1 -0
  70. package/dist/esm/services/getOhlcv.d.ts.map +1 -1
  71. package/dist/esm/services/getOhlcv.js.map +1 -1
  72. package/dist/esm/types/api.d.ts +39 -36
  73. package/dist/esm/types/api.d.ts.map +1 -1
  74. package/dist/esm/types/config.d.ts +0 -27
  75. package/dist/esm/types/config.d.ts.map +1 -1
  76. package/dist/esm/types/provider.d.ts +28 -33
  77. package/dist/esm/types/provider.d.ts.map +1 -1
  78. package/dist/esm/types/withdrawal.d.ts +24 -15
  79. package/dist/esm/types/withdrawal.d.ts.map +1 -1
  80. package/dist/esm/utils/calculations.d.ts +3 -2
  81. package/dist/esm/utils/calculations.d.ts.map +1 -1
  82. package/dist/esm/utils/calculations.js +109 -39
  83. package/dist/esm/utils/calculations.js.map +1 -1
  84. package/dist/esm/utils/decimal.d.ts +9 -0
  85. package/dist/esm/utils/decimal.d.ts.map +1 -0
  86. package/dist/esm/utils/decimal.js +12 -0
  87. package/dist/esm/utils/decimal.js.map +1 -0
  88. package/dist/esm/utils/math.d.ts +6 -0
  89. package/dist/esm/utils/math.d.ts.map +1 -0
  90. package/dist/esm/utils/math.js +5 -0
  91. package/dist/esm/utils/math.js.map +1 -0
  92. package/dist/esm/utils/parse.d.ts +7 -0
  93. package/dist/esm/utils/parse.d.ts.map +1 -1
  94. package/dist/esm/utils/parse.js +20 -0
  95. package/dist/esm/utils/parse.js.map +1 -1
  96. package/dist/esm/utils/positionMath.d.ts +13 -0
  97. package/dist/esm/utils/positionMath.d.ts.map +1 -1
  98. package/dist/esm/utils/positionMath.js +60 -6
  99. package/dist/esm/utils/positionMath.js.map +1 -1
  100. package/dist/esm/utils/setupActions.d.ts +17 -8
  101. package/dist/esm/utils/setupActions.d.ts.map +1 -1
  102. package/dist/esm/utils/setupActions.js +20 -7
  103. package/dist/esm/utils/setupActions.js.map +1 -1
  104. package/dist/esm/utils/switchChain.js +1 -1
  105. package/dist/esm/utils/switchChain.js.map +1 -1
  106. package/dist/esm/version.d.ts +1 -1
  107. package/dist/esm/version.js +1 -1
  108. package/dist/esm/websocket/PerpsWsClient.d.ts +0 -7
  109. package/dist/esm/websocket/PerpsWsClient.d.ts.map +1 -1
  110. package/dist/esm/websocket/PerpsWsClient.js +0 -7
  111. package/dist/esm/websocket/PerpsWsClient.js.map +1 -1
  112. package/dist/types/client/PerpsClient.d.ts +70 -61
  113. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  114. package/dist/types/client/createPerpsClient.d.ts +1 -12
  115. package/dist/types/client/createPerpsClient.d.ts.map +1 -1
  116. package/dist/types/client/requireProvider.d.ts +1 -1
  117. package/dist/types/index.d.ts +6 -4
  118. package/dist/types/index.d.ts.map +1 -1
  119. package/dist/types/services/getOhlcv.d.ts +1 -0
  120. package/dist/types/services/getOhlcv.d.ts.map +1 -1
  121. package/dist/types/types/api.d.ts +39 -36
  122. package/dist/types/types/api.d.ts.map +1 -1
  123. package/dist/types/types/config.d.ts +0 -27
  124. package/dist/types/types/config.d.ts.map +1 -1
  125. package/dist/types/types/provider.d.ts +28 -33
  126. package/dist/types/types/provider.d.ts.map +1 -1
  127. package/dist/types/types/withdrawal.d.ts +24 -15
  128. package/dist/types/types/withdrawal.d.ts.map +1 -1
  129. package/dist/types/utils/calculations.d.ts +3 -2
  130. package/dist/types/utils/calculations.d.ts.map +1 -1
  131. package/dist/types/utils/decimal.d.ts +9 -0
  132. package/dist/types/utils/decimal.d.ts.map +1 -0
  133. package/dist/types/utils/math.d.ts +6 -0
  134. package/dist/types/utils/math.d.ts.map +1 -0
  135. package/dist/types/utils/parse.d.ts +7 -0
  136. package/dist/types/utils/parse.d.ts.map +1 -1
  137. package/dist/types/utils/positionMath.d.ts +13 -0
  138. package/dist/types/utils/positionMath.d.ts.map +1 -1
  139. package/dist/types/utils/setupActions.d.ts +17 -8
  140. package/dist/types/utils/setupActions.d.ts.map +1 -1
  141. package/dist/types/version.d.ts +1 -1
  142. package/dist/types/websocket/PerpsWsClient.d.ts +0 -7
  143. package/dist/types/websocket/PerpsWsClient.d.ts.map +1 -1
  144. package/package.json +2 -2
  145. package/src/client/PerpsClient.ts +296 -137
  146. package/src/client/createPerpsClient.ts +4 -32
  147. package/src/client/requireProvider.ts +1 -1
  148. package/src/index.ts +8 -5
  149. package/src/services/getOhlcv.ts +1 -0
  150. package/src/types/api.ts +40 -40
  151. package/src/types/config.ts +0 -30
  152. package/src/types/provider.ts +29 -36
  153. package/src/types/withdrawal.ts +24 -15
  154. package/src/utils/calculations.ts +114 -43
  155. package/src/utils/decimal.ts +13 -0
  156. package/src/utils/math.ts +7 -0
  157. package/src/utils/parse.ts +25 -0
  158. package/src/utils/positionMath.ts +66 -6
  159. package/src/utils/setupActions.ts +27 -13
  160. package/src/utils/switchChain.ts +1 -1
  161. package/src/version.ts +1 -1
  162. package/src/websocket/PerpsWsClient.ts +0 -19
@@ -18,4 +18,11 @@
18
18
  * @public
19
19
  */
20
20
  export declare function stringToFloat(value: string): number;
21
+ /**
22
+ * Parse an optional decimal field, with the same formatting tolerance as {@link stringToFloat}.
23
+ * Gives back `undefined` for a missing, malformed or non-finite value, and `0` for an empty string.
24
+ *
25
+ * @public
26
+ */
27
+ export declare function parseDecimal(value: string | null | undefined): number | undefined;
21
28
  //# sourceMappingURL=parse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/utils/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASnD"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/utils/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASnD;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,MAAM,GAAG,SAAS,CAYpB"}
@@ -27,4 +27,24 @@ export function stringToFloat(value) {
27
27
  }
28
28
  return parseFloat(cleaned);
29
29
  }
30
+ const FORMATTED_NUMBER = /^(?:[+-]\s*)?(?:\$\s*)?(?:(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?(?:\s*(?:%|USD))?$/i;
31
+ /**
32
+ * Parse an optional decimal field, with the same formatting tolerance as {@link stringToFloat}.
33
+ * Gives back `undefined` for a missing, malformed or non-finite value, and `0` for an empty string.
34
+ *
35
+ * @public
36
+ */
37
+ export function parseDecimal(value) {
38
+ if (value == null) {
39
+ return undefined;
40
+ }
41
+ if (value.trim() === '') {
42
+ return stringToFloat(value);
43
+ }
44
+ if (!FORMATTED_NUMBER.test(value.trim())) {
45
+ return undefined;
46
+ }
47
+ const parsed = stringToFloat(value);
48
+ return Number.isFinite(parsed) ? parsed : undefined;
49
+ }
30
50
  //# sourceMappingURL=parse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/utils/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/utils/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,gBAAgB,GACpB,2GAA2G,CAAA;AAE7G;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAgC;IAEhC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACzC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACrD,CAAC"}
@@ -37,6 +37,19 @@ export declare function estimateIsolatedLiquidationPrice(params: {
37
37
  isLong: boolean;
38
38
  maintenanceMarginRate: number;
39
39
  }): number | undefined;
40
+ /**
41
+ * Whether an isolated position with this liquidation price is already past
42
+ * liquidation at `currentPrice`: a long liquidates when the price falls to its
43
+ * liquidation level, a short when it rises to it. A non-positive price on
44
+ * either side counts as unknown, so the result is `false`.
45
+ *
46
+ * @public
47
+ */
48
+ export declare function wouldImmediatelyLiquidate(params: {
49
+ liquidationPrice: number;
50
+ currentPrice: number;
51
+ isLong: boolean;
52
+ }): boolean;
40
53
  /**
41
54
  * Predicted average entry price after adding to an existing position.
42
55
  *
@@ -1 +1 @@
1
- {"version":3,"file":"positionMath.d.ts","sourceRoot":"","sources":["../../../src/utils/positionMath.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAErD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,qBAAqB,EAAE,MAAM,CAAA;CAC9B,GAAG,MAAM,GAAG,SAAS,CAYrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,GAAG,SAAS,CAUrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,GAAG,SAAS,CAOrB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,MAAM,CAGT;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,MAAM,CAGT"}
1
+ {"version":3,"file":"positionMath.d.ts","sourceRoot":"","sources":["../../../src/utils/positionMath.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAErD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,qBAAqB,EAAE,MAAM,CAAA;CAC9B,GAAG,MAAM,GAAG,SAAS,CAqBrB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,OAAO,CAQV;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,GAAG,SAAS,CAiBrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,GAAG,SAAS,CAarB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,MAAM,CAUT;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,MAAM,CAUT"}
@@ -5,6 +5,7 @@
5
5
  * Sign convention: long = +1, short = -1. Sizes passed to these helpers are
6
6
  * always non-negative magnitudes; direction is carried by `isLong`.
7
7
  */
8
+ import { areFinite, DivBig } from './decimal.js';
8
9
  /**
9
10
  * Direction sign for a position.
10
11
  *
@@ -43,8 +44,34 @@ export function estimateIsolatedLiquidationPrice(params) {
43
44
  if (denominator === 0) {
44
45
  return undefined;
45
46
  }
46
- const marginAvailable = entryPrice * (1 / leverage - maintenanceMarginRate);
47
- return entryPrice - (side * marginAvailable) / denominator;
47
+ if (!areFinite(entryPrice, leverage, maintenanceMarginRate)) {
48
+ return Number.NaN;
49
+ }
50
+ const mmr = new DivBig(maintenanceMarginRate);
51
+ const marginAvailable = new DivBig(1)
52
+ .div(leverage)
53
+ .minus(mmr)
54
+ .times(entryPrice);
55
+ return new DivBig(entryPrice)
56
+ .minus(marginAvailable.times(side).div(mmr.times(-side).plus(1)))
57
+ .toNumber();
58
+ }
59
+ /**
60
+ * Whether an isolated position with this liquidation price is already past
61
+ * liquidation at `currentPrice`: a long liquidates when the price falls to its
62
+ * liquidation level, a short when it rises to it. A non-positive price on
63
+ * either side counts as unknown, so the result is `false`.
64
+ *
65
+ * @public
66
+ */
67
+ export function wouldImmediatelyLiquidate(params) {
68
+ const { liquidationPrice, currentPrice, isLong } = params;
69
+ if (currentPrice <= 0 || liquidationPrice <= 0) {
70
+ return false;
71
+ }
72
+ return isLong
73
+ ? liquidationPrice >= currentPrice
74
+ : liquidationPrice <= currentPrice;
48
75
  }
49
76
  /**
50
77
  * Predicted average entry price after adding to an existing position.
@@ -71,7 +98,14 @@ export function predictAverageEntryPrice(params) {
71
98
  if (!Number.isFinite(currentEntry) || !Number.isFinite(fillPrice)) {
72
99
  return undefined;
73
100
  }
74
- return (currentSize * currentEntry + addSize * fillPrice) / totalSize;
101
+ if (!areFinite(currentSize, addSize)) {
102
+ return Number.NaN;
103
+ }
104
+ return new DivBig(currentSize)
105
+ .times(currentEntry)
106
+ .plus(new DivBig(addSize).times(fillPrice))
107
+ .div(new DivBig(currentSize).plus(addSize))
108
+ .toNumber();
75
109
  }
76
110
  /**
77
111
  * Predicted effective leverage after adding margin and notional.
@@ -90,7 +124,13 @@ export function predictNewLeverage(params) {
90
124
  if (totalMargin <= 0) {
91
125
  return undefined;
92
126
  }
93
- return (currentNotional + addNotional) / totalMargin;
127
+ if (!areFinite(currentNotional, currentMargin, addNotional, addMargin)) {
128
+ return Number.NaN;
129
+ }
130
+ return new DivBig(currentNotional)
131
+ .plus(addNotional)
132
+ .div(new DivBig(currentMargin).plus(addMargin))
133
+ .toNumber();
94
134
  }
95
135
  /**
96
136
  * Predicted unrealised PnL at the current mark price.
@@ -102,7 +142,14 @@ export function predictNewLeverage(params) {
102
142
  */
103
143
  export function predictUnrealizedPnl(params) {
104
144
  const { entryPrice, markPrice, size, isLong } = params;
105
- return (markPrice - entryPrice) * size * directionSign(isLong);
145
+ if (!areFinite(entryPrice, markPrice, size)) {
146
+ return Number.NaN;
147
+ }
148
+ return new DivBig(markPrice)
149
+ .minus(entryPrice)
150
+ .times(size)
151
+ .times(directionSign(isLong))
152
+ .toNumber();
106
153
  }
107
154
  /**
108
155
  * Realised PnL on the portion of a position being closed.
@@ -114,6 +161,13 @@ export function predictUnrealizedPnl(params) {
114
161
  */
115
162
  export function realizedPnlOnClose(params) {
116
163
  const { entryPrice, closePrice, closeSize, isLong } = params;
117
- return (closePrice - entryPrice) * closeSize * directionSign(isLong);
164
+ if (!areFinite(entryPrice, closePrice, closeSize)) {
165
+ return Number.NaN;
166
+ }
167
+ return new DivBig(closePrice)
168
+ .minus(entryPrice)
169
+ .times(closeSize)
170
+ .times(directionSign(isLong))
171
+ .toNumber();
118
172
  }
119
173
  //# sourceMappingURL=positionMath.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"positionMath.js","sourceRoot":"","sources":["../../../src/utils/positionMath.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gCAAgC,CAAC,MAKhD;IACC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAA;IACtE,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,WAAW,GAAG,CAAC,GAAG,qBAAqB,GAAG,IAAI,CAAA;IACpD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,eAAe,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,qBAAqB,CAAC,CAAA;IAC3E,OAAO,UAAU,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC,GAAG,WAAW,CAAA;AAC5D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAKxC;IACC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IAChE,MAAM,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;IACvC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAClE,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,CAAC,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;AACvE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAKlC;IACC,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IACzE,MAAM,WAAW,GAAG,aAAa,GAAG,SAAS,CAAA;IAC7C,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,WAAW,CAAA;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAKpC;IACC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACtD,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAKlC;IACC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAC5D,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AACtE,CAAC"}
1
+ {"version":3,"file":"positionMath.js","sourceRoot":"","sources":["../../../src/utils/positionMath.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import type { ProviderAction } from '@lifi/perps-types';
1
+ import type { ActionType, SetupAction, SetupOption } from '@lifi/perps-types';
2
2
  /**
3
- * Select the `Provider.setup` descriptors a user is responsible for satisfying:
4
- * those whose `signers` include {@link PerpsSigner.USER}. Descriptors the SDK
5
- * signs on its own (no `USER` signer) are held back — `checkSetup` completes
6
- * them inline, so surfacing them would render inert cards the user can't act on.
3
+ * Select the `Provider.setup` descriptors a user sees: every choice step, and
4
+ * every non-choice step signed by {@link PerpsSigner.USER}. A non-choice step
5
+ * the SDK signs on its own is held back — `checkSetup` completes it inline, so
6
+ * surfacing it would render an inert card the user can't act on.
7
7
  *
8
- * Membership is a property of the descriptor's `signers` alone, independent of
9
- * any account. When an account is available, prefer `ProviderSetup.checklist`
8
+ * Membership is a property of the descriptor alone, independent of any
9
+ * account. When an account is available, prefer `ProviderSetup.checklist`
10
10
  * from `checkSetup` for the onboarding list — it applies this filter, omits
11
11
  * not-required conditional steps, and carries each entry's satisfied state.
12
12
  * This function remains the static, account-free projection.
@@ -14,5 +14,14 @@ import type { ProviderAction } from '@lifi/perps-types';
14
14
  * @param setup The provider's `setup` descriptors, in their declared order.
15
15
  * @public
16
16
  */
17
- export declare function selectUserSetupActions(setup: ProviderAction[]): ProviderAction[];
17
+ export declare function selectUserSetupActions(setup: SetupAction[]): SetupAction[];
18
+ /** Whether a setup step is shown to the user rather than drained silently. */
19
+ export declare function isUserFacingSetupStep(descriptor: SetupAction): boolean;
20
+ /**
21
+ * Narrow a setup option to the action it executes, so its bound `params` read
22
+ * with that action's param shape.
23
+ *
24
+ * @public
25
+ */
26
+ export declare function isSetupOptionFor<T extends ActionType>(option: SetupOption, type: T): option is SetupOption<T>;
18
27
  //# sourceMappingURL=setupActions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupActions.d.ts","sourceRoot":"","sources":["../../../src/utils/setupActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGvD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EAAE,GACtB,cAAc,EAAE,CAIlB"}
1
+ {"version":3,"file":"setupActions.d.ts","sourceRoot":"","sources":["../../../src/utils/setupActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG7E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAE1E;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EACnD,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,CAAC,GACN,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,CAE1B"}
@@ -1,12 +1,12 @@
1
1
  import { PerpsSigner } from '@lifi/perps-types';
2
2
  /**
3
- * Select the `Provider.setup` descriptors a user is responsible for satisfying:
4
- * those whose `signers` include {@link PerpsSigner.USER}. Descriptors the SDK
5
- * signs on its own (no `USER` signer) are held back — `checkSetup` completes
6
- * them inline, so surfacing them would render inert cards the user can't act on.
3
+ * Select the `Provider.setup` descriptors a user sees: every choice step, and
4
+ * every non-choice step signed by {@link PerpsSigner.USER}. A non-choice step
5
+ * the SDK signs on its own is held back — `checkSetup` completes it inline, so
6
+ * surfacing it would render an inert card the user can't act on.
7
7
  *
8
- * Membership is a property of the descriptor's `signers` alone, independent of
9
- * any account. When an account is available, prefer `ProviderSetup.checklist`
8
+ * Membership is a property of the descriptor alone, independent of any
9
+ * account. When an account is available, prefer `ProviderSetup.checklist`
10
10
  * from `checkSetup` for the onboarding list — it applies this filter, omits
11
11
  * not-required conditional steps, and carries each entry's satisfied state.
12
12
  * This function remains the static, account-free projection.
@@ -15,6 +15,19 @@ import { PerpsSigner } from '@lifi/perps-types';
15
15
  * @public
16
16
  */
17
17
  export function selectUserSetupActions(setup) {
18
- return setup.filter((descriptor) => descriptor.signers.includes(PerpsSigner.USER));
18
+ return setup.filter(isUserFacingSetupStep);
19
+ }
20
+ /** Whether a setup step is shown to the user rather than drained silently. */
21
+ export function isUserFacingSetupStep(descriptor) {
22
+ return descriptor.options !== null || descriptor.signer === PerpsSigner.USER;
23
+ }
24
+ /**
25
+ * Narrow a setup option to the action it executes, so its bound `params` read
26
+ * with that action's param shape.
27
+ *
28
+ * @public
29
+ */
30
+ export function isSetupOptionFor(option, type) {
31
+ return option.type === type;
19
32
  }
20
33
  //# sourceMappingURL=setupActions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupActions.js","sourceRoot":"","sources":["../../../src/utils/setupActions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAuB;IAEvB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CACjC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAC9C,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"setupActions.js","sourceRoot":"","sources":["../../../src/utils/setupActions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAoB;IACzD,OAAO,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAC5C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAC,UAAuB;IAC3D,OAAO,UAAU,CAAC,OAAO,KAAK,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,CAAA;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAmB,EACnB,IAAO;IAEP,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,CAAA;AAC7B,CAAC"}
@@ -23,7 +23,7 @@ export function eip712DomainChainId(actions) {
23
23
  */
24
24
  export function userEip712TargetChainId(descriptor, actions) {
25
25
  if (descriptor.signingMethod !== SigningMethod.EIP712 ||
26
- !descriptor.signers.includes(PerpsSigner.USER)) {
26
+ descriptor.signer !== PerpsSigner.USER) {
27
27
  return undefined;
28
28
  }
29
29
  return eip712DomainChainId(actions);
@@ -1 +1 @@
1
- {"version":3,"file":"switchChain.js","sourceRoot":"","sources":["../../../src/utils/switchChain.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGpD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAqB;IACvD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAI,IAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAA;QACrE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAA;QAChB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAA0B,EAC1B,OAAqB;IAErB,IACE,UAAU,CAAC,aAAa,KAAK,aAAa,CAAC,MAAM;QACjD,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAC9C,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAA;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAyB,EACzB,aAAqB,EACrB,WAA6B;IAE7B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAA;IAC/C,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,CAAA;IACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,0BAA0B,aAAa,qBAAqB,CAC7D,CAAA;IACH,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAA;IAClD,IAAI,eAAe,KAAK,aAAa,EAAE,CAAC;QACtC,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,sBAAsB,eAAe,cAAc,aAAa,uBAAuB,CACxF,CAAA;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"switchChain.js","sourceRoot":"","sources":["../../../src/utils/switchChain.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGpD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAqB;IACvD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAI,IAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAA;QACrE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAA;QAChB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAA0B,EAC1B,OAAqB;IAErB,IACE,UAAU,CAAC,aAAa,KAAK,aAAa,CAAC,MAAM;QACjD,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,EACtC,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAA;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAyB,EACzB,aAAqB,EACrB,WAA6B;IAE7B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAA;IAC/C,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,CAAA;IACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,0BAA0B,aAAa,qBAAqB,CAC7D,CAAA;IACH,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAA;IAClD,IAAI,eAAe,KAAK,aAAa,EAAE,CAAC;QACtC,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,sBAAsB,eAAe,cAAc,aAAa,uBAAuB,CACxF,CAAA;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -9,5 +9,5 @@ export declare const name = "@lifi/perps-sdk";
9
9
  *
10
10
  * @public
11
11
  */
12
- export declare const version = "18.1.0";
12
+ export declare const version = "20.0.0";
13
13
  //# sourceMappingURL=version.d.ts.map
@@ -9,5 +9,5 @@ export const name = '@lifi/perps-sdk';
9
9
  *
10
10
  * @public
11
11
  */
12
- export const version = '18.1.0';
12
+ export const version = '20.0.0';
13
13
  //# sourceMappingURL=version.js.map
@@ -11,13 +11,6 @@ export interface WsProviderFactoryParams {
11
11
  provider: string;
12
12
  /** WS URL discovered from `/providers`. */
13
13
  wsUrl: string;
14
- /**
15
- * Markets visible to this provider via `/providers`, optionally filtered
16
- * by the consumer's `createPerpsClient({ providers: { [key]: { markets } } })`
17
- * config. Each provider interprets these its own way — Hyperliquid uses
18
- * them to decide which sub-DEXes to subscribe to; Lighter ignores them.
19
- */
20
- markets: string[];
21
14
  /**
22
15
  * The SDK client. WS providers use it to call core services (e.g.
23
16
  * `getAssets` to source the wire-id ↔ display-symbol map) without
@@ -1 +1 @@
1
- {"version":3,"file":"PerpsWsClient.d.ts","sourceRoot":"","sources":["../../../src/websocket/PerpsWsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzE,OAAO,KAAK,EACV,oBAAoB,EAEpB,UAAU,EACV,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB;;;;OAIG;IACH,MAAM,EAAE,cAAc,CAAA;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,CAAC,MAAM,EAAE,uBAAuB,GAAG,UAAU,CAAA;IAC7C,gEAAgE;IAChE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAA;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;CAChD;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE,oBAAyB;IAKtE;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIzC;;;;;;OAMG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMlD;;;;;;;;;;;;OAYG;IACG,SAAS,CAAC,CAAC,SAAS,YAAY,EACpC,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,EAClD,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,IAAI,CAAC;IAOtB;;;;;;;;;;OAUG;IACG,cAAc,CAClB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC;IAatB;;;;;;;OAOG;IACH,KAAK;IASL;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIjC,OAAO,CAAC,UAAU;YASJ,mBAAmB;YAqBnB,YAAY;CAsC3B"}
1
+ {"version":3,"file":"PerpsWsClient.d.ts","sourceRoot":"","sources":["../../../src/websocket/PerpsWsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzE,OAAO,KAAK,EACV,oBAAoB,EAEpB,UAAU,EACV,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,MAAM,EAAE,cAAc,CAAA;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,CAAC,MAAM,EAAE,uBAAuB,GAAG,UAAU,CAAA;IAC7C,gEAAgE;IAChE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAA;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;CAChD;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE,oBAAyB;IAKtE;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIzC;;;;;;OAMG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMlD;;;;;;;;;;;;OAYG;IACG,SAAS,CAAC,CAAC,SAAS,YAAY,EACpC,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,EAClD,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,IAAI,CAAC;IAOtB;;;;;;;;;;OAUG;IACG,cAAc,CAClB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC;IAatB;;;;;;;OAOG;IACH,KAAK;IASL;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIjC,OAAO,CAAC,UAAU;YASJ,mBAAmB;YAqBnB,YAAY;CA0B3B"}
@@ -135,16 +135,9 @@ export class PerpsWsClient {
135
135
  if (!providerInfo?.wsUrl) {
136
136
  throw new Error(`No WebSocket URL found for provider: ${provider}`);
137
137
  }
138
- const allMarkets = (providerInfo.categories ?? []);
139
- const providerConfig = this.client.config.providers?.[provider];
140
- const configuredMarkets = providerConfig?.markets;
141
- const markets = (configuredMarkets
142
- ? allMarkets.filter((m) => configuredMarkets.includes(m.id))
143
- : allMarkets).map((m) => m.id);
144
138
  const wsProvider = factory({
145
139
  provider,
146
140
  wsUrl: providerInfo.wsUrl,
147
- markets,
148
141
  client: this.client,
149
142
  });
150
143
  this.providers.set(provider, wsProvider);
@@ -1 +1 @@
1
- {"version":3,"file":"PerpsWsClient.js","sourceRoot":"","sources":["../../../src/websocket/PerpsWsClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PerpsWsClient.js","sourceRoot":"","sources":["../../../src/websocket/PerpsWsClient.ts"],"names":[],"mappings":"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"}