@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
@@ -135,9 +135,11 @@ export class grpcVelocityClientAccountSubscriber extends WebSocketVelocityClient
135
135
  undefined,
136
136
  this.resubOpts
137
137
  );
138
- accountSubscriber.setData(
139
- this.initialSpotMarketAccountData.get(marketIndex)
140
- );
138
+ const initialSpotMarketData =
139
+ this.initialSpotMarketAccountData?.get(marketIndex);
140
+ if (initialSpotMarketData) {
141
+ accountSubscriber.setData(initialSpotMarketData);
142
+ }
141
143
  await accountSubscriber.subscribe((data: SpotMarketAccount) => {
142
144
  this.eventEmitter.emit('spotMarketAccountUpdate', data);
143
145
  this.eventEmitter.emit('update');
@@ -160,9 +162,11 @@ export class grpcVelocityClientAccountSubscriber extends WebSocketVelocityClient
160
162
  undefined,
161
163
  this.resubOpts
162
164
  );
163
- accountSubscriber.setData(
164
- this.initialPerpMarketAccountData.get(marketIndex)
165
- );
165
+ const initialPerpMarketData =
166
+ this.initialPerpMarketAccountData?.get(marketIndex);
167
+ if (initialPerpMarketData) {
168
+ accountSubscriber.setData(initialPerpMarketData);
169
+ }
166
170
  await accountSubscriber.subscribe((data: PerpMarketAccount) => {
167
171
  this.eventEmitter.emit('perpMarketAccountUpdate', data);
168
172
  this.eventEmitter.emit('update');
@@ -178,6 +182,9 @@ export class grpcVelocityClientAccountSubscriber extends WebSocketVelocityClient
178
182
  this.program.provider.connection,
179
183
  this.program
180
184
  );
185
+ if (!client) {
186
+ return false;
187
+ }
181
188
  const accountSubscriber =
182
189
  await grpcAccountSubscriber.create<OraclePriceData>(
183
190
  this.grpcConfigs,
@@ -189,7 +196,10 @@ export class grpcVelocityClientAccountSubscriber extends WebSocketVelocityClient
189
196
  },
190
197
  this.resubOpts
191
198
  );
192
- accountSubscriber.setData(this.initialOraclePriceData.get(oracleId));
199
+ const initialOraclePriceData = this.initialOraclePriceData?.get(oracleId);
200
+ if (initialOraclePriceData) {
201
+ accountSubscriber.setData(initialOraclePriceData);
202
+ }
193
203
  await accountSubscriber.subscribe((data: OraclePriceData) => {
194
204
  this.eventEmitter.emit(
195
205
  'oraclePriceUpdate',
@@ -204,10 +214,3 @@ export class grpcVelocityClientAccountSubscriber extends WebSocketVelocityClient
204
214
  return true;
205
215
  }
206
216
  }
207
-
208
- /** @deprecated Use `grpcVelocityClientAccountSubscriber` instead. `grpcDriftClientAccountSubscriber` will be removed in a future major. */
209
- export const grpcDriftClientAccountSubscriber =
210
- grpcVelocityClientAccountSubscriber;
211
- /** @deprecated Use `grpcVelocityClientAccountSubscriber` instead. `grpcDriftClientAccountSubscriber` will be removed in a future major. */
212
- export type grpcDriftClientAccountSubscriber =
213
- grpcVelocityClientAccountSubscriber;
@@ -1,7 +1,7 @@
1
1
  import StrictEventEmitter from 'strict-event-emitter-types';
2
2
  import { EventEmitter } from 'events';
3
3
  import { OracleInfo, OraclePriceData } from '../oracles/types';
4
- import { PublicKey } from '@solana/web3.js';
4
+ import { AccountInfo, PublicKey } from '@solana/web3.js';
5
5
  import { findAllMarketAndOracles, VelocityProgram } from '../config';
6
6
  import {
7
7
  getVelocityStateAccountPublicKey,
@@ -70,8 +70,8 @@ export class grpcVelocityClientAccountSubscriberV2
70
70
  oracleClientCache = new OracleClientCache();
71
71
  private resubOpts?: ResubOpts;
72
72
 
73
- private subscriptionPromise: Promise<boolean>;
74
- protected subscriptionPromiseResolver: (val: boolean) => void;
73
+ private subscriptionPromiseResolver: (val: boolean) => void = () => {};
74
+ private subscriptionPromise: Promise<boolean> = Promise.resolve(false);
75
75
 
76
76
  constructor(
77
77
  grpcConfigs: GrpcConfigs,
@@ -130,7 +130,9 @@ export class grpcVelocityClientAccountSubscriberV2
130
130
  ).flat();
131
131
  this.initialPerpMarketAccountData = new Map(
132
132
  perpMarketAccountInfos
133
- .filter((accountInfo) => !!accountInfo)
133
+ .filter(
134
+ (accountInfo): accountInfo is AccountInfo<Buffer> => !!accountInfo
135
+ )
134
136
  .map((accountInfo) => {
135
137
  const perpMarket = this.program.coder.accounts.decode(
136
138
  'perpMarket',
@@ -158,7 +160,9 @@ export class grpcVelocityClientAccountSubscriberV2
158
160
  ).flat();
159
161
  this.initialSpotMarketAccountData = new Map(
160
162
  spotMarketAccountInfos
161
- .filter((accountInfo) => !!accountInfo)
163
+ .filter(
164
+ (accountInfo): accountInfo is AccountInfo<Buffer> => !!accountInfo
165
+ )
162
166
  .map((accountInfo) => {
163
167
  const spotMarket = this.program.coder.accounts.decode(
164
168
  'spotMarket',
@@ -181,24 +185,31 @@ export class grpcVelocityClientAccountSubscriberV2
181
185
  )
182
186
  ).flat();
183
187
  this.initialOraclePriceData = new Map(
184
- this.oracleInfos.reduce((result, oracleInfo, i) => {
185
- if (!oracleAccountInfos[i]) {
188
+ this.oracleInfos.reduce<[string, OraclePriceData][]>(
189
+ (result, oracleInfo, i) => {
190
+ const oracleAccountInfo = oracleAccountInfos[i];
191
+ if (!oracleAccountInfo) {
192
+ return result;
193
+ }
194
+ const oracleClient = this.oracleClientCache.get(
195
+ oracleInfo.source,
196
+ connection,
197
+ this.program
198
+ );
199
+ if (!oracleClient) {
200
+ return result;
201
+ }
202
+ const oraclePriceData = oracleClient.getOraclePriceDataFromBuffer(
203
+ oracleAccountInfo.data
204
+ );
205
+ result.push([
206
+ getOracleId(oracleInfo.publicKey, oracleInfo.source),
207
+ oraclePriceData,
208
+ ]);
186
209
  return result;
187
- }
188
- const oracleClient = this.oracleClientCache.get(
189
- oracleInfo.source,
190
- connection,
191
- this.program
192
- );
193
- const oraclePriceData = oracleClient.getOraclePriceDataFromBuffer(
194
- oracleAccountInfos[i].data
195
- );
196
- result.push([
197
- getOracleId(oracleInfo.publicKey, oracleInfo.source),
198
- oraclePriceData,
199
- ]);
200
- return result;
201
- }, [])
210
+ },
211
+ []
212
+ )
202
213
  );
203
214
  }
204
215
 
@@ -334,7 +345,7 @@ export class grpcVelocityClientAccountSubscriberV2
334
345
 
335
346
  public getStateAccountAndSlot(): DataAndSlot<StateAccount> {
336
347
  this.assertIsSubscribed();
337
- return this.stateAccountSubscriber.dataAndSlot;
348
+ return this.stateAccountSubscriber!.dataAndSlot!;
338
349
  }
339
350
 
340
351
  public getMarketAccountsAndSlots(): DataAndSlot<PerpMarketAccount>[] {
@@ -350,17 +361,23 @@ export class grpcVelocityClientAccountSubscriberV2
350
361
  getMarketAccountAndSlot(
351
362
  marketIndex: number
352
363
  ): DataAndSlot<PerpMarketAccount> | undefined {
353
- return this.perpMarketsSubscriber?.getAccountData(
354
- this.perpMarketIndexToAccountPubkeyMap.get(marketIndex)
355
- );
364
+ const accountPubkey =
365
+ this.perpMarketIndexToAccountPubkeyMap.get(marketIndex);
366
+ if (!accountPubkey) {
367
+ return undefined;
368
+ }
369
+ return this.perpMarketsSubscriber?.getAccountData(accountPubkey);
356
370
  }
357
371
 
358
372
  getSpotMarketAccountAndSlot(
359
373
  marketIndex: number
360
374
  ): DataAndSlot<SpotMarketAccount> | undefined {
361
- return this.spotMarketsSubscriber?.getAccountData(
362
- this.spotMarketIndexToAccountPubkeyMap.get(marketIndex)
363
- );
375
+ const accountPubkey =
376
+ this.spotMarketIndexToAccountPubkeyMap.get(marketIndex);
377
+ if (!accountPubkey) {
378
+ return undefined;
379
+ }
380
+ return this.spotMarketsSubscriber?.getAccountData(accountPubkey);
364
381
  }
365
382
 
366
383
  public getOraclePriceDataAndSlot(
@@ -382,8 +399,8 @@ export class grpcVelocityClientAccountSubscriberV2
382
399
  return undefined;
383
400
  }
384
401
 
385
- if (!perpMarketAccount.data.amm.oracle.equals(oracle)) {
386
- // If the oracle has changed, we need to update the oracle map in background
402
+ if (!oracle || !perpMarketAccount.data.oracle.equals(oracle)) {
403
+ // If the oracle has changed (or not yet cached), update the oracle map in background
387
404
  this.setPerpOracleMap();
388
405
  }
389
406
 
@@ -400,8 +417,8 @@ export class grpcVelocityClientAccountSubscriberV2
400
417
  return undefined;
401
418
  }
402
419
 
403
- if (!spotMarketAccount.data.oracle.equals(oracle)) {
404
- // If the oracle has changed, we need to update the oracle map in background
420
+ if (!oracle || !spotMarketAccount.data.oracle.equals(oracle)) {
421
+ // If the oracle has changed (or not yet cached), update the oracle map in background
405
422
  this.setSpotOracleMap();
406
423
  }
407
424
 
@@ -410,7 +427,7 @@ export class grpcVelocityClientAccountSubscriberV2
410
427
 
411
428
  async setPerpOracleMap() {
412
429
  const perpMarketsMap = this.perpMarketsSubscriber?.getAccountDataMap();
413
- const perpMarkets = Array.from(perpMarketsMap.values());
430
+ const perpMarkets = Array.from(perpMarketsMap?.values() ?? []);
414
431
  const addOraclePromises = [];
415
432
  for (const perpMarket of perpMarkets) {
416
433
  if (!perpMarket || !perpMarket.data) {
@@ -418,13 +435,13 @@ export class grpcVelocityClientAccountSubscriberV2
418
435
  }
419
436
  const perpMarketAccount = perpMarket.data;
420
437
  const perpMarketIndex = perpMarketAccount.marketIndex;
421
- const oracle = perpMarketAccount.amm.oracle;
422
- const oracleId = getOracleId(oracle, perpMarket.data.amm.oracleSource);
438
+ const oracle = perpMarketAccount.oracle;
439
+ const oracleId = getOracleId(oracle, perpMarket.data.oracleSource);
423
440
  if (!this.oracleMultiSubscriber?.getAccountDataMap().has(oracleId)) {
424
441
  addOraclePromises.push(
425
442
  this.addOracle({
426
443
  publicKey: oracle,
427
- source: perpMarket.data.amm.oracleSource,
444
+ source: perpMarket.data.oracleSource,
428
445
  })
429
446
  );
430
447
  }
@@ -436,7 +453,7 @@ export class grpcVelocityClientAccountSubscriberV2
436
453
 
437
454
  async setSpotOracleMap() {
438
455
  const spotMarketsMap = this.spotMarketsSubscriber?.getAccountDataMap();
439
- const spotMarkets = Array.from(spotMarketsMap.values());
456
+ const spotMarkets = Array.from(spotMarketsMap?.values() ?? []);
440
457
  const addOraclePromises = [];
441
458
  for (const spotMarket of spotMarkets) {
442
459
  if (!spotMarket || !spotMarket.data) {
@@ -604,7 +621,7 @@ export class grpcVelocityClientAccountSubscriberV2
604
621
  if (!oraclePubkeyToInfosMap.has(pubkey)) {
605
622
  oraclePubkeyToInfosMap.set(pubkey, []);
606
623
  }
607
- oraclePubkeyToInfosMap.get(pubkey).push(info);
624
+ oraclePubkeyToInfosMap.get(pubkey)!.push(info);
608
625
  }
609
626
 
610
627
  const oraclePubkeys = Array.from(
@@ -623,11 +640,18 @@ export class grpcVelocityClientAccountSubscriberV2
623
640
  throw new Error('Oracle pubkey missing in decode');
624
641
  }
625
642
 
643
+ if (!accountProps) {
644
+ throw new Error('Oracle accountProps missing in decode');
645
+ }
646
+
626
647
  const client = this.oracleClientCache.get(
627
648
  accountProps.source,
628
649
  this.program.provider.connection,
629
650
  this.program
630
651
  );
652
+ if (!client) {
653
+ throw new Error('Oracle client missing in decode');
654
+ }
631
655
  const price = client.getOraclePriceDataFromBuffer(buffer);
632
656
  return price;
633
657
  },
@@ -660,6 +684,9 @@ export class grpcVelocityClientAccountSubscriberV2
660
684
  await this.oracleMultiSubscriber.subscribe(
661
685
  oraclePubkeys,
662
686
  (accountId, data, context, _b, accountProps) => {
687
+ if (accountProps === undefined) {
688
+ return;
689
+ }
663
690
  const oracleId = getOracleId(accountId, accountProps.source);
664
691
  this.oracleIdToOracleDataMap.set(oracleId, {
665
692
  data,
@@ -698,21 +725,21 @@ export class grpcVelocityClientAccountSubscriberV2
698
725
  this.perpMarketIndexToAccountPubkeyMap.get(marketIndex);
699
726
  return pubkeyString ? new PublicKey(pubkeyString) : null;
700
727
  })
701
- .filter((pubkey) => pubkey !== null) as PublicKey[];
728
+ .filter((pubkey): pubkey is PublicKey => pubkey !== null);
702
729
 
703
730
  // Build array of oracle pubkeys to remove
704
731
  const oraclePubkeysToRemove = oracles.map((oracle) => oracle.publicKey);
705
732
 
706
733
  // Remove accounts in batches - perp markets
707
734
  if (perpMarketPubkeysToRemove.length > 0) {
708
- await this.perpMarketsSubscriber.removeAccounts(
735
+ await this.perpMarketsSubscriber?.removeAccounts(
709
736
  perpMarketPubkeysToRemove
710
737
  );
711
738
  }
712
739
 
713
740
  // Remove accounts in batches - oracles
714
741
  if (oraclePubkeysToRemove.length > 0) {
715
- await this.oracleMultiSubscriber.removeAccounts(oraclePubkeysToRemove);
742
+ await this.oracleMultiSubscriber?.removeAccounts(oraclePubkeysToRemove);
716
743
  }
717
744
  }
718
745
 
@@ -753,10 +780,3 @@ export class grpcVelocityClientAccountSubscriberV2
753
780
  this.spotOracleStringMap.clear();
754
781
  }
755
782
  }
756
-
757
- /** @deprecated Use `grpcVelocityClientAccountSubscriberV2` instead. `grpcDriftClientAccountSubscriberV2` will be removed in a future major. */
758
- export const grpcDriftClientAccountSubscriberV2 =
759
- grpcVelocityClientAccountSubscriberV2;
760
- /** @deprecated Use `grpcVelocityClientAccountSubscriberV2` instead. `grpcDriftClientAccountSubscriberV2` will be removed in a future major. */
761
- export type grpcDriftClientAccountSubscriberV2 =
762
- grpcVelocityClientAccountSubscriberV2;
@@ -126,7 +126,7 @@ export class LaserstreamProgramAccountSubscriber<
126
126
  const request: LaserSubscribeRequest = {
127
127
  slots: {},
128
128
  accounts: {
129
- drift: {
129
+ velocity: {
130
130
  account: [],
131
131
  owner: [this.program.programId.toBase58()],
132
132
  filters,
@@ -152,6 +152,9 @@ export class LaserstreamProgramAccountSubscriber<
152
152
  if (update.account) {
153
153
  const slot = Number(update.account.slot);
154
154
  const acc = update.account.account;
155
+ if (!acc) {
156
+ return;
157
+ }
155
158
 
156
159
  const accountInfo = {
157
160
  owner: new PublicKey(acc.owner),
@@ -30,7 +30,7 @@ export class OneShotUserAccountSubscriber
30
30
 
31
31
  async subscribe(userAccount?: UserAccount): Promise<boolean> {
32
32
  if (userAccount) {
33
- this.user = { data: userAccount, slot: this.user.slot };
33
+ this.user = { data: userAccount, slot: this.user?.slot ?? 0 };
34
34
  return true;
35
35
  }
36
36
 
@@ -42,7 +42,7 @@ export class OneShotUserAccountSubscriber
42
42
  }
43
43
 
44
44
  async fetchIfUnloaded(): Promise<void> {
45
- if (this.user.data === undefined) {
45
+ if (!this.user) {
46
46
  await this.fetch();
47
47
  }
48
48
  }
@@ -60,7 +60,9 @@ export class OneShotUserAccountSubscriber
60
60
  }
61
61
  } catch (e) {
62
62
  console.error(
63
- `OneShotUserAccountSubscriber.fetch() UserAccount does not exist: ${e.message}`
63
+ `OneShotUserAccountSubscriber.fetch() UserAccount does not exist: ${
64
+ e instanceof Error ? e.message : String(e)
65
+ }`
64
66
  );
65
67
  }
66
68
  }
@@ -30,7 +30,10 @@ export class OneShotUserStatsAccountSubscriber
30
30
 
31
31
  async subscribe(userStatsAccount?: UserStatsAccount): Promise<boolean> {
32
32
  if (userStatsAccount) {
33
- this.userStats = { data: userStatsAccount, slot: this.userStats.slot };
33
+ this.userStats = {
34
+ data: userStatsAccount,
35
+ slot: this.userStats?.slot ?? 0,
36
+ };
34
37
  return true;
35
38
  }
36
39
 
@@ -42,7 +45,7 @@ export class OneShotUserStatsAccountSubscriber
42
45
  }
43
46
 
44
47
  async fetchIfUnloaded(): Promise<void> {
45
- if (this.userStats.data === undefined) {
48
+ if (!this.userStats) {
46
49
  await this.fetch();
47
50
  }
48
51
  }
@@ -63,7 +66,9 @@ export class OneShotUserStatsAccountSubscriber
63
66
  }
64
67
  } catch (e) {
65
68
  console.error(
66
- `OneShotUserStatsAccountSubscriber.fetch() UserStatsAccount does not exist: ${e.message}`
69
+ `OneShotUserStatsAccountSubscriber.fetch() UserStatsAccount does not exist: ${
70
+ e instanceof Error ? e.message : String(e)
71
+ }`
67
72
  );
68
73
  }
69
74
  }
@@ -48,7 +48,7 @@ export class PollingInsuranceFundStakeAccountSubscriber
48
48
  if (insuranceFundStake) {
49
49
  this.insuranceFundStakeAccountAndSlot = {
50
50
  data: insuranceFundStake,
51
- slot: undefined,
51
+ slot: 0,
52
52
  };
53
53
  }
54
54
 
@@ -97,7 +97,7 @@ export class PollingInsuranceFundStakeAccountSubscriber
97
97
  }
98
98
 
99
99
  async fetchIfUnloaded(): Promise<void> {
100
- if (this.insuranceFundStakeAccountAndSlot === undefined) {
100
+ if (!this.doesAccountExist()) {
101
101
  await this.fetch();
102
102
  }
103
103
  }
@@ -121,12 +121,16 @@ export class PollingInsuranceFundStakeAccountSubscriber
121
121
  }
122
122
  } catch (e) {
123
123
  console.log(
124
- `PollingInsuranceFundStakeAccountSubscriber.fetch() InsuranceFundStake does not exist: ${e.message}`
124
+ `PollingInsuranceFundStakeAccountSubscriber.fetch() InsuranceFundStake does not exist: ${
125
+ e instanceof Error ? e.message : String(e)
126
+ }`
125
127
  );
126
128
  }
127
129
  }
128
130
 
129
- doesAccountExist(): boolean {
131
+ doesAccountExist(): this is {
132
+ insuranceFundStakeAccountAndSlot: DataAndSlot<InsuranceFundStake>;
133
+ } {
130
134
  return this.insuranceFundStakeAccountAndSlot !== undefined;
131
135
  }
132
136
 
@@ -155,7 +159,9 @@ export class PollingInsuranceFundStakeAccountSubscriber
155
159
  }
156
160
  }
157
161
 
158
- public getInsuranceFundStakeAccountAndSlot(): DataAndSlot<InsuranceFundStake> {
162
+ public getInsuranceFundStakeAccountAndSlot():
163
+ | DataAndSlot<InsuranceFundStake>
164
+ | undefined {
159
165
  this.assertIsSubscribed();
160
166
  return this.insuranceFundStakeAccountAndSlot;
161
167
  }
@@ -9,11 +9,9 @@ import { EventEmitter } from 'events';
9
9
  import { PublicKey } from '@solana/web3.js';
10
10
  import { BulkAccountLoader } from './bulkAccountLoader';
11
11
  import { OracleClient, OraclePriceData } from '../oracles/types';
12
- import { VelocityProgram } from '../config';
13
12
 
14
13
  export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
15
14
  isSubscribed: boolean;
16
- program: VelocityProgram;
17
15
  eventEmitter: StrictEventEmitter<EventEmitter, OracleEvents>;
18
16
  publicKey: PublicKey;
19
17
 
@@ -83,9 +81,14 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
83
81
 
84
82
  async fetch(): Promise<void> {
85
83
  await this.accountLoader.load();
86
- const { buffer, slot } = this.accountLoader.getBufferAndSlot(
87
- this.publicKey
88
- );
84
+ const bufferAndSlot = this.accountLoader.getBufferAndSlot(this.publicKey);
85
+ if (!bufferAndSlot) {
86
+ return;
87
+ }
88
+ const { buffer, slot } = bufferAndSlot;
89
+ if (!buffer) {
90
+ return;
91
+ }
89
92
  this.oraclePriceData = {
90
93
  data: await this.oracleClient.getOraclePriceDataFromBuffer(buffer),
91
94
  slot,
@@ -97,11 +100,15 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
97
100
  return;
98
101
  }
99
102
 
100
- this.accountLoader.removeAccount(this.publicKey, this.callbackId);
101
- this.callbackId = undefined;
103
+ if (this.callbackId) {
104
+ this.accountLoader.removeAccount(this.publicKey, this.callbackId);
105
+ this.callbackId = undefined;
106
+ }
102
107
 
103
- this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
104
- this.errorCallbackId = undefined;
108
+ if (this.errorCallbackId) {
109
+ this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
110
+ this.errorCallbackId = undefined;
111
+ }
105
112
 
106
113
  this.isSubscribed = false;
107
114
  }
@@ -116,7 +123,7 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
116
123
 
117
124
  public getOraclePriceData(): DataAndSlot<OraclePriceData> {
118
125
  this.assertIsSubscribed();
119
- return this.oraclePriceData;
126
+ return this.oraclePriceData!;
120
127
  }
121
128
 
122
129
  didSubscriptionSucceed(): boolean {
@@ -10,11 +10,9 @@ import { PublicKey } from '@solana/web3.js';
10
10
  import { BulkAccountLoader } from './bulkAccountLoader';
11
11
  import { Account } from '@solana/spl-token';
12
12
  import { parseTokenAccount } from '../token';
13
- import { VelocityProgram } from '../config';
14
13
 
15
14
  export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
16
15
  isSubscribed: boolean;
17
- program: VelocityProgram;
18
16
  eventEmitter: StrictEventEmitter<EventEmitter, TokenAccountEvents>;
19
17
  publicKey: PublicKey;
20
18
 
@@ -76,9 +74,14 @@ export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
76
74
 
77
75
  async fetch(): Promise<void> {
78
76
  await this.accountLoader.load();
79
- const { buffer, slot } = this.accountLoader.getBufferAndSlot(
80
- this.publicKey
81
- );
77
+ const bufferAndSlot = this.accountLoader.getBufferAndSlot(this.publicKey);
78
+ if (!bufferAndSlot) {
79
+ return;
80
+ }
81
+ const { buffer, slot } = bufferAndSlot;
82
+ if (!buffer) {
83
+ return;
84
+ }
82
85
  this.tokenAccountAndSlot = {
83
86
  data: parseTokenAccount(buffer, this.publicKey),
84
87
  slot,
@@ -90,11 +93,15 @@ export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
90
93
  return;
91
94
  }
92
95
 
93
- this.accountLoader.removeAccount(this.publicKey, this.callbackId);
94
- this.callbackId = undefined;
96
+ if (this.callbackId) {
97
+ this.accountLoader.removeAccount(this.publicKey, this.callbackId);
98
+ this.callbackId = undefined;
99
+ }
95
100
 
96
- this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
97
- this.errorCallbackId = undefined;
101
+ if (this.errorCallbackId) {
102
+ this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
103
+ this.errorCallbackId = undefined;
104
+ }
98
105
 
99
106
  this.isSubscribed = false;
100
107
  }
@@ -109,7 +116,7 @@ export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
109
116
 
110
117
  public getTokenAccountAndSlot(): DataAndSlot<Account> {
111
118
  this.assertIsSubscribed();
112
- return this.tokenAccountAndSlot;
119
+ return this.tokenAccountAndSlot!;
113
120
  }
114
121
 
115
122
  didSubscriptionSucceed(): boolean {
@@ -21,7 +21,7 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
21
21
  callbackId?: string;
22
22
  errorCallbackId?: string;
23
23
 
24
- decode: (name, buffer) => UserAccount;
24
+ decode: (name: string, buffer: Buffer) => UserAccount;
25
25
 
26
26
  user?: DataAndSlot<UserAccount>;
27
27
 
@@ -29,7 +29,7 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
29
29
  connection: Connection,
30
30
  userAccountPublicKey: PublicKey,
31
31
  accountLoader: BulkAccountLoader,
32
- decode: (name, buffer) => UserAccount
32
+ decode: (name: string, buffer: Buffer) => UserAccount
33
33
  ) {
34
34
  this.isSubscribed = false;
35
35
  this.connection = connection;
@@ -45,7 +45,9 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
45
45
  }
46
46
 
47
47
  if (userAccount) {
48
- this.user = { data: userAccount, slot: undefined };
48
+ // `slot: 0` keeps {data, slot} atomic: a seeded account always carries a
49
+ // slot (0 = oldest-possible sentinel, overwritten by the first real fetch).
50
+ this.user = { data: userAccount, slot: 0 };
49
51
  }
50
52
 
51
53
  await this.addToAccountLoader();
@@ -88,7 +90,7 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
88
90
  }
89
91
 
90
92
  async fetchIfUnloaded(): Promise<void> {
91
- if (this.user === undefined) {
93
+ if (!this.doesAccountExist()) {
92
94
  await this.fetch();
93
95
  }
94
96
  }
@@ -99,20 +101,24 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
99
101
  this.userAccountPublicKey,
100
102
  this.accountLoader.commitment
101
103
  );
102
- if (dataAndContext.context.slot > (this.user?.slot ?? 0)) {
104
+ if (
105
+ dataAndContext.value !== null &&
106
+ dataAndContext.context.slot > (this.user?.slot ?? 0)
107
+ ) {
103
108
  this.user = {
104
109
  data: this.decode('user', dataAndContext.value.data),
105
110
  slot: dataAndContext.context.slot,
106
111
  };
107
112
  }
108
113
  } catch (e) {
114
+ const err = e instanceof Error ? e : new Error(String(e));
109
115
  console.log(
110
- `PollingUserAccountSubscriber.fetch() UserAccount does not exist: ${e.message}-${e.stack}`
116
+ `PollingUserAccountSubscriber.fetch() UserAccount does not exist: ${err.message}-${err.stack}`
111
117
  );
112
118
  }
113
119
  }
114
120
 
115
- doesAccountExist(): boolean {
121
+ doesAccountExist(): this is { user: DataAndSlot<UserAccount> } {
116
122
  return this.user !== undefined;
117
123
  }
118
124
 
@@ -121,14 +127,18 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
121
127
  return;
122
128
  }
123
129
 
124
- this.accountLoader.removeAccount(
125
- this.userAccountPublicKey,
126
- this.callbackId
127
- );
128
- this.callbackId = undefined;
130
+ if (this.callbackId) {
131
+ this.accountLoader.removeAccount(
132
+ this.userAccountPublicKey,
133
+ this.callbackId
134
+ );
135
+ this.callbackId = undefined;
136
+ }
129
137
 
130
- this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
131
- this.errorCallbackId = undefined;
138
+ if (this.errorCallbackId) {
139
+ this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
140
+ this.errorCallbackId = undefined;
141
+ }
132
142
 
133
143
  this.isSubscribed = false;
134
144
  }
@@ -141,12 +151,8 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
141
151
  }
142
152
  }
143
153
 
144
- public getUserAccountAndSlot(): DataAndSlot<UserAccount> {
145
- if (!this.doesAccountExist()) {
146
- throw new NotSubscribedError(
147
- 'You must call `subscribe` or `fetch` before using this function'
148
- );
149
- }
154
+ public getUserAccountAndSlot(): DataAndSlot<UserAccount> | undefined {
155
+ this.assertIsSubscribed();
150
156
  return this.user;
151
157
  }
152
158