@velocity-exchange/sdk 0.0.5 → 0.2.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 (815) hide show
  1. package/.prettierignore +1 -1
  2. package/CHANGELOG.md +35 -0
  3. package/README.md +30 -30
  4. package/bun.lock +24 -2
  5. package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +5 -3
  6. package/lib/browser/accounts/basicUserAccountSubscriber.js +4 -3
  7. package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +5 -3
  8. package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +4 -3
  9. package/lib/browser/accounts/bulkAccountLoader.d.ts +5 -5
  10. package/lib/browser/accounts/bulkAccountLoader.js +12 -1
  11. package/lib/browser/accounts/grpcAccountSubscriber.d.ts +2 -1
  12. package/lib/browser/accounts/grpcAccountSubscriber.js +8 -2
  13. package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +3 -2
  14. package/lib/browser/accounts/grpcMultiAccountSubscriber.js +13 -5
  15. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -1
  16. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +12 -8
  17. package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +2 -1
  18. package/lib/browser/accounts/grpcProgramAccountSubscriber.js +9 -3
  19. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +0 -4
  20. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +19 -6
  21. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +1 -5
  22. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +44 -23
  23. package/lib/browser/accounts/laserProgramAccountSubscriber.js +4 -1
  24. package/lib/browser/accounts/oneShotUserAccountSubscriber.js +4 -3
  25. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +7 -3
  26. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  27. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +3 -3
  28. package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +0 -2
  29. package/lib/browser/accounts/pollingOracleAccountSubscriber.js +16 -5
  30. package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +0 -2
  31. package/lib/browser/accounts/pollingTokenAccountSubscriber.js +16 -5
  32. package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +8 -4
  33. package/lib/browser/accounts/pollingUserAccountSubscriber.js +17 -11
  34. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +4 -2
  35. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +6 -6
  36. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +7 -5
  37. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +69 -35
  38. package/lib/browser/accounts/types.d.ts +6 -12
  39. package/lib/browser/accounts/utils.d.ts +1 -0
  40. package/lib/browser/accounts/utils.js +10 -3
  41. package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +4 -2
  42. package/lib/browser/accounts/webSocketAccountSubscriber.js +17 -5
  43. package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +4 -2
  44. package/lib/browser/accounts/webSocketAccountSubscriberV2.js +17 -6
  45. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  46. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +9 -0
  47. package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +3 -1
  48. package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +14 -3
  49. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -1
  50. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +15 -3
  51. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -1
  52. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +14 -4
  53. package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +4 -2
  54. package/lib/browser/accounts/webSocketUserAccountSubscriber.js +9 -0
  55. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +4 -2
  56. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +9 -0
  57. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +4 -8
  58. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +52 -26
  59. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +7 -7
  60. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +49 -20
  61. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +1 -1
  62. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +0 -3
  63. package/lib/browser/addresses/marketAddresses.js +3 -2
  64. package/lib/browser/addresses/pda.d.ts +1 -9
  65. package/lib/browser/addresses/pda.js +4 -23
  66. package/lib/browser/adminClient.d.ts +25 -29
  67. package/lib/browser/adminClient.js +168 -169
  68. package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +2 -4
  69. package/lib/browser/auctionSubscriber/auctionSubscriber.js +8 -10
  70. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +2 -4
  71. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +11 -10
  72. package/lib/browser/auctionSubscriber/types.d.ts +3 -2
  73. package/lib/browser/bankrun/bankrunConnection.d.ts +6 -4
  74. package/lib/browser/bankrun/bankrunConnection.js +69 -31
  75. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +1 -1
  76. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +3 -2
  77. package/lib/browser/clock/clockSubscriber.d.ts +6 -6
  78. package/lib/browser/clock/clockSubscriber.js +4 -3
  79. package/lib/browser/config.d.ts +11 -20
  80. package/lib/browser/config.js +13 -36
  81. package/lib/browser/constants/index.d.ts +1 -2
  82. package/lib/browser/constants/index.js +1 -2
  83. package/lib/browser/constants/numericConstants.d.ts +1 -3
  84. package/lib/browser/constants/numericConstants.js +3 -5
  85. package/lib/browser/constituentMap/constituentMap.d.ts +0 -2
  86. package/lib/browser/constituentMap/constituentMap.js +10 -6
  87. package/lib/browser/constituentMap/pollingConstituentAccountSubscriber.js +3 -2
  88. package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.d.ts +2 -3
  89. package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.js +10 -3
  90. package/lib/browser/core/VelocityCore.d.ts +9 -15
  91. package/lib/browser/core/VelocityCore.js +5 -7
  92. package/lib/browser/core/instructions/perpOrders.d.ts +14 -0
  93. package/lib/browser/core/instructions/perpOrders.js +14 -0
  94. package/lib/browser/core/instructions/withdraw.d.ts +1 -1
  95. package/lib/browser/core/instructions/withdraw.js +1 -1
  96. package/lib/browser/core/remainingAccounts.d.ts +2 -2
  97. package/lib/browser/core/remainingAccounts.js +5 -5
  98. package/lib/browser/decode/user.js +9 -1
  99. package/lib/browser/dlob/DLOB.d.ts +7 -2
  100. package/lib/browser/dlob/DLOB.js +205 -142
  101. package/lib/browser/dlob/DLOBNode.d.ts +5 -2
  102. package/lib/browser/dlob/DLOBNode.js +7 -0
  103. package/lib/browser/dlob/DLOBSubscriber.d.ts +0 -2
  104. package/lib/browser/dlob/DLOBSubscriber.js +39 -39
  105. package/lib/browser/dlob/NodeList.js +8 -7
  106. package/lib/browser/dlob/orderBookLevels.js +24 -17
  107. package/lib/browser/dlob/types.d.ts +0 -2
  108. package/lib/browser/events/eventList.js +4 -1
  109. package/lib/browser/events/eventSubscriber.d.ts +6 -3
  110. package/lib/browser/events/eventSubscriber.js +75 -26
  111. package/lib/browser/events/eventsServerLogProvider.d.ts +1 -1
  112. package/lib/browser/events/eventsServerLogProvider.js +17 -10
  113. package/lib/browser/events/fetchLogs.d.ts +1 -1
  114. package/lib/browser/events/fetchLogs.js +4 -2
  115. package/lib/browser/events/parse.js +14 -14
  116. package/lib/browser/events/pollingLogProvider.d.ts +1 -1
  117. package/lib/browser/events/pollingLogProvider.js +1 -0
  118. package/lib/browser/events/txEventCache.js +6 -2
  119. package/lib/browser/events/types.d.ts +3 -7
  120. package/lib/browser/events/types.js +1 -3
  121. package/lib/browser/events/webSocketLogProvider.d.ts +1 -1
  122. package/lib/browser/events/webSocketLogProvider.js +5 -2
  123. package/lib/browser/factory/bigNum.js +1 -1
  124. package/lib/{node/idl/drift.d.ts → browser/idl/velocity.d.ts} +2412 -2481
  125. package/lib/browser/idl/{drift.json → velocity.json} +2265 -2333
  126. package/lib/browser/index.d.ts +1 -3
  127. package/lib/browser/index.js +1 -4
  128. package/lib/browser/jupiter/jupiterClient.d.ts +1 -1
  129. package/lib/browser/jupiter/jupiterClient.js +18 -8
  130. package/lib/browser/marginCalculation.js +1 -0
  131. package/lib/browser/math/amm.d.ts +31 -13
  132. package/lib/browser/math/amm.js +87 -31
  133. package/lib/browser/math/auction.js +16 -12
  134. package/lib/browser/math/bankruptcy.js +1 -1
  135. package/lib/browser/math/builder.d.ts +18 -1
  136. package/lib/browser/math/builder.js +32 -1
  137. package/lib/browser/math/funding.js +30 -30
  138. package/lib/browser/math/insurance.d.ts +1 -1
  139. package/lib/browser/math/insurance.js +4 -5
  140. package/lib/browser/math/margin.d.ts +3 -11
  141. package/lib/browser/math/margin.js +10 -69
  142. package/lib/browser/math/market.d.ts +4 -12
  143. package/lib/browser/math/market.js +12 -46
  144. package/lib/browser/math/oracles.d.ts +4 -7
  145. package/lib/browser/math/oracles.js +24 -37
  146. package/lib/browser/math/orders.d.ts +2 -7
  147. package/lib/browser/math/orders.js +9 -81
  148. package/lib/browser/math/position.d.ts +0 -4
  149. package/lib/browser/math/position.js +6 -11
  150. package/lib/browser/math/repeg.d.ts +0 -1
  151. package/lib/browser/math/repeg.js +1 -23
  152. package/lib/browser/math/spotBalance.d.ts +4 -4
  153. package/lib/browser/math/spotBalance.js +6 -6
  154. package/lib/browser/math/spotMarket.d.ts +0 -6
  155. package/lib/browser/math/spotMarket.js +1 -16
  156. package/lib/browser/math/spotPosition.d.ts +4 -4
  157. package/lib/browser/math/state.d.ts +0 -2
  158. package/lib/browser/math/state.js +1 -9
  159. package/lib/browser/math/superStake.d.ts +11 -63
  160. package/lib/browser/math/superStake.js +29 -28
  161. package/lib/browser/math/trade.js +7 -7
  162. package/lib/browser/math/utils.d.ts +1 -1
  163. package/lib/browser/math/utils.js +1 -1
  164. package/lib/browser/memcmp.d.ts +0 -1
  165. package/lib/browser/memcmp.js +1 -10
  166. package/lib/browser/oracles/prelaunchOracleClient.js +3 -2
  167. package/lib/browser/oracles/pythClient.js +9 -3
  168. package/lib/browser/oracles/pythLazerClient.js +5 -4
  169. package/lib/browser/oracles/utils.d.ts +4 -0
  170. package/lib/browser/oracles/utils.js +9 -1
  171. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +1 -3
  172. package/lib/browser/orderSubscriber/OrderSubscriber.js +16 -14
  173. package/lib/browser/orderSubscriber/WebsocketSubscription.js +1 -1
  174. package/lib/browser/orderSubscriber/grpcSubscription.js +2 -2
  175. package/lib/browser/orderSubscriber/types.d.ts +0 -2
  176. package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +1 -1
  177. package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +2 -6
  178. package/lib/browser/priorityFee/priorityFeeSubscriber.js +34 -18
  179. package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +0 -4
  180. package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +3 -11
  181. package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +1 -1
  182. package/lib/browser/priorityFee/types.d.ts +3 -8
  183. package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +0 -8
  184. package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +1 -3
  185. package/lib/browser/pyth/pythLazerSubscriber.d.ts +1 -1
  186. package/lib/browser/pyth/pythLazerSubscriber.js +1 -1
  187. package/lib/browser/pyth/types.d.ts +0 -1
  188. package/lib/browser/slot/SlotSubscriber.d.ts +1 -1
  189. package/lib/browser/slot/SlotSubscriber.js +2 -1
  190. package/lib/browser/slot/SlothashSubscriber.d.ts +3 -2
  191. package/lib/browser/slot/SlothashSubscriber.js +11 -4
  192. package/lib/browser/swap/UnifiedSwapClient.js +1 -1
  193. package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.d.ts +0 -3
  194. package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.js +5 -5
  195. package/lib/browser/swift/signedMsgUserAccountSubscriber.d.ts +7 -7
  196. package/lib/browser/swift/signedMsgUserAccountSubscriber.js +14 -10
  197. package/lib/browser/swift/swiftOrderSubscriber.d.ts +7 -6
  198. package/lib/browser/swift/swiftOrderSubscriber.js +15 -16
  199. package/lib/browser/testClient.js +3 -2
  200. package/lib/browser/tokenFaucet.js +16 -2
  201. package/lib/browser/tx/baseTxSender.d.ts +4 -4
  202. package/lib/browser/tx/baseTxSender.js +5 -4
  203. package/lib/browser/tx/fastSingleTxSender.d.ts +3 -3
  204. package/lib/browser/tx/fastSingleTxSender.js +9 -5
  205. package/lib/browser/tx/reportTransactionError.d.ts +2 -2
  206. package/lib/browser/tx/reportTransactionError.js +5 -1
  207. package/lib/browser/tx/retryTxSender.d.ts +1 -1
  208. package/lib/browser/tx/retryTxSender.js +4 -2
  209. package/lib/browser/tx/txHandler.d.ts +7 -1
  210. package/lib/browser/tx/txHandler.js +54 -40
  211. package/lib/browser/tx/txParamProcessor.d.ts +4 -1
  212. package/lib/browser/tx/txParamProcessor.js +6 -0
  213. package/lib/browser/tx/types.d.ts +1 -1
  214. package/lib/browser/tx/whileValidTxSender.d.ts +1 -6
  215. package/lib/browser/tx/whileValidTxSender.js +35 -13
  216. package/lib/browser/types.d.ts +102 -157
  217. package/lib/browser/types.js +6 -2
  218. package/lib/browser/user.d.ts +22 -10
  219. package/lib/browser/user.js +174 -154
  220. package/lib/browser/userConfig.d.ts +3 -2
  221. package/lib/browser/userMap/WebsocketSubscription.d.ts +1 -1
  222. package/lib/browser/userMap/WebsocketSubscription.js +1 -1
  223. package/lib/browser/userMap/grpcSubscription.d.ts +1 -1
  224. package/lib/browser/userMap/grpcSubscription.js +1 -1
  225. package/lib/browser/userMap/referrerMap.d.ts +0 -2
  226. package/lib/browser/userMap/referrerMap.js +10 -7
  227. package/lib/browser/userMap/revenueShareEscrowMap.d.ts +0 -2
  228. package/lib/browser/userMap/revenueShareEscrowMap.js +4 -4
  229. package/lib/browser/userMap/userMap.d.ts +3 -5
  230. package/lib/browser/userMap/userMap.js +39 -30
  231. package/lib/browser/userMap/userMapConfig.d.ts +3 -2
  232. package/lib/browser/userMap/userStatsMap.d.ts +1 -3
  233. package/lib/browser/userMap/userStatsMap.js +18 -17
  234. package/lib/browser/userStats.d.ts +7 -4
  235. package/lib/browser/userStats.js +28 -18
  236. package/lib/browser/userStatsConfig.d.ts +3 -2
  237. package/lib/browser/util/TransactionConfirmationManager.js +4 -2
  238. package/lib/browser/util/chainClock.d.ts +1 -1
  239. package/lib/browser/util/computeUnits.d.ts +1 -1
  240. package/lib/browser/util/computeUnits.js +6 -1
  241. package/lib/browser/util/ed25519Utils.d.ts +1 -1
  242. package/lib/browser/util/ed25519Utils.js +1 -1
  243. package/lib/browser/velocityClient.d.ts +144 -71
  244. package/lib/browser/velocityClient.js +653 -457
  245. package/lib/browser/velocityClientConfig.d.ts +0 -8
  246. package/lib/node/accounts/basicUserAccountSubscriber.d.ts +5 -3
  247. package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
  248. package/lib/node/accounts/basicUserAccountSubscriber.js +4 -3
  249. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +5 -3
  250. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
  251. package/lib/node/accounts/basicUserStatsAccountSubscriber.js +4 -3
  252. package/lib/node/accounts/bulkAccountLoader.d.ts +5 -5
  253. package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
  254. package/lib/node/accounts/bulkAccountLoader.js +12 -1
  255. package/lib/node/accounts/grpcAccountSubscriber.d.ts +2 -1
  256. package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
  257. package/lib/node/accounts/grpcAccountSubscriber.js +8 -2
  258. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +3 -2
  259. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
  260. package/lib/node/accounts/grpcMultiAccountSubscriber.js +13 -5
  261. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -1
  262. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
  263. package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +12 -8
  264. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +2 -1
  265. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
  266. package/lib/node/accounts/grpcProgramAccountSubscriber.js +9 -3
  267. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +0 -4
  268. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
  269. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +19 -6
  270. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +1 -5
  271. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  272. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +44 -23
  273. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
  274. package/lib/node/accounts/laserProgramAccountSubscriber.js +4 -1
  275. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
  276. package/lib/node/accounts/oneShotUserAccountSubscriber.js +4 -3
  277. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
  278. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +7 -3
  279. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  280. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  281. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +3 -3
  282. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +0 -2
  283. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
  284. package/lib/node/accounts/pollingOracleAccountSubscriber.js +16 -5
  285. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +0 -2
  286. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
  287. package/lib/node/accounts/pollingTokenAccountSubscriber.js +16 -5
  288. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +8 -4
  289. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
  290. package/lib/node/accounts/pollingUserAccountSubscriber.js +17 -11
  291. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +4 -2
  292. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
  293. package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +6 -6
  294. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +7 -5
  295. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
  296. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +69 -35
  297. package/lib/node/accounts/types.d.ts +6 -12
  298. package/lib/node/accounts/types.d.ts.map +1 -1
  299. package/lib/node/accounts/utils.d.ts +1 -0
  300. package/lib/node/accounts/utils.d.ts.map +1 -1
  301. package/lib/node/accounts/utils.js +10 -3
  302. package/lib/node/accounts/webSocketAccountSubscriber.d.ts +4 -2
  303. package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
  304. package/lib/node/accounts/webSocketAccountSubscriber.js +17 -5
  305. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +4 -2
  306. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
  307. package/lib/node/accounts/webSocketAccountSubscriberV2.js +17 -6
  308. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  309. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  310. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +9 -0
  311. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +3 -1
  312. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
  313. package/lib/node/accounts/webSocketProgramAccountSubscriber.js +14 -3
  314. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -1
  315. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
  316. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +15 -3
  317. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -1
  318. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
  319. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +14 -4
  320. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +4 -2
  321. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
  322. package/lib/node/accounts/webSocketUserAccountSubscriber.js +9 -0
  323. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +4 -2
  324. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
  325. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +9 -0
  326. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +4 -8
  327. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
  328. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +52 -26
  329. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +7 -7
  330. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  331. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +49 -20
  332. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +1 -1
  333. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
  334. package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +0 -3
  335. package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
  336. package/lib/node/addresses/marketAddresses.js +3 -2
  337. package/lib/node/addresses/pda.d.ts +1 -9
  338. package/lib/node/addresses/pda.d.ts.map +1 -1
  339. package/lib/node/addresses/pda.js +4 -23
  340. package/lib/node/adminClient.d.ts +25 -29
  341. package/lib/node/adminClient.d.ts.map +1 -1
  342. package/lib/node/adminClient.js +168 -169
  343. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +2 -4
  344. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
  345. package/lib/node/auctionSubscriber/auctionSubscriber.js +8 -10
  346. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +2 -4
  347. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
  348. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +11 -10
  349. package/lib/node/auctionSubscriber/types.d.ts +3 -2
  350. package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
  351. package/lib/node/bankrun/bankrunConnection.d.ts +6 -4
  352. package/lib/node/bankrun/bankrunConnection.d.ts.map +1 -1
  353. package/lib/node/bankrun/bankrunConnection.js +69 -31
  354. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +1 -1
  355. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
  356. package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +3 -2
  357. package/lib/node/clock/clockSubscriber.d.ts +6 -6
  358. package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
  359. package/lib/node/clock/clockSubscriber.js +4 -3
  360. package/lib/node/config.d.ts +11 -20
  361. package/lib/node/config.d.ts.map +1 -1
  362. package/lib/node/config.js +13 -36
  363. package/lib/node/constants/index.d.ts +1 -2
  364. package/lib/node/constants/index.d.ts.map +1 -1
  365. package/lib/node/constants/index.js +1 -2
  366. package/lib/node/constants/numericConstants.d.ts +1 -3
  367. package/lib/node/constants/numericConstants.d.ts.map +1 -1
  368. package/lib/node/constants/numericConstants.js +3 -5
  369. package/lib/node/constituentMap/constituentMap.d.ts +0 -2
  370. package/lib/node/constituentMap/constituentMap.d.ts.map +1 -1
  371. package/lib/node/constituentMap/constituentMap.js +10 -6
  372. package/lib/node/constituentMap/pollingConstituentAccountSubscriber.d.ts.map +1 -1
  373. package/lib/node/constituentMap/pollingConstituentAccountSubscriber.js +3 -2
  374. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts +2 -3
  375. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts.map +1 -1
  376. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.js +10 -3
  377. package/lib/node/core/VelocityCore.d.ts +9 -15
  378. package/lib/node/core/VelocityCore.d.ts.map +1 -1
  379. package/lib/node/core/VelocityCore.js +5 -7
  380. package/lib/node/core/instructions/perpOrders.d.ts +14 -0
  381. package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
  382. package/lib/node/core/instructions/perpOrders.js +14 -0
  383. package/lib/node/core/instructions/withdraw.d.ts +1 -1
  384. package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
  385. package/lib/node/core/instructions/withdraw.js +1 -1
  386. package/lib/node/core/remainingAccounts.d.ts +2 -2
  387. package/lib/node/core/remainingAccounts.d.ts.map +1 -1
  388. package/lib/node/core/remainingAccounts.js +5 -5
  389. package/lib/node/decode/user.d.ts.map +1 -1
  390. package/lib/node/decode/user.js +9 -1
  391. package/lib/node/dlob/DLOB.d.ts +7 -2
  392. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  393. package/lib/node/dlob/DLOB.js +205 -142
  394. package/lib/node/dlob/DLOBNode.d.ts +5 -2
  395. package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
  396. package/lib/node/dlob/DLOBNode.js +7 -0
  397. package/lib/node/dlob/DLOBSubscriber.d.ts +0 -2
  398. package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
  399. package/lib/node/dlob/DLOBSubscriber.js +39 -39
  400. package/lib/node/dlob/NodeList.d.ts.map +1 -1
  401. package/lib/node/dlob/NodeList.js +8 -7
  402. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  403. package/lib/node/dlob/orderBookLevels.js +24 -17
  404. package/lib/node/dlob/types.d.ts +0 -2
  405. package/lib/node/dlob/types.d.ts.map +1 -1
  406. package/lib/node/events/eventList.d.ts +3 -3
  407. package/lib/node/events/eventList.d.ts.map +1 -1
  408. package/lib/node/events/eventList.js +4 -1
  409. package/lib/node/events/eventSubscriber.d.ts +6 -3
  410. package/lib/node/events/eventSubscriber.d.ts.map +1 -1
  411. package/lib/node/events/eventSubscriber.js +75 -26
  412. package/lib/node/events/eventsServerLogProvider.d.ts +2 -2
  413. package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
  414. package/lib/node/events/eventsServerLogProvider.js +17 -10
  415. package/lib/node/events/fetchLogs.d.ts +1 -1
  416. package/lib/node/events/fetchLogs.d.ts.map +1 -1
  417. package/lib/node/events/fetchLogs.js +4 -2
  418. package/lib/node/events/parse.d.ts.map +1 -1
  419. package/lib/node/events/parse.js +14 -14
  420. package/lib/node/events/pollingLogProvider.d.ts +2 -2
  421. package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
  422. package/lib/node/events/pollingLogProvider.js +1 -0
  423. package/lib/node/events/txEventCache.d.ts +3 -3
  424. package/lib/node/events/txEventCache.d.ts.map +1 -1
  425. package/lib/node/events/txEventCache.js +6 -2
  426. package/lib/node/events/types.d.ts +3 -7
  427. package/lib/node/events/types.d.ts.map +1 -1
  428. package/lib/node/events/types.js +1 -3
  429. package/lib/node/events/webSocketLogProvider.d.ts +2 -2
  430. package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
  431. package/lib/node/events/webSocketLogProvider.js +5 -2
  432. package/lib/node/factory/bigNum.js +1 -1
  433. package/lib/{browser/idl/drift.d.ts → node/idl/velocity.d.ts} +2413 -2480
  434. package/lib/node/idl/velocity.d.ts.map +1 -0
  435. package/lib/node/idl/{drift.json → velocity.json} +2265 -2333
  436. package/lib/node/index.d.ts +1 -3
  437. package/lib/node/index.d.ts.map +1 -1
  438. package/lib/node/index.js +1 -4
  439. package/lib/node/jupiter/jupiterClient.d.ts +1 -1
  440. package/lib/node/jupiter/jupiterClient.d.ts.map +1 -1
  441. package/lib/node/jupiter/jupiterClient.js +18 -8
  442. package/lib/node/marginCalculation.d.ts.map +1 -1
  443. package/lib/node/marginCalculation.js +1 -0
  444. package/lib/node/math/amm.d.ts +31 -13
  445. package/lib/node/math/amm.d.ts.map +1 -1
  446. package/lib/node/math/amm.js +87 -31
  447. package/lib/node/math/auction.d.ts.map +1 -1
  448. package/lib/node/math/auction.js +16 -12
  449. package/lib/node/math/bankruptcy.js +1 -1
  450. package/lib/node/math/builder.d.ts +18 -1
  451. package/lib/node/math/builder.d.ts.map +1 -1
  452. package/lib/node/math/builder.js +32 -1
  453. package/lib/node/math/funding.d.ts.map +1 -1
  454. package/lib/node/math/funding.js +30 -30
  455. package/lib/node/math/insurance.d.ts +1 -1
  456. package/lib/node/math/insurance.d.ts.map +1 -1
  457. package/lib/node/math/insurance.js +4 -5
  458. package/lib/node/math/margin.d.ts +3 -11
  459. package/lib/node/math/margin.d.ts.map +1 -1
  460. package/lib/node/math/margin.js +10 -69
  461. package/lib/node/math/market.d.ts +4 -12
  462. package/lib/node/math/market.d.ts.map +1 -1
  463. package/lib/node/math/market.js +12 -46
  464. package/lib/node/math/oracles.d.ts +4 -7
  465. package/lib/node/math/oracles.d.ts.map +1 -1
  466. package/lib/node/math/oracles.js +24 -37
  467. package/lib/node/math/orders.d.ts +2 -7
  468. package/lib/node/math/orders.d.ts.map +1 -1
  469. package/lib/node/math/orders.js +9 -81
  470. package/lib/node/math/position.d.ts +1 -5
  471. package/lib/node/math/position.d.ts.map +1 -1
  472. package/lib/node/math/position.js +6 -11
  473. package/lib/node/math/repeg.d.ts +0 -1
  474. package/lib/node/math/repeg.d.ts.map +1 -1
  475. package/lib/node/math/repeg.js +1 -23
  476. package/lib/node/math/spotBalance.d.ts +4 -4
  477. package/lib/node/math/spotBalance.d.ts.map +1 -1
  478. package/lib/node/math/spotBalance.js +6 -6
  479. package/lib/node/math/spotMarket.d.ts +0 -6
  480. package/lib/node/math/spotMarket.d.ts.map +1 -1
  481. package/lib/node/math/spotMarket.js +1 -16
  482. package/lib/node/math/spotPosition.d.ts +4 -4
  483. package/lib/node/math/spotPosition.d.ts.map +1 -1
  484. package/lib/node/math/state.d.ts +0 -2
  485. package/lib/node/math/state.d.ts.map +1 -1
  486. package/lib/node/math/state.js +1 -9
  487. package/lib/node/math/superStake.d.ts +11 -63
  488. package/lib/node/math/superStake.d.ts.map +1 -1
  489. package/lib/node/math/superStake.js +29 -28
  490. package/lib/node/math/trade.d.ts +2 -2
  491. package/lib/node/math/trade.d.ts.map +1 -1
  492. package/lib/node/math/trade.js +7 -7
  493. package/lib/node/math/utils.d.ts +1 -1
  494. package/lib/node/math/utils.js +1 -1
  495. package/lib/node/memcmp.d.ts +0 -1
  496. package/lib/node/memcmp.d.ts.map +1 -1
  497. package/lib/node/memcmp.js +1 -10
  498. package/lib/node/oracles/oracleClientCache.d.ts +1 -1
  499. package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
  500. package/lib/node/oracles/prelaunchOracleClient.js +3 -2
  501. package/lib/node/oracles/pythClient.d.ts.map +1 -1
  502. package/lib/node/oracles/pythClient.js +9 -3
  503. package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
  504. package/lib/node/oracles/pythLazerClient.js +5 -4
  505. package/lib/node/oracles/utils.d.ts +4 -0
  506. package/lib/node/oracles/utils.d.ts.map +1 -1
  507. package/lib/node/oracles/utils.js +9 -1
  508. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +1 -3
  509. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  510. package/lib/node/orderSubscriber/OrderSubscriber.js +16 -14
  511. package/lib/node/orderSubscriber/WebsocketSubscription.js +1 -1
  512. package/lib/node/orderSubscriber/grpcSubscription.js +2 -2
  513. package/lib/node/orderSubscriber/types.d.ts +0 -2
  514. package/lib/node/orderSubscriber/types.d.ts.map +1 -1
  515. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +1 -1
  516. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
  517. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +2 -6
  518. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
  519. package/lib/node/priorityFee/priorityFeeSubscriber.js +34 -18
  520. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +0 -4
  521. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
  522. package/lib/node/priorityFee/priorityFeeSubscriberMap.js +3 -11
  523. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +1 -1
  524. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
  525. package/lib/node/priorityFee/types.d.ts +3 -8
  526. package/lib/node/priorityFee/types.d.ts.map +1 -1
  527. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +0 -8
  528. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
  529. package/lib/node/priorityFee/velocityPriorityFeeMethod.js +1 -3
  530. package/lib/node/pyth/pythLazerSubscriber.d.ts +1 -1
  531. package/lib/node/pyth/pythLazerSubscriber.js +1 -1
  532. package/lib/node/pyth/types.d.ts +0 -1
  533. package/lib/node/pyth/types.d.ts.map +1 -1
  534. package/lib/node/slot/SlotSubscriber.d.ts +1 -1
  535. package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
  536. package/lib/node/slot/SlotSubscriber.js +2 -1
  537. package/lib/node/slot/SlothashSubscriber.d.ts +3 -2
  538. package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
  539. package/lib/node/slot/SlothashSubscriber.js +11 -4
  540. package/lib/node/swap/UnifiedSwapClient.js +1 -1
  541. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts +0 -3
  542. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts.map +1 -1
  543. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.js +5 -5
  544. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts +7 -7
  545. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts.map +1 -1
  546. package/lib/node/swift/signedMsgUserAccountSubscriber.js +14 -10
  547. package/lib/node/swift/swiftOrderSubscriber.d.ts +7 -6
  548. package/lib/node/swift/swiftOrderSubscriber.d.ts.map +1 -1
  549. package/lib/node/swift/swiftOrderSubscriber.js +15 -16
  550. package/lib/node/testClient.js +3 -2
  551. package/lib/node/tokenFaucet.d.ts.map +1 -1
  552. package/lib/node/tokenFaucet.js +16 -2
  553. package/lib/node/tx/baseTxSender.d.ts +4 -4
  554. package/lib/node/tx/baseTxSender.d.ts.map +1 -1
  555. package/lib/node/tx/baseTxSender.js +5 -4
  556. package/lib/node/tx/fastSingleTxSender.d.ts +3 -3
  557. package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
  558. package/lib/node/tx/fastSingleTxSender.js +9 -5
  559. package/lib/node/tx/reportTransactionError.d.ts +2 -2
  560. package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
  561. package/lib/node/tx/reportTransactionError.js +5 -1
  562. package/lib/node/tx/retryTxSender.d.ts +1 -1
  563. package/lib/node/tx/retryTxSender.d.ts.map +1 -1
  564. package/lib/node/tx/retryTxSender.js +4 -2
  565. package/lib/node/tx/txHandler.d.ts +9 -3
  566. package/lib/node/tx/txHandler.d.ts.map +1 -1
  567. package/lib/node/tx/txHandler.js +54 -40
  568. package/lib/node/tx/txParamProcessor.d.ts +4 -1
  569. package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
  570. package/lib/node/tx/txParamProcessor.js +6 -0
  571. package/lib/node/tx/types.d.ts +1 -1
  572. package/lib/node/tx/types.d.ts.map +1 -1
  573. package/lib/node/tx/whileValidTxSender.d.ts +1 -6
  574. package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
  575. package/lib/node/tx/whileValidTxSender.js +35 -13
  576. package/lib/node/types.d.ts +100 -155
  577. package/lib/node/types.d.ts.map +1 -1
  578. package/lib/node/types.js +6 -2
  579. package/lib/node/user.d.ts +22 -10
  580. package/lib/node/user.d.ts.map +1 -1
  581. package/lib/node/user.js +174 -154
  582. package/lib/node/userConfig.d.ts +3 -2
  583. package/lib/node/userConfig.d.ts.map +1 -1
  584. package/lib/node/userMap/WebsocketSubscription.d.ts +1 -1
  585. package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
  586. package/lib/node/userMap/WebsocketSubscription.js +1 -1
  587. package/lib/node/userMap/grpcSubscription.d.ts +1 -1
  588. package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
  589. package/lib/node/userMap/grpcSubscription.js +1 -1
  590. package/lib/node/userMap/referrerMap.d.ts +0 -2
  591. package/lib/node/userMap/referrerMap.d.ts.map +1 -1
  592. package/lib/node/userMap/referrerMap.js +10 -7
  593. package/lib/node/userMap/revenueShareEscrowMap.d.ts +0 -2
  594. package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
  595. package/lib/node/userMap/revenueShareEscrowMap.js +4 -4
  596. package/lib/node/userMap/userMap.d.ts +3 -5
  597. package/lib/node/userMap/userMap.d.ts.map +1 -1
  598. package/lib/node/userMap/userMap.js +39 -30
  599. package/lib/node/userMap/userMapConfig.d.ts +3 -2
  600. package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
  601. package/lib/node/userMap/userStatsMap.d.ts +1 -3
  602. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  603. package/lib/node/userMap/userStatsMap.js +18 -17
  604. package/lib/node/userStats.d.ts +7 -4
  605. package/lib/node/userStats.d.ts.map +1 -1
  606. package/lib/node/userStats.js +28 -18
  607. package/lib/node/userStatsConfig.d.ts +3 -2
  608. package/lib/node/userStatsConfig.d.ts.map +1 -1
  609. package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
  610. package/lib/node/util/TransactionConfirmationManager.js +4 -2
  611. package/lib/node/util/chainClock.d.ts +1 -1
  612. package/lib/node/util/chainClock.d.ts.map +1 -1
  613. package/lib/node/util/computeUnits.d.ts +1 -1
  614. package/lib/node/util/computeUnits.d.ts.map +1 -1
  615. package/lib/node/util/computeUnits.js +6 -1
  616. package/lib/node/util/ed25519Utils.d.ts +1 -1
  617. package/lib/node/util/ed25519Utils.js +1 -1
  618. package/lib/node/velocityClient.d.ts +145 -72
  619. package/lib/node/velocityClient.d.ts.map +1 -1
  620. package/lib/node/velocityClient.js +653 -457
  621. package/lib/node/velocityClientConfig.d.ts +0 -8
  622. package/lib/node/velocityClientConfig.d.ts.map +1 -1
  623. package/package.json +10 -9
  624. package/scripts/deposit-isolated-positions.ts +2 -2
  625. package/scripts/find-flagged-users.ts +1 -1
  626. package/scripts/grpc-client-test-comparison.ts +4 -4
  627. package/scripts/grpc-multiuser-client-test-comparison.ts +2 -2
  628. package/scripts/single-grpc-client-test.ts +3 -3
  629. package/scripts/updateVersion.js +4 -4
  630. package/scripts/withdraw-isolated-positions.ts +2 -2
  631. package/src/accounts/basicUserAccountSubscriber.ts +7 -5
  632. package/src/accounts/basicUserStatsAccountSubscriber.ts +9 -5
  633. package/src/accounts/bulkAccountLoader.ts +20 -7
  634. package/src/accounts/grpcAccountSubscriber.ts +11 -3
  635. package/src/accounts/grpcMultiAccountSubscriber.ts +24 -9
  636. package/src/accounts/grpcMultiUserAccountSubscriber.ts +16 -12
  637. package/src/accounts/grpcProgramAccountSubscriber.ts +12 -4
  638. package/src/accounts/grpcVelocityClientAccountSubscriber.ts +17 -14
  639. package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +69 -49
  640. package/src/accounts/laserProgramAccountSubscriber.ts +4 -1
  641. package/src/accounts/oneShotUserAccountSubscriber.ts +5 -3
  642. package/src/accounts/oneShotUserStatsAccountSubscriber.ts +8 -3
  643. package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +11 -5
  644. package/src/accounts/pollingOracleAccountSubscriber.ts +17 -10
  645. package/src/accounts/pollingTokenAccountSubscriber.ts +17 -10
  646. package/src/accounts/pollingUserAccountSubscriber.ts +26 -20
  647. package/src/accounts/pollingUserStatsAccountSubscriber.ts +12 -10
  648. package/src/accounts/pollingVelocityClientAccountSubscriber.ts +80 -41
  649. package/src/accounts/types.ts +8 -13
  650. package/src/accounts/utils.ts +12 -2
  651. package/src/accounts/webSocketAccountSubscriber.ts +23 -10
  652. package/src/accounts/webSocketAccountSubscriberV2.ts +23 -8
  653. package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +17 -2
  654. package/src/accounts/webSocketProgramAccountSubscriber.ts +29 -4
  655. package/src/accounts/webSocketProgramAccountSubscriberV2.ts +30 -4
  656. package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +29 -4
  657. package/src/accounts/webSocketUserAccountSubscriber.ts +11 -2
  658. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +15 -2
  659. package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +79 -58
  660. package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +77 -45
  661. package/src/accounts/websocketProgramUserAccountSubscriber.ts +1 -6
  662. package/src/addresses/marketAddresses.ts +3 -2
  663. package/src/addresses/pda.ts +3 -38
  664. package/src/adminClient.ts +285 -315
  665. package/src/auctionSubscriber/auctionSubscriber.ts +8 -11
  666. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +13 -11
  667. package/src/auctionSubscriber/types.ts +3 -3
  668. package/src/bankrun/bankrunConnection.ts +83 -39
  669. package/src/blockhashSubscriber/BlockhashSubscriber.ts +5 -4
  670. package/src/clock/clockSubscriber.ts +10 -9
  671. package/src/config.ts +16 -70
  672. package/src/constants/index.ts +1 -2
  673. package/src/constants/numericConstants.ts +3 -3
  674. package/src/constituentMap/constituentMap.ts +10 -7
  675. package/src/constituentMap/pollingConstituentAccountSubscriber.ts +4 -2
  676. package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +13 -4
  677. package/src/core/VelocityCore.ts +11 -20
  678. package/src/core/instructions/perpOrders.ts +14 -0
  679. package/src/core/instructions/withdraw.ts +2 -2
  680. package/src/core/remainingAccounts.ts +7 -7
  681. package/src/decode/user.ts +8 -1
  682. package/src/dlob/DLOB.ts +300 -176
  683. package/src/dlob/DLOBNode.ts +23 -3
  684. package/src/dlob/DLOBSubscriber.ts +53 -42
  685. package/src/dlob/NodeList.ts +8 -7
  686. package/src/dlob/orderBookLevels.ts +51 -25
  687. package/src/dlob/types.ts +0 -2
  688. package/src/events/eventList.ts +4 -1
  689. package/src/events/eventSubscriber.ts +108 -50
  690. package/src/events/eventsServerLogProvider.ts +24 -15
  691. package/src/events/fetchLogs.ts +3 -3
  692. package/src/events/parse.ts +14 -14
  693. package/src/events/pollingLogProvider.ts +2 -2
  694. package/src/events/txEventCache.ts +8 -2
  695. package/src/events/types.ts +4 -15
  696. package/src/events/webSocketLogProvider.ts +5 -3
  697. package/src/factory/bigNum.ts +2 -2
  698. package/src/idl/{drift.json → velocity.json} +2265 -2333
  699. package/src/idl/{drift.ts → velocity.ts} +2267 -2335
  700. package/src/index.ts +1 -6
  701. package/src/jupiter/jupiterClient.ts +30 -10
  702. package/src/margin/README.md +2 -2
  703. package/src/marginCalculation.ts +1 -0
  704. package/src/math/amm.ts +217 -40
  705. package/src/math/auction.ts +16 -12
  706. package/src/math/bankruptcy.ts +1 -1
  707. package/src/math/builder.ts +45 -1
  708. package/src/math/funding.ts +51 -47
  709. package/src/math/insurance.ts +6 -8
  710. package/src/math/margin.ts +12 -119
  711. package/src/math/market.ts +16 -98
  712. package/src/math/oracles.ts +29 -43
  713. package/src/math/orders.ts +13 -109
  714. package/src/math/position.ts +6 -12
  715. package/src/math/repeg.ts +0 -29
  716. package/src/math/spotBalance.ts +14 -10
  717. package/src/math/spotMarket.ts +2 -28
  718. package/src/math/spotPosition.ts +4 -4
  719. package/src/math/state.ts +0 -8
  720. package/src/math/superStake.ts +36 -85
  721. package/src/math/trade.ts +7 -3
  722. package/src/math/utils.ts +1 -1
  723. package/src/memcmp.ts +0 -9
  724. package/src/oracles/prelaunchOracleClient.ts +7 -2
  725. package/src/oracles/pythClient.ts +12 -3
  726. package/src/oracles/pythLazerClient.ts +10 -5
  727. package/src/oracles/utils.ts +15 -0
  728. package/src/orderSubscriber/OrderSubscriber.ts +12 -12
  729. package/src/orderSubscriber/WebsocketSubscription.ts +1 -1
  730. package/src/orderSubscriber/grpcSubscription.ts +2 -2
  731. package/src/orderSubscriber/types.ts +0 -2
  732. package/src/priorityFee/heliusPriorityFeeMethod.ts +1 -1
  733. package/src/priorityFee/priorityFeeSubscriber.ts +50 -21
  734. package/src/priorityFee/priorityFeeSubscriberMap.ts +2 -10
  735. package/src/priorityFee/solanaPriorityFeeMethod.ts +1 -1
  736. package/src/priorityFee/types.ts +3 -13
  737. package/src/priorityFee/velocityPriorityFeeMethod.ts +0 -12
  738. package/src/pyth/pythLazerSubscriber.ts +1 -1
  739. package/src/pyth/types.ts +0 -2
  740. package/src/slot/SlotSubscriber.ts +3 -3
  741. package/src/slot/SlothashSubscriber.ts +17 -6
  742. package/src/swap/UnifiedSwapClient.ts +1 -1
  743. package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +5 -6
  744. package/src/swift/signedMsgUserAccountSubscriber.ts +18 -16
  745. package/src/swift/swiftOrderSubscriber.ts +17 -21
  746. package/src/testClient.ts +2 -2
  747. package/src/tokenFaucet.ts +22 -3
  748. package/src/tx/baseTxSender.ts +10 -10
  749. package/src/tx/fastSingleTxSender.ts +12 -8
  750. package/src/tx/reportTransactionError.ts +12 -7
  751. package/src/tx/retryTxSender.ts +6 -4
  752. package/src/tx/txHandler.ts +88 -43
  753. package/src/tx/txParamProcessor.ts +18 -3
  754. package/src/tx/types.ts +1 -1
  755. package/src/tx/whileValidTxSender.ts +51 -22
  756. package/src/types.ts +119 -173
  757. package/src/user.ts +208 -165
  758. package/src/userConfig.ts +1 -3
  759. package/src/userMap/WebsocketSubscription.ts +2 -2
  760. package/src/userMap/grpcSubscription.ts +2 -2
  761. package/src/userMap/referrerMap.ts +13 -13
  762. package/src/userMap/revenueShareEscrowMap.ts +6 -5
  763. package/src/userMap/userMap.ts +46 -32
  764. package/src/userMap/userMapConfig.ts +3 -3
  765. package/src/userMap/userStatsMap.ts +32 -23
  766. package/src/userStats.ts +22 -13
  767. package/src/userStatsConfig.ts +3 -3
  768. package/src/util/TransactionConfirmationManager.ts +10 -2
  769. package/src/util/chainClock.ts +1 -1
  770. package/src/util/computeUnits.ts +7 -3
  771. package/src/util/ed25519Utils.ts +1 -1
  772. package/src/velocityClient.ts +867 -600
  773. package/src/velocityClientConfig.ts +0 -10
  774. package/tests/{DriftCore → VelocityCore}/decode.test.ts +1 -1
  775. package/tests/{DriftCore → VelocityCore}/fill_trigger.test.ts +1 -1
  776. package/tests/{DriftCore → VelocityCore}/instructions.test.ts +1 -1
  777. package/tests/{DriftCore → VelocityCore}/pdas.test.ts +4 -2
  778. package/tests/amm/test.ts +138 -0
  779. package/tests/ci/verifyConstants.ts +24 -27
  780. package/tests/decode/test.ts +2 -2
  781. package/tests/dlob/helpers.ts +11 -10
  782. package/tests/events/parseLogsForCuUsage.ts +15 -15
  783. package/tests/user/helpers.ts +9 -9
  784. package/tests/user/test.ts +13 -10
  785. package/tsconfig.json +1 -0
  786. package/lib/browser/constants/insuranceFund.d.ts +0 -5
  787. package/lib/browser/constants/insuranceFund.js +0 -9
  788. package/lib/browser/tx/forwardOnlyTxSender.d.ts +0 -37
  789. package/lib/browser/tx/forwardOnlyTxSender.js +0 -92
  790. package/lib/browser/util/deprecatedAlias.d.ts +0 -26
  791. package/lib/browser/util/deprecatedAlias.js +0 -10
  792. package/lib/browser/util/tps.d.ts +0 -2
  793. package/lib/browser/util/tps.js +0 -16
  794. package/lib/node/constants/insuranceFund.d.ts +0 -6
  795. package/lib/node/constants/insuranceFund.d.ts.map +0 -1
  796. package/lib/node/constants/insuranceFund.js +0 -9
  797. package/lib/node/idl/drift.d.ts.map +0 -1
  798. package/lib/node/tx/forwardOnlyTxSender.d.ts +0 -38
  799. package/lib/node/tx/forwardOnlyTxSender.d.ts.map +0 -1
  800. package/lib/node/tx/forwardOnlyTxSender.js +0 -92
  801. package/lib/node/util/deprecatedAlias.d.ts +0 -27
  802. package/lib/node/util/deprecatedAlias.d.ts.map +0 -1
  803. package/lib/node/util/deprecatedAlias.js +0 -10
  804. package/lib/node/util/tps.d.ts +0 -3
  805. package/lib/node/util/tps.d.ts.map +0 -1
  806. package/lib/node/util/tps.js +0 -16
  807. package/src/constants/insuranceFund.ts +0 -8
  808. package/src/tx/forwardOnlyTxSender.ts +0 -145
  809. package/src/util/deprecatedAlias.ts +0 -21
  810. package/src/util/tps.ts +0 -27
  811. /package/lib/browser/idl/{drift.js → velocity.js} +0 -0
  812. /package/lib/node/idl/{drift.js → velocity.js} +0 -0
  813. /package/tests/{DriftCore → VelocityCore}/perp_orders.test.ts +0 -0
  814. /package/tests/{DriftCore → VelocityCore}/remainingAccounts.test.ts +0 -0
  815. /package/tests/{DriftCore → VelocityCore}/settlement_liquidation.test.ts +0 -0
package/src/userConfig.ts CHANGED
@@ -5,15 +5,13 @@ import { GrpcConfigs, UserAccountSubscriber } from './accounts/types';
5
5
  import { WebSocketProgramAccountSubscriber } from './accounts/webSocketProgramAccountSubscriber';
6
6
  import { UserAccount } from './types';
7
7
  import { grpcMultiUserAccountSubscriber } from './accounts/grpcMultiUserAccountSubscriber';
8
- import { AtLeastOne } from './util/deprecatedAlias';
9
8
 
10
9
  type UserConfigBase = {
11
10
  accountSubscription?: UserSubscriptionConfig;
12
11
  userAccountPublicKey: PublicKey;
13
12
  };
14
13
 
15
- export type UserConfig = UserConfigBase &
16
- AtLeastOne<'velocityClient', 'driftClient', VelocityClient>;
14
+ export type UserConfig = UserConfigBase & { velocityClient: VelocityClient };
17
15
 
18
16
  export type UserSubscriptionConfig =
19
17
  | {
@@ -14,7 +14,7 @@ export class WebsocketSubscription {
14
14
  private additionalFilters?: MemcmpFilter[];
15
15
  private decodeFn: (name: string, data: Buffer) => UserAccount;
16
16
 
17
- private subscriber: WebSocketProgramAccountSubscriber<UserAccount>;
17
+ private subscriber?: WebSocketProgramAccountSubscriber<UserAccount>;
18
18
 
19
19
  constructor({
20
20
  userMap,
@@ -54,7 +54,7 @@ export class WebsocketSubscription {
54
54
  this.subscriber = new WebSocketProgramAccountSubscriber<UserAccount>(
55
55
  'UserMap',
56
56
  'user',
57
- this.userMap.driftClient.program,
57
+ this.userMap.velocityClient.program,
58
58
  this.decodeFn,
59
59
  {
60
60
  filters,
@@ -15,7 +15,7 @@ export class grpcSubscription {
15
15
  private additionalFilters?: MemcmpFilter[];
16
16
  private decodeFn: (name: string, data: Buffer) => UserAccount;
17
17
 
18
- private subscriber: WebSocketProgramAccountSubscriber<UserAccount>;
18
+ private subscriber?: WebSocketProgramAccountSubscriber<UserAccount>;
19
19
 
20
20
  constructor({
21
21
  grpcConfigs,
@@ -56,7 +56,7 @@ export class grpcSubscription {
56
56
  this.grpcConfigs,
57
57
  'UserMap',
58
58
  'user',
59
- this.userMap.driftClient.program,
59
+ this.userMap.velocityClient.program,
60
60
  this.decodeFn,
61
61
  {
62
62
  filters,
@@ -29,14 +29,10 @@ export class ReferrerMap {
29
29
  */
30
30
  private referrerReferrerInfoMap = new Map<string, ReferrerInfo>();
31
31
  private velocityClient: VelocityClient;
32
- /** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
33
- private get driftClient(): VelocityClient {
34
- return this.velocityClient;
35
- }
36
32
  private parallelSync: boolean;
37
33
 
38
34
  private fetchPromise?: Promise<void>;
39
- private fetchPromiseResolver: () => void;
35
+ private fetchPromiseResolver: () => void = () => {};
40
36
 
41
37
  /**
42
38
  * Creates a new UserStatsMap instance.
@@ -76,12 +72,16 @@ export class ReferrerMap {
76
72
  this.velocityClient.program.programId,
77
73
  new PublicKey(authority)
78
74
  );
79
- const buffer = (
80
- await this.velocityClient.connection.getAccountInfo(
81
- userStatsAccountPublicKey,
82
- 'processed'
83
- )
84
- ).data;
75
+ const accountInfo = await this.velocityClient.connection.getAccountInfo(
76
+ userStatsAccountPublicKey,
77
+ 'processed'
78
+ );
79
+ if (!accountInfo) {
80
+ throw new Error(
81
+ `ReferrerMap: UserStats account not found for authority ${authority}`
82
+ );
83
+ }
84
+ const buffer = accountInfo.data;
85
85
 
86
86
  const referrer = bs58.encode(buffer.subarray(40, 72));
87
87
 
@@ -177,7 +177,7 @@ export class ReferrerMap {
177
177
  const rpcRequestArgs = [
178
178
  this.velocityClient.program.programId.toBase58(),
179
179
  {
180
- commitment: this.velocityClient.opts.commitment,
180
+ commitment: this.velocityClient.opts?.commitment,
181
181
  filters: [getUserStatsFilter()],
182
182
  encoding: 'base64',
183
183
  dataSlice: {
@@ -217,7 +217,7 @@ export class ReferrerMap {
217
217
  const rpcRequestArgs = [
218
218
  this.velocityClient.program.programId.toBase58(),
219
219
  {
220
- commitment: this.velocityClient.opts.commitment,
220
+ commitment: this.velocityClient.opts?.commitment,
221
221
  filters: [getUserStatsFilter(), referrerFilter],
222
222
  encoding: 'base64',
223
223
  dataSlice: {
@@ -10,14 +10,10 @@ export class RevenueShareEscrowMap {
10
10
  */
11
11
  private authorityEscrowMap = new Map<string, RevenueShareEscrowAccount>();
12
12
  private velocityClient: VelocityClient;
13
- /** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
14
- private get driftClient(): VelocityClient {
15
- return this.velocityClient;
16
- }
17
13
  private parallelSync: boolean;
18
14
 
19
15
  private fetchPromise?: Promise<void>;
20
- private fetchPromiseResolver: () => void;
16
+ private fetchPromiseResolver: () => void = () => {};
21
17
 
22
18
  /**
23
19
  * Creates a new RevenueShareEscrowMap instance.
@@ -134,6 +130,11 @@ export class RevenueShareEscrowMap {
134
130
  ),
135
131
  'confirmed'
136
132
  );
133
+ if (accountInfo === null) {
134
+ throw new Error(
135
+ `RevenueShareEscrow account not found for authority ${authority} during slowSync`
136
+ );
137
+ }
137
138
  const escrowNew = (
138
139
  this.velocityClient.program.account as any
139
140
  ).revenueShareEscrow.coder.accounts.decode(
@@ -78,10 +78,6 @@ export interface UserMapInterface {
78
78
  export class UserMap implements UserMapInterface {
79
79
  private userMap = new Map<string, DataAndSlot<User>>();
80
80
  velocityClient: VelocityClient;
81
- /** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
82
- public get driftClient(): VelocityClient {
83
- return this.velocityClient;
84
- }
85
81
  eventEmitter: StrictEventEmitter<EventEmitter, UserEvents>;
86
82
  private connection: Connection;
87
83
  private commitment: Commitment;
@@ -89,23 +85,26 @@ export class UserMap implements UserMapInterface {
89
85
  private filterByPoolId?: number;
90
86
  private additionalFilters?: MemcmpFilter[];
91
87
  private disableSyncOnTotalAccountsChange: boolean;
92
- private lastNumberOfSubAccounts: BN;
88
+ private lastNumberOfSubAccounts?: BN;
93
89
  private subscription:
94
90
  | PollingSubscription
95
91
  | WebsocketSubscription
96
92
  | grpcSubscription;
97
93
  private stateAccountUpdateCallback = async (state: StateAccount) => {
98
- if (!state.numberOfSubAccounts.eq(this.lastNumberOfSubAccounts)) {
94
+ if (
95
+ this.lastNumberOfSubAccounts === undefined ||
96
+ !state.numberOfSubAccounts.eq(this.lastNumberOfSubAccounts)
97
+ ) {
99
98
  await this.sync();
100
99
  this.lastNumberOfSubAccounts = state.numberOfSubAccounts;
101
100
  }
102
101
  };
103
- private decode;
102
+ private decode: (name: string, buffer: Buffer) => UserAccount;
104
103
  private mostRecentSlot = 0;
105
104
  private syncConfig: SyncConfig;
106
105
 
107
106
  private syncPromise?: Promise<void>;
108
- private syncPromiseResolver: () => void;
107
+ private syncPromiseResolver: () => void = () => {};
109
108
 
110
109
  private throwOnFailedSync: boolean;
111
110
 
@@ -114,27 +113,27 @@ export class UserMap implements UserMapInterface {
114
113
  */
115
114
  constructor(config: UserMapConfig) {
116
115
  // Type-system guarantees at least one of the two is supplied.
117
- this.velocityClient = (config.velocityClient ?? config.driftClient)!;
116
+ this.velocityClient = config.velocityClient!;
118
117
  if (config.connection) {
119
118
  this.connection = config.connection;
120
119
  } else {
121
120
  this.connection = this.velocityClient.connection;
122
121
  }
123
122
  this.commitment =
124
- config.subscriptionConfig.type === 'websocket' ||
123
+ (config.subscriptionConfig.type === 'websocket' ||
125
124
  config.subscriptionConfig.type === 'polling'
126
125
  ? config.subscriptionConfig.commitment ??
127
- this.velocityClient.opts.commitment
128
- : this.velocityClient.opts.commitment;
126
+ this.velocityClient.opts?.commitment
127
+ : this.velocityClient.opts?.commitment) ?? 'confirmed';
129
128
  this.includeIdle = config.includeIdle ?? false;
130
129
  this.filterByPoolId = config.filterByPoolId;
131
130
  this.additionalFilters = config.additionalFilters;
132
131
  this.disableSyncOnTotalAccountsChange =
133
132
  config.disableSyncOnTotalAccountsChange ?? false;
134
133
 
135
- let decodeFn;
134
+ let decodeFn: (name: string, buffer: Buffer) => UserAccount;
136
135
  if (config.fastDecode ?? true) {
137
- decodeFn = (name, buffer) => decodeUser(buffer);
136
+ decodeFn = (_name: string, buffer: Buffer) => decodeUser(buffer);
138
137
  } else {
139
138
  decodeFn = (
140
139
  this.velocityClient.program.account as any
@@ -223,9 +222,15 @@ export class UserMap implements UserMapInterface {
223
222
  },
224
223
  });
225
224
  await user.subscribe(userAccount);
225
+ const resolvedSlot = slot ?? user.getUserAccountAndSlot()?.slot;
226
+ if (resolvedSlot === undefined) {
227
+ throw new Error(
228
+ 'UserMap.addPubkey: no slot available after subscribing user account'
229
+ );
230
+ }
226
231
  this.userMap.set(userAccountPublicKey.toString(), {
227
232
  data: user,
228
- slot: slot ?? user.getUserAccountAndSlot()?.slot,
233
+ slot: resolvedSlot,
229
234
  });
230
235
  this.eventEmitter.emit('userUpdate', user);
231
236
  }
@@ -263,7 +268,11 @@ export class UserMap implements UserMapInterface {
263
268
  accountSubscription
264
269
  );
265
270
  }
266
- return this.userMap.get(key).data;
271
+ const userWithSlot = this.userMap.get(key);
272
+ if (!userWithSlot) {
273
+ throw new Error(`UserMap.mustGet: no user found for ${key}`);
274
+ }
275
+ return userWithSlot.data;
267
276
  }
268
277
  public async mustGetWithSlot(
269
278
  key: string,
@@ -277,12 +286,16 @@ export class UserMap implements UserMapInterface {
277
286
  accountSubscription
278
287
  );
279
288
  }
280
- return this.userMap.get(key);
289
+ const userWithSlot = this.userMap.get(key);
290
+ if (!userWithSlot) {
291
+ throw new Error(`UserMap.mustGetWithSlot: no user found for ${key}`);
292
+ }
293
+ return userWithSlot;
281
294
  }
282
295
 
283
296
  public async mustGetUserAccount(key: string): Promise<UserAccount> {
284
297
  const user = await this.mustGet(key);
285
- return user.getUserAccount();
298
+ return user.getUserAccountOrThrow();
286
299
  }
287
300
 
288
301
  /**
@@ -295,7 +308,7 @@ export class UserMap implements UserMapInterface {
295
308
  if (!user) {
296
309
  return undefined;
297
310
  }
298
- return user.data.getUserAccount().authority;
311
+ return user.data.getUserAccount()?.authority;
299
312
  }
300
313
 
301
314
  /**
@@ -379,15 +392,15 @@ export class UserMap implements UserMapInterface {
379
392
  filterCriteria?: UserFilterCriteria
380
393
  ): PublicKey[] {
381
394
  const usersMeetingCriteria = Array.from(this.values()).filter((user) => {
382
- let pass = true;
395
+ const userAccount = user.getUserAccountOrThrow();
383
396
  if (filterCriteria && filterCriteria.hasOpenOrders) {
384
- pass = pass && user.getUserAccount().hasOpenOrder;
397
+ return userAccount.hasOpenOrder;
385
398
  }
386
- return pass;
399
+ return true;
387
400
  });
388
401
  const userAuths = new Set(
389
402
  usersMeetingCriteria.map((user) =>
390
- user.getUserAccount().authority.toBase58()
403
+ user.getUserAccountOrThrow().authority.toBase58()
391
404
  )
392
405
  );
393
406
  const userAuthKeys = Array.from(userAuths).map(
@@ -420,7 +433,7 @@ export class UserMap implements UserMapInterface {
420
433
 
421
434
  /**
422
435
  * Syncs the UserMap using the default sync method (single getProgramAccounts call with filters).
423
- * This method may fail when drift has too many users. (nodejs response size limits)
436
+ * This method may fail when velocity has too many users. (nodejs response size limits)
424
437
  * @returns
425
438
  */
426
439
  private async defaultSync() {
@@ -517,7 +530,7 @@ export class UserMap implements UserMapInterface {
517
530
 
518
531
  /**
519
532
  * Syncs the UserMap using the paginated sync method (multiple getMultipleAccounts calls with filters).
520
- * This method is more reliable when drift has many users.
533
+ * This method is more reliable when velocity has many users.
521
534
  * @returns
522
535
  */
523
536
  private async paginatedSync() {
@@ -541,9 +554,12 @@ export class UserMap implements UserMapInterface {
541
554
  (account) => account.pubkey
542
555
  );
543
556
 
544
- const limitConcurrency = async (tasks, limit) => {
545
- const executing = [];
546
- const results = [];
557
+ const limitConcurrency = async (
558
+ tasks: Array<() => Promise<void>>,
559
+ limit: number
560
+ ) => {
561
+ const executing: Promise<void>[] = [];
562
+ const results: Promise<void>[] = [];
547
563
 
548
564
  for (let i = 0; i < tasks.length; i++) {
549
565
  const executor = Promise.resolve().then(tasks[i]);
@@ -569,7 +585,7 @@ export class UserMap implements UserMapInterface {
569
585
 
570
586
  // @ts-ignore
571
587
  const chunkSize = this.syncConfig.chunkSize ?? 100;
572
- const tasks = [];
588
+ const tasks: Array<() => Promise<void>> = [];
573
589
  for (let i = 0; i < accountPublicKeys.length; i += chunkSize) {
574
590
  const chunk = accountPublicKeys.slice(i, i + chunkSize);
575
591
  tasks.push(async () => {
@@ -630,9 +646,7 @@ export class UserMap implements UserMapInterface {
630
646
  throw err;
631
647
  }
632
648
  } finally {
633
- if (this.syncPromiseResolver) {
634
- this.syncPromiseResolver();
635
- }
649
+ this.syncPromiseResolver();
636
650
  this.syncPromise = undefined;
637
651
  }
638
652
  }
@@ -1,7 +1,6 @@
1
1
  import { Commitment, Connection, MemcmpFilter } from '@solana/web3.js';
2
2
  import { VelocityClient } from '../velocityClient';
3
3
  import { GrpcConfigs } from '../accounts/types';
4
- import { AtLeastOne } from '../util/deprecatedAlias';
5
4
 
6
5
  // passed into UserMap.getUniqueAuthorities to filter users
7
6
  export type UserAccountFilterCriteria = {
@@ -65,5 +64,6 @@ type UserMapConfigBase = {
65
64
  additionalFilters?: MemcmpFilter[];
66
65
  };
67
66
 
68
- export type UserMapConfig = UserMapConfigBase &
69
- AtLeastOne<'velocityClient', 'driftClient', VelocityClient>;
67
+ export type UserMapConfig = UserMapConfigBase & {
68
+ velocityClient: VelocityClient;
69
+ };
@@ -27,16 +27,12 @@ export class UserStatsMap {
27
27
  */
28
28
  private userStatsMap = new Map<string, UserStats>();
29
29
  private velocityClient: VelocityClient;
30
- /** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
31
- private get driftClient(): VelocityClient {
32
- return this.velocityClient;
33
- }
34
30
  private bulkAccountLoader: BulkAccountLoader;
35
31
  private decode;
36
32
  private syncConfig: SyncConfig;
37
33
 
38
34
  private syncPromise?: Promise<void>;
39
- private syncPromiseResolver: () => void;
35
+ private syncPromiseResolver: () => void = () => {};
40
36
 
41
37
  /**
42
38
  * Creates a new UserStatsMap instance.
@@ -53,7 +49,7 @@ export class UserStatsMap {
53
49
  if (!bulkAccountLoader) {
54
50
  bulkAccountLoader = new BulkAccountLoader(
55
51
  velocityClient.connection,
56
- velocityClient.opts.commitment,
52
+ velocityClient.opts?.commitment ?? 'confirmed',
57
53
  0
58
54
  );
59
55
  }
@@ -114,8 +110,12 @@ export class UserStatsMap {
114
110
 
115
111
  public async updateWithOrderRecord(record: OrderRecord, userMap: UserMap) {
116
112
  const user = await userMap.mustGet(record.user.toString());
117
- if (!this.has(user.getUserAccount().authority.toString())) {
118
- await this.addUserStat(user.getUserAccount().authority, undefined, false);
113
+ if (!this.has(user.getUserAccountOrThrow().authority.toString())) {
114
+ await this.addUserStat(
115
+ user.getUserAccountOrThrow().authority,
116
+ undefined,
117
+ false
118
+ );
119
119
  }
120
120
  }
121
121
 
@@ -137,12 +137,14 @@ export class UserStatsMap {
137
137
  const liqRecord = record as LiquidationRecord;
138
138
 
139
139
  const user = await userMap.mustGet(liqRecord.user.toString());
140
- await this.mustGet(user.getUserAccount().authority.toString());
140
+ await this.mustGet(user.getUserAccountOrThrow().authority.toString());
141
141
 
142
142
  const liquidatorUser = await userMap.mustGet(
143
143
  liqRecord.liquidator.toString()
144
144
  );
145
- await this.mustGet(liquidatorUser.getUserAccount().authority.toString());
145
+ await this.mustGet(
146
+ liquidatorUser.getUserAccountOrThrow().authority.toString()
147
+ );
146
148
  } else if (record.eventType === 'OrderRecord') {
147
149
  if (!userMap) {
148
150
  return;
@@ -157,11 +159,11 @@ export class UserStatsMap {
157
159
 
158
160
  if (actionRecord.taker) {
159
161
  const taker = await userMap.mustGet(actionRecord.taker.toString());
160
- await this.mustGet(taker.getUserAccount().authority.toString());
162
+ await this.mustGet(taker.getUserAccountOrThrow().authority.toString());
161
163
  }
162
164
  if (actionRecord.maker) {
163
165
  const maker = await userMap.mustGet(actionRecord.maker.toString());
164
- await this.mustGet(maker.getUserAccount().authority.toString());
166
+ await this.mustGet(maker.getUserAccountOrThrow().authority.toString());
165
167
  }
166
168
  } else if (record.eventType === 'SettlePnlRecord') {
167
169
  if (!userMap) {
@@ -169,7 +171,7 @@ export class UserStatsMap {
169
171
  }
170
172
  const settlePnlRecord = record as SettlePnlRecord;
171
173
  const user = await userMap.mustGet(settlePnlRecord.user.toString());
172
- await this.mustGet(user.getUserAccount().authority.toString());
174
+ await this.mustGet(user.getUserAccountOrThrow().authority.toString());
173
175
  } else if (record.eventType === 'NewUserRecord') {
174
176
  const newUserRecord = record as NewUserRecord;
175
177
  await this.mustGet(newUserRecord.userAuthority.toString());
@@ -183,7 +185,7 @@ export class UserStatsMap {
183
185
  return this.userStatsMap.has(authorityPublicKey);
184
186
  }
185
187
 
186
- public get(authorityPublicKey: string): UserStats {
188
+ public get(authorityPublicKey: string): UserStats | undefined {
187
189
  return this.userStatsMap.get(authorityPublicKey);
188
190
  }
189
191
 
@@ -201,7 +203,13 @@ export class UserStatsMap {
201
203
  false
202
204
  );
203
205
  }
204
- return this.get(authorityPublicKey);
206
+ const userStats = this.get(authorityPublicKey);
207
+ if (!userStats) {
208
+ throw new Error(
209
+ `UserStatsMap: UserStats missing for authority ${authorityPublicKey} after addUserStat`
210
+ );
211
+ }
212
+ return userStats;
205
213
  }
206
214
 
207
215
  public values(): IterableIterator<UserStats> {
@@ -266,9 +274,12 @@ export class UserStatsMap {
266
274
  accountsToLoad = accountsPrefetch.map((account) => account.pubkey);
267
275
  }
268
276
 
269
- const limitConcurrency = async (tasks, limit) => {
270
- const executing = [];
271
- const results = [];
277
+ const limitConcurrency = async (
278
+ tasks: Array<() => Promise<void>>,
279
+ limit: number
280
+ ) => {
281
+ const executing: Array<Promise<void>> = [];
282
+ const results: Array<Promise<void>> = [];
272
283
 
273
284
  for (let i = 0; i < tasks.length; i++) {
274
285
  const executor = Promise.resolve().then(tasks[i]);
@@ -294,7 +305,7 @@ export class UserStatsMap {
294
305
 
295
306
  // @ts-ignore
296
307
  const chunkSize = this.syncConfig.chunkSize ?? 100;
297
- const tasks = [];
308
+ const tasks: Array<() => Promise<void>> = [];
298
309
  for (let i = 0; i < accountsToLoad.length; i += chunkSize) {
299
310
  const chunk = accountsToLoad.slice(i, i + chunkSize);
300
311
  tasks.push(async () => {
@@ -302,7 +313,7 @@ export class UserStatsMap {
302
313
  await this.velocityClient.connection.getMultipleAccountsInfoAndContext(
303
314
  chunk,
304
315
  {
305
- commitment: this.velocityClient.opts.commitment,
316
+ commitment: this.velocityClient.opts?.commitment,
306
317
  }
307
318
  );
308
319
 
@@ -346,9 +357,7 @@ export class UserStatsMap {
346
357
  } catch (err) {
347
358
  console.error(`Error in UserStatsMap.paginatedSync():`, err);
348
359
  } finally {
349
- if (this.syncPromiseResolver) {
350
- this.syncPromiseResolver();
351
- }
360
+ this.syncPromiseResolver();
352
361
  this.syncPromise = undefined;
353
362
  }
354
363
  }
package/src/userStats.ts CHANGED
@@ -18,17 +18,13 @@ import { grpcUserStatsAccountSubscriber } from './accounts/grpcUserStatsAccountS
18
18
 
19
19
  export class UserStats {
20
20
  velocityClient: VelocityClient;
21
- /** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
22
- public get driftClient(): VelocityClient {
23
- return this.velocityClient;
24
- }
25
21
  userStatsAccountPublicKey: PublicKey;
26
22
  accountSubscriber: UserStatsAccountSubscriber;
27
- isSubscribed: boolean;
23
+ isSubscribed = false;
28
24
 
29
25
  public constructor(config: UserStatsConfig) {
30
26
  // Type-system guarantees at least one of the two is supplied.
31
- const velocityClient = (config.velocityClient ?? config.driftClient)!;
27
+ const velocityClient = config.velocityClient!;
32
28
  this.velocityClient = velocityClient;
33
29
  this.userStatsAccountPublicKey = config.userStatsAccountPublicKey;
34
30
  if (config.accountSubscription?.type === 'polling') {
@@ -61,7 +57,7 @@ export class UserStats {
61
57
  this.accountSubscriber =
62
58
  config.accountSubscription.userStatsAccountSubscriber;
63
59
  } else {
64
- const exhaustiveCheck: never = config.accountSubscription;
60
+ const exhaustiveCheck: undefined = config.accountSubscription;
65
61
 
66
62
  throw new Error(
67
63
  `Unknown user stats account subscription type: ${exhaustiveCheck}`
@@ -87,27 +83,40 @@ export class UserStats {
87
83
  this.isSubscribed = false;
88
84
  }
89
85
 
90
- public getAccountAndSlot(): DataAndSlot<UserStatsAccount> {
86
+ public getAccountAndSlot(): DataAndSlot<UserStatsAccount> | undefined {
91
87
  return this.accountSubscriber.getUserStatsAccountAndSlot();
92
88
  }
93
89
 
94
- public getAccount(): UserStatsAccount {
95
- return this.accountSubscriber.getUserStatsAccountAndSlot().data;
90
+ public getAccount(): UserStatsAccount | undefined {
91
+ return this.accountSubscriber.getUserStatsAccountAndSlot()?.data;
92
+ }
93
+
94
+ /**
95
+ * Like {@link getAccount} but throws a named error instead of returning
96
+ * `undefined` when the stats account has not been loaded yet.
97
+ */
98
+ public getAccountOrThrow(): UserStatsAccount {
99
+ const account = this.getAccount();
100
+ if (!account) {
101
+ throw new Error('UserStats account not loaded');
102
+ }
103
+ return account;
96
104
  }
97
105
 
98
106
  public getReferrerInfo(): ReferrerInfo | undefined {
99
- if (this.getAccount().referrer.equals(PublicKey.default)) {
107
+ const account = this.getAccount();
108
+ if (!account || account.referrer.equals(PublicKey.default)) {
100
109
  return undefined;
101
110
  } else {
102
111
  return {
103
112
  referrer: getUserAccountPublicKeySync(
104
113
  this.velocityClient.program.programId,
105
- this.getAccount().referrer,
114
+ account.referrer,
106
115
  0
107
116
  ),
108
117
  referrerStats: getUserStatsAccountPublicKey(
109
118
  this.velocityClient.program.programId,
110
- this.getAccount().referrer
119
+ account.referrer
111
120
  ),
112
121
  };
113
122
  }
@@ -2,15 +2,15 @@ import { VelocityClient } from './velocityClient';
2
2
  import { Commitment, PublicKey } from '@solana/web3.js';
3
3
  import { BulkAccountLoader } from './accounts/bulkAccountLoader';
4
4
  import { GrpcConfigs, UserStatsAccountSubscriber } from './accounts/types';
5
- import { AtLeastOne } from './util/deprecatedAlias';
6
5
 
7
6
  type UserStatsConfigBase = {
8
7
  accountSubscription?: UserStatsSubscriptionConfig;
9
8
  userStatsAccountPublicKey: PublicKey;
10
9
  };
11
10
 
12
- export type UserStatsConfig = UserStatsConfigBase &
13
- AtLeastOne<'velocityClient', 'driftClient', VelocityClient>;
11
+ export type UserStatsConfig = UserStatsConfigBase & {
12
+ velocityClient: VelocityClient;
13
+ };
14
14
 
15
15
  export type UserStatsSubscriptionConfig =
16
16
  | {
@@ -62,7 +62,7 @@ export class TransactionConfirmationManager {
62
62
 
63
63
  let response: RpcResponseAndContext<SignatureResult> | null = null;
64
64
 
65
- let subscriptionId: ClientSubscriptionId;
65
+ let subscriptionId: ClientSubscriptionId | undefined;
66
66
 
67
67
  const confirmationPromise = new Promise((resolve, reject) => {
68
68
  try {
@@ -262,13 +262,21 @@ export class TransactionConfirmationManager {
262
262
 
263
263
  if (status.err) {
264
264
  this.pendingConfirmations.delete(request.txSig);
265
+ const txError = await getTransactionErrorFromTxSig(
266
+ request.txSig,
267
+ this.connection
268
+ );
265
269
  request.reject(
266
- await getTransactionErrorFromTxSig(request.txSig, this.connection)
270
+ txError ??
271
+ new Error(
272
+ `Transaction failed but no error could be resolved for signature ${request.txSig}`
273
+ )
267
274
  );
268
275
  continue;
269
276
  }
270
277
 
271
278
  if (
279
+ status.confirmationStatus === undefined ||
272
280
  confirmationStatusValues[status.confirmationStatus] === undefined ||
273
281
  confirmationStatusValues[request.desiredConfirmationStatus] ===
274
282
  undefined
@@ -35,7 +35,7 @@ export class ChainClock {
35
35
  }
36
36
  }
37
37
 
38
- public getState(commitment: Commitment): ChainClockProgress {
38
+ public getState(commitment: Commitment): ChainClockProgress | undefined {
39
39
  return this._state.get(commitment);
40
40
  }
41
41
  }
@@ -11,13 +11,17 @@ export async function findComputeUnitConsumption(
11
11
  connection: Connection,
12
12
  txSignature: string,
13
13
  commitment: Finality = 'confirmed'
14
- ): Promise<number[]> {
14
+ ): Promise<string[]> {
15
15
  const tx = await connection.getTransaction(txSignature, { commitment });
16
- const computeUnits = [];
16
+ const computeUnits: string[] = [];
17
+ const logMessages = tx?.meta?.logMessages;
18
+ if (!logMessages) {
19
+ return computeUnits;
20
+ }
17
21
  const regex = new RegExp(
18
22
  `Program ${programId.toString()} consumed ([0-9]{0,6}) of ([0-9]{0,7}) compute units`
19
23
  );
20
- tx.meta.logMessages.forEach((logMessage) => {
24
+ logMessages.forEach((logMessage) => {
21
25
  const match = logMessage.match(regex);
22
26
  if (match && match[1]) {
23
27
  computeUnits.push(match[1]);
@@ -37,7 +37,7 @@ const ED25519_INSTRUCTION_LAYOUT = BufferLayout.struct<
37
37
 
38
38
  /**
39
39
  * Constructs a minimal Ed25519 verification instruction that references the data
40
- * inside the drift custom instruction (e.g. postPythLazerOracleUpdate, placeSignedMsgTakerOrder).
40
+ * inside the velocity custom instruction (e.g. postPythLazerOracleUpdate, placeSignedMsgTakerOrder).
41
41
  *
42
42
  * @param customInstructionIndex The index of the custom instruction in the transaction (e.g. if tx contains compute budget limit, compute budget price, ed25519 verify, custom ix, this would be 3).
43
43
  * @param messageOffset The offset within the custom instruction data where the signed message begins.