@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,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const chai = tslib_1.__importStar(require("chai"));
5
+ const _pipmath_1 = require("#pipmath");
6
+ const orderbook = tslib_1.__importStar(require("#orderbook/index"));
7
+ const { expect } = chai;
8
+ function makeAPosition(marketSymbol, quantity) {
9
+ // All empty values are not used by the function under test
10
+ return {
11
+ market: marketSymbol,
12
+ quantity: (0, _pipmath_1.pipToDecimal)((0, _pipmath_1.decimalToPip)(quantity)),
13
+ maximumQuantity: '',
14
+ entryPrice: '',
15
+ exitPrice: '',
16
+ markPrice: '',
17
+ indexPrice: '1',
18
+ liquidationPrice: '',
19
+ value: '',
20
+ realizedPnL: '',
21
+ unrealizedPnL: '',
22
+ marginRequirement: '',
23
+ leverage: '',
24
+ totalFunding: '',
25
+ totalOpen: '',
26
+ totalClose: '',
27
+ adlQuintile: 0,
28
+ openedByFillId: '',
29
+ lastFillId: '',
30
+ time: 0,
31
+ };
32
+ }
33
+ function makeAStandingOrder(args) {
34
+ return {
35
+ market: args.marketSymbol,
36
+ side: args.side,
37
+ originalQuantity: (0, _pipmath_1.pipToDecimal)((0, _pipmath_1.decimalToPip)(args.quantity)),
38
+ executedQuantity: (0, _pipmath_1.pipToDecimal)(BigInt(0)),
39
+ price: (0, _pipmath_1.pipToDecimal)((0, _pipmath_1.decimalToPip)(args.price)),
40
+ };
41
+ }
42
+ describe('orderbook/quantities', () => {
43
+ describe('determineMaximumReduceOnlyQuantityAvailableAtPriceLevel', () => {
44
+ const fooMarketSymbol = 'FOO-USD';
45
+ const makeOrder = (side, price, marketSymbol = fooMarketSymbol) => makeAStandingOrder({
46
+ marketSymbol,
47
+ side,
48
+ quantity: '1',
49
+ price,
50
+ });
51
+ it('should succeed for a long position and sell orders', () => {
52
+ const runScenario = (limitPrice, expectedQtyAvailable) => expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
53
+ limitPrice: (0, _pipmath_1.decimalToPip)(limitPrice),
54
+ position: makeAPosition(fooMarketSymbol, '3'),
55
+ orderSide: 'sell',
56
+ walletsStandingOrders: [
57
+ makeOrder('sell', '10'),
58
+ makeOrder('sell', '11'),
59
+ makeOrder('sell', '12'),
60
+ ],
61
+ })).to.eql((0, _pipmath_1.decimalToPip)(expectedQtyAvailable));
62
+ runScenario('9', '3');
63
+ runScenario('10', '2');
64
+ runScenario('11', '1');
65
+ runScenario('12', '0');
66
+ runScenario('13', '0');
67
+ });
68
+ it('should succeed for a short position and buy orders', () => {
69
+ const runScenario = (limitPrice, expectedQtyAvailable) => expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
70
+ limitPrice: (0, _pipmath_1.decimalToPip)(limitPrice),
71
+ position: makeAPosition(fooMarketSymbol, '-3'),
72
+ orderSide: 'buy',
73
+ walletsStandingOrders: [
74
+ makeOrder('buy', '10'),
75
+ makeOrder('buy', '9'),
76
+ makeOrder('buy', '8'),
77
+ ],
78
+ })).to.eql((0, _pipmath_1.decimalToPip)(expectedQtyAvailable));
79
+ runScenario('11', '3');
80
+ runScenario('10', '2');
81
+ runScenario('9', '1');
82
+ runScenario('8', '0');
83
+ runScenario('7', '0');
84
+ });
85
+ it('should ignore orders in other markets or on the other side of the book (long position)', () => {
86
+ expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
87
+ limitPrice: (0, _pipmath_1.decimalToPip)('1'),
88
+ position: makeAPosition(fooMarketSymbol, '3'),
89
+ orderSide: 'sell',
90
+ walletsStandingOrders: [
91
+ makeOrder('buy', '1'), // Wrong side
92
+ makeOrder('sell', '1', 'BAR-USD'), // Wrong market
93
+ ],
94
+ })).to.eql((0, _pipmath_1.decimalToPip)('3'));
95
+ });
96
+ it('should ignore orders in other markets or on the other side of the book (short position)', () => {
97
+ expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
98
+ limitPrice: (0, _pipmath_1.decimalToPip)('1'),
99
+ position: makeAPosition(fooMarketSymbol, '-3'),
100
+ orderSide: 'buy',
101
+ walletsStandingOrders: [
102
+ makeOrder('sell', '1'), // Wrong side
103
+ makeOrder('buy', '1', 'BAR-USD'), // Wrong market
104
+ ],
105
+ })).to.eql((0, _pipmath_1.decimalToPip)('3'));
106
+ });
107
+ it('should return zero for a long position and a buy order', () => {
108
+ expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
109
+ limitPrice: (0, _pipmath_1.decimalToPip)('123'),
110
+ position: makeAPosition(fooMarketSymbol, '123'),
111
+ orderSide: 'buy',
112
+ walletsStandingOrders: [],
113
+ })).to.eql(BigInt(0));
114
+ });
115
+ it('should return zero for a short position and a sell order', () => {
116
+ expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
117
+ limitPrice: (0, _pipmath_1.decimalToPip)('123'),
118
+ position: makeAPosition(fooMarketSymbol, '-123'),
119
+ orderSide: 'sell',
120
+ walletsStandingOrders: [],
121
+ })).to.eql(BigInt(0));
122
+ });
123
+ it('should return zero for a closed position', () => {
124
+ expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
125
+ limitPrice: (0, _pipmath_1.decimalToPip)('123'),
126
+ position: makeAPosition(fooMarketSymbol, '0'),
127
+ orderSide: 'buy',
128
+ walletsStandingOrders: [],
129
+ })).to.eql(BigInt(0));
130
+ expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
131
+ limitPrice: (0, _pipmath_1.decimalToPip)('123'),
132
+ position: makeAPosition(fooMarketSymbol, '0'),
133
+ orderSide: 'sell',
134
+ walletsStandingOrders: [],
135
+ })).to.eql(BigInt(0));
136
+ });
137
+ });
138
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=quantities.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quantities.test.d.ts","sourceRoot":"","sources":["../../../src/tests/orderbook/quantities.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const _pipmath_1 = require("#pipmath");
5
+ const orderbook = tslib_1.__importStar(require("#orderbook/index"));
6
+ const testHelpers = tslib_1.__importStar(require("#tests/testHelpers"));
7
+ const request_1 = require("#types/enums/request");
8
+ describe('orderbook/quantities', () => {
9
+ describe('calculateGrossFillQuantities', () => {
10
+ const runScenario = (args) => {
11
+ const takerQuantities = orderbook.calculateGrossFillQuantities(args.makerSideOrders, {
12
+ side: args.takerOrder.side,
13
+ quantity: (0, _pipmath_1.decimalToPip)(args.takerOrder.quantity),
14
+ isQuantityInQuote: args.takerOrder.isQuantityInQuote,
15
+ limitPrice: args.takerOrder.limitPrice ?
16
+ (0, _pipmath_1.decimalToPip)(args.takerOrder.limitPrice)
17
+ : undefined,
18
+ });
19
+ testHelpers.assertBigintsEqual(takerQuantities.baseQuantity, (0, _pipmath_1.decimalToPip)(args.expectedBaseFillQuantity));
20
+ testHelpers.assertBigintsEqual(takerQuantities.quoteQuantity, (0, _pipmath_1.decimalToPip)(args.expectedQuoteFillQuantity));
21
+ };
22
+ it('should succeed', () => {
23
+ const sellSideMakerOrders = [
24
+ { price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') }, // 1 quote
25
+ { price: (0, _pipmath_1.decimalToPip)('2'), size: (0, _pipmath_1.decimalToPip)('10') }, // 20 quote
26
+ { price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('100') }, // 300 quote
27
+ ];
28
+ runScenario({
29
+ makerSideOrders: sellSideMakerOrders,
30
+ takerOrder: {
31
+ side: request_1.OrderSide.buy,
32
+ quantity: '0.5',
33
+ isQuantityInQuote: false,
34
+ },
35
+ expectedBaseFillQuantity: '0.5',
36
+ expectedQuoteFillQuantity: '0.5',
37
+ });
38
+ runScenario({
39
+ makerSideOrders: sellSideMakerOrders,
40
+ takerOrder: {
41
+ side: request_1.OrderSide.buy,
42
+ quantity: '1',
43
+ isQuantityInQuote: false,
44
+ },
45
+ expectedBaseFillQuantity: '1',
46
+ expectedQuoteFillQuantity: '1',
47
+ });
48
+ runScenario({
49
+ makerSideOrders: sellSideMakerOrders,
50
+ takerOrder: {
51
+ side: request_1.OrderSide.buy,
52
+ quantity: '6',
53
+ isQuantityInQuote: false,
54
+ },
55
+ expectedBaseFillQuantity: '6',
56
+ expectedQuoteFillQuantity: '11',
57
+ });
58
+ runScenario({
59
+ makerSideOrders: sellSideMakerOrders,
60
+ takerOrder: {
61
+ side: request_1.OrderSide.buy,
62
+ quantity: '11',
63
+ isQuantityInQuote: false,
64
+ },
65
+ expectedBaseFillQuantity: '11',
66
+ expectedQuoteFillQuantity: '21',
67
+ });
68
+ runScenario({
69
+ makerSideOrders: sellSideMakerOrders,
70
+ takerOrder: {
71
+ side: request_1.OrderSide.buy,
72
+ quantity: '61',
73
+ isQuantityInQuote: false,
74
+ },
75
+ expectedBaseFillQuantity: '61',
76
+ expectedQuoteFillQuantity: '171',
77
+ });
78
+ runScenario({
79
+ makerSideOrders: sellSideMakerOrders,
80
+ takerOrder: {
81
+ side: request_1.OrderSide.buy,
82
+ quantity: '200', // More than available liquidity
83
+ isQuantityInQuote: false,
84
+ },
85
+ expectedBaseFillQuantity: '111',
86
+ expectedQuoteFillQuantity: '321',
87
+ });
88
+ });
89
+ it('should succeed for a taker quantity specified in quote', () => {
90
+ const sellSideMakerOrders = [
91
+ { price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') }, // 1 quote
92
+ { price: (0, _pipmath_1.decimalToPip)('2'), size: (0, _pipmath_1.decimalToPip)('10') }, // 20 quote
93
+ { price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('100') }, // 300 quote
94
+ ];
95
+ runScenario({
96
+ makerSideOrders: sellSideMakerOrders,
97
+ takerOrder: {
98
+ side: request_1.OrderSide.buy,
99
+ quantity: '0.5',
100
+ isQuantityInQuote: true,
101
+ },
102
+ expectedBaseFillQuantity: '0.5',
103
+ expectedQuoteFillQuantity: '0.5',
104
+ });
105
+ runScenario({
106
+ makerSideOrders: sellSideMakerOrders,
107
+ takerOrder: {
108
+ side: request_1.OrderSide.buy,
109
+ quantity: '1',
110
+ isQuantityInQuote: true,
111
+ },
112
+ expectedBaseFillQuantity: '1',
113
+ expectedQuoteFillQuantity: '1',
114
+ });
115
+ runScenario({
116
+ makerSideOrders: sellSideMakerOrders,
117
+ takerOrder: {
118
+ side: request_1.OrderSide.buy,
119
+ quantity: '11',
120
+ isQuantityInQuote: true,
121
+ },
122
+ expectedBaseFillQuantity: '6',
123
+ expectedQuoteFillQuantity: '11',
124
+ });
125
+ runScenario({
126
+ makerSideOrders: sellSideMakerOrders,
127
+ takerOrder: {
128
+ side: request_1.OrderSide.buy,
129
+ quantity: '21',
130
+ isQuantityInQuote: true,
131
+ },
132
+ expectedBaseFillQuantity: '11',
133
+ expectedQuoteFillQuantity: '21',
134
+ });
135
+ runScenario({
136
+ makerSideOrders: sellSideMakerOrders,
137
+ takerOrder: {
138
+ side: request_1.OrderSide.buy,
139
+ quantity: '171',
140
+ isQuantityInQuote: true,
141
+ },
142
+ expectedBaseFillQuantity: '61',
143
+ expectedQuoteFillQuantity: '171',
144
+ });
145
+ runScenario({
146
+ makerSideOrders: sellSideMakerOrders,
147
+ takerOrder: {
148
+ side: request_1.OrderSide.buy,
149
+ quantity: '1000', // More than available liquidity
150
+ isQuantityInQuote: true,
151
+ },
152
+ expectedBaseFillQuantity: '111',
153
+ expectedQuoteFillQuantity: '321',
154
+ });
155
+ });
156
+ it('should support multiple orders per price level', () => {
157
+ const sellSideMakerOrders = [
158
+ { price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') },
159
+ { price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') },
160
+ { price: (0, _pipmath_1.decimalToPip)('2'), size: (0, _pipmath_1.decimalToPip)('1') },
161
+ ];
162
+ runScenario({
163
+ makerSideOrders: sellSideMakerOrders,
164
+ takerOrder: {
165
+ side: request_1.OrderSide.buy,
166
+ quantity: '1.5',
167
+ isQuantityInQuote: false,
168
+ },
169
+ expectedBaseFillQuantity: '1.5',
170
+ expectedQuoteFillQuantity: '1.5',
171
+ });
172
+ runScenario({
173
+ makerSideOrders: sellSideMakerOrders,
174
+ takerOrder: {
175
+ side: request_1.OrderSide.buy,
176
+ quantity: '1.5',
177
+ isQuantityInQuote: true,
178
+ },
179
+ expectedBaseFillQuantity: '1.5',
180
+ expectedQuoteFillQuantity: '1.5',
181
+ });
182
+ runScenario({
183
+ makerSideOrders: sellSideMakerOrders,
184
+ takerOrder: {
185
+ side: request_1.OrderSide.buy,
186
+ quantity: '3',
187
+ isQuantityInQuote: false,
188
+ },
189
+ expectedBaseFillQuantity: '3',
190
+ expectedQuoteFillQuantity: '4',
191
+ });
192
+ runScenario({
193
+ makerSideOrders: sellSideMakerOrders,
194
+ takerOrder: {
195
+ side: request_1.OrderSide.buy,
196
+ quantity: '4',
197
+ isQuantityInQuote: true,
198
+ },
199
+ expectedBaseFillQuantity: '3',
200
+ expectedQuoteFillQuantity: '4',
201
+ });
202
+ });
203
+ it('should limit by price (buy)', () => {
204
+ const sellSideMakerOrders = [
205
+ { price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') }, // 1 quote
206
+ { price: (0, _pipmath_1.decimalToPip)('2'), size: (0, _pipmath_1.decimalToPip)('1') }, // 2 quote
207
+ { price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('1') }, // 3 quote
208
+ ];
209
+ runScenario({
210
+ makerSideOrders: sellSideMakerOrders,
211
+ takerOrder: {
212
+ side: request_1.OrderSide.buy,
213
+ quantity: '1000', // More than available liquidity
214
+ isQuantityInQuote: false,
215
+ limitPrice: '2',
216
+ },
217
+ expectedBaseFillQuantity: '2',
218
+ expectedQuoteFillQuantity: '3',
219
+ });
220
+ });
221
+ it('should limit by price (sell)', () => {
222
+ const buySideMakerOrders = [
223
+ { price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('1') }, // 3 quote
224
+ { price: (0, _pipmath_1.decimalToPip)('2'), size: (0, _pipmath_1.decimalToPip)('1') }, // 2 quote
225
+ { price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') }, // 1 quote
226
+ ];
227
+ runScenario({
228
+ makerSideOrders: buySideMakerOrders,
229
+ takerOrder: {
230
+ side: request_1.OrderSide.sell,
231
+ quantity: '1000', // More than available liquidity
232
+ isQuantityInQuote: false,
233
+ limitPrice: '2',
234
+ },
235
+ expectedBaseFillQuantity: '2',
236
+ expectedQuoteFillQuantity: '5',
237
+ });
238
+ });
239
+ it('should return zero if the limit price does not cross the spread (buy)', () => {
240
+ const sellSideMakerOrders = [
241
+ { price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') },
242
+ ];
243
+ runScenario({
244
+ makerSideOrders: sellSideMakerOrders,
245
+ takerOrder: {
246
+ side: request_1.OrderSide.buy,
247
+ quantity: '1',
248
+ isQuantityInQuote: false,
249
+ limitPrice: '0.5',
250
+ },
251
+ expectedBaseFillQuantity: '0',
252
+ expectedQuoteFillQuantity: '0',
253
+ });
254
+ });
255
+ it('should return zero if the limit price does not cross the spread (sell)', () => {
256
+ const buySideMakerOrders = [
257
+ { price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') },
258
+ ];
259
+ runScenario({
260
+ makerSideOrders: buySideMakerOrders,
261
+ takerOrder: {
262
+ side: request_1.OrderSide.sell,
263
+ quantity: '1',
264
+ isQuantityInQuote: false,
265
+ limitPrice: '2',
266
+ },
267
+ expectedBaseFillQuantity: '0',
268
+ expectedQuoteFillQuantity: '0',
269
+ });
270
+ });
271
+ it('should support double-pip precision', () => {
272
+ const makerSideOrders = [
273
+ { price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('1') },
274
+ ];
275
+ const takerQuantities = orderbook.calculateGrossFillQuantities(makerSideOrders, {
276
+ side: request_1.OrderSide.buy,
277
+ quantity: (0, _pipmath_1.decimalToPip)('1'),
278
+ isQuantityInQuote: false,
279
+ }, false);
280
+ testHelpers.assertBigintsEqual(takerQuantities.baseQuantity, (0, _pipmath_1.decimalToPip)('1'));
281
+ testHelpers.assertBigintsEqual(takerQuantities.quoteQuantity, (0, _pipmath_1.decimalToPip)('3'));
282
+ const takerQuantities2p = orderbook.calculateGrossFillQuantities(makerSideOrders, {
283
+ side: request_1.OrderSide.buy,
284
+ quantity: (0, _pipmath_1.decimalToPip)('1'),
285
+ isQuantityInQuote: false,
286
+ }, true);
287
+ testHelpers.assertBigintsEqual(takerQuantities2p.baseQuantity, BigInt(10000000000000000));
288
+ testHelpers.assertBigintsEqual(takerQuantities2p.quoteQuantity, BigInt(30000000000000000));
289
+ });
290
+ it('should support double-pip precision (taker quantity specified in quote)', () => {
291
+ const makerSideOrders = [
292
+ { price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('1') },
293
+ ];
294
+ const takerQuantities = orderbook.calculateGrossFillQuantities(makerSideOrders, {
295
+ side: request_1.OrderSide.buy,
296
+ quantity: (0, _pipmath_1.decimalToPip)('1'), // 1/3 of the available quote
297
+ isQuantityInQuote: true,
298
+ }, false);
299
+ testHelpers.assertBigintsEqual(takerQuantities.baseQuantity, (0, _pipmath_1.decimalToPip)('0.33333333'));
300
+ testHelpers.assertBigintsEqual(takerQuantities.quoteQuantity, (0, _pipmath_1.decimalToPip)('1'));
301
+ const takerQuantities2p = orderbook.calculateGrossFillQuantities(makerSideOrders, {
302
+ side: request_1.OrderSide.buy,
303
+ quantity: (0, _pipmath_1.decimalToPip)('1'), // 1/3 of the available quote
304
+ isQuantityInQuote: true,
305
+ }, true);
306
+ testHelpers.assertBigintsEqual(takerQuantities2p.baseQuantity, BigInt(3333333333333333));
307
+ testHelpers.assertBigintsEqual(takerQuantities2p.quoteQuantity, BigInt(10000000000000000));
308
+ });
309
+ });
310
+ });
@@ -0,0 +1,2 @@
1
+ export declare const assertBigintsEqual: (a: unknown, b: unknown, message?: string) => void;
2
+ //# sourceMappingURL=testHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testHelpers.d.ts","sourceRoot":"","sources":["../../src/tests/testHelpers.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,MAC1B,OAAO,KACP,OAAO,uBAET,IAWF,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertBigintsEqual = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const chai = tslib_1.__importStar(require("chai"));
6
+ const { expect } = chai;
7
+ const assertBigintsEqual = (a, b, message = '') => {
8
+ if (typeof a !== 'bigint') {
9
+ throw new Error(`First argument: Expected bigint, got ${String(a)}`);
10
+ }
11
+ if (typeof b !== 'bigint') {
12
+ throw new Error(`Second argument: Expected bigint, got ${String(b)}`);
13
+ }
14
+ expect(a.toString()).to.eql(b.toString(), `${message}Expected ${b.toString()}, got ${a.toString()}`);
15
+ };
16
+ exports.assertBigintsEqual = assertBigintsEqual;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deriveBaseURL.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deriveBaseURL.test.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/deriveBaseURL.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const chai = tslib_1.__importStar(require("chai"));
5
+ const _constants_1 = require("#constants");
6
+ const _utils_1 = require("#utils");
7
+ const { expect } = chai;
8
+ describe('deriveBaseURL', () => {
9
+ it('should return the overrideBaseURL if provided', () => {
10
+ const overrideBaseURL = 'https://example.com/api';
11
+ const baseURL = (0, _utils_1.deriveBaseURL)({ overrideBaseURL, api: 'rest' });
12
+ expect(baseURL).to.equal(overrideBaseURL);
13
+ });
14
+ it('should return the baseRestApiURL if provided', () => {
15
+ const baseRestApiURL = 'https://api.example.com';
16
+ const baseURL = (0, _utils_1.deriveBaseURL)({ baseRestApiURL, api: 'rest' });
17
+ expect(baseURL).to.equal(baseRestApiURL);
18
+ });
19
+ it('should return the baseWebSocketURL if provided for rest API', () => {
20
+ const baseWebSocketURL = 'wss://websocket-test.example.com/';
21
+ const baseURL = (0, _utils_1.deriveBaseURL)({ baseWebSocketURL, api: 'rest' });
22
+ expect(baseURL).to.equal('https://api-test.example.com/');
23
+ });
24
+ it('should return the baseWebSocketURL if provided for websocket API', () => {
25
+ const baseWebSocketURL = 'wss://websocket.example.com';
26
+ const baseURL = (0, _utils_1.deriveBaseURL)({ baseWebSocketURL, api: 'websocket' });
27
+ expect(baseURL).to.equal(baseWebSocketURL);
28
+ });
29
+ it('should return the baseRestApiURL if provided for websocket API', () => {
30
+ const baseRestApiURL = 'https://api.example.com/';
31
+ const baseURL = (0, _utils_1.deriveBaseURL)({ baseRestApiURL, api: 'websocket' });
32
+ expect(baseURL).to.equal('wss://websocket.example.com/');
33
+ });
34
+ it('should return the production URL if no options are provided', () => {
35
+ const baseURL = (0, _utils_1.deriveBaseURL)({ api: 'rest' });
36
+ expect(baseURL).to.equal(_constants_1.URLS.production.v1.rest);
37
+ });
38
+ it('should return the sandbox URL if sandbox option is true', () => {
39
+ const baseURL = (0, _utils_1.deriveBaseURL)({ sandbox: true, api: 'rest' });
40
+ expect(baseURL).to.equal(_constants_1.URLS.sandbox.v1.rest);
41
+ });
42
+ it('should throw an error if baseURL cannot be derived', () => {
43
+ // @ts-expect-error - testing failure
44
+ expect(() => (0, _utils_1.deriveBaseURL)({ api: 'invalid' })).to.throw(/Invalid configuration/);
45
+ });
46
+ });