@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
@@ -17,7 +17,9 @@ class PollingUserAccountSubscriber {
17
17
  return true;
18
18
  }
19
19
  if (userAccount) {
20
- this.user = { data: userAccount, slot: undefined };
20
+ // `slot: 0` keeps {data, slot} atomic: a seeded account always carries a
21
+ // slot (0 = oldest-possible sentinel, overwritten by the first real fetch).
22
+ this.user = { data: userAccount, slot: 0 };
21
23
  }
22
24
  await this.addToAccountLoader();
23
25
  await this.fetchIfUnloaded();
@@ -48,7 +50,7 @@ class PollingUserAccountSubscriber {
48
50
  });
49
51
  }
50
52
  async fetchIfUnloaded() {
51
- if (this.user === undefined) {
53
+ if (!this.doesAccountExist()) {
52
54
  await this.fetch();
53
55
  }
54
56
  }
@@ -56,7 +58,8 @@ class PollingUserAccountSubscriber {
56
58
  var _a, _b;
57
59
  try {
58
60
  const dataAndContext = await this.connection.getAccountInfoAndContext(this.userAccountPublicKey, this.accountLoader.commitment);
59
- if (dataAndContext.context.slot > ((_b = (_a = this.user) === null || _a === void 0 ? void 0 : _a.slot) !== null && _b !== void 0 ? _b : 0)) {
61
+ if (dataAndContext.value !== null &&
62
+ dataAndContext.context.slot > ((_b = (_a = this.user) === null || _a === void 0 ? void 0 : _a.slot) !== null && _b !== void 0 ? _b : 0)) {
60
63
  this.user = {
61
64
  data: this.decode('user', dataAndContext.value.data),
62
65
  slot: dataAndContext.context.slot,
@@ -64,7 +67,8 @@ class PollingUserAccountSubscriber {
64
67
  }
65
68
  }
66
69
  catch (e) {
67
- console.log(`PollingUserAccountSubscriber.fetch() UserAccount does not exist: ${e.message}-${e.stack}`);
70
+ const err = e instanceof Error ? e : new Error(String(e));
71
+ console.log(`PollingUserAccountSubscriber.fetch() UserAccount does not exist: ${err.message}-${err.stack}`);
68
72
  }
69
73
  }
70
74
  doesAccountExist() {
@@ -74,10 +78,14 @@ class PollingUserAccountSubscriber {
74
78
  if (!this.isSubscribed) {
75
79
  return;
76
80
  }
77
- this.accountLoader.removeAccount(this.userAccountPublicKey, this.callbackId);
78
- this.callbackId = undefined;
79
- this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
80
- this.errorCallbackId = undefined;
81
+ if (this.callbackId) {
82
+ this.accountLoader.removeAccount(this.userAccountPublicKey, this.callbackId);
83
+ this.callbackId = undefined;
84
+ }
85
+ if (this.errorCallbackId) {
86
+ this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
87
+ this.errorCallbackId = undefined;
88
+ }
81
89
  this.isSubscribed = false;
82
90
  }
83
91
  assertIsSubscribed() {
@@ -86,9 +94,7 @@ class PollingUserAccountSubscriber {
86
94
  }
87
95
  }
88
96
  getUserAccountAndSlot() {
89
- if (!this.doesAccountExist()) {
90
- throw new types_1.NotSubscribedError('You must call `subscribe` or `fetch` before using this function');
91
- }
97
+ this.assertIsSubscribed();
92
98
  return this.user;
93
99
  }
94
100
  updateData(userAccount, slot) {
@@ -20,8 +20,10 @@ export declare class PollingUserStatsAccountSubscriber implements UserStatsAccou
20
20
  addToAccountLoader(): Promise<void>;
21
21
  fetchIfUnloaded(): Promise<void>;
22
22
  fetch(): Promise<void>;
23
- doesAccountExist(): boolean;
23
+ doesAccountExist(): this is {
24
+ userStats: DataAndSlot<UserStatsAccount>;
25
+ };
24
26
  unsubscribe(): Promise<void>;
25
27
  assertIsSubscribed(): void;
26
- getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount>;
28
+ getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount> | undefined;
27
29
  }
@@ -16,7 +16,9 @@ class PollingUserStatsAccountSubscriber {
16
16
  return true;
17
17
  }
18
18
  if (userStatsAccount) {
19
- this.userStats = { data: userStatsAccount, slot: undefined };
19
+ // `slot: 0` keeps {data, slot} atomic: a seeded account always carries a
20
+ // slot (0 = oldest-possible sentinel, overwritten by the first real fetch).
21
+ this.userStats = { data: userStatsAccount, slot: 0 };
20
22
  }
21
23
  await this.addToAccountLoader();
22
24
  await this.fetchIfUnloaded();
@@ -47,7 +49,7 @@ class PollingUserStatsAccountSubscriber {
47
49
  });
48
50
  }
49
51
  async fetchIfUnloaded() {
50
- if (this.userStats === undefined) {
52
+ if (!this.doesAccountExist()) {
51
53
  await this.fetch();
52
54
  }
53
55
  }
@@ -63,7 +65,7 @@ class PollingUserStatsAccountSubscriber {
63
65
  }
64
66
  }
65
67
  catch (e) {
66
- console.log(`PollingUserStatsAccountSubscriber.fetch() UserStatsAccount does not exist: ${e.message}`);
68
+ console.log(`PollingUserStatsAccountSubscriber.fetch() UserStatsAccount does not exist: ${e instanceof Error ? e.message : String(e)}`);
67
69
  }
68
70
  }
69
71
  doesAccountExist() {
@@ -85,9 +87,7 @@ class PollingUserStatsAccountSubscriber {
85
87
  }
86
88
  }
87
89
  getUserStatsAccountAndSlot() {
88
- if (!this.doesAccountExist()) {
89
- throw new types_1.NotSubscribedError('You must call `subscribe` or `fetch` before using this function');
90
- }
90
+ this.assertIsSubscribed();
91
91
  return this.userStats;
92
92
  }
93
93
  }
@@ -32,8 +32,8 @@ export declare class PollingVelocityClientAccountSubscriber implements VelocityC
32
32
  user?: DataAndSlot<UserAccount>;
33
33
  delistedMarketSetting: DelistedMarketSetting;
34
34
  private isSubscribing;
35
- private subscriptionPromise;
36
35
  private subscriptionPromiseResolver;
36
+ private subscriptionPromise;
37
37
  constructor(program: VelocityProgram, accountLoader: BulkAccountLoader, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, delistedMarketSetting: DelistedMarketSetting);
38
38
  subscribe(): Promise<boolean>;
39
39
  updateAccountsToPoll(): Promise<void>;
@@ -44,6 +44,12 @@ export declare class PollingVelocityClientAccountSubscriber implements VelocityC
44
44
  updateOraclesToPoll(): boolean;
45
45
  addOracleToPoll(oracleInfo: OracleInfo): boolean;
46
46
  addToAccountLoader(): Promise<void>;
47
+ /**
48
+ * Routes a freshly-decoded account into the correct container based on
49
+ * its poll key. Replaces dynamic `this[key]` indexing with explicit,
50
+ * type-checked dispatch.
51
+ */
52
+ private storeDecodedAccount;
47
53
  addAccountToAccountLoader(accountToPoll: AccountToPoll): Promise<void>;
48
54
  addOracleToAccountLoader(oracleToPoll: OraclesToPoll): Promise<void>;
49
55
  fetch(): Promise<void>;
@@ -67,7 +73,3 @@ export declare class PollingVelocityClientAccountSubscriber implements VelocityC
67
73
  getOraclePriceDataAndSlotForSpotMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined;
68
74
  updateAccountLoaderPollingFrequency(pollingFrequency: number): void;
69
75
  }
70
- /** @deprecated Use `PollingVelocityClientAccountSubscriber` instead. `PollingDriftClientAccountSubscriber` will be removed in a future major. */
71
- export declare const PollingDriftClientAccountSubscriber: typeof PollingVelocityClientAccountSubscriber;
72
- /** @deprecated Use `PollingVelocityClientAccountSubscriber` instead. `PollingDriftClientAccountSubscriber` will be removed in a future major. */
73
- export type PollingDriftClientAccountSubscriber = PollingVelocityClientAccountSubscriber;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PollingDriftClientAccountSubscriber = exports.PollingVelocityClientAccountSubscriber = void 0;
3
+ exports.PollingVelocityClientAccountSubscriber = void 0;
4
4
  const types_1 = require("./types");
5
5
  const events_1 = require("events");
6
6
  const types_2 = require("../types");
@@ -25,6 +25,10 @@ class PollingVelocityClientAccountSubscriber {
25
25
  this.spotOracleStringMap = new Map();
26
26
  this.oracles = new Map();
27
27
  this.isSubscribing = false;
28
+ this.subscriptionPromiseResolver = () => { };
29
+ this.subscriptionPromise = new Promise((res) => {
30
+ this.subscriptionPromiseResolver = res;
31
+ });
28
32
  this.isSubscribed = false;
29
33
  this.program = program;
30
34
  this.eventEmitter = new events_1.EventEmitter();
@@ -148,21 +152,39 @@ class PollingVelocityClientAccountSubscriber {
148
152
  this.eventEmitter.emit('error', error);
149
153
  });
150
154
  }
155
+ /**
156
+ * Routes a freshly-decoded account into the correct container based on
157
+ * its poll key. Replaces dynamic `this[key]` indexing with explicit,
158
+ * type-checked dispatch.
159
+ */
160
+ storeDecodedAccount(accountToPoll, account, slot) {
161
+ const dataAndSlot = { data: account, slot };
162
+ switch (accountToPoll.key) {
163
+ case 'perpMarket':
164
+ if (accountToPoll.mapKey !== undefined) {
165
+ this.perpMarket.set(accountToPoll.mapKey, dataAndSlot);
166
+ }
167
+ break;
168
+ case 'spotMarket':
169
+ if (accountToPoll.mapKey !== undefined) {
170
+ this.spotMarket.set(accountToPoll.mapKey, dataAndSlot);
171
+ }
172
+ break;
173
+ case 'state':
174
+ this.state = dataAndSlot;
175
+ break;
176
+ default: {
177
+ const _exhaustive = accountToPoll.key;
178
+ throw new Error(`Unhandled account poll key: ${String(_exhaustive)}`);
179
+ }
180
+ }
181
+ }
151
182
  async addAccountToAccountLoader(accountToPoll) {
152
183
  accountToPoll.callbackId = await this.accountLoader.addAccount(accountToPoll.publicKey, (buffer, slot) => {
153
184
  if (!buffer)
154
185
  return;
155
186
  const account = this.program.coder.accounts.decodeUnchecked(accountToPoll.key, buffer);
156
- const dataAndSlot = {
157
- data: account,
158
- slot,
159
- };
160
- if (accountToPoll.mapKey != undefined) {
161
- this[accountToPoll.key].set(accountToPoll.mapKey, dataAndSlot);
162
- }
163
- else {
164
- this[accountToPoll.key] = dataAndSlot;
165
- }
187
+ this.storeDecodedAccount(accountToPoll, account, slot);
166
188
  // @ts-ignore
167
189
  this.eventEmitter.emit(accountToPoll.eventType, account);
168
190
  this.eventEmitter.emit('update');
@@ -177,6 +199,8 @@ class PollingVelocityClientAccountSubscriber {
177
199
  oracleToPoll.callbackId = await this.accountLoader.addAccount(oracleToPoll.publicKey, (buffer, slot) => {
178
200
  if (!buffer)
179
201
  return;
202
+ if (!oracleClient)
203
+ return;
180
204
  const oraclePriceData = oracleClient.getOraclePriceDataFromBuffer(buffer);
181
205
  const dataAndSlot = {
182
206
  data: oraclePriceData,
@@ -197,18 +221,7 @@ class PollingVelocityClientAccountSubscriber {
197
221
  const { buffer, slot } = bufferAndSlot;
198
222
  if (buffer) {
199
223
  const account = this.program.coder.accounts.decodeUnchecked(accountToPoll.key, buffer);
200
- if (accountToPoll.mapKey != undefined) {
201
- this[accountToPoll.key].set(accountToPoll.mapKey, {
202
- data: account,
203
- slot,
204
- });
205
- }
206
- else {
207
- this[accountToPoll.key] = {
208
- data: account,
209
- slot,
210
- };
211
- }
224
+ this.storeDecodedAccount(accountToPoll, account, slot);
212
225
  }
213
226
  }
214
227
  for (const [_, oracleToPoll] of this.oraclesToPoll) {
@@ -219,6 +232,9 @@ class PollingVelocityClientAccountSubscriber {
219
232
  const { buffer, slot } = bufferAndSlot;
220
233
  if (buffer) {
221
234
  const oracleClient = this.oracleClientCache.get(oracleToPoll.source, this.program.provider.connection, this.program);
235
+ if (!oracleClient) {
236
+ continue;
237
+ }
222
238
  const oraclePriceData = oracleClient.getOraclePriceDataFromBuffer(buffer);
223
239
  this.oracles.set((0, oracleId_1.getOracleId)(oracleToPoll.publicKey, oracleToPoll.source), {
224
240
  data: oraclePriceData,
@@ -252,6 +268,9 @@ class PollingVelocityClientAccountSubscriber {
252
268
  }
253
269
  await this.addSpotMarketAccountToPoll(marketIndex);
254
270
  const accountToPoll = this.accountsToPoll.get(marketPublicKey.toString());
271
+ if (!accountToPoll) {
272
+ return false;
273
+ }
255
274
  await this.addAccountToAccountLoader(accountToPoll);
256
275
  this.setSpotOracleMap();
257
276
  return true;
@@ -263,6 +282,9 @@ class PollingVelocityClientAccountSubscriber {
263
282
  }
264
283
  await this.addPerpMarketAccountToPoll(marketIndex);
265
284
  const accountToPoll = this.accountsToPoll.get(marketPublicKey.toString());
285
+ if (!accountToPoll) {
286
+ return false;
287
+ }
266
288
  await this.addAccountToAccountLoader(accountToPoll);
267
289
  await this.setPerpOracleMap();
268
290
  return true;
@@ -278,7 +300,9 @@ class PollingVelocityClientAccountSubscriber {
278
300
  if (!this.oraclesToPoll.has(oracleId)) {
279
301
  this.addOracleToPoll(oracleInfo);
280
302
  const oracleToPoll = this.oraclesToPoll.get(oracleId);
281
- await this.addOracleToAccountLoader(oracleToPoll);
303
+ if (oracleToPoll) {
304
+ await this.addOracleToAccountLoader(oracleToPoll);
305
+ }
282
306
  }
283
307
  await this.pauseForOracleToBeAdded(3, oracleInfo.publicKey.toBase58());
284
308
  return true;
@@ -300,12 +324,12 @@ class PollingVelocityClientAccountSubscriber {
300
324
  for (const perpMarket of perpMarkets) {
301
325
  const perpMarketAccount = perpMarket.data;
302
326
  const perpMarketIndex = perpMarketAccount.marketIndex;
303
- const oracle = perpMarketAccount.amm.oracle;
304
- const oracleId = (0, oracleId_1.getOracleId)(oracle, perpMarketAccount.amm.oracleSource);
327
+ const oracle = perpMarketAccount.oracle;
328
+ const oracleId = (0, oracleId_1.getOracleId)(oracle, perpMarketAccount.oracleSource);
305
329
  if (!this.oracles.has(oracleId)) {
306
330
  oraclePromises.push(this.addOracle({
307
331
  publicKey: oracle,
308
- source: perpMarketAccount.amm.oracleSource,
332
+ source: perpMarketAccount.oracleSource,
309
333
  }));
310
334
  }
311
335
  this.perpOracleMap.set(perpMarketIndex, oracle);
@@ -338,8 +362,16 @@ class PollingVelocityClientAccountSubscriber {
338
362
  }
339
363
  const { perpMarketIndexes, oracles } = (0, utils_1.findDelistedPerpMarketsAndOracles)(this.getMarketAccountsAndSlots(), this.getSpotMarketAccountsAndSlots());
340
364
  for (const perpMarketIndex of perpMarketIndexes) {
341
- const perpMarketPubkey = this.perpMarket.get(perpMarketIndex).data.pubkey;
342
- const callbackId = this.accountsToPoll.get(perpMarketPubkey.toBase58()).callbackId;
365
+ const perpMarketData = this.perpMarket.get(perpMarketIndex);
366
+ if (!perpMarketData) {
367
+ throw new Error(`PollingVelocityClientAccountSubscriber: delisted perp market ${perpMarketIndex} not found in perpMarket map`);
368
+ }
369
+ const perpMarketPubkey = perpMarketData.data.pubkey;
370
+ const accountToPoll = this.accountsToPoll.get(perpMarketPubkey.toBase58());
371
+ if (!accountToPoll) {
372
+ throw new Error(`PollingVelocityClientAccountSubscriber: delisted perp market ${perpMarketIndex} not found in accountsToPoll map`);
373
+ }
374
+ const callbackId = accountToPoll.callbackId;
343
375
  this.accountLoader.removeAccount(perpMarketPubkey, callbackId);
344
376
  if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Discard) {
345
377
  this.perpMarket.delete(perpMarketIndex);
@@ -347,7 +379,11 @@ class PollingVelocityClientAccountSubscriber {
347
379
  }
348
380
  for (const oracle of oracles) {
349
381
  const oracleId = (0, oracleId_1.getOracleId)(oracle.publicKey, oracle.source);
350
- const callbackId = this.oraclesToPoll.get(oracleId).callbackId;
382
+ const oracleToPoll = this.oraclesToPoll.get(oracleId);
383
+ if (!oracleToPoll) {
384
+ throw new Error(`PollingVelocityClientAccountSubscriber: delisted oracle ${oracleId} not found in oraclesToPoll map`);
385
+ }
386
+ const callbackId = oracleToPoll.callbackId;
351
387
  this.accountLoader.removeAccount(oracle.publicKey, callbackId);
352
388
  if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Discard) {
353
389
  this.oracles.delete(oracleId);
@@ -389,10 +425,10 @@ class PollingVelocityClientAccountSubscriber {
389
425
  const perpMarketAccount = this.getMarketAccountAndSlot(marketIndex);
390
426
  const oracle = this.perpOracleMap.get(marketIndex);
391
427
  const oracleId = this.perpOracleStringMap.get(marketIndex);
392
- if (!perpMarketAccount || !oracle) {
428
+ if (!perpMarketAccount || !oracle || !oracleId) {
393
429
  return undefined;
394
430
  }
395
- if (!perpMarketAccount.data.amm.oracle.equals(oracle)) {
431
+ if (!perpMarketAccount.data.oracle.equals(oracle)) {
396
432
  // If the oracle has changed, we need to update the oracle map in background
397
433
  this.setPerpOracleMap();
398
434
  }
@@ -402,7 +438,7 @@ class PollingVelocityClientAccountSubscriber {
402
438
  const spotMarketAccount = this.getSpotMarketAccountAndSlot(marketIndex);
403
439
  const oracle = this.spotOracleMap.get(marketIndex);
404
440
  const oracleId = this.spotOracleStringMap.get(marketIndex);
405
- if (!spotMarketAccount || !oracle) {
441
+ if (!spotMarketAccount || !oracle || !oracleId) {
406
442
  return undefined;
407
443
  }
408
444
  if (!spotMarketAccount.data.oracle.equals(oracle)) {
@@ -416,5 +452,3 @@ class PollingVelocityClientAccountSubscriber {
416
452
  }
417
453
  }
418
454
  exports.PollingVelocityClientAccountSubscriber = PollingVelocityClientAccountSubscriber;
419
- /** @deprecated Use `PollingVelocityClientAccountSubscriber` instead. `PollingDriftClientAccountSubscriber` will be removed in a future major. */
420
- exports.PollingDriftClientAccountSubscriber = PollingVelocityClientAccountSubscriber;
@@ -8,8 +8,8 @@
8
8
  * market, oracle, and state accounts cached in memory. `User` uses a `UserAccountSubscriber`
9
9
  * for the individual User account. All subscribers implement the interfaces defined here.
10
10
  *
11
- * Implementations: `webSocketDriftClientAccountSubscriber.ts` (default),
12
- * `pollingDriftClientAccountSubscriber.ts`, `bulkAccountLoader.ts` (batched RPC).
11
+ * Implementations: `webSocketVelocityClientAccountSubscriber.ts` (default),
12
+ * `pollingVelocityClientAccountSubscriber.ts`, `bulkAccountLoader.ts` (batched RPC).
13
13
  */
14
14
  import { SpotMarketAccount, PerpMarketAccount, OracleSource, StateAccount, UserAccount, UserStatsAccount, InsuranceFundStake, ConstituentAccount } from '../types';
15
15
  import StrictEventEmitter from 'strict-event-emitter-types';
@@ -42,9 +42,6 @@ export interface VelocityClientAccountEvents {
42
42
  update: void;
43
43
  error: (e: Error) => void;
44
44
  }
45
- /** @deprecated Use `VelocityClientAccountEvents` instead. `DriftClientAccountEvents` will be removed in a future major. */
46
- export interface DriftClientAccountEvents extends VelocityClientAccountEvents {
47
- }
48
45
  export interface VelocityClientAccountSubscriber {
49
46
  eventEmitter: StrictEventEmitter<EventEmitter, VelocityClientAccountEvents>;
50
47
  isSubscribed: boolean;
@@ -66,9 +63,6 @@ export interface VelocityClientAccountSubscriber {
66
63
  getOraclePriceDataAndSlotForSpotMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined;
67
64
  updateAccountLoaderPollingFrequency?: (pollingFrequency: number) => void;
68
65
  }
69
- /** @deprecated Use `VelocityClientAccountSubscriber` instead. `DriftClientAccountSubscriber` will be removed in a future major. */
70
- export interface DriftClientAccountSubscriber extends VelocityClientAccountSubscriber {
71
- }
72
66
  export declare enum DelistedMarketSetting {
73
67
  Unsubscribe = 0,
74
68
  Subscribe = 1,
@@ -91,7 +85,7 @@ export interface UserAccountSubscriber {
91
85
  fetch(): Promise<void>;
92
86
  updateData(userAccount: UserAccount, slot: number): void;
93
87
  unsubscribe(): Promise<void>;
94
- getUserAccountAndSlot(): DataAndSlot<UserAccount>;
88
+ getUserAccountAndSlot(): DataAndSlot<UserAccount> | undefined;
95
89
  }
96
90
  export interface TokenAccountEvents {
97
91
  tokenAccountUpdate: (payload: Account) => void;
@@ -112,7 +106,7 @@ export interface InsuranceFundStakeAccountSubscriber {
112
106
  subscribe(): Promise<boolean>;
113
107
  fetch(): Promise<void>;
114
108
  unsubscribe(): Promise<void>;
115
- getInsuranceFundStakeAccountAndSlot(): DataAndSlot<InsuranceFundStake>;
109
+ getInsuranceFundStakeAccountAndSlot(): DataAndSlot<InsuranceFundStake> | undefined;
116
110
  }
117
111
  export interface InsuranceFundStakeAccountEvents {
118
112
  insuranceFundStakeAccountUpdate: (payload: InsuranceFundStake) => void;
@@ -133,7 +127,7 @@ export interface OracleAccountSubscriber {
133
127
  getOraclePriceData(): DataAndSlot<OraclePriceData>;
134
128
  }
135
129
  export type AccountToPoll = {
136
- key: string;
130
+ key: 'state' | 'perpMarket' | 'spotMarket';
137
131
  publicKey: PublicKey;
138
132
  eventType: string;
139
133
  callbackId?: string;
@@ -169,7 +163,7 @@ export interface UserStatsAccountSubscriber {
169
163
  subscribe(userStatsAccount?: UserStatsAccount): Promise<boolean>;
170
164
  fetch(): Promise<void>;
171
165
  unsubscribe(): Promise<void>;
172
- getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount>;
166
+ getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount> | undefined;
173
167
  }
174
168
  type BaseGrpcConfigs = {
175
169
  endpoint: string;
@@ -2,6 +2,7 @@ import { DataAndSlot } from './types';
2
2
  import { PerpMarketAccount, SpotMarketAccount } from '../types';
3
3
  import { OracleInfo } from '../oracles/types';
4
4
  export declare function capitalize(value: string): string;
5
+ export declare function assertDataAndSlot<T>(dataAndSlot: DataAndSlot<T> | undefined, message: string): DataAndSlot<T>;
5
6
  export declare function findDelistedPerpMarketsAndOracles(perpMarkets: DataAndSlot<PerpMarketAccount>[], spotMarkets: DataAndSlot<SpotMarketAccount>[]): {
6
7
  perpMarketIndexes: number[];
7
8
  oracles: OracleInfo[];
@@ -1,12 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findDelistedPerpMarketsAndOracles = exports.capitalize = void 0;
3
+ exports.findDelistedPerpMarketsAndOracles = exports.assertDataAndSlot = exports.capitalize = void 0;
4
4
  const types_1 = require("../types");
5
5
  const oracleId_1 = require("../oracles/oracleId");
6
6
  function capitalize(value) {
7
7
  return value[0].toUpperCase() + value.slice(1);
8
8
  }
9
9
  exports.capitalize = capitalize;
10
+ function assertDataAndSlot(dataAndSlot, message) {
11
+ if (!dataAndSlot) {
12
+ throw new Error(message);
13
+ }
14
+ return dataAndSlot;
15
+ }
16
+ exports.assertDataAndSlot = assertDataAndSlot;
10
17
  function findDelistedPerpMarketsAndOracles(perpMarkets, spotMarkets) {
11
18
  const delistedPerpMarketIndexes = [];
12
19
  const delistedOracles = [];
@@ -17,8 +24,8 @@ function findDelistedPerpMarketsAndOracles(perpMarkets, spotMarkets) {
17
24
  if ((0, types_1.isVariant)(perpMarket.data.status, 'delisted')) {
18
25
  delistedPerpMarketIndexes.push(perpMarket.data.marketIndex);
19
26
  delistedOracles.push({
20
- publicKey: perpMarket.data.amm.oracle,
21
- source: perpMarket.data.amm.oracleSource,
27
+ publicKey: perpMarket.data.oracle,
28
+ source: perpMarket.data.oracleSource,
22
29
  });
23
30
  }
24
31
  }
@@ -10,8 +10,10 @@ export declare class WebSocketAccountSubscriber<T> implements AccountSubscriber<
10
10
  logAccountName: string;
11
11
  program: VelocityProgram;
12
12
  accountPublicKey: PublicKey;
13
- decodeBufferFn: (buffer: Buffer) => T;
14
- onChange: (data: T) => void;
13
+ decodeBufferFn?: (buffer: Buffer) => T;
14
+ private _onChange?;
15
+ get onChange(): (data: T) => void;
16
+ set onChange(onChange: (data: T) => void);
15
17
  listenerId?: number;
16
18
  resubOpts?: ResubOpts;
17
19
  commitment?: Commitment;
@@ -2,6 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WebSocketAccountSubscriber = void 0;
4
4
  class WebSocketAccountSubscriber {
5
+ get onChange() {
6
+ if (!this._onChange) {
7
+ throw new Error('onChange callback function must be set');
8
+ }
9
+ return this._onChange;
10
+ }
11
+ set onChange(onChange) {
12
+ this._onChange = onChange;
13
+ }
5
14
  constructor(accountName, program, accountPublicKey, decodeBuffer, resubOpts, commitment) {
6
15
  var _a;
7
16
  this.isUnsubscribing = false;
@@ -11,7 +20,8 @@ class WebSocketAccountSubscriber {
11
20
  this.accountPublicKey = accountPublicKey;
12
21
  this.decodeBufferFn = decodeBuffer;
13
22
  this.resubOpts = resubOpts;
14
- if (((_a = this.resubOpts) === null || _a === void 0 ? void 0 : _a.resubTimeoutMs) < 1000) {
23
+ if (((_a = this.resubOpts) === null || _a === void 0 ? void 0 : _a.resubTimeoutMs) != null &&
24
+ this.resubOpts.resubTimeoutMs < 1000) {
15
25
  console.log(`resubTimeoutMs should be at least 1000ms to avoid spamming resub ${this.logAccountName}`);
16
26
  }
17
27
  this.receivingData = false;
@@ -54,12 +64,12 @@ class WebSocketAccountSubscriber {
54
64
  }
55
65
  this.dataAndSlot = {
56
66
  data,
57
- slot,
67
+ slot: newSlot,
58
68
  };
59
69
  }
60
70
  setTimeout() {
61
71
  var _a;
62
- if (!this.onChange) {
72
+ if (!this._onChange) {
63
73
  throw new Error('onChange callback function must be set');
64
74
  }
65
75
  this.timeoutId = setTimeout(async () => {
@@ -90,8 +100,9 @@ class WebSocketAccountSubscriber {
90
100
  }, (_a = this.resubOpts) === null || _a === void 0 ? void 0 : _a.resubTimeoutMs);
91
101
  }
92
102
  async fetch() {
103
+ var _a;
93
104
  const rpcResponse = await this.program.provider.connection.getAccountInfoAndContext(this.accountPublicKey, this.program.provider.opts.commitment);
94
- this.handleRpcResponse(rpcResponse.context, rpcResponse === null || rpcResponse === void 0 ? void 0 : rpcResponse.value);
105
+ this.handleRpcResponse(rpcResponse.context, (_a = rpcResponse === null || rpcResponse === void 0 ? void 0 : rpcResponse.value) !== null && _a !== void 0 ? _a : undefined);
95
106
  }
96
107
  handleRpcResponse(context, accountInfo) {
97
108
  const newSlot = context.slot;
@@ -136,7 +147,7 @@ class WebSocketAccountSubscriber {
136
147
  return this.decodeBufferFn(buffer);
137
148
  }
138
149
  else {
139
- return this.program.account[this.accountName].coder.accounts.decode(this.accountName, buffer);
150
+ return this.program.coder.accounts.decode(this.accountName, buffer);
140
151
  }
141
152
  }
142
153
  unsubscribe(onResub = false) {
@@ -164,6 +175,7 @@ class WebSocketAccountSubscriber {
164
175
  }
165
176
  else {
166
177
  this.isUnsubscribing = false;
178
+ return Promise.resolve();
167
179
  }
168
180
  }
169
181
  }
@@ -59,8 +59,10 @@ export declare class WebSocketAccountSubscriberV2<T> implements AccountSubscribe
59
59
  logAccountName: string;
60
60
  program: VelocityProgram;
61
61
  accountPublicKey: PublicKey;
62
- decodeBufferFn: (buffer: Buffer) => T;
63
- onChange: (data: T) => void;
62
+ decodeBufferFn?: (buffer: Buffer) => T;
63
+ private _onChange?;
64
+ get onChange(): (data: T) => void;
65
+ set onChange(onChange: (data: T) => void);
64
66
  listenerId?: number;
65
67
  resubOpts: ResubOpts;
66
68
  commitment?: Commitment;
@@ -56,6 +56,15 @@ const bs58_1 = __importDefault(require("bs58"));
56
56
  * program provider’s RPC endpoint. Handles base58/base64 encoded data.
57
57
  */
58
58
  class WebSocketAccountSubscriberV2 {
59
+ get onChange() {
60
+ if (!this._onChange) {
61
+ throw new Error('onChange callback function must be set');
62
+ }
63
+ return this._onChange;
64
+ }
65
+ set onChange(onChange) {
66
+ this._onChange = onChange;
67
+ }
59
68
  /**
60
69
  * Create a single-account WebSocket subscriber with optional polling fallback.
61
70
  *
@@ -70,6 +79,7 @@ class WebSocketAccountSubscriberV2 {
70
79
  * @param rpc Optional override/injection for testing.
71
80
  */
72
81
  constructor(accountName, program, accountPublicKey, decodeBuffer, resubOpts, commitment, rpcSubscriptions, rpc) {
82
+ var _a;
73
83
  this.isUnsubscribing = false;
74
84
  this.accountName = accountName;
75
85
  this.logAccountName = `${accountName}-${accountPublicKey.toBase58()}-ws-acct-subscriber-v2`;
@@ -81,11 +91,12 @@ class WebSocketAccountSubscriberV2 {
81
91
  usePollingInsteadOfResub: true,
82
92
  logResubMessages: false,
83
93
  };
84
- if (this.resubOpts.resubTimeoutMs < 1000) {
94
+ if (this.resubOpts.resubTimeoutMs != null &&
95
+ this.resubOpts.resubTimeoutMs < 1000) {
85
96
  console.log(`resubTimeoutMs should be at least 1000ms to avoid spamming resub ${this.logAccountName}`);
86
97
  }
87
98
  this.receivingData = false;
88
- if (['recent', 'single', 'singleGossip', 'root', 'max'].includes(this.program.provider.opts.commitment)) {
99
+ if (['recent', 'single', 'singleGossip', 'root', 'max'].includes((_a = this.program.provider.opts.commitment) !== null && _a !== void 0 ? _a : '')) {
89
100
  console.warn(`using commitment ${this.program.provider.opts.commitment} that is not supported by gill, this may cause issues`);
90
101
  }
91
102
  this.commitment =
@@ -185,7 +196,7 @@ class WebSocketAccountSubscriberV2 {
185
196
  }
186
197
  this.dataAndSlot = {
187
198
  data,
188
- slot,
199
+ slot: newSlot,
189
200
  };
190
201
  }
191
202
  setTimeout() {
@@ -194,7 +205,7 @@ class WebSocketAccountSubscriberV2 {
194
205
  * `resubOpts.resubTimeoutMs` and `receivingData` is true, trigger either
195
206
  * a polling loop or a resubscribe depending on options.
196
207
  */
197
- if (!this.onChange) {
208
+ if (!this._onChange) {
198
209
  throw new Error('onChange callback function must be set');
199
210
  }
200
211
  this.timeoutId = setTimeout(async () => {
@@ -305,7 +316,7 @@ class WebSocketAccountSubscriberV2 {
305
316
  slot: Number(rpcResponse.context.slot),
306
317
  };
307
318
  const accountInfo = rpcResponse.value;
308
- this.handleRpcResponse({ slot: BigInt(context.slot) }, accountInfo);
319
+ this.handleRpcResponse({ slot: BigInt(context.slot) }, accountInfo !== null && accountInfo !== void 0 ? accountInfo : undefined);
309
320
  }
310
321
  handleRpcResponse(context, accountInfo) {
311
322
  const newSlot = context.slot;
@@ -365,7 +376,7 @@ class WebSocketAccountSubscriberV2 {
365
376
  return this.decodeBufferFn(buffer);
366
377
  }
367
378
  else {
368
- return this.program.account[this.accountName].coder.accounts.decode((0, utils_1.capitalize)(this.accountName), buffer);
379
+ return this.program.coder.accounts.decode((0, utils_1.capitalize)(this.accountName), buffer);
369
380
  }
370
381
  }
371
382
  unsubscribe(onResub = false) {
@@ -12,12 +12,14 @@ export declare class WebSocketInsuranceFundStakeAccountSubscriber implements Ins
12
12
  program: VelocityProgram;
13
13
  eventEmitter: StrictEventEmitter<EventEmitter, InsuranceFundStakeAccountEvents>;
14
14
  insuranceFundStakeAccountPublicKey: PublicKey;
15
- insuranceFundStakeDataAccountSubscriber: AccountSubscriber<InsuranceFundStake>;
15
+ private _insuranceFundStakeDataAccountSubscriber?;
16
+ get insuranceFundStakeDataAccountSubscriber(): AccountSubscriber<InsuranceFundStake>;
17
+ set insuranceFundStakeDataAccountSubscriber(subscriber: AccountSubscriber<InsuranceFundStake>);
16
18
  constructor(program: VelocityProgram, insuranceFundStakeAccountPublicKey: PublicKey, resubTimeoutMs?: number, commitment?: Commitment);
17
19
  subscribe(insuranceFundStakeAccount?: InsuranceFundStake): Promise<boolean>;
18
20
  fetch(): Promise<void>;
19
21
  unsubscribe(): Promise<void>;
20
22
  assertIsSubscribed(): void;
21
- getInsuranceFundStakeAccountAndSlot(): DataAndSlot<InsuranceFundStake>;
23
+ getInsuranceFundStakeAccountAndSlot(): DataAndSlot<InsuranceFundStake> | undefined;
22
24
  updateData(insuranceFundStake: InsuranceFundStake, slot: number): void;
23
25
  }