@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
@@ -43,7 +43,9 @@ export class PollingUserStatsAccountSubscriber
43
43
  }
44
44
 
45
45
  if (userStatsAccount) {
46
- this.userStats = { data: userStatsAccount, slot: undefined };
46
+ // `slot: 0` keeps {data, slot} atomic: a seeded account always carries a
47
+ // slot (0 = oldest-possible sentinel, overwritten by the first real fetch).
48
+ this.userStats = { data: userStatsAccount, slot: 0 };
47
49
  }
48
50
 
49
51
  await this.addToAccountLoader();
@@ -90,7 +92,7 @@ export class PollingUserStatsAccountSubscriber
90
92
  }
91
93
 
92
94
  async fetchIfUnloaded(): Promise<void> {
93
- if (this.userStats === undefined) {
95
+ if (!this.doesAccountExist()) {
94
96
  await this.fetch();
95
97
  }
96
98
  }
@@ -111,12 +113,14 @@ export class PollingUserStatsAccountSubscriber
111
113
  }
112
114
  } catch (e) {
113
115
  console.log(
114
- `PollingUserStatsAccountSubscriber.fetch() UserStatsAccount does not exist: ${e.message}`
116
+ `PollingUserStatsAccountSubscriber.fetch() UserStatsAccount does not exist: ${
117
+ e instanceof Error ? e.message : String(e)
118
+ }`
115
119
  );
116
120
  }
117
121
  }
118
122
 
119
- doesAccountExist(): boolean {
123
+ doesAccountExist(): this is { userStats: DataAndSlot<UserStatsAccount> } {
120
124
  return this.userStats !== undefined;
121
125
  }
122
126
 
@@ -145,12 +149,10 @@ export class PollingUserStatsAccountSubscriber
145
149
  }
146
150
  }
147
151
 
148
- public getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount> {
149
- if (!this.doesAccountExist()) {
150
- throw new NotSubscribedError(
151
- 'You must call `subscribe` or `fetch` before using this function'
152
- );
153
- }
152
+ public getUserStatsAccountAndSlot():
153
+ | DataAndSlot<UserStatsAccount>
154
+ | undefined {
155
+ this.assertIsSubscribed();
154
156
  return this.userStats;
155
157
  }
156
158
  }
@@ -66,8 +66,10 @@ export class PollingVelocityClientAccountSubscriber
66
66
  delistedMarketSetting: DelistedMarketSetting;
67
67
 
68
68
  private isSubscribing = false;
69
- private subscriptionPromise: Promise<boolean>;
70
- private subscriptionPromiseResolver: (val: boolean) => void;
69
+ private subscriptionPromiseResolver: (val: boolean) => void = () => {};
70
+ private subscriptionPromise: Promise<boolean> = new Promise((res) => {
71
+ this.subscriptionPromiseResolver = res;
72
+ });
71
73
 
72
74
  public constructor(
73
75
  program: VelocityProgram,
@@ -249,6 +251,38 @@ export class PollingVelocityClientAccountSubscriber
249
251
  });
250
252
  }
251
253
 
254
+ /**
255
+ * Routes a freshly-decoded account into the correct container based on
256
+ * its poll key. Replaces dynamic `this[key]` indexing with explicit,
257
+ * type-checked dispatch.
258
+ */
259
+ private storeDecodedAccount(
260
+ accountToPoll: AccountToPoll,
261
+ account: any,
262
+ slot: number
263
+ ): void {
264
+ const dataAndSlot = { data: account, slot };
265
+ switch (accountToPoll.key) {
266
+ case 'perpMarket':
267
+ if (accountToPoll.mapKey !== undefined) {
268
+ this.perpMarket.set(accountToPoll.mapKey, dataAndSlot);
269
+ }
270
+ break;
271
+ case 'spotMarket':
272
+ if (accountToPoll.mapKey !== undefined) {
273
+ this.spotMarket.set(accountToPoll.mapKey, dataAndSlot);
274
+ }
275
+ break;
276
+ case 'state':
277
+ this.state = dataAndSlot;
278
+ break;
279
+ default: {
280
+ const _exhaustive: never = accountToPoll.key;
281
+ throw new Error(`Unhandled account poll key: ${String(_exhaustive)}`);
282
+ }
283
+ }
284
+ }
285
+
252
286
  async addAccountToAccountLoader(accountToPoll: AccountToPoll): Promise<void> {
253
287
  accountToPoll.callbackId = await this.accountLoader.addAccount(
254
288
  accountToPoll.publicKey,
@@ -259,15 +293,7 @@ export class PollingVelocityClientAccountSubscriber
259
293
  accountToPoll.key,
260
294
  buffer
261
295
  );
262
- const dataAndSlot = {
263
- data: account,
264
- slot,
265
- };
266
- if (accountToPoll.mapKey != undefined) {
267
- this[accountToPoll.key].set(accountToPoll.mapKey, dataAndSlot);
268
- } else {
269
- this[accountToPoll.key] = dataAndSlot;
270
- }
296
+ this.storeDecodedAccount(accountToPoll, account, slot);
271
297
 
272
298
  // @ts-ignore
273
299
  this.eventEmitter.emit(accountToPoll.eventType, account);
@@ -293,6 +319,7 @@ export class PollingVelocityClientAccountSubscriber
293
319
  oracleToPoll.publicKey,
294
320
  (buffer: Buffer, slot: number) => {
295
321
  if (!buffer) return;
322
+ if (!oracleClient) return;
296
323
 
297
324
  const oraclePriceData =
298
325
  oracleClient.getOraclePriceDataFromBuffer(buffer);
@@ -332,17 +359,7 @@ export class PollingVelocityClientAccountSubscriber
332
359
  accountToPoll.key,
333
360
  buffer
334
361
  );
335
- if (accountToPoll.mapKey != undefined) {
336
- this[accountToPoll.key].set(accountToPoll.mapKey, {
337
- data: account,
338
- slot,
339
- });
340
- } else {
341
- this[accountToPoll.key] = {
342
- data: account,
343
- slot,
344
- };
345
- }
362
+ this.storeDecodedAccount(accountToPoll, account, slot);
346
363
  }
347
364
  }
348
365
 
@@ -363,6 +380,9 @@ export class PollingVelocityClientAccountSubscriber
363
380
  this.program.provider.connection,
364
381
  this.program
365
382
  );
383
+ if (!oracleClient) {
384
+ continue;
385
+ }
366
386
  const oraclePriceData =
367
387
  oracleClient.getOraclePriceDataFromBuffer(buffer);
368
388
  this.oracles.set(
@@ -418,6 +438,9 @@ export class PollingVelocityClientAccountSubscriber
418
438
  await this.addSpotMarketAccountToPoll(marketIndex);
419
439
 
420
440
  const accountToPoll = this.accountsToPoll.get(marketPublicKey.toString());
441
+ if (!accountToPoll) {
442
+ return false;
443
+ }
421
444
 
422
445
  await this.addAccountToAccountLoader(accountToPoll);
423
446
  this.setSpotOracleMap();
@@ -436,6 +459,9 @@ export class PollingVelocityClientAccountSubscriber
436
459
 
437
460
  await this.addPerpMarketAccountToPoll(marketIndex);
438
461
  const accountToPoll = this.accountsToPoll.get(marketPublicKey.toString());
462
+ if (!accountToPoll) {
463
+ return false;
464
+ }
439
465
  await this.addAccountToAccountLoader(accountToPoll);
440
466
  await this.setPerpOracleMap();
441
467
  return true;
@@ -455,7 +481,9 @@ export class PollingVelocityClientAccountSubscriber
455
481
  if (!this.oraclesToPoll.has(oracleId)) {
456
482
  this.addOracleToPoll(oracleInfo);
457
483
  const oracleToPoll = this.oraclesToPoll.get(oracleId);
458
- await this.addOracleToAccountLoader(oracleToPoll);
484
+ if (oracleToPoll) {
485
+ await this.addOracleToAccountLoader(oracleToPoll);
486
+ }
459
487
  }
460
488
 
461
489
  await this.pauseForOracleToBeAdded(3, oracleInfo.publicKey.toBase58());
@@ -486,13 +514,13 @@ export class PollingVelocityClientAccountSubscriber
486
514
  for (const perpMarket of perpMarkets) {
487
515
  const perpMarketAccount = perpMarket.data;
488
516
  const perpMarketIndex = perpMarketAccount.marketIndex;
489
- const oracle = perpMarketAccount.amm.oracle;
490
- const oracleId = getOracleId(oracle, perpMarketAccount.amm.oracleSource);
517
+ const oracle = perpMarketAccount.oracle;
518
+ const oracleId = getOracleId(oracle, perpMarketAccount.oracleSource);
491
519
  if (!this.oracles.has(oracleId)) {
492
520
  oraclePromises.push(
493
521
  this.addOracle({
494
522
  publicKey: oracle,
495
- source: perpMarketAccount.amm.oracleSource,
523
+ source: perpMarketAccount.oracleSource,
496
524
  })
497
525
  );
498
526
  }
@@ -535,10 +563,22 @@ export class PollingVelocityClientAccountSubscriber
535
563
  );
536
564
 
537
565
  for (const perpMarketIndex of perpMarketIndexes) {
538
- const perpMarketPubkey = this.perpMarket.get(perpMarketIndex).data.pubkey;
539
- const callbackId = this.accountsToPoll.get(
566
+ const perpMarketData = this.perpMarket.get(perpMarketIndex);
567
+ if (!perpMarketData) {
568
+ throw new Error(
569
+ `PollingVelocityClientAccountSubscriber: delisted perp market ${perpMarketIndex} not found in perpMarket map`
570
+ );
571
+ }
572
+ const perpMarketPubkey = perpMarketData.data.pubkey;
573
+ const accountToPoll = this.accountsToPoll.get(
540
574
  perpMarketPubkey.toBase58()
541
- ).callbackId;
575
+ );
576
+ if (!accountToPoll) {
577
+ throw new Error(
578
+ `PollingVelocityClientAccountSubscriber: delisted perp market ${perpMarketIndex} not found in accountsToPoll map`
579
+ );
580
+ }
581
+ const callbackId = accountToPoll.callbackId;
542
582
  this.accountLoader.removeAccount(perpMarketPubkey, callbackId);
543
583
  if (this.delistedMarketSetting === DelistedMarketSetting.Discard) {
544
584
  this.perpMarket.delete(perpMarketIndex);
@@ -547,7 +587,13 @@ export class PollingVelocityClientAccountSubscriber
547
587
 
548
588
  for (const oracle of oracles) {
549
589
  const oracleId = getOracleId(oracle.publicKey, oracle.source);
550
- const callbackId = this.oraclesToPoll.get(oracleId).callbackId;
590
+ const oracleToPoll = this.oraclesToPoll.get(oracleId);
591
+ if (!oracleToPoll) {
592
+ throw new Error(
593
+ `PollingVelocityClientAccountSubscriber: delisted oracle ${oracleId} not found in oraclesToPoll map`
594
+ );
595
+ }
596
+ const callbackId = oracleToPoll.callbackId;
551
597
  this.accountLoader.removeAccount(oracle.publicKey, callbackId);
552
598
  if (this.delistedMarketSetting === DelistedMarketSetting.Discard) {
553
599
  this.oracles.delete(oracleId);
@@ -565,7 +611,7 @@ export class PollingVelocityClientAccountSubscriber
565
611
 
566
612
  public getStateAccountAndSlot(): DataAndSlot<StateAccount> {
567
613
  this.assertIsSubscribed();
568
- return this.state;
614
+ return this.state!;
569
615
  }
570
616
 
571
617
  public getMarketAccountAndSlot(
@@ -609,11 +655,11 @@ export class PollingVelocityClientAccountSubscriber
609
655
  const oracle = this.perpOracleMap.get(marketIndex);
610
656
  const oracleId = this.perpOracleStringMap.get(marketIndex);
611
657
 
612
- if (!perpMarketAccount || !oracle) {
658
+ if (!perpMarketAccount || !oracle || !oracleId) {
613
659
  return undefined;
614
660
  }
615
661
 
616
- if (!perpMarketAccount.data.amm.oracle.equals(oracle)) {
662
+ if (!perpMarketAccount.data.oracle.equals(oracle)) {
617
663
  // If the oracle has changed, we need to update the oracle map in background
618
664
  this.setPerpOracleMap();
619
665
  }
@@ -627,7 +673,7 @@ export class PollingVelocityClientAccountSubscriber
627
673
  const spotMarketAccount = this.getSpotMarketAccountAndSlot(marketIndex);
628
674
  const oracle = this.spotOracleMap.get(marketIndex);
629
675
  const oracleId = this.spotOracleStringMap.get(marketIndex);
630
- if (!spotMarketAccount || !oracle) {
676
+ if (!spotMarketAccount || !oracle || !oracleId) {
631
677
  return undefined;
632
678
  }
633
679
 
@@ -643,10 +689,3 @@ export class PollingVelocityClientAccountSubscriber
643
689
  this.accountLoader.updatePollingFrequency(pollingFrequency);
644
690
  }
645
691
  }
646
-
647
- /** @deprecated Use `PollingVelocityClientAccountSubscriber` instead. `PollingDriftClientAccountSubscriber` will be removed in a future major. */
648
- export const PollingDriftClientAccountSubscriber =
649
- PollingVelocityClientAccountSubscriber;
650
- /** @deprecated Use `PollingVelocityClientAccountSubscriber` instead. `PollingDriftClientAccountSubscriber` will be removed in a future major. */
651
- export type PollingDriftClientAccountSubscriber =
652
- PollingVelocityClientAccountSubscriber;
@@ -5,8 +5,8 @@
5
5
  * market, oracle, and state accounts cached in memory. `User` uses a `UserAccountSubscriber`
6
6
  * for the individual User account. All subscribers implement the interfaces defined here.
7
7
  *
8
- * Implementations: `webSocketDriftClientAccountSubscriber.ts` (default),
9
- * `pollingDriftClientAccountSubscriber.ts`, `bulkAccountLoader.ts` (batched RPC).
8
+ * Implementations: `webSocketVelocityClientAccountSubscriber.ts` (default),
9
+ * `pollingVelocityClientAccountSubscriber.ts`, `bulkAccountLoader.ts` (batched RPC).
10
10
  */
11
11
  import {
12
12
  SpotMarketAccount,
@@ -65,9 +65,6 @@ export interface VelocityClientAccountEvents {
65
65
  error: (e: Error) => void;
66
66
  }
67
67
 
68
- /** @deprecated Use `VelocityClientAccountEvents` instead. `DriftClientAccountEvents` will be removed in a future major. */
69
- export interface DriftClientAccountEvents extends VelocityClientAccountEvents {}
70
-
71
68
  export interface VelocityClientAccountSubscriber {
72
69
  eventEmitter: StrictEventEmitter<EventEmitter, VelocityClientAccountEvents>;
73
70
  isSubscribed: boolean;
@@ -104,10 +101,6 @@ export interface VelocityClientAccountSubscriber {
104
101
  updateAccountLoaderPollingFrequency?: (pollingFrequency: number) => void;
105
102
  }
106
103
 
107
- /** @deprecated Use `VelocityClientAccountSubscriber` instead. `DriftClientAccountSubscriber` will be removed in a future major. */
108
- export interface DriftClientAccountSubscriber
109
- extends VelocityClientAccountSubscriber {}
110
-
111
104
  export enum DelistedMarketSetting {
112
105
  Unsubscribe,
113
106
  Subscribe,
@@ -135,7 +128,7 @@ export interface UserAccountSubscriber {
135
128
  updateData(userAccount: UserAccount, slot: number): void;
136
129
  unsubscribe(): Promise<void>;
137
130
 
138
- getUserAccountAndSlot(): DataAndSlot<UserAccount>;
131
+ getUserAccountAndSlot(): DataAndSlot<UserAccount> | undefined;
139
132
  }
140
133
 
141
134
  export interface TokenAccountEvents {
@@ -166,7 +159,9 @@ export interface InsuranceFundStakeAccountSubscriber {
166
159
  fetch(): Promise<void>;
167
160
  unsubscribe(): Promise<void>;
168
161
 
169
- getInsuranceFundStakeAccountAndSlot(): DataAndSlot<InsuranceFundStake>;
162
+ getInsuranceFundStakeAccountAndSlot():
163
+ | DataAndSlot<InsuranceFundStake>
164
+ | undefined;
170
165
  }
171
166
 
172
167
  export interface InsuranceFundStakeAccountEvents {
@@ -193,7 +188,7 @@ export interface OracleAccountSubscriber {
193
188
  }
194
189
 
195
190
  export type AccountToPoll = {
196
- key: string;
191
+ key: 'state' | 'perpMarket' | 'spotMarket';
197
192
  publicKey: PublicKey;
198
193
  eventType: string;
199
194
  callbackId?: string;
@@ -238,7 +233,7 @@ export interface UserStatsAccountSubscriber {
238
233
  fetch(): Promise<void>;
239
234
  unsubscribe(): Promise<void>;
240
235
 
241
- getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount>;
236
+ getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount> | undefined;
242
237
  }
243
238
 
244
239
  type BaseGrpcConfigs = {
@@ -7,6 +7,16 @@ export function capitalize(value: string): string {
7
7
  return value[0].toUpperCase() + value.slice(1);
8
8
  }
9
9
 
10
+ export function assertDataAndSlot<T>(
11
+ dataAndSlot: DataAndSlot<T> | undefined,
12
+ message: string
13
+ ): DataAndSlot<T> {
14
+ if (!dataAndSlot) {
15
+ throw new Error(message);
16
+ }
17
+ return dataAndSlot;
18
+ }
19
+
10
20
  export function findDelistedPerpMarketsAndOracles(
11
21
  perpMarkets: DataAndSlot<PerpMarketAccount>[],
12
22
  spotMarkets: DataAndSlot<SpotMarketAccount>[]
@@ -21,8 +31,8 @@ export function findDelistedPerpMarketsAndOracles(
21
31
  if (isVariant(perpMarket.data.status, 'delisted')) {
22
32
  delistedPerpMarketIndexes.push(perpMarket.data.marketIndex);
23
33
  delistedOracles.push({
24
- publicKey: perpMarket.data.amm.oracle,
25
- source: perpMarket.data.amm.oracleSource,
34
+ publicKey: perpMarket.data.oracle,
35
+ source: perpMarket.data.oracleSource,
26
36
  });
27
37
  }
28
38
  }
@@ -16,8 +16,17 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
16
16
  logAccountName: string;
17
17
  program: VelocityProgram;
18
18
  accountPublicKey: PublicKey;
19
- decodeBufferFn: (buffer: Buffer) => T;
20
- onChange: (data: T) => void;
19
+ decodeBufferFn?: (buffer: Buffer) => T;
20
+ private _onChange?: (data: T) => void;
21
+ get onChange(): (data: T) => void {
22
+ if (!this._onChange) {
23
+ throw new Error('onChange callback function must be set');
24
+ }
25
+ return this._onChange;
26
+ }
27
+ set onChange(onChange: (data: T) => void) {
28
+ this._onChange = onChange;
29
+ }
21
30
  listenerId?: number;
22
31
 
23
32
  resubOpts?: ResubOpts;
@@ -43,7 +52,10 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
43
52
  this.accountPublicKey = accountPublicKey;
44
53
  this.decodeBufferFn = decodeBuffer;
45
54
  this.resubOpts = resubOpts;
46
- if (this.resubOpts?.resubTimeoutMs < 1000) {
55
+ if (
56
+ this.resubOpts?.resubTimeoutMs != null &&
57
+ this.resubOpts.resubTimeoutMs < 1000
58
+ ) {
47
59
  console.log(
48
60
  `resubTimeoutMs should be at least 1000ms to avoid spamming resub ${this.logAccountName}`
49
61
  );
@@ -97,12 +109,12 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
97
109
 
98
110
  this.dataAndSlot = {
99
111
  data,
100
- slot,
112
+ slot: newSlot,
101
113
  };
102
114
  }
103
115
 
104
116
  protected setTimeout(): void {
105
- if (!this.onChange) {
117
+ if (!this._onChange) {
106
118
  throw new Error('onChange callback function must be set');
107
119
  }
108
120
  this.timeoutId = setTimeout(
@@ -149,7 +161,10 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
149
161
  this.accountPublicKey,
150
162
  (this.program.provider as AnchorProvider).opts.commitment
151
163
  );
152
- this.handleRpcResponse(rpcResponse.context, rpcResponse?.value);
164
+ this.handleRpcResponse(
165
+ rpcResponse.context,
166
+ rpcResponse?.value ?? undefined
167
+ );
153
168
  }
154
169
 
155
170
  handleRpcResponse(context: Context, accountInfo?: AccountInfo<Buffer>): void {
@@ -198,10 +213,7 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
198
213
  if (this.decodeBufferFn) {
199
214
  return this.decodeBufferFn(buffer);
200
215
  } else {
201
- return this.program.account[this.accountName].coder.accounts.decode(
202
- this.accountName,
203
- buffer
204
- );
216
+ return this.program.coder.accounts.decode(this.accountName, buffer);
205
217
  }
206
218
  }
207
219
 
@@ -245,6 +257,7 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
245
257
  return promise;
246
258
  } else {
247
259
  this.isUnsubscribing = false;
260
+ return Promise.resolve();
248
261
  }
249
262
  }
250
263
  }
@@ -77,8 +77,17 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
77
77
  logAccountName: string;
78
78
  program: VelocityProgram;
79
79
  accountPublicKey: PublicKey;
80
- decodeBufferFn: (buffer: Buffer) => T;
81
- onChange: (data: T) => void;
80
+ decodeBufferFn?: (buffer: Buffer) => T;
81
+ private _onChange?: (data: T) => void;
82
+ get onChange(): (data: T) => void {
83
+ if (!this._onChange) {
84
+ throw new Error('onChange callback function must be set');
85
+ }
86
+ return this._onChange;
87
+ }
88
+ set onChange(onChange: (data: T) => void) {
89
+ this._onChange = onChange;
90
+ }
82
91
  listenerId?: number;
83
92
 
84
93
  resubOpts: ResubOpts;
@@ -131,7 +140,10 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
131
140
  usePollingInsteadOfResub: true,
132
141
  logResubMessages: false,
133
142
  };
134
- if (this.resubOpts.resubTimeoutMs < 1000) {
143
+ if (
144
+ this.resubOpts.resubTimeoutMs != null &&
145
+ this.resubOpts.resubTimeoutMs < 1000
146
+ ) {
135
147
  console.log(
136
148
  `resubTimeoutMs should be at least 1000ms to avoid spamming resub ${this.logAccountName}`
137
149
  );
@@ -139,7 +151,7 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
139
151
  this.receivingData = false;
140
152
  if (
141
153
  ['recent', 'single', 'singleGossip', 'root', 'max'].includes(
142
- (this.program.provider as AnchorProvider).opts.commitment
154
+ (this.program.provider as AnchorProvider).opts.commitment ?? ''
143
155
  )
144
156
  ) {
145
157
  console.warn(
@@ -264,7 +276,7 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
264
276
 
265
277
  this.dataAndSlot = {
266
278
  data,
267
- slot,
279
+ slot: newSlot,
268
280
  };
269
281
  }
270
282
 
@@ -274,7 +286,7 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
274
286
  * `resubOpts.resubTimeoutMs` and `receivingData` is true, trigger either
275
287
  * a polling loop or a resubscribe depending on options.
276
288
  */
277
- if (!this.onChange) {
289
+ if (!this._onChange) {
278
290
  throw new Error('onChange callback function must be set');
279
291
  }
280
292
  this.timeoutId = setTimeout(async () => {
@@ -411,7 +423,10 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
411
423
 
412
424
  const accountInfo = rpcResponse.value;
413
425
 
414
- this.handleRpcResponse({ slot: BigInt(context.slot) }, accountInfo);
426
+ this.handleRpcResponse(
427
+ { slot: BigInt(context.slot) },
428
+ accountInfo ?? undefined
429
+ );
415
430
  }
416
431
 
417
432
  handleRpcResponse(
@@ -480,7 +495,7 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
480
495
  if (this.decodeBufferFn) {
481
496
  return this.decodeBufferFn(buffer);
482
497
  } else {
483
- return this.program.account[this.accountName].coder.accounts.decode(
498
+ return this.program.coder.accounts.decode(
484
499
  capitalize(this.accountName),
485
500
  buffer
486
501
  );
@@ -25,7 +25,20 @@ export class WebSocketInsuranceFundStakeAccountSubscriber
25
25
  >;
26
26
  insuranceFundStakeAccountPublicKey: PublicKey;
27
27
 
28
- insuranceFundStakeDataAccountSubscriber: AccountSubscriber<InsuranceFundStake>;
28
+ private _insuranceFundStakeDataAccountSubscriber?: AccountSubscriber<InsuranceFundStake>;
29
+ get insuranceFundStakeDataAccountSubscriber(): AccountSubscriber<InsuranceFundStake> {
30
+ if (!this._insuranceFundStakeDataAccountSubscriber) {
31
+ throw new Error(
32
+ 'insuranceFundStakeDataAccountSubscriber accessed before subscribe()'
33
+ );
34
+ }
35
+ return this._insuranceFundStakeDataAccountSubscriber;
36
+ }
37
+ set insuranceFundStakeDataAccountSubscriber(
38
+ subscriber: AccountSubscriber<InsuranceFundStake>
39
+ ) {
40
+ this._insuranceFundStakeDataAccountSubscriber = subscriber;
41
+ }
29
42
 
30
43
  public constructor(
31
44
  program: VelocityProgram,
@@ -103,7 +116,9 @@ export class WebSocketInsuranceFundStakeAccountSubscriber
103
116
  }
104
117
  }
105
118
 
106
- public getInsuranceFundStakeAccountAndSlot(): DataAndSlot<InsuranceFundStake> {
119
+ public getInsuranceFundStakeAccountAndSlot():
120
+ | DataAndSlot<InsuranceFundStake>
121
+ | undefined {
107
122
  this.assertIsSubscribed();
108
123
  return this.insuranceFundStakeDataAccountSubscriber.dataAndSlot;
109
124
  }
@@ -19,12 +19,33 @@ export class WebSocketProgramAccountSubscriber<T>
19
19
  bufferAndSlotMap: Map<string, BufferAndSlot> = new Map();
20
20
  program: VelocityProgram;
21
21
  decodeBuffer: (accountName: string, ix: Buffer) => T;
22
- onChange: (
22
+ private _onChange?: (
23
23
  accountId: PublicKey,
24
24
  data: T,
25
25
  context: Context,
26
26
  buffer: Buffer
27
27
  ) => void;
28
+ get onChange(): (
29
+ accountId: PublicKey,
30
+ data: T,
31
+ context: Context,
32
+ buffer: Buffer
33
+ ) => void {
34
+ if (!this._onChange) {
35
+ throw new Error('onChange callback function must be set');
36
+ }
37
+ return this._onChange;
38
+ }
39
+ set onChange(
40
+ onChange: (
41
+ accountId: PublicKey,
42
+ data: T,
43
+ context: Context,
44
+ buffer: Buffer
45
+ ) => void
46
+ ) {
47
+ this._onChange = onChange;
48
+ }
28
49
  listenerId?: number;
29
50
  resubOpts?: ResubOpts;
30
51
  isUnsubscribing = false;
@@ -48,7 +69,10 @@ export class WebSocketProgramAccountSubscriber<T>
48
69
  this.program = program;
49
70
  this.decodeBuffer = decodeBufferFn;
50
71
  this.resubOpts = resubOpts;
51
- if (this.resubOpts?.resubTimeoutMs < 1000) {
72
+ if (
73
+ this.resubOpts?.resubTimeoutMs != null &&
74
+ this.resubOpts.resubTimeoutMs < 1000
75
+ ) {
52
76
  console.log(
53
77
  'resubTimeoutMs should be at least 1000ms to avoid spamming resub'
54
78
  );
@@ -95,7 +119,7 @@ export class WebSocketProgramAccountSubscriber<T>
95
119
  }
96
120
 
97
121
  protected setTimeout(): void {
98
- if (!this.onChange) {
122
+ if (!this._onChange) {
99
123
  throw new Error('onChange callback function must be set');
100
124
  }
101
125
  this.timeoutId = setTimeout(
@@ -161,7 +185,7 @@ export class WebSocketProgramAccountSubscriber<T>
161
185
  }
162
186
 
163
187
  unsubscribe(onResub = false): Promise<void> {
164
- if (!onResub) {
188
+ if (!onResub && this.resubOpts) {
165
189
  this.resubOpts.resubTimeoutMs = undefined;
166
190
  }
167
191
  this.isUnsubscribing = true;
@@ -178,6 +202,7 @@ export class WebSocketProgramAccountSubscriber<T>
178
202
  return promise;
179
203
  } else {
180
204
  this.isUnsubscribing = false;
205
+ return Promise.resolve();
181
206
  }
182
207
  }
183
208
  }