@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,17 +43,14 @@ export async function fetchBSolMetrics() {
43
43
  }
44
44
 
45
45
  export async function fetchBSolVelocityEmissions() {
46
- return await fetch('https://stake.solblaze.org/api/v1/drift_emissions');
46
+ return await fetch('https://stake.solblaze.org/api/v1/velocity_emissions');
47
47
  }
48
48
 
49
- /** @deprecated Use `fetchBSolVelocityEmissions` instead. `fetchBSolDriftEmissions` will be removed in a future major. */
50
- export const fetchBSolDriftEmissions = fetchBSolVelocityEmissions;
51
-
52
49
  export async function findBestSuperStakeIxs({
53
50
  marketIndex,
54
51
  amount,
55
52
  jupiterClient,
56
- driftClient,
53
+ velocityClient,
57
54
  userAccountPublicKey,
58
55
  price,
59
56
  forceMarinade,
@@ -63,7 +60,7 @@ export async function findBestSuperStakeIxs({
63
60
  marketIndex: number;
64
61
  amount: BN;
65
62
  jupiterClient: JupiterClient;
66
- driftClient: VelocityClient;
63
+ velocityClient: VelocityClient;
67
64
  price?: number;
68
65
  userAccountPublicKey?: PublicKey;
69
66
  forceMarinade?: boolean;
@@ -79,7 +76,7 @@ export async function findBestSuperStakeIxs({
79
76
  return findBestMSolSuperStakeIxs({
80
77
  amount,
81
78
  jupiterClient,
82
- driftClient,
79
+ velocityClient,
83
80
  userAccountPublicKey,
84
81
  price,
85
82
  forceMarinade,
@@ -90,7 +87,7 @@ export async function findBestSuperStakeIxs({
90
87
  return findBestJitoSolSuperStakeIxs({
91
88
  amount,
92
89
  jupiterClient,
93
- driftClient,
90
+ velocityClient,
94
91
  userAccountPublicKey,
95
92
  onlyDirectRoutes,
96
93
  jupiterQuote,
@@ -98,10 +95,10 @@ export async function findBestSuperStakeIxs({
98
95
  } else if (marketIndex === 8) {
99
96
  return findBestLstSuperStakeIxs({
100
97
  amount,
101
- lstMint: driftClient.getSpotMarketAccount(8).mint,
98
+ lstMint: velocityClient.getSpotMarketAccountOrThrow(8).mint,
102
99
  lstMarketIndex: 8,
103
100
  jupiterClient,
104
- driftClient,
101
+ velocityClient,
105
102
  userAccountPublicKey,
106
103
  onlyDirectRoutes,
107
104
  jupiterQuote,
@@ -114,7 +111,7 @@ export async function findBestSuperStakeIxs({
114
111
  export async function findBestMSolSuperStakeIxs({
115
112
  amount,
116
113
  jupiterClient,
117
- driftClient,
114
+ velocityClient,
118
115
  userAccountPublicKey,
119
116
  price,
120
117
  forceMarinade,
@@ -123,7 +120,7 @@ export async function findBestMSolSuperStakeIxs({
123
120
  }: {
124
121
  amount: BN;
125
122
  jupiterClient: JupiterClient;
126
- driftClient: VelocityClient;
123
+ velocityClient: VelocityClient;
127
124
  price?: number;
128
125
  userAccountPublicKey?: PublicKey;
129
126
  forceMarinade?: boolean;
@@ -136,14 +133,14 @@ export async function findBestMSolSuperStakeIxs({
136
133
  price: number;
137
134
  }> {
138
135
  if (!price) {
139
- const marinadeProgram = getMarinadeFinanceProgram(driftClient.provider);
136
+ const marinadeProgram = getMarinadeFinanceProgram(velocityClient.provider);
140
137
  price = await getMarinadeMSolPrice(marinadeProgram);
141
138
  }
142
139
 
143
- const solSpotMarketAccount = driftClient.getSpotMarketAccount(1);
144
- const mSolSpotMarketAccount = driftClient.getSpotMarketAccount(2);
140
+ const solSpotMarketAccount = velocityClient.getSpotMarketAccountOrThrow(1);
141
+ const mSolSpotMarketAccount = velocityClient.getSpotMarketAccountOrThrow(2);
145
142
 
146
- let jupiterPrice: number;
143
+ let jupiterPrice: number | undefined;
147
144
  let quote = jupiterQuote;
148
145
  if (!jupiterQuote) {
149
146
  try {
@@ -155,7 +152,7 @@ export async function findBestMSolSuperStakeIxs({
155
152
  onlyDirectRoutes,
156
153
  });
157
154
 
158
- jupiterPrice = +quote.outAmount / +quote.inAmount;
155
+ jupiterPrice = +fetchedQuote.outAmount / +fetchedQuote.inAmount;
159
156
 
160
157
  quote = fetchedQuote;
161
158
  } catch (e) {
@@ -164,7 +161,7 @@ export async function findBestMSolSuperStakeIxs({
164
161
  }
165
162
 
166
163
  if (!jupiterPrice || price <= jupiterPrice || forceMarinade) {
167
- const ixs = await driftClient.getStakeForMSOLIx({
164
+ const ixs = await velocityClient.getStakeForMSOLIx({
168
165
  amount,
169
166
  userAccountPublicKey,
170
167
  });
@@ -175,7 +172,7 @@ export async function findBestMSolSuperStakeIxs({
175
172
  price: price,
176
173
  };
177
174
  } else {
178
- const { ixs, lookupTables } = await driftClient.getJupiterSwapIxV6({
175
+ const { ixs, lookupTables } = await velocityClient.getJupiterSwapIxV6({
179
176
  inMarketIndex: 1,
180
177
  outMarketIndex: 2,
181
178
  jupiterClient,
@@ -196,14 +193,14 @@ export async function findBestMSolSuperStakeIxs({
196
193
  export async function findBestJitoSolSuperStakeIxs({
197
194
  amount,
198
195
  jupiterClient,
199
- driftClient,
196
+ velocityClient,
200
197
  userAccountPublicKey,
201
198
  onlyDirectRoutes,
202
199
  jupiterQuote,
203
200
  }: {
204
201
  amount: BN;
205
202
  jupiterClient: JupiterClient;
206
- driftClient: VelocityClient;
203
+ velocityClient: VelocityClient;
207
204
  userAccountPublicKey?: PublicKey;
208
205
  onlyDirectRoutes?: boolean;
209
206
  jupiterQuote?: QuoteResponse;
@@ -216,10 +213,10 @@ export async function findBestJitoSolSuperStakeIxs({
216
213
  return await findBestLstSuperStakeIxs({
217
214
  amount,
218
215
  jupiterClient,
219
- driftClient,
216
+ velocityClient,
220
217
  userAccountPublicKey,
221
218
  onlyDirectRoutes,
222
- lstMint: driftClient.getSpotMarketAccount(6).mint,
219
+ lstMint: velocityClient.getSpotMarketAccountOrThrow(6).mint,
223
220
  lstMarketIndex: 6,
224
221
  jupiterQuote,
225
222
  });
@@ -233,7 +230,7 @@ export async function findBestJitoSolSuperStakeIxs({
233
230
  export async function findBestLstSuperStakeIxs({
234
231
  amount,
235
232
  jupiterClient,
236
- driftClient,
233
+ velocityClient,
237
234
  userAccountPublicKey,
238
235
  onlyDirectRoutes,
239
236
  lstMarketIndex,
@@ -243,7 +240,7 @@ export async function findBestLstSuperStakeIxs({
243
240
  lstMint: PublicKey;
244
241
  lstMarketIndex: number;
245
242
  jupiterClient: JupiterClient;
246
- driftClient: VelocityClient;
243
+ velocityClient: VelocityClient;
247
244
  userAccountPublicKey?: PublicKey;
248
245
  onlyDirectRoutes?: boolean;
249
246
  jupiterQuote?: QuoteResponse;
@@ -252,7 +249,7 @@ export async function findBestLstSuperStakeIxs({
252
249
  lookupTables: AddressLookupTableAccount[];
253
250
  method: 'jupiter' | 'marinade';
254
251
  }> {
255
- const { ixs, lookupTables } = await driftClient.getJupiterSwapIxV6({
252
+ const { ixs, lookupTables } = await velocityClient.getJupiterSwapIxV6({
256
253
  inMarketIndex: 1,
257
254
  outMarketIndex: lstMarketIndex,
258
255
  jupiterClient,
@@ -329,63 +326,6 @@ export async function fetchJitoSolMetrics() {
329
326
  return data;
330
327
  }
331
328
 
332
- export type MSOL_METRICS_ENDPOINT_RESPONSE = {
333
- total_active_balance: number;
334
- available_reserve_balance: number;
335
- emergency_cooling_down: number;
336
- tvl_sol: number;
337
- msol_directed_stake_sol: number;
338
- msol_directed_stake_msol: number;
339
- mnde_total_supply: number;
340
- mnde_circulating_supply: number;
341
- validators_count: number;
342
- stake_accounts: number;
343
- staking_sol_cap: number;
344
- m_sol_price: number;
345
- avg_staking_apy: number;
346
- msol_price_apy_14d: number;
347
- msol_price_apy_30d: number;
348
- msol_price_apy_90d: number;
349
- msol_price_apy_365d: number;
350
- reserve_pda: number;
351
- treasury_m_sol_amount: number;
352
- m_sol_mint_supply: number;
353
- m_sol_supply_state: number;
354
- liq_pool_sol: number;
355
- liq_pool_m_sol: number;
356
- liq_pool_value: number;
357
- liq_pool_token_supply: number;
358
- liq_pool_token_price: number;
359
- liq_pool_target: number;
360
- liq_pool_min_fee: number;
361
- liq_pool_max_fee: number;
362
- liq_pool_current_fee: number;
363
- liq_pool_treasury_cut: number;
364
- liq_pool_cap: number;
365
- total_cooling_down: number;
366
- last_stake_delta_epoch: number;
367
- circulating_ticket_count: number;
368
- circulating_ticket_balance: number;
369
- reward_fee_bp: number;
370
- lido_staking: number;
371
- lido_st_sol_price: number;
372
- lido_stsol_price_apy_14d: number;
373
- lido_stsol_price_apy_30d: number;
374
- lido_stsol_price_apy_90d: number;
375
- lido_stsol_price_apy_365d: number;
376
- stake_delta: number;
377
- bot_balance: number;
378
- treasury_farm_claim_mnde_balance: number;
379
- last_3_epochs_avg_duration_hs: number;
380
- mnde_votes_validators: number;
381
- };
382
-
383
- export const fetchMSolMetrics = async () => {
384
- const res = await fetch('https://api2.marinade.finance/metrics_json');
385
- const data: MSOL_METRICS_ENDPOINT_RESPONSE = await res.json();
386
- return data;
387
- };
388
-
389
329
  const getJitoSolHistoricalPriceMap = async (timestamps: number[]) => {
390
330
  try {
391
331
  const data = await fetchJitoSolMetrics();
@@ -439,7 +379,7 @@ export async function calculateSolEarned({
439
379
 
440
380
  let lstRatios = new Map<number, number>();
441
381
 
442
- const getMsolPrice = async (timestamp) => {
382
+ const getMsolPrice = async (timestamp: number) => {
443
383
  const date = new Date(timestamp * 1000); // Convert Unix timestamp to milliseconds
444
384
  const swaggerApiDateTime = date.toISOString(); // Format date as swagger API date-time
445
385
  const url = `https://api.marinade.finance/msol/price_sol?time=${swaggerApiDateTime}`;
@@ -468,7 +408,10 @@ export async function calculateSolEarned({
468
408
  if (marketIndex === 2) {
469
409
  await Promise.all(timestamps.map(getMsolPrice));
470
410
  } else if (marketIndex === 6) {
471
- lstRatios = await getJitoSolHistoricalPriceMap(timestamps);
411
+ const jitoSolRatios = await getJitoSolHistoricalPriceMap(timestamps);
412
+ if (jitoSolRatios) {
413
+ lstRatios = jitoSolRatios;
414
+ }
472
415
  } else if (marketIndex === 8) {
473
416
  await getBSolPrice(timestamps);
474
417
  }
@@ -487,6 +430,11 @@ export async function calculateSolEarned({
487
430
  record.marketIndex === 8
488
431
  ) {
489
432
  const lstRatio = lstRatios.get(record.ts.toNumber());
433
+ if (lstRatio === undefined) {
434
+ throw new Error(
435
+ `Missing LST/SOL ratio for deposit record at timestamp ${record.ts.toNumber()}`
436
+ );
437
+ }
490
438
  const lstRatioBN = new BN(lstRatio * LAMPORTS_PER_SOL);
491
439
 
492
440
  const solAmount = record.amount.mul(lstRatioBN).div(LAMPORTS_PRECISION);
@@ -500,6 +448,9 @@ export async function calculateSolEarned({
500
448
 
501
449
  const currentLstTokenAmount = await user.getTokenAmount(marketIndex);
502
450
  const currentLstRatio = lstRatios.get(now);
451
+ if (currentLstRatio === undefined) {
452
+ throw new Error(`Missing current LST/SOL ratio for timestamp ${now}`);
453
+ }
503
454
  const currentLstRatioBN = new BN(currentLstRatio * LAMPORTS_PER_SOL);
504
455
 
505
456
  solEarned = solEarned.add(
package/src/math/trade.ts CHANGED
@@ -113,6 +113,7 @@ export function calculateTradeSlippage(
113
113
  const { baseAssetReserve, quoteAssetReserve, sqrtK, newPeg } =
114
114
  calculateUpdatedAMMSpreadReserves(
115
115
  market.amm,
116
+ market.marketStats,
116
117
  direction,
117
118
  mmOraclePriceData,
118
119
  latestSlot
@@ -184,6 +185,7 @@ export function calculateTradeAcquiredAmounts(
184
185
  const { baseAssetReserve, quoteAssetReserve, sqrtK, newPeg } =
185
186
  calculateUpdatedAMMSpreadReserves(
186
187
  market.amm,
188
+ market.marketStats,
187
189
  direction,
188
190
  mmOraclePriceData,
189
191
  latestSlot
@@ -274,6 +276,7 @@ export function calculateTargetPriceTrade(
274
276
  const { baseAssetReserve, quoteAssetReserve, newPeg } =
275
277
  calculateUpdatedAMMSpreadReserves(
276
278
  market.amm,
279
+ market.marketStats,
277
280
  direction,
278
281
  mmOraclePriceData,
279
282
  latestSlot
@@ -370,7 +373,7 @@ export function calculateTargetPriceTrade(
370
373
 
371
374
  assert(tp1.sub(tp2).lte(originalDiff), 'Target Price Calculation incorrect');
372
375
  assert(
373
- tp2.lte(tp1) || tp2.sub(tp1).abs() < 100000,
376
+ tp2.lte(tp1) || tp2.sub(tp1).abs().ltn(100000),
374
377
  'Target Price Calculation incorrect' +
375
378
  tp2.toString() +
376
379
  '>=' +
@@ -436,6 +439,7 @@ export function calculateEstimatedPerpEntryPrice(
436
439
  const { baseAssetReserve, quoteAssetReserve, sqrtK, newPeg } =
437
440
  calculateUpdatedAMMSpreadReserves(
438
441
  market.amm,
442
+ market.marketStats,
439
443
  direction,
440
444
  mmOraclePriceData,
441
445
  new BN(slot)
@@ -451,7 +455,7 @@ export function calculateEstimatedPerpEntryPrice(
451
455
  market.amm.baseAssetReserve,
452
456
  market.amm.minBaseAssetReserve,
453
457
  market.amm.maxBaseAssetReserve,
454
- market.amm.orderStepSize
458
+ market.orderStepSize
455
459
  );
456
460
 
457
461
  let ammLiquidity: BN;
@@ -485,7 +489,7 @@ export function calculateEstimatedPerpEntryPrice(
485
489
 
486
490
  let limitOrder = limitOrders.next().value;
487
491
  if (limitOrder) {
488
- const limitOrderPrice = limitOrder.getPrice(mmOraclePriceData, slot);
492
+ const limitOrderPrice = limitOrder.getPriceOrThrow(mmOraclePriceData, slot);
489
493
  bestPrice = takerIsLong
490
494
  ? BN.min(limitOrderPrice, bestPrice)
491
495
  : BN.max(limitOrderPrice, bestPrice);
package/src/math/utils.ts CHANGED
@@ -104,7 +104,7 @@ export function isBNSafe(number: number): boolean {
104
104
  /**
105
105
  * Converts a number to BN makes sure the number is safe to convert to BN (that it does not overflow number after multiplying by precision)
106
106
  * @param number the number to convert to BN
107
- * @param precision the BN precision to use (i.e. QUOTE_PRECISION and BASE_PRECISION from drift sdk)
107
+ * @param precision the BN precision to use (i.e. QUOTE_PRECISION and BASE_PRECISION from velocity sdk)
108
108
  */
109
109
  export function numberToSafeBN(number: number, precision: BN): BN {
110
110
  // check if number has decimals
package/src/memcmp.ts CHANGED
@@ -48,15 +48,6 @@ export function getUserWithAuctionFilter(): MemcmpFilter {
48
48
  };
49
49
  }
50
50
 
51
- export function getUserThatHasBeenLP(): MemcmpFilter {
52
- return {
53
- memcmp: {
54
- offset: 4267,
55
- bytes: bs58.encode(Uint8Array.from([99])),
56
- },
57
- };
58
- }
59
-
60
51
  export function getUserWithName(name: string): MemcmpFilter {
61
52
  return {
62
53
  memcmp: {
@@ -2,6 +2,7 @@ import { Connection, PublicKey } from '@solana/web3.js';
2
2
  import { OracleClient, OraclePriceData } from './types';
3
3
  import { VelocityProgram } from '../config';
4
4
  import { PrelaunchOracle } from '../types';
5
+ import { getOracleAccountDataOrThrow } from './utils';
5
6
 
6
7
  export class PrelaunchOracleClient implements OracleClient {
7
8
  private connection: Connection;
@@ -15,8 +16,12 @@ export class PrelaunchOracleClient implements OracleClient {
15
16
  public async getOraclePriceData(
16
17
  pricePublicKey: PublicKey
17
18
  ): Promise<OraclePriceData> {
18
- const accountInfo = await this.connection.getAccountInfo(pricePublicKey);
19
- return this.getOraclePriceDataFromBuffer(accountInfo.data);
19
+ const data = await getOracleAccountDataOrThrow(
20
+ this.connection,
21
+ pricePublicKey,
22
+ 'Prelaunch oracle'
23
+ );
24
+ return this.getOraclePriceDataFromBuffer(data);
20
25
  }
21
26
 
22
27
  public getOraclePriceDataFromBuffer(buffer: Buffer): OraclePriceData {
@@ -8,6 +8,7 @@ import {
8
8
  QUOTE_PRECISION,
9
9
  TEN,
10
10
  } from '../constants/numericConstants';
11
+ import { getOracleAccountDataOrThrow } from './utils';
11
12
 
12
13
  export class PythClient implements OracleClient {
13
14
  private connection: Connection;
@@ -27,14 +28,22 @@ export class PythClient implements OracleClient {
27
28
  public async getOraclePriceData(
28
29
  pricePublicKey: PublicKey
29
30
  ): Promise<OraclePriceData> {
30
- const accountInfo = await this.connection.getAccountInfo(pricePublicKey);
31
- return this.getOraclePriceDataFromBuffer(accountInfo.data);
31
+ const data = await getOracleAccountDataOrThrow(
32
+ this.connection,
33
+ pricePublicKey,
34
+ 'Pyth oracle'
35
+ );
36
+ return this.getOraclePriceDataFromBuffer(data);
32
37
  }
33
38
 
34
39
  public getOraclePriceDataFromBuffer(buffer: Buffer): OraclePriceData {
35
40
  const priceData = parsePriceData(buffer);
41
+ // `confidence` is absent on uninitialized/invalid price accounts. Base passed it
42
+ // straight into convertPythPrice, where `undefined * 10**exponent` is `NaN` and
43
+ // `new BN(NaN)` coerces to 0 — so base already yielded a zero-confidence price.
44
+ // `?? 0` makes that explicit and type-checks, preserving the same result.
36
45
  const confidence = convertPythPrice(
37
- priceData.confidence,
46
+ priceData.confidence ?? 0,
38
47
  priceData.exponent,
39
48
  this.multiple
40
49
  );
@@ -1,7 +1,7 @@
1
1
  import { Connection, Keypair, PublicKey } from '@solana/web3.js';
2
2
  import { OracleClient, OraclePriceData } from './types';
3
3
  import { AnchorProvider, BN, Program } from '../isomorphic/anchor';
4
- import { Drift } from '../idl/drift';
4
+ import { Velocity } from '../idl/velocity';
5
5
  import { VelocityProgram } from '../config';
6
6
  import {
7
7
  ONE,
@@ -10,7 +10,8 @@ import {
10
10
  TEN,
11
11
  } from '../constants/numericConstants';
12
12
  import { Wallet } from '../wallet';
13
- import driftIDL from '../idl/drift.json';
13
+ import velocityIDL from '../idl/velocity.json';
14
+ import { getOracleAccountDataOrThrow } from './utils';
14
15
 
15
16
  export class PythLazerClient implements OracleClient {
16
17
  private connection: Connection;
@@ -35,7 +36,7 @@ export class PythLazerClient implements OracleClient {
35
36
  commitment: connection.commitment,
36
37
  }
37
38
  );
38
- this.program = new Program<Drift>(driftIDL as Drift, provider);
39
+ this.program = new Program<Velocity>(velocityIDL as Velocity, provider);
39
40
  this.decodeFunc = (
40
41
  this.program.account as any
41
42
  ).pythLazerOracle.coder.accounts.decodeUnchecked.bind(
@@ -46,8 +47,12 @@ export class PythLazerClient implements OracleClient {
46
47
  public async getOraclePriceData(
47
48
  pricePublicKey: PublicKey
48
49
  ): Promise<OraclePriceData> {
49
- const accountInfo = await this.connection.getAccountInfo(pricePublicKey);
50
- return this.getOraclePriceDataFromBuffer(accountInfo.data);
50
+ const data = await getOracleAccountDataOrThrow(
51
+ this.connection,
52
+ pricePublicKey,
53
+ 'Pyth lazer oracle'
54
+ );
55
+ return this.getOraclePriceDataFromBuffer(data);
51
56
  }
52
57
 
53
58
  public getOraclePriceDataFromBuffer(buffer: Buffer): OraclePriceData {
@@ -1,6 +1,21 @@
1
+ import { Connection, PublicKey } from '@solana/web3.js';
1
2
  import { BN } from '../isomorphic/anchor';
2
3
  import { OraclePriceData } from './types';
3
4
 
5
+ export async function getOracleAccountDataOrThrow(
6
+ connection: Connection,
7
+ pricePublicKey: PublicKey,
8
+ oracleName: string
9
+ ): Promise<Buffer> {
10
+ const accountInfo = await connection.getAccountInfo(pricePublicKey);
11
+ if (!accountInfo) {
12
+ throw new Error(
13
+ `${oracleName} account not found: ${pricePublicKey.toBase58()}`
14
+ );
15
+ }
16
+ return accountInfo.data;
17
+ }
18
+
4
19
  export function getOracleConfidenceFromMMOracleData(
5
20
  mmOraclePrice: BN,
6
21
  oraclePriceData: OraclePriceData
@@ -21,30 +21,24 @@ import { ZERO } from '../constants/numericConstants';
21
21
 
22
22
  export class OrderSubscriber {
23
23
  velocityClient: VelocityClient;
24
- /** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
25
- public get driftClient(): VelocityClient {
26
- return this.velocityClient;
27
- }
28
24
  usersAccounts = new Map<string, { slot: number; userAccount: UserAccount }>();
29
25
  subscription: PollingSubscription | WebsocketSubscription | grpcSubscription;
30
26
  commitment: Commitment;
31
27
  eventEmitter: StrictEventEmitter<EventEmitter, OrderSubscriberEvents>;
32
28
 
33
29
  fetchPromise?: Promise<void>;
34
- fetchPromiseResolver: () => void;
30
+ private fetchPromiseResolver: () => void = () => {};
35
31
 
36
- mostRecentSlot: number;
32
+ mostRecentSlot = 0;
37
33
  decodeFn: (name: string, data: Buffer) => UserAccount;
38
34
  decodeData?: boolean;
39
35
 
40
36
  fetchAllNonIdleUsers?: boolean;
41
37
 
42
38
  constructor(config: OrderSubscriberConfig) {
43
- const velocityClient = config.velocityClient ?? config.driftClient;
39
+ const velocityClient = config.velocityClient;
44
40
  if (!velocityClient) {
45
- throw new Error(
46
- 'OrderSubscriber: velocityClient (or deprecated driftClient) must be provided'
47
- );
41
+ throw new Error('OrderSubscriber: velocityClient must be provided');
48
42
  }
49
43
  this.velocityClient = velocityClient;
50
44
  this.commitment = config.subscriptionConfig.commitment || 'processed';
@@ -282,7 +276,7 @@ export class OrderSubscriber {
282
276
  userAccountPublicKey,
283
277
  this.commitment
284
278
  );
285
- if (accountInfo) {
279
+ if (accountInfo.value) {
286
280
  this.tryUpdateUserAccount(
287
281
  userAccountPublicKey.toString(),
288
282
  'buffer',
@@ -296,7 +290,13 @@ export class OrderSubscriber {
296
290
  if (!this.usersAccounts.has(key)) {
297
291
  await this.addPubkey(new PublicKey(key));
298
292
  }
299
- return this.usersAccounts.get(key).userAccount;
293
+ const slotAndUserAccount = this.usersAccounts.get(key);
294
+ if (!slotAndUserAccount) {
295
+ throw new Error(
296
+ `OrderSubscriber: user account ${key} not found after addPubkey`
297
+ );
298
+ }
299
+ return slotAndUserAccount.userAccount;
300
300
  }
301
301
 
302
302
  public async unsubscribe(): Promise<void> {
@@ -48,7 +48,7 @@ export class WebsocketSubscription {
48
48
  this.subscriber = new WebSocketProgramAccountSubscriber<UserAccount>(
49
49
  'OrderSubscriber',
50
50
  'user',
51
- this.orderSubscriber.driftClient.program,
51
+ this.orderSubscriber.velocityClient.program,
52
52
  this.orderSubscriber.decodeFn,
53
53
  {
54
54
  filters: [getUserFilter(), getNonIdleUserFilter()],
@@ -56,7 +56,7 @@ export class grpcSubscription {
56
56
  this.grpcConfigs,
57
57
  'OrderSubscriber',
58
58
  'user',
59
- this.orderSubscriber.driftClient.program,
59
+ this.orderSubscriber.velocityClient.program,
60
60
  this.orderSubscriber.decodeFn,
61
61
  {
62
62
  filters: [getUserFilter(), getNonIdleUserFilter()],
@@ -68,7 +68,7 @@ export class grpcSubscription {
68
68
  this.grpcConfigs,
69
69
  'OrderSubscriber',
70
70
  'user',
71
- this.orderSubscriber.driftClient.program,
71
+ this.orderSubscriber.velocityClient.program,
72
72
  this.orderSubscriber.decodeFn,
73
73
  {
74
74
  filters: [getUserFilter(), getNonIdleUserFilter()],
@@ -5,8 +5,6 @@ import { GrpcConfigs } from '../accounts/types';
5
5
 
6
6
  export type OrderSubscriberConfig = {
7
7
  velocityClient?: VelocityClient;
8
- /** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
9
- driftClient?: VelocityClient;
10
8
  subscriptionConfig:
11
9
  | {
12
10
  type: 'polling';
@@ -28,7 +28,7 @@ export async function fetchHeliusPriorityFee(
28
28
  heliusRpcUrl: string,
29
29
  lookbackDistance: number,
30
30
  addresses: string[]
31
- ): Promise<HeliusPriorityFeeResponse> {
31
+ ): Promise<HeliusPriorityFeeResponse | undefined> {
32
32
  try {
33
33
  const response = await fetch(heliusRpcUrl, {
34
34
  method: 'POST',