@lifi/perps-sdk 23.1.0 → 24.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 (289) hide show
  1. package/README.md +85 -45
  2. package/dist/cjs/client/PerpsClient.d.ts +3 -2
  3. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  4. package/dist/cjs/client/PerpsClient.js +16 -9
  5. package/dist/cjs/client/PerpsClient.js.map +1 -1
  6. package/dist/cjs/decimal/arithmetic.d.ts +13 -0
  7. package/dist/cjs/decimal/arithmetic.d.ts.map +1 -0
  8. package/dist/cjs/decimal/arithmetic.js +48 -0
  9. package/dist/cjs/decimal/arithmetic.js.map +1 -0
  10. package/dist/cjs/decimal/big.d.ts +0 -1
  11. package/dist/cjs/decimal/big.d.ts.map +1 -1
  12. package/dist/cjs/decimal/big.js +0 -4
  13. package/dist/cjs/decimal/big.js.map +1 -1
  14. package/dist/cjs/decimal/compare.d.ts +6 -2
  15. package/dist/cjs/decimal/compare.d.ts.map +1 -1
  16. package/dist/cjs/decimal/compare.js +15 -2
  17. package/dist/cjs/decimal/compare.js.map +1 -1
  18. package/dist/cjs/decimal/convert.d.ts +12 -6
  19. package/dist/cjs/decimal/convert.d.ts.map +1 -1
  20. package/dist/cjs/decimal/convert.js +36 -14
  21. package/dist/cjs/decimal/convert.js.map +1 -1
  22. package/dist/cjs/decimal/decimalStringToBig.d.ts +5 -0
  23. package/dist/cjs/decimal/decimalStringToBig.d.ts.map +1 -0
  24. package/dist/cjs/decimal/decimalStringToBig.js +27 -0
  25. package/dist/cjs/decimal/decimalStringToBig.js.map +1 -0
  26. package/dist/cjs/decimal/format.d.ts.map +1 -1
  27. package/dist/cjs/decimal/format.js +70 -52
  28. package/dist/cjs/decimal/format.js.map +1 -1
  29. package/dist/cjs/decimal/parse.d.ts +4 -4
  30. package/dist/cjs/decimal/parse.d.ts.map +1 -1
  31. package/dist/cjs/decimal/parse.js +42 -25
  32. package/dist/cjs/decimal/parse.js.map +1 -1
  33. package/dist/cjs/index.d.ts +13 -11
  34. package/dist/cjs/index.d.ts.map +1 -1
  35. package/dist/cjs/index.js +64 -8
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/math/fills.d.ts +1 -1
  38. package/dist/cjs/math/fills.d.ts.map +1 -1
  39. package/dist/cjs/math/fills.js +28 -13
  40. package/dist/cjs/math/fills.js.map +1 -1
  41. package/dist/cjs/math/order.d.ts +27 -16
  42. package/dist/cjs/math/order.d.ts.map +1 -1
  43. package/dist/cjs/math/order.js +106 -122
  44. package/dist/cjs/math/order.js.map +1 -1
  45. package/dist/cjs/math/position.d.ts +85 -35
  46. package/dist/cjs/math/position.d.ts.map +1 -1
  47. package/dist/cjs/math/position.js +88 -91
  48. package/dist/cjs/math/position.js.map +1 -1
  49. package/dist/cjs/services/getGasRecommendation.js +1 -1
  50. package/dist/cjs/services/getGasRecommendation.js.map +1 -1
  51. package/dist/cjs/services/getQuote.d.ts +1 -1
  52. package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -1
  53. package/dist/cjs/services/resolveSubscribeQuote.js +3 -2
  54. package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -1
  55. package/dist/cjs/transport/request.d.ts +1 -0
  56. package/dist/cjs/transport/request.d.ts.map +1 -1
  57. package/dist/cjs/transport/request.js +2 -2
  58. package/dist/cjs/transport/request.js.map +1 -1
  59. package/dist/cjs/types/api.d.ts +4 -0
  60. package/dist/cjs/types/api.d.ts.map +1 -1
  61. package/dist/cjs/types/provider.d.ts +9 -5
  62. package/dist/cjs/types/provider.d.ts.map +1 -1
  63. package/dist/cjs/types/withdrawal.d.ts +12 -4
  64. package/dist/cjs/types/withdrawal.d.ts.map +1 -1
  65. package/dist/cjs/utils/createSafeFunction.d.ts +2 -0
  66. package/dist/cjs/utils/createSafeFunction.d.ts.map +1 -0
  67. package/dist/cjs/utils/createSafeFunction.js +15 -0
  68. package/dist/cjs/utils/createSafeFunction.js.map +1 -0
  69. package/dist/cjs/utils/timestampToIsoString.d.ts +3 -0
  70. package/dist/cjs/utils/timestampToIsoString.d.ts.map +1 -0
  71. package/dist/cjs/utils/timestampToIsoString.js +16 -0
  72. package/dist/cjs/utils/timestampToIsoString.js.map +1 -0
  73. package/dist/cjs/utils/warnOnce.d.ts +2 -0
  74. package/dist/cjs/utils/warnOnce.d.ts.map +1 -1
  75. package/dist/cjs/utils/warnOnce.js +13 -1
  76. package/dist/cjs/utils/warnOnce.js.map +1 -1
  77. package/dist/cjs/version.d.ts +1 -1
  78. package/dist/cjs/version.js +1 -1
  79. package/dist/cjs/websocket/PerpsWsClient.d.ts +2 -0
  80. package/dist/cjs/websocket/PerpsWsClient.d.ts.map +1 -1
  81. package/dist/cjs/websocket/PerpsWsClient.js +14 -1
  82. package/dist/cjs/websocket/PerpsWsClient.js.map +1 -1
  83. package/dist/cjs/websocket/wsLog.d.ts +2 -0
  84. package/dist/cjs/websocket/wsLog.d.ts.map +1 -1
  85. package/dist/cjs/websocket/wsLog.js +8 -0
  86. package/dist/cjs/websocket/wsLog.js.map +1 -1
  87. package/dist/cjs/wire/orderAmounts.d.ts.map +1 -1
  88. package/dist/cjs/wire/orderAmounts.js +6 -9
  89. package/dist/cjs/wire/orderAmounts.js.map +1 -1
  90. package/dist/cjs/wire/refuel.d.ts +4 -1
  91. package/dist/cjs/wire/refuel.d.ts.map +1 -1
  92. package/dist/cjs/wire/refuel.js +23 -6
  93. package/dist/cjs/wire/refuel.js.map +1 -1
  94. package/dist/cjs/wire/transferable.js +3 -3
  95. package/dist/cjs/wire/transferable.js.map +1 -1
  96. package/dist/cjs/wire/withdraw.d.ts.map +1 -1
  97. package/dist/cjs/wire/withdraw.js +3 -3
  98. package/dist/cjs/wire/withdraw.js.map +1 -1
  99. package/dist/esm/client/PerpsClient.d.ts +17 -4
  100. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  101. package/dist/esm/client/PerpsClient.js +30 -8
  102. package/dist/esm/client/PerpsClient.js.map +1 -1
  103. package/dist/esm/decimal/arithmetic.d.ts +84 -0
  104. package/dist/esm/decimal/arithmetic.d.ts.map +1 -0
  105. package/dist/esm/decimal/arithmetic.js +110 -0
  106. package/dist/esm/decimal/arithmetic.js.map +1 -0
  107. package/dist/esm/decimal/big.d.ts +0 -2
  108. package/dist/esm/decimal/big.d.ts.map +1 -1
  109. package/dist/esm/decimal/big.js +0 -4
  110. package/dist/esm/decimal/big.js.map +1 -1
  111. package/dist/esm/decimal/compare.d.ts +39 -5
  112. package/dist/esm/decimal/compare.d.ts.map +1 -1
  113. package/dist/esm/decimal/compare.js +45 -5
  114. package/dist/esm/decimal/compare.js.map +1 -1
  115. package/dist/esm/decimal/convert.d.ts +62 -26
  116. package/dist/esm/decimal/convert.d.ts.map +1 -1
  117. package/dist/esm/decimal/convert.js +76 -25
  118. package/dist/esm/decimal/convert.js.map +1 -1
  119. package/dist/esm/decimal/decimalStringToBig.d.ts +26 -0
  120. package/dist/esm/decimal/decimalStringToBig.d.ts.map +1 -0
  121. package/dist/esm/decimal/decimalStringToBig.js +40 -0
  122. package/dist/esm/decimal/decimalStringToBig.js.map +1 -0
  123. package/dist/esm/decimal/format.d.ts +4 -1
  124. package/dist/esm/decimal/format.d.ts.map +1 -1
  125. package/dist/esm/decimal/format.js +71 -70
  126. package/dist/esm/decimal/format.js.map +1 -1
  127. package/dist/esm/decimal/parse.d.ts +22 -13
  128. package/dist/esm/decimal/parse.d.ts.map +1 -1
  129. package/dist/esm/decimal/parse.js +56 -46
  130. package/dist/esm/decimal/parse.js.map +1 -1
  131. package/dist/esm/index.d.ts +13 -11
  132. package/dist/esm/index.d.ts.map +1 -1
  133. package/dist/esm/index.js +9 -7
  134. package/dist/esm/index.js.map +1 -1
  135. package/dist/esm/math/fills.d.ts +6 -3
  136. package/dist/esm/math/fills.d.ts.map +1 -1
  137. package/dist/esm/math/fills.js +31 -16
  138. package/dist/esm/math/fills.js.map +1 -1
  139. package/dist/esm/math/order.d.ts +85 -65
  140. package/dist/esm/math/order.d.ts.map +1 -1
  141. package/dist/esm/math/order.js +158 -166
  142. package/dist/esm/math/order.js.map +1 -1
  143. package/dist/esm/math/position.d.ts +155 -98
  144. package/dist/esm/math/position.d.ts.map +1 -1
  145. package/dist/esm/math/position.js +157 -155
  146. package/dist/esm/math/position.js.map +1 -1
  147. package/dist/esm/services/getGasRecommendation.js +1 -1
  148. package/dist/esm/services/getGasRecommendation.js.map +1 -1
  149. package/dist/esm/services/getQuote.d.ts +2 -2
  150. package/dist/esm/services/getQuote.js +1 -1
  151. package/dist/esm/services/resolveSubscribeQuote.d.ts +1 -1
  152. package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -1
  153. package/dist/esm/services/resolveSubscribeQuote.js +4 -3
  154. package/dist/esm/services/resolveSubscribeQuote.js.map +1 -1
  155. package/dist/esm/transport/request.d.ts +5 -0
  156. package/dist/esm/transport/request.d.ts.map +1 -1
  157. package/dist/esm/transport/request.js +2 -2
  158. package/dist/esm/transport/request.js.map +1 -1
  159. package/dist/esm/types/api.d.ts +9 -0
  160. package/dist/esm/types/api.d.ts.map +1 -1
  161. package/dist/esm/types/provider.d.ts +26 -13
  162. package/dist/esm/types/provider.d.ts.map +1 -1
  163. package/dist/esm/types/withdrawal.d.ts +32 -7
  164. package/dist/esm/types/withdrawal.d.ts.map +1 -1
  165. package/dist/esm/utils/createSafeFunction.d.ts +9 -0
  166. package/dist/esm/utils/createSafeFunction.d.ts.map +1 -0
  167. package/dist/esm/utils/createSafeFunction.js +19 -0
  168. package/dist/esm/utils/createSafeFunction.js.map +1 -0
  169. package/dist/esm/utils/timestampToIsoString.d.ts +15 -0
  170. package/dist/esm/utils/timestampToIsoString.d.ts.map +1 -0
  171. package/dist/esm/utils/timestampToIsoString.js +24 -0
  172. package/dist/esm/utils/timestampToIsoString.js.map +1 -0
  173. package/dist/esm/utils/warnOnce.d.ts +16 -0
  174. package/dist/esm/utils/warnOnce.d.ts.map +1 -1
  175. package/dist/esm/utils/warnOnce.js +24 -0
  176. package/dist/esm/utils/warnOnce.js.map +1 -1
  177. package/dist/esm/version.d.ts +1 -1
  178. package/dist/esm/version.js +1 -1
  179. package/dist/esm/websocket/PerpsWsClient.d.ts +7 -0
  180. package/dist/esm/websocket/PerpsWsClient.d.ts.map +1 -1
  181. package/dist/esm/websocket/PerpsWsClient.js +20 -2
  182. package/dist/esm/websocket/PerpsWsClient.js.map +1 -1
  183. package/dist/esm/websocket/wsLog.d.ts +12 -0
  184. package/dist/esm/websocket/wsLog.d.ts.map +1 -1
  185. package/dist/esm/websocket/wsLog.js +18 -0
  186. package/dist/esm/websocket/wsLog.js.map +1 -1
  187. package/dist/esm/wire/orderAmounts.d.ts.map +1 -1
  188. package/dist/esm/wire/orderAmounts.js +2 -2
  189. package/dist/esm/wire/orderAmounts.js.map +1 -1
  190. package/dist/esm/wire/refuel.d.ts +24 -14
  191. package/dist/esm/wire/refuel.d.ts.map +1 -1
  192. package/dist/esm/wire/refuel.js +38 -17
  193. package/dist/esm/wire/refuel.js.map +1 -1
  194. package/dist/esm/wire/transferable.js +3 -3
  195. package/dist/esm/wire/transferable.js.map +1 -1
  196. package/dist/esm/wire/withdraw.d.ts.map +1 -1
  197. package/dist/esm/wire/withdraw.js +3 -3
  198. package/dist/esm/wire/withdraw.js.map +1 -1
  199. package/dist/types/client/PerpsClient.d.ts +17 -4
  200. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  201. package/dist/types/decimal/arithmetic.d.ts +84 -0
  202. package/dist/types/decimal/arithmetic.d.ts.map +1 -0
  203. package/dist/types/decimal/big.d.ts +0 -2
  204. package/dist/types/decimal/big.d.ts.map +1 -1
  205. package/dist/types/decimal/compare.d.ts +39 -5
  206. package/dist/types/decimal/compare.d.ts.map +1 -1
  207. package/dist/types/decimal/convert.d.ts +62 -26
  208. package/dist/types/decimal/convert.d.ts.map +1 -1
  209. package/dist/types/decimal/decimalStringToBig.d.ts +26 -0
  210. package/dist/types/decimal/decimalStringToBig.d.ts.map +1 -0
  211. package/dist/types/decimal/format.d.ts +4 -1
  212. package/dist/types/decimal/format.d.ts.map +1 -1
  213. package/dist/types/decimal/parse.d.ts +22 -13
  214. package/dist/types/decimal/parse.d.ts.map +1 -1
  215. package/dist/types/index.d.ts +13 -11
  216. package/dist/types/index.d.ts.map +1 -1
  217. package/dist/types/math/fills.d.ts +6 -3
  218. package/dist/types/math/fills.d.ts.map +1 -1
  219. package/dist/types/math/order.d.ts +85 -65
  220. package/dist/types/math/order.d.ts.map +1 -1
  221. package/dist/types/math/position.d.ts +155 -98
  222. package/dist/types/math/position.d.ts.map +1 -1
  223. package/dist/types/services/getQuote.d.ts +2 -2
  224. package/dist/types/services/resolveSubscribeQuote.d.ts +1 -1
  225. package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -1
  226. package/dist/types/transport/request.d.ts +5 -0
  227. package/dist/types/transport/request.d.ts.map +1 -1
  228. package/dist/types/types/api.d.ts +9 -0
  229. package/dist/types/types/api.d.ts.map +1 -1
  230. package/dist/types/types/provider.d.ts +26 -13
  231. package/dist/types/types/provider.d.ts.map +1 -1
  232. package/dist/types/types/withdrawal.d.ts +32 -7
  233. package/dist/types/types/withdrawal.d.ts.map +1 -1
  234. package/dist/types/utils/createSafeFunction.d.ts +9 -0
  235. package/dist/types/utils/createSafeFunction.d.ts.map +1 -0
  236. package/dist/types/utils/timestampToIsoString.d.ts +15 -0
  237. package/dist/types/utils/timestampToIsoString.d.ts.map +1 -0
  238. package/dist/types/utils/warnOnce.d.ts +16 -0
  239. package/dist/types/utils/warnOnce.d.ts.map +1 -1
  240. package/dist/types/version.d.ts +1 -1
  241. package/dist/types/websocket/PerpsWsClient.d.ts +7 -0
  242. package/dist/types/websocket/PerpsWsClient.d.ts.map +1 -1
  243. package/dist/types/websocket/wsLog.d.ts +12 -0
  244. package/dist/types/websocket/wsLog.d.ts.map +1 -1
  245. package/dist/types/wire/orderAmounts.d.ts.map +1 -1
  246. package/dist/types/wire/refuel.d.ts +24 -14
  247. package/dist/types/wire/refuel.d.ts.map +1 -1
  248. package/dist/types/wire/withdraw.d.ts.map +1 -1
  249. package/package.json +2 -2
  250. package/src/client/PerpsClient.ts +48 -10
  251. package/src/decimal/arithmetic.ts +144 -0
  252. package/src/decimal/big.ts +0 -5
  253. package/src/decimal/compare.ts +60 -10
  254. package/src/decimal/convert.ts +123 -44
  255. package/src/decimal/decimalStringToBig.ts +47 -0
  256. package/src/decimal/format.ts +81 -72
  257. package/src/decimal/parse.ts +71 -61
  258. package/src/index.ts +73 -10
  259. package/src/math/fills.ts +32 -17
  260. package/src/math/order.ts +261 -216
  261. package/src/math/position.ts +277 -194
  262. package/src/services/getGasRecommendation.ts +1 -1
  263. package/src/services/getQuote.ts +2 -2
  264. package/src/services/resolveSubscribeQuote.ts +4 -3
  265. package/src/transport/request.ts +7 -2
  266. package/src/types/api.ts +10 -0
  267. package/src/types/provider.ts +35 -13
  268. package/src/types/withdrawal.ts +35 -8
  269. package/src/utils/createSafeFunction.ts +20 -0
  270. package/src/utils/timestampToIsoString.ts +31 -0
  271. package/src/utils/warnOnce.ts +44 -0
  272. package/src/version.ts +1 -1
  273. package/src/websocket/PerpsWsClient.ts +25 -2
  274. package/src/websocket/wsLog.ts +31 -0
  275. package/src/wire/orderAmounts.ts +3 -2
  276. package/src/wire/refuel.ts +56 -20
  277. package/src/wire/transferable.ts +3 -3
  278. package/src/wire/withdraw.ts +3 -5
  279. package/dist/cjs/decimal/requireDecimal.d.ts +0 -4
  280. package/dist/cjs/decimal/requireDecimal.d.ts.map +0 -1
  281. package/dist/cjs/decimal/requireDecimal.js +0 -12
  282. package/dist/cjs/decimal/requireDecimal.js.map +0 -1
  283. package/dist/esm/decimal/requireDecimal.d.ts +0 -5
  284. package/dist/esm/decimal/requireDecimal.d.ts.map +0 -1
  285. package/dist/esm/decimal/requireDecimal.js +0 -7
  286. package/dist/esm/decimal/requireDecimal.js.map +0 -1
  287. package/dist/types/decimal/requireDecimal.d.ts +0 -5
  288. package/dist/types/decimal/requireDecimal.d.ts.map +0 -1
  289. package/src/decimal/requireDecimal.ts +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../../../src/types/withdrawal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,KAAK,EACL,aAAa,EACb,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,YAAY,EAAE,eAAe,EAAE,CAAA;AAE/B;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC1C,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,eAAe,CAAA;IACtB,8EAA8E;IAC9E,SAAS,EAAE,aAAa,CAAA;IACxB;;;;OAIG;IACH,GAAG,EAAE,aAAa,CAAA;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,eAAe,CAAA;IACtB,oDAAoD;IACpD,SAAS,EAAE,aAAa,CAAA;IACxB;;;;OAIG;IACH,GAAG,EAAE,aAAa,CAAA;IAClB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,eAAe,CAAA;IACrB,qEAAqE;IACrE,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,yBAAyB,CAAA"}
1
+ {"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../../../src/types/withdrawal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,KAAK,EACL,aAAa,EACb,kBAAkB,EAClB,cAAc,EACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC1C,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,SAAS,EAAE,aAAa,CAAA;IACxB;;;;OAIG;IACH,GAAG,EAAE,aAAa,CAAA;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAA;IACZ,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,SAAS,EAAE,aAAa,CAAA;IACxB;;;;OAIG;IACH,GAAG,EAAE,aAAa,CAAA;IAClB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,cAAc,CAAA;IACpB,qFAAqF;IACrF,GAAG,EAAE,aAAa,CAAA;IAClB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,eAAe,CAAA;IACrB,qEAAqE;IACrE,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,yBAAyB,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Wrap a throwing function so that it gives `undefined` in place of a throw.
3
+ * The wrapper logs a warning with `name` and the error, which carries the
4
+ * stack trace.
5
+ *
6
+ * @internal
7
+ */
8
+ export declare function createSafeFunction<Args extends unknown[], Result>(name: string, throwingFunction: (...args: Args) => Result): (...args: Args) => Result | undefined;
9
+ //# sourceMappingURL=createSafeFunction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSafeFunction.d.ts","sourceRoot":"","sources":["../../../src/utils/createSafeFunction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,EAC/D,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,GAC1C,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,SAAS,CASvC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Read a venue time (epoch milliseconds or a date string) as an ISO-8601
3
+ * string.
4
+ *
5
+ * @throws {PerpsError} `ValidationError` when `Date` cannot read `value`.
6
+ * @public
7
+ */
8
+ export declare function timestampToIsoString(value: string | number): string;
9
+ /**
10
+ * {@link timestampToIsoString}, or `undefined` with a warning when it throws.
11
+ *
12
+ * @public
13
+ */
14
+ export declare const safeTimestampToIsoString: (value: string | number) => string | undefined;
15
+ //# sourceMappingURL=timestampToIsoString.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestampToIsoString.d.ts","sourceRoot":"","sources":["../../../src/utils/timestampToIsoString.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CASnE;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,gDAGpC,CAAA"}
@@ -6,4 +6,20 @@
6
6
  * @internal
7
7
  */
8
8
  export declare const createWarnOnce: () => ((key: string, message: string) => void);
9
+ /**
10
+ * Describe a skipped venue row. The venue value is cut to a fixed length, so
11
+ * a warner key built from the text stays small.
12
+ *
13
+ * @internal
14
+ */
15
+ export declare const skippedRowMessage: (source: string, row: string, field: string, value: unknown, expected: string) => string;
16
+ /**
17
+ * Warn once for each provider, row, field and expected kind that a provider
18
+ * mapper skipped a venue row because a required field is not valid. The key
19
+ * holds no venue value, so a second bad value for the same field stays silent.
20
+ *
21
+ * @param expected - What the field must be. Defaults to `'decimal'`.
22
+ * @internal
23
+ */
24
+ export declare const warnSkippedVenueRow: (provider: string, row: string, field: string, value: unknown, expected?: string) => void;
9
25
  //# sourceMappingURL=warnOnce.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"warnOnce.d.ts","sourceRoot":"","sources":["../../../src/utils/warnOnce.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAexE,CAAA"}
1
+ {"version":3,"file":"warnOnce.d.ts","sourceRoot":"","sources":["../../../src/utils/warnOnce.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAexE,CAAA;AAID;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,OAAO,MAAM,EACb,OAAO,OAAO,EACd,UAAU,MAAM,KACf,MAKF,CAAA;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,EAChB,KAAK,MAAM,EACX,OAAO,MAAM,EACb,OAAO,OAAO,EACd,iBAAoB,KACnB,IAKF,CAAA"}
@@ -9,5 +9,5 @@ export declare const name = "@lifi/perps-sdk";
9
9
  *
10
10
  * @public
11
11
  */
12
- export declare const version = "23.1.0";
12
+ export declare const version = "24.0.0";
13
13
  //# sourceMappingURL=version.d.ts.map
@@ -58,6 +58,7 @@ export declare class PerpsWsClient {
58
58
  private readonly options;
59
59
  private providers;
60
60
  private initPromises;
61
+ private discovery;
61
62
  private closed;
62
63
  constructor(client: PerpsSDKClient, options?: PerpsWsClientOptions);
63
64
  /**
@@ -122,5 +123,11 @@ export declare class PerpsWsClient {
122
123
  private assertOpen;
123
124
  private getOrCreateProvider;
124
125
  private initProvider;
126
+ /**
127
+ * Shares one in-flight `/providers` request between concurrent venue
128
+ * inits. The slot clears on settlement, so a later init fetches fresh
129
+ * metadata and a rejection is never cached.
130
+ */
131
+ private discoverProviders;
125
132
  }
126
133
  //# sourceMappingURL=PerpsWsClient.d.ts.map
@@ -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;;;;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"}
1
+ {"version":3,"file":"PerpsWsClient.d.ts","sourceRoot":"","sources":["../../../src/websocket/PerpsWsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAA;AAG1B,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,SAAS,CAAwC;IACzD,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;IA2B1B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CAY1B"}
@@ -36,6 +36,18 @@ export declare const wsLog: {
36
36
  * so logged at `warn`.
37
37
  */
38
38
  readonly unknownMarket: (provider: string, marketId: string) => void;
39
+ /**
40
+ * A frame row or order-book level with a required field that is not valid.
41
+ * Only that row is skipped. Logged once at `warn` for each provider, row and
42
+ * field; the key holds no venue value.
43
+ */
44
+ readonly skippedRow: (provider: string, row: string, field: string, value: unknown) => void;
45
+ /**
46
+ * A frame row the mapper rejected for a reason other than one field, such as
47
+ * a lifecycle state the SDK does not carry. Logged once at `warn` for each
48
+ * provider and row; the key holds no venue value.
49
+ */
50
+ readonly droppedRow: (provider: string, row: string, reason: string) => void;
39
51
  /**
40
52
  * A background market-registry refetch rejected. Unknown-market items keep
41
53
  * being skipped until the next cooldown-gated retry, so logged at `warn`.
@@ -1 +1 @@
1
- {"version":3,"file":"wsLog.d.ts","sourceRoot":"","sources":["../../../src/websocket/wsLog.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,eAAO,MAAM,KAAK;IAChB;;;OAGG;sCACoB,MAAM,OAAO,MAAM,KAAG,IAAI;IAGjD;;;;OAIG;wCACsB,MAAM,SAAS,OAAO,KAAG,IAAI;IAGtD;;;;;OAKG;qCACmB,MAAM,WAAW,MAAM,KAAG,IAAI;IAGpD;;;;OAIG;0CACwB,MAAM,WAAW,MAAM,SAAS,OAAO,KAAG,IAAI;IAMzE;;;;OAIG;uCACqB,MAAM,YAAY,MAAM,KAAG,IAAI;IAKvD;;;OAGG;8CAC4B,MAAM,SAAS,OAAO,KAAG,IAAI;IAG5D;;;OAGG;yCAES,MAAM,gBACF,MAAM,SACb,OAAO,KACb,IAAI;CAMC,CAAA"}
1
+ {"version":3,"file":"wsLog.d.ts","sourceRoot":"","sources":["../../../src/websocket/wsLog.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,eAAO,MAAM,KAAK;IAChB;;;OAGG;sCACoB,MAAM,OAAO,MAAM,KAAG,IAAI;IAGjD;;;;OAIG;wCACsB,MAAM,SAAS,OAAO,KAAG,IAAI;IAGtD;;;;;OAKG;qCACmB,MAAM,WAAW,MAAM,KAAG,IAAI;IAGpD;;;;OAIG;0CACwB,MAAM,WAAW,MAAM,SAAS,OAAO,KAAG,IAAI;IAMzE;;;;OAIG;uCACqB,MAAM,YAAY,MAAM,KAAG,IAAI;IAKvD;;;;OAIG;oCAES,MAAM,OACX,MAAM,SACJ,MAAM,SACN,OAAO,KACb,IAAI;IAMP;;;;OAIG;oCACkB,MAAM,OAAO,MAAM,UAAU,MAAM,KAAG,IAAI;IAM/D;;;OAGG;8CAC4B,MAAM,SAAS,OAAO,KAAG,IAAI;IAG5D;;;OAGG;yCAES,MAAM,gBACF,MAAM,SACb,OAAO,KACb,IAAI;CAMC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"orderAmounts.d.ts","sourceRoot":"","sources":["../../../src/wire/orderAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;IACpC,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,aAAa,CAAA;CACrB;AAED,cAAc;AACd,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,EAAE,aAAa,CAAA;IACrB,sEAAsE;IACtE,IAAI,EAAE,aAAa,CAAA;IACnB,qDAAqD;IACrD,QAAQ,EAAE,aAAa,CAAA;CACxB;AAUD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,GACvB,YAAY,GAAG,IAAI,CAiCrB"}
1
+ {"version":3,"file":"orderAmounts.d.ts","sourceRoot":"","sources":["../../../src/wire/orderAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAK9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;IACpC,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,aAAa,CAAA;CACrB;AAED,cAAc;AACd,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,EAAE,aAAa,CAAA;IACrB,sEAAsE;IACtE,IAAI,EAAE,aAAa,CAAA;IACnB,qDAAqD;IACrD,QAAQ,EAAE,aAAa,CAAA;CACxB;AAUD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,GACvB,YAAY,GAAG,IAAI,CAiCrB"}
@@ -1,27 +1,37 @@
1
1
  import { type DecimalString } from '@lifi/perps-types';
2
+ /**
3
+ * Headroom, in percent, that {@link calculateRefuelAmount} adds over the gas
4
+ * deficit to pay the refuel route's own swap and bridge fees.
5
+ *
6
+ * @public
7
+ */
8
+ export declare const REFUEL_FEE_MARGIN_PERCENT = 20;
2
9
  /** @public */
3
10
  export interface RefuelAmountInput {
4
- /** USD value of the gas the route recommends. */
5
- gasUsd: DecimalString;
11
+ /** Native gas amount the LI.FI gas suggestion recommends, in base units. */
12
+ recommendedAmount: DecimalString;
13
+ /** USD value of `recommendedAmount`. */
14
+ recommendedUsd: DecimalString;
15
+ /** Native balance the wallet holds on the recommendation's chain, in base units. */
16
+ nativeBalance: DecimalString;
6
17
  /** USD price of one whole source token. */
7
18
  priceUsd: DecimalString;
8
19
  /** Decimals of the source token, which the result is spelled to exactly. */
9
20
  decimals: number;
10
21
  }
11
22
  /**
12
- * Source-token amount whose USD value covers `gasUsd`, rounded **up** onto
13
- * the token's decimal grid so a refuel never lands short of the
14
- * recommendation. The result keeps trailing zeros to `decimals`, so it seeds
15
- * an amount input at the token's own precision.
16
- *
17
- * The quotient does not terminate for most prices, which is why this is a
18
- * big.js primitive: an 18-decimal token needs a ceiling at 10^-18, far past
19
- * what a `number` can carry.
23
+ * Source-token amount that buys the native gas the wallet lacks: the part of
24
+ * the recommendation above `nativeBalance`, valued pro rata on
25
+ * `recommendedUsd`, plus {@link REFUEL_FEE_MARGIN_PERCENT}. Rounded **up**
26
+ * onto the token's decimal grid so a refuel never lands short, and spelled
27
+ * with trailing zeros to `decimals` to seed an amount input.
20
28
  *
21
- * @returns `undefined` when `gasUsd` or `priceUsd` is not greater than zero,
22
- * which is a route with nothing to refuel rather than a failure.
23
- * @throws {PerpsError} `ValidationError` when `gasUsd` or `priceUsd` is not a
24
- * {@link DecimalString}, or when `decimals` is not a non-negative integer.
29
+ * @returns `undefined` when the wallet already holds the recommendation, or
30
+ * when `recommendedAmount`, `recommendedUsd` or `priceUsd` is not greater
31
+ * than zero: a route with nothing to refuel, not a failure.
32
+ * @throws {PerpsError} `ValidationError` when a base-unit field is not an
33
+ * integer string, a USD field is not a {@link DecimalString}, or `decimals`
34
+ * is not a non-negative integer.
25
35
  * @public
26
36
  */
27
37
  export declare function calculateRefuelAmount(input: RefuelAmountInput): DecimalString | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"refuel.d.ts","sourceRoot":"","sources":["../../../src/wire/refuel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,mBAAmB,CAAA;AAKtE,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,MAAM,EAAE,aAAa,CAAA;IACrB,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,CAAA;IACvB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,GACvB,aAAa,GAAG,SAAS,CAiB3B"}
1
+ {"version":3,"file":"refuel.d.ts","sourceRoot":"","sources":["../../../src/wire/refuel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,mBAAmB,CAAA;AAOtE;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAE3C,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,iBAAiB,EAAE,aAAa,CAAA;IAChC,wCAAwC;IACxC,cAAc,EAAE,aAAa,CAAA;IAC7B,oFAAoF;IACpF,aAAa,EAAE,aAAa,CAAA;IAC5B,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,CAAA;IACvB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAA;CACjB;AAYD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,GACvB,aAAa,GAAG,SAAS,CA8B3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../src/wire/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,IAAI,CACP,mBAAmB,EACnB,WAAW,GAAG,eAAe,GAAG,eAAe,CAChD,GACA,aAAa,CASf"}
1
+ {"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../src/wire/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,IAAI,CACP,mBAAmB,EACnB,WAAW,GAAG,eAAe,GAAG,eAAe,CAChD,GACA,aAAa,CAOf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk",
3
- "version": "23.1.0",
3
+ "version": "24.0.0",
4
4
  "description": "LI.FI Perps SDK for perpetuals trading",
5
5
  "homepage": "https://github.com/lifinance/perps-sdk",
6
6
  "bugs": {
@@ -46,7 +46,7 @@
46
46
  "big.js": "^7.0.1",
47
47
  "partysocket": "^1.1.19",
48
48
  "viem": "^2.55.18",
49
- "@lifi/perps-types": "^20.2.0"
49
+ "@lifi/perps-types": "^21.0.0"
50
50
  },
51
51
  "publishConfig": {
52
52
  "access": "public"
@@ -30,8 +30,9 @@ import {
30
30
  PerpsSigner,
31
31
  SigningMethod,
32
32
  } from '@lifi/perps-types'
33
- import Big from 'big.js'
34
33
  import type { Address } from 'viem'
34
+ import { isDecimalStringGreaterThan } from '../decimal/compare.js'
35
+ import { unknownToDecimalString } from '../decimal/parse.js'
35
36
  import { PerpsError } from '../errors/PerpsError.js'
36
37
  import { getAssetRegistry, toAssetDisplay } from '../registry/assetRegistry.js'
37
38
  import { getMarketRegistry } from '../registry/marketRegistry.js'
@@ -60,6 +61,7 @@ import type {
60
61
  GetPortfolioHistoryParams,
61
62
  GetSetupParams,
62
63
  GetWithdrawableBalancesParams,
64
+ GetWithdrawalTypesParams,
63
65
  GetWithdrawFlowParams,
64
66
  ModifyOrdersParams,
65
67
  PerpsClientOptions,
@@ -85,7 +87,11 @@ import type {
85
87
  SignActionProgress,
86
88
  SignActionsContext,
87
89
  } from '../types/provider.js'
88
- import type { WithdrawableBalance, WithdrawFlow } from '../types/withdrawal.js'
90
+ import type {
91
+ WithdrawableBalance,
92
+ WithdrawalSourceTypes,
93
+ WithdrawFlow,
94
+ } from '../types/withdrawal.js'
89
95
  import { isUserFacingSetupStep } from '../utils/setupActions.js'
90
96
  import { signTypedDataWithSigner } from '../utils/signTypedData.js'
91
97
  import {
@@ -219,7 +225,10 @@ function assertAllSucceeded(results: ActionResult[]): void {
219
225
 
220
226
  function isNonNegativeDecimal(value: string): boolean {
221
227
  try {
222
- return new Big(value).gte(0)
228
+ return !isDecimalStringGreaterThan(
229
+ '0',
230
+ unknownToDecimalString(value, 'withdrawalFee', 'perps-sdk')
231
+ )
223
232
  } catch {
224
233
  return false
225
234
  }
@@ -838,8 +847,9 @@ export class PerpsClient {
838
847
  }
839
848
 
840
849
  /**
841
- * The `(asset, route)` selections `params.address` can actually withdraw at
842
- * `params.provider`. The venue owns how its balances split across routes;
850
+ * The `(asset, category)` selections `params.address` can actually withdraw
851
+ * at `params.provider`. The venue owns how its balances split across
852
+ * categories;
843
853
  * this join adds the core `/assets` metadata — precision, L1 identity and
844
854
  * the per-asset minimum — and drops every row the minimum rules out, plus
845
855
  * any row whose asset the provider's registry does not carry, since without
@@ -878,22 +888,31 @@ export class PerpsClient {
878
888
  }
879
889
  const minimum = asset.minWithdrawalAmount
880
890
  if (minimum !== undefined) {
881
- let floor: Big
891
+ let floor: string
882
892
  try {
883
- floor = new Big(minimum)
893
+ floor = unknownToDecimalString(
894
+ minimum,
895
+ 'minWithdrawalAmount',
896
+ 'perps-sdk'
897
+ )
884
898
  } catch {
885
899
  throw new PerpsError(
886
900
  PerpsErrorCode.SDKError,
887
901
  `Asset '${asset.id}' field \`minWithdrawalAmount\` is not a valid decimal.`
888
902
  )
889
903
  }
890
- if (new Big(row.available).lt(floor)) {
904
+ if (isDecimalStringGreaterThan(floor, row.available)) {
891
905
  return []
892
906
  }
893
907
  }
894
908
  if (row.withdrawalFee === undefined) {
895
909
  return [
896
- { asset, route: row.route, available: row.available, max: row.max },
910
+ {
911
+ asset,
912
+ categoryId: row.categoryId,
913
+ available: row.available,
914
+ max: row.max,
915
+ },
897
916
  ]
898
917
  }
899
918
  if (!isNonNegativeDecimal(row.withdrawalFee)) {
@@ -905,7 +924,7 @@ export class PerpsClient {
905
924
  return [
906
925
  {
907
926
  asset,
908
- route: row.route,
927
+ categoryId: row.categoryId,
909
928
  available: row.available,
910
929
  max: row.max,
911
930
  withdrawalFee: row.withdrawalFee,
@@ -917,6 +936,25 @@ export class PerpsClient {
917
936
  })
918
937
  }
919
938
 
939
+ /**
940
+ * The withdrawal types `params.address` can choose per holding at
941
+ * `params.provider`, each with its cap and the `withdrawalOptions` to pass
942
+ * unchanged in `WithdrawalParams`.
943
+ *
944
+ * @returns `undefined` when the registered plugin declares no withdrawal
945
+ * types read.
946
+ * @throws {PerpsError} When the provider plugin is not registered, or when
947
+ * the plugin read fails.
948
+ * @public
949
+ */
950
+ async getWithdrawalTypes(
951
+ params: GetWithdrawalTypesParams,
952
+ options?: SDKRequestOptions
953
+ ): Promise<WithdrawalSourceTypes[] | undefined> {
954
+ const plugin = this.requireProvider(params.provider)
955
+ return plugin.getWithdrawalTypes?.({ address: params.address }, options)
956
+ }
957
+
920
958
  /**
921
959
  * The account's portfolio value and cumulative PnL over `params.range` at
922
960
  * `params.provider`, read directly from the venue.
@@ -0,0 +1,144 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types'
2
+ import type Big from 'big.js'
3
+ import { PerpsError } from '../errors/PerpsError.js'
4
+ import { createSafeFunction } from '../utils/createSafeFunction.js'
5
+ import { DivBig, TruncBig } from './big.js'
6
+ import { bigToDecimalString, decimalStringToBig } from './decimalStringToBig.js'
7
+
8
+ /**
9
+ * Exact `a + b`. Each input may carry `$`, `%`, `,` or whitespace:
10
+ * `addDecimalString('$4', '$6')` is `'10'`.
11
+ *
12
+ * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
13
+ * @public
14
+ */
15
+ export function addDecimalString(a: string, b: string): string {
16
+ return bigToDecimalString(decimalStringToBig(a).plus(decimalStringToBig(b)))
17
+ }
18
+
19
+ /**
20
+ * {@link addDecimalString}, or `undefined` with a warning when it throws.
21
+ *
22
+ * @public
23
+ */
24
+ export const safeAddDecimalString = createSafeFunction(
25
+ 'addDecimalString',
26
+ addDecimalString
27
+ )
28
+
29
+ /**
30
+ * Exact `a - b`.
31
+ *
32
+ * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
33
+ * @public
34
+ */
35
+ export function subtractDecimalString(a: string, b: string): string {
36
+ return bigToDecimalString(decimalStringToBig(a).minus(decimalStringToBig(b)))
37
+ }
38
+
39
+ /**
40
+ * {@link subtractDecimalString}, or `undefined` with a warning when it throws.
41
+ *
42
+ * @public
43
+ */
44
+ export const safeSubtractDecimalString = createSafeFunction(
45
+ 'subtractDecimalString',
46
+ subtractDecimalString
47
+ )
48
+
49
+ /**
50
+ * Exact `a × b`.
51
+ *
52
+ * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
53
+ * @public
54
+ */
55
+ export function multiplyDecimalString(a: string, b: string): string {
56
+ return bigToDecimalString(decimalStringToBig(a).times(decimalStringToBig(b)))
57
+ }
58
+
59
+ /**
60
+ * {@link multiplyDecimalString}, or `undefined` with a warning when it throws.
61
+ *
62
+ * @public
63
+ */
64
+ export const safeMultiplyDecimalString = createSafeFunction(
65
+ 'multiplyDecimalString',
66
+ multiplyDecimalString
67
+ )
68
+
69
+ function requireNonZeroDivisor(divisor: string): Big {
70
+ const parsed = decimalStringToBig(divisor)
71
+ if (parsed.eq(0)) {
72
+ throw new PerpsError(
73
+ PerpsErrorCode.ValidationError,
74
+ `Division by zero: divisor '${divisor}'.`
75
+ )
76
+ }
77
+ return parsed
78
+ }
79
+
80
+ /**
81
+ * `a ÷ b` to 40 decimal places, rounded half up.
82
+ *
83
+ * @throws {PerpsError} `ValidationError` when an input is not a decimal
84
+ * string or `b` is zero.
85
+ * @public
86
+ */
87
+ export function divideDecimalString(a: string, b: string): string {
88
+ const divisor = requireNonZeroDivisor(b)
89
+ return bigToDecimalString(new DivBig(decimalStringToBig(a)).div(divisor))
90
+ }
91
+
92
+ /**
93
+ * {@link divideDecimalString}, or `undefined` with a warning when it throws.
94
+ *
95
+ * @public
96
+ */
97
+ export const safeDivideDecimalString = createSafeFunction(
98
+ 'divideDecimalString',
99
+ divideDecimalString
100
+ )
101
+
102
+ /**
103
+ * `a ÷ b` to 40 decimal places, truncated toward zero, so a derived amount
104
+ * never exceeds the exact quotient.
105
+ *
106
+ * @throws {PerpsError} `ValidationError` when an input is not a decimal
107
+ * string or `b` is zero.
108
+ * @public
109
+ */
110
+ export function divideDecimalStringRoundDown(a: string, b: string): string {
111
+ const divisor = requireNonZeroDivisor(b)
112
+ return bigToDecimalString(new TruncBig(decimalStringToBig(a)).div(divisor))
113
+ }
114
+
115
+ /**
116
+ * {@link divideDecimalStringRoundDown}, or `undefined` with a warning when it
117
+ * throws.
118
+ *
119
+ * @public
120
+ */
121
+ export const safeDivideDecimalStringRoundDown = createSafeFunction(
122
+ 'divideDecimalStringRoundDown',
123
+ divideDecimalStringRoundDown
124
+ )
125
+
126
+ /**
127
+ * Exact `|value|`.
128
+ *
129
+ * @throws {PerpsError} `ValidationError` when `value` is not a decimal string.
130
+ * @public
131
+ */
132
+ export function absDecimalString(value: string): string {
133
+ return bigToDecimalString(decimalStringToBig(value).abs())
134
+ }
135
+
136
+ /**
137
+ * {@link absDecimalString}, or `undefined` with a warning when it throws.
138
+ *
139
+ * @public
140
+ */
141
+ export const safeAbsDecimalString = createSafeFunction(
142
+ 'absDecimalString',
143
+ absDecimalString
144
+ )
@@ -14,8 +14,3 @@ DivBig.DP = 40
14
14
  export const TruncBig = Big()
15
15
  TruncBig.DP = 40
16
16
  TruncBig.RM = Big.roundDown
17
-
18
- /** True when every value is a finite number, so `new DivBig(value)` cannot throw. */
19
- export function areFinite(...values: number[]): boolean {
20
- return values.every(Number.isFinite)
21
- }
@@ -1,17 +1,67 @@
1
- import type { DecimalString } from '@lifi/perps-types'
2
- import { requireDecimal } from './requireDecimal.js'
1
+ import { createSafeFunction } from '../utils/createSafeFunction.js'
2
+ import { decimalStringToBig } from './decimalStringToBig.js'
3
3
 
4
4
  /**
5
- * Exact `a > b` on two {@link DecimalString}s, with no float rounding, so a
6
- * funds gate can tell `'1.0000000000000001'` from `'1'`. The other relations
7
- * follow from it: `a <= b` is `!isDecimalStringGreaterThan(a, b)`.
5
+ * Exact `a > b` on two decimal strings, with no float rounding, so a funds
6
+ * gate can tell `'1.0000000000000001'` from `'1'`. The other relations follow
7
+ * from it: `a <= b` is `!isDecimalStringGreaterThan(a, b)`.
8
8
  *
9
9
  * @throws {PerpsError} `ValidationError` when either operand is not a decimal string.
10
10
  * @public
11
11
  */
12
- export function isDecimalStringGreaterThan(
13
- a: DecimalString,
14
- b: DecimalString
15
- ): boolean {
16
- return requireDecimal(a, 'a').gt(requireDecimal(b, 'b'))
12
+ export function isDecimalStringGreaterThan(a: string, b: string): boolean {
13
+ return decimalStringToBig(a).gt(decimalStringToBig(b))
17
14
  }
15
+
16
+ /**
17
+ * {@link isDecimalStringGreaterThan}, or `undefined` with a warning when it
18
+ * throws.
19
+ *
20
+ * @public
21
+ */
22
+ export const safeIsDecimalStringGreaterThan = createSafeFunction(
23
+ 'isDecimalStringGreaterThan',
24
+ isDecimalStringGreaterThan
25
+ )
26
+
27
+ /**
28
+ * Exact `value == 0`, so a flat-position check never reads `'0.0'` as
29
+ * non-zero.
30
+ *
31
+ * @throws {PerpsError} `ValidationError` when `value` is not a decimal string.
32
+ * @public
33
+ */
34
+ export function isDecimalStringZero(value: string): boolean {
35
+ return decimalStringToBig(value).eq(0)
36
+ }
37
+
38
+ /**
39
+ * {@link isDecimalStringZero}, or `undefined` with a warning when it throws.
40
+ *
41
+ * @public
42
+ */
43
+ export const safeIsDecimalStringZero = createSafeFunction(
44
+ 'isDecimalStringZero',
45
+ isDecimalStringZero
46
+ )
47
+
48
+ /**
49
+ * Exact three-way compare for a sort: `-1` when `a < b`, `0` when equal, `1`
50
+ * when `a > b`.
51
+ *
52
+ * @throws {PerpsError} `ValidationError` when either operand is not a decimal string.
53
+ * @public
54
+ */
55
+ export function compareDecimalStrings(a: string, b: string): -1 | 0 | 1 {
56
+ return decimalStringToBig(a).cmp(decimalStringToBig(b))
57
+ }
58
+
59
+ /**
60
+ * {@link compareDecimalStrings}, or `undefined` with a warning when it throws.
61
+ *
62
+ * @public
63
+ */
64
+ export const safeCompareDecimalStrings = createSafeFunction(
65
+ 'compareDecimalStrings',
66
+ compareDecimalStrings
67
+ )