@katanaperps/katana-perps-sdk 0.0.0-placeholder

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 (428) hide show
  1. package/.nvmrc +1 -0
  2. package/LICENSE +21 -0
  3. package/README.md +90 -0
  4. package/dist/abis/ERC20.json +288 -0
  5. package/dist/abis/EarningsEscrow.json +468 -0
  6. package/dist/abis/Exchange_v1.json +3644 -0
  7. package/dist/abis/IOFT.json +447 -0
  8. package/dist/bridge/config.d.ts +262 -0
  9. package/dist/bridge/config.d.ts.map +1 -0
  10. package/dist/bridge/config.js +221 -0
  11. package/dist/bridge/deposit.d.ts +107 -0
  12. package/dist/bridge/deposit.d.ts.map +1 -0
  13. package/dist/bridge/deposit.js +284 -0
  14. package/dist/bridge/index.d.ts +5 -0
  15. package/dist/bridge/index.d.ts.map +1 -0
  16. package/dist/bridge/index.js +7 -0
  17. package/dist/bridge/utils.d.ts +140 -0
  18. package/dist/bridge/utils.d.ts.map +1 -0
  19. package/dist/bridge/utils.js +66 -0
  20. package/dist/bridge/withdraw.d.ts +42 -0
  21. package/dist/bridge/withdraw.d.ts.map +1 -0
  22. package/dist/bridge/withdraw.js +86 -0
  23. package/dist/client/index.d.ts +4 -0
  24. package/dist/client/index.d.ts.map +1 -0
  25. package/dist/client/index.js +6 -0
  26. package/dist/client/orderBook/index.d.ts +2 -0
  27. package/dist/client/orderBook/index.d.ts.map +1 -0
  28. package/dist/client/orderBook/index.js +4 -0
  29. package/dist/client/orderBook/realTime.d.ts +180 -0
  30. package/dist/client/orderBook/realTime.d.ts.map +1 -0
  31. package/dist/client/orderBook/realTime.js +344 -0
  32. package/dist/client/orderBook/utils.d.ts +15 -0
  33. package/dist/client/orderBook/utils.d.ts.map +1 -0
  34. package/dist/client/orderBook/utils.js +77 -0
  35. package/dist/client/rest/authenticated.d.ts +1199 -0
  36. package/dist/client/rest/authenticated.d.ts.map +1 -0
  37. package/dist/client/rest/authenticated.js +1311 -0
  38. package/dist/client/rest/index.d.ts +3 -0
  39. package/dist/client/rest/index.d.ts.map +1 -0
  40. package/dist/client/rest/index.js +5 -0
  41. package/dist/client/rest/public.d.ts +436 -0
  42. package/dist/client/rest/public.d.ts.map +1 -0
  43. package/dist/client/rest/public.js +502 -0
  44. package/dist/client/webSocket/guards.d.ts +15 -0
  45. package/dist/client/webSocket/guards.d.ts.map +1 -0
  46. package/dist/client/webSocket/guards.js +37 -0
  47. package/dist/client/webSocket/index.d.ts +632 -0
  48. package/dist/client/webSocket/index.d.ts.map +1 -0
  49. package/dist/client/webSocket/index.js +1048 -0
  50. package/dist/client/webSocket/transform.d.ts +3 -0
  51. package/dist/client/webSocket/transform.d.ts.map +1 -0
  52. package/dist/client/webSocket/transform.js +244 -0
  53. package/dist/constants.d.ts +34 -0
  54. package/dist/constants.d.ts.map +1 -0
  55. package/dist/constants.js +38 -0
  56. package/dist/index.d.ts +9 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +14 -0
  59. package/dist/orderbook/apiConversions.d.ts +8 -0
  60. package/dist/orderbook/apiConversions.d.ts.map +1 -0
  61. package/dist/orderbook/apiConversions.js +100 -0
  62. package/dist/orderbook/demo.d.ts +2 -0
  63. package/dist/orderbook/demo.d.ts.map +1 -0
  64. package/dist/orderbook/demo.js +68 -0
  65. package/dist/orderbook/index.d.ts +3 -0
  66. package/dist/orderbook/index.d.ts.map +1 -0
  67. package/dist/orderbook/index.js +5 -0
  68. package/dist/orderbook/quantities.d.ts +112 -0
  69. package/dist/orderbook/quantities.d.ts.map +1 -0
  70. package/dist/orderbook/quantities.js +257 -0
  71. package/dist/orderbook/utils.d.ts +8 -0
  72. package/dist/orderbook/utils.d.ts.map +1 -0
  73. package/dist/orderbook/utils.js +28 -0
  74. package/dist/pipmath.d.ts +21 -0
  75. package/dist/pipmath.d.ts.map +1 -0
  76. package/dist/pipmath.js +110 -0
  77. package/dist/signatures.d.ts +37 -0
  78. package/dist/signatures.d.ts.map +1 -0
  79. package/dist/signatures.js +450 -0
  80. package/dist/tests/orderbook/quantities/calculateInitialMarginFractionWithOverride.test.d.ts +2 -0
  81. package/dist/tests/orderbook/quantities/calculateInitialMarginFractionWithOverride.test.d.ts.map +1 -0
  82. package/dist/tests/orderbook/quantities/calculateInitialMarginFractionWithOverride.test.js +49 -0
  83. package/dist/tests/orderbook/quantities/calculateMaximumInitialMarginFractionOverride.test.d.ts +2 -0
  84. package/dist/tests/orderbook/quantities/calculateMaximumInitialMarginFractionOverride.test.d.ts.map +1 -0
  85. package/dist/tests/orderbook/quantities/calculateMaximumInitialMarginFractionOverride.test.js +122 -0
  86. package/dist/tests/orderbook/quantities/determineMaximumReduceOnlyQuantityAvailableAtPriceLevel.test.d.ts +2 -0
  87. package/dist/tests/orderbook/quantities/determineMaximumReduceOnlyQuantityAvailableAtPriceLevel.test.d.ts.map +1 -0
  88. package/dist/tests/orderbook/quantities/determineMaximumReduceOnlyQuantityAvailableAtPriceLevel.test.js +138 -0
  89. package/dist/tests/orderbook/quantities.test.d.ts +2 -0
  90. package/dist/tests/orderbook/quantities.test.d.ts.map +1 -0
  91. package/dist/tests/orderbook/quantities.test.js +310 -0
  92. package/dist/tests/testHelpers.d.ts +2 -0
  93. package/dist/tests/testHelpers.d.ts.map +1 -0
  94. package/dist/tests/testHelpers.js +16 -0
  95. package/dist/tests/utils/deriveBaseURL.test.d.ts +2 -0
  96. package/dist/tests/utils/deriveBaseURL.test.d.ts.map +1 -0
  97. package/dist/tests/utils/deriveBaseURL.test.js +46 -0
  98. package/dist/typechain-types/ERC20.d.ts +170 -0
  99. package/dist/typechain-types/ERC20.d.ts.map +1 -0
  100. package/dist/typechain-types/ERC20.js +2 -0
  101. package/dist/typechain-types/EarningsEscrow.d.ts +210 -0
  102. package/dist/typechain-types/EarningsEscrow.d.ts.map +1 -0
  103. package/dist/typechain-types/EarningsEscrow.js +2 -0
  104. package/dist/typechain-types/ExchangeLayerZeroAdapter.d.ts +253 -0
  105. package/dist/typechain-types/ExchangeLayerZeroAdapter.d.ts.map +1 -0
  106. package/dist/typechain-types/ExchangeLayerZeroAdapter.js +2 -0
  107. package/dist/typechain-types/ExchangeLayerZeroAdapter_v2.d.ts +338 -0
  108. package/dist/typechain-types/ExchangeLayerZeroAdapter_v2.d.ts.map +1 -0
  109. package/dist/typechain-types/ExchangeLayerZeroAdapter_v2.js +2 -0
  110. package/dist/typechain-types/ExchangeLayerZeroAdapter_v3.d.ts +413 -0
  111. package/dist/typechain-types/ExchangeLayerZeroAdapter_v3.d.ts.map +1 -0
  112. package/dist/typechain-types/ExchangeLayerZeroAdapter_v3.js +2 -0
  113. package/dist/typechain-types/Exchange_v1.d.ts +2172 -0
  114. package/dist/typechain-types/Exchange_v1.d.ts.map +1 -0
  115. package/dist/typechain-types/Exchange_v1.js +2 -0
  116. package/dist/typechain-types/Exchange_v2.d.ts +2148 -0
  117. package/dist/typechain-types/Exchange_v2.d.ts.map +1 -0
  118. package/dist/typechain-types/Exchange_v2.js +2 -0
  119. package/dist/typechain-types/FixedIncomeVaultProviderStateAggregator_v1.d.ts +148 -0
  120. package/dist/typechain-types/FixedIncomeVaultProviderStateAggregator_v1.d.ts.map +1 -0
  121. package/dist/typechain-types/FixedIncomeVaultProviderStateAggregator_v1.js +2 -0
  122. package/dist/typechain-types/FixedIncomeVaultProvider_v1.d.ts +1204 -0
  123. package/dist/typechain-types/FixedIncomeVaultProvider_v1.d.ts.map +1 -0
  124. package/dist/typechain-types/FixedIncomeVaultProvider_v1.js +2 -0
  125. package/dist/typechain-types/IOFT.d.ts +247 -0
  126. package/dist/typechain-types/IOFT.d.ts.map +1 -0
  127. package/dist/typechain-types/IOFT.js +2 -0
  128. package/dist/typechain-types/IRewardVault.d.ts +649 -0
  129. package/dist/typechain-types/IRewardVault.d.ts.map +1 -0
  130. package/dist/typechain-types/IRewardVault.js +2 -0
  131. package/dist/typechain-types/KumaOFTAdapterUSDC.d.ts +638 -0
  132. package/dist/typechain-types/KumaOFTAdapterUSDC.d.ts.map +1 -0
  133. package/dist/typechain-types/KumaOFTAdapterUSDC.js +2 -0
  134. package/dist/typechain-types/KumaOFTUSDC.d.ts +756 -0
  135. package/dist/typechain-types/KumaOFTUSDC.d.ts.map +1 -0
  136. package/dist/typechain-types/KumaOFTUSDC.js +2 -0
  137. package/dist/typechain-types/KumaStargateForwarder_v1.d.ts +252 -0
  138. package/dist/typechain-types/KumaStargateForwarder_v1.d.ts.map +1 -0
  139. package/dist/typechain-types/KumaStargateForwarder_v1.js +2 -0
  140. package/dist/typechain-types/KumaStargateForwarder_v2.d.ts +252 -0
  141. package/dist/typechain-types/KumaStargateForwarder_v2.d.ts.map +1 -0
  142. package/dist/typechain-types/KumaStargateForwarder_v2.js +2 -0
  143. package/dist/typechain-types/ProfitShareVaultProvider_v1.d.ts +1095 -0
  144. package/dist/typechain-types/ProfitShareVaultProvider_v1.d.ts.map +1 -0
  145. package/dist/typechain-types/ProfitShareVaultProvider_v1.js +2 -0
  146. package/dist/typechain-types/StargatePoolUSDC.d.ts +956 -0
  147. package/dist/typechain-types/StargatePoolUSDC.d.ts.map +1 -0
  148. package/dist/typechain-types/StargatePoolUSDC.js +2 -0
  149. package/dist/typechain-types/common.d.ts +51 -0
  150. package/dist/typechain-types/common.d.ts.map +1 -0
  151. package/dist/typechain-types/common.js +2 -0
  152. package/dist/typechain-types/factories/ERC20__factory.d.ts +226 -0
  153. package/dist/typechain-types/factories/ERC20__factory.d.ts.map +1 -0
  154. package/dist/typechain-types/factories/ERC20__factory.js +305 -0
  155. package/dist/typechain-types/factories/EarningsEscrow__factory.d.ts +370 -0
  156. package/dist/typechain-types/factories/EarningsEscrow__factory.d.ts.map +1 -0
  157. package/dist/typechain-types/factories/EarningsEscrow__factory.js +485 -0
  158. package/dist/typechain-types/factories/ExchangeLayerZeroAdapter__factory.d.ts +359 -0
  159. package/dist/typechain-types/factories/ExchangeLayerZeroAdapter__factory.d.ts.map +1 -0
  160. package/dist/typechain-types/factories/ExchangeLayerZeroAdapter__factory.js +471 -0
  161. package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v2__factory.d.ts +419 -0
  162. package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v2__factory.d.ts.map +1 -0
  163. package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v2__factory.js +545 -0
  164. package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v3__factory.d.ts +546 -0
  165. package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v3__factory.d.ts.map +1 -0
  166. package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v3__factory.js +710 -0
  167. package/dist/typechain-types/factories/Exchange_v1__factory.d.ts +2852 -0
  168. package/dist/typechain-types/factories/Exchange_v1__factory.d.ts.map +1 -0
  169. package/dist/typechain-types/factories/Exchange_v1__factory.js +3661 -0
  170. package/dist/typechain-types/factories/Exchange_v2__factory.d.ts +2832 -0
  171. package/dist/typechain-types/factories/Exchange_v2__factory.d.ts.map +1 -0
  172. package/dist/typechain-types/factories/Exchange_v2__factory.js +3636 -0
  173. package/dist/typechain-types/factories/FixedIncomeVaultProviderStateAggregator_v1__factory.d.ts +180 -0
  174. package/dist/typechain-types/factories/FixedIncomeVaultProviderStateAggregator_v1__factory.d.ts.map +1 -0
  175. package/dist/typechain-types/factories/FixedIncomeVaultProviderStateAggregator_v1__factory.js +246 -0
  176. package/dist/typechain-types/factories/FixedIncomeVaultProvider_v1__factory.d.ts +2092 -0
  177. package/dist/typechain-types/factories/FixedIncomeVaultProvider_v1__factory.d.ts.map +1 -0
  178. package/dist/typechain-types/factories/FixedIncomeVaultProvider_v1__factory.js +2702 -0
  179. package/dist/typechain-types/factories/IOFT__factory.d.ts +352 -0
  180. package/dist/typechain-types/factories/IOFT__factory.d.ts.map +1 -0
  181. package/dist/typechain-types/factories/IOFT__factory.js +464 -0
  182. package/dist/typechain-types/factories/IRewardVault__factory.d.ts +1019 -0
  183. package/dist/typechain-types/factories/IRewardVault__factory.d.ts.map +1 -0
  184. package/dist/typechain-types/factories/IRewardVault__factory.js +1311 -0
  185. package/dist/typechain-types/factories/KumaOFTAdapterUSDC__factory.d.ts +996 -0
  186. package/dist/typechain-types/factories/KumaOFTAdapterUSDC__factory.d.ts.map +1 -0
  187. package/dist/typechain-types/factories/KumaOFTAdapterUSDC__factory.js +1306 -0
  188. package/dist/typechain-types/factories/KumaOFTUSDC__factory.d.ts +1234 -0
  189. package/dist/typechain-types/factories/KumaOFTUSDC__factory.d.ts.map +1 -0
  190. package/dist/typechain-types/factories/KumaOFTUSDC__factory.js +1619 -0
  191. package/dist/typechain-types/factories/KumaStargateForwarder_v1__factory.d.ts +354 -0
  192. package/dist/typechain-types/factories/KumaStargateForwarder_v1__factory.d.ts.map +1 -0
  193. package/dist/typechain-types/factories/KumaStargateForwarder_v1__factory.js +464 -0
  194. package/dist/typechain-types/factories/KumaStargateForwarder_v2__factory.d.ts +370 -0
  195. package/dist/typechain-types/factories/KumaStargateForwarder_v2__factory.d.ts.map +1 -0
  196. package/dist/typechain-types/factories/KumaStargateForwarder_v2__factory.js +486 -0
  197. package/dist/typechain-types/factories/ProfitShareVaultProvider_v1__factory.d.ts +1914 -0
  198. package/dist/typechain-types/factories/ProfitShareVaultProvider_v1__factory.d.ts.map +1 -0
  199. package/dist/typechain-types/factories/ProfitShareVaultProvider_v1__factory.js +2475 -0
  200. package/dist/typechain-types/factories/StargatePoolUSDC__factory.d.ts +1557 -0
  201. package/dist/typechain-types/factories/StargatePoolUSDC__factory.d.ts.map +1 -0
  202. package/dist/typechain-types/factories/StargatePoolUSDC__factory.js +2019 -0
  203. package/dist/typechain-types/factories/index.d.ts +5 -0
  204. package/dist/typechain-types/factories/index.d.ts.map +1 -0
  205. package/dist/typechain-types/factories/index.js +13 -0
  206. package/dist/typechain-types/index.d.ts +10 -0
  207. package/dist/typechain-types/index.d.ts.map +1 -0
  208. package/dist/typechain-types/index.js +15 -0
  209. package/dist/types/delegatedKeys.d.ts +44 -0
  210. package/dist/types/delegatedKeys.d.ts.map +1 -0
  211. package/dist/types/delegatedKeys.js +2 -0
  212. package/dist/types/enums/index.d.ts +4 -0
  213. package/dist/types/enums/index.d.ts.map +1 -0
  214. package/dist/types/enums/index.js +6 -0
  215. package/dist/types/enums/request.d.ts +980 -0
  216. package/dist/types/enums/request.d.ts.map +1 -0
  217. package/dist/types/enums/request.js +906 -0
  218. package/dist/types/enums/response.d.ts +329 -0
  219. package/dist/types/enums/response.d.ts.map +1 -0
  220. package/dist/types/enums/response.js +296 -0
  221. package/dist/types/enums/signature.d.ts +118 -0
  222. package/dist/types/enums/signature.d.ts.map +1 -0
  223. package/dist/types/enums/signature.js +131 -0
  224. package/dist/types/errors.d.ts +5 -0
  225. package/dist/types/errors.d.ts.map +1 -0
  226. package/dist/types/errors.js +2 -0
  227. package/dist/types/index.d.ts +9 -0
  228. package/dist/types/index.d.ts.map +1 -0
  229. package/dist/types/index.js +10 -0
  230. package/dist/types/orderBook.d.ts +72 -0
  231. package/dist/types/orderBook.d.ts.map +1 -0
  232. package/dist/types/orderBook.js +2 -0
  233. package/dist/types/rest/common/common.d.ts +118 -0
  234. package/dist/types/rest/common/common.d.ts.map +1 -0
  235. package/dist/types/rest/common/common.js +2 -0
  236. package/dist/types/rest/common/guards.d.ts +8 -0
  237. package/dist/types/rest/common/guards.d.ts.map +1 -0
  238. package/dist/types/rest/common/guards.js +14 -0
  239. package/dist/types/rest/endpoints/AssociateWallet.d.ts +40 -0
  240. package/dist/types/rest/endpoints/AssociateWallet.d.ts.map +1 -0
  241. package/dist/types/rest/endpoints/AssociateWallet.js +2 -0
  242. package/dist/types/rest/endpoints/CancelOrders.d.ts +134 -0
  243. package/dist/types/rest/endpoints/CancelOrders.d.ts.map +1 -0
  244. package/dist/types/rest/endpoints/CancelOrders.js +2 -0
  245. package/dist/types/rest/endpoints/CreateOrder.d.ts +401 -0
  246. package/dist/types/rest/endpoints/CreateOrder.d.ts.map +1 -0
  247. package/dist/types/rest/endpoints/CreateOrder.js +2 -0
  248. package/dist/types/rest/endpoints/GetAuthenticationToken.d.ts +39 -0
  249. package/dist/types/rest/endpoints/GetAuthenticationToken.d.ts.map +1 -0
  250. package/dist/types/rest/endpoints/GetAuthenticationToken.js +2 -0
  251. package/dist/types/rest/endpoints/GetCandles.d.ts +115 -0
  252. package/dist/types/rest/endpoints/GetCandles.d.ts.map +1 -0
  253. package/dist/types/rest/endpoints/GetCandles.js +2 -0
  254. package/dist/types/rest/endpoints/GetDeposits.d.ts +109 -0
  255. package/dist/types/rest/endpoints/GetDeposits.d.ts.map +1 -0
  256. package/dist/types/rest/endpoints/GetDeposits.js +2 -0
  257. package/dist/types/rest/endpoints/GetExchange.d.ts +78 -0
  258. package/dist/types/rest/endpoints/GetExchange.d.ts.map +1 -0
  259. package/dist/types/rest/endpoints/GetExchange.js +9 -0
  260. package/dist/types/rest/endpoints/GetFills.d.ts +178 -0
  261. package/dist/types/rest/endpoints/GetFills.d.ts.map +1 -0
  262. package/dist/types/rest/endpoints/GetFills.js +2 -0
  263. package/dist/types/rest/endpoints/GetFundingPayments.d.ts +52 -0
  264. package/dist/types/rest/endpoints/GetFundingPayments.d.ts.map +1 -0
  265. package/dist/types/rest/endpoints/GetFundingPayments.js +2 -0
  266. package/dist/types/rest/endpoints/GetFundingRates.d.ts +34 -0
  267. package/dist/types/rest/endpoints/GetFundingRates.d.ts.map +1 -0
  268. package/dist/types/rest/endpoints/GetFundingRates.js +2 -0
  269. package/dist/types/rest/endpoints/GetGasFees.d.ts +23 -0
  270. package/dist/types/rest/endpoints/GetGasFees.d.ts.map +1 -0
  271. package/dist/types/rest/endpoints/GetGasFees.js +2 -0
  272. package/dist/types/rest/endpoints/GetHistoricalPnL.d.ts +39 -0
  273. package/dist/types/rest/endpoints/GetHistoricalPnL.d.ts.map +1 -0
  274. package/dist/types/rest/endpoints/GetHistoricalPnL.js +2 -0
  275. package/dist/types/rest/endpoints/GetInitialMarginFractionOverride.d.ts +31 -0
  276. package/dist/types/rest/endpoints/GetInitialMarginFractionOverride.d.ts.map +1 -0
  277. package/dist/types/rest/endpoints/GetInitialMarginFractionOverride.js +2 -0
  278. package/dist/types/rest/endpoints/GetLiquidations.d.ts +52 -0
  279. package/dist/types/rest/endpoints/GetLiquidations.d.ts.map +1 -0
  280. package/dist/types/rest/endpoints/GetLiquidations.js +2 -0
  281. package/dist/types/rest/endpoints/GetMarketMakerRewardsEpochs.d.ts +534 -0
  282. package/dist/types/rest/endpoints/GetMarketMakerRewardsEpochs.d.ts.map +1 -0
  283. package/dist/types/rest/endpoints/GetMarketMakerRewardsEpochs.js +2 -0
  284. package/dist/types/rest/endpoints/GetMarkets.d.ts +161 -0
  285. package/dist/types/rest/endpoints/GetMarkets.d.ts.map +1 -0
  286. package/dist/types/rest/endpoints/GetMarkets.js +2 -0
  287. package/dist/types/rest/endpoints/GetOrderBook.d.ts +176 -0
  288. package/dist/types/rest/endpoints/GetOrderBook.d.ts.map +1 -0
  289. package/dist/types/rest/endpoints/GetOrderBook.js +2 -0
  290. package/dist/types/rest/endpoints/GetOrders.d.ts +188 -0
  291. package/dist/types/rest/endpoints/GetOrders.d.ts.map +1 -0
  292. package/dist/types/rest/endpoints/GetOrders.js +2 -0
  293. package/dist/types/rest/endpoints/GetPing.d.ts +8 -0
  294. package/dist/types/rest/endpoints/GetPing.d.ts.map +1 -0
  295. package/dist/types/rest/endpoints/GetPing.js +2 -0
  296. package/dist/types/rest/endpoints/GetPositions.d.ts +104 -0
  297. package/dist/types/rest/endpoints/GetPositions.d.ts.map +1 -0
  298. package/dist/types/rest/endpoints/GetPositions.js +2 -0
  299. package/dist/types/rest/endpoints/GetTickers.d.ts +129 -0
  300. package/dist/types/rest/endpoints/GetTickers.d.ts.map +1 -0
  301. package/dist/types/rest/endpoints/GetTickers.js +2 -0
  302. package/dist/types/rest/endpoints/GetTime.d.ts +14 -0
  303. package/dist/types/rest/endpoints/GetTime.d.ts.map +1 -0
  304. package/dist/types/rest/endpoints/GetTime.js +2 -0
  305. package/dist/types/rest/endpoints/GetTrades.d.ts +62 -0
  306. package/dist/types/rest/endpoints/GetTrades.d.ts.map +1 -0
  307. package/dist/types/rest/endpoints/GetTrades.js +2 -0
  308. package/dist/types/rest/endpoints/GetWallets.d.ts +121 -0
  309. package/dist/types/rest/endpoints/GetWallets.d.ts.map +1 -0
  310. package/dist/types/rest/endpoints/GetWallets.js +2 -0
  311. package/dist/types/rest/endpoints/GetWithdrawals.d.ts +98 -0
  312. package/dist/types/rest/endpoints/GetWithdrawals.d.ts.map +1 -0
  313. package/dist/types/rest/endpoints/GetWithdrawals.js +2 -0
  314. package/dist/types/rest/endpoints/GetWithdrawalsFromManagedAccount.d.ts +98 -0
  315. package/dist/types/rest/endpoints/GetWithdrawalsFromManagedAccount.d.ts.map +1 -0
  316. package/dist/types/rest/endpoints/GetWithdrawalsFromManagedAccount.js +2 -0
  317. package/dist/types/rest/endpoints/Payouts.d.ts +199 -0
  318. package/dist/types/rest/endpoints/Payouts.d.ts.map +1 -0
  319. package/dist/types/rest/endpoints/Payouts.js +2 -0
  320. package/dist/types/rest/endpoints/SetInitialMarginFractionOverride.d.ts +83 -0
  321. package/dist/types/rest/endpoints/SetInitialMarginFractionOverride.d.ts.map +1 -0
  322. package/dist/types/rest/endpoints/SetInitialMarginFractionOverride.js +2 -0
  323. package/dist/types/rest/endpoints/WithdrawFunds.d.ts +144 -0
  324. package/dist/types/rest/endpoints/WithdrawFunds.d.ts.map +1 -0
  325. package/dist/types/rest/endpoints/WithdrawFunds.js +2 -0
  326. package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByQuantity.d.ts +161 -0
  327. package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByQuantity.d.ts.map +1 -0
  328. package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByQuantity.js +2 -0
  329. package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByShares.d.ts +160 -0
  330. package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByShares.d.ts.map +1 -0
  331. package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByShares.js +2 -0
  332. package/dist/types/rest/endpoints/index.d.ts +33 -0
  333. package/dist/types/rest/endpoints/index.d.ts.map +1 -0
  334. package/dist/types/rest/endpoints/index.js +35 -0
  335. package/dist/types/rest/endpoints/internal.d.ts +329 -0
  336. package/dist/types/rest/endpoints/internal.d.ts.map +1 -0
  337. package/dist/types/rest/endpoints/internal.js +14 -0
  338. package/dist/types/rest/index.d.ts +4 -0
  339. package/dist/types/rest/index.d.ts.map +1 -0
  340. package/dist/types/rest/index.js +6 -0
  341. package/dist/types/swaps.d.ts +11 -0
  342. package/dist/types/swaps.d.ts.map +1 -0
  343. package/dist/types/swaps.js +2 -0
  344. package/dist/types/utils.d.ts +67 -0
  345. package/dist/types/utils.d.ts.map +1 -0
  346. package/dist/types/utils.js +3 -0
  347. package/dist/types/webSocket/base.d.ts +83 -0
  348. package/dist/types/webSocket/base.d.ts.map +1 -0
  349. package/dist/types/webSocket/base.js +2 -0
  350. package/dist/types/webSocket/constants.d.ts +41 -0
  351. package/dist/types/webSocket/constants.d.ts.map +1 -0
  352. package/dist/types/webSocket/constants.js +54 -0
  353. package/dist/types/webSocket/index.d.ts +6 -0
  354. package/dist/types/webSocket/index.d.ts.map +1 -0
  355. package/dist/types/webSocket/index.js +8 -0
  356. package/dist/types/webSocket/options.d.ts +276 -0
  357. package/dist/types/webSocket/options.d.ts.map +1 -0
  358. package/dist/types/webSocket/options.js +2 -0
  359. package/dist/types/webSocket/request/index.d.ts +3 -0
  360. package/dist/types/webSocket/request/index.d.ts.map +1 -0
  361. package/dist/types/webSocket/request/index.js +5 -0
  362. package/dist/types/webSocket/request/request.d.ts +137 -0
  363. package/dist/types/webSocket/request/request.d.ts.map +1 -0
  364. package/dist/types/webSocket/request/request.js +2 -0
  365. package/dist/types/webSocket/request/subscriptions.d.ts +498 -0
  366. package/dist/types/webSocket/request/subscriptions.d.ts.map +1 -0
  367. package/dist/types/webSocket/request/subscriptions.js +2 -0
  368. package/dist/types/webSocket/response/candles.d.ts +138 -0
  369. package/dist/types/webSocket/response/candles.d.ts.map +1 -0
  370. package/dist/types/webSocket/response/candles.js +2 -0
  371. package/dist/types/webSocket/response/deposits.d.ts +80 -0
  372. package/dist/types/webSocket/response/deposits.d.ts.map +1 -0
  373. package/dist/types/webSocket/response/deposits.js +2 -0
  374. package/dist/types/webSocket/response/fundingPayments.d.ts +78 -0
  375. package/dist/types/webSocket/response/fundingPayments.d.ts.map +1 -0
  376. package/dist/types/webSocket/response/fundingPayments.js +2 -0
  377. package/dist/types/webSocket/response/index.d.ts +13 -0
  378. package/dist/types/webSocket/response/index.d.ts.map +1 -0
  379. package/dist/types/webSocket/response/index.js +15 -0
  380. package/dist/types/webSocket/response/liquidations.d.ts +78 -0
  381. package/dist/types/webSocket/response/liquidations.d.ts.map +1 -0
  382. package/dist/types/webSocket/response/liquidations.js +2 -0
  383. package/dist/types/webSocket/response/orderbook.d.ts +214 -0
  384. package/dist/types/webSocket/response/orderbook.d.ts.map +1 -0
  385. package/dist/types/webSocket/response/orderbook.js +2 -0
  386. package/dist/types/webSocket/response/orders.d.ts +355 -0
  387. package/dist/types/webSocket/response/orders.d.ts.map +1 -0
  388. package/dist/types/webSocket/response/orders.js +2 -0
  389. package/dist/types/webSocket/response/ordersFill.d.ts +138 -0
  390. package/dist/types/webSocket/response/ordersFill.d.ts.map +1 -0
  391. package/dist/types/webSocket/response/ordersFill.js +2 -0
  392. package/dist/types/webSocket/response/positions.d.ts +120 -0
  393. package/dist/types/webSocket/response/positions.d.ts.map +1 -0
  394. package/dist/types/webSocket/response/positions.js +2 -0
  395. package/dist/types/webSocket/response/tickers.d.ts +131 -0
  396. package/dist/types/webSocket/response/tickers.d.ts.map +1 -0
  397. package/dist/types/webSocket/response/tickers.js +2 -0
  398. package/dist/types/webSocket/response/trades.d.ts +90 -0
  399. package/dist/types/webSocket/response/trades.d.ts.map +1 -0
  400. package/dist/types/webSocket/response/trades.js +2 -0
  401. package/dist/types/webSocket/response/webclient/base.d.ts +24 -0
  402. package/dist/types/webSocket/response/webclient/base.d.ts.map +1 -0
  403. package/dist/types/webSocket/response/webclient/base.js +2 -0
  404. package/dist/types/webSocket/response/webclient/events/exchangeStatus.d.ts +31 -0
  405. package/dist/types/webSocket/response/webclient/events/exchangeStatus.d.ts.map +1 -0
  406. package/dist/types/webSocket/response/webclient/events/exchangeStatus.js +2 -0
  407. package/dist/types/webSocket/response/webclient/events/index.d.ts +4 -0
  408. package/dist/types/webSocket/response/webclient/events/index.d.ts.map +1 -0
  409. package/dist/types/webSocket/response/webclient/events/index.js +6 -0
  410. package/dist/types/webSocket/response/webclient/events/reloadBanners.d.ts +17 -0
  411. package/dist/types/webSocket/response/webclient/events/reloadBanners.d.ts.map +1 -0
  412. package/dist/types/webSocket/response/webclient/events/reloadBanners.js +2 -0
  413. package/dist/types/webSocket/response/webclient/events/transactionSettled.d.ts +76 -0
  414. package/dist/types/webSocket/response/webclient/events/transactionSettled.d.ts.map +1 -0
  415. package/dist/types/webSocket/response/webclient/events/transactionSettled.js +2 -0
  416. package/dist/types/webSocket/response/webclient/index.d.ts +3 -0
  417. package/dist/types/webSocket/response/webclient/index.d.ts.map +1 -0
  418. package/dist/types/webSocket/response/webclient/index.js +5 -0
  419. package/dist/types/webSocket/response/webclient/webclient.d.ts +13 -0
  420. package/dist/types/webSocket/response/webclient/webclient.d.ts.map +1 -0
  421. package/dist/types/webSocket/response/webclient/webclient.js +2 -0
  422. package/dist/types/webSocket/response/withdrawals.d.ts +83 -0
  423. package/dist/types/webSocket/response/withdrawals.d.ts.map +1 -0
  424. package/dist/types/webSocket/response/withdrawals.js +2 -0
  425. package/dist/utils.d.ts +63 -0
  426. package/dist/utils.d.ts.map +1 -0
  427. package/dist/utils.js +136 -0
  428. package/package.json +200 -0
@@ -0,0 +1,344 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrderBookRealTimeClient = void 0;
4
+ const events_1 = require("events");
5
+ const _pipmath_1 = require("#pipmath");
6
+ const _utils_1 = require("#utils");
7
+ const utils_1 = require("#client/orderBook/utils");
8
+ const public_1 = require("#client/rest/public");
9
+ const index_1 = require("#client/webSocket/index");
10
+ const apiConversions_1 = require("#orderbook/apiConversions");
11
+ const quantities_1 = require("#orderbook/quantities");
12
+ const utils_2 = require("#orderbook/utils");
13
+ const index_2 = require("#types/enums/index");
14
+ /**
15
+ * Orderbook API client
16
+ *
17
+ * @see typedoc [Reference Documentation](https://sdk-js-docs-v1-perps.katana.network/classes/OrderBookRealTimeClient.html)
18
+ * @see options {@link OrderBookRealTimeClientOptions}
19
+ * @see events {@link OrderBookRealTimeClientEvent}
20
+ *
21
+ * @category API Clients
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * import {
26
+ * OrderBookRealTimeClient,
27
+ * OrderBookRealTimeClientEvent,
28
+ * type L2OrderBook
29
+ * } from '@katanaperps/katana-perps-sdk';
30
+ *
31
+ * // type is just to show it will match the form string-string.
32
+ * // actual type will be typed as string
33
+ * type MarketSymbol = `${string}-${string}`;
34
+ *
35
+ * const LIMIT = 10;
36
+ * const MARKETS: MarketSymbol[] = ['BTC-USD'];
37
+ *
38
+ * const client = new OrderBookRealTimeClient({
39
+ * sandbox: true,
40
+ * });
41
+ *
42
+ * client.start(MARKETS);
43
+ *
44
+ * const orderbooksMap = new Map<MarketSymbol, L2OrderBook>()
45
+ *
46
+ * async function handleOrderBookLevel2(market: MarketSymbol) {
47
+ * const levelTwoOrderBook = await client.getOrderBookL2(market, LIMIT);
48
+ *
49
+ * orderbooksMap.set(market, levelTwoOrderBook)
50
+ *
51
+ * console.log('Updated OrderBook for market: ', market, levelTwoOrderBook);
52
+ * }
53
+ *
54
+ * client.on(OrderBookRealTimeClientEvent.ready, () => {
55
+ * MARKETS.forEach(market => {
56
+ * handleOrderBookLevel2(market)
57
+ * })
58
+ * });
59
+ *
60
+ * client.on(OrderBookRealTimeClientEvent.l2, handleOrderBookLevel2);
61
+ * ```
62
+ */
63
+ class OrderBookRealTimeClient extends events_1.EventEmitter {
64
+ l1OrderBooks = new Map();
65
+ l2OrderBooks = new Map();
66
+ l2OrderBookUpdates = new Map();
67
+ markets = [];
68
+ marketsByAssetSymbol = new Map();
69
+ /**
70
+ * When creating an {@link OrderBookRealTimeClient}, a public client is automatically
71
+ * created and can be used based to make additional public requests if needed.
72
+ *
73
+ * - Can be utilized to fetch public data instead of creating both clients.
74
+ *
75
+ * @category Accessors
76
+ */
77
+ public;
78
+ marketsResponse = undefined;
79
+ isTickSizesLoaded = false;
80
+ tickSizesByMarket = new Map();
81
+ webSocketClient;
82
+ webSocketConnectionListenersConfigured = false;
83
+ webSocketResponseListenerConfigured = false;
84
+ /**
85
+ * @see typedoc [Reference Documentation](https://sdk-js-docs-v1-perps.katana.network/classes/OrderBookRealTimeClient.html)
86
+ *
87
+ * @category Constructor
88
+ */
89
+ constructor(options = {}) {
90
+ super();
91
+ const { sandbox = false } = options;
92
+ this.marketsResponse = options.marketsResponse;
93
+ this.public = new public_1.RestPublicClient({
94
+ sandbox,
95
+ apiKey: options.apiKey,
96
+ baseURL: options.baseRestApiURL,
97
+ });
98
+ // monitor realtime client
99
+ this.public[_utils_1.INTERNAL_SYMBOL].realtime();
100
+ this.webSocketClient = new index_1.WebSocketClient({
101
+ sandbox,
102
+ baseRestApiURL: options.baseRestApiURL,
103
+ baseWebSocketURL: options.baseWebSocketURL,
104
+ });
105
+ }
106
+ /**
107
+ * Loads initial state from REST API and begin listening to orderbook updates.
108
+ *
109
+ * @see typedoc [Reference Documentation](https://sdk-js-docs-v1-perps.katana.network/classes/OrderBookRealTimeClient.html#start)
110
+ *
111
+ * @category Connection Management
112
+ */
113
+ async start(markets, marketsResponse) {
114
+ this.markets = markets;
115
+ if (marketsResponse) {
116
+ this.marketsResponse = marketsResponse;
117
+ }
118
+ this.mapTokensToMarkets();
119
+ this.setupInternalWebSocket();
120
+ await this.webSocketClient.connect(true);
121
+ }
122
+ /**
123
+ * Stop the order book client, and reset internal state.
124
+ * Call this when you are no longer using the client, to release memory and network resources.
125
+ *
126
+ * @see typedoc [Reference Documentation](https://sdk-js-docs-v1-perps.katana.network/classes/OrderBookRealTimeClient.html#stop)
127
+ *
128
+ * @category Connection Management
129
+ */
130
+ stop() {
131
+ if (this.webSocketClient.isConnected) {
132
+ this.unsubscribe();
133
+ this.webSocketClient.disconnect();
134
+ }
135
+ this.resetInternalState(true);
136
+ }
137
+ async getMaximumTickSizeUnderSpread(market) {
138
+ const { bids } = await this.getOrderBookL2(market, 1000);
139
+ const minBidPrice = bids.length > 0 && bids[bids.length - 1][0];
140
+ const numDigits = minBidPrice ?
141
+ (0, _pipmath_1.decimalToPip)(minBidPrice).toString().length
142
+ : _pipmath_1.exchangeDecimals;
143
+ return BigInt(10 ** (Math.min(numDigits, _pipmath_1.exchangeDecimals) - 1));
144
+ }
145
+ /**
146
+ * Load the current state of the level 1 orderbook for this market.
147
+ *
148
+ * @param tickSize
149
+ * Minimum price movement expressed in pips (10^-8), defaults to market setting
150
+ *
151
+ * @see typedoc [Reference Documentation](https://sdk-js-docs-v1-perps.katana.network/classes/OrderBookRealTimeClient.html#getOrderBookL1)
152
+ * @see response {@link RestResponseGetOrderBookLevel1}
153
+ *
154
+ * @category Requests
155
+ */
156
+ async getOrderBookL1(market, tickSize) {
157
+ return (0, apiConversions_1.L1OrderBookToRestResponse)((await this.getOrderBooks(market, tickSize)).l1);
158
+ }
159
+ /**
160
+ * Load the current state of the level 2 orderbook for this market.
161
+ *
162
+ * @param limit
163
+ * Total number of price levels (bids + asks) to return
164
+ * - Between 2 and 1000
165
+ * - Defaults to `100`
166
+ * @param tickSize
167
+ * Minimum price movement expressed in pips (10^-8), defaults to market setting
168
+ *
169
+ * @see typedoc [Reference Documentation](https://sdk-js-docs-v1-perps.katana.network/classes/OrderBookRealTimeClient.html#getOrderBookL2)
170
+ * @see response {@link RestResponseGetOrderBookLevel2}
171
+ *
172
+ * @category Requests
173
+ */
174
+ async getOrderBookL2(market, limit, tickSize) {
175
+ return (0, apiConversions_1.L2OrderBookToRestResponse)((await this.getOrderBooks(market, tickSize)).l2, limit ?? 100);
176
+ }
177
+ async getOrderBooks(market, tickSize) {
178
+ const appliedTickSize = tickSize || this.tickSizesByMarket.get(market) || BigInt(1);
179
+ const l2 = (0, quantities_1.aggregateL2OrderBookAtTickSize)(await this.loadLevel2(market), appliedTickSize);
180
+ return { l1: (0, utils_2.L2toL1OrderBook)(l2), l2 };
181
+ }
182
+ async applyOrderBookUpdates(market) {
183
+ const updates = this.l2OrderBookUpdates.get(market);
184
+ if (!updates) {
185
+ return;
186
+ }
187
+ const book = this.l2OrderBooks.get(market);
188
+ // If this market has not yet been synchronized from the REST API, then halt processing -
189
+ // messages for the market will queue and proccess after it runs
190
+ if (!book) {
191
+ return;
192
+ }
193
+ const beforeL1 = (0, utils_2.L2toL1OrderBook)(book);
194
+ for (const update of updates) {
195
+ // outdated sequence, ignore
196
+ if (book.sequence >= update.sequence) {
197
+ // eslint-disable-next-line no-continue
198
+ continue;
199
+ }
200
+ // an expected next update has arrived
201
+ else if (book.sequence + 1 === update.sequence) {
202
+ (0, utils_1.updateL2Levels)(book, update);
203
+ }
204
+ else {
205
+ // If an invalid update arrives, reset all data and synchronize anew
206
+ this.emit(index_2.OrderBookRealTimeClientEvent.disconnected);
207
+ this.emit(index_2.OrderBookRealTimeClientEvent.error, new Error(`Missing l2 update sequence, current book is ${book.sequence} message was ${update.sequence}, awaiting ${update.sequence - book.sequence} updates from REST API...`));
208
+ // this.unsubscribe();
209
+ this.resetInternalState();
210
+ // this.subscribe();
211
+ // eslint-disable-next-line no-await-in-loop
212
+ await this.synchronizeFromRestApi();
213
+ this.emit(index_2.OrderBookRealTimeClientEvent.connected);
214
+ return;
215
+ }
216
+ }
217
+ const afterL1 = (0, utils_2.L2toL1OrderBook)(book);
218
+ this.l1OrderBooks.set(market, (0, utils_2.L2toL1OrderBook)(book));
219
+ if (!(0, utils_1.L1Equal)(beforeL1, afterL1)) {
220
+ this.emit(index_2.OrderBookRealTimeClientEvent.l1, market);
221
+ }
222
+ this.emit(index_2.OrderBookRealTimeClientEvent.l2, market);
223
+ this.l2OrderBookUpdates.delete(market);
224
+ }
225
+ async synchronizeFromRestApi() {
226
+ let reconnectAttempt = 0;
227
+ // Updates cannot be applied until successfully synchronized with the REST API, so keep trying
228
+ // with exponential backoff until success
229
+ // eslint-disable-next-line no-constant-condition
230
+ while (true) {
231
+ const backoffSeconds = 2 ** reconnectAttempt;
232
+ reconnectAttempt += 1;
233
+ try {
234
+ // Load minimums and token prices first so synthetic orderbook calculations are accurate
235
+ // eslint-disable-next-line no-await-in-loop
236
+ await this.loadTickSizes();
237
+ // eslint-disable-next-line no-await-in-loop
238
+ await Promise.all([
239
+ ...this.markets.map(async (market) => {
240
+ await this.loadLevel2(market);
241
+ this.emit(index_2.OrderBookRealTimeClientEvent.ready, market);
242
+ }),
243
+ ]);
244
+ return;
245
+ }
246
+ catch (error) {
247
+ this.emit(index_2.OrderBookRealTimeClientEvent.error, error);
248
+ // eslint-disable-next-line no-await-in-loop
249
+ await sleep(backoffSeconds * 1000);
250
+ }
251
+ }
252
+ }
253
+ async loadLevel2(market) {
254
+ let l2 = this.l2OrderBooks.get(market);
255
+ if (!l2) {
256
+ this.emit(index_2.OrderBookRealTimeClientEvent.sync, market);
257
+ l2 = (0, apiConversions_1.restResponseToL2OrderBook)(await this.public.getOrderBookLevel2({
258
+ market,
259
+ limit: 1000,
260
+ }));
261
+ }
262
+ this.l2OrderBooks.set(market, l2);
263
+ return l2;
264
+ }
265
+ async loadTickSizes() {
266
+ // Market tick sizes only need to be loaded once as they are effectively static
267
+ if (this.isTickSizesLoaded) {
268
+ return;
269
+ }
270
+ this.marketsResponse =
271
+ this.marketsResponse ?? (await this.public.getMarkets());
272
+ for (const market of this.marketsResponse) {
273
+ this.tickSizesByMarket.set(market.market, (0, _pipmath_1.decimalToPip)(market.tickSize));
274
+ }
275
+ this.isTickSizesLoaded = true;
276
+ }
277
+ mapTokensToMarkets() {
278
+ for (const market of this.markets) {
279
+ const [baseSymbol, quoteSymbol] = market.split('-');
280
+ const marketsByBase = this.marketsByAssetSymbol.get(baseSymbol) || new Set();
281
+ marketsByBase.add(market);
282
+ this.marketsByAssetSymbol.set(baseSymbol, marketsByBase);
283
+ const marketsByQuote = this.marketsByAssetSymbol.get(quoteSymbol) || new Set();
284
+ marketsByQuote.add(market);
285
+ this.marketsByAssetSymbol.set(quoteSymbol, marketsByQuote);
286
+ }
287
+ }
288
+ resetInternalState(includeUpdates = false) {
289
+ this.l1OrderBooks.clear();
290
+ this.l2OrderBooks.clear();
291
+ if (includeUpdates) {
292
+ this.l2OrderBookUpdates.clear();
293
+ }
294
+ //
295
+ }
296
+ /* Connection management */
297
+ setupInternalWebSocket() {
298
+ if (!this.webSocketConnectionListenersConfigured) {
299
+ this.webSocketClient.onConnect(this.webSocketHandleConnect.bind(this));
300
+ this.webSocketClient.onDisconnect(this.webSocketHandleDisconnect.bind(this));
301
+ this.webSocketClient.onError(this.webSocketHandleError.bind(this));
302
+ this.webSocketConnectionListenersConfigured = true;
303
+ }
304
+ }
305
+ subscribe() {
306
+ this.webSocketClient.subscribePublic([{ name: index_2.SubscriptionNamePublic.l2orderbook }], this.markets);
307
+ }
308
+ unsubscribe() {
309
+ this.webSocketClient.unsubscribe([index_2.SubscriptionNamePublic.l2orderbook]);
310
+ }
311
+ /* Event handlers */
312
+ async webSocketHandleConnect() {
313
+ if (!this.webSocketResponseListenerConfigured) {
314
+ this.webSocketClient.onMessage(this.webSocketHandleResponse.bind(this));
315
+ this.webSocketResponseListenerConfigured = true;
316
+ }
317
+ this.subscribe();
318
+ await this.synchronizeFromRestApi();
319
+ this.emit(index_2.OrderBookRealTimeClientEvent.connected);
320
+ }
321
+ webSocketHandleDisconnect() {
322
+ // Assume messages will be lost during disconnection and clear state. State will be re-synchronized again on reconnect
323
+ this.resetInternalState(true);
324
+ this.emit(index_2.OrderBookRealTimeClientEvent.disconnected);
325
+ }
326
+ webSocketHandleError(error) {
327
+ this.emit(index_2.OrderBookRealTimeClientEvent.error, error instanceof Error ? error : error.error);
328
+ }
329
+ async webSocketHandleResponse(response) {
330
+ if (response.type === index_2.MessageEventType.l2orderbook) {
331
+ // accumulate L2 updates to be applied
332
+ const updatesToApply = this.l2OrderBookUpdates.get(response.data.market) || [];
333
+ updatesToApply.push((0, apiConversions_1.webSocketResponseToL2OrderBook)(response.data));
334
+ this.l2OrderBookUpdates.set(response.data.market, updatesToApply);
335
+ await this.applyOrderBookUpdates(response.data.market);
336
+ }
337
+ }
338
+ }
339
+ exports.OrderBookRealTimeClient = OrderBookRealTimeClient;
340
+ function sleep(ms) {
341
+ return new Promise((resolve) => {
342
+ setTimeout(resolve, ms);
343
+ });
344
+ }
@@ -0,0 +1,15 @@
1
+ import type { L1OrderBook, L2OrderBook } from '#types/orderBook';
2
+ /**
3
+ * Determine whether two level 1 order books are equal
4
+ */
5
+ export declare function L1Equal(beforeL1: L1OrderBook, afterL1: L1OrderBook): boolean;
6
+ /**
7
+ * Updates a level 2 orderbook using a partial "diff" received over websockets
8
+ *
9
+ * @param updatedLevels
10
+ * - level 2 orderbook containing only limit order price levels that have changed
11
+ *
12
+ * @returns orderbook is updated in-place
13
+ */
14
+ export declare function updateL2Levels(book: L2OrderBook, updatedLevels: L2OrderBook): void;
15
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/client/orderBook/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAEZ,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAS5E;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,WAAW,EACjB,aAAa,EAAE,WAAW,GACzB,IAAI,CAMN"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateL2Levels = exports.L1Equal = void 0;
4
+ /**
5
+ * Determine whether two level 1 order books are equal
6
+ */
7
+ function L1Equal(beforeL1, afterL1) {
8
+ return (beforeL1.asks.price === afterL1.asks.price &&
9
+ beforeL1.bids.price === afterL1.bids.price &&
10
+ beforeL1.asks.size === afterL1.asks.size &&
11
+ beforeL1.bids.size === afterL1.bids.size &&
12
+ beforeL1.asks.numOrders === afterL1.asks.numOrders &&
13
+ beforeL1.bids.numOrders === afterL1.bids.numOrders);
14
+ }
15
+ exports.L1Equal = L1Equal;
16
+ /**
17
+ * Updates a level 2 orderbook using a partial "diff" received over websockets
18
+ *
19
+ * @param updatedLevels
20
+ * - level 2 orderbook containing only limit order price levels that have changed
21
+ *
22
+ * @returns orderbook is updated in-place
23
+ */
24
+ function updateL2Levels(book, updatedLevels) {
25
+ /* eslint-disable no-param-reassign */
26
+ book.sequence = updatedLevels.sequence;
27
+ book.asks = updateL2Side(true, book.asks, updatedLevels.asks);
28
+ book.bids = updateL2Side(false, book.bids, updatedLevels.bids);
29
+ /* eslint-enable no-param-reassign */
30
+ }
31
+ exports.updateL2Levels = updateL2Levels;
32
+ function isBeforeOrEqual(isAscending, a, b) {
33
+ if (isAscending && a.price <= b.price) {
34
+ return true;
35
+ }
36
+ if (!isAscending && a.price >= b.price) {
37
+ return true;
38
+ }
39
+ return false;
40
+ }
41
+ /**
42
+ * Applies a changeset to a single side of the orderbook
43
+ *
44
+ * @param {boolean} isAscending
45
+ * `true` for asks, `false` for bids (ordering of price levels)
46
+ */
47
+ function updateL2Side(isAscending, side, updates) {
48
+ let nextUpdate = updates.shift();
49
+ if (!nextUpdate) {
50
+ return side;
51
+ }
52
+ let lastPriceUpdated = BigInt(0);
53
+ const newLevels = [];
54
+ for (const level of side) {
55
+ // push all updated price levels prior to the existing level
56
+ // skip any with no size, and no orders
57
+ while (nextUpdate && isBeforeOrEqual(isAscending, nextUpdate, level)) {
58
+ if (nextUpdate.size > BigInt(0) && nextUpdate.numOrders > BigInt(0)) {
59
+ newLevels.push(nextUpdate);
60
+ }
61
+ lastPriceUpdated = nextUpdate.price;
62
+ nextUpdate = updates.shift();
63
+ }
64
+ // if the current level was not already updated, add it
65
+ if (level.price !== lastPriceUpdated) {
66
+ newLevels.push(level);
67
+ }
68
+ }
69
+ // add all updates that go beyond the current end of the book
70
+ while (nextUpdate &&
71
+ nextUpdate.size > BigInt(0) &&
72
+ nextUpdate.numOrders > BigInt(0)) {
73
+ newLevels.push(nextUpdate);
74
+ nextUpdate = updates.shift();
75
+ }
76
+ return newLevels;
77
+ }