@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
package/src/index.ts CHANGED
@@ -26,10 +26,7 @@ export { WebSocketAccountSubscriberV2 } from './accounts/webSocketAccountSubscri
26
26
  export { WebSocketProgramAccountSubscriber } from './accounts/webSocketProgramAccountSubscriber';
27
27
  export { WebSocketProgramUserAccountSubscriber } from './accounts/websocketProgramUserAccountSubscriber';
28
28
  export { WebSocketProgramAccountsSubscriberV2 } from './accounts/webSocketProgramAccountsSubscriberV2';
29
- export {
30
- WebSocketVelocityClientAccountSubscriberV2,
31
- WebSocketDriftClientAccountSubscriberV2,
32
- } from './accounts/webSocketVelocityClientAccountSubscriberV2';
29
+ export { WebSocketVelocityClientAccountSubscriberV2 } from './accounts/webSocketVelocityClientAccountSubscriberV2';
33
30
  export * from './accounts/bulkAccountLoader';
34
31
  export * from './accounts/bulkUserSubscription';
35
32
  export * from './accounts/bulkUserStatsSubscription';
@@ -110,13 +107,11 @@ export * from './tx/fastSingleTxSender';
110
107
  export * from './tx/retryTxSender';
111
108
  export * from './tx/whileValidTxSender';
112
109
  export * from './tx/priorityFeeCalculator';
113
- export * from './tx/forwardOnlyTxSender';
114
110
  export * from './tx/types';
115
111
  export * from './tx/txHandler';
116
112
  export * from './tx/txParamProcessor';
117
113
  export * from './util/computeUnits';
118
114
  export * from './util/digest';
119
- export * from './util/tps';
120
115
  export * from './util/promiseTimeout';
121
116
  export * from './math/spotBalance';
122
117
  export * from './velocityClientConfig';
@@ -6,7 +6,7 @@ import {
6
6
  TransactionMessage,
7
7
  VersionedTransaction,
8
8
  } from '@solana/web3.js';
9
- import fetch from 'node-fetch';
9
+ import fetch, { RequestInit } from 'node-fetch';
10
10
  import { BN } from '../isomorphic/anchor';
11
11
  import { SwapMode } from '../swap/UnifiedSwapClient';
12
12
 
@@ -302,6 +302,22 @@ export class JupiterClient {
302
302
  maxAutoSlippageBps?: number;
303
303
  usdEstimate?: number;
304
304
  }): Promise<QuoteResponse> {
305
+ if (autoSlippage && maxAutoSlippageBps === undefined) {
306
+ throw new Error(
307
+ 'JupiterClient.getQuote: maxAutoSlippageBps is required when autoSlippage is enabled'
308
+ );
309
+ }
310
+ if (autoSlippage && usdEstimate === undefined) {
311
+ throw new Error(
312
+ 'JupiterClient.getQuote: usdEstimate is required when autoSlippage is enabled'
313
+ );
314
+ }
315
+ const maxAutoSlippageBpsParam =
316
+ autoSlippage && maxAutoSlippageBps !== undefined
317
+ ? maxAutoSlippageBps.toString()
318
+ : '0';
319
+ const autoSlippageCollisionUsdValueParam =
320
+ autoSlippage && usdEstimate !== undefined ? usdEstimate.toString() : '0';
305
321
  const params = new URLSearchParams({
306
322
  inputMint: inputMint.toString(),
307
323
  outputMint: outputMint.toString(),
@@ -311,10 +327,8 @@ export class JupiterClient {
311
327
  onlyDirectRoutes: onlyDirectRoutes.toString(),
312
328
  maxAccounts: maxAccounts.toString(),
313
329
  autoSlippage: autoSlippage.toString(),
314
- maxAutoSlippageBps: autoSlippage ? maxAutoSlippageBps.toString() : '0',
315
- autoSlippageCollisionUsdValue: autoSlippage
316
- ? usdEstimate.toString()
317
- : '0',
330
+ maxAutoSlippageBps: maxAutoSlippageBpsParam,
331
+ autoSlippageCollisionUsdValue: autoSlippageCollisionUsdValueParam,
318
332
  ...(excludeDexes && { excludeDexes: excludeDexes.join(',') }),
319
333
  });
320
334
  if (swapMode === 'ExactOut') {
@@ -409,7 +423,9 @@ export class JupiterClient {
409
423
  return await this.getLookupTable(lookup.accountKey);
410
424
  })
411
425
  )
412
- ).filter((lookup) => lookup);
426
+ ).filter(
427
+ (lookup): lookup is AddressLookupTableAccount => lookup !== undefined
428
+ );
413
429
 
414
430
  const transactionMessage = TransactionMessage.decompile(message, {
415
431
  addressLookupTableAccounts: lookupTables,
@@ -422,12 +438,16 @@ export class JupiterClient {
422
438
 
423
439
  async getLookupTable(
424
440
  accountKey: PublicKey
425
- ): Promise<AddressLookupTableAccount> {
426
- if (this.lookupTableCahce.has(accountKey.toString())) {
427
- return this.lookupTableCahce.get(accountKey.toString());
441
+ ): Promise<AddressLookupTableAccount | undefined> {
442
+ const cached = this.lookupTableCahce.get(accountKey.toString());
443
+ if (cached !== undefined) {
444
+ return cached;
428
445
  }
429
446
 
430
- return (await this.connection.getAddressLookupTable(accountKey)).value;
447
+ return (
448
+ (await this.connection.getAddressLookupTable(accountKey)).value ??
449
+ undefined
450
+ );
431
451
  }
432
452
 
433
453
  /**
@@ -4,8 +4,8 @@ This document describes the single-source-of-truth margin engine in the SDK that
4
4
 
5
5
  ### Alignment with on-chain
6
6
 
7
- - The SDK snapshot shape mirrors `programs/drift/src/state/margin_calculation.rs` field-for-field.
8
- - The inputs and ordering mirror `calculate_margin_requirement_and_total_collateral_and_liability_info` in `programs/drift/src/math/margin.rs`.
7
+ - The SDK snapshot shape mirrors `programs/velocity/src/state/margin_calculation.rs` field-for-field.
8
+ - The inputs and ordering mirror `calculate_margin_requirement_and_total_collateral_and_liability_info` in `programs/velocity/src/math/margin.rs`.
9
9
  - Isolated positions are represented as `isolatedMarginCalculations` keyed by perp `marketIndex`, matching program logic.
10
10
 
11
11
  ### Core SDK types (shape parity)
@@ -48,6 +48,7 @@ export class MarginContext {
48
48
  this.strict = false;
49
49
  this.ignoreInvalidDepositOracles = false;
50
50
  this.isolatedMarginBuffers = new Map();
51
+ this.crossMarginBuffer = ZERO;
51
52
  }
52
53
 
53
54
  static standard(marginType: MarginCategory): MarginContext {
package/src/math/amm.ts CHANGED
@@ -8,15 +8,16 @@ import {
8
8
  ONE,
9
9
  AMM_TO_QUOTE_PRECISION_RATIO,
10
10
  QUOTE_PRECISION,
11
- MARGIN_PRECISION,
12
11
  PRICE_DIV_PEG,
13
12
  PERCENTAGE_PRECISION,
14
13
  DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT,
15
14
  FUNDING_RATE_BUFFER_PRECISION,
15
+ FUNDING_RATE_OFFSET_PERCENTAGE,
16
16
  TWO,
17
17
  } from '../constants/numericConstants';
18
18
  import {
19
19
  AMM,
20
+ MarketStats,
20
21
  PositionDirection,
21
22
  SwapDirection,
22
23
  PerpMarketAccount,
@@ -67,8 +68,9 @@ export function calculateOptimalPegAndBudget(
67
68
  );
68
69
  const prePegCost = calculateRepegCost(amm, newPeg);
69
70
 
70
- const totalFeeLB = amm.totalExchangeFee.div(new BN(2));
71
- const budget = BN.max(ZERO, amm.totalFeeMinusDistributions.sub(totalFeeLB));
71
+ // no protocol floor post-isolation: tfmd contains only the AMM's own
72
+ // equity and is fully spendable on the repeg
73
+ const budget = BN.max(ZERO, amm.totalFeeMinusDistributions);
72
74
 
73
75
  let checkLowerBound = true;
74
76
  if (budget.lt(prePegCost)) {
@@ -101,9 +103,9 @@ export function calculateOptimalPegAndBudget(
101
103
  checkLowerBound = false;
102
104
 
103
105
  return [newTargetPrice, newOptimalPeg, newBudget, false];
104
- } else if (
105
- amm.totalFeeMinusDistributions.lt(amm.totalExchangeFee.div(new BN(2)))
106
- ) {
106
+ } else if (budget.eq(ZERO)) {
107
+ // mirrors the program: budget = max(0, tfmd), so a zero budget
108
+ // means the AMM has no equity to spend (no floor post-isolation)
107
109
  checkLowerBound = false;
108
110
  }
109
111
  }
@@ -155,7 +157,7 @@ export function calculateNewAmm(
155
157
 
156
158
  export function calculateUpdatedAMM(
157
159
  amm: AMM,
158
- mmOraclePriceData: MMOraclePriceData
160
+ mmOraclePriceData?: MMOraclePriceData
159
161
  ): AMM {
160
162
  if (amm.curveUpdateIntensity == 0 || mmOraclePriceData === undefined) {
161
163
  return amm;
@@ -195,13 +197,15 @@ export function calculateUpdatedAMM(
195
197
 
196
198
  export function calculateUpdatedAMMSpreadReserves(
197
199
  amm: AMM,
200
+ marketStats: MarketStats,
198
201
  direction: PositionDirection,
199
- mmOraclePriceData: MMOraclePriceData,
202
+ mmOraclePriceData?: MMOraclePriceData,
200
203
  latestSlot?: BN
201
204
  ): { baseAssetReserve: BN; quoteAssetReserve: BN; sqrtK: BN; newPeg: BN } {
202
205
  const newAmm = calculateUpdatedAMM(amm, mmOraclePriceData);
203
206
  const [shortReserves, longReserves] = calculateSpreadReserves(
204
207
  newAmm,
208
+ marketStats,
205
209
  mmOraclePriceData,
206
210
  undefined,
207
211
  latestSlot
@@ -223,7 +227,8 @@ export function calculateUpdatedAMMSpreadReserves(
223
227
 
224
228
  export function calculateBidAskPrice(
225
229
  amm: AMM,
226
- mmOraclePriceData: MMOraclePriceData,
230
+ marketStats: MarketStats,
231
+ mmOraclePriceData?: MMOraclePriceData,
227
232
  withUpdate = true,
228
233
  latestSlot?: BN
229
234
  ): [BN, BN] {
@@ -236,6 +241,7 @@ export function calculateBidAskPrice(
236
241
 
237
242
  const [bidReserves, askReserves] = calculateSpreadReserves(
238
243
  newAmm,
244
+ marketStats,
239
245
  mmOraclePriceData,
240
246
  undefined,
241
247
  latestSlot
@@ -546,14 +552,6 @@ export function calculateEffectiveLeverage(
546
552
  return effectiveLeverage;
547
553
  }
548
554
 
549
- export function calculateMaxSpread(marginRatioInitial: number): number {
550
- const maxTargetSpread: number = new BN(marginRatioInitial)
551
- .mul(BID_ASK_SPREAD_PRECISION.div(MARGIN_PRECISION))
552
- .toNumber();
553
-
554
- return maxTargetSpread;
555
- }
556
-
557
555
  export function calculateVolSpreadBN(
558
556
  lastOracleConfPct: BN,
559
557
  reservePrice: BN,
@@ -603,6 +601,81 @@ export function calculateVolSpreadBN(
603
601
  return [longVolSpread, shortVolSpread];
604
602
  }
605
603
 
604
+ /**
605
+ * Funding bias β(f) (BID_ASK_SPREAD_PRECISION): bounded multiplier for the
606
+ * paying-side spread while the vAMM is paying funding. Mirrors the program's
607
+ * `calculate_spread_funding_bias_scale`.
608
+ *
609
+ * ρ(f) = clamp(|f| / f_ref, 0, 1), f_ref = FUNDING_RATE_OFFSET_PERCENTAGE
610
+ * β(f) = 1 + s * ρ(f), s = fundingBiasSensitivity / 100
611
+ *
612
+ * f = 24h avg funding rate normalized to a daily fraction of the oracle twap
613
+ * captured at the last funding update. The vAMM pays when f * q < 0
614
+ * (q = baseAssetAmountWithAmm). Returns 1x when the vAMM receives funding or
615
+ * s = 0.
616
+ */
617
+ export function calculateSpreadFundingBiasScale(
618
+ baseAssetAmountWithAmm: BN,
619
+ last24HAvgFundingRate: BN,
620
+ lastFundingOracleTwap: BN,
621
+ fundingBiasSensitivity: number
622
+ ): number {
623
+ const one = BID_ASK_SPREAD_PRECISION.toNumber();
624
+ if (fundingBiasSensitivity === 0 || lastFundingOracleTwap.lte(ZERO)) {
625
+ return one;
626
+ }
627
+
628
+ // f: daily funding rate as a fraction of price, FUNDING_RATE_PRECISION
629
+ const fNorm = last24HAvgFundingRate
630
+ .mul(PRICE_PRECISION)
631
+ .div(lastFundingOracleTwap)
632
+ .muln(24);
633
+
634
+ // f * q >= 0: vAMM receives (or rate/inventory is zero), β = 1
635
+ if (fNorm.isZero() || baseAssetAmountWithAmm.isZero()) {
636
+ return one;
637
+ }
638
+ if (fNorm.isNeg() === baseAssetAmountWithAmm.isNeg()) {
639
+ return one;
640
+ }
641
+
642
+ // ρ = clamp(|f| / f_ref, 0, 1), PERCENTAGE_PRECISION
643
+ const ramp = BN.min(
644
+ fNorm.abs().mul(PERCENTAGE_PRECISION).div(FUNDING_RATE_OFFSET_PERCENTAGE),
645
+ PERCENTAGE_PRECISION
646
+ ).toNumber();
647
+
648
+ // β = 1 + s * ρ
649
+ return one + Math.floor((fundingBiasSensitivity * ramp) / 100);
650
+ }
651
+
652
+ export interface SpreadTerms {
653
+ longVolSpread: number;
654
+ shortVolSpread: number;
655
+ longSpreadwPS: number;
656
+ shortSpreadwPS: number;
657
+ maxTargetSpread: number;
658
+ inventorySpreadScale: number;
659
+ longSpreadwInvScale: number;
660
+ shortSpreadwInvScale: number;
661
+ effectiveLeverage: number;
662
+ effectiveLeverageCapped: number;
663
+ longSpreadwEL: number;
664
+ shortSpreadwEL: number;
665
+ revenueRetreatAmount: number;
666
+ halfRevenueRetreatAmount: number;
667
+ longSpreadwRevRetreat: number;
668
+ shortSpreadwRevRetreat: number;
669
+ fundingBiasScale: number;
670
+ longSpreadwFundingBias: number;
671
+ shortSpreadwFundingBias: number;
672
+ longSpreadwOffsetShrink: number;
673
+ shortSpreadwOffsetShrink: number;
674
+ totalSpread: number;
675
+ longSpread: number;
676
+ shortSpread: number;
677
+ }
678
+
606
679
  export function calculateSpreadBN(
607
680
  baseSpread: number,
608
681
  lastOracleReservePriceSpreadPct: BN,
@@ -624,8 +697,63 @@ export function calculateSpreadBN(
624
697
  shortIntensity: BN,
625
698
  volume24H: BN,
626
699
  ammInventorySpreadAdjustment: number,
700
+ last24HAvgFundingRate?: BN,
701
+ lastFundingOracleTwap?: BN,
702
+ fundingBiasSensitivity?: number,
703
+ returnTerms?: false
704
+ ): [number, number];
705
+ export function calculateSpreadBN(
706
+ baseSpread: number,
707
+ lastOracleReservePriceSpreadPct: BN,
708
+ lastOracleConfPct: BN,
709
+ maxSpread: number,
710
+ quoteAssetReserve: BN,
711
+ terminalQuoteAssetReserve: BN,
712
+ pegMultiplier: BN,
713
+ baseAssetAmountWithAmm: BN,
714
+ reservePrice: BN,
715
+ totalFeeMinusDistributions: BN,
716
+ netRevenueSinceLastFunding: BN,
717
+ baseAssetReserve: BN,
718
+ minBaseAssetReserve: BN,
719
+ maxBaseAssetReserve: BN,
720
+ markStd: BN,
721
+ oracleStd: BN,
722
+ longIntensity: BN,
723
+ shortIntensity: BN,
724
+ volume24H: BN,
725
+ ammInventorySpreadAdjustment: number,
726
+ last24HAvgFundingRate: BN,
727
+ lastFundingOracleTwap: BN,
728
+ fundingBiasSensitivity: number,
729
+ returnTerms: true
730
+ ): SpreadTerms;
731
+ export function calculateSpreadBN(
732
+ baseSpread: number,
733
+ lastOracleReservePriceSpreadPct: BN,
734
+ lastOracleConfPct: BN,
735
+ maxSpread: number,
736
+ quoteAssetReserve: BN,
737
+ terminalQuoteAssetReserve: BN,
738
+ pegMultiplier: BN,
739
+ baseAssetAmountWithAmm: BN,
740
+ reservePrice: BN,
741
+ totalFeeMinusDistributions: BN,
742
+ netRevenueSinceLastFunding: BN,
743
+ baseAssetReserve: BN,
744
+ minBaseAssetReserve: BN,
745
+ maxBaseAssetReserve: BN,
746
+ markStd: BN,
747
+ oracleStd: BN,
748
+ longIntensity: BN,
749
+ shortIntensity: BN,
750
+ volume24H: BN,
751
+ ammInventorySpreadAdjustment: number,
752
+ last24HAvgFundingRate: BN = ZERO,
753
+ lastFundingOracleTwap: BN = ZERO,
754
+ fundingBiasSensitivity = 0,
627
755
  returnTerms = false
628
- ) {
756
+ ): [number, number] | SpreadTerms {
629
757
  assert(Number.isInteger(baseSpread));
630
758
  assert(Number.isInteger(maxSpread));
631
759
 
@@ -646,6 +774,9 @@ export function calculateSpreadBN(
646
774
  halfRevenueRetreatAmount: 0,
647
775
  longSpreadwRevRetreat: 0,
648
776
  shortSpreadwRevRetreat: 0,
777
+ fundingBiasScale: 0,
778
+ longSpreadwFundingBias: 0,
779
+ shortSpreadwFundingBias: 0,
649
780
  longSpreadwOffsetShrink: 0,
650
781
  shortSpreadwOffsetShrink: 0,
651
782
  totalSpread: 0,
@@ -792,6 +923,32 @@ export function calculateSpreadBN(
792
923
  spreadTerms.longSpreadwRevRetreat = longSpread;
793
924
  spreadTerms.shortSpreadwRevRetreat = shortSpread;
794
925
 
926
+ // funding bias: w_pay = min(w_max, (w_0 * σ(q) * λ(q) + r(q)) * β(f)).
927
+ // β multiplies the fully built paying side only, selected by sign(q)
928
+ // (the same side σ widens); the max-spread cap below still bounds it.
929
+ // β = 1 when the vAMM receives.
930
+ const fundingBiasScale = calculateSpreadFundingBiasScale(
931
+ baseAssetAmountWithAmm,
932
+ last24HAvgFundingRate,
933
+ lastFundingOracleTwap,
934
+ fundingBiasSensitivity
935
+ );
936
+ const spreadPrecision = BID_ASK_SPREAD_PRECISION.toNumber();
937
+ if (fundingBiasScale > spreadPrecision) {
938
+ if (baseAssetAmountWithAmm.gt(ZERO)) {
939
+ longSpread = Math.floor(
940
+ (longSpread * fundingBiasScale) / spreadPrecision
941
+ );
942
+ } else if (baseAssetAmountWithAmm.lt(ZERO)) {
943
+ shortSpread = Math.floor(
944
+ (shortSpread * fundingBiasScale) / spreadPrecision
945
+ );
946
+ }
947
+ }
948
+ spreadTerms.fundingBiasScale = fundingBiasScale;
949
+ spreadTerms.longSpreadwFundingBias = longSpread;
950
+ spreadTerms.shortSpreadwFundingBias = shortSpread;
951
+
795
952
  if (ammInventorySpreadAdjustment < 0) {
796
953
  const adjustment = Math.abs(ammInventorySpreadAdjustment);
797
954
 
@@ -844,7 +1001,8 @@ export function calculateSpreadBN(
844
1001
 
845
1002
  export function calculateSpread(
846
1003
  amm: AMM,
847
- oraclePriceData: OraclePriceData,
1004
+ marketStats: MarketStats,
1005
+ oraclePriceData?: OraclePriceData,
848
1006
  now?: BN,
849
1007
  reservePrice?: BN
850
1008
  ): [number, number] {
@@ -852,6 +1010,12 @@ export function calculateSpread(
852
1010
  return [amm.baseSpread / 2, amm.baseSpread / 2];
853
1011
  }
854
1012
 
1013
+ if (!oraclePriceData) {
1014
+ throw new Error(
1015
+ 'calculateSpread: oraclePriceData is required when baseSpread and curveUpdateIntensity are nonzero'
1016
+ );
1017
+ }
1018
+
855
1019
  if (!reservePrice) {
856
1020
  reservePrice = calculatePrice(
857
1021
  amm.baseAssetReserve,
@@ -867,9 +1031,13 @@ export function calculateSpread(
867
1031
  .div(reservePrice);
868
1032
 
869
1033
  now = now || new BN(new Date().getTime() / 1000); //todo
870
- const liveOracleStd = calculateLiveOracleStd(amm, oraclePriceData, now);
1034
+ const liveOracleStd = calculateLiveOracleStd(
1035
+ marketStats,
1036
+ oraclePriceData,
1037
+ now
1038
+ );
871
1039
  const confIntervalPct = getNewOracleConfPct(
872
- amm,
1040
+ marketStats,
873
1041
  oraclePriceData,
874
1042
  reservePrice,
875
1043
  now
@@ -890,12 +1058,15 @@ export function calculateSpread(
890
1058
  amm.baseAssetReserve,
891
1059
  amm.minBaseAssetReserve,
892
1060
  amm.maxBaseAssetReserve,
893
- amm.markStd,
1061
+ marketStats.markStd,
894
1062
  liveOracleStd,
895
- amm.longIntensityVolume,
896
- amm.shortIntensityVolume,
897
- amm.volume24H,
898
- amm.ammInventorySpreadAdjustment
1063
+ marketStats.longIntensityVolume,
1064
+ marketStats.shortIntensityVolume,
1065
+ marketStats.volume24H,
1066
+ amm.ammInventorySpreadAdjustment,
1067
+ marketStats.last24HAvgFundingRate,
1068
+ marketStats.lastFundingOracleTwap,
1069
+ amm.fundingBiasSensitivity
899
1070
  );
900
1071
  let longSpread = spreads[0];
901
1072
  let shortSpread = spreads[1];
@@ -925,7 +1096,8 @@ export function calculateSpread(
925
1096
 
926
1097
  export function calculateSpreadReserves(
927
1098
  amm: AMM,
928
- mmOraclePriceData: MMOraclePriceData,
1099
+ marketStats: MarketStats,
1100
+ mmOraclePriceData?: MMOraclePriceData,
929
1101
  now?: BN,
930
1102
  latestSlot?: BN
931
1103
  ) {
@@ -934,8 +1106,8 @@ export function calculateSpreadReserves(
934
1106
  direction: PositionDirection,
935
1107
  amm: AMM
936
1108
  ): {
937
- baseAssetReserve;
938
- quoteAssetReserve;
1109
+ baseAssetReserve: BN;
1110
+ quoteAssetReserve: BN;
939
1111
  } {
940
1112
  if (spread === 0) {
941
1113
  return {
@@ -1022,25 +1194,27 @@ export function calculateSpreadReserves(
1022
1194
 
1023
1195
  referencePriceOffset = calculateReferencePriceOffset(
1024
1196
  reservePrice,
1025
- amm.last24HAvgFundingRate,
1197
+ marketStats.last24HAvgFundingRate,
1026
1198
  liquidityFractionAfterDeadband,
1027
- amm.historicalOracleData.lastOraclePriceTwap5Min,
1028
- amm.lastMarkPriceTwap5Min,
1029
- amm.historicalOracleData.lastOraclePriceTwap,
1030
- amm.lastMarkPriceTwap,
1199
+ marketStats.historicalOracleData.lastOraclePriceTwap5Min,
1200
+ marketStats.lastMarkPriceTwap5Min,
1201
+ marketStats.historicalOracleData.lastOraclePriceTwap,
1202
+ marketStats.lastMarkPriceTwap,
1031
1203
  maxOffset
1032
1204
  ).toNumber();
1033
1205
  }
1034
1206
 
1035
1207
  let [longSpread, shortSpread] = calculateSpread(
1036
1208
  amm,
1209
+ marketStats,
1037
1210
  mmOraclePriceData,
1038
1211
  now,
1039
1212
  reservePrice
1040
1213
  );
1041
1214
 
1215
+ const lastReferencePriceOffset = marketStats.lastReferencePriceOffset;
1042
1216
  const doReferencePricOffsetSmooth =
1043
- Math.sign(referencePriceOffset) !== Math.sign(amm.referencePriceOffset) &&
1217
+ Math.sign(referencePriceOffset) !== Math.sign(lastReferencePriceOffset) &&
1044
1218
  amm.curveUpdateIntensity > 100;
1045
1219
 
1046
1220
  if (doReferencePricOffsetSmooth) {
@@ -1048,17 +1222,17 @@ export function calculateSpreadReserves(
1048
1222
  latestSlot != null
1049
1223
  ? BN.max(latestSlot.sub(amm.lastUpdateSlot), ZERO).toNumber()
1050
1224
  : 0;
1051
- const fullOffsetDelta = referencePriceOffset - amm.referencePriceOffset;
1225
+ const fullOffsetDelta = referencePriceOffset - lastReferencePriceOffset;
1052
1226
  const raw = Math.trunc(
1053
1227
  Math.min(Math.abs(fullOffsetDelta), slotsPassed * 1000) / 10
1054
1228
  );
1055
1229
  const maxAllowed =
1056
- Math.abs(amm.referencePriceOffset) || Math.abs(referencePriceOffset);
1230
+ Math.abs(lastReferencePriceOffset) || Math.abs(referencePriceOffset);
1057
1231
 
1058
1232
  const magnitude = Math.min(Math.max(raw, 10), maxAllowed);
1059
1233
  const referencePriceDelta = Math.sign(fullOffsetDelta) * magnitude;
1060
1234
 
1061
- referencePriceOffset = amm.referencePriceOffset + referencePriceDelta;
1235
+ referencePriceOffset = lastReferencePriceOffset + referencePriceDelta;
1062
1236
 
1063
1237
  if (referencePriceDelta < 0) {
1064
1238
  longSpread += Math.abs(referencePriceDelta);
@@ -1159,9 +1333,10 @@ export function calculateTerminalPrice(market: PerpMarketAccount) {
1159
1333
 
1160
1334
  export function calculateMaxBaseAssetAmountToTrade(
1161
1335
  amm: AMM,
1336
+ marketStats: MarketStats,
1162
1337
  limit_price: BN,
1163
1338
  direction: PositionDirection,
1164
- mmOraclePriceData?: MMOraclePriceData,
1339
+ mmOraclePriceData: MMOraclePriceData,
1165
1340
  now?: BN
1166
1341
  ): [BN, PositionDirection] {
1167
1342
  const invariant = amm.sqrtK.mul(amm.sqrtK);
@@ -1175,6 +1350,7 @@ export function calculateMaxBaseAssetAmountToTrade(
1175
1350
  const newBaseAssetReserve = squareRootBN(newBaseAssetReserveSquared);
1176
1351
  const [shortSpreadReserves, longSpreadReserves] = calculateSpreadReserves(
1177
1352
  amm,
1353
+ marketStats,
1178
1354
  mmOraclePriceData,
1179
1355
  now
1180
1356
  );
@@ -1221,6 +1397,7 @@ export function calculateQuoteAssetAmountSwapped(
1221
1397
 
1222
1398
  export function calculateMaxBaseAssetAmountFillable(
1223
1399
  amm: AMM,
1400
+ orderStepSize: BN,
1224
1401
  orderDirection: PositionDirection
1225
1402
  ): BN {
1226
1403
  const maxFillSize = amm.baseAssetReserve.div(
@@ -1241,6 +1418,6 @@ export function calculateMaxBaseAssetAmountFillable(
1241
1418
 
1242
1419
  return standardizeBaseAssetAmount(
1243
1420
  BN.min(maxFillSize, maxBaseAssetAmountOnSide),
1244
- amm.orderStepSize
1421
+ orderStepSize
1245
1422
  );
1246
1423
  }
@@ -254,11 +254,11 @@ export function getTriggerAuctionStartPrice(params: {
254
254
  const { perpMarket, direction, oraclePrice, limitPrice } = params;
255
255
 
256
256
  const twapMismatch =
257
- perpMarket.amm.historicalOracleData.lastOraclePriceTwapTs
258
- .sub(perpMarket.amm.lastMarkPriceTwapTs)
257
+ perpMarket.marketStats.historicalOracleData.lastOraclePriceTwapTs
258
+ .sub(perpMarket.marketStats.lastMarkPriceTwapTs)
259
259
  .abs()
260
260
  .gte(new BN(60)) ||
261
- perpMarket.amm.volume24H.lte(new BN(100_000).mul(QUOTE_PRECISION));
261
+ perpMarket.marketStats.volume24H.lte(new BN(100_000).mul(QUOTE_PRECISION));
262
262
 
263
263
  let baselineStartOffset: BN;
264
264
 
@@ -266,27 +266,31 @@ export function getTriggerAuctionStartPrice(params: {
266
266
  const contractTierNumber = getPerpMarketTierNumber(perpMarket);
267
267
  const priceDivisor = contractTierNumber <= 1 ? 500 : 100;
268
268
  baselineStartOffset = isVariant(direction, 'long')
269
- ? perpMarket.amm.lastBidPriceTwap.divn(priceDivisor)
270
- : perpMarket.amm.lastAskPriceTwap.divn(priceDivisor).neg();
269
+ ? perpMarket.marketStats.lastBidPriceTwap.divn(priceDivisor)
270
+ : perpMarket.marketStats.lastAskPriceTwap.divn(priceDivisor).neg();
271
271
  } else {
272
272
  const markTwapSlow = isVariant(direction, 'long')
273
- ? perpMarket.amm.lastBidPriceTwap
274
- : perpMarket.amm.lastAskPriceTwap;
273
+ ? perpMarket.marketStats.lastBidPriceTwap
274
+ : perpMarket.marketStats.lastAskPriceTwap;
275
275
 
276
- const markTwapFast = perpMarket.amm.lastMarkPriceTwap5Min;
276
+ const markTwapFast = perpMarket.marketStats.lastMarkPriceTwap5Min;
277
277
  const oracleTwapSlow =
278
- perpMarket.amm.historicalOracleData.lastOraclePriceTwap;
278
+ perpMarket.marketStats.historicalOracleData.lastOraclePriceTwap;
279
279
  const oracleTwapFast =
280
- perpMarket.amm.historicalOracleData.lastOraclePriceTwap5Min;
280
+ perpMarket.marketStats.historicalOracleData.lastOraclePriceTwap5Min;
281
281
 
282
282
  const offsetSlow = markTwapSlow.sub(oracleTwapSlow);
283
283
  const offsetFast = markTwapFast.sub(oracleTwapFast);
284
284
 
285
- const fracOfLongSpreadInPrice = new BN(perpMarket.amm.longSpread)
285
+ // long_spread/short_spread were removed from AMM in the decoupling refactor.
286
+ // Fall back to half base_spread as the per-side spread approximation; the
287
+ // AMM no longer caches an exact per-side spread without oracle context.
288
+ const halfBaseSpread = new BN(Math.floor(perpMarket.amm.baseSpread / 2));
289
+ const fracOfLongSpreadInPrice = halfBaseSpread
286
290
  .mul(markTwapSlow)
287
291
  .div(PRICE_PRECISION.muln(10)); // divide by 10x for safety
288
292
 
289
- const fracOfShortSpreadInPrice = new BN(perpMarket.amm.shortSpread)
293
+ const fracOfShortSpreadInPrice = halfBaseSpread
290
294
  .mul(markTwapSlow)
291
295
  .div(PRICE_PRECISION.muln(10)); // divide by 10x for safety
292
296
 
@@ -4,7 +4,7 @@ import { isVariant } from '../types';
4
4
  import { User } from '../user';
5
5
 
6
6
  export function isUserBankrupt(user: User): boolean {
7
- const userAccount = user.getUserAccount();
7
+ const userAccount = user.getUserAccountOrThrow();
8
8
  let hasLiability = false;
9
9
  for (const position of userAccount.spotPositions) {
10
10
  if (position.scaledBalance.gt(ZERO)) {