@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
@@ -1,65 +1,136 @@
1
1
  import { BN } from '../isomorphic/anchor';
2
2
  import { MarketTypeStr, Order } from '../types';
3
3
  import { MMOraclePriceData, OraclePriceData } from '../oracles/types';
4
+ /**
5
+ * Picks the oracle price data shape a `DLOBNode` needs to compute its limit price for a given
6
+ * market type: `OraclePriceData` for spot markets, `MMOraclePriceData` (which layers in the
7
+ * market-maker oracle) for perp markets.
8
+ */
4
9
  export type NodeOraclePriceData<T extends MarketTypeStr = MarketTypeStr> = T extends 'spot' ? OraclePriceData : MMOraclePriceData;
10
+ /**
11
+ * A single order sitting in the DLOB, indexed by one of the sorted `NodeList`s. Wraps one
12
+ * on-chain `Order` plus DLOB-local bookkeeping (fill progress, sort key) used by
13
+ * `DLOB`'s crossing/fill-finding and L2/L3 book construction.
14
+ */
5
15
  export interface DLOBNode {
6
- getPrice<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number): BN | undefined;
7
- getPriceOrThrow<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number): BN;
16
+ /**
17
+ * Computes the node's current limit price, or `undefined` if it has none right now (e.g. a
18
+ * market/auction order still mid-auction with no fallback price, or an unset oracle-offset
19
+ * order below the tick floor). Callers that can tolerate "no price" (market orders crossing
20
+ * on a taker/maker basis, fallback-liquidity checks) should use this; callers that require a
21
+ * price to proceed should use `getPriceOrThrow` instead.
22
+ *
23
+ * @param oraclePriceData current oracle price data for the node's market (price in
24
+ * PRICE_PRECISION, 1e6)
25
+ * @param slot current slot, used to resolve auction/oracle-offset pricing
26
+ * @param tickSize market's order tick size, PRICE_PRECISION (1e6); when omitted this
27
+ * effectively rounds to the smallest price unit (no meaningful rounding) — pass the
28
+ * market's `orderTickSize` to match on-chain price standardization
29
+ * @returns limit price, PRICE_PRECISION (1e6), or `undefined` if the node has no price yet
30
+ */
31
+ getPrice<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number, tickSize?: BN): BN | undefined;
32
+ /**
33
+ * Same as `getPrice`, but throws instead of returning `undefined` when the node has no limit
34
+ * price. Use this wherever a missing price would be a bug (e.g. iterating resting limit
35
+ * orders, which always have a determinable price once the auction is complete).
36
+ *
37
+ * @param oraclePriceData current oracle price data for the node's market (price in
38
+ * PRICE_PRECISION, 1e6)
39
+ * @param slot current slot, used to resolve auction/oracle-offset pricing
40
+ * @param tickSize market's order tick size, PRICE_PRECISION (1e6); defaults to no rounding
41
+ * if omitted
42
+ * @returns limit price, PRICE_PRECISION (1e6)
43
+ * @throws if the underlying order has no limit price at this slot
44
+ */
45
+ getPriceOrThrow<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number, tickSize?: BN): BN;
46
+ /** True for synthetic vAMM liquidity nodes (not backed by an on-chain `Order`); always `false` for `OrderNode` subclasses. */
8
47
  isVammNode(): boolean;
48
+ /** The on-chain order this node mirrors, or `undefined` for non-order (e.g. vAMM) nodes. */
9
49
  order: Order | undefined;
50
+ /** True once `order.baseAssetAmountFilled` equals `order.baseAssetAmount` (fully filled). */
10
51
  isBaseFilled(): boolean;
52
+ /** DLOB-local flag set by crossing/fill-finding once this node has been matched in the current pass, so it isn't matched twice. */
11
53
  haveFilled: boolean;
54
+ /** Base58 pubkey string of the `User` account that owns this order, or `undefined` if not applicable. */
12
55
  userAccount: string | undefined;
56
+ /** True if this order arrived as an off-chain signed message (not yet landed on-chain) rather than a resting on-chain order. */
13
57
  isSignedMsg: boolean | undefined;
58
+ /** Remaining base asset amount tracked by this node, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount` if not overridden at insert time. */
14
59
  baseAssetAmount: BN;
15
60
  }
61
+ /**
62
+ * Base class for all order-backed DLOB nodes. Holds a defensive copy of the on-chain `Order`
63
+ * plus a `sortValue` (the field each `NodeList` sorts on) computed by the concrete subclass's
64
+ * `getSortValue`. Concrete subclasses (`RestingLimitOrderNode`, `TakingLimitOrderNode`, etc.)
65
+ * only differ in which `Order` field they sort by and which `NodeList` bucket they belong to.
66
+ */
16
67
  export declare abstract class OrderNode implements DLOBNode {
17
68
  order: Order;
18
69
  userAccount: string;
70
+ /** The value this node is sorted by within its `NodeList`; set from `getSortValue(order)` at construction and not auto-updated on order changes. */
19
71
  sortValue: BN;
20
72
  haveFilled: boolean;
21
73
  haveTrigger: boolean;
22
74
  baseAssetAmount: BN;
23
75
  isSignedMsg: boolean;
76
+ /**
77
+ * @param order on-chain order to wrap; a shallow copy is stored so DLOB mutations don't alias the caller's object
78
+ * @param userAccount base58 pubkey string of the order's owner
79
+ * @param baseAssetAmount remaining base amount to track, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount` (used for reduce-only orders where the fillable amount is smaller than the order's stated size)
80
+ * @param isSignedMsg whether this node represents an off-chain signed-message order rather than a resting on-chain order; defaults to `false`
81
+ */
24
82
  constructor(order: Order, userAccount: string, baseAssetAmount?: BN, isSignedMsg?: boolean);
83
+ /** Returns the field of `order` this node type sorts on within its `NodeList` (e.g. price, slot, trigger price, or oracle offset). */
25
84
  abstract getSortValue(order: Order): BN;
85
+ /** Builds a one-line human-readable summary of the order (id, side, size, price, trigger) for `NodeList.print`/`printTop` debugging output. */
26
86
  getLabel(): string;
27
- getPrice<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number): BN | undefined;
28
- getPriceOrThrow<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number): BN;
87
+ /** See `DLOBNode.getPrice`. Delegates to `getLimitPrice`, which resolves auction, oracle-offset, and fixed-price orders in that priority. */
88
+ getPrice<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number, tickSize?: BN): BN | undefined;
89
+ /** See `DLOBNode.getPriceOrThrow`. @throws if `getPrice` returns `undefined` for this order. */
90
+ getPriceOrThrow<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number, tickSize?: BN): BN;
91
+ /** True once the wrapped order's `baseAssetAmountFilled` equals its `baseAssetAmount` (BASE_PRECISION, 1e9). */
29
92
  isBaseFilled(): boolean;
93
+ /** Always `false` — order-backed nodes are never vAMM nodes. */
30
94
  isVammNode(): boolean;
31
95
  }
96
+ /** A limit order whose auction has not yet completed (still crossable as a taker); sorted ascending by `order.slot` (arrival order) within its `NodeList`. Promoted to a `RestingLimitOrderNode` once its auction completes or it settles as post-only, via `DLOB.updateRestingLimitOrders`. */
32
97
  export declare class TakingLimitOrderNode extends OrderNode {
33
98
  next?: TakingLimitOrderNode;
34
99
  previous?: TakingLimitOrderNode;
35
100
  getSortValue(order: Order): BN;
36
101
  }
102
+ /** A limit order with a fixed (non-oracle-relative) price whose auction has completed, or that is post-only; sorted by `order.price` (PRICE_PRECISION, 1e6) — ascending for asks, descending for bids. This is the DLOB's standard resting maker order. */
37
103
  export declare class RestingLimitOrderNode extends OrderNode {
38
104
  next?: RestingLimitOrderNode;
39
105
  previous?: RestingLimitOrderNode;
40
106
  getSortValue(order: Order): BN;
41
107
  }
108
+ /** A resting limit order priced relative to the oracle (`oraclePriceOffset != 0`); sorted by `order.oraclePriceOffset` (PRICE_PRECISION, 1e6, signed) rather than an absolute price, since its effective price moves with the oracle. */
42
109
  export declare class FloatingLimitOrderNode extends OrderNode {
43
110
  next?: FloatingLimitOrderNode;
44
111
  previous?: FloatingLimitOrderNode;
45
112
  getSortValue(order: Order): BN;
46
113
  }
114
+ /** A market order (or an order otherwise treated as market/oracle-priced); sorted ascending by `order.slot` (arrival order) since market orders have no fixed price to sort by. */
47
115
  export declare class MarketOrderNode extends OrderNode {
48
116
  next?: MarketOrderNode;
49
117
  previous?: MarketOrderNode;
50
118
  getSortValue(order: Order): BN;
51
119
  }
120
+ /** A trigger (stop-loss/take-profit) order that has not yet fired; sorted by `order.triggerPrice` (PRICE_PRECISION, 1e6) — ascending in the "above" list, descending in the "below" list — so `DLOB.findNodesToTrigger` can stop scanning as soon as the trigger price is no longer crossed. */
52
121
  export declare class TriggerOrderNode extends OrderNode {
53
122
  next?: TriggerOrderNode;
54
123
  previous?: TriggerOrderNode;
55
124
  getSortValue(order: Order): BN;
56
125
  }
126
+ /** An order that arrived as an off-chain signed message and has not yet landed on-chain; always constructed with `isSignedMsg = true`. Sorted ascending by `order.slot`. */
57
127
  export declare class SignedMsgOrderNode extends OrderNode {
58
128
  next?: SignedMsgOrderNode;
59
129
  previous?: SignedMsgOrderNode;
60
130
  constructor(order: Order, userAccount: string, baseAssetAmount?: BN);
61
131
  getSortValue(order: Order): BN;
62
132
  }
133
+ /** Maps each `DLOBNodeType` key to its concrete `OrderNode` subclass; used to type `NodeList<T>` and `createNode`'s return value. */
63
134
  export type DLOBNodeMap = {
64
135
  restingLimit: RestingLimitOrderNode;
65
136
  takingLimit: TakingLimitOrderNode;
@@ -68,5 +139,16 @@ export type DLOBNodeMap = {
68
139
  trigger: TriggerOrderNode;
69
140
  signedMsg: SignedMsgOrderNode;
70
141
  };
142
+ /** The discriminant used to pick which `NodeList` (and thus sort order) an order belongs in. */
71
143
  export type DLOBNodeType = 'signedMsg' | 'restingLimit' | 'takingLimit' | 'floatingLimit' | 'market' | ('trigger' & keyof DLOBNodeMap);
144
+ /**
145
+ * Constructs the concrete `OrderNode` subclass for a given `DLOBNodeType`.
146
+ *
147
+ * @param nodeType which node subclass to build; determines the node's sort key (see `DLOBNodeMap`)
148
+ * @param order on-chain order to wrap (copied, not mutated)
149
+ * @param userAccount base58 pubkey string of the order's owner
150
+ * @param baseAssetAmount remaining base amount to track, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount`
151
+ * @returns a new node instance of the type matching `nodeType`
152
+ * @throws if `nodeType` is not one of the known `DLOBNodeType` values
153
+ */
72
154
  export declare function createNode<T extends DLOBNodeType>(nodeType: T, order: Order, userAccount: string, baseAssetAmount?: BN): DLOBNodeMap[T];
@@ -6,7 +6,19 @@ const orders_1 = require("../math/orders");
6
6
  const types_1 = require("../types");
7
7
  const conversion_1 = require("../math/conversion");
8
8
  const NodeList_1 = require("./NodeList");
9
+ /**
10
+ * Base class for all order-backed DLOB nodes. Holds a defensive copy of the on-chain `Order`
11
+ * plus a `sortValue` (the field each `NodeList` sorts on) computed by the concrete subclass's
12
+ * `getSortValue`. Concrete subclasses (`RestingLimitOrderNode`, `TakingLimitOrderNode`, etc.)
13
+ * only differ in which `Order` field they sort by and which `NodeList` bucket they belong to.
14
+ */
9
15
  class OrderNode {
16
+ /**
17
+ * @param order on-chain order to wrap; a shallow copy is stored so DLOB mutations don't alias the caller's object
18
+ * @param userAccount base58 pubkey string of the order's owner
19
+ * @param baseAssetAmount remaining base amount to track, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount` (used for reduce-only orders where the fillable amount is smaller than the order's stated size)
20
+ * @param isSignedMsg whether this node represents an off-chain signed-message order rather than a resting on-chain order; defaults to `false`
21
+ */
10
22
  constructor(order, userAccount, baseAssetAmount, isSignedMsg = false) {
11
23
  this.haveFilled = false;
12
24
  this.haveTrigger = false;
@@ -17,6 +29,7 @@ class OrderNode {
17
29
  this.baseAssetAmount = baseAssetAmount !== null && baseAssetAmount !== void 0 ? baseAssetAmount : order.baseAssetAmount;
18
30
  this.isSignedMsg = isSignedMsg;
19
31
  }
32
+ /** Builds a one-line human-readable summary of the order (id, side, size, price, trigger) for `NodeList.print`/`printTop` debugging output. */
20
33
  getLabel() {
21
34
  let msg = `Order ${(0, NodeList_1.getOrderSignature)(this.order.orderId, this.userAccount)}`;
22
35
  msg += ` ${(0, types_1.isVariant)(this.order.direction, 'long') ? 'LONG' : 'SHORT'} `;
@@ -30,48 +43,57 @@ class OrderNode {
30
43
  }
31
44
  return msg;
32
45
  }
33
- getPrice(oraclePriceData, slot) {
34
- return (0, orders_1.getLimitPrice)(this.order, oraclePriceData, slot);
46
+ /** See `DLOBNode.getPrice`. Delegates to `getLimitPrice`, which resolves auction, oracle-offset, and fixed-price orders in that priority. */
47
+ getPrice(oraclePriceData, slot, tickSize) {
48
+ return (0, orders_1.getLimitPrice)(this.order, oraclePriceData, slot, undefined, tickSize);
35
49
  }
36
- getPriceOrThrow(oraclePriceData, slot) {
37
- const price = this.getPrice(oraclePriceData, slot);
50
+ /** See `DLOBNode.getPriceOrThrow`. @throws if `getPrice` returns `undefined` for this order. */
51
+ getPriceOrThrow(oraclePriceData, slot, tickSize) {
52
+ const price = this.getPrice(oraclePriceData, slot, tickSize);
38
53
  if (price === undefined) {
39
54
  throw new Error(`OrderNode.getPrice: order ${this.order.orderId} has no limit price`);
40
55
  }
41
56
  return price;
42
57
  }
58
+ /** True once the wrapped order's `baseAssetAmountFilled` equals its `baseAssetAmount` (BASE_PRECISION, 1e9). */
43
59
  isBaseFilled() {
44
60
  return this.order.baseAssetAmountFilled.eq(this.order.baseAssetAmount);
45
61
  }
62
+ /** Always `false` — order-backed nodes are never vAMM nodes. */
46
63
  isVammNode() {
47
64
  return false;
48
65
  }
49
66
  }
50
67
  exports.OrderNode = OrderNode;
68
+ /** A limit order whose auction has not yet completed (still crossable as a taker); sorted ascending by `order.slot` (arrival order) within its `NodeList`. Promoted to a `RestingLimitOrderNode` once its auction completes or it settles as post-only, via `DLOB.updateRestingLimitOrders`. */
51
69
  class TakingLimitOrderNode extends OrderNode {
52
70
  getSortValue(order) {
53
71
  return order.slot;
54
72
  }
55
73
  }
56
74
  exports.TakingLimitOrderNode = TakingLimitOrderNode;
75
+ /** A limit order with a fixed (non-oracle-relative) price whose auction has completed, or that is post-only; sorted by `order.price` (PRICE_PRECISION, 1e6) — ascending for asks, descending for bids. This is the DLOB's standard resting maker order. */
57
76
  class RestingLimitOrderNode extends OrderNode {
58
77
  getSortValue(order) {
59
78
  return order.price;
60
79
  }
61
80
  }
62
81
  exports.RestingLimitOrderNode = RestingLimitOrderNode;
82
+ /** A resting limit order priced relative to the oracle (`oraclePriceOffset != 0`); sorted by `order.oraclePriceOffset` (PRICE_PRECISION, 1e6, signed) rather than an absolute price, since its effective price moves with the oracle. */
63
83
  class FloatingLimitOrderNode extends OrderNode {
64
84
  getSortValue(order) {
65
85
  return order.oraclePriceOffset;
66
86
  }
67
87
  }
68
88
  exports.FloatingLimitOrderNode = FloatingLimitOrderNode;
89
+ /** A market order (or an order otherwise treated as market/oracle-priced); sorted ascending by `order.slot` (arrival order) since market orders have no fixed price to sort by. */
69
90
  class MarketOrderNode extends OrderNode {
70
91
  getSortValue(order) {
71
92
  return order.slot;
72
93
  }
73
94
  }
74
95
  exports.MarketOrderNode = MarketOrderNode;
96
+ /** A trigger (stop-loss/take-profit) order that has not yet fired; sorted by `order.triggerPrice` (PRICE_PRECISION, 1e6) — ascending in the "above" list, descending in the "below" list — so `DLOB.findNodesToTrigger` can stop scanning as soon as the trigger price is no longer crossed. */
75
97
  class TriggerOrderNode extends OrderNode {
76
98
  getSortValue(order) {
77
99
  return order.triggerPrice;
@@ -79,6 +101,7 @@ class TriggerOrderNode extends OrderNode {
79
101
  }
80
102
  exports.TriggerOrderNode = TriggerOrderNode;
81
103
  // We'll use the signedMsg uuid for the order id since it's not yet on-chain
104
+ /** An order that arrived as an off-chain signed message and has not yet landed on-chain; always constructed with `isSignedMsg = true`. Sorted ascending by `order.slot`. */
82
105
  class SignedMsgOrderNode extends OrderNode {
83
106
  constructor(order, userAccount, baseAssetAmount) {
84
107
  super(order, userAccount, baseAssetAmount, true);
@@ -88,6 +111,16 @@ class SignedMsgOrderNode extends OrderNode {
88
111
  }
89
112
  }
90
113
  exports.SignedMsgOrderNode = SignedMsgOrderNode;
114
+ /**
115
+ * Constructs the concrete `OrderNode` subclass for a given `DLOBNodeType`.
116
+ *
117
+ * @param nodeType which node subclass to build; determines the node's sort key (see `DLOBNodeMap`)
118
+ * @param order on-chain order to wrap (copied, not mutated)
119
+ * @param userAccount base58 pubkey string of the order's owner
120
+ * @param baseAssetAmount remaining base amount to track, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount`
121
+ * @returns a new node instance of the type matching `nodeType`
122
+ * @throws if `nodeType` is not one of the known `DLOBNodeType` values
123
+ */
91
124
  function createNode(nodeType, order, userAccount, baseAssetAmount) {
92
125
  switch (nodeType) {
93
126
  case 'floatingLimit':
@@ -7,28 +7,50 @@ import { VelocityClient } from '../velocityClient';
7
7
  import { MarketType } from '../types';
8
8
  import { L2OrderBook, L2OrderBookGenerator, L3OrderBook } from './orderBookLevels';
9
9
  import { BN } from '../isomorphic/anchor';
10
+ /**
11
+ * Keeps a `DLOB` snapshot fresh on a timer and exposes convenience `getL2`/`getL3` accessors that
12
+ * resolve market name/index/type and oracle price data via `velocityClient` so callers don't have
13
+ * to. Until `subscribe()` resolves at least once, `getDLOB()`/`getL2`/`getL3` operate on an empty
14
+ * `DLOB`.
15
+ */
10
16
  export declare class DLOBSubscriber {
11
17
  velocityClient: VelocityClient;
12
18
  dlobSource: DLOBSource;
13
19
  slotSource: SlotSource;
20
+ /** Polling interval in milliseconds between `DLOB` refreshes. */
14
21
  updateFrequency: number;
22
+ /** Handle of the active polling timer, or `undefined` before `subscribe()`/after `unsubscribe()`. */
15
23
  intervalId?: ReturnType<typeof setTimeout>;
24
+ /** The current `DLOB` snapshot; replaced wholesale on each refresh rather than mutated. */
16
25
  dlob: DLOB;
26
+ /** Emits `'update'` after each successful refresh and `'error'` if a refresh throws. */
17
27
  eventEmitter: StrictEventEmitter<EventEmitter, DLOBSubscriberEvents>;
28
+ /** @throws if `config.velocityClient` is not provided. */
18
29
  constructor(config: DLOBSubscriptionConfig);
30
+ /**
31
+ * Fetches an initial `DLOB` snapshot (awaited before returning) and then starts a timer that
32
+ * refreshes it every `updateFrequency` ms, emitting `'update'` on success or `'error'` if the
33
+ * fetch throws. No-ops if already subscribed.
34
+ */
19
35
  subscribe(): Promise<void>;
36
+ /** Fetches a new `DLOB` snapshot at the current slot (from `slotSource`) via `dlobSource.getDLOB` and replaces `this.dlob`. */
20
37
  updateDLOB(): Promise<void>;
38
+ /** @returns the most recently fetched `DLOB` snapshot (empty until the first successful `subscribe()`/`updateDLOB()`). */
21
39
  getDLOB(): DLOB;
22
40
  /**
23
- * Get the L2 order book for a given market.
41
+ * Get the L2 (aggregated price/size) order book for a given market, using the current
42
+ * `DLOB` snapshot and the current slot from `slotSource`.
24
43
  *
25
- * @param marketName e.g. "SOL-PERP" or "SOL". If not provided, marketIndex and marketType must be provided.
26
- * @param marketIndex
27
- * @param marketType
28
- * @param depth Number of orders to include in the order book. Defaults to 10.
29
- * @param includeVamm Whether to include the VAMM orders in the order book. Defaults to false. If true, creates vAMM generator {@link getVammL2Generator} and adds it to fallbackL2Generators.
30
- * @param fallbackL2Generators L2 generators for fallback liquidity e.g. vAMM {@link getVammL2Generator}
31
- * @param latestSlot Latest slot observed via slot subscriber or similar for accuarate vamm quotes (if including the vAMM).
44
+ * @param marketName e.g. "SOL-PERP" or "SOL". If not provided, `marketIndex` and `marketType` must both be provided.
45
+ * @param marketIndex market index; ignored if `marketName` is provided
46
+ * @param marketType market type; ignored if `marketName` is provided
47
+ * @param depth number of price levels to include per side; defaults to 10
48
+ * @param includeVamm whether to synthesize and merge in vAMM liquidity (perp markets only) via `getVammL2Generator`; defaults to `false`. Throws if `true` and `fallbackL2Generators` is non-empty.
49
+ * @param numVammOrders number of vAMM levels to generate per side when `includeVamm` is true; defaults to `depth`
50
+ * @param fallbackL2Generators additional non-DLOB liquidity sources to merge in, e.g. `getVammL2Generator`'s output; defaults to `[]`
51
+ * @param latestSlot latest observed slot (e.g. from a `SlotSubscriber`), used for more accurate vAMM spread-reserve quotes when `includeVamm` is true; optional
52
+ * @returns the merged `L2OrderBook` (bids/asks with sizes, BASE_PRECISION 1e9, and prices, PRICE_PRECISION 1e6)
53
+ * @throws if `marketName` doesn't resolve to a known market, if neither `marketName` nor both `marketIndex`/`marketType` are given, or if `includeVamm` is combined with a non-empty `fallbackL2Generators`
32
54
  */
33
55
  getL2({ marketName, marketIndex, marketType, depth, includeVamm, numVammOrders, fallbackL2Generators, latestSlot, }: {
34
56
  marketName?: string;
@@ -41,16 +63,21 @@ export declare class DLOBSubscriber {
41
63
  latestSlot?: BN;
42
64
  }): L2OrderBook;
43
65
  /**
44
- * Get the L3 order book for a given market.
66
+ * Get the L3 (individual resting order) book for a given market, using the current `DLOB`
67
+ * snapshot and the current slot from `slotSource`. Does not include fallback (e.g. vAMM)
68
+ * liquidity.
45
69
  *
46
- * @param marketName e.g. "SOL-PERP" or "SOL". If not provided, marketIndex and marketType must be provided.
47
- * @param marketIndex
48
- * @param marketType
70
+ * @param marketName e.g. "SOL-PERP" or "SOL". If not provided, `marketIndex` and `marketType` must both be provided.
71
+ * @param marketIndex market index; ignored if `marketName` is provided
72
+ * @param marketType market type; ignored if `marketName` is provided
73
+ * @returns the `L3OrderBook` (per-order price/size/maker/orderId, prices PRICE_PRECISION 1e6, sizes BASE_PRECISION 1e9)
74
+ * @throws if `marketName` doesn't resolve to a known market, or if neither `marketName` nor both `marketIndex`/`marketType` are given
49
75
  */
50
76
  getL3({ marketName, marketIndex, marketType, }: {
51
77
  marketName?: string;
52
78
  marketIndex?: number;
53
79
  marketType?: MarketType;
54
80
  }): L3OrderBook;
81
+ /** Stops the periodic refresh timer, if running. Safe to call when not subscribed. */
55
82
  unsubscribe(): Promise<void>;
56
83
  }
@@ -5,7 +5,14 @@ const DLOB_1 = require("./DLOB");
5
5
  const events_1 = require("events");
6
6
  const types_1 = require("../types");
7
7
  const orderBookLevels_1 = require("./orderBookLevels");
8
+ /**
9
+ * Keeps a `DLOB` snapshot fresh on a timer and exposes convenience `getL2`/`getL3` accessors that
10
+ * resolve market name/index/type and oracle price data via `velocityClient` so callers don't have
11
+ * to. Until `subscribe()` resolves at least once, `getDLOB()`/`getL2`/`getL3` operate on an empty
12
+ * `DLOB`.
13
+ */
8
14
  class DLOBSubscriber {
15
+ /** @throws if `config.velocityClient` is not provided. */
9
16
  constructor(config) {
10
17
  const velocityClient = config.velocityClient;
11
18
  if (!velocityClient) {
@@ -18,6 +25,11 @@ class DLOBSubscriber {
18
25
  this.dlob = new DLOB_1.DLOB();
19
26
  this.eventEmitter = new events_1.EventEmitter();
20
27
  }
28
+ /**
29
+ * Fetches an initial `DLOB` snapshot (awaited before returning) and then starts a timer that
30
+ * refreshes it every `updateFrequency` ms, emitting `'update'` on success or `'error'` if the
31
+ * fetch throws. No-ops if already subscribed.
32
+ */
21
33
  async subscribe() {
22
34
  if (this.intervalId) {
23
35
  return;
@@ -33,22 +45,28 @@ class DLOBSubscriber {
33
45
  }
34
46
  }, this.updateFrequency);
35
47
  }
48
+ /** Fetches a new `DLOB` snapshot at the current slot (from `slotSource`) via `dlobSource.getDLOB` and replaces `this.dlob`. */
36
49
  async updateDLOB() {
37
50
  this.dlob = await this.dlobSource.getDLOB(this.slotSource.getSlot());
38
51
  }
52
+ /** @returns the most recently fetched `DLOB` snapshot (empty until the first successful `subscribe()`/`updateDLOB()`). */
39
53
  getDLOB() {
40
54
  return this.dlob;
41
55
  }
42
56
  /**
43
- * Get the L2 order book for a given market.
57
+ * Get the L2 (aggregated price/size) order book for a given market, using the current
58
+ * `DLOB` snapshot and the current slot from `slotSource`.
44
59
  *
45
- * @param marketName e.g. "SOL-PERP" or "SOL". If not provided, marketIndex and marketType must be provided.
46
- * @param marketIndex
47
- * @param marketType
48
- * @param depth Number of orders to include in the order book. Defaults to 10.
49
- * @param includeVamm Whether to include the VAMM orders in the order book. Defaults to false. If true, creates vAMM generator {@link getVammL2Generator} and adds it to fallbackL2Generators.
50
- * @param fallbackL2Generators L2 generators for fallback liquidity e.g. vAMM {@link getVammL2Generator}
51
- * @param latestSlot Latest slot observed via slot subscriber or similar for accuarate vamm quotes (if including the vAMM).
60
+ * @param marketName e.g. "SOL-PERP" or "SOL". If not provided, `marketIndex` and `marketType` must both be provided.
61
+ * @param marketIndex market index; ignored if `marketName` is provided
62
+ * @param marketType market type; ignored if `marketName` is provided
63
+ * @param depth number of price levels to include per side; defaults to 10
64
+ * @param includeVamm whether to synthesize and merge in vAMM liquidity (perp markets only) via `getVammL2Generator`; defaults to `false`. Throws if `true` and `fallbackL2Generators` is non-empty.
65
+ * @param numVammOrders number of vAMM levels to generate per side when `includeVamm` is true; defaults to `depth`
66
+ * @param fallbackL2Generators additional non-DLOB liquidity sources to merge in, e.g. `getVammL2Generator`'s output; defaults to `[]`
67
+ * @param latestSlot latest observed slot (e.g. from a `SlotSubscriber`), used for more accurate vAMM spread-reserve quotes when `includeVamm` is true; optional
68
+ * @returns the merged `L2OrderBook` (bids/asks with sizes, BASE_PRECISION 1e9, and prices, PRICE_PRECISION 1e6)
69
+ * @throws if `marketName` doesn't resolve to a known market, if neither `marketName` nor both `marketIndex`/`marketType` are given, or if `includeVamm` is combined with a non-empty `fallbackL2Generators`
52
70
  */
53
71
  getL2({ marketName, marketIndex, marketType, depth = 10, includeVamm = false, numVammOrders, fallbackL2Generators = [], latestSlot, }) {
54
72
  if (marketName) {
@@ -91,9 +109,11 @@ class DLOBSubscriber {
91
109
  oraclePriceData,
92
110
  slot: this.slotSource.getSlot(),
93
111
  fallbackL2Generators: fallbackL2Generators,
112
+ tickSize: perpMarketAccount.orderTickSize,
94
113
  });
95
114
  }
96
115
  const oraclePriceData = this.velocityClient.getOracleDataForSpotMarket(marketIndex);
116
+ const spotMarketAccount = this.velocityClient.getSpotMarketAccountOrThrow(marketIndex);
97
117
  return this.dlob.getL2({
98
118
  marketIndex,
99
119
  marketType: types_1.MarketType.SPOT,
@@ -101,14 +121,19 @@ class DLOBSubscriber {
101
121
  oraclePriceData,
102
122
  slot: this.slotSource.getSlot(),
103
123
  fallbackL2Generators: fallbackL2Generators,
124
+ tickSize: spotMarketAccount.orderTickSize,
104
125
  });
105
126
  }
106
127
  /**
107
- * Get the L3 order book for a given market.
128
+ * Get the L3 (individual resting order) book for a given market, using the current `DLOB`
129
+ * snapshot and the current slot from `slotSource`. Does not include fallback (e.g. vAMM)
130
+ * liquidity.
108
131
  *
109
- * @param marketName e.g. "SOL-PERP" or "SOL". If not provided, marketIndex and marketType must be provided.
110
- * @param marketIndex
111
- * @param marketType
132
+ * @param marketName e.g. "SOL-PERP" or "SOL". If not provided, `marketIndex` and `marketType` must both be provided.
133
+ * @param marketIndex market index; ignored if `marketName` is provided
134
+ * @param marketType market type; ignored if `marketName` is provided
135
+ * @returns the `L3OrderBook` (per-order price/size/maker/orderId, prices PRICE_PRECISION 1e6, sizes BASE_PRECISION 1e9)
136
+ * @throws if `marketName` doesn't resolve to a known market, or if neither `marketName` nor both `marketIndex`/`marketType` are given
112
137
  */
113
138
  getL3({ marketName, marketIndex, marketType, }) {
114
139
  if (marketName) {
@@ -127,21 +152,26 @@ class DLOBSubscriber {
127
152
  const isPerp = (0, types_1.isVariant)(marketType, 'perp');
128
153
  if (isPerp) {
129
154
  const oraclePriceData = this.velocityClient.getMMOracleDataForPerpMarket(marketIndex);
155
+ const perpMarketAccount = this.velocityClient.getPerpMarketAccountOrThrow(marketIndex);
130
156
  return this.dlob.getL3({
131
157
  marketIndex,
132
158
  marketType: types_1.MarketType.PERP,
133
159
  oraclePriceData,
134
160
  slot: this.slotSource.getSlot(),
161
+ tickSize: perpMarketAccount.orderTickSize,
135
162
  });
136
163
  }
137
164
  const oraclePriceData = this.velocityClient.getOracleDataForSpotMarket(marketIndex);
165
+ const spotMarketAccount = this.velocityClient.getSpotMarketAccountOrThrow(marketIndex);
138
166
  return this.dlob.getL3({
139
167
  marketIndex,
140
168
  marketType: types_1.MarketType.SPOT,
141
169
  oraclePriceData,
142
170
  slot: this.slotSource.getSlot(),
171
+ tickSize: spotMarketAccount.orderTickSize,
143
172
  });
144
173
  }
174
+ /** Stops the periodic refresh timer, if running. Safe to call when not subscribed. */
145
175
  async unsubscribe() {
146
176
  if (this.intervalId) {
147
177
  clearInterval(this.intervalId);
@@ -1,26 +1,95 @@
1
1
  import { MarketTypeStr, Order } from '../types';
2
2
  import { DLOBNode, DLOBNodeMap } from './DLOBNode';
3
3
  import { BN } from '../isomorphic/anchor';
4
+ /** Ordering of a `NodeList`'s sort key: `'asc'` for ascending (e.g. asks, lowest price first), `'desc'` for descending (e.g. bids, highest price first). */
4
5
  export type SortDirection = 'asc' | 'desc';
6
+ /**
7
+ * Builds the key used to identify an order uniquely across a user's orders: `"{userAccount}-{orderId}"`.
8
+ * Used as the map key in `NodeList.nodeMap` and to de-duplicate/merge fills in `DLOB`.
9
+ *
10
+ * @param orderId the order's `orderId` (unique per user account, not globally)
11
+ * @param userAccount base58 pubkey string of the order's owner
12
+ * @returns a string uniquely identifying the order within the DLOB
13
+ */
5
14
  export declare function getOrderSignature(orderId: number, userAccount: string): string;
15
+ /** Implemented by anything that can produce a fresh `Generator<DLOBNode>` over its nodes, e.g. `NodeList` itself. */
6
16
  export interface DLOBNodeGenerator {
7
17
  getGenerator(): Generator<DLOBNode>;
8
18
  }
19
+ /**
20
+ * A sorted, doubly-linked list of one order-node type (e.g. resting-limit asks) for one
21
+ * market/side. Insertion walks the list from `head` to find the correct sorted position — O(n)
22
+ * per insert — trading insert speed for cheap best-of-book access (`head`) and cheap iteration.
23
+ * Backed by a `Map` (`nodeMap`) keyed by `getOrderSignature` for O(1) lookup/update/removal by
24
+ * order id.
25
+ */
9
26
  export declare class NodeList<NodeType extends keyof DLOBNodeMap> implements DLOBNodeGenerator {
10
27
  private nodeType;
11
28
  private sortDirection;
29
+ /** The best (first-sorted) node in the list, or `undefined` if empty. For a `'desc'`-sorted bid list this is the highest bid; for `'asc'`-sorted ask list, the lowest ask. */
12
30
  head?: DLOBNodeMap[NodeType];
31
+ /** Number of nodes currently in the list. */
13
32
  length: number;
33
+ /** Nodes keyed by `getOrderSignature(orderId, userAccount)` for O(1) has/get/update/remove. */
14
34
  nodeMap: Map<string, DLOBNodeMap[NodeType]>;
35
+ /**
36
+ * @param nodeType which `DLOBNodeMap` node subclass this list holds
37
+ * @param sortDirection `'asc'` or `'desc'` — the direction new nodes are ordered from `head`
38
+ */
15
39
  constructor(nodeType: NodeType, sortDirection: SortDirection);
40
+ /** Empties the list: clears `head`, resets `length` to 0, and clears `nodeMap`. */
16
41
  clear(): void;
42
+ /**
43
+ * Inserts an order into its sorted position. No-ops if the order's status is not `open`, or
44
+ * if an order with the same signature (`userAccount` + `orderId`) is already present.
45
+ *
46
+ * @param order on-chain order to insert (ignored if not `open`)
47
+ * @param marketType the order's market type, passed through to `createNode`
48
+ * @param userAccount base58 pubkey string of the order's owner
49
+ * @param baseAssetAmount remaining base amount to track on the node, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount`
50
+ */
17
51
  insert(order: Order, marketType: MarketTypeStr, userAccount: string, baseAssetAmount?: BN): void;
52
+ /**
53
+ * Whether `newNode` should be spliced in immediately before `currentNode` given the list's
54
+ * `sortDirection`. Ties on `sortValue` are broken by earlier `order.slot` (arrival order)
55
+ * going first, regardless of sort direction.
56
+ *
57
+ * @param currentNode the node being compared against
58
+ * @param newNode the node being inserted
59
+ * @returns true if `newNode` sorts strictly before `currentNode`
60
+ */
18
61
  prependNode(currentNode: DLOBNodeMap[NodeType], newNode: DLOBNodeMap[NodeType]): boolean;
62
+ /**
63
+ * Updates the existing node's order in place (e.g. after a partial fill changes
64
+ * `baseAssetAmountFilled`) and resets `haveFilled` to `false`. No-ops if the order isn't in
65
+ * this list. Note: this does **not** re-sort the node, so it must not be used to change the
66
+ * node's `sortValue` field (price/slot/trigger price) — remove and re-insert instead.
67
+ *
68
+ * @param order the order's new state
69
+ * @param userAccount base58 pubkey string of the order's owner
70
+ */
19
71
  update(order: Order, userAccount: string): void;
72
+ /**
73
+ * Unlinks and removes the node matching `order`/`userAccount` from the list. No-ops if the
74
+ * order isn't present.
75
+ *
76
+ * @param order the order to remove (matched by `orderId`)
77
+ * @param userAccount base58 pubkey string of the order's owner
78
+ */
20
79
  remove(order: Order, userAccount: string): void;
80
+ /** Yields every node from `head` to tail, in the list's sorted order. A fresh generator is created on each call, so concurrent iteration is safe as long as the list isn't mutated mid-iteration. */
21
81
  getGenerator(): Generator<DLOBNode>;
82
+ /** Returns whether an order with this `orderId`/`userAccount` signature is present in the list. */
22
83
  has(order: Order, userAccount: string): boolean;
84
+ /**
85
+ * Looks up a node directly by its precomputed `getOrderSignature` string.
86
+ *
87
+ * @param orderSignature signature as produced by `getOrderSignature`
88
+ * @returns the matching node, or `undefined` if not present
89
+ */
23
90
  get(orderSignature: string): DLOBNodeMap[NodeType] | undefined;
91
+ /** Debug helper: logs every node's `getLabel()` output to the console, in sorted order. */
24
92
  print(): void;
93
+ /** Debug helper: logs the sort direction and the `head` node's `getLabel()` output (or `'---'` if the list is empty). */
25
94
  printTop(): void;
26
95
  }