@velocity-exchange/sdk 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1046) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
  3. package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
  4. package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
  5. package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
  6. package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
  7. package/lib/browser/accounts/bulkAccountLoader.js +51 -0
  8. package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
  9. package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
  10. package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
  11. package/lib/browser/accounts/bulkUserSubscription.js +8 -2
  12. package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
  13. package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
  14. package/lib/browser/accounts/fetch.d.ts +59 -2
  15. package/lib/browser/accounts/fetch.js +57 -2
  16. package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
  17. package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
  18. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
  19. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
  20. package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
  21. package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
  22. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
  23. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
  24. package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
  25. package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
  26. package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
  27. package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
  28. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
  29. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
  30. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
  31. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
  32. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
  33. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
  34. package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
  35. package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
  36. package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
  37. package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
  38. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
  39. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
  40. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
  41. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
  42. package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
  43. package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
  44. package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
  45. package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
  46. package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
  47. package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
  48. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
  49. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
  50. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
  51. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
  52. package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
  53. package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
  54. package/lib/browser/accounts/types.d.ts +149 -0
  55. package/lib/browser/accounts/types.js +13 -0
  56. package/lib/browser/accounts/utils.d.ts +18 -0
  57. package/lib/browser/accounts/utils.js +32 -16
  58. package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
  59. package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
  60. package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
  61. package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
  62. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
  63. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
  64. package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
  65. package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
  66. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
  67. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
  68. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
  69. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
  70. package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
  71. package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
  72. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  73. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
  74. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
  75. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
  76. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
  77. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
  78. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
  79. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
  80. package/lib/browser/addresses/marketAddresses.d.ts +10 -0
  81. package/lib/browser/addresses/marketAddresses.js +10 -0
  82. package/lib/browser/addresses/pda.d.ts +214 -2
  83. package/lib/browser/addresses/pda.js +217 -5
  84. package/lib/browser/adminClient.d.ts +2136 -4
  85. package/lib/browser/adminClient.js +2150 -4
  86. package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
  87. package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
  88. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
  89. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
  90. package/lib/browser/auctionSubscriber/index.d.ts +6 -0
  91. package/lib/browser/auctionSubscriber/index.js +6 -0
  92. package/lib/browser/auctionSubscriber/types.d.ts +7 -0
  93. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
  94. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
  95. package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
  96. package/lib/browser/blockhashSubscriber/index.js +5 -0
  97. package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
  98. package/lib/browser/clock/clockSubscriber.d.ts +24 -0
  99. package/lib/browser/clock/clockSubscriber.js +22 -0
  100. package/lib/browser/config.d.ts +58 -4
  101. package/lib/browser/config.js +88 -21
  102. package/lib/browser/constants/numericConstants.d.ts +67 -0
  103. package/lib/browser/constants/numericConstants.js +68 -1
  104. package/lib/browser/constants/perpMarkets.d.ts +10 -0
  105. package/lib/browser/constants/perpMarkets.js +40 -908
  106. package/lib/browser/constants/spotMarkets.d.ts +13 -0
  107. package/lib/browser/constants/spotMarkets.js +16 -742
  108. package/lib/browser/constants/txConstants.d.ts +1 -0
  109. package/lib/browser/constants/txConstants.js +1 -0
  110. package/lib/browser/core/VelocityCore.d.ts +285 -8
  111. package/lib/browser/core/VelocityCore.js +281 -8
  112. package/lib/browser/core/instructions/deposit.d.ts +22 -0
  113. package/lib/browser/core/instructions/deposit.js +22 -0
  114. package/lib/browser/core/instructions/fill.d.ts +17 -0
  115. package/lib/browser/core/instructions/fill.js +17 -0
  116. package/lib/browser/core/instructions/funding.d.ts +12 -0
  117. package/lib/browser/core/instructions/funding.js +12 -0
  118. package/lib/browser/core/instructions/liquidation.d.ts +18 -0
  119. package/lib/browser/core/instructions/liquidation.js +18 -0
  120. package/lib/browser/core/instructions/orders.d.ts +28 -0
  121. package/lib/browser/core/instructions/orders.js +28 -0
  122. package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
  123. package/lib/browser/core/instructions/perpOrders.js +106 -0
  124. package/lib/browser/core/instructions/settlement.d.ts +14 -0
  125. package/lib/browser/core/instructions/settlement.js +14 -0
  126. package/lib/browser/core/instructions/trigger.d.ts +15 -0
  127. package/lib/browser/core/instructions/trigger.js +15 -0
  128. package/lib/browser/core/instructions/withdraw.d.ts +21 -0
  129. package/lib/browser/core/instructions/withdraw.js +21 -0
  130. package/lib/browser/core/remainingAccounts.d.ts +47 -3
  131. package/lib/browser/core/remainingAccounts.js +20 -0
  132. package/lib/browser/core/signedMsg.d.ts +38 -0
  133. package/lib/browser/core/signedMsg.js +33 -0
  134. package/lib/browser/decode/customCoder.d.ts +39 -3
  135. package/lib/browser/decode/customCoder.js +45 -3
  136. package/lib/browser/decode/user.d.ts +22 -0
  137. package/lib/browser/decode/user.js +22 -0
  138. package/lib/browser/dlob/DLOB.d.ts +502 -53
  139. package/lib/browser/dlob/DLOB.js +540 -98
  140. package/lib/browser/dlob/DLOBNode.d.ts +86 -4
  141. package/lib/browser/dlob/DLOBNode.js +37 -4
  142. package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
  143. package/lib/browser/dlob/DLOBSubscriber.js +42 -12
  144. package/lib/browser/dlob/NodeList.d.ts +69 -0
  145. package/lib/browser/dlob/NodeList.js +66 -0
  146. package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
  147. package/lib/browser/dlob/orderBookLevels.js +84 -14
  148. package/lib/browser/dlob/types.d.ts +15 -0
  149. package/lib/browser/events/eventList.d.ts +14 -0
  150. package/lib/browser/events/eventList.js +14 -0
  151. package/lib/browser/events/eventSubscriber.d.ts +87 -10
  152. package/lib/browser/events/eventSubscriber.js +93 -8
  153. package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
  154. package/lib/browser/events/eventsServerLogProvider.js +27 -0
  155. package/lib/browser/events/fetchLogs.d.ts +31 -0
  156. package/lib/browser/events/fetchLogs.js +46 -1
  157. package/lib/browser/events/parse.d.ts +23 -0
  158. package/lib/browser/events/parse.js +23 -0
  159. package/lib/browser/events/pollingLogProvider.d.ts +24 -0
  160. package/lib/browser/events/pollingLogProvider.js +24 -0
  161. package/lib/browser/events/sort.d.ts +11 -0
  162. package/lib/browser/events/sort.js +12 -0
  163. package/lib/browser/events/txEventCache.d.ts +13 -3
  164. package/lib/browser/events/txEventCache.js +19 -7
  165. package/lib/browser/events/types.d.ts +118 -2
  166. package/lib/browser/events/types.js +11 -0
  167. package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
  168. package/lib/browser/events/webSocketLogProvider.js +28 -0
  169. package/lib/browser/factory/oracleClient.js +2 -2
  170. package/lib/browser/idl/velocity.d.ts +4 -4
  171. package/lib/browser/idl/velocity.json +4 -4
  172. package/lib/browser/keypair.d.ts +8 -0
  173. package/lib/browser/keypair.js +8 -0
  174. package/lib/browser/marginCalculation.d.ts +134 -2
  175. package/lib/browser/marginCalculation.js +121 -0
  176. package/lib/browser/math/amm.d.ts +348 -29
  177. package/lib/browser/math/amm.js +310 -32
  178. package/lib/browser/math/auction.d.ts +95 -19
  179. package/lib/browser/math/auction.js +118 -28
  180. package/lib/browser/math/bankruptcy.d.ts +46 -0
  181. package/lib/browser/math/bankruptcy.js +89 -1
  182. package/lib/browser/math/builder.d.ts +64 -8
  183. package/lib/browser/math/builder.js +71 -9
  184. package/lib/browser/math/conversion.d.ts +21 -0
  185. package/lib/browser/math/conversion.js +21 -0
  186. package/lib/browser/math/exchangeStatus.d.ts +91 -0
  187. package/lib/browser/math/exchangeStatus.js +106 -3
  188. package/lib/browser/math/funding.d.ts +57 -20
  189. package/lib/browser/math/funding.js +63 -23
  190. package/lib/browser/math/insurance.d.ts +62 -0
  191. package/lib/browser/math/insurance.js +62 -0
  192. package/lib/browser/math/liquidation.d.ts +127 -11
  193. package/lib/browser/math/liquidation.js +182 -19
  194. package/lib/browser/math/margin.d.ts +79 -13
  195. package/lib/browser/math/margin.js +80 -14
  196. package/lib/browser/math/market.d.ts +135 -15
  197. package/lib/browser/math/market.js +145 -17
  198. package/lib/browser/math/oracles.d.ts +113 -0
  199. package/lib/browser/math/oracles.js +118 -1
  200. package/lib/browser/math/orders.d.ts +115 -10
  201. package/lib/browser/math/orders.js +130 -19
  202. package/lib/browser/math/position.d.ts +80 -33
  203. package/lib/browser/math/position.js +80 -33
  204. package/lib/browser/math/repeg.d.ts +48 -10
  205. package/lib/browser/math/repeg.js +48 -10
  206. package/lib/browser/math/spotBalance.d.ts +200 -5
  207. package/lib/browser/math/spotBalance.js +239 -10
  208. package/lib/browser/math/spotMarket.d.ts +36 -3
  209. package/lib/browser/math/spotMarket.js +36 -3
  210. package/lib/browser/math/spotPosition.d.ts +72 -0
  211. package/lib/browser/math/spotPosition.js +62 -0
  212. package/lib/browser/math/state.d.ts +31 -0
  213. package/lib/browser/math/state.js +31 -0
  214. package/lib/browser/math/superStake.d.ts +126 -2
  215. package/lib/browser/math/superStake.js +123 -3
  216. package/lib/browser/math/tiers.d.ts +29 -0
  217. package/lib/browser/math/tiers.js +29 -0
  218. package/lib/browser/math/trade.d.ts +102 -51
  219. package/lib/browser/math/trade.js +101 -55
  220. package/lib/browser/math/utils.d.ts +71 -9
  221. package/lib/browser/math/utils.js +71 -9
  222. package/lib/browser/memcmp.d.ts +94 -0
  223. package/lib/browser/memcmp.js +103 -2
  224. package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
  225. package/lib/browser/oracles/oracleClientCache.js +16 -0
  226. package/lib/browser/oracles/oracleId.d.ts +31 -0
  227. package/lib/browser/oracles/oracleId.js +39 -8
  228. package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
  229. package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
  230. package/lib/browser/oracles/pythClient.d.ts +31 -0
  231. package/lib/browser/oracles/pythClient.js +32 -1
  232. package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
  233. package/lib/browser/oracles/pythLazerClient.js +35 -1
  234. package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
  235. package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
  236. package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
  237. package/lib/browser/oracles/strictOraclePrice.js +21 -0
  238. package/lib/browser/oracles/types.d.ts +45 -0
  239. package/lib/browser/oracles/utils.d.ts +20 -0
  240. package/lib/browser/oracles/utils.js +20 -0
  241. package/lib/browser/orderParams.d.ts +42 -4
  242. package/lib/browser/orderParams.js +42 -4
  243. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
  244. package/lib/browser/orderSubscriber/OrderSubscriber.js +56 -0
  245. package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
  246. package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
  247. package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
  248. package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
  249. package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
  250. package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
  251. package/lib/browser/orderSubscriber/types.d.ts +9 -0
  252. package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
  253. package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
  254. package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
  255. package/lib/browser/priorityFee/averageStrategy.js +1 -0
  256. package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
  257. package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
  258. package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
  259. package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
  260. package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
  261. package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
  262. package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
  263. package/lib/browser/priorityFee/maxStrategy.js +1 -0
  264. package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
  265. package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
  266. package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
  267. package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
  268. package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
  269. package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
  270. package/lib/browser/priorityFee/types.d.ts +32 -0
  271. package/lib/browser/priorityFee/types.js +5 -0
  272. package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
  273. package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
  274. package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
  275. package/lib/browser/slot/SlotSubscriber.js +16 -0
  276. package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
  277. package/lib/browser/slot/SlothashSubscriber.js +25 -1
  278. package/lib/browser/tx/baseTxSender.d.ts +163 -0
  279. package/lib/browser/tx/baseTxSender.js +174 -6
  280. package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
  281. package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
  282. package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
  283. package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
  284. package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
  285. package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
  286. package/lib/browser/tx/fastSingleTxSender.js +48 -1
  287. package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
  288. package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
  289. package/lib/browser/tx/reportTransactionError.d.ts +18 -6
  290. package/lib/browser/tx/reportTransactionError.js +18 -6
  291. package/lib/browser/tx/retryTxSender.d.ts +40 -0
  292. package/lib/browser/tx/retryTxSender.js +39 -0
  293. package/lib/browser/tx/txHandler.d.ts +146 -35
  294. package/lib/browser/tx/txHandler.js +132 -32
  295. package/lib/browser/tx/txParamProcessor.d.ts +47 -0
  296. package/lib/browser/tx/txParamProcessor.js +47 -0
  297. package/lib/browser/tx/types.d.ts +46 -0
  298. package/lib/browser/tx/types.js +5 -0
  299. package/lib/browser/tx/utils.d.ts +26 -0
  300. package/lib/browser/tx/utils.js +26 -0
  301. package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
  302. package/lib/browser/tx/whileValidTxSender.js +81 -0
  303. package/lib/browser/types.d.ts +781 -13
  304. package/lib/browser/types.js +126 -9
  305. package/lib/browser/user.d.ts +645 -84
  306. package/lib/browser/user.js +779 -96
  307. package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
  308. package/lib/browser/userMap/PollingSubscription.js +14 -2
  309. package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
  310. package/lib/browser/userMap/WebsocketSubscription.js +9 -0
  311. package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
  312. package/lib/browser/userMap/grpcSubscription.js +8 -0
  313. package/lib/browser/userMap/referrerMap.d.ts +72 -2
  314. package/lib/browser/userMap/referrerMap.js +84 -2
  315. package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
  316. package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
  317. package/lib/browser/userMap/userMap.d.ts +81 -3
  318. package/lib/browser/userMap/userMap.js +81 -4
  319. package/lib/browser/userMap/userMapConfig.d.ts +23 -0
  320. package/lib/browser/userMap/userStatsMap.d.ts +22 -0
  321. package/lib/browser/userMap/userStatsMap.js +22 -0
  322. package/lib/browser/userName.d.ts +16 -0
  323. package/lib/browser/userName.js +16 -0
  324. package/lib/browser/userStats.d.ts +28 -1
  325. package/lib/browser/userStats.js +28 -1
  326. package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
  327. package/lib/browser/util/TransactionConfirmationManager.js +33 -0
  328. package/lib/browser/util/chainClock.d.ts +24 -0
  329. package/lib/browser/util/chainClock.js +20 -0
  330. package/lib/browser/util/computeUnits.d.ts +32 -0
  331. package/lib/browser/util/computeUnits.js +32 -0
  332. package/lib/browser/util/digest.d.ts +17 -0
  333. package/lib/browser/util/digest.js +17 -0
  334. package/lib/browser/util/ed25519Utils.d.ts +12 -2
  335. package/lib/browser/util/ed25519Utils.js +12 -2
  336. package/lib/browser/util/promiseTimeout.d.ts +9 -0
  337. package/lib/browser/util/promiseTimeout.js +9 -0
  338. package/lib/browser/velocityClient.d.ts +3322 -215
  339. package/lib/browser/velocityClient.js +3412 -245
  340. package/lib/browser/wallet.d.ts +37 -0
  341. package/lib/browser/wallet.js +37 -0
  342. package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
  343. package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
  344. package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
  345. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
  346. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
  347. package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
  348. package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
  349. package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
  350. package/lib/node/accounts/bulkAccountLoader.js +51 -0
  351. package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
  352. package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
  353. package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
  354. package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
  355. package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
  356. package/lib/node/accounts/bulkUserSubscription.js +8 -2
  357. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
  358. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
  359. package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
  360. package/lib/node/accounts/fetch.d.ts +59 -2
  361. package/lib/node/accounts/fetch.d.ts.map +1 -1
  362. package/lib/node/accounts/fetch.js +57 -2
  363. package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
  364. package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
  365. package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
  366. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
  367. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  368. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
  369. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
  370. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
  371. package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
  372. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
  373. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
  374. package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
  375. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
  376. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
  377. package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
  378. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
  379. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
  380. package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
  381. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
  382. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
  383. package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
  384. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
  385. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
  386. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
  387. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
  388. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  389. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
  390. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
  391. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
  392. package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
  393. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
  394. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
  395. package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
  396. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
  397. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
  398. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
  399. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
  400. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  401. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
  402. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
  403. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
  404. package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
  405. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
  406. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
  407. package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
  408. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
  409. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
  410. package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
  411. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
  412. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
  413. package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
  414. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
  415. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
  416. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
  417. package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
  418. package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
  419. package/lib/node/accounts/testBulkAccountLoader.js +8 -0
  420. package/lib/node/accounts/types.d.ts +149 -0
  421. package/lib/node/accounts/types.d.ts.map +1 -1
  422. package/lib/node/accounts/types.js +13 -0
  423. package/lib/node/accounts/utils.d.ts +18 -0
  424. package/lib/node/accounts/utils.d.ts.map +1 -1
  425. package/lib/node/accounts/utils.js +32 -16
  426. package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
  427. package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
  428. package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
  429. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
  430. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
  431. package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
  432. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
  433. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  434. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
  435. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
  436. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
  437. package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
  438. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
  439. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
  440. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
  441. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
  442. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
  443. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
  444. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
  445. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
  446. package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
  447. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  448. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
  449. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
  450. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
  451. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
  452. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
  453. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
  454. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  455. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
  456. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
  457. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
  458. package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
  459. package/lib/node/addresses/marketAddresses.d.ts +10 -0
  460. package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
  461. package/lib/node/addresses/marketAddresses.js +10 -0
  462. package/lib/node/addresses/pda.d.ts +214 -2
  463. package/lib/node/addresses/pda.d.ts.map +1 -1
  464. package/lib/node/addresses/pda.js +217 -5
  465. package/lib/node/adminClient.d.ts +2136 -4
  466. package/lib/node/adminClient.d.ts.map +1 -1
  467. package/lib/node/adminClient.js +2150 -4
  468. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
  469. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
  470. package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
  471. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
  472. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
  473. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
  474. package/lib/node/auctionSubscriber/index.d.ts +6 -0
  475. package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
  476. package/lib/node/auctionSubscriber/index.js +6 -0
  477. package/lib/node/auctionSubscriber/types.d.ts +7 -0
  478. package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
  479. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
  480. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
  481. package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
  482. package/lib/node/blockhashSubscriber/index.d.ts +5 -0
  483. package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
  484. package/lib/node/blockhashSubscriber/index.js +5 -0
  485. package/lib/node/blockhashSubscriber/types.d.ts +5 -0
  486. package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
  487. package/lib/node/clock/clockSubscriber.d.ts +24 -0
  488. package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
  489. package/lib/node/clock/clockSubscriber.js +22 -0
  490. package/lib/node/config.d.ts +58 -4
  491. package/lib/node/config.d.ts.map +1 -1
  492. package/lib/node/config.js +88 -21
  493. package/lib/node/constants/numericConstants.d.ts +67 -0
  494. package/lib/node/constants/numericConstants.d.ts.map +1 -1
  495. package/lib/node/constants/numericConstants.js +68 -1
  496. package/lib/node/constants/perpMarkets.d.ts +10 -0
  497. package/lib/node/constants/perpMarkets.d.ts.map +1 -1
  498. package/lib/node/constants/perpMarkets.js +40 -908
  499. package/lib/node/constants/spotMarkets.d.ts +13 -0
  500. package/lib/node/constants/spotMarkets.d.ts.map +1 -1
  501. package/lib/node/constants/spotMarkets.js +16 -742
  502. package/lib/node/constants/txConstants.d.ts +1 -0
  503. package/lib/node/constants/txConstants.d.ts.map +1 -1
  504. package/lib/node/constants/txConstants.js +1 -0
  505. package/lib/node/core/VelocityCore.d.ts +285 -8
  506. package/lib/node/core/VelocityCore.d.ts.map +1 -1
  507. package/lib/node/core/VelocityCore.js +281 -8
  508. package/lib/node/core/instructions/deposit.d.ts +22 -0
  509. package/lib/node/core/instructions/deposit.d.ts.map +1 -1
  510. package/lib/node/core/instructions/deposit.js +22 -0
  511. package/lib/node/core/instructions/fill.d.ts +17 -0
  512. package/lib/node/core/instructions/fill.d.ts.map +1 -1
  513. package/lib/node/core/instructions/fill.js +17 -0
  514. package/lib/node/core/instructions/funding.d.ts +12 -0
  515. package/lib/node/core/instructions/funding.d.ts.map +1 -1
  516. package/lib/node/core/instructions/funding.js +12 -0
  517. package/lib/node/core/instructions/liquidation.d.ts +18 -0
  518. package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
  519. package/lib/node/core/instructions/liquidation.js +18 -0
  520. package/lib/node/core/instructions/orders.d.ts +28 -0
  521. package/lib/node/core/instructions/orders.d.ts.map +1 -1
  522. package/lib/node/core/instructions/orders.js +28 -0
  523. package/lib/node/core/instructions/perpOrders.d.ts +106 -0
  524. package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
  525. package/lib/node/core/instructions/perpOrders.js +106 -0
  526. package/lib/node/core/instructions/settlement.d.ts +14 -0
  527. package/lib/node/core/instructions/settlement.d.ts.map +1 -1
  528. package/lib/node/core/instructions/settlement.js +14 -0
  529. package/lib/node/core/instructions/trigger.d.ts +15 -0
  530. package/lib/node/core/instructions/trigger.d.ts.map +1 -1
  531. package/lib/node/core/instructions/trigger.js +15 -0
  532. package/lib/node/core/instructions/withdraw.d.ts +21 -0
  533. package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
  534. package/lib/node/core/instructions/withdraw.js +21 -0
  535. package/lib/node/core/remainingAccounts.d.ts +47 -3
  536. package/lib/node/core/remainingAccounts.d.ts.map +1 -1
  537. package/lib/node/core/remainingAccounts.js +20 -0
  538. package/lib/node/core/signedMsg.d.ts +38 -0
  539. package/lib/node/core/signedMsg.d.ts.map +1 -1
  540. package/lib/node/core/signedMsg.js +33 -0
  541. package/lib/node/decode/customCoder.d.ts +39 -3
  542. package/lib/node/decode/customCoder.d.ts.map +1 -1
  543. package/lib/node/decode/customCoder.js +45 -3
  544. package/lib/node/decode/user.d.ts +22 -0
  545. package/lib/node/decode/user.d.ts.map +1 -1
  546. package/lib/node/decode/user.js +22 -0
  547. package/lib/node/dlob/DLOB.d.ts +502 -53
  548. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  549. package/lib/node/dlob/DLOB.js +540 -98
  550. package/lib/node/dlob/DLOBNode.d.ts +86 -4
  551. package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
  552. package/lib/node/dlob/DLOBNode.js +37 -4
  553. package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
  554. package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
  555. package/lib/node/dlob/DLOBSubscriber.js +42 -12
  556. package/lib/node/dlob/NodeList.d.ts +69 -0
  557. package/lib/node/dlob/NodeList.d.ts.map +1 -1
  558. package/lib/node/dlob/NodeList.js +66 -0
  559. package/lib/node/dlob/orderBookLevels.d.ts +106 -13
  560. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  561. package/lib/node/dlob/orderBookLevels.js +84 -14
  562. package/lib/node/dlob/types.d.ts +15 -0
  563. package/lib/node/dlob/types.d.ts.map +1 -1
  564. package/lib/node/events/eventList.d.ts +14 -0
  565. package/lib/node/events/eventList.d.ts.map +1 -1
  566. package/lib/node/events/eventList.js +14 -0
  567. package/lib/node/events/eventSubscriber.d.ts +87 -10
  568. package/lib/node/events/eventSubscriber.d.ts.map +1 -1
  569. package/lib/node/events/eventSubscriber.js +93 -8
  570. package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
  571. package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
  572. package/lib/node/events/eventsServerLogProvider.js +27 -0
  573. package/lib/node/events/fetchLogs.d.ts +31 -0
  574. package/lib/node/events/fetchLogs.d.ts.map +1 -1
  575. package/lib/node/events/fetchLogs.js +46 -1
  576. package/lib/node/events/parse.d.ts +23 -0
  577. package/lib/node/events/parse.d.ts.map +1 -1
  578. package/lib/node/events/parse.js +23 -0
  579. package/lib/node/events/pollingLogProvider.d.ts +24 -0
  580. package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
  581. package/lib/node/events/pollingLogProvider.js +24 -0
  582. package/lib/node/events/sort.d.ts +11 -0
  583. package/lib/node/events/sort.d.ts.map +1 -1
  584. package/lib/node/events/sort.js +12 -0
  585. package/lib/node/events/txEventCache.d.ts +13 -3
  586. package/lib/node/events/txEventCache.d.ts.map +1 -1
  587. package/lib/node/events/txEventCache.js +19 -7
  588. package/lib/node/events/types.d.ts +118 -2
  589. package/lib/node/events/types.d.ts.map +1 -1
  590. package/lib/node/events/types.js +11 -0
  591. package/lib/node/events/webSocketLogProvider.d.ts +23 -0
  592. package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
  593. package/lib/node/events/webSocketLogProvider.js +28 -0
  594. package/lib/node/factory/oracleClient.js +2 -2
  595. package/lib/node/idl/velocity.d.ts +4 -4
  596. package/lib/node/idl/velocity.d.ts.map +1 -1
  597. package/lib/node/idl/velocity.json +4 -4
  598. package/lib/node/keypair.d.ts +8 -0
  599. package/lib/node/keypair.d.ts.map +1 -1
  600. package/lib/node/keypair.js +8 -0
  601. package/lib/node/marginCalculation.d.ts +134 -2
  602. package/lib/node/marginCalculation.d.ts.map +1 -1
  603. package/lib/node/marginCalculation.js +121 -0
  604. package/lib/node/math/amm.d.ts +348 -29
  605. package/lib/node/math/amm.d.ts.map +1 -1
  606. package/lib/node/math/amm.js +310 -32
  607. package/lib/node/math/auction.d.ts +95 -19
  608. package/lib/node/math/auction.d.ts.map +1 -1
  609. package/lib/node/math/auction.js +118 -28
  610. package/lib/node/math/bankruptcy.d.ts +46 -0
  611. package/lib/node/math/bankruptcy.d.ts.map +1 -1
  612. package/lib/node/math/bankruptcy.js +89 -1
  613. package/lib/node/math/builder.d.ts +64 -8
  614. package/lib/node/math/builder.d.ts.map +1 -1
  615. package/lib/node/math/builder.js +71 -9
  616. package/lib/node/math/conversion.d.ts +21 -0
  617. package/lib/node/math/conversion.d.ts.map +1 -1
  618. package/lib/node/math/conversion.js +21 -0
  619. package/lib/node/math/exchangeStatus.d.ts +91 -0
  620. package/lib/node/math/exchangeStatus.d.ts.map +1 -1
  621. package/lib/node/math/exchangeStatus.js +106 -3
  622. package/lib/node/math/funding.d.ts +57 -20
  623. package/lib/node/math/funding.d.ts.map +1 -1
  624. package/lib/node/math/funding.js +63 -23
  625. package/lib/node/math/insurance.d.ts +62 -0
  626. package/lib/node/math/insurance.d.ts.map +1 -1
  627. package/lib/node/math/insurance.js +62 -0
  628. package/lib/node/math/liquidation.d.ts +127 -11
  629. package/lib/node/math/liquidation.d.ts.map +1 -1
  630. package/lib/node/math/liquidation.js +182 -19
  631. package/lib/node/math/margin.d.ts +79 -13
  632. package/lib/node/math/margin.d.ts.map +1 -1
  633. package/lib/node/math/margin.js +80 -14
  634. package/lib/node/math/market.d.ts +135 -15
  635. package/lib/node/math/market.d.ts.map +1 -1
  636. package/lib/node/math/market.js +145 -17
  637. package/lib/node/math/oracles.d.ts +113 -0
  638. package/lib/node/math/oracles.d.ts.map +1 -1
  639. package/lib/node/math/oracles.js +118 -1
  640. package/lib/node/math/orders.d.ts +115 -10
  641. package/lib/node/math/orders.d.ts.map +1 -1
  642. package/lib/node/math/orders.js +130 -19
  643. package/lib/node/math/position.d.ts +80 -33
  644. package/lib/node/math/position.d.ts.map +1 -1
  645. package/lib/node/math/position.js +80 -33
  646. package/lib/node/math/repeg.d.ts +48 -10
  647. package/lib/node/math/repeg.d.ts.map +1 -1
  648. package/lib/node/math/repeg.js +48 -10
  649. package/lib/node/math/spotBalance.d.ts +200 -5
  650. package/lib/node/math/spotBalance.d.ts.map +1 -1
  651. package/lib/node/math/spotBalance.js +239 -10
  652. package/lib/node/math/spotMarket.d.ts +36 -3
  653. package/lib/node/math/spotMarket.d.ts.map +1 -1
  654. package/lib/node/math/spotMarket.js +36 -3
  655. package/lib/node/math/spotPosition.d.ts +72 -0
  656. package/lib/node/math/spotPosition.d.ts.map +1 -1
  657. package/lib/node/math/spotPosition.js +62 -0
  658. package/lib/node/math/state.d.ts +31 -0
  659. package/lib/node/math/state.d.ts.map +1 -1
  660. package/lib/node/math/state.js +31 -0
  661. package/lib/node/math/superStake.d.ts +126 -2
  662. package/lib/node/math/superStake.d.ts.map +1 -1
  663. package/lib/node/math/superStake.js +123 -3
  664. package/lib/node/math/tiers.d.ts +29 -0
  665. package/lib/node/math/tiers.d.ts.map +1 -1
  666. package/lib/node/math/tiers.js +29 -0
  667. package/lib/node/math/trade.d.ts +102 -51
  668. package/lib/node/math/trade.d.ts.map +1 -1
  669. package/lib/node/math/trade.js +101 -55
  670. package/lib/node/math/utils.d.ts +71 -9
  671. package/lib/node/math/utils.d.ts.map +1 -1
  672. package/lib/node/math/utils.js +71 -9
  673. package/lib/node/memcmp.d.ts +94 -0
  674. package/lib/node/memcmp.d.ts.map +1 -1
  675. package/lib/node/memcmp.js +103 -2
  676. package/lib/node/oracles/oracleClientCache.d.ts +16 -0
  677. package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
  678. package/lib/node/oracles/oracleClientCache.js +16 -0
  679. package/lib/node/oracles/oracleId.d.ts +31 -0
  680. package/lib/node/oracles/oracleId.d.ts.map +1 -1
  681. package/lib/node/oracles/oracleId.js +39 -8
  682. package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
  683. package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
  684. package/lib/node/oracles/prelaunchOracleClient.js +20 -0
  685. package/lib/node/oracles/pythClient.d.ts +31 -0
  686. package/lib/node/oracles/pythClient.d.ts.map +1 -1
  687. package/lib/node/oracles/pythClient.js +32 -1
  688. package/lib/node/oracles/pythLazerClient.d.ts +34 -0
  689. package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
  690. package/lib/node/oracles/pythLazerClient.js +35 -1
  691. package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
  692. package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
  693. package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
  694. package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
  695. package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
  696. package/lib/node/oracles/strictOraclePrice.js +21 -0
  697. package/lib/node/oracles/types.d.ts +45 -0
  698. package/lib/node/oracles/types.d.ts.map +1 -1
  699. package/lib/node/oracles/utils.d.ts +20 -0
  700. package/lib/node/oracles/utils.d.ts.map +1 -1
  701. package/lib/node/oracles/utils.js +20 -0
  702. package/lib/node/orderParams.d.ts +42 -4
  703. package/lib/node/orderParams.d.ts.map +1 -1
  704. package/lib/node/orderParams.js +42 -4
  705. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
  706. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  707. package/lib/node/orderSubscriber/OrderSubscriber.js +56 -0
  708. package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
  709. package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
  710. package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
  711. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
  712. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
  713. package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
  714. package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
  715. package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
  716. package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
  717. package/lib/node/orderSubscriber/types.d.ts +9 -0
  718. package/lib/node/orderSubscriber/types.d.ts.map +1 -1
  719. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
  720. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
  721. package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
  722. package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
  723. package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
  724. package/lib/node/priorityFee/averageStrategy.js +1 -0
  725. package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
  726. package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
  727. package/lib/node/priorityFee/ewmaStrategy.js +10 -0
  728. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
  729. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
  730. package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
  731. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
  732. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
  733. package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
  734. package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
  735. package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
  736. package/lib/node/priorityFee/maxStrategy.js +1 -0
  737. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
  738. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
  739. package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
  740. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
  741. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
  742. package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
  743. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
  744. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
  745. package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
  746. package/lib/node/priorityFee/types.d.ts +32 -0
  747. package/lib/node/priorityFee/types.d.ts.map +1 -1
  748. package/lib/node/priorityFee/types.js +5 -0
  749. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
  750. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
  751. package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
  752. package/lib/node/slot/SlotSubscriber.d.ts +18 -0
  753. package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
  754. package/lib/node/slot/SlotSubscriber.js +16 -0
  755. package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
  756. package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
  757. package/lib/node/slot/SlothashSubscriber.js +25 -1
  758. package/lib/node/tx/baseTxSender.d.ts +163 -0
  759. package/lib/node/tx/baseTxSender.d.ts.map +1 -1
  760. package/lib/node/tx/baseTxSender.js +174 -6
  761. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
  762. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
  763. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
  764. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
  765. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
  766. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
  767. package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
  768. package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
  769. package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
  770. package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
  771. package/lib/node/tx/fastSingleTxSender.js +48 -1
  772. package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
  773. package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
  774. package/lib/node/tx/forwardOnlyTxSender.js +48 -0
  775. package/lib/node/tx/reportTransactionError.d.ts +18 -6
  776. package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
  777. package/lib/node/tx/reportTransactionError.js +18 -6
  778. package/lib/node/tx/retryTxSender.d.ts +40 -0
  779. package/lib/node/tx/retryTxSender.d.ts.map +1 -1
  780. package/lib/node/tx/retryTxSender.js +39 -0
  781. package/lib/node/tx/txHandler.d.ts +146 -35
  782. package/lib/node/tx/txHandler.d.ts.map +1 -1
  783. package/lib/node/tx/txHandler.js +132 -32
  784. package/lib/node/tx/txParamProcessor.d.ts +47 -0
  785. package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
  786. package/lib/node/tx/txParamProcessor.js +47 -0
  787. package/lib/node/tx/types.d.ts +46 -0
  788. package/lib/node/tx/types.d.ts.map +1 -1
  789. package/lib/node/tx/types.js +5 -0
  790. package/lib/node/tx/utils.d.ts +26 -0
  791. package/lib/node/tx/utils.d.ts.map +1 -1
  792. package/lib/node/tx/utils.js +26 -0
  793. package/lib/node/tx/whileValidTxSender.d.ts +82 -0
  794. package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
  795. package/lib/node/tx/whileValidTxSender.js +81 -0
  796. package/lib/node/types.d.ts +781 -13
  797. package/lib/node/types.d.ts.map +1 -1
  798. package/lib/node/types.js +126 -9
  799. package/lib/node/user.d.ts +645 -84
  800. package/lib/node/user.d.ts.map +1 -1
  801. package/lib/node/user.js +779 -96
  802. package/lib/node/userMap/PollingSubscription.d.ts +10 -0
  803. package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
  804. package/lib/node/userMap/PollingSubscription.js +14 -2
  805. package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
  806. package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
  807. package/lib/node/userMap/WebsocketSubscription.js +9 -0
  808. package/lib/node/userMap/grpcSubscription.d.ts +8 -0
  809. package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
  810. package/lib/node/userMap/grpcSubscription.js +8 -0
  811. package/lib/node/userMap/referrerMap.d.ts +72 -2
  812. package/lib/node/userMap/referrerMap.d.ts.map +1 -1
  813. package/lib/node/userMap/referrerMap.js +84 -2
  814. package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
  815. package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
  816. package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
  817. package/lib/node/userMap/userMap.d.ts +81 -3
  818. package/lib/node/userMap/userMap.d.ts.map +1 -1
  819. package/lib/node/userMap/userMap.js +81 -4
  820. package/lib/node/userMap/userMapConfig.d.ts +23 -0
  821. package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
  822. package/lib/node/userMap/userStatsMap.d.ts +22 -0
  823. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  824. package/lib/node/userMap/userStatsMap.js +22 -0
  825. package/lib/node/userName.d.ts +16 -0
  826. package/lib/node/userName.d.ts.map +1 -1
  827. package/lib/node/userName.js +16 -0
  828. package/lib/node/userStats.d.ts +28 -1
  829. package/lib/node/userStats.d.ts.map +1 -1
  830. package/lib/node/userStats.js +28 -1
  831. package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
  832. package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
  833. package/lib/node/util/TransactionConfirmationManager.js +33 -0
  834. package/lib/node/util/chainClock.d.ts +24 -0
  835. package/lib/node/util/chainClock.d.ts.map +1 -1
  836. package/lib/node/util/chainClock.js +20 -0
  837. package/lib/node/util/computeUnits.d.ts +32 -0
  838. package/lib/node/util/computeUnits.d.ts.map +1 -1
  839. package/lib/node/util/computeUnits.js +32 -0
  840. package/lib/node/util/digest.d.ts +17 -0
  841. package/lib/node/util/digest.d.ts.map +1 -1
  842. package/lib/node/util/digest.js +17 -0
  843. package/lib/node/util/ed25519Utils.d.ts +12 -2
  844. package/lib/node/util/ed25519Utils.d.ts.map +1 -1
  845. package/lib/node/util/ed25519Utils.js +12 -2
  846. package/lib/node/util/promiseTimeout.d.ts +9 -0
  847. package/lib/node/util/promiseTimeout.d.ts.map +1 -1
  848. package/lib/node/util/promiseTimeout.js +9 -0
  849. package/lib/node/velocityClient.d.ts +3322 -215
  850. package/lib/node/velocityClient.d.ts.map +1 -1
  851. package/lib/node/velocityClient.js +3412 -245
  852. package/lib/node/wallet.d.ts +37 -0
  853. package/lib/node/wallet.d.ts.map +1 -1
  854. package/lib/node/wallet.js +37 -0
  855. package/package.json +2 -1
  856. package/src/accounts/basicUserAccountSubscriber.ts +18 -0
  857. package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
  858. package/src/accounts/bulkAccountLoader.ts +52 -0
  859. package/src/accounts/bulkUserStatsSubscription.ts +9 -2
  860. package/src/accounts/bulkUserSubscription.ts +8 -2
  861. package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
  862. package/src/accounts/fetch.ts +59 -2
  863. package/src/accounts/grpcAccountSubscriber.ts +30 -0
  864. package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
  865. package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
  866. package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
  867. package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
  868. package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
  869. package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
  870. package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
  871. package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
  872. package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
  873. package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
  874. package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
  875. package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
  876. package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
  877. package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
  878. package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
  879. package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
  880. package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
  881. package/src/accounts/testBulkAccountLoader.ts +8 -0
  882. package/src/accounts/types.ts +149 -0
  883. package/src/accounts/utils.ts +42 -24
  884. package/src/accounts/webSocketAccountSubscriber.ts +41 -0
  885. package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
  886. package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
  887. package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
  888. package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
  889. package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
  890. package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
  891. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
  892. package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
  893. package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
  894. package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
  895. package/src/addresses/marketAddresses.ts +10 -0
  896. package/src/addresses/pda.ts +228 -12
  897. package/src/adminClient.ts +2156 -4
  898. package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
  899. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
  900. package/src/auctionSubscriber/index.ts +6 -0
  901. package/src/auctionSubscriber/types.ts +7 -0
  902. package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
  903. package/src/blockhashSubscriber/index.ts +5 -0
  904. package/src/blockhashSubscriber/types.ts +5 -4
  905. package/src/clock/clockSubscriber.ts +24 -0
  906. package/src/config.ts +109 -22
  907. package/src/constants/numericConstants.ts +70 -0
  908. package/src/constants/perpMarkets.ts +45 -960
  909. package/src/constants/spotMarkets.ts +23 -793
  910. package/src/constants/txConstants.ts +1 -0
  911. package/src/core/VelocityCore.ts +286 -8
  912. package/src/core/instructions/deposit.ts +22 -0
  913. package/src/core/instructions/fill.ts +17 -0
  914. package/src/core/instructions/funding.ts +12 -0
  915. package/src/core/instructions/liquidation.ts +18 -0
  916. package/src/core/instructions/orders.ts +28 -0
  917. package/src/core/instructions/perpOrders.ts +106 -0
  918. package/src/core/instructions/settlement.ts +14 -0
  919. package/src/core/instructions/trigger.ts +15 -0
  920. package/src/core/instructions/withdraw.ts +21 -0
  921. package/src/core/remainingAccounts.ts +47 -3
  922. package/src/core/signedMsg.ts +38 -0
  923. package/src/decode/customCoder.ts +46 -3
  924. package/src/decode/user.ts +22 -0
  925. package/src/dlob/DLOB.ts +668 -97
  926. package/src/dlob/DLOBNode.ts +98 -6
  927. package/src/dlob/DLOBSubscriber.ts +49 -12
  928. package/src/dlob/NodeList.ts +69 -0
  929. package/src/dlob/orderBookLevels.ts +108 -14
  930. package/src/dlob/types.ts +15 -0
  931. package/src/events/eventList.ts +14 -0
  932. package/src/events/eventSubscriber.ts +100 -19
  933. package/src/events/eventsServerLogProvider.ts +28 -0
  934. package/src/events/fetchLogs.ts +52 -2
  935. package/src/events/parse.ts +23 -0
  936. package/src/events/pollingLogProvider.ts +24 -0
  937. package/src/events/sort.ts +12 -0
  938. package/src/events/txEventCache.ts +19 -7
  939. package/src/events/types.ts +131 -11
  940. package/src/events/webSocketLogProvider.ts +29 -0
  941. package/src/factory/oracleClient.ts +2 -2
  942. package/src/idl/velocity.json +4 -4
  943. package/src/idl/velocity.ts +4 -4
  944. package/src/keypair.ts +8 -0
  945. package/src/marginCalculation.ts +153 -2
  946. package/src/math/amm.ts +371 -36
  947. package/src/math/auction.ts +139 -30
  948. package/src/math/bankruptcy.ts +104 -1
  949. package/src/math/builder.ts +74 -8
  950. package/src/math/conversion.ts +21 -0
  951. package/src/math/exchangeStatus.ts +117 -2
  952. package/src/math/funding.ts +63 -23
  953. package/src/math/insurance.ts +62 -0
  954. package/src/math/liquidation.ts +227 -17
  955. package/src/math/margin.ts +80 -14
  956. package/src/math/market.ts +148 -17
  957. package/src/math/oracles.ts +124 -0
  958. package/src/math/orders.ts +141 -19
  959. package/src/math/position.ts +80 -33
  960. package/src/math/repeg.ts +48 -10
  961. package/src/math/spotBalance.ts +252 -12
  962. package/src/math/spotMarket.ts +36 -3
  963. package/src/math/spotPosition.ts +72 -0
  964. package/src/math/state.ts +31 -0
  965. package/src/math/superStake.ts +126 -3
  966. package/src/math/tiers.ts +29 -0
  967. package/src/math/trade.ts +125 -55
  968. package/src/math/utils.ts +71 -9
  969. package/src/memcmp.ts +104 -2
  970. package/src/oracles/oracleClientCache.ts +16 -0
  971. package/src/oracles/oracleId.ts +39 -6
  972. package/src/oracles/prelaunchOracleClient.ts +20 -0
  973. package/src/oracles/pythClient.ts +32 -1
  974. package/src/oracles/pythLazerClient.ts +35 -1
  975. package/src/oracles/quoteAssetOracleClient.ts +18 -0
  976. package/src/oracles/strictOraclePrice.ts +21 -0
  977. package/src/oracles/types.ts +45 -0
  978. package/src/oracles/utils.ts +20 -0
  979. package/src/orderParams.ts +42 -4
  980. package/src/orderSubscriber/OrderSubscriber.ts +56 -0
  981. package/src/orderSubscriber/PollingSubscription.ts +11 -0
  982. package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
  983. package/src/orderSubscriber/grpcSubscription.ts +16 -0
  984. package/src/orderSubscriber/types.ts +9 -0
  985. package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
  986. package/src/priorityFee/averageStrategy.ts +1 -0
  987. package/src/priorityFee/ewmaStrategy.ts +10 -0
  988. package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
  989. package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
  990. package/src/priorityFee/maxStrategy.ts +1 -0
  991. package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
  992. package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
  993. package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
  994. package/src/priorityFee/types.ts +33 -15
  995. package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
  996. package/src/slot/SlotSubscriber.ts +18 -0
  997. package/src/slot/SlothashSubscriber.ts +27 -1
  998. package/src/tx/baseTxSender.ts +185 -5
  999. package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
  1000. package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
  1001. package/src/tx/blockhashFetcher/types.ts +4 -0
  1002. package/src/tx/fastSingleTxSender.ts +58 -4
  1003. package/src/tx/forwardOnlyTxSender.ts +48 -0
  1004. package/src/tx/reportTransactionError.ts +18 -6
  1005. package/src/tx/retryTxSender.ts +40 -0
  1006. package/src/tx/txHandler.ts +146 -35
  1007. package/src/tx/txParamProcessor.ts +47 -0
  1008. package/src/tx/types.ts +46 -0
  1009. package/src/tx/utils.ts +26 -0
  1010. package/src/tx/whileValidTxSender.ts +82 -0
  1011. package/src/types.ts +777 -24
  1012. package/src/user.ts +869 -110
  1013. package/src/userMap/PollingSubscription.ts +16 -2
  1014. package/src/userMap/WebsocketSubscription.ts +9 -0
  1015. package/src/userMap/grpcSubscription.ts +8 -0
  1016. package/src/userMap/referrerMap.ts +92 -3
  1017. package/src/userMap/revenueShareEscrowMap.ts +38 -11
  1018. package/src/userMap/userMap.ts +82 -4
  1019. package/src/userMap/userMapConfig.ts +23 -10
  1020. package/src/userMap/userStatsMap.ts +22 -0
  1021. package/src/userName.ts +16 -0
  1022. package/src/userStats.ts +28 -1
  1023. package/src/util/TransactionConfirmationManager.ts +33 -0
  1024. package/src/util/chainClock.ts +24 -0
  1025. package/src/util/computeUnits.ts +32 -0
  1026. package/src/util/digest.ts +17 -0
  1027. package/src/util/ed25519Utils.ts +12 -2
  1028. package/src/util/promiseTimeout.ts +9 -0
  1029. package/src/velocityClient.ts +3439 -249
  1030. package/src/wallet.ts +37 -0
  1031. package/tests/VelocityCore/builder_escrow.test.ts +121 -0
  1032. package/tests/amm/test.ts +102 -0
  1033. package/tests/builder/builderFee.test.ts +42 -0
  1034. package/tests/dlob/tickSizeStandardization.ts +545 -0
  1035. package/tests/exchangeStatus/test.ts +45 -0
  1036. package/tests/liquidation/test.ts +125 -0
  1037. package/tests/oracles/mmOracleGate.test.ts +379 -0
  1038. package/tests/oracles/pythPegSnap.test.ts +76 -0
  1039. package/tests/sdkParity/enumParity.test.ts +84 -0
  1040. package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
  1041. package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
  1042. package/tests/spot/test.ts +55 -0
  1043. package/tests/user/bankruptcy.ts +165 -0
  1044. package/tests/user/feeAndWithdrawLimits.ts +284 -0
  1045. package/tests/user/getMarginCalculation.ts +226 -1
  1046. package/tests/user/test.ts +8 -4
@@ -5,9 +5,9 @@
5
5
  * Used by keeper bots to identify the best maker orders to match against taker fills.
6
6
  *
7
7
  * Key types:
8
- * {@link DLOBNode} — a single order node with price/size/user info (DLOBNode.ts)
9
- * {@link DLOBSubscriber} — subscribes to on-chain accounts and keeps the DLOB live (DLOBSubscriber.ts)
10
- * {@link NodeList} — sorted linked list of DLOBNodes per side/market (NodeList.ts)
8
+ * `DLOBNode` — a single order node with price/size/user info (DLOBNode.ts)
9
+ * `DLOBSubscriber` — subscribes to on-chain accounts and keeps the DLOB live (DLOBSubscriber.ts)
10
+ * `NodeList` — sorted linked list of DLOBNodes per side/market (NodeList.ts)
11
11
  * `orderBookLevels.ts` — aggregated L2/L3 book level construction for quoting
12
12
  */
13
13
  import { NodeList } from './NodeList';
@@ -20,11 +20,14 @@ import { SlotSubscriber } from '../slot/SlotSubscriber';
20
20
  import { UserMap } from '../userMap/userMap';
21
21
  import { PublicKey } from '@solana/web3.js';
22
22
  import { L2OrderBook, L2OrderBookGenerator, L3OrderBook } from './orderBookLevels';
23
+ /** An on-chain order paired with the pubkey of its owning `User` account. */
23
24
  export type DLOBOrder = {
24
25
  user: PublicKey;
25
26
  order: Order;
26
27
  };
28
+ /** A list of `DLOBOrder`s, e.g. the flattened output of `DLOB.getDLOBOrders`. */
27
29
  export type DLOBOrders = DLOBOrder[];
30
+ /** The full set of sorted `NodeList`s the DLOB maintains for one market, one per order category and side. */
28
31
  export type MarketNodeLists = {
29
32
  restingLimit: {
30
33
  ask: NodeList<'restingLimit'>;
@@ -59,144 +62,560 @@ type OrderBookCallback = () => void;
59
62
  * Currently used in functions that rely on getBestNode
60
63
  */
61
64
  export type DLOBFilterFcn = (node: DLOBNode) => boolean;
65
+ /** A taker node paired with the maker node(s) it should be filled against. `makerNodes` is empty when the fill is expected to route through fallback (e.g. vAMM) liquidity or is an expiration/cancellation rather than a maker match. */
62
66
  export type NodeToFill = {
63
67
  node: DLOBNode;
64
68
  makerNodes: DLOBNode[];
65
69
  };
70
+ /** A trigger order whose `triggerPrice` has been crossed and is ready to be triggered on-chain. */
66
71
  export type NodeToTrigger = {
67
72
  node: TriggerOrderNode;
68
73
  };
74
+ /**
75
+ * In-memory order book. Indexes every open order it is given into per-market, per-side sorted
76
+ * `NodeList`s (see `MarketNodeLists`), and provides the crossing/fill-finding logic
77
+ * (`findNodesToFill`) and aggregated book views (`getL2`/`getL3`) that keepers and clients use to
78
+ * predict and drive on-chain fills. A `DLOB` instance is normally built once per slot (e.g. via
79
+ * `initFromUserMap`) rather than mutated indefinitely, since state changes (`insertOrder`,
80
+ * `delete`) must be paired with the caller's own bookkeeping of what's already been applied.
81
+ */
69
82
  export declare class DLOB {
83
+ /** Order signatures (`getOrderSignature`) currently open, keyed by market type (`'perp'`/`'spot'`). */
70
84
  openOrders: Map<MarketTypeStr, Set<string>>;
85
+ /** Every market's `MarketNodeLists`, keyed by market type then market index. */
71
86
  orderLists: Map<MarketTypeStr, Map<number, MarketNodeLists>>;
87
+ /** The highest slot `updateRestingLimitOrders` has processed; used to skip redundant re-promotion of taking→resting orders when called with a slot that's already been seen. */
72
88
  maxSlotForRestingLimitOrders: number;
89
+ /** Set to `true` once `initFromUserMap` has successfully populated this instance; `initFromUserMap` is then a no-op. */
73
90
  initialized: boolean;
91
+ /** Constructs an empty, uninitialized `DLOB` with no orders. Call `initFromUserMap` (or `insertOrder`/`insertSignedMsgOrder`) to populate it. */
74
92
  constructor();
75
93
  private init;
76
94
  private getOpenOrdersForMarketType;
77
95
  private getOrderListsForMarketType;
78
96
  private tryGetMarketNodeLists;
79
97
  private getMarketNodeLists;
98
+ /** Empties every order list and resets the DLOB to its freshly-constructed (uninitialized) state, including `maxSlotForRestingLimitOrders` and `initialized`. */
80
99
  clear(): void;
81
100
  /**
82
- * initializes a new DLOB instance
101
+ * Populates this DLOB from every open order across every user in `userMap`. For reduce-only
102
+ * orders, the fillable amount is capped via `calculateOrderBaseAssetAmount` against the
103
+ * user's existing perp position for that market, rather than trusting the order's full
104
+ * stated `baseAssetAmount`. No-ops (returns `false` immediately) if this instance has already
105
+ * been initialized — call `clear()` first to rebuild from scratch.
83
106
  *
84
- * @returns a promise that resolves when the DLOB is initialized
107
+ * @param userMap map of all users' accounts to index orders from
108
+ * @param slot slot orders are inserted at, used to classify taking vs. resting limit orders
109
+ * @returns `true` if this call performed initialization, `false` if it was already initialized
85
110
  */
86
111
  initFromUserMap(userMap: UserMap, slot: number): Promise<boolean>;
112
+ /**
113
+ * Inserts a single on-chain order into the appropriate `NodeList` for its market/side/type.
114
+ * No-ops if the order's status isn't `open`, or if its `orderType` isn't one of the
115
+ * DLOB-supported types (`market`, `limit`, `triggerMarket`, `triggerLimit`, `oracle`).
116
+ * Lazily creates the market's `MarketNodeLists` (via `addOrderList`) on first insert for that
117
+ * market. Which list the order lands in (taking vs. resting limit, floating, market, or
118
+ * inactive trigger) is decided by `getListForOnChainOrder`.
119
+ *
120
+ * @param order the on-chain order to insert
121
+ * @param userAccount base58 pubkey string of the order's owner
122
+ * @param slot current slot, used to classify taking vs. resting limit orders
123
+ * @param baseAssetAmount remaining fillable base amount, BASE_PRECISION (1e9) — for
124
+ * reduce-only orders this should be the position-capped amount (see
125
+ * `calculateOrderBaseAssetAmount`), not the raw `order.baseAssetAmount`
126
+ * @param onInsert optional callback invoked after a successful insert
127
+ */
87
128
  insertOrder(order: Order, userAccount: string, slot: number, baseAssetAmount: BN, onInsert?: OrderBookCallback): void;
129
+ /**
130
+ * Inserts an off-chain signed-message order (not yet landed on-chain) into the market's
131
+ * `signedMsg` bid/ask list, unconditionally (no status/order-type filtering, unlike
132
+ * `insertOrder`). Lazily creates the market's `MarketNodeLists` on first insert.
133
+ *
134
+ * @param order the signed-message order to insert
135
+ * @param userAccount base58 pubkey string of the order's owner
136
+ * @param baseAssetAmount remaining fillable base amount, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount`
137
+ * @param onInsert optional callback invoked after insert
138
+ */
88
139
  insertSignedMsgOrder(order: Order, userAccount: string, baseAssetAmount?: BN, onInsert?: OrderBookCallback): void;
140
+ /** Creates and registers an empty `MarketNodeLists` (all six order categories, both sides) for `marketIndex`, overwriting any existing lists for that market. */
89
141
  addOrderList(marketType: MarketTypeStr, marketIndex: number): void;
142
+ /**
143
+ * Removes an order from whichever `NodeList` it currently lives in. No-ops if the order's
144
+ * status isn't `open`. First calls `updateRestingLimitOrders(slot)` so a taking-limit order
145
+ * that has since become a resting-limit order is looked up (and removed from) the correct
146
+ * list.
147
+ *
148
+ * @param order the order to remove
149
+ * @param userAccount pubkey of the order's owner
150
+ * @param slot current slot, used to resolve which list the order is currently in
151
+ * @param onDelete optional callback invoked after a successful delete
152
+ */
90
153
  delete(order: Order, userAccount: PublicKey, slot: number, onDelete?: OrderBookCallback): void;
154
+ /**
155
+ * Determines which `NodeList` an order belongs in, given its current state and the slot:
156
+ * a trigger order (`triggerMarket`/`triggerLimit`) that hasn't fired yet goes in
157
+ * `trigger.above`/`trigger.below`; a market/oracle-type order goes in `market`; a limit order
158
+ * with a non-zero `oraclePriceOffset` goes in `floatingLimit`; otherwise a limit order goes in
159
+ * `restingLimit` once its auction is complete or it's post-only (per `isRestingLimitOrder`),
160
+ * and in `takingLimit` while still auctioning.
161
+ *
162
+ * @param order the order to classify
163
+ * @param slot current slot, used to evaluate `isRestingLimitOrder`
164
+ * @returns the matching `NodeList`, or `undefined` if the order's market has no `MarketNodeLists` registered yet (e.g. `insertOrder`/`addOrderList` hasn't been called for it)
165
+ */
91
166
  getListForOnChainOrder(order: Order, slot: number): NodeList<any> | undefined;
92
167
  private getListForOnChainOrderOrThrow;
168
+ /**
169
+ * Promotes any `takingLimit` orders across all perp and spot markets whose auction has since
170
+ * completed (per `isRestingLimitOrder`) into their market's `restingLimit` list. No-ops if
171
+ * `slot` is not newer than the last slot this was called with (`maxSlotForRestingLimitOrders`),
172
+ * so it is cheap to call defensively before any read that depends on resting-limit state
173
+ * being current (most getters here do so internally).
174
+ *
175
+ * @param slot current slot
176
+ */
93
177
  updateRestingLimitOrders(slot: number): void;
178
+ /** Does the `takingLimit` → `restingLimit` promotion (see `updateRestingLimitOrders`) for every market of one market type. */
94
179
  updateRestingLimitOrdersForMarketType(slot: number, marketTypeStr: MarketTypeStr): void;
180
+ /**
181
+ * Looks up an order by id/owner across every `NodeList` in the DLOB (perp and spot, all
182
+ * categories/sides) via `getNodeLists`. O(number of lists); prefer a narrower lookup (e.g.
183
+ * `NodeList.get`) if you already know the order's market/type.
184
+ *
185
+ * @param orderId the order's id (unique per user account)
186
+ * @param userAccount pubkey of the order's owner
187
+ * @returns the matching `Order`, or `undefined` if not found in any list
188
+ */
95
189
  getOrder(orderId: number, userAccount: PublicKey): Order | undefined;
190
+ /**
191
+ * Top-level entry point for keepers: finds every node in one market that is currently
192
+ * fillable, combining four sources — crossing resting-limit orders
193
+ * (`findRestingLimitOrderNodesToFill`), taking (still-auctioning) orders that cross a maker or
194
+ * fallback price (`findTakingNodesToFill`), expired orders to cancel/settle
195
+ * (`findExpiredNodesToFill`), and unfillable reduce-only orders below the step size to cancel
196
+ * (`findUnfillableReduceOnlyOrdersToCancel`). Returns `[]` immediately if fills are paused for
197
+ * this market (`fillPaused`). The market's `orderTickSize` is read from `marketAccount` and
198
+ * threaded through to every price comparison below so all crossing checks agree with on-chain
199
+ * price standardization.
200
+ *
201
+ * @param marketIndex the market to scan
202
+ * @param fallbackBid best available non-DLOB bid (e.g. vAMM), PRICE_PRECISION (1e6); `undefined` disables fallback-bid crossing checks
203
+ * @param fallbackAsk best available non-DLOB ask (e.g. vAMM), PRICE_PRECISION (1e6); `undefined` disables fallback-ask crossing checks
204
+ * @param slot current slot
205
+ * @param ts current unix timestamp (seconds), used to find expired orders
206
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`; determines whether `oraclePriceData`/`marketAccount` are typed as spot or perp
207
+ * @param oraclePriceData oracle price data for the market (`MMOraclePriceData` for perp, `OraclePriceData` for spot)
208
+ * @param stateAccount global protocol state, used for pause checks and fee-tier maker rebates
209
+ * @param marketAccount the market's account, used for `orderTickSize`/`orderStepSize` and pause checks
210
+ * @returns deduplicated `NodeToFill`s (see `mergeNodesToFill`) merging resting-limit and taking-order matches, plus expired and cancel-eligible nodes appended
211
+ */
96
212
  findNodesToFill<T extends MarketType>(marketIndex: number, fallbackBid: BN | undefined, fallbackAsk: BN | undefined, slot: number, ts: number, marketType: T, oraclePriceData: T extends {
97
213
  spot: unknown;
98
214
  } ? OraclePriceData : MMOraclePriceData, stateAccount: StateAccount, marketAccount: T extends {
99
215
  spot: unknown;
100
216
  } ? SpotMarketAccount : PerpMarketAccount): NodeToFill[];
217
+ /**
218
+ * Reads the tier-0 maker rebate fraction (`makerRebateNumerator / makerRebateDenominator`)
219
+ * for a market from `stateAccount`'s perp/spot fee structure, then scales the numerator up by
220
+ * the market's `feeAdjustment` percentage if one is set. Used by `findRestingLimitOrderNodesToFill`
221
+ * to size the buffer added to fallback prices so fallback fills aren't triggered by rebate-sized
222
+ * noise.
223
+ *
224
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
225
+ * @param stateAccount global protocol state holding the perp/spot fee tier tables
226
+ * @param marketAccount the specific market, whose optional `feeAdjustment` (percent) scales the rebate
227
+ * @returns the rebate as a numerator/denominator pair (unitless fraction, not a fixed-point BN)
228
+ */
101
229
  getMakerRebate(marketType: MarketType, stateAccount: StateAccount, marketAccount: PerpMarketAccount | SpotMarketAccount): {
102
230
  makerRebateNumerator: number;
103
231
  makerRebateDenominator: number;
104
232
  };
233
+ /**
234
+ * Merges two `NodeToFill` arrays (typically resting-limit crossings and taking-order
235
+ * crossings for the same market/pass) by taker order signature, concatenating `makerNodes`
236
+ * for any taker that appears in both — e.g. an order that both crosses a resting maker and
237
+ * separately crosses fallback liquidity ends up as one `NodeToFill` with both maker sources.
238
+ *
239
+ * @param restingLimitOrderNodesToFill fills found via resting-limit crossing
240
+ * @param takingOrderNodesToFill fills found via taking-order crossing
241
+ * @returns one `NodeToFill` per distinct taker order, with all matched maker nodes combined
242
+ */
105
243
  mergeNodesToFill(restingLimitOrderNodesToFill: NodeToFill[], takingOrderNodesToFill: NodeToFill[]): NodeToFill[];
244
+ /**
245
+ * Finds resting-limit-order fills for a market: resting bids/asks that cross each other
246
+ * (`findCrossingRestingLimitOrders`), plus resting asks that cross the fallback bid and
247
+ * resting bids that cross the fallback ask (each skipped entirely if the AMM is paused).
248
+ * The fallback price on each side is tightened by the maker rebate before comparing, so a
249
+ * maker order priced exactly at the rebate-adjusted fallback isn't spuriously flagged as
250
+ * crossing (`fallbackBidWithBuffer = fallbackBid - fallbackBid * makerRebateNumerator / makerRebateDenominator`,
251
+ * and symmetrically for the ask).
252
+ *
253
+ * @param marketIndex the market to scan
254
+ * @param slot current slot
255
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
256
+ * @param oraclePriceData oracle price data for the market
257
+ * @param isAmmPaused if true, skips fallback-crossing checks (only maker-vs-maker crossings are returned)
258
+ * @param stateAccount global protocol state, forwarded to fallback-availability checks
259
+ * @param marketAccount the market's account, forwarded to fallback-availability checks
260
+ * @param makerRebateNumerator numerator of the maker rebate fraction (see `getMakerRebate`)
261
+ * @param makerRebateDenominator denominator of the maker rebate fraction (see `getMakerRebate`)
262
+ * @param fallbackAsk best available non-DLOB ask, PRICE_PRECISION (1e6); `undefined` skips fallback-ask crossing
263
+ * @param fallbackBid best available non-DLOB bid, PRICE_PRECISION (1e6); `undefined` skips fallback-bid crossing
264
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6), threaded into every price comparison; omit to fall back to no rounding
265
+ * @returns `NodeToFill`s for maker-crossing-maker and maker-crossing-fallback matches
266
+ */
106
267
  findRestingLimitOrderNodesToFill<T extends MarketType>(marketIndex: number, slot: number, marketType: T, oraclePriceData: T extends {
107
268
  spot: unknown;
108
269
  } ? OraclePriceData : MMOraclePriceData, isAmmPaused: boolean, stateAccount: StateAccount, marketAccount: T extends {
109
270
  spot: unknown;
110
- } ? SpotMarketAccount : PerpMarketAccount, makerRebateNumerator: number, makerRebateDenominator: number, fallbackAsk: BN | undefined, fallbackBid: BN | undefined): NodeToFill[];
271
+ } ? SpotMarketAccount : PerpMarketAccount, makerRebateNumerator: number, makerRebateDenominator: number, fallbackAsk: BN | undefined, fallbackBid: BN | undefined, tickSize?: BN): NodeToFill[];
272
+ /**
273
+ * Finds fills for taking (still-auctioning) orders: taking asks crossing resting bids or the
274
+ * fallback bid, and taking bids crossing resting asks or the fallback ask
275
+ * (`findTakingNodesCrossingMakerNodes` / `findNodesCrossingFallbackLiquidity`). Fallback
276
+ * crossing checks are skipped entirely when `isAmmPaused`. For spot markets, a taking order is
277
+ * only allowed to cross the opposite fallback price if doing so wouldn't also require crossing
278
+ * beyond the *other* fallback price (see the inline `fallbackBid`/`fallbackAsk` guards) —
279
+ * this prevents a taking order from routing through DLOB makers priced worse than the AMM.
280
+ *
281
+ * @param marketIndex the market to scan
282
+ * @param slot current slot
283
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
284
+ * @param oraclePriceData oracle price data for the market
285
+ * @param isAmmPaused if true, skips fallback-crossing checks
286
+ * @param state global protocol state, forwarded to fallback-availability checks
287
+ * @param marketAccount the market's account, forwarded to fallback-availability checks
288
+ * @param fallbackAsk best available non-DLOB ask, PRICE_PRECISION (1e6); `undefined` skips ask-side fallback crossing
289
+ * @param fallbackBid best available non-DLOB bid, PRICE_PRECISION (1e6); `undefined` skips bid-side fallback crossing
290
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6), threaded into every price comparison; omit to fall back to no rounding
291
+ * @returns `NodeToFill`s for taking orders that cross a resting maker or fallback liquidity
292
+ */
111
293
  findTakingNodesToFill<T extends MarketType>(marketIndex: number, slot: number, marketType: T, oraclePriceData: T extends {
112
294
  spot: unknown;
113
295
  } ? OraclePriceData : MMOraclePriceData, isAmmPaused: boolean, state: StateAccount, marketAccount: T extends {
114
296
  spot: unknown;
115
- } ? SpotMarketAccount : PerpMarketAccount, fallbackAsk: BN | undefined, fallbackBid?: BN | undefined): NodeToFill[];
297
+ } ? SpotMarketAccount : PerpMarketAccount, fallbackAsk: BN | undefined, fallbackBid?: BN | undefined, tickSize?: BN): NodeToFill[];
298
+ /**
299
+ * Walks `takerNodeGenerator` (taking bids or asks, sorted by arrival slot) against a fresh
300
+ * maker-side generator (built per taker via `makerNodeGeneratorFn`, e.g.
301
+ * `getRestingLimitBids`) and records a `NodeToFill` for every taker/maker pair that
302
+ * `doesCross` accepts, skipping same-user matches. For each match this method also **mutates
303
+ * DLOB state**: it applies the simulated fill to both the maker's and taker's order lists
304
+ * (via `NodeList.update`) so subsequent iterations see updated `baseAssetAmountFilled` and a
305
+ * taker stops matching once fully filled. Because maker nodes (sorted by price) are scanned
306
+ * in order, `doesCross` returning false breaks out of the maker loop entirely — this is
307
+ * correct for resting-limit makers but relies on the maker generator being price-sorted, not
308
+ * time-sorted.
309
+ *
310
+ * @param marketIndex the market being scanned (used only to route signed-message taker fills into the right list)
311
+ * @param slot current slot, forwarded to price lookups
312
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
313
+ * @param oraclePriceData oracle price data for the market
314
+ * @param takerNodeGenerator taking orders to check, e.g. from `getTakingAsks`/`getTakingBids`
315
+ * @param makerNodeGeneratorFn factory invoked once per taker to get a fresh maker-side generator, e.g. `getRestingLimitBids`/`getRestingLimitAsks`
316
+ * @param doesCross given the taker's price (`undefined` if it has none, e.g. still mid-auction) and the maker's price, returns whether they cross
317
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6), threaded into all price lookups
318
+ * @returns one `NodeToFill` per matched taker/maker pair (a taker matched against multiple makers yields multiple entries, each with one maker)
319
+ */
116
320
  findTakingNodesCrossingMakerNodes<T extends MarketType>(marketIndex: number, slot: number, marketType: T, oraclePriceData: T extends {
117
321
  spot: unknown;
118
322
  } ? OraclePriceData : MMOraclePriceData, takerNodeGenerator: Generator<DLOBNode>, makerNodeGeneratorFn: (marketIndex: number, slot: number, marketType: T, oraclePriceData: T extends {
119
323
  spot: unknown;
120
- } ? OraclePriceData : MMOraclePriceData) => Generator<DLOBNode>, doesCross: (takerPrice: BN | undefined, makerPrice: BN) => boolean): NodeToFill[];
324
+ } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn, tickSize?: BN) => Generator<DLOBNode>, doesCross: (takerPrice: BN | undefined, makerPrice: BN) => boolean, tickSize?: BN): NodeToFill[];
325
+ /**
326
+ * Scans `nodeGenerator` for nodes that both cross the fallback price (`doesCross`, evaluated
327
+ * against each node's `getLimitPrice`, or crossing unconditionally if the node has no limit
328
+ * price) and have fallback liquidity actually available to fill against. For spot markets,
329
+ * post-only orders are skipped (they can never take against the AMM) and fallback liquidity
330
+ * is always considered available; for perp markets, availability additionally requires
331
+ * `isFallbackAvailableLiquiditySource` (broadly: the order's auction is complete and the
332
+ * oracle is valid enough for AMM fills). Does not mutate any order state — unlike
333
+ * `findTakingNodesCrossingMakerNodes`, fallback fills are expected to be sized/settled
334
+ * on-chain rather than simulated here.
335
+ *
336
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
337
+ * @param slot current slot
338
+ * @param oraclePriceData oracle price data for the market
339
+ * @param nodeGenerator candidate nodes to check, e.g. resting-limit or taking orders
340
+ * @param doesCross given a node's limit price (`undefined` if it has none), returns whether it crosses the fallback price
341
+ * @param state global protocol state, used by the perp fallback-availability check
342
+ * @param marketAccount the market's account, used by the perp fallback-availability check
343
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6), used to resolve each node's limit price
344
+ * @returns `NodeToFill`s with an empty `makerNodes` array (the fill is expected to route through fallback liquidity, not a DLOB maker)
345
+ */
121
346
  findNodesCrossingFallbackLiquidity<T extends MarketType>(marketType: T, slot: number, oraclePriceData: T extends {
122
347
  spot: unknown;
123
348
  } ? OraclePriceData : MMOraclePriceData, nodeGenerator: Generator<DLOBNode>, doesCross: (nodePrice: BN | undefined) => boolean, state: StateAccount, marketAccount: T extends {
124
349
  spot: unknown;
125
- } ? SpotMarketAccount : PerpMarketAccount): NodeToFill[];
350
+ } ? SpotMarketAccount : PerpMarketAccount, tickSize?: BN): NodeToFill[];
351
+ /**
352
+ * Finds orders in a market that are eligible to be expired: any non-trigger, non-TIF-limit
353
+ * order whose `maxTs` (plus a 25-second buffer for limit orders, via `isOrderExpired`) has
354
+ * passed the given timestamp. Also proactively removes (not just reports) signed-message
355
+ * orders whose auction window (`order.slot + order.auctionDuration`) has passed `slot`, since
356
+ * those never landed on-chain and have no on-chain expiration to wait for.
357
+ *
358
+ * @param marketIndex the market to scan
359
+ * @param ts current unix timestamp (seconds)
360
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
361
+ * @param slot current slot; required if the market has any signed-message orders (throws otherwise)
362
+ * @returns `NodeToFill`s (with empty `makerNodes`) for orders ready to expire
363
+ * @throws if a signed-message order is present and `slot` was not provided
364
+ */
126
365
  findExpiredNodesToFill(marketIndex: number, ts: number, marketType: MarketType, slot?: BN): NodeToFill[];
366
+ /**
367
+ * Finds reduce-only orders across every category/side in a market whose remaining
368
+ * `baseAssetAmount` (as tracked on the node, not necessarily the order's original size) has
369
+ * dropped below the market's minimum step size — meaning the order can never be filled again
370
+ * and should be canceled by a keeper rather than left to linger.
371
+ *
372
+ * @param marketIndex the market to scan
373
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
374
+ * @param stepSize market's minimum order step size, BASE_PRECISION (1e9)
375
+ * @returns `NodeToFill`s (with empty `makerNodes`) for reduce-only orders that should be canceled
376
+ */
127
377
  findUnfillableReduceOnlyOrdersToCancel(marketIndex: number, marketType: MarketType, stepSize: BN): NodeToFill[];
378
+ /**
379
+ * Yields taking (still-auctioning) bid nodes for a market — market-bid orders, taking-limit
380
+ * bids, and signed-message bids not yet resting — merged in arrival order (earliest `slot`
381
+ * first, via `getBestNode`). Calls `updateRestingLimitOrders(slot)` first so a signed-message
382
+ * order that has since become a resting-limit order is excluded here.
383
+ *
384
+ * @param marketIndex the market to scan
385
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
386
+ * @param slot current slot
387
+ * @param oraclePriceData oracle price data for the market (unused for the ordering itself, forwarded to `getBestNode`)
388
+ * @param filterFcn optional predicate; nodes it rejects are skipped and not yielded
389
+ * @returns a generator of taking bid nodes, or an empty generator if the market has no `MarketNodeLists`
390
+ */
128
391
  getTakingBids<T extends MarketType>(marketIndex: number, marketType: T, slot: number, oraclePriceData: T extends {
129
392
  spot: unknown;
130
393
  } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn): Generator<DLOBNode>;
394
+ /** Same as `getTakingBids`, but for the ask side. */
131
395
  getTakingAsks<T extends MarketType>(marketIndex: number, marketType: T, slot: number, oraclePriceData: T extends {
132
396
  spot: unknown;
133
397
  } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn): Generator<DLOBNode>;
398
+ /** Filters a `signedMsg` `NodeList`'s nodes by an arbitrary predicate — used to split signed-message orders into "still taking" vs. "now resting" subsets based on `isRestingLimitOrder`. */
134
399
  protected signedMsgGenerator(signedMsgOrderList: NodeList<'signedMsg'>, filter: (x: DLOBNode) => boolean): Generator<DLOBNode>;
400
+ /**
401
+ * K-way-merges multiple node generators (e.g. one per order category feeding one side of the
402
+ * book) into a single generator ordered by `compareFcn`, skipping nodes that are already
403
+ * fully filled (`isBaseFilled`) or rejected by `filterFcn`. This is the shared core behind
404
+ * `getTakingBids`/`getTakingAsks`/`getRestingLimitBids`/`getRestingLimitAsks`/`getBids`/`getAsks`
405
+ * — each just supplies a different `generatorList` and `compareFcn`.
406
+ *
407
+ * @param generatorList the node generators to merge; each must already be sorted per `compareFcn`
408
+ * @param oraclePriceData oracle price data, forwarded to `compareFcn`
409
+ * @param slot current slot, forwarded to `compareFcn`
410
+ * @param compareFcn returns true if `bestDLOBNode` should be preferred over `currentDLOBNode`
411
+ * @param filterFcn optional predicate; nodes it rejects are advanced past and not yielded
412
+ * @returns a single generator yielding the merged, filtered, non-fully-filled nodes in `compareFcn` order
413
+ */
135
414
  protected getBestNode<T extends MarketTypeStr>(generatorList: Array<Generator<DLOBNode>>, oraclePriceData: T extends 'spot' ? OraclePriceData : MMOraclePriceData, slot: number, compareFcn: (bestDLOBNode: DLOBNode, currentDLOBNode: DLOBNode, slot: number, oraclePriceData: T extends 'spot' ? OraclePriceData : MMOraclePriceData) => boolean, filterFcn?: DLOBFilterFcn): Generator<DLOBNode>;
415
+ /**
416
+ * Yields resting-limit ask nodes for a market — `restingLimit`, `floatingLimit`, and any
417
+ * `signedMsg` asks that have become resting — merged best-price-first (lowest ask price
418
+ * first, ties broken by `getBestNode`'s underlying comparator). Calls
419
+ * `updateRestingLimitOrders(slot)` first. `tickSize` is threaded into every price comparison
420
+ * via `DLOBNode.getPriceOrThrow`, so pass the market's `orderTickSize` to match on-chain
421
+ * price standardization — omitting it defaults to no rounding (tick of 1).
422
+ *
423
+ * @param marketIndex the market to scan
424
+ * @param slot current slot
425
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
426
+ * @param oraclePriceData oracle price data for the market; required for spot markets (throws if missing)
427
+ * @param filterFcn optional predicate; nodes it rejects are skipped
428
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6); defaults to no rounding if omitted
429
+ * @returns a generator of resting-limit ask nodes, best price first
430
+ * @throws if `marketType` is spot and `oraclePriceData` is not provided; also throws (via `getPriceOrThrow`) if any node has no resolvable limit price
431
+ */
136
432
  getRestingLimitAsks<T extends MarketType>(marketIndex: number, slot: number, marketType: T, oraclePriceData: T extends {
137
433
  spot: unknown;
138
- } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn): Generator<DLOBNode>;
434
+ } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn, tickSize?: BN): Generator<DLOBNode>;
435
+ /** Same as `getRestingLimitAsks`, but for the bid side (merged best-price-first, highest bid first). */
139
436
  getRestingLimitBids<T extends MarketType>(marketIndex: number, slot: number, marketType: T, oraclePriceData: T extends {
140
437
  spot: unknown;
141
- } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn): Generator<DLOBNode>;
438
+ } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn, tickSize?: BN): Generator<DLOBNode>;
142
439
  /**
143
- * This will look at both the taking and resting limit asks
144
- * @param marketIndex
145
- * @param fallbackAsk
146
- * @param slot
147
- * @param marketType
148
- * @param oraclePriceData
149
- * @param filterFcn
440
+ * Merges `getTakingAsks` and `getRestingLimitAsks` into a single best-price-first generator
441
+ * (ties broken by earliest arrival slot). Nodes with no resolvable price (e.g. still
442
+ * mid-auction) sort as price `0` — i.e. best — since `getPrice` (not `getPriceOrThrow`) is
443
+ * used here. Unlike `findTakingNodesToFill`/`findNodesToFill`, this does **not** merge in
444
+ * fallback (e.g. vAMM) liquidity; the `fallbackAsk` parameter is currently unused/reserved.
445
+ *
446
+ * @param marketIndex the market to scan
447
+ * @param fallbackAsk currently unused
448
+ * @param slot current slot
449
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
450
+ * @param oraclePriceData oracle price data for the market; required for spot markets (throws if missing)
451
+ * @param filterFcn optional predicate; nodes it rejects are skipped
452
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6); defaults to no rounding if omitted
453
+ * @returns a generator of all ask nodes (taking + resting-limit), best price first
150
454
  */
151
455
  getAsks<T extends MarketType>(marketIndex: number, _fallbackAsk: BN | undefined, slot: number, marketType: T, oraclePriceData: T extends {
152
456
  spot: unknown;
153
- } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn): Generator<DLOBNode>;
457
+ } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn, tickSize?: BN): Generator<DLOBNode>;
154
458
  /**
155
- * This will look at both the taking and resting limit bids
156
- * @param marketIndex
157
- * @param fallbackBid
158
- * @param slot
159
- * @param marketType
160
- * @param oraclePriceData
161
- * @param filterFcn
459
+ * Merges `getTakingBids` and `getRestingLimitBids` into a single best-price-first generator
460
+ * (ties broken by earliest arrival slot). Nodes with no resolvable price sort as `BN_MAX` —
461
+ * i.e. worst — since a priceless bid shouldn't be preferred over a priced one. Does not merge
462
+ * in fallback (e.g. vAMM) liquidity; the `fallbackBid` parameter is currently unused/reserved.
463
+ *
464
+ * @param marketIndex the market to scan
465
+ * @param fallbackBid currently unused
466
+ * @param slot current slot
467
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
468
+ * @param oraclePriceData oracle price data for the market; required for spot markets (throws if missing)
469
+ * @param filterFcn optional predicate; nodes it rejects are skipped
470
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6); defaults to no rounding if omitted
471
+ * @returns a generator of all bid nodes (taking + resting-limit), best price first
162
472
  */
163
473
  getBids<T extends MarketType>(marketIndex: number, _fallbackBid: BN | undefined, slot: number, marketType: T, oraclePriceData: T extends {
164
474
  spot: unknown;
165
- } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn): Generator<DLOBNode>;
475
+ } ? OraclePriceData : MMOraclePriceData, filterFcn?: DLOBFilterFcn, tickSize?: BN): Generator<DLOBNode>;
476
+ /**
477
+ * Finds pairs of resting-limit asks and bids that cross each other (`bidPrice >= askPrice`),
478
+ * assigns maker/taker roles via `determineMakerAndTaker` (post-only orders are always makers;
479
+ * otherwise whichever order's auction finished later is the taker), and simulates the fill by
480
+ * updating both orders' `baseAssetAmountFilled` in their `NodeList`s so subsequent iterations
481
+ * see the reduced remaining size. Same-user matches are skipped. Because both ask and bid
482
+ * generators are price-sorted, the inner loop `break`s as soon as `bidPrice < askPrice` for a
483
+ * given ask, since no later (worse) bid can cross either.
484
+ *
485
+ * @param marketIndex the market to scan
486
+ * @param slot current slot
487
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
488
+ * @param oraclePriceData oracle price data for the market
489
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6), threaded into all price lookups
490
+ * @returns `NodeToFill`s (taker node + one maker node each) for every crossing pair found
491
+ */
166
492
  findCrossingRestingLimitOrders<T extends MarketType>(marketIndex: number, slot: number, marketType: T, oraclePriceData: T extends {
167
493
  spot: unknown;
168
- } ? OraclePriceData : MMOraclePriceData): NodeToFill[];
494
+ } ? OraclePriceData : MMOraclePriceData, tickSize?: BN): NodeToFill[];
495
+ /**
496
+ * Decides which of a crossing ask/bid pair is the maker and which is the taker: if both are
497
+ * post-only, they can't be matched (`undefined`); if exactly one is post-only, it's the
498
+ * maker; otherwise whichever order's auction window (`order.slot + order.auctionDuration`)
499
+ * ends later is treated as the taker (it "arrived crossing" the earlier order).
500
+ *
501
+ * @param askNode the crossing ask node
502
+ * @param bidNode the crossing bid node
503
+ * @returns the assigned `{ takerNode, makerNode }`, or `undefined` if both orders are post-only and neither can take
504
+ */
169
505
  determineMakerAndTaker(askNode: DLOBNode, bidNode: DLOBNode): {
170
506
  takerNode: DLOBNode;
171
507
  makerNode: DLOBNode;
172
508
  } | undefined;
509
+ /**
510
+ * Gets the best (lowest) resting-limit ask price for a market. Does not consider fallback
511
+ * (e.g. vAMM) liquidity.
512
+ *
513
+ * @param marketIndex the market to query
514
+ * @param slot current slot
515
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
516
+ * @param oraclePriceData oracle price data for the market
517
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6); defaults to no rounding if omitted
518
+ * @returns the best ask price, PRICE_PRECISION (1e6), or `undefined` if there are no resting-limit asks
519
+ */
173
520
  getBestAsk<T extends MarketType>(marketIndex: number, slot: number, marketType: T, oraclePriceData: T extends {
174
521
  spot: unknown;
175
- } ? OraclePriceData : MMOraclePriceData): BN | undefined;
522
+ } ? OraclePriceData : MMOraclePriceData, tickSize?: BN): BN | undefined;
523
+ /**
524
+ * Gets the best (highest) resting-limit bid price for a market. Does not consider fallback
525
+ * (e.g. vAMM) liquidity.
526
+ *
527
+ * @param marketIndex the market to query
528
+ * @param slot current slot
529
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
530
+ * @param oraclePriceData oracle price data for the market
531
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6); defaults to no rounding if omitted
532
+ * @returns the best bid price, PRICE_PRECISION (1e6), or `undefined` if there are no resting-limit bids
533
+ */
176
534
  getBestBid<T extends MarketType>(marketIndex: number, slot: number, marketType: T, oraclePriceData: T extends {
177
535
  spot: unknown;
178
- } ? OraclePriceData : MMOraclePriceData): BN | undefined;
536
+ } ? OraclePriceData : MMOraclePriceData, tickSize?: BN): BN | undefined;
537
+ /**
538
+ * Yields untriggered trigger orders that would close a position in `direction`: for a `long`
539
+ * position, short-direction orders in the `trigger.below` list (stop triggers on a price
540
+ * drop); for a `short` position, long-direction orders in `trigger.above` (stop triggers on a
541
+ * price rise). Includes both `triggerMarket` and `triggerLimit` order types — see
542
+ * `getStopLossMarkets`/`getStopLossLimits` to filter to one.
543
+ *
544
+ * @param marketIndex the market to scan
545
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
546
+ * @param direction the direction of the position being protected (not the order's own direction)
547
+ * @returns a generator of stop-loss trigger order nodes
548
+ */
179
549
  getStopLosses(marketIndex: number, marketType: MarketType, direction: PositionDirection): Generator<DLOBNode>;
550
+ /** Same as `getStopLosses`, filtered to `triggerMarket` orders only. */
180
551
  getStopLossMarkets(marketIndex: number, marketType: MarketType, direction: PositionDirection): Generator<DLOBNode>;
552
+ /** Same as `getStopLosses`, filtered to `triggerLimit` orders only. */
181
553
  getStopLossLimits(marketIndex: number, marketType: MarketType, direction: PositionDirection): Generator<DLOBNode>;
554
+ /**
555
+ * Yields untriggered trigger orders that would close a position in `direction` for profit:
556
+ * for a `long` position, short-direction orders in `trigger.above` (take-profit on a price
557
+ * rise); for a `short` position, long-direction orders in `trigger.below` (take-profit on a
558
+ * price drop). Includes both `triggerMarket` and `triggerLimit` order types — see
559
+ * `getTakeProfitMarkets`/`getTakeProfitLimits` to filter to one.
560
+ *
561
+ * @param marketIndex the market to scan
562
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
563
+ * @param direction the direction of the position being protected (not the order's own direction)
564
+ * @returns a generator of take-profit trigger order nodes
565
+ */
182
566
  getTakeProfits(marketIndex: number, marketType: MarketType, direction: PositionDirection): Generator<DLOBNode>;
567
+ /** Same as `getTakeProfits`, filtered to `triggerMarket` orders only. */
183
568
  getTakeProfitMarkets(marketIndex: number, marketType: MarketType, direction: PositionDirection): Generator<DLOBNode>;
569
+ /** Same as `getTakeProfits`, filtered to `triggerLimit` orders only. */
184
570
  getTakeProfitLimits(marketIndex: number, marketType: MarketType, direction: PositionDirection): Generator<DLOBNode>;
571
+ /**
572
+ * Finds trigger orders whose condition is now satisfied by `triggerPrice`: `trigger.above`
573
+ * orders with `triggerPrice > order.triggerPrice`, and `trigger.below` orders with
574
+ * `triggerPrice < order.triggerPrice`. Both lists are sorted by trigger price with the
575
+ * nearest-to-triggering order at `head`, so each scan walks from `head` and `break`s at the
576
+ * first order that isn't (yet) triggered. Returns `[]` immediately if the exchange is paused.
577
+ *
578
+ * @param marketIndex the market to scan
579
+ * @param slot current slot (currently unused by the scan itself, reserved for future use)
580
+ * @param triggerPrice the price to check trigger conditions against, PRICE_PRECISION (1e6) — typically the current oracle or mark price
581
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
582
+ * @param stateAccount global protocol state, used for the exchange-pause check
583
+ * @returns `NodeToTrigger`s for every order ready to be triggered on-chain
584
+ */
185
585
  findNodesToTrigger(marketIndex: number, slot: number, triggerPrice: BN, marketType: MarketType, stateAccount: StateAccount): NodeToTrigger[];
586
+ /**
587
+ * Debug helper: logs the market's best bid, best ask, and mid price (all resting-limit only,
588
+ * no fallback liquidity), along with each side's spread to the current oracle price, as a
589
+ * percentage.
590
+ *
591
+ * @param velocityClient client used to resolve market accounts and oracle price data
592
+ * @param slotSubscriber source of the current slot
593
+ * @param marketIndex the market to print
594
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
595
+ * @throws if the market currently has no resting-limit bid or ask (best bid/ask is `undefined`)
596
+ */
186
597
  printTop(velocityClient: VelocityClient, slotSubscriber: SlotSubscriber, marketIndex: number, marketType: MarketType): void;
598
+ /** Flattens every order across every `NodeList` (perp and spot, all categories/sides) into a single `DLOBOrders` array of `{ user, order }` pairs, in no particular cross-list order. */
187
599
  getDLOBOrders(): DLOBOrders;
600
+ /** Yields every `NodeList` (all ten category/side combinations, per market) across every perp market, then every spot market. Used by `getOrder`/`getDLOBOrders` to walk the entire book. */
188
601
  getNodeLists(): Generator<NodeList<DLOBNodeType>>;
189
602
  /**
190
- * Get an L2 view of the order book for a given market.
603
+ * Get an L2 (aggregated price/size) view of the order book for a given market: resting-limit
604
+ * DLOB liquidity merged with any supplied fallback generators (e.g. the vAMM, via
605
+ * `getVammL2Generator`), then bucketed into up to `depth` levels per side via `createL2Levels`.
606
+ * Does not include taking (still-auctioning) orders — only resting-limit makers and fallback
607
+ * liquidity are represented.
191
608
  *
192
- * @param marketIndex
193
- * @param marketType
194
- * @param slot
195
- * @param oraclePriceData
196
- * @param depth how many levels of the order book to return
197
- * @param fallbackL2Generators L2 generators for fallback liquidity e.g. vAMM {@link getVammL2Generator}
609
+ * @param marketIndex the market to build a book for
610
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
611
+ * @param slot current slot, used to resolve resting-limit order prices
612
+ * @param oraclePriceData oracle price data for the market
613
+ * @param depth how many price levels of the order book to return, per side
614
+ * @param fallbackL2Generators additional non-DLOB liquidity sources to merge in, e.g. `getVammL2Generator`'s output; defaults to `[]`
615
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6), threaded into all DLOB price lookups; defaults to no rounding if omitted
616
+ * @returns the merged `L2OrderBook`, tagged with the given `slot`
198
617
  */
199
- getL2<T extends MarketType>({ marketIndex, marketType, slot, oraclePriceData, depth, fallbackL2Generators, }: {
618
+ getL2<T extends MarketType>({ marketIndex, marketType, slot, oraclePriceData, depth, fallbackL2Generators, tickSize, }: {
200
619
  marketIndex: number;
201
620
  marketType: T;
202
621
  slot: number;
@@ -205,35 +624,47 @@ export declare class DLOB {
205
624
  } ? OraclePriceData : MMOraclePriceData;
206
625
  depth: number;
207
626
  fallbackL2Generators?: L2OrderBookGenerator[];
627
+ tickSize?: BN;
208
628
  }): L2OrderBook;
209
629
  /**
210
- * Get an L3 view of the order book for a given market. Does not include fallback liquidity sources
630
+ * Get an L3 (individual resting order) view of the order book for a given market. Only
631
+ * resting-limit orders are included — no taking orders and no fallback (e.g. vAMM) liquidity.
211
632
  *
212
- * @param marketIndex
213
- * @param marketType
214
- * @param slot
215
- * @param oraclePriceData
633
+ * @param marketIndex the market to build a book for
634
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
635
+ * @param slot current slot, used to resolve resting-limit order prices
636
+ * @param oraclePriceData oracle price data for the market
637
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6); defaults to no rounding if omitted
638
+ * @returns the `L3OrderBook`, tagged with the given `slot`
216
639
  */
217
- getL3<T extends MarketType>({ marketIndex, marketType, slot, oraclePriceData, }: {
640
+ getL3<T extends MarketType>({ marketIndex, marketType, slot, oraclePriceData, tickSize, }: {
218
641
  marketIndex: number;
219
642
  marketType: T;
220
643
  slot: number;
221
644
  oraclePriceData: T extends {
222
645
  spot: unknown;
223
646
  } ? OraclePriceData : MMOraclePriceData;
647
+ tickSize?: BN;
224
648
  }): L3OrderBook;
225
649
  private estimateFillExactBaseAmountInForSide;
226
650
  /**
651
+ * Estimates the quote amount that would be filled for a given base amount, walking
652
+ * resting-limit asks (for a `long`/buy) or bids (for a `short`/sell) from best price outward
653
+ * and summing `price * size` until `baseAmount` is consumed. Does not include fallback (e.g.
654
+ * vAMM) liquidity or taking orders, and does not mutate any order state — this is a read-only
655
+ * estimate, not a simulated fill.
227
656
  *
228
- * @param param.marketIndex the index of the market
229
- * @param param.marketType the type of the market
230
- * @param param.baseAmount the base amount in to estimate
231
- * @param param.orderDirection the direction of the trade
232
- * @param param.slot current slot for estimating dlob node price
233
- * @param param.oraclePriceData the oracle price data
234
- * @returns the estimated quote amount filled: QUOTE_PRECISION
657
+ * @param marketIndex the market to estimate against
658
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
659
+ * @param baseAmount the base amount to fill, BASE_PRECISION (1e9)
660
+ * @param orderDirection direction of the hypothetical taker order (`long` walks asks, `short` walks bids)
661
+ * @param slot current slot, used to resolve resting-limit order prices
662
+ * @param oraclePriceData oracle price data for the market
663
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6); defaults to no rounding if omitted
664
+ * @returns the estimated quote amount filled, QUOTE_PRECISION (1e6); if resting liquidity is thinner than `baseAmount`, the result silently reflects only the liquidity that was actually walked (no error/flag for partial fill), and is `0` if there is no resting liquidity on that side at all
665
+ * @throws if `orderDirection` is neither `long` nor `short`
235
666
  */
236
- estimateFillWithExactBaseAmount<T extends MarketType>({ marketIndex, marketType, baseAmount, orderDirection, slot, oraclePriceData, }: {
667
+ estimateFillWithExactBaseAmount<T extends MarketType>({ marketIndex, marketType, baseAmount, orderDirection, slot, oraclePriceData, tickSize, }: {
237
668
  marketIndex: number;
238
669
  marketType: T;
239
670
  baseAmount: BN;
@@ -242,8 +673,25 @@ export declare class DLOB {
242
673
  oraclePriceData: T extends {
243
674
  spot: unknown;
244
675
  } ? OraclePriceData : MMOraclePriceData;
676
+ tickSize?: BN;
245
677
  }): BN;
246
- getBestMakers<T extends MarketType>({ marketIndex, marketType, direction, slot, oraclePriceData, numMakers, }: {
678
+ /**
679
+ * Collects the pubkeys of up to `numMakers` distinct makers currently resting best-priced on
680
+ * one side of the book — bids for a `long` taker, asks for a `short` taker — in best-price
681
+ * order. Used to pick candidate maker accounts to pass as `remaining_accounts` when
682
+ * submitting a fill instruction. A maker with multiple resting orders at different prices
683
+ * only counts once toward `numMakers`.
684
+ *
685
+ * @param marketIndex the market to scan
686
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`
687
+ * @param direction direction of the taker order being matched (`long` collects bid-side makers, `short` collects ask-side makers)
688
+ * @param slot current slot, used to resolve resting-limit order prices
689
+ * @param oraclePriceData oracle price data for the market
690
+ * @param numMakers maximum number of distinct maker pubkeys to return
691
+ * @param tickSize market order tick size, PRICE_PRECISION (1e6); defaults to no rounding if omitted
692
+ * @returns up to `numMakers` distinct maker `PublicKey`s, best price first
693
+ */
694
+ getBestMakers<T extends MarketType>({ marketIndex, marketType, direction, slot, oraclePriceData, numMakers, tickSize, }: {
247
695
  marketIndex: number;
248
696
  marketType: T;
249
697
  direction: PositionDirection;
@@ -252,6 +700,7 @@ export declare class DLOB {
252
700
  spot: unknown;
253
701
  } ? OraclePriceData : MMOraclePriceData;
254
702
  numMakers: number;
703
+ tickSize?: BN;
255
704
  }): PublicKey[];
256
705
  }
257
706
  export {};