@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
@@ -1,4 +1,48 @@
1
- import { RevenueShareOrder } from '../types';
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import {
3
+ OrderParams,
4
+ ReferrerStatus,
5
+ RevenueShareEscrowAccount,
6
+ RevenueShareOrder,
7
+ UserStatsAccount,
8
+ } from '../types';
9
+
10
+ /**
11
+ * True when the user's RevenueShareEscrow was initialized with a referrer.
12
+ * Fills for such users must include the escrow account or the program rejects
13
+ * them with UnableToLoadRevenueShareAccount.
14
+ */
15
+ export function isBuilderReferral(
16
+ userStats: Pick<UserStatsAccount, 'referrerStatus'>
17
+ ): boolean {
18
+ return (userStats.referrerStatus & ReferrerStatus.BuilderReferral) !== 0;
19
+ }
20
+
21
+ /**
22
+ * True when the escrow was initialized with a referrer. Referral rewards
23
+ * accrue into such escrows on fills, so fills of the escrow owner's orders
24
+ * must include the escrow account (see `isBuilderReferral`).
25
+ */
26
+ export function escrowHasReferrer(
27
+ escrow: Pick<RevenueShareEscrowAccount, 'referrer'>
28
+ ): boolean {
29
+ return !escrow.referrer.equals(PublicKey.default);
30
+ }
31
+
32
+ /**
33
+ * True when the order params carry a builder code (`builderIdx` +
34
+ * `builderFeeTenthBps`).
35
+ */
36
+ export function hasBuilderParams(
37
+ orderParams: Pick<OrderParams, 'builderIdx' | 'builderFeeTenthBps'>
38
+ ): boolean {
39
+ return (
40
+ orderParams.builderIdx !== null &&
41
+ orderParams.builderIdx !== undefined &&
42
+ orderParams.builderFeeTenthBps !== null &&
43
+ orderParams.builderFeeTenthBps !== undefined
44
+ );
45
+ }
2
46
 
3
47
  const FLAG_IS_OPEN = 0x01;
4
48
  export function isBuilderOrderOpen(order: RevenueShareOrder): boolean {
@@ -28,8 +28,8 @@ function calculateLiveMarkTwap(
28
28
  ): BN {
29
29
  now = now || new BN((Date.now() / 1000).toFixed(0));
30
30
 
31
- const lastMarkTwapWithMantissa = market.amm.lastMarkPriceTwap;
32
- const lastMarkPriceTwapTs = market.amm.lastMarkPriceTwapTs;
31
+ const lastMarkTwapWithMantissa = market.marketStats.lastMarkPriceTwap;
32
+ const lastMarkPriceTwapTs = market.marketStats.lastMarkPriceTwapTs;
33
33
 
34
34
  const timeSinceLastMarkChange = now.sub(lastMarkPriceTwapTs);
35
35
  const markTwapTimeSinceLastUpdate = BN.max(
@@ -38,7 +38,11 @@ function calculateLiveMarkTwap(
38
38
  );
39
39
 
40
40
  if (!markPrice) {
41
- const [bid, ask] = calculateBidAskPrice(market.amm, mmOraclePriceData);
41
+ const [bid, ask] = calculateBidAskPrice(
42
+ market.amm,
43
+ market.marketStats,
44
+ mmOraclePriceData
45
+ );
42
46
  markPrice = bid.add(ask).div(new BN(2));
43
47
  }
44
48
 
@@ -60,25 +64,28 @@ function shrinkStaleTwaps(
60
64
  let newMarkTwap = markTwapWithMantissa;
61
65
  let newOracleTwap = oracleTwapWithMantissa;
62
66
  if (
63
- market.amm.lastMarkPriceTwapTs.gt(
64
- market.amm.historicalOracleData.lastOraclePriceTwapTs
67
+ market.marketStats.lastMarkPriceTwapTs.gt(
68
+ market.marketStats.historicalOracleData.lastOraclePriceTwapTs
65
69
  )
66
70
  ) {
67
71
  // shrink oracle based on invalid intervals
68
72
  const oracleInvalidDuration = BN.max(
69
73
  ZERO,
70
- market.amm.lastMarkPriceTwapTs.sub(
71
- market.amm.historicalOracleData.lastOraclePriceTwapTs
74
+ market.marketStats.lastMarkPriceTwapTs.sub(
75
+ market.marketStats.historicalOracleData.lastOraclePriceTwapTs
72
76
  )
73
77
  );
74
78
  const timeSinceLastOracleTwapUpdate = now.sub(
75
- market.amm.historicalOracleData.lastOraclePriceTwapTs
79
+ market.marketStats.historicalOracleData.lastOraclePriceTwapTs
76
80
  );
77
81
  const oracleTwapTimeSinceLastUpdate = BN.max(
78
82
  ONE,
79
83
  BN.min(
80
- market.amm.fundingPeriod,
81
- BN.max(ONE, market.amm.fundingPeriod.sub(timeSinceLastOracleTwapUpdate))
84
+ market.marketStats.fundingPeriod,
85
+ BN.max(
86
+ ONE,
87
+ market.marketStats.fundingPeriod.sub(timeSinceLastOracleTwapUpdate)
88
+ )
82
89
  )
83
90
  );
84
91
  newOracleTwap = oracleTwapTimeSinceLastUpdate
@@ -86,23 +93,28 @@ function shrinkStaleTwaps(
86
93
  .add(oracleInvalidDuration.mul(markTwapWithMantissa))
87
94
  .div(oracleTwapTimeSinceLastUpdate.add(oracleInvalidDuration));
88
95
  } else if (
89
- market.amm.lastMarkPriceTwapTs.lt(
90
- market.amm.historicalOracleData.lastOraclePriceTwapTs
96
+ market.marketStats.lastMarkPriceTwapTs.lt(
97
+ market.marketStats.historicalOracleData.lastOraclePriceTwapTs
91
98
  )
92
99
  ) {
93
100
  // shrink mark to oracle twap over tradless intervals
94
101
  const tradelessDuration = BN.max(
95
102
  ZERO,
96
- market.amm.historicalOracleData.lastOraclePriceTwapTs.sub(
97
- market.amm.lastMarkPriceTwapTs
103
+ market.marketStats.historicalOracleData.lastOraclePriceTwapTs.sub(
104
+ market.marketStats.lastMarkPriceTwapTs
98
105
  )
99
106
  );
100
- const timeSinceLastMarkTwapUpdate = now.sub(market.amm.lastMarkPriceTwapTs);
107
+ const timeSinceLastMarkTwapUpdate = now.sub(
108
+ market.marketStats.lastMarkPriceTwapTs
109
+ );
101
110
  const markTwapTimeSinceLastUpdate = BN.max(
102
111
  ONE,
103
112
  BN.min(
104
- market.amm.fundingPeriod,
105
- BN.max(ONE, market.amm.fundingPeriod.sub(timeSinceLastMarkTwapUpdate))
113
+ market.marketStats.fundingPeriod,
114
+ BN.max(
115
+ ONE,
116
+ market.marketStats.fundingPeriod.sub(timeSinceLastMarkTwapUpdate)
117
+ )
106
118
  )
107
119
  );
108
120
  newMarkTwap = markTwapTimeSinceLastUpdate
@@ -141,13 +153,18 @@ export function calculateAllEstimatedFundingRate(
141
153
  mmOraclePriceData,
142
154
  markPrice,
143
155
  now,
144
- market.amm.fundingPeriod
156
+ market.marketStats.fundingPeriod
145
157
  );
158
+ if (!oraclePriceData) {
159
+ throw new Error(
160
+ 'calculateAllEstimatedFundingRate: oraclePriceData is required for an initialized market'
161
+ );
162
+ }
146
163
  const liveOracleTwap = calculateLiveOracleTwap(
147
- market.amm.historicalOracleData,
164
+ market.marketStats.historicalOracleData,
148
165
  oraclePriceData,
149
166
  now,
150
- market.amm.fundingPeriod
167
+ market.marketStats.fundingPeriod
151
168
  );
152
169
  const [markTwap, oracleTwap] = shrinkStaleTwaps(
153
170
  market,
@@ -187,10 +204,10 @@ export function calculateAllEstimatedFundingRate(
187
204
 
188
205
  const secondsInHour = new BN(3600);
189
206
  const hoursInDay = new BN(24);
190
- const timeSinceLastUpdate = now.sub(market.amm.lastFundingRateTs);
207
+ const timeSinceLastUpdate = now.sub(market.lastFundingRateTs);
191
208
 
192
209
  const lowerboundEst = twapSpreadPct
193
- .mul(market.amm.fundingPeriod)
210
+ .mul(market.marketStats.fundingPeriod)
194
211
  .mul(BN.min(secondsInHour, timeSinceLastUpdate))
195
212
  .div(secondsInHour)
196
213
  .div(secondsInHour)
@@ -210,19 +227,15 @@ export function calculateAllEstimatedFundingRate(
210
227
  let cappedAltEst: BN;
211
228
  let largerSide: BN;
212
229
  let smallerSide: BN;
213
- if (
214
- market.amm.baseAssetAmountLong.gt(market.amm.baseAssetAmountShort.abs())
215
- ) {
216
- largerSide = market.amm.baseAssetAmountLong.abs();
217
- smallerSide = market.amm.baseAssetAmountShort.abs();
230
+ if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort.abs())) {
231
+ largerSide = market.baseAssetAmountLong.abs();
232
+ smallerSide = market.baseAssetAmountShort.abs();
218
233
  if (twapSpread.gt(new BN(0))) {
219
234
  return [markTwap, oracleTwap, lowerboundEst, interpEst, interpEst];
220
235
  }
221
- } else if (
222
- market.amm.baseAssetAmountLong.lt(market.amm.baseAssetAmountShort.abs())
223
- ) {
224
- largerSide = market.amm.baseAssetAmountShort.abs();
225
- smallerSide = market.amm.baseAssetAmountLong.abs();
236
+ } else if (market.baseAssetAmountLong.lt(market.baseAssetAmountShort.abs())) {
237
+ largerSide = market.baseAssetAmountShort.abs();
238
+ smallerSide = market.baseAssetAmountLong.abs();
226
239
  if (twapSpread.lt(new BN(0))) {
227
240
  return [markTwap, oracleTwap, lowerboundEst, interpEst, interpEst];
228
241
  }
@@ -370,11 +383,9 @@ export function calculateLongShortFundingRate(
370
383
  now
371
384
  );
372
385
 
373
- if (market.amm.baseAssetAmountLong.gt(market.amm.baseAssetAmountShort)) {
386
+ if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort)) {
374
387
  return [cappedAltEst, interpEst];
375
- } else if (
376
- market.amm.baseAssetAmountLong.lt(market.amm.baseAssetAmountShort)
377
- ) {
388
+ } else if (market.baseAssetAmountLong.lt(market.baseAssetAmountShort)) {
378
389
  return [interpEst, cappedAltEst];
379
390
  } else {
380
391
  return [interpEst, interpEst];
@@ -404,13 +415,9 @@ export function calculateLongShortFundingRateAndLiveTwaps(
404
415
  now
405
416
  );
406
417
 
407
- if (
408
- market.amm.baseAssetAmountLong.gt(market.amm.baseAssetAmountShort.abs())
409
- ) {
418
+ if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort.abs())) {
410
419
  return [markTwapLive, oracleTwapLive, cappedAltEst, interpEst];
411
- } else if (
412
- market.amm.baseAssetAmountLong.lt(market.amm.baseAssetAmountShort.abs())
413
- ) {
420
+ } else if (market.baseAssetAmountLong.lt(market.baseAssetAmountShort.abs())) {
414
421
  return [markTwapLive, oracleTwapLive, interpEst, cappedAltEst];
415
422
  } else {
416
423
  return [markTwapLive, oracleTwapLive, interpEst, interpEst];
@@ -424,13 +431,10 @@ export function calculateLongShortFundingRateAndLiveTwaps(
424
431
  */
425
432
  export function calculateFundingPool(market: PerpMarketAccount): BN {
426
433
  // todo
427
- const totalFeeLB = market.amm.totalExchangeFee.div(new BN(2));
434
+ // no protocol floor post-isolation: 1/3 of the AMM's own equity
428
435
  const feePool = BN.max(
429
436
  ZERO,
430
- market.amm.totalFeeMinusDistributions
431
- .sub(totalFeeLB)
432
- .mul(new BN(1))
433
- .div(new BN(3))
437
+ market.amm.totalFeeMinusDistributions.mul(new BN(1)).div(new BN(3))
434
438
  );
435
439
  return feePool;
436
440
  }
@@ -6,7 +6,7 @@ import { SpotBalanceType, SpotMarketAccount } from '../types';
6
6
  export function nextRevenuePoolSettleApr(
7
7
  spotMarket: SpotMarketAccount,
8
8
  vaultBalance: BN, // vault token amount
9
- amount?: BN // delta token amount
9
+ amount: BN // delta token amount
10
10
  ): number {
11
11
  const MAX_APR = new BN(10).mul(PERCENTAGE_PRECISION); // 1000% APR
12
12
 
@@ -18,13 +18,11 @@ export function nextRevenuePoolSettleApr(
18
18
  );
19
19
 
20
20
  const payoutRatio = 0.1;
21
- const ratioForStakers =
22
- spotMarket.insuranceFund.totalFactor > 0 &&
23
- spotMarket.insuranceFund.userFactor > 0 &&
24
- spotMarket.insuranceFund.revenueSettlePeriod.gt(ZERO)
25
- ? spotMarket.insuranceFund.userFactor /
26
- spotMarket.insuranceFund.totalFactor
27
- : 0;
21
+ // the insurance fund is 100% staker-owned: every settled token accrues to
22
+ // stakers as share-price appreciation (no protocol split)
23
+ const ratioForStakers = spotMarket.insuranceFund.revenueSettlePeriod.gt(ZERO)
24
+ ? 1
25
+ : 0;
28
26
 
29
27
  // Settle periods from on-chain data:
30
28
  const revSettlePeriod =
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Margin calculation helpers — TypeScript mirror of `programs/drift/src/math/margin.rs`.
2
+ * Margin calculation helpers — TypeScript mirror of `programs/velocity/src/math/margin.rs`.
3
3
  * Computes initial/maintenance margin requirements, free collateral, and account health.
4
4
  * Used by {@link User} for leverage queries and by keeper bots for liquidation eligibility checks.
5
5
  */
@@ -8,7 +8,6 @@ import {
8
8
  SPOT_MARKET_WEIGHT_PRECISION,
9
9
  SPOT_MARKET_IMF_PRECISION,
10
10
  ZERO,
11
- BID_ASK_SPREAD_PRECISION,
12
11
  AMM_RESERVE_PRECISION,
13
12
  BASE_PRECISION,
14
13
  MARGIN_PRECISION,
@@ -20,15 +19,7 @@ import { OraclePriceData } from '../oracles/types';
20
19
  import { calculateMarketMarginRatio } from './market';
21
20
  import { calculateScaledInitialAssetWeight } from './spotBalance';
22
21
  import { VelocityClient } from '../velocityClient';
23
- import { OneShotUserAccountSubscriber } from '../accounts/oneShotUserAccountSubscriber';
24
- import {
25
- PerpMarketAccount,
26
- PerpPosition,
27
- PositionDirection,
28
- UserAccount,
29
- } from '../types';
30
- import { PublicKey } from '@solana/web3.js';
31
- import { User } from '../user';
22
+ import { PerpMarketAccount, PerpPosition } from '../types';
32
23
  import { isVariant } from '../types';
33
24
  import { assert } from '../assert/assert';
34
25
 
@@ -97,32 +88,6 @@ export function calculateSizeDiscountAssetWeight(
97
88
  return minAssetWeight;
98
89
  }
99
90
 
100
- export function calculateOraclePriceForPerpMargin(
101
- perpPosition: PerpPosition,
102
- market: PerpMarketAccount,
103
- oraclePriceData: OraclePriceData
104
- ): BN {
105
- const oraclePriceOffset = BN.min(
106
- new BN(market.amm.maxSpread)
107
- .mul(oraclePriceData.price)
108
- .div(BID_ASK_SPREAD_PRECISION),
109
- oraclePriceData.confidence.add(
110
- new BN(market.amm.baseSpread)
111
- .mul(oraclePriceData.price)
112
- .div(BID_ASK_SPREAD_PRECISION)
113
- )
114
- );
115
-
116
- let marginPrice: BN;
117
- if (perpPosition.baseAssetAmount.gt(ZERO)) {
118
- marginPrice = oraclePriceData.price.sub(oraclePriceOffset);
119
- } else {
120
- marginPrice = oraclePriceData.price.add(oraclePriceOffset);
121
- }
122
-
123
- return marginPrice;
124
- }
125
-
126
91
  /**
127
92
  * This is _not_ the same as liability value as for prediction markets, the liability for the short in prediction market is (1 - oracle price) * base
128
93
  * See {@link calculatePerpLiabilityValue} to get the liabiltiy value
@@ -220,17 +185,18 @@ export function calculatePerpLiabilityValue(
220
185
  * @returns
221
186
  */
222
187
  export function calculateMarginUSDCRequiredForTrade(
223
- driftClient: VelocityClient,
188
+ velocityClient: VelocityClient,
224
189
  targetMarketIndex: number,
225
190
  baseSize: BN,
226
191
  userMaxMarginRatio?: number,
227
192
  entryPrice?: BN
228
193
  ): BN {
229
- const targetMarket = driftClient.getPerpMarketAccount(targetMarketIndex);
194
+ const targetMarket =
195
+ velocityClient.getPerpMarketAccountOrThrow(targetMarketIndex);
230
196
 
231
197
  const price =
232
198
  entryPrice ??
233
- driftClient.getOracleDataForPerpMarket(targetMarket.marketIndex).price;
199
+ velocityClient.getOracleDataForPerpMarket(targetMarket.marketIndex).price;
234
200
 
235
201
  const perpLiabilityValue = calculatePerpLiabilityValue(baseSize, price);
236
202
 
@@ -254,7 +220,7 @@ export function calculateMarginUSDCRequiredForTrade(
254
220
  * Returns collateral required in the precision of the target collateral market.
255
221
  */
256
222
  export function calculateCollateralDepositRequiredForTrade(
257
- driftClient: VelocityClient,
223
+ velocityClient: VelocityClient,
258
224
  targetMarketIndex: number,
259
225
  baseSize: BN,
260
226
  collateralIndex: number,
@@ -262,17 +228,18 @@ export function calculateCollateralDepositRequiredForTrade(
262
228
  estEntryPrice?: BN
263
229
  ): BN {
264
230
  const marginRequiredUsdc = calculateMarginUSDCRequiredForTrade(
265
- driftClient,
231
+ velocityClient,
266
232
  targetMarketIndex,
267
233
  baseSize,
268
234
  userMaxMarginRatio,
269
235
  estEntryPrice
270
236
  );
271
237
 
272
- const collateralMarket = driftClient.getSpotMarketAccount(collateralIndex);
238
+ const collateralMarket =
239
+ velocityClient.getSpotMarketAccountOrThrow(collateralIndex);
273
240
 
274
241
  const collateralOracleData =
275
- driftClient.getOracleDataForSpotMarket(collateralIndex);
242
+ velocityClient.getOracleDataForSpotMarket(collateralIndex);
276
243
 
277
244
  const scaledAssetWeight = calculateScaledInitialAssetWeight(
278
245
  collateralMarket,
@@ -280,7 +247,7 @@ export function calculateCollateralDepositRequiredForTrade(
280
247
  );
281
248
 
282
249
  // Base amount required to deposit = (marginRequiredUsdc / priceOfAsset) / assetWeight .. (E.g. $100 required / $10000 price / 0.5 weight)
283
- const baseAmountRequired = driftClient
250
+ const baseAmountRequired = velocityClient
284
251
  .convertToSpotPrecision(collateralIndex, marginRequiredUsdc)
285
252
  .mul(PRICE_PRECISION) // adjust for division by oracle price
286
253
  .mul(SPOT_MARKET_WEIGHT_PRECISION) // adjust for division by scaled asset weight
@@ -292,77 +259,3 @@ export function calculateCollateralDepositRequiredForTrade(
292
259
 
293
260
  return baseAmountRequired;
294
261
  }
295
-
296
- export function calculateCollateralValueOfDeposit(
297
- driftClient: VelocityClient,
298
- collateralIndex: number,
299
- baseSize: BN
300
- ): BN {
301
- const collateralMarket = driftClient.getSpotMarketAccount(collateralIndex);
302
-
303
- const collateralOracleData =
304
- driftClient.getOracleDataForSpotMarket(collateralIndex);
305
-
306
- const scaledAssetWeight = calculateScaledInitialAssetWeight(
307
- collateralMarket,
308
- collateralOracleData.price
309
- );
310
-
311
- // CollateralBaseValue = oracle price * collateral base amount (and shift to QUOTE_PRECISION)
312
- const collateralBaseValue = collateralOracleData.price
313
- .mul(baseSize)
314
- .mul(QUOTE_PRECISION)
315
- .div(PRICE_PRECISION)
316
- .div(new BN(10).pow(new BN(collateralMarket.decimals)));
317
-
318
- const depositCollateralValue = collateralBaseValue
319
- .mul(scaledAssetWeight)
320
- .div(SPOT_MARKET_WEIGHT_PRECISION);
321
-
322
- return depositCollateralValue;
323
- }
324
-
325
- export function calculateLiquidationPrice(
326
- freeCollateral: BN,
327
- freeCollateralDelta: BN,
328
- oraclePrice: BN
329
- ): BN {
330
- const liqPriceDelta = freeCollateral
331
- .mul(QUOTE_PRECISION)
332
- .div(freeCollateralDelta);
333
-
334
- const liqPrice = oraclePrice.sub(liqPriceDelta);
335
-
336
- if (liqPrice.lt(ZERO)) {
337
- return new BN(-1);
338
- }
339
-
340
- return liqPrice;
341
- }
342
-
343
- export function calculateUserMaxPerpOrderSize(
344
- driftClient: VelocityClient,
345
- userAccountKey: PublicKey,
346
- userAccount: UserAccount,
347
- targetMarketIndex: number,
348
- tradeSide: PositionDirection
349
- ): { tradeSize: BN; oppositeSideTradeSize: BN } {
350
- const userAccountSubscriber = new OneShotUserAccountSubscriber(
351
- driftClient.program,
352
- userAccountKey,
353
- userAccount
354
- );
355
-
356
- const user = new User({
357
- driftClient,
358
- userAccountPublicKey: userAccountKey,
359
- accountSubscription: {
360
- type: 'custom',
361
- userAccountSubscriber: userAccountSubscriber,
362
- },
363
- });
364
-
365
- user.isSubscribed = true;
366
-
367
- return user.getMaxTradeSizeUSDCForPerp(targetMarketIndex, tradeSide);
368
- }
@@ -5,16 +5,12 @@ import {
5
5
  MarginCategory,
6
6
  SpotMarketAccount,
7
7
  SpotBalanceType,
8
- MarketType,
9
8
  isVariant,
10
9
  } from '../types';
11
10
  import {
12
- calculateAmmReservesAfterSwap,
13
11
  calculatePrice,
14
12
  calculateUpdatedAMMSpreadReserves,
15
- getSwapDirection,
16
13
  calculateUpdatedAMM,
17
- calculateMarketOpenBidAsk,
18
14
  } from './amm';
19
15
  import {
20
16
  calculateSizeDiscountAssetWeight,
@@ -32,7 +28,6 @@ import {
32
28
  FUNDING_RATE_PRECISION,
33
29
  } from '../constants/numericConstants';
34
30
  import { getTokenAmount } from './spotBalance';
35
- import { DLOB } from '../dlob/DLOB';
36
31
  import { assert } from '../assert/assert';
37
32
 
38
33
  /**
@@ -43,7 +38,7 @@ import { assert } from '../assert/assert';
43
38
  */
44
39
  export function calculateReservePrice(
45
40
  market: PerpMarketAccount,
46
- mmOraclePriceData: MMOraclePriceData
41
+ mmOraclePriceData?: MMOraclePriceData
47
42
  ): BN {
48
43
  const newAmm = calculateUpdatedAMM(market.amm, mmOraclePriceData);
49
44
  return calculatePrice(
@@ -61,12 +56,13 @@ export function calculateReservePrice(
61
56
  */
62
57
  export function calculateBidPrice(
63
58
  market: PerpMarketAccount,
64
- mmOraclePriceData: MMOraclePriceData,
59
+ mmOraclePriceData?: MMOraclePriceData,
65
60
  latestSlot?: BN
66
61
  ): BN {
67
62
  const { baseAssetReserve, quoteAssetReserve, newPeg } =
68
63
  calculateUpdatedAMMSpreadReserves(
69
64
  market.amm,
65
+ market.marketStats,
70
66
  PositionDirection.SHORT,
71
67
  mmOraclePriceData,
72
68
  latestSlot
@@ -83,12 +79,13 @@ export function calculateBidPrice(
83
79
  */
84
80
  export function calculateAskPrice(
85
81
  market: PerpMarketAccount,
86
- mmOraclePriceData: MMOraclePriceData,
82
+ mmOraclePriceData?: MMOraclePriceData,
87
83
  latestSlot?: BN
88
84
  ): BN {
89
85
  const { baseAssetReserve, quoteAssetReserve, newPeg } =
90
86
  calculateUpdatedAMMSpreadReserves(
91
87
  market.amm,
88
+ market.marketStats,
92
89
  PositionDirection.LONG,
93
90
  mmOraclePriceData,
94
91
  latestSlot
@@ -97,36 +94,6 @@ export function calculateAskPrice(
97
94
  return calculatePrice(baseAssetReserve, quoteAssetReserve, newPeg);
98
95
  }
99
96
 
100
- export function calculateNewMarketAfterTrade(
101
- baseAssetAmount: BN,
102
- direction: PositionDirection,
103
- market: PerpMarketAccount
104
- ): PerpMarketAccount {
105
- const [newQuoteAssetReserve, newBaseAssetReserve] =
106
- calculateAmmReservesAfterSwap(
107
- market.amm,
108
- 'base',
109
- baseAssetAmount.abs(),
110
- getSwapDirection('base', direction)
111
- );
112
-
113
- const newAmm = Object.assign({}, market.amm);
114
- const newMarket = Object.assign({}, market);
115
- newMarket.amm = newAmm;
116
- newMarket.amm.quoteAssetReserve = newQuoteAssetReserve;
117
- newMarket.amm.baseAssetReserve = newBaseAssetReserve;
118
-
119
- return newMarket;
120
- }
121
-
122
- export function calculateOracleReserveSpread(
123
- market: PerpMarketAccount,
124
- mmOraclePriceData: MMOraclePriceData
125
- ): BN {
126
- const reservePrice = calculateReservePrice(market, mmOraclePriceData);
127
- return calculateOracleSpread(reservePrice, mmOraclePriceData);
128
- }
129
-
130
97
  export function calculateOracleSpread(
131
98
  price: BN,
132
99
  oraclePriceData: OraclePriceData
@@ -251,8 +218,8 @@ export function calculateNetUserPnl(
251
218
  .div(BASE_PRECISION)
252
219
  .div(PRICE_TO_QUOTE_PRECISION);
253
220
 
254
- const netUserCostBasis = perpMarket.amm.quoteAssetAmount.add(
255
- perpMarket.amm.netUnsettledFundingPnl
221
+ const netUserCostBasis = perpMarket.quoteAssetAmount.add(
222
+ perpMarket.netUnsettledFundingPnl
256
223
  );
257
224
 
258
225
  const netUserPnl = netUserPositionValue.add(netUserCostBasis);
@@ -287,55 +254,6 @@ export function calculateNetUserPnlImbalance(
287
254
  return imbalance;
288
255
  }
289
256
 
290
- export function calculateAvailablePerpLiquidity(
291
- market: PerpMarketAccount,
292
- mmOraclePriceData: MMOraclePriceData,
293
- dlob: DLOB,
294
- slot: number
295
- ): { bids: BN; asks: BN } {
296
- let [bids, asks] = calculateMarketOpenBidAsk(
297
- market.amm.baseAssetReserve,
298
- market.amm.minBaseAssetReserve,
299
- market.amm.maxBaseAssetReserve,
300
- market.amm.orderStepSize
301
- );
302
-
303
- asks = asks.abs();
304
-
305
- for (const bid of dlob.getRestingLimitBids(
306
- market.marketIndex,
307
- slot,
308
- MarketType.PERP,
309
- mmOraclePriceData
310
- )) {
311
- bids = bids.add(
312
- bid.order.baseAssetAmount.sub(bid.order.baseAssetAmountFilled)
313
- );
314
- }
315
-
316
- for (const ask of dlob.getRestingLimitAsks(
317
- market.marketIndex,
318
- slot,
319
- MarketType.PERP,
320
- mmOraclePriceData
321
- )) {
322
- asks = asks.add(
323
- ask.order.baseAssetAmount.sub(ask.order.baseAssetAmountFilled)
324
- );
325
- }
326
-
327
- return {
328
- bids: bids,
329
- asks: asks,
330
- };
331
- }
332
-
333
- export function calculatePerpMarketBaseLiquidatorFee(
334
- market: PerpMarketAccount
335
- ): number {
336
- return market.liquidatorFee;
337
- }
338
-
339
257
  /**
340
258
  * Calculates trigger price for a perp market based on oracle price and current time
341
259
  * Implements the same logic as the Rust get_trigger_price function
@@ -358,9 +276,9 @@ export function getTriggerPrice(
358
276
  const lastFillPrice = market.lastFillPrice;
359
277
 
360
278
  // Calculate 5-minute basis
361
- const markPrice5minTwap = market.amm.lastMarkPriceTwap5Min;
279
+ const markPrice5minTwap = market.marketStats.lastMarkPriceTwap5Min;
362
280
  const lastOraclePriceTwap5min =
363
- market.amm.historicalOracleData.lastOraclePriceTwap5Min;
281
+ market.marketStats.historicalOracleData.lastOraclePriceTwap5Min;
364
282
  const basis5min = markPrice5minTwap.sub(lastOraclePriceTwap5min);
365
283
 
366
284
  const oraclePlusBasis5min = oraclePrice.add(basis5min);
@@ -388,23 +306,23 @@ function getLastFundingBasis(
388
306
  oraclePrice: BN,
389
307
  now: BN
390
308
  ): BN {
391
- if (market.amm.lastFundingOracleTwap.gt(ZERO)) {
392
- const lastFundingRate = market.amm.lastFundingRate
309
+ if (market.marketStats.lastFundingOracleTwap.gt(ZERO)) {
310
+ const lastFundingRate = market.lastFundingRate
393
311
  .mul(PRICE_PRECISION)
394
- .div(market.amm.lastFundingOracleTwap)
312
+ .div(market.marketStats.lastFundingOracleTwap)
395
313
  .muln(24);
396
314
  const lastFundingRatePreAdj = lastFundingRate.sub(
397
315
  FUNDING_RATE_PRECISION.div(new BN(3333)) // FUNDING_RATE_OFFSET_PERCENTAGE
398
316
  );
399
317
  const timeLeftUntilFundingUpdate = BN.min(
400
- BN.max(now.sub(market.amm.lastFundingRateTs), ZERO),
401
- market.amm.fundingPeriod
318
+ BN.max(now.sub(market.lastFundingRateTs), ZERO),
319
+ market.marketStats.fundingPeriod
402
320
  );
403
321
  const lastFundingBasis = oraclePrice
404
322
  .mul(lastFundingRatePreAdj)
405
323
  .div(PERCENTAGE_PRECISION)
406
- .mul(market.amm.fundingPeriod.sub(timeLeftUntilFundingUpdate))
407
- .div(market.amm.fundingPeriod)
324
+ .mul(market.marketStats.fundingPeriod.sub(timeLeftUntilFundingUpdate))
325
+ .div(market.marketStats.fundingPeriod)
408
326
  .div(new BN(1000)); // FUNDING_RATE_BUFFER
409
327
  return lastFundingBasis;
410
328
  } else {