@velocity-exchange/sdk 0.0.3 → 0.1.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 (393) hide show
  1. package/.prettierignore +1 -1
  2. package/CHANGELOG.md +35 -0
  3. package/README.md +30 -30
  4. package/bun.lock +1 -1
  5. package/lib/browser/accounts/grpcProgramAccountSubscriber.js +1 -1
  6. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +0 -4
  7. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +1 -3
  8. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +0 -4
  9. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +5 -7
  10. package/lib/browser/accounts/laserProgramAccountSubscriber.js +1 -1
  11. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +0 -4
  12. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +5 -7
  13. package/lib/browser/accounts/types.d.ts +2 -8
  14. package/lib/browser/accounts/utils.js +2 -2
  15. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +0 -4
  16. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +5 -7
  17. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +0 -4
  18. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +5 -7
  19. package/lib/browser/addresses/pda.d.ts +1 -7
  20. package/lib/browser/addresses/pda.js +4 -10
  21. package/lib/browser/adminClient.d.ts +1 -1
  22. package/lib/browser/adminClient.js +21 -21
  23. package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +1 -3
  24. package/lib/browser/auctionSubscriber/auctionSubscriber.js +2 -6
  25. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +1 -3
  26. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +2 -6
  27. package/lib/browser/auctionSubscriber/types.d.ts +3 -2
  28. package/lib/browser/config.d.ts +10 -19
  29. package/lib/browser/config.js +6 -33
  30. package/lib/browser/constants/insuranceFund.d.ts +1 -1
  31. package/lib/browser/constants/insuranceFund.js +1 -1
  32. package/lib/browser/constituentMap/constituentMap.d.ts +0 -2
  33. package/lib/browser/constituentMap/constituentMap.js +5 -5
  34. package/lib/browser/core/VelocityCore.d.ts +9 -15
  35. package/lib/browser/core/VelocityCore.js +5 -7
  36. package/lib/browser/core/instructions/withdraw.d.ts +1 -1
  37. package/lib/browser/core/instructions/withdraw.js +1 -1
  38. package/lib/browser/core/remainingAccounts.js +3 -3
  39. package/lib/browser/decode/user.js +5 -5
  40. package/lib/browser/dlob/DLOB.d.ts +1 -1
  41. package/lib/browser/dlob/DLOB.js +7 -7
  42. package/lib/browser/dlob/DLOBNode.js +1 -2
  43. package/lib/browser/dlob/DLOBSubscriber.d.ts +0 -2
  44. package/lib/browser/dlob/DLOBSubscriber.js +2 -7
  45. package/lib/browser/dlob/orderBookLevels.js +7 -7
  46. package/lib/browser/dlob/types.d.ts +0 -2
  47. package/lib/browser/events/eventSubscriber.d.ts +1 -1
  48. package/lib/browser/events/eventsServerLogProvider.js +2 -2
  49. package/lib/browser/events/parse.js +14 -14
  50. package/lib/browser/events/types.d.ts +3 -5
  51. package/lib/browser/events/types.js +1 -1
  52. package/lib/browser/idl/{drift.d.ts → velocity.d.ts} +1043 -768
  53. package/lib/browser/idl/{drift.json → velocity.json} +1034 -759
  54. package/lib/browser/index.d.ts +1 -1
  55. package/lib/browser/index.js +1 -2
  56. package/lib/browser/math/amm.d.ts +10 -10
  57. package/lib/browser/math/amm.js +29 -28
  58. package/lib/browser/math/auction.d.ts +1 -1
  59. package/lib/browser/math/auction.js +18 -21
  60. package/lib/browser/math/builder.d.ts +18 -1
  61. package/lib/browser/math/builder.js +32 -1
  62. package/lib/browser/math/funding.js +26 -26
  63. package/lib/browser/math/margin.d.ts +4 -4
  64. package/lib/browser/math/margin.js +15 -15
  65. package/lib/browser/math/market.js +13 -13
  66. package/lib/browser/math/oracles.d.ts +4 -4
  67. package/lib/browser/math/oracles.js +23 -23
  68. package/lib/browser/math/orders.d.ts +2 -2
  69. package/lib/browser/math/orders.js +12 -12
  70. package/lib/browser/math/position.js +4 -4
  71. package/lib/browser/math/superStake.d.ts +8 -10
  72. package/lib/browser/math/superStake.js +18 -20
  73. package/lib/browser/math/trade.js +5 -5
  74. package/lib/browser/math/utils.d.ts +1 -1
  75. package/lib/browser/math/utils.js +1 -1
  76. package/lib/browser/oracles/pythLazerClient.js +2 -2
  77. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +0 -2
  78. package/lib/browser/orderSubscriber/OrderSubscriber.js +8 -12
  79. package/lib/browser/orderSubscriber/WebsocketSubscription.js +1 -1
  80. package/lib/browser/orderSubscriber/grpcSubscription.js +2 -2
  81. package/lib/browser/orderSubscriber/types.d.ts +0 -2
  82. package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +1 -5
  83. package/lib/browser/priorityFee/priorityFeeSubscriber.js +7 -15
  84. package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +0 -4
  85. package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +3 -11
  86. package/lib/browser/priorityFee/types.d.ts +3 -8
  87. package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +0 -8
  88. package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +1 -3
  89. package/lib/browser/pyth/pythLazerSubscriber.d.ts +1 -1
  90. package/lib/browser/pyth/pythLazerSubscriber.js +1 -1
  91. package/lib/browser/swap/UnifiedSwapClient.js +1 -1
  92. package/lib/browser/swift/signedMsgUserAccountSubscriber.d.ts +4 -5
  93. package/lib/browser/swift/signedMsgUserAccountSubscriber.js +2 -6
  94. package/lib/browser/swift/swiftOrderSubscriber.d.ts +6 -5
  95. package/lib/browser/swift/swiftOrderSubscriber.js +5 -11
  96. package/lib/browser/types.d.ts +81 -93
  97. package/lib/browser/types.js +4 -0
  98. package/lib/browser/user.d.ts +1 -3
  99. package/lib/browser/user.js +19 -23
  100. package/lib/browser/userConfig.d.ts +3 -2
  101. package/lib/browser/userMap/WebsocketSubscription.js +1 -1
  102. package/lib/browser/userMap/grpcSubscription.js +1 -1
  103. package/lib/browser/userMap/referrerMap.d.ts +0 -2
  104. package/lib/browser/userMap/referrerMap.js +0 -4
  105. package/lib/browser/userMap/revenueShareEscrowMap.d.ts +0 -2
  106. package/lib/browser/userMap/revenueShareEscrowMap.js +0 -4
  107. package/lib/browser/userMap/userMap.d.ts +2 -4
  108. package/lib/browser/userMap/userMap.js +10 -14
  109. package/lib/browser/userMap/userMapConfig.d.ts +3 -2
  110. package/lib/browser/userMap/userStatsMap.d.ts +0 -2
  111. package/lib/browser/userMap/userStatsMap.js +0 -4
  112. package/lib/browser/userStats.d.ts +0 -2
  113. package/lib/browser/userStats.js +10 -14
  114. package/lib/browser/userStatsConfig.d.ts +3 -2
  115. package/lib/browser/util/ed25519Utils.d.ts +1 -1
  116. package/lib/browser/util/ed25519Utils.js +1 -1
  117. package/lib/browser/velocityClient.d.ts +59 -44
  118. package/lib/browser/velocityClient.js +259 -197
  119. package/lib/browser/velocityClientConfig.d.ts +0 -8
  120. package/lib/node/accounts/grpcProgramAccountSubscriber.js +1 -1
  121. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +0 -4
  122. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
  123. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +1 -3
  124. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +0 -4
  125. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  126. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +5 -7
  127. package/lib/node/accounts/laserProgramAccountSubscriber.js +1 -1
  128. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +0 -4
  129. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
  130. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +5 -7
  131. package/lib/node/accounts/types.d.ts +2 -8
  132. package/lib/node/accounts/types.d.ts.map +1 -1
  133. package/lib/node/accounts/utils.js +2 -2
  134. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +0 -4
  135. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
  136. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +5 -7
  137. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +0 -4
  138. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  139. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +5 -7
  140. package/lib/node/addresses/pda.d.ts +1 -7
  141. package/lib/node/addresses/pda.d.ts.map +1 -1
  142. package/lib/node/addresses/pda.js +4 -10
  143. package/lib/node/adminClient.d.ts +1 -1
  144. package/lib/node/adminClient.js +21 -21
  145. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +1 -3
  146. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
  147. package/lib/node/auctionSubscriber/auctionSubscriber.js +2 -6
  148. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +1 -3
  149. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
  150. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +2 -6
  151. package/lib/node/auctionSubscriber/types.d.ts +3 -2
  152. package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
  153. package/lib/node/config.d.ts +10 -19
  154. package/lib/node/config.d.ts.map +1 -1
  155. package/lib/node/config.js +6 -33
  156. package/lib/node/constants/insuranceFund.d.ts +1 -1
  157. package/lib/node/constants/insuranceFund.js +1 -1
  158. package/lib/node/constituentMap/constituentMap.d.ts +0 -2
  159. package/lib/node/constituentMap/constituentMap.d.ts.map +1 -1
  160. package/lib/node/constituentMap/constituentMap.js +5 -5
  161. package/lib/node/core/VelocityCore.d.ts +9 -15
  162. package/lib/node/core/VelocityCore.d.ts.map +1 -1
  163. package/lib/node/core/VelocityCore.js +5 -7
  164. package/lib/node/core/instructions/withdraw.d.ts +1 -1
  165. package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
  166. package/lib/node/core/instructions/withdraw.js +1 -1
  167. package/lib/node/core/remainingAccounts.js +3 -3
  168. package/lib/node/decode/user.js +5 -5
  169. package/lib/node/dlob/DLOB.d.ts +1 -1
  170. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  171. package/lib/node/dlob/DLOB.js +7 -7
  172. package/lib/node/dlob/DLOBNode.js +1 -2
  173. package/lib/node/dlob/DLOBSubscriber.d.ts +0 -2
  174. package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
  175. package/lib/node/dlob/DLOBSubscriber.js +2 -7
  176. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  177. package/lib/node/dlob/orderBookLevels.js +7 -7
  178. package/lib/node/dlob/types.d.ts +0 -2
  179. package/lib/node/dlob/types.d.ts.map +1 -1
  180. package/lib/node/events/eventSubscriber.d.ts +1 -1
  181. package/lib/node/events/eventsServerLogProvider.js +2 -2
  182. package/lib/node/events/parse.d.ts.map +1 -1
  183. package/lib/node/events/parse.js +14 -14
  184. package/lib/node/events/types.d.ts +3 -5
  185. package/lib/node/events/types.d.ts.map +1 -1
  186. package/lib/node/events/types.js +1 -1
  187. package/lib/node/idl/{drift.d.ts → velocity.d.ts} +1044 -769
  188. package/lib/node/idl/velocity.d.ts.map +1 -0
  189. package/lib/node/idl/{drift.json → velocity.json} +1034 -759
  190. package/lib/node/index.d.ts +1 -1
  191. package/lib/node/index.d.ts.map +1 -1
  192. package/lib/node/index.js +1 -2
  193. package/lib/node/math/amm.d.ts +10 -10
  194. package/lib/node/math/amm.d.ts.map +1 -1
  195. package/lib/node/math/amm.js +29 -28
  196. package/lib/node/math/auction.d.ts +1 -1
  197. package/lib/node/math/auction.d.ts.map +1 -1
  198. package/lib/node/math/auction.js +18 -21
  199. package/lib/node/math/builder.d.ts +18 -1
  200. package/lib/node/math/builder.d.ts.map +1 -1
  201. package/lib/node/math/builder.js +32 -1
  202. package/lib/node/math/funding.d.ts.map +1 -1
  203. package/lib/node/math/funding.js +26 -26
  204. package/lib/node/math/margin.d.ts +4 -4
  205. package/lib/node/math/margin.d.ts.map +1 -1
  206. package/lib/node/math/margin.js +15 -15
  207. package/lib/node/math/market.d.ts.map +1 -1
  208. package/lib/node/math/market.js +13 -13
  209. package/lib/node/math/oracles.d.ts +4 -4
  210. package/lib/node/math/oracles.d.ts.map +1 -1
  211. package/lib/node/math/oracles.js +23 -23
  212. package/lib/node/math/orders.d.ts +2 -2
  213. package/lib/node/math/orders.d.ts.map +1 -1
  214. package/lib/node/math/orders.js +12 -12
  215. package/lib/node/math/position.d.ts.map +1 -1
  216. package/lib/node/math/position.js +4 -4
  217. package/lib/node/math/superStake.d.ts +8 -10
  218. package/lib/node/math/superStake.d.ts.map +1 -1
  219. package/lib/node/math/superStake.js +18 -20
  220. package/lib/node/math/trade.d.ts.map +1 -1
  221. package/lib/node/math/trade.js +5 -5
  222. package/lib/node/math/utils.d.ts +1 -1
  223. package/lib/node/math/utils.js +1 -1
  224. package/lib/node/oracles/pythLazerClient.js +2 -2
  225. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +0 -2
  226. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  227. package/lib/node/orderSubscriber/OrderSubscriber.js +8 -12
  228. package/lib/node/orderSubscriber/WebsocketSubscription.js +1 -1
  229. package/lib/node/orderSubscriber/grpcSubscription.js +2 -2
  230. package/lib/node/orderSubscriber/types.d.ts +0 -2
  231. package/lib/node/orderSubscriber/types.d.ts.map +1 -1
  232. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +1 -5
  233. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
  234. package/lib/node/priorityFee/priorityFeeSubscriber.js +7 -15
  235. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +0 -4
  236. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
  237. package/lib/node/priorityFee/priorityFeeSubscriberMap.js +3 -11
  238. package/lib/node/priorityFee/types.d.ts +3 -8
  239. package/lib/node/priorityFee/types.d.ts.map +1 -1
  240. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +0 -8
  241. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
  242. package/lib/node/priorityFee/velocityPriorityFeeMethod.js +1 -3
  243. package/lib/node/pyth/pythLazerSubscriber.d.ts +1 -1
  244. package/lib/node/pyth/pythLazerSubscriber.js +1 -1
  245. package/lib/node/swap/UnifiedSwapClient.js +1 -1
  246. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts +4 -5
  247. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts.map +1 -1
  248. package/lib/node/swift/signedMsgUserAccountSubscriber.js +2 -6
  249. package/lib/node/swift/swiftOrderSubscriber.d.ts +6 -5
  250. package/lib/node/swift/swiftOrderSubscriber.d.ts.map +1 -1
  251. package/lib/node/swift/swiftOrderSubscriber.js +5 -11
  252. package/lib/node/types.d.ts +81 -93
  253. package/lib/node/types.d.ts.map +1 -1
  254. package/lib/node/types.js +4 -0
  255. package/lib/node/user.d.ts +1 -3
  256. package/lib/node/user.d.ts.map +1 -1
  257. package/lib/node/user.js +19 -23
  258. package/lib/node/userConfig.d.ts +3 -2
  259. package/lib/node/userConfig.d.ts.map +1 -1
  260. package/lib/node/userMap/WebsocketSubscription.js +1 -1
  261. package/lib/node/userMap/grpcSubscription.js +1 -1
  262. package/lib/node/userMap/referrerMap.d.ts +0 -2
  263. package/lib/node/userMap/referrerMap.d.ts.map +1 -1
  264. package/lib/node/userMap/referrerMap.js +0 -4
  265. package/lib/node/userMap/revenueShareEscrowMap.d.ts +0 -2
  266. package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
  267. package/lib/node/userMap/revenueShareEscrowMap.js +0 -4
  268. package/lib/node/userMap/userMap.d.ts +2 -4
  269. package/lib/node/userMap/userMap.d.ts.map +1 -1
  270. package/lib/node/userMap/userMap.js +10 -14
  271. package/lib/node/userMap/userMapConfig.d.ts +3 -2
  272. package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
  273. package/lib/node/userMap/userStatsMap.d.ts +0 -2
  274. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  275. package/lib/node/userMap/userStatsMap.js +0 -4
  276. package/lib/node/userStats.d.ts +0 -2
  277. package/lib/node/userStats.d.ts.map +1 -1
  278. package/lib/node/userStats.js +10 -14
  279. package/lib/node/userStatsConfig.d.ts +3 -2
  280. package/lib/node/userStatsConfig.d.ts.map +1 -1
  281. package/lib/node/util/ed25519Utils.d.ts +1 -1
  282. package/lib/node/util/ed25519Utils.js +1 -1
  283. package/lib/node/velocityClient.d.ts +59 -44
  284. package/lib/node/velocityClient.d.ts.map +1 -1
  285. package/lib/node/velocityClient.js +259 -197
  286. package/lib/node/velocityClientConfig.d.ts +0 -8
  287. package/lib/node/velocityClientConfig.d.ts.map +1 -1
  288. package/package.json +6 -7
  289. package/scripts/deposit-isolated-positions.ts +2 -2
  290. package/scripts/find-flagged-users.ts +1 -1
  291. package/scripts/grpc-client-test-comparison.ts +4 -4
  292. package/scripts/grpc-multiuser-client-test-comparison.ts +2 -2
  293. package/scripts/single-grpc-client-test.ts +3 -3
  294. package/scripts/updateVersion.js +4 -4
  295. package/scripts/withdraw-isolated-positions.ts +2 -2
  296. package/src/accounts/grpcProgramAccountSubscriber.ts +1 -1
  297. package/src/accounts/grpcVelocityClientAccountSubscriber.ts +0 -7
  298. package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +4 -11
  299. package/src/accounts/laserProgramAccountSubscriber.ts +1 -1
  300. package/src/accounts/pollingVelocityClientAccountSubscriber.ts +4 -11
  301. package/src/accounts/types.ts +2 -9
  302. package/src/accounts/utils.ts +2 -2
  303. package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +4 -11
  304. package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +4 -11
  305. package/src/addresses/pda.ts +3 -13
  306. package/src/adminClient.ts +21 -21
  307. package/src/auctionSubscriber/auctionSubscriber.ts +1 -6
  308. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +1 -6
  309. package/src/auctionSubscriber/types.ts +3 -3
  310. package/src/config.ts +8 -64
  311. package/src/constants/insuranceFund.ts +1 -1
  312. package/src/constituentMap/constituentMap.ts +2 -6
  313. package/src/core/VelocityCore.ts +11 -20
  314. package/src/core/instructions/withdraw.ts +2 -2
  315. package/src/core/remainingAccounts.ts +3 -3
  316. package/src/decode/user.ts +5 -5
  317. package/src/dlob/DLOB.ts +7 -7
  318. package/src/dlob/DLOBNode.ts +1 -1
  319. package/src/dlob/DLOBSubscriber.ts +2 -8
  320. package/src/dlob/orderBookLevels.ts +12 -6
  321. package/src/dlob/types.ts +0 -2
  322. package/src/events/eventSubscriber.ts +1 -1
  323. package/src/events/eventsServerLogProvider.ts +2 -2
  324. package/src/events/parse.ts +14 -14
  325. package/src/events/types.ts +4 -7
  326. package/src/idl/{drift.json → velocity.json} +1034 -759
  327. package/src/idl/{drift.ts → velocity.ts} +1036 -761
  328. package/src/index.ts +1 -4
  329. package/src/margin/README.md +2 -2
  330. package/src/math/amm.ts +43 -21
  331. package/src/math/auction.ts +19 -22
  332. package/src/math/builder.ts +45 -1
  333. package/src/math/funding.ts +46 -43
  334. package/src/math/margin.ts +15 -15
  335. package/src/math/market.ts +21 -13
  336. package/src/math/oracles.ts +29 -26
  337. package/src/math/orders.ts +21 -11
  338. package/src/math/position.ts +9 -3
  339. package/src/math/superStake.ts +21 -24
  340. package/src/math/trade.ts +9 -1
  341. package/src/math/utils.ts +1 -1
  342. package/src/oracles/pythLazerClient.ts +3 -3
  343. package/src/orderSubscriber/OrderSubscriber.ts +2 -8
  344. package/src/orderSubscriber/WebsocketSubscription.ts +1 -1
  345. package/src/orderSubscriber/grpcSubscription.ts +2 -2
  346. package/src/orderSubscriber/types.ts +0 -2
  347. package/src/priorityFee/priorityFeeSubscriber.ts +5 -12
  348. package/src/priorityFee/priorityFeeSubscriberMap.ts +2 -10
  349. package/src/priorityFee/types.ts +4 -9
  350. package/src/priorityFee/velocityPriorityFeeMethod.ts +0 -12
  351. package/src/pyth/pythLazerSubscriber.ts +1 -1
  352. package/src/swap/UnifiedSwapClient.ts +1 -1
  353. package/src/swift/signedMsgUserAccountSubscriber.ts +2 -8
  354. package/src/swift/swiftOrderSubscriber.ts +7 -12
  355. package/src/types.ts +86 -104
  356. package/src/user.ts +9 -14
  357. package/src/userConfig.ts +1 -3
  358. package/src/userMap/WebsocketSubscription.ts +1 -1
  359. package/src/userMap/grpcSubscription.ts +1 -1
  360. package/src/userMap/referrerMap.ts +0 -4
  361. package/src/userMap/revenueShareEscrowMap.ts +0 -4
  362. package/src/userMap/userMap.ts +3 -7
  363. package/src/userMap/userMapConfig.ts +3 -3
  364. package/src/userMap/userStatsMap.ts +0 -4
  365. package/src/userStats.ts +1 -5
  366. package/src/userStatsConfig.ts +3 -3
  367. package/src/util/ed25519Utils.ts +1 -1
  368. package/src/velocityClient.ts +345 -231
  369. package/src/velocityClientConfig.ts +3 -11
  370. package/tests/{DriftCore → VelocityCore}/decode.test.ts +1 -1
  371. package/tests/{DriftCore → VelocityCore}/fill_trigger.test.ts +1 -1
  372. package/tests/{DriftCore → VelocityCore}/instructions.test.ts +1 -1
  373. package/tests/{DriftCore → VelocityCore}/pdas.test.ts +4 -2
  374. package/tests/auctions/test.ts +4 -4
  375. package/tests/ci/verifyConstants.ts +24 -27
  376. package/tests/decode/test.ts +3 -3
  377. package/tests/dlob/helpers.ts +5 -9
  378. package/tests/dlob/test.ts +5 -5
  379. package/tests/events/parseLogsForCuUsage.ts +15 -15
  380. package/tests/user/helpers.ts +10 -10
  381. package/tests/user/test.ts +13 -10
  382. package/lib/browser/util/deprecatedAlias.d.ts +0 -26
  383. package/lib/browser/util/deprecatedAlias.js +0 -10
  384. package/lib/node/idl/drift.d.ts.map +0 -1
  385. package/lib/node/util/deprecatedAlias.d.ts +0 -27
  386. package/lib/node/util/deprecatedAlias.d.ts.map +0 -1
  387. package/lib/node/util/deprecatedAlias.js +0 -10
  388. package/src/util/deprecatedAlias.ts +0 -25
  389. /package/lib/browser/idl/{drift.js → velocity.js} +0 -0
  390. /package/lib/node/idl/{drift.js → velocity.js} +0 -0
  391. /package/tests/{DriftCore → VelocityCore}/perp_orders.test.ts +0 -0
  392. /package/tests/{DriftCore → VelocityCore}/remainingAccounts.test.ts +0 -0
  393. /package/tests/{DriftCore → VelocityCore}/settlement_liquidation.test.ts +0 -0
@@ -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
  */
@@ -220,17 +220,17 @@ export function calculatePerpLiabilityValue(
220
220
  * @returns
221
221
  */
222
222
  export function calculateMarginUSDCRequiredForTrade(
223
- driftClient: VelocityClient,
223
+ velocityClient: VelocityClient,
224
224
  targetMarketIndex: number,
225
225
  baseSize: BN,
226
226
  userMaxMarginRatio?: number,
227
227
  entryPrice?: BN
228
228
  ): BN {
229
- const targetMarket = driftClient.getPerpMarketAccount(targetMarketIndex);
229
+ const targetMarket = velocityClient.getPerpMarketAccount(targetMarketIndex);
230
230
 
231
231
  const price =
232
232
  entryPrice ??
233
- driftClient.getOracleDataForPerpMarket(targetMarket.marketIndex).price;
233
+ velocityClient.getOracleDataForPerpMarket(targetMarket.marketIndex).price;
234
234
 
235
235
  const perpLiabilityValue = calculatePerpLiabilityValue(baseSize, price);
236
236
 
@@ -254,7 +254,7 @@ export function calculateMarginUSDCRequiredForTrade(
254
254
  * Returns collateral required in the precision of the target collateral market.
255
255
  */
256
256
  export function calculateCollateralDepositRequiredForTrade(
257
- driftClient: VelocityClient,
257
+ velocityClient: VelocityClient,
258
258
  targetMarketIndex: number,
259
259
  baseSize: BN,
260
260
  collateralIndex: number,
@@ -262,17 +262,17 @@ export function calculateCollateralDepositRequiredForTrade(
262
262
  estEntryPrice?: BN
263
263
  ): BN {
264
264
  const marginRequiredUsdc = calculateMarginUSDCRequiredForTrade(
265
- driftClient,
265
+ velocityClient,
266
266
  targetMarketIndex,
267
267
  baseSize,
268
268
  userMaxMarginRatio,
269
269
  estEntryPrice
270
270
  );
271
271
 
272
- const collateralMarket = driftClient.getSpotMarketAccount(collateralIndex);
272
+ const collateralMarket = velocityClient.getSpotMarketAccount(collateralIndex);
273
273
 
274
274
  const collateralOracleData =
275
- driftClient.getOracleDataForSpotMarket(collateralIndex);
275
+ velocityClient.getOracleDataForSpotMarket(collateralIndex);
276
276
 
277
277
  const scaledAssetWeight = calculateScaledInitialAssetWeight(
278
278
  collateralMarket,
@@ -280,7 +280,7 @@ export function calculateCollateralDepositRequiredForTrade(
280
280
  );
281
281
 
282
282
  // Base amount required to deposit = (marginRequiredUsdc / priceOfAsset) / assetWeight .. (E.g. $100 required / $10000 price / 0.5 weight)
283
- const baseAmountRequired = driftClient
283
+ const baseAmountRequired = velocityClient
284
284
  .convertToSpotPrecision(collateralIndex, marginRequiredUsdc)
285
285
  .mul(PRICE_PRECISION) // adjust for division by oracle price
286
286
  .mul(SPOT_MARKET_WEIGHT_PRECISION) // adjust for division by scaled asset weight
@@ -294,14 +294,14 @@ export function calculateCollateralDepositRequiredForTrade(
294
294
  }
295
295
 
296
296
  export function calculateCollateralValueOfDeposit(
297
- driftClient: VelocityClient,
297
+ velocityClient: VelocityClient,
298
298
  collateralIndex: number,
299
299
  baseSize: BN
300
300
  ): BN {
301
- const collateralMarket = driftClient.getSpotMarketAccount(collateralIndex);
301
+ const collateralMarket = velocityClient.getSpotMarketAccount(collateralIndex);
302
302
 
303
303
  const collateralOracleData =
304
- driftClient.getOracleDataForSpotMarket(collateralIndex);
304
+ velocityClient.getOracleDataForSpotMarket(collateralIndex);
305
305
 
306
306
  const scaledAssetWeight = calculateScaledInitialAssetWeight(
307
307
  collateralMarket,
@@ -341,20 +341,20 @@ export function calculateLiquidationPrice(
341
341
  }
342
342
 
343
343
  export function calculateUserMaxPerpOrderSize(
344
- driftClient: VelocityClient,
344
+ velocityClient: VelocityClient,
345
345
  userAccountKey: PublicKey,
346
346
  userAccount: UserAccount,
347
347
  targetMarketIndex: number,
348
348
  tradeSide: PositionDirection
349
349
  ): { tradeSize: BN; oppositeSideTradeSize: BN } {
350
350
  const userAccountSubscriber = new OneShotUserAccountSubscriber(
351
- driftClient.program,
351
+ velocityClient.program,
352
352
  userAccountKey,
353
353
  userAccount
354
354
  );
355
355
 
356
356
  const user = new User({
357
- driftClient,
357
+ velocityClient,
358
358
  userAccountPublicKey: userAccountKey,
359
359
  accountSubscription: {
360
360
  type: 'custom',
@@ -45,7 +45,11 @@ export function calculateReservePrice(
45
45
  market: PerpMarketAccount,
46
46
  mmOraclePriceData: MMOraclePriceData
47
47
  ): BN {
48
- const newAmm = calculateUpdatedAMM(market.amm, mmOraclePriceData);
48
+ const newAmm = calculateUpdatedAMM(
49
+ market.amm,
50
+ market.totalExchangeFee,
51
+ mmOraclePriceData
52
+ );
49
53
  return calculatePrice(
50
54
  newAmm.baseAssetReserve,
51
55
  newAmm.quoteAssetReserve,
@@ -67,6 +71,8 @@ export function calculateBidPrice(
67
71
  const { baseAssetReserve, quoteAssetReserve, newPeg } =
68
72
  calculateUpdatedAMMSpreadReserves(
69
73
  market.amm,
74
+ market.marketStats,
75
+ market.totalExchangeFee,
70
76
  PositionDirection.SHORT,
71
77
  mmOraclePriceData,
72
78
  latestSlot
@@ -89,6 +95,8 @@ export function calculateAskPrice(
89
95
  const { baseAssetReserve, quoteAssetReserve, newPeg } =
90
96
  calculateUpdatedAMMSpreadReserves(
91
97
  market.amm,
98
+ market.marketStats,
99
+ market.totalExchangeFee,
92
100
  PositionDirection.LONG,
93
101
  mmOraclePriceData,
94
102
  latestSlot
@@ -251,8 +259,8 @@ export function calculateNetUserPnl(
251
259
  .div(BASE_PRECISION)
252
260
  .div(PRICE_TO_QUOTE_PRECISION);
253
261
 
254
- const netUserCostBasis = perpMarket.amm.quoteAssetAmount.add(
255
- perpMarket.amm.netUnsettledFundingPnl
262
+ const netUserCostBasis = perpMarket.quoteAssetAmount.add(
263
+ perpMarket.netUnsettledFundingPnl
256
264
  );
257
265
 
258
266
  const netUserPnl = netUserPositionValue.add(netUserCostBasis);
@@ -297,7 +305,7 @@ export function calculateAvailablePerpLiquidity(
297
305
  market.amm.baseAssetReserve,
298
306
  market.amm.minBaseAssetReserve,
299
307
  market.amm.maxBaseAssetReserve,
300
- market.amm.orderStepSize
308
+ market.orderStepSize
301
309
  );
302
310
 
303
311
  asks = asks.abs();
@@ -358,9 +366,9 @@ export function getTriggerPrice(
358
366
  const lastFillPrice = market.lastFillPrice;
359
367
 
360
368
  // Calculate 5-minute basis
361
- const markPrice5minTwap = market.amm.lastMarkPriceTwap5Min;
369
+ const markPrice5minTwap = market.marketStats.lastMarkPriceTwap5Min;
362
370
  const lastOraclePriceTwap5min =
363
- market.amm.historicalOracleData.lastOraclePriceTwap5Min;
371
+ market.marketStats.historicalOracleData.lastOraclePriceTwap5Min;
364
372
  const basis5min = markPrice5minTwap.sub(lastOraclePriceTwap5min);
365
373
 
366
374
  const oraclePlusBasis5min = oraclePrice.add(basis5min);
@@ -388,23 +396,23 @@ function getLastFundingBasis(
388
396
  oraclePrice: BN,
389
397
  now: BN
390
398
  ): BN {
391
- if (market.amm.lastFundingOracleTwap.gt(ZERO)) {
392
- const lastFundingRate = market.amm.lastFundingRate
399
+ if (market.lastFundingOracleTwap.gt(ZERO)) {
400
+ const lastFundingRate = market.lastFundingRate
393
401
  .mul(PRICE_PRECISION)
394
- .div(market.amm.lastFundingOracleTwap)
402
+ .div(market.lastFundingOracleTwap)
395
403
  .muln(24);
396
404
  const lastFundingRatePreAdj = lastFundingRate.sub(
397
405
  FUNDING_RATE_PRECISION.div(new BN(3333)) // FUNDING_RATE_OFFSET_PERCENTAGE
398
406
  );
399
407
  const timeLeftUntilFundingUpdate = BN.min(
400
- BN.max(now.sub(market.amm.lastFundingRateTs), ZERO),
401
- market.amm.fundingPeriod
408
+ BN.max(now.sub(market.lastFundingRateTs), ZERO),
409
+ market.marketStats.fundingPeriod
402
410
  );
403
411
  const lastFundingBasis = oraclePrice
404
412
  .mul(lastFundingRatePreAdj)
405
413
  .div(PERCENTAGE_PRECISION)
406
- .mul(market.amm.fundingPeriod.sub(timeLeftUntilFundingUpdate))
407
- .div(market.amm.fundingPeriod)
414
+ .mul(market.marketStats.fundingPeriod.sub(timeLeftUntilFundingUpdate))
415
+ .div(market.marketStats.fundingPeriod)
408
416
  .div(new BN(1000)); // FUNDING_RATE_BUFFER
409
417
  return lastFundingBasis;
410
418
  } else {
@@ -1,6 +1,6 @@
1
1
  import {
2
- AMM,
3
2
  HistoricalOracleData,
3
+ MarketStats,
4
4
  OracleGuardRails,
5
5
  OracleSource,
6
6
  OracleValidity,
@@ -64,14 +64,14 @@ export function getOracleValidity(
64
64
  const isNonPositive = oraclePriceData.price.lte(ZERO);
65
65
  const isTooVolatile = BN.max(
66
66
  oraclePriceData.price,
67
- market.amm.historicalOracleData.lastOraclePriceTwap
67
+ market.marketStats.historicalOracleData.lastOraclePriceTwap
68
68
  )
69
69
  .div(
70
70
  BN.max(
71
71
  ONE,
72
72
  BN.min(
73
73
  oraclePriceData.price,
74
- market.amm.historicalOracleData.lastOraclePriceTwap
74
+ market.marketStats.historicalOracleData.lastOraclePriceTwap
75
75
  )
76
76
  )
77
77
  )
@@ -89,16 +89,16 @@ export function getOracleValidity(
89
89
  const oracleDelay = slot.sub(oraclePriceData.slot).sub(oracleStalenessBuffer);
90
90
 
91
91
  let isStaleForAmmImmediate = true;
92
- if (market.amm.oracleSlotDelayOverride != 0) {
92
+ if (market.oracleSlotDelayOverride != 0) {
93
93
  isStaleForAmmImmediate = oracleDelay.gt(
94
- BN.max(new BN(market.amm.oracleSlotDelayOverride), ZERO)
94
+ BN.max(new BN(market.oracleSlotDelayOverride), ZERO)
95
95
  );
96
96
  }
97
97
 
98
98
  let isStaleForAmmLowRisk = false;
99
- if (market.amm.oracleLowRiskSlotDelayOverride != 0) {
99
+ if (market.oracleLowRiskSlotDelayOverride != 0) {
100
100
  isStaleForAmmLowRisk = oracleDelay.gt(
101
- BN.max(new BN(market.amm.oracleLowRiskSlotDelayOverride), ZERO)
101
+ BN.max(new BN(market.oracleLowRiskSlotDelayOverride), ZERO)
102
102
  );
103
103
  } else {
104
104
  isStaleForAmmLowRisk = oracleDelay.gt(
@@ -109,7 +109,7 @@ export function getOracleValidity(
109
109
  let isStaleForMargin = oracleDelay.gt(
110
110
  new BN(oracleGuardRails.validity.slotsBeforeStaleForMargin)
111
111
  );
112
- if (isVariant(market.amm.oracleSource, 'pythLazerStableCoin')) {
112
+ if (isVariant(market.oracleSource, 'pythLazerStableCoin')) {
113
113
  isStaleForMargin = oracleDelay.gt(
114
114
  new BN(oracleGuardRails.validity.slotsBeforeStaleForMargin).muln(3)
115
115
  );
@@ -142,13 +142,13 @@ export function isOracleValid(
142
142
  ): boolean {
143
143
  // checks if oracle is valid for an AMM only fill
144
144
 
145
- const amm = market.amm;
145
+ const stats = market.marketStats;
146
146
  const isOraclePriceNonPositive = oraclePriceData.price.lte(ZERO);
147
147
  const isOraclePriceTooVolatile =
148
148
  oraclePriceData.price
149
- .div(BN.max(ONE, amm.historicalOracleData.lastOraclePriceTwap))
149
+ .div(BN.max(ONE, stats.historicalOracleData.lastOraclePriceTwap))
150
150
  .gt(oracleGuardRails.validity.tooVolatileRatio) ||
151
- amm.historicalOracleData.lastOraclePriceTwap
151
+ stats.historicalOracleData.lastOraclePriceTwap
152
152
  .div(BN.max(ONE, oraclePriceData.price))
153
153
  .gt(oracleGuardRails.validity.tooVolatileRatio);
154
154
 
@@ -177,14 +177,14 @@ export function isOracleValid(
177
177
  }
178
178
 
179
179
  export function isOracleTooDivergent(
180
- amm: AMM,
180
+ marketStats: MarketStats,
181
181
  oraclePriceData: OraclePriceData,
182
182
  oracleGuardRails: OracleGuardRails
183
183
  ): boolean {
184
184
  const oracleSpreadPct = oraclePriceData.price
185
- .sub(amm.historicalOracleData.lastOraclePriceTwap5Min)
185
+ .sub(marketStats.historicalOracleData.lastOraclePriceTwap5Min)
186
186
  .mul(PERCENTAGE_PRECISION)
187
- .div(amm.historicalOracleData.lastOraclePriceTwap5Min);
187
+ .div(marketStats.historicalOracleData.lastOraclePriceTwap5Min);
188
188
  const maxDivergence = BN.max(
189
189
  oracleGuardRails.priceDivergence.oracleTwap5MinPercentDivergence,
190
190
  PERCENTAGE_PRECISION.div(new BN(2))
@@ -230,25 +230,28 @@ export function calculateLiveOracleTwap(
230
230
  }
231
231
 
232
232
  export function calculateLiveOracleStd(
233
- amm: AMM,
233
+ marketStats: MarketStats,
234
234
  oraclePriceData: OraclePriceData,
235
235
  now: BN
236
236
  ): BN {
237
237
  const sinceLastUpdate = BN.max(
238
238
  ONE,
239
- now.sub(amm.historicalOracleData.lastOraclePriceTwapTs)
239
+ now.sub(marketStats.historicalOracleData.lastOraclePriceTwapTs)
240
+ );
241
+ const sinceStart = BN.max(
242
+ ZERO,
243
+ marketStats.fundingPeriod.sub(sinceLastUpdate)
240
244
  );
241
- const sinceStart = BN.max(ZERO, amm.fundingPeriod.sub(sinceLastUpdate));
242
245
 
243
246
  const liveOracleTwap = calculateLiveOracleTwap(
244
- amm.historicalOracleData,
247
+ marketStats.historicalOracleData,
245
248
  oraclePriceData,
246
249
  now,
247
- amm.fundingPeriod
250
+ marketStats.fundingPeriod
248
251
  );
249
252
 
250
253
  const liveOracleTwap5MIN = calculateLiveOracleTwap(
251
- amm.historicalOracleData,
254
+ marketStats.historicalOracleData,
252
255
  oraclePriceData,
253
256
  now,
254
257
  FIVE_MINUTE
@@ -260,14 +263,14 @@ export function calculateLiveOracleStd(
260
263
  );
261
264
 
262
265
  const oracleStd = priceDeltaVsTwap.add(
263
- amm.oracleStd.mul(sinceStart).div(sinceStart.add(sinceLastUpdate))
266
+ marketStats.oracleStd.mul(sinceStart).div(sinceStart.add(sinceLastUpdate))
264
267
  );
265
268
 
266
269
  return oracleStd;
267
270
  }
268
271
 
269
272
  export function getNewOracleConfPct(
270
- amm: AMM,
273
+ marketStats: MarketStats,
271
274
  oraclePriceData: OraclePriceData,
272
275
  reservePrice: BN,
273
276
  now: BN
@@ -276,16 +279,16 @@ export function getNewOracleConfPct(
276
279
 
277
280
  const sinceLastUpdate = BN.max(
278
281
  ZERO,
279
- now.sub(amm.historicalOracleData.lastOraclePriceTwapTs)
282
+ now.sub(marketStats.historicalOracleData.lastOraclePriceTwapTs)
280
283
  );
281
- let lowerBoundConfPct = amm.lastOracleConfPct;
284
+ let lowerBoundConfPct = marketStats.lastOracleConfPct;
282
285
  if (sinceLastUpdate.gt(ZERO)) {
283
286
  const lowerBoundConfDivisor = BN.max(
284
287
  new BN(21).sub(sinceLastUpdate),
285
288
  new BN(5)
286
289
  );
287
- lowerBoundConfPct = amm.lastOracleConfPct.sub(
288
- amm.lastOracleConfPct.div(lowerBoundConfDivisor)
290
+ lowerBoundConfPct = marketStats.lastOracleConfPct.sub(
291
+ marketStats.lastOracleConfPct.div(lowerBoundConfDivisor)
289
292
  );
290
293
  }
291
294
  const confIntervalPct = confInterval
@@ -4,6 +4,7 @@ import {
4
4
  isVariant,
5
5
  PerpMarketAccount,
6
6
  AMM,
7
+ MarketStats,
7
8
  Order,
8
9
  PositionDirection,
9
10
  MarketTypeStr,
@@ -168,11 +169,8 @@ export function getLimitPrice<T extends MarketTypeStr>(
168
169
  ): BN | undefined {
169
170
  if (hasAuctionPrice(order, slot)) {
170
171
  return getAuctionPrice(order, slot, oraclePriceData.price);
171
- } else if (order.oraclePriceOffset !== 0) {
172
- return BN.max(
173
- oraclePriceData.price.add(new BN(order.oraclePriceOffset)),
174
- ONE
175
- );
172
+ } else if (!order.oraclePriceOffset.eq(ZERO)) {
173
+ return BN.max(oraclePriceData.price.add(order.oraclePriceOffset), ONE);
176
174
  } else if (order.price.eq(ZERO)) {
177
175
  return fallbackPrice;
178
176
  } else {
@@ -183,7 +181,7 @@ export function getLimitPrice<T extends MarketTypeStr>(
183
181
  export function hasLimitPrice(order: Order, slot: number): boolean {
184
182
  return (
185
183
  order.price.gt(ZERO) ||
186
- order.oraclePriceOffset != 0 ||
184
+ !order.oraclePriceOffset.eq(ZERO) ||
187
185
  !isAuctionComplete(order, slot)
188
186
  );
189
187
  }
@@ -254,11 +252,18 @@ export function calculateBaseAssetAmountForAmmToFulfill(
254
252
  const limitPrice = getLimitPrice(order, mmOraclePriceData, slot);
255
253
  let baseAssetAmount;
256
254
 
257
- const updatedAMM = calculateUpdatedAMM(market.amm, mmOraclePriceData);
255
+ const updatedAMM = calculateUpdatedAMM(
256
+ market.amm,
257
+ market.totalExchangeFee,
258
+ mmOraclePriceData
259
+ );
258
260
  if (limitPrice !== undefined) {
259
261
  baseAssetAmount = calculateBaseAssetAmountToFillUpToLimitPrice(
260
262
  order,
261
263
  updatedAMM,
264
+ market.marketStats,
265
+ market.orderStepSize,
266
+ market.orderTickSize,
262
267
  limitPrice,
263
268
  mmOraclePriceData
264
269
  );
@@ -268,6 +273,7 @@ export function calculateBaseAssetAmountForAmmToFulfill(
268
273
 
269
274
  const maxBaseAssetAmount = calculateMaxBaseAssetAmountFillable(
270
275
  updatedAMM,
276
+ market.orderStepSize,
271
277
  order.direction
272
278
  );
273
279
 
@@ -277,15 +283,19 @@ export function calculateBaseAssetAmountForAmmToFulfill(
277
283
  export function calculateBaseAssetAmountToFillUpToLimitPrice(
278
284
  order: Order,
279
285
  amm: AMM,
286
+ marketStats: MarketStats,
287
+ orderStepSize: BN,
288
+ orderTickSize: BN,
280
289
  limitPrice: BN,
281
290
  mmOraclePriceData: MMOraclePriceData
282
291
  ): BN {
283
292
  const adjustedLimitPrice = isVariant(order.direction, 'long')
284
- ? limitPrice.sub(amm.orderTickSize)
285
- : limitPrice.add(amm.orderTickSize);
293
+ ? limitPrice.sub(orderTickSize)
294
+ : limitPrice.add(orderTickSize);
286
295
 
287
296
  const [maxAmountToTrade, direction] = calculateMaxBaseAssetAmountToTrade(
288
297
  amm,
298
+ marketStats,
289
299
  adjustedLimitPrice,
290
300
  order.direction,
291
301
  mmOraclePriceData
@@ -293,7 +303,7 @@ export function calculateBaseAssetAmountToFillUpToLimitPrice(
293
303
 
294
304
  const baseAssetAmount = standardizeBaseAssetAmount(
295
305
  maxAmountToTrade,
296
- amm.orderStepSize
306
+ orderStepSize
297
307
  );
298
308
 
299
309
  // Check that directions are the same
@@ -464,7 +474,7 @@ export function maxSizeForTargetLiabilityWeightBN(
464
474
  }
465
475
 
466
476
  // cap at max OI
467
- const maxOpenInterest = market.amm.maxOpenInterest;
477
+ const maxOpenInterest = market.maxOpenInterest;
468
478
  if (lo.gt(maxOpenInterest)) {
469
479
  return maxOpenInterest;
470
480
  }
@@ -53,6 +53,8 @@ export function calculateBaseAssetValue(
53
53
  const { baseAssetReserve, quoteAssetReserve, sqrtK, newPeg } =
54
54
  calculateUpdatedAMMSpreadReserves(
55
55
  market.amm,
56
+ market.marketStats,
57
+ market.totalExchangeFee,
56
58
  directionToClose,
57
59
  mmOraclePriceData,
58
60
  latestSlot
@@ -64,7 +66,11 @@ export function calculateBaseAssetValue(
64
66
  pegMultiplier: newPeg,
65
67
  };
66
68
  } else {
67
- prepegAmm = calculateUpdatedAMM(market.amm, mmOraclePriceData);
69
+ prepegAmm = calculateUpdatedAMM(
70
+ market.amm,
71
+ market.totalExchangeFee,
72
+ mmOraclePriceData
73
+ );
68
74
  }
69
75
  } else {
70
76
  prepegAmm = market.amm;
@@ -213,9 +219,9 @@ export function calculateUnsettledFundingPnl(
213
219
 
214
220
  let ammCumulativeFundingRate: BN;
215
221
  if (perpPosition.baseAssetAmount.gt(ZERO)) {
216
- ammCumulativeFundingRate = market.amm.cumulativeFundingRateLong;
222
+ ammCumulativeFundingRate = market.cumulativeFundingRateLong;
217
223
  } else {
218
- ammCumulativeFundingRate = market.amm.cumulativeFundingRateShort;
224
+ ammCumulativeFundingRate = market.cumulativeFundingRateShort;
219
225
  }
220
226
 
221
227
  const perPositionFundingRate = ammCumulativeFundingRate
@@ -43,17 +43,14 @@ export async function fetchBSolMetrics() {
43
43
  }
44
44
 
45
45
  export async function fetchBSolVelocityEmissions() {
46
- return await fetch('https://stake.solblaze.org/api/v1/drift_emissions');
46
+ return await fetch('https://stake.solblaze.org/api/v1/velocity_emissions');
47
47
  }
48
48
 
49
- /** @deprecated Use `fetchBSolVelocityEmissions` instead. `fetchBSolDriftEmissions` will be removed in a future major. */
50
- export const fetchBSolDriftEmissions = fetchBSolVelocityEmissions;
51
-
52
49
  export async function findBestSuperStakeIxs({
53
50
  marketIndex,
54
51
  amount,
55
52
  jupiterClient,
56
- driftClient,
53
+ velocityClient,
57
54
  userAccountPublicKey,
58
55
  price,
59
56
  forceMarinade,
@@ -63,7 +60,7 @@ export async function findBestSuperStakeIxs({
63
60
  marketIndex: number;
64
61
  amount: BN;
65
62
  jupiterClient: JupiterClient;
66
- driftClient: VelocityClient;
63
+ velocityClient: VelocityClient;
67
64
  price?: number;
68
65
  userAccountPublicKey?: PublicKey;
69
66
  forceMarinade?: boolean;
@@ -79,7 +76,7 @@ export async function findBestSuperStakeIxs({
79
76
  return findBestMSolSuperStakeIxs({
80
77
  amount,
81
78
  jupiterClient,
82
- driftClient,
79
+ velocityClient,
83
80
  userAccountPublicKey,
84
81
  price,
85
82
  forceMarinade,
@@ -90,7 +87,7 @@ export async function findBestSuperStakeIxs({
90
87
  return findBestJitoSolSuperStakeIxs({
91
88
  amount,
92
89
  jupiterClient,
93
- driftClient,
90
+ velocityClient,
94
91
  userAccountPublicKey,
95
92
  onlyDirectRoutes,
96
93
  jupiterQuote,
@@ -98,10 +95,10 @@ export async function findBestSuperStakeIxs({
98
95
  } else if (marketIndex === 8) {
99
96
  return findBestLstSuperStakeIxs({
100
97
  amount,
101
- lstMint: driftClient.getSpotMarketAccount(8).mint,
98
+ lstMint: velocityClient.getSpotMarketAccount(8).mint,
102
99
  lstMarketIndex: 8,
103
100
  jupiterClient,
104
- driftClient,
101
+ velocityClient,
105
102
  userAccountPublicKey,
106
103
  onlyDirectRoutes,
107
104
  jupiterQuote,
@@ -114,7 +111,7 @@ export async function findBestSuperStakeIxs({
114
111
  export async function findBestMSolSuperStakeIxs({
115
112
  amount,
116
113
  jupiterClient,
117
- driftClient,
114
+ velocityClient,
118
115
  userAccountPublicKey,
119
116
  price,
120
117
  forceMarinade,
@@ -123,7 +120,7 @@ export async function findBestMSolSuperStakeIxs({
123
120
  }: {
124
121
  amount: BN;
125
122
  jupiterClient: JupiterClient;
126
- driftClient: VelocityClient;
123
+ velocityClient: VelocityClient;
127
124
  price?: number;
128
125
  userAccountPublicKey?: PublicKey;
129
126
  forceMarinade?: boolean;
@@ -136,12 +133,12 @@ export async function findBestMSolSuperStakeIxs({
136
133
  price: number;
137
134
  }> {
138
135
  if (!price) {
139
- const marinadeProgram = getMarinadeFinanceProgram(driftClient.provider);
136
+ const marinadeProgram = getMarinadeFinanceProgram(velocityClient.provider);
140
137
  price = await getMarinadeMSolPrice(marinadeProgram);
141
138
  }
142
139
 
143
- const solSpotMarketAccount = driftClient.getSpotMarketAccount(1);
144
- const mSolSpotMarketAccount = driftClient.getSpotMarketAccount(2);
140
+ const solSpotMarketAccount = velocityClient.getSpotMarketAccount(1);
141
+ const mSolSpotMarketAccount = velocityClient.getSpotMarketAccount(2);
145
142
 
146
143
  let jupiterPrice: number;
147
144
  let quote = jupiterQuote;
@@ -164,7 +161,7 @@ export async function findBestMSolSuperStakeIxs({
164
161
  }
165
162
 
166
163
  if (!jupiterPrice || price <= jupiterPrice || forceMarinade) {
167
- const ixs = await driftClient.getStakeForMSOLIx({
164
+ const ixs = await velocityClient.getStakeForMSOLIx({
168
165
  amount,
169
166
  userAccountPublicKey,
170
167
  });
@@ -175,7 +172,7 @@ export async function findBestMSolSuperStakeIxs({
175
172
  price: price,
176
173
  };
177
174
  } else {
178
- const { ixs, lookupTables } = await driftClient.getJupiterSwapIxV6({
175
+ const { ixs, lookupTables } = await velocityClient.getJupiterSwapIxV6({
179
176
  inMarketIndex: 1,
180
177
  outMarketIndex: 2,
181
178
  jupiterClient,
@@ -196,14 +193,14 @@ export async function findBestMSolSuperStakeIxs({
196
193
  export async function findBestJitoSolSuperStakeIxs({
197
194
  amount,
198
195
  jupiterClient,
199
- driftClient,
196
+ velocityClient,
200
197
  userAccountPublicKey,
201
198
  onlyDirectRoutes,
202
199
  jupiterQuote,
203
200
  }: {
204
201
  amount: BN;
205
202
  jupiterClient: JupiterClient;
206
- driftClient: VelocityClient;
203
+ velocityClient: VelocityClient;
207
204
  userAccountPublicKey?: PublicKey;
208
205
  onlyDirectRoutes?: boolean;
209
206
  jupiterQuote?: QuoteResponse;
@@ -216,10 +213,10 @@ export async function findBestJitoSolSuperStakeIxs({
216
213
  return await findBestLstSuperStakeIxs({
217
214
  amount,
218
215
  jupiterClient,
219
- driftClient,
216
+ velocityClient,
220
217
  userAccountPublicKey,
221
218
  onlyDirectRoutes,
222
- lstMint: driftClient.getSpotMarketAccount(6).mint,
219
+ lstMint: velocityClient.getSpotMarketAccount(6).mint,
223
220
  lstMarketIndex: 6,
224
221
  jupiterQuote,
225
222
  });
@@ -233,7 +230,7 @@ export async function findBestJitoSolSuperStakeIxs({
233
230
  export async function findBestLstSuperStakeIxs({
234
231
  amount,
235
232
  jupiterClient,
236
- driftClient,
233
+ velocityClient,
237
234
  userAccountPublicKey,
238
235
  onlyDirectRoutes,
239
236
  lstMarketIndex,
@@ -243,7 +240,7 @@ export async function findBestLstSuperStakeIxs({
243
240
  lstMint: PublicKey;
244
241
  lstMarketIndex: number;
245
242
  jupiterClient: JupiterClient;
246
- driftClient: VelocityClient;
243
+ velocityClient: VelocityClient;
247
244
  userAccountPublicKey?: PublicKey;
248
245
  onlyDirectRoutes?: boolean;
249
246
  jupiterQuote?: QuoteResponse;
@@ -252,7 +249,7 @@ export async function findBestLstSuperStakeIxs({
252
249
  lookupTables: AddressLookupTableAccount[];
253
250
  method: 'jupiter' | 'marinade';
254
251
  }> {
255
- const { ixs, lookupTables } = await driftClient.getJupiterSwapIxV6({
252
+ const { ixs, lookupTables } = await velocityClient.getJupiterSwapIxV6({
256
253
  inMarketIndex: 1,
257
254
  outMarketIndex: lstMarketIndex,
258
255
  jupiterClient,