@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
@@ -30,16 +30,16 @@ export declare function calculatePerpLiabilityValue(baseAssetAmount: BN, price:
30
30
  * @param baseSize
31
31
  * @returns
32
32
  */
33
- export declare function calculateMarginUSDCRequiredForTrade(driftClient: VelocityClient, targetMarketIndex: number, baseSize: BN, userMaxMarginRatio?: number, entryPrice?: BN): BN;
33
+ export declare function calculateMarginUSDCRequiredForTrade(velocityClient: VelocityClient, targetMarketIndex: number, baseSize: BN, userMaxMarginRatio?: number, entryPrice?: BN): BN;
34
34
  /**
35
35
  * Similar to calculatetMarginUSDCRequiredForTrade, but calculates how much of a given collateral is required to cover the margin requirements for a given trade. Basically does the same thing as getMarginUSDCRequiredForTrade but also accounts for asset weight of the selected collateral.
36
36
  *
37
37
  * Returns collateral required in the precision of the target collateral market.
38
38
  */
39
- export declare function calculateCollateralDepositRequiredForTrade(driftClient: VelocityClient, targetMarketIndex: number, baseSize: BN, collateralIndex: number, userMaxMarginRatio?: number, estEntryPrice?: BN): BN;
40
- export declare function calculateCollateralValueOfDeposit(driftClient: VelocityClient, collateralIndex: number, baseSize: BN): BN;
39
+ export declare function calculateCollateralDepositRequiredForTrade(velocityClient: VelocityClient, targetMarketIndex: number, baseSize: BN, collateralIndex: number, userMaxMarginRatio?: number, estEntryPrice?: BN): BN;
40
+ export declare function calculateCollateralValueOfDeposit(velocityClient: VelocityClient, collateralIndex: number, baseSize: BN): BN;
41
41
  export declare function calculateLiquidationPrice(freeCollateral: BN, freeCollateralDelta: BN, oraclePrice: BN): BN;
42
- export declare function calculateUserMaxPerpOrderSize(driftClient: VelocityClient, userAccountKey: PublicKey, userAccount: UserAccount, targetMarketIndex: number, tradeSide: PositionDirection): {
42
+ export declare function calculateUserMaxPerpOrderSize(velocityClient: VelocityClient, userAccountKey: PublicKey, userAccount: UserAccount, targetMarketIndex: number, tradeSide: PositionDirection): {
43
43
  tradeSize: BN;
44
44
  oppositeSideTradeSize: BN;
45
45
  };
@@ -1 +1 @@
1
- {"version":3,"file":"margin.d.ts","sourceRoot":"","sources":["../../../src/math/margin.ts"],"names":[],"mappings":";AAiBA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACN,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAK5C,wBAAgB,mCAAmC,CAClD,IAAI,EAAE,EAAE,EAAE,wBAAwB;AAClC,SAAS,EAAE,EAAE,EACb,eAAe,EAAE,EAAE,EACnB,SAAS,EAAE,EAAE,EACb,SAAS,UAAO,GACd,EAAE,CA4BJ;AAED,wBAAgB,gCAAgC,CAC/C,IAAI,EAAE,EAAE,EAAE,wBAAwB;AAClC,SAAS,EAAE,EAAE,EACb,WAAW,EAAE,EAAE,GACb,EAAE,CAuBJ;AAED,wBAAgB,iCAAiC,CAChD,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,GAC9B,EAAE,CAoBJ;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,EAC/C,iBAAiB,UAAQ,GACvB,EAAE,CAeJ;AAED,wBAAgB,iCAAiC,CAChD,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,EAAE,GACb,EAAE,CAMJ;AAED,wBAAgB,oCAAoC,CACnD,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,EAAE,EACf,iBAAiB,GAAE,OAAc,GAC/B;IAAE,wBAAwB,EAAE,EAAE,CAAC;IAAC,uBAAuB,EAAE,EAAE,CAAA;CAAE,CAkC/D;AAED,wBAAgB,2BAA2B,CAC1C,eAAe,EAAE,EAAE,EACnB,KAAK,EAAE,EAAE,GACP,EAAE,CAEJ;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAClD,WAAW,EAAE,cAAc,EAC3B,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,EAAE,EACZ,kBAAkB,CAAC,EAAE,MAAM,EAC3B,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAqBJ;AAED;;;;GAIG;AACH,wBAAgB,0CAA0C,CACzD,WAAW,EAAE,cAAc,EAC3B,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,EAAE,EACZ,eAAe,EAAE,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,aAAa,CAAC,EAAE,EAAE,GAChB,EAAE,CA+BJ;AAED,wBAAgB,iCAAiC,CAChD,WAAW,EAAE,cAAc,EAC3B,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,EAAE,GACV,EAAE,CAuBJ;AAED,wBAAgB,yBAAyB,CACxC,cAAc,EAAE,EAAE,EAClB,mBAAmB,EAAE,EAAE,EACvB,WAAW,EAAE,EAAE,GACb,EAAE,CAYJ;AAED,wBAAgB,6BAA6B,CAC5C,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,SAAS,EACzB,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,iBAAiB,GAC1B;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,qBAAqB,EAAE,EAAE,CAAA;CAAE,CAmB9C"}
1
+ {"version":3,"file":"margin.d.ts","sourceRoot":"","sources":["../../../src/math/margin.ts"],"names":[],"mappings":";AAiBA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACN,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAK5C,wBAAgB,mCAAmC,CAClD,IAAI,EAAE,EAAE,EAAE,wBAAwB;AAClC,SAAS,EAAE,EAAE,EACb,eAAe,EAAE,EAAE,EACnB,SAAS,EAAE,EAAE,EACb,SAAS,UAAO,GACd,EAAE,CA4BJ;AAED,wBAAgB,gCAAgC,CAC/C,IAAI,EAAE,EAAE,EAAE,wBAAwB;AAClC,SAAS,EAAE,EAAE,EACb,WAAW,EAAE,EAAE,GACb,EAAE,CAuBJ;AAED,wBAAgB,iCAAiC,CAChD,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,GAC9B,EAAE,CAoBJ;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,EAC/C,iBAAiB,UAAQ,GACvB,EAAE,CAeJ;AAED,wBAAgB,iCAAiC,CAChD,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,EAAE,GACb,EAAE,CAMJ;AAED,wBAAgB,oCAAoC,CACnD,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,EAAE,EACf,iBAAiB,GAAE,OAAc,GAC/B;IAAE,wBAAwB,EAAE,EAAE,CAAC;IAAC,uBAAuB,EAAE,EAAE,CAAA;CAAE,CAkC/D;AAED,wBAAgB,2BAA2B,CAC1C,eAAe,EAAE,EAAE,EACnB,KAAK,EAAE,EAAE,GACP,EAAE,CAEJ;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAClD,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,EAAE,EACZ,kBAAkB,CAAC,EAAE,MAAM,EAC3B,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAqBJ;AAED;;;;GAIG;AACH,wBAAgB,0CAA0C,CACzD,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,EAAE,EACZ,eAAe,EAAE,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,aAAa,CAAC,EAAE,EAAE,GAChB,EAAE,CA+BJ;AAED,wBAAgB,iCAAiC,CAChD,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,EAAE,GACV,EAAE,CAuBJ;AAED,wBAAgB,yBAAyB,CACxC,cAAc,EAAE,EAAE,EAClB,mBAAmB,EAAE,EAAE,EACvB,WAAW,EAAE,EAAE,GACb,EAAE,CAYJ;AAED,wBAAgB,6BAA6B,CAC5C,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,SAAS,EACzB,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,iBAAiB,GAC1B;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,qBAAqB,EAAE,EAAE,CAAA;CAAE,CAmB9C"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.calculateUserMaxPerpOrderSize = exports.calculateLiquidationPrice = exports.calculateCollateralValueOfDeposit = exports.calculateCollateralDepositRequiredForTrade = exports.calculateMarginUSDCRequiredForTrade = exports.calculatePerpLiabilityValue = exports.calculateWorstCasePerpLiabilityValue = exports.calculateWorstCaseBaseAssetAmount = exports.calculateBaseAssetValueWithOracle = exports.calculateOraclePriceForPerpMargin = exports.calculateSizeDiscountAssetWeight = exports.calculateSizePremiumLiabilityWeight = void 0;
4
4
  /**
5
- * Margin calculation helpers — TypeScript mirror of `programs/drift/src/math/margin.rs`.
5
+ * Margin calculation helpers — TypeScript mirror of `programs/velocity/src/math/margin.rs`.
6
6
  * Computes initial/maintenance margin requirements, free collateral, and account health.
7
7
  * Used by {@link User} for leverage queries and by keeper bots for liquidation eligibility checks.
8
8
  */
@@ -130,9 +130,9 @@ exports.calculatePerpLiabilityValue = calculatePerpLiabilityValue;
130
130
  * @param baseSize
131
131
  * @returns
132
132
  */
133
- function calculateMarginUSDCRequiredForTrade(driftClient, targetMarketIndex, baseSize, userMaxMarginRatio, entryPrice) {
134
- const targetMarket = driftClient.getPerpMarketAccount(targetMarketIndex);
135
- const price = entryPrice !== null && entryPrice !== void 0 ? entryPrice : driftClient.getOracleDataForPerpMarket(targetMarket.marketIndex).price;
133
+ function calculateMarginUSDCRequiredForTrade(velocityClient, targetMarketIndex, baseSize, userMaxMarginRatio, entryPrice) {
134
+ const targetMarket = velocityClient.getPerpMarketAccount(targetMarketIndex);
135
+ const price = entryPrice !== null && entryPrice !== void 0 ? entryPrice : velocityClient.getOracleDataForPerpMarket(targetMarket.marketIndex).price;
136
136
  const perpLiabilityValue = calculatePerpLiabilityValue(baseSize, price);
137
137
  const marginRequired = new anchor_1.BN((0, market_1.calculateMarketMarginRatio)(targetMarket, baseSize.abs(), 'Initial', userMaxMarginRatio))
138
138
  .mul(perpLiabilityValue)
@@ -145,13 +145,13 @@ exports.calculateMarginUSDCRequiredForTrade = calculateMarginUSDCRequiredForTrad
145
145
  *
146
146
  * Returns collateral required in the precision of the target collateral market.
147
147
  */
148
- function calculateCollateralDepositRequiredForTrade(driftClient, targetMarketIndex, baseSize, collateralIndex, userMaxMarginRatio, estEntryPrice) {
149
- const marginRequiredUsdc = calculateMarginUSDCRequiredForTrade(driftClient, targetMarketIndex, baseSize, userMaxMarginRatio, estEntryPrice);
150
- const collateralMarket = driftClient.getSpotMarketAccount(collateralIndex);
151
- const collateralOracleData = driftClient.getOracleDataForSpotMarket(collateralIndex);
148
+ function calculateCollateralDepositRequiredForTrade(velocityClient, targetMarketIndex, baseSize, collateralIndex, userMaxMarginRatio, estEntryPrice) {
149
+ const marginRequiredUsdc = calculateMarginUSDCRequiredForTrade(velocityClient, targetMarketIndex, baseSize, userMaxMarginRatio, estEntryPrice);
150
+ const collateralMarket = velocityClient.getSpotMarketAccount(collateralIndex);
151
+ const collateralOracleData = velocityClient.getOracleDataForSpotMarket(collateralIndex);
152
152
  const scaledAssetWeight = (0, spotBalance_1.calculateScaledInitialAssetWeight)(collateralMarket, collateralOracleData.price);
153
153
  // Base amount required to deposit = (marginRequiredUsdc / priceOfAsset) / assetWeight .. (E.g. $100 required / $10000 price / 0.5 weight)
154
- const baseAmountRequired = driftClient
154
+ const baseAmountRequired = velocityClient
155
155
  .convertToSpotPrecision(collateralIndex, marginRequiredUsdc)
156
156
  .mul(numericConstants_1.PRICE_PRECISION) // adjust for division by oracle price
157
157
  .mul(numericConstants_1.SPOT_MARKET_WEIGHT_PRECISION) // adjust for division by scaled asset weight
@@ -162,9 +162,9 @@ function calculateCollateralDepositRequiredForTrade(driftClient, targetMarketInd
162
162
  return baseAmountRequired;
163
163
  }
164
164
  exports.calculateCollateralDepositRequiredForTrade = calculateCollateralDepositRequiredForTrade;
165
- function calculateCollateralValueOfDeposit(driftClient, collateralIndex, baseSize) {
166
- const collateralMarket = driftClient.getSpotMarketAccount(collateralIndex);
167
- const collateralOracleData = driftClient.getOracleDataForSpotMarket(collateralIndex);
165
+ function calculateCollateralValueOfDeposit(velocityClient, collateralIndex, baseSize) {
166
+ const collateralMarket = velocityClient.getSpotMarketAccount(collateralIndex);
167
+ const collateralOracleData = velocityClient.getOracleDataForSpotMarket(collateralIndex);
168
168
  const scaledAssetWeight = (0, spotBalance_1.calculateScaledInitialAssetWeight)(collateralMarket, collateralOracleData.price);
169
169
  // CollateralBaseValue = oracle price * collateral base amount (and shift to QUOTE_PRECISION)
170
170
  const collateralBaseValue = collateralOracleData.price
@@ -189,10 +189,10 @@ function calculateLiquidationPrice(freeCollateral, freeCollateralDelta, oraclePr
189
189
  return liqPrice;
190
190
  }
191
191
  exports.calculateLiquidationPrice = calculateLiquidationPrice;
192
- function calculateUserMaxPerpOrderSize(driftClient, userAccountKey, userAccount, targetMarketIndex, tradeSide) {
193
- const userAccountSubscriber = new oneShotUserAccountSubscriber_1.OneShotUserAccountSubscriber(driftClient.program, userAccountKey, userAccount);
192
+ function calculateUserMaxPerpOrderSize(velocityClient, userAccountKey, userAccount, targetMarketIndex, tradeSide) {
193
+ const userAccountSubscriber = new oneShotUserAccountSubscriber_1.OneShotUserAccountSubscriber(velocityClient.program, userAccountKey, userAccount);
194
194
  const user = new user_1.User({
195
- driftClient,
195
+ velocityClient,
196
196
  userAccountPublicKey: userAccountKey,
197
197
  accountSubscription: {
198
198
  type: 'custom',
@@ -1 +1 @@
1
- {"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/math/market.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EAIjB,MAAM,UAAU,CAAC;AAalB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAYtE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,GAClC,EAAE,CAOJ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAUJ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAUJ;AAED,wBAAgB,4BAA4B,CAC3C,eAAe,EAAE,EAAE,EACnB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,iBAAiB,GACvB,iBAAiB,CAgBnB;AAED,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,GAClC,EAAE,CAGJ;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,EAAE,EACT,eAAe,EAAE,eAAe,GAC9B,EAAE,CAEJ;AAED,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,EAAE,EACR,cAAc,EAAE,cAAc,EAC9B,iBAAiB,SAAI,GACnB,MAAM,CAgCR;AAED,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,iBAAiB,EAClC,aAAa,EAAE,EAAE,EACjB,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,EAAE,CA+BJ;AAED,wBAAgB,2BAA2B,CAC1C,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,GAC3B,EAAE,CAMJ;AAED,wBAAgB,oCAAoC,CACnD,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,GAC3B,EAAE,CAcJ;AAED,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,EAAE,CAaJ;AAED,wBAAgB,4BAA4B,CAC3C,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,EAC/C,oBAAoB,UAAO,GACzB,EAAE,CAoBJ;AAED,wBAAgB,+BAA+B,CAC9C,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,GACV;IAAE,IAAI,EAAE,EAAE,CAAC;IAAC,IAAI,EAAE,EAAE,CAAA;CAAE,CAoCxB;AAED,wBAAgB,oCAAoC,CACnD,MAAM,EAAE,iBAAiB,GACvB,MAAM,CAER;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,EAAE,EACf,GAAG,EAAE,EAAE,EACP,cAAc,EAAE,OAAO,GACrB,EAAE,CA2BJ"}
1
+ {"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/math/market.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EAIjB,MAAM,UAAU,CAAC;AAalB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAYtE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,GAClC,EAAE,CAWJ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAYJ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAYJ;AAED,wBAAgB,4BAA4B,CAC3C,eAAe,EAAE,EAAE,EACnB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,iBAAiB,GACvB,iBAAiB,CAgBnB;AAED,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,GAClC,EAAE,CAGJ;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,EAAE,EACT,eAAe,EAAE,eAAe,GAC9B,EAAE,CAEJ;AAED,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,EAAE,EACR,cAAc,EAAE,cAAc,EAC9B,iBAAiB,SAAI,GACnB,MAAM,CAgCR;AAED,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,iBAAiB,EAClC,aAAa,EAAE,EAAE,EACjB,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,EAAE,CA+BJ;AAED,wBAAgB,2BAA2B,CAC1C,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,GAC3B,EAAE,CAMJ;AAED,wBAAgB,oCAAoC,CACnD,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,GAC3B,EAAE,CAcJ;AAED,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,EAAE,CAaJ;AAED,wBAAgB,4BAA4B,CAC3C,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,EAC/C,oBAAoB,UAAO,GACzB,EAAE,CAoBJ;AAED,wBAAgB,+BAA+B,CAC9C,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,GACV;IAAE,IAAI,EAAE,EAAE,CAAC;IAAC,IAAI,EAAE,EAAE,CAAA;CAAE,CAoCxB;AAED,wBAAgB,oCAAoC,CACnD,MAAM,EAAE,iBAAiB,GACvB,MAAM,CAER;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,EAAE,EACf,GAAG,EAAE,EAAE,EACP,cAAc,EAAE,OAAO,GACrB,EAAE,CA2BJ"}
@@ -15,7 +15,7 @@ const assert_1 = require("../assert/assert");
15
15
  * @return markPrice : Precision PRICE_PRECISION
16
16
  */
17
17
  function calculateReservePrice(market, mmOraclePriceData) {
18
- const newAmm = (0, amm_1.calculateUpdatedAMM)(market.amm, mmOraclePriceData);
18
+ const newAmm = (0, amm_1.calculateUpdatedAMM)(market.amm, market.totalExchangeFee, mmOraclePriceData);
19
19
  return (0, amm_1.calculatePrice)(newAmm.baseAssetReserve, newAmm.quoteAssetReserve, newAmm.pegMultiplier);
20
20
  }
21
21
  exports.calculateReservePrice = calculateReservePrice;
@@ -26,7 +26,7 @@ exports.calculateReservePrice = calculateReservePrice;
26
26
  * @return bidPrice : Precision PRICE_PRECISION
27
27
  */
28
28
  function calculateBidPrice(market, mmOraclePriceData, latestSlot) {
29
- const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, types_1.PositionDirection.SHORT, mmOraclePriceData, latestSlot);
29
+ const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, market.marketStats, market.totalExchangeFee, types_1.PositionDirection.SHORT, mmOraclePriceData, latestSlot);
30
30
  return (0, amm_1.calculatePrice)(baseAssetReserve, quoteAssetReserve, newPeg);
31
31
  }
32
32
  exports.calculateBidPrice = calculateBidPrice;
@@ -37,7 +37,7 @@ exports.calculateBidPrice = calculateBidPrice;
37
37
  * @return askPrice : Precision PRICE_PRECISION
38
38
  */
39
39
  function calculateAskPrice(market, mmOraclePriceData, latestSlot) {
40
- const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, types_1.PositionDirection.LONG, mmOraclePriceData, latestSlot);
40
+ const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, market.marketStats, market.totalExchangeFee, types_1.PositionDirection.LONG, mmOraclePriceData, latestSlot);
41
41
  return (0, amm_1.calculatePrice)(baseAssetReserve, quoteAssetReserve, newPeg);
42
42
  }
43
43
  exports.calculateAskPrice = calculateAskPrice;
@@ -122,7 +122,7 @@ function calculateNetUserPnl(perpMarket, oraclePriceData) {
122
122
  .mul(oraclePriceData.price)
123
123
  .div(numericConstants_1.BASE_PRECISION)
124
124
  .div(numericConstants_1.PRICE_TO_QUOTE_PRECISION);
125
- const netUserCostBasis = perpMarket.amm.quoteAssetAmount.add(perpMarket.amm.netUnsettledFundingPnl);
125
+ const netUserCostBasis = perpMarket.quoteAssetAmount.add(perpMarket.netUnsettledFundingPnl);
126
126
  const netUserPnl = netUserPositionValue.add(netUserCostBasis);
127
127
  return netUserPnl;
128
128
  }
@@ -139,7 +139,7 @@ function calculateNetUserPnlImbalance(perpMarket, spotMarket, oraclePriceData, a
139
139
  }
140
140
  exports.calculateNetUserPnlImbalance = calculateNetUserPnlImbalance;
141
141
  function calculateAvailablePerpLiquidity(market, mmOraclePriceData, dlob, slot) {
142
- let [bids, asks] = (0, amm_1.calculateMarketOpenBidAsk)(market.amm.baseAssetReserve, market.amm.minBaseAssetReserve, market.amm.maxBaseAssetReserve, market.amm.orderStepSize);
142
+ let [bids, asks] = (0, amm_1.calculateMarketOpenBidAsk)(market.amm.baseAssetReserve, market.amm.minBaseAssetReserve, market.amm.maxBaseAssetReserve, market.orderStepSize);
143
143
  asks = asks.abs();
144
144
  for (const bid of dlob.getRestingLimitBids(market.marketIndex, slot, types_1.MarketType.PERP, mmOraclePriceData)) {
145
145
  bids = bids.add(bid.order.baseAssetAmount.sub(bid.order.baseAssetAmountFilled));
@@ -172,8 +172,8 @@ function getTriggerPrice(market, oraclePrice, now, useMedianPrice) {
172
172
  }
173
173
  const lastFillPrice = market.lastFillPrice;
174
174
  // Calculate 5-minute basis
175
- const markPrice5minTwap = market.amm.lastMarkPriceTwap5Min;
176
- const lastOraclePriceTwap5min = market.amm.historicalOracleData.lastOraclePriceTwap5Min;
175
+ const markPrice5minTwap = market.marketStats.lastMarkPriceTwap5Min;
176
+ const lastOraclePriceTwap5min = market.marketStats.historicalOracleData.lastOraclePriceTwap5Min;
177
177
  const basis5min = markPrice5minTwap.sub(lastOraclePriceTwap5min);
178
178
  const oraclePlusBasis5min = oraclePrice.add(basis5min);
179
179
  // Calculate funding basis
@@ -193,19 +193,19 @@ exports.getTriggerPrice = getTriggerPrice;
193
193
  * Implements the same logic as the Rust get_last_funding_basis function
194
194
  */
195
195
  function getLastFundingBasis(market, oraclePrice, now) {
196
- if (market.amm.lastFundingOracleTwap.gt(numericConstants_1.ZERO)) {
197
- const lastFundingRate = market.amm.lastFundingRate
196
+ if (market.lastFundingOracleTwap.gt(numericConstants_1.ZERO)) {
197
+ const lastFundingRate = market.lastFundingRate
198
198
  .mul(numericConstants_1.PRICE_PRECISION)
199
- .div(market.amm.lastFundingOracleTwap)
199
+ .div(market.lastFundingOracleTwap)
200
200
  .muln(24);
201
201
  const lastFundingRatePreAdj = lastFundingRate.sub(numericConstants_1.FUNDING_RATE_PRECISION.div(new anchor_1.BN(3333)) // FUNDING_RATE_OFFSET_PERCENTAGE
202
202
  );
203
- const timeLeftUntilFundingUpdate = anchor_1.BN.min(anchor_1.BN.max(now.sub(market.amm.lastFundingRateTs), numericConstants_1.ZERO), market.amm.fundingPeriod);
203
+ const timeLeftUntilFundingUpdate = anchor_1.BN.min(anchor_1.BN.max(now.sub(market.lastFundingRateTs), numericConstants_1.ZERO), market.marketStats.fundingPeriod);
204
204
  const lastFundingBasis = oraclePrice
205
205
  .mul(lastFundingRatePreAdj)
206
206
  .div(numericConstants_1.PERCENTAGE_PRECISION)
207
- .mul(market.amm.fundingPeriod.sub(timeLeftUntilFundingUpdate))
208
- .div(market.amm.fundingPeriod)
207
+ .mul(market.marketStats.fundingPeriod.sub(timeLeftUntilFundingUpdate))
208
+ .div(market.marketStats.fundingPeriod)
209
209
  .div(new anchor_1.BN(1000)); // FUNDING_RATE_BUFFER
210
210
  return lastFundingBasis;
211
211
  }
@@ -1,17 +1,17 @@
1
1
  /// <reference types="bn.js" />
2
2
  /// <reference types="node" />
3
3
  /// <reference types="node" />
4
- import { AMM, HistoricalOracleData, OracleGuardRails, OracleSource, OracleValidity, PerpMarketAccount } from '../types';
4
+ import { HistoricalOracleData, MarketStats, OracleGuardRails, OracleSource, OracleValidity, PerpMarketAccount } from '../types';
5
5
  import { OraclePriceData } from '../oracles/types';
6
6
  import { BN } from '../isomorphic/anchor';
7
7
  export declare function oraclePriceBands(market: PerpMarketAccount, oraclePriceData: Pick<OraclePriceData, 'price'>): [BN, BN];
8
8
  export declare function getMaxConfidenceIntervalMultiplier(market: PerpMarketAccount): BN;
9
9
  export declare function getOracleValidity(market: PerpMarketAccount, oraclePriceData: OraclePriceData, oracleGuardRails: OracleGuardRails, slot: BN, oracleStalenessBuffer?: BN): OracleValidity;
10
10
  export declare function isOracleValid(market: PerpMarketAccount, oraclePriceData: OraclePriceData, oracleGuardRails: OracleGuardRails, slot: number): boolean;
11
- export declare function isOracleTooDivergent(amm: AMM, oraclePriceData: OraclePriceData, oracleGuardRails: OracleGuardRails): boolean;
11
+ export declare function isOracleTooDivergent(marketStats: MarketStats, oraclePriceData: OraclePriceData, oracleGuardRails: OracleGuardRails): boolean;
12
12
  export declare function calculateLiveOracleTwap(histOracleData: HistoricalOracleData, oraclePriceData: OraclePriceData, now: BN, period: BN): BN;
13
- export declare function calculateLiveOracleStd(amm: AMM, oraclePriceData: OraclePriceData, now: BN): BN;
14
- export declare function getNewOracleConfPct(amm: AMM, oraclePriceData: OraclePriceData, reservePrice: BN, now: BN): BN;
13
+ export declare function calculateLiveOracleStd(marketStats: MarketStats, oraclePriceData: OraclePriceData, now: BN): BN;
14
+ export declare function getNewOracleConfPct(marketStats: MarketStats, oraclePriceData: OraclePriceData, reservePrice: BN, now: BN): BN;
15
15
  export declare function trimVaaSignatures(vaa: Buffer, n?: number): Buffer;
16
16
  export declare function getMultipleBetweenOracleSources(firstOracleSource: OracleSource, secondOracleSource: OracleSource): {
17
17
  numerator: BN;
@@ -1 +1 @@
1
- {"version":3,"file":"oracles.d.ts","sourceRoot":"","sources":["../../../src/math/oracles.ts"],"names":[],"mappings":";;;AAAA,OAAO,EACN,GAAG,EACH,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,iBAAiB,EAGjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAWnD,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE1C,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,CAAC,EAAE,EAAE,EAAE,CAAC,CAUV;AAED,wBAAgB,kCAAkC,CACjD,MAAM,EAAE,iBAAiB,GACvB,EAAE,CAcJ;AAED,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,EAAE,EACR,qBAAqB,KAAO,GAC1B,cAAc,CAwEhB;AAED,wBAAgB,aAAa,CAC5B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,MAAM,GACV,OAAO,CAmCT;AAED,wBAAgB,oBAAoB,CACnC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,GAChC,OAAO,CAWT;AAED,wBAAgB,uBAAuB,CACtC,cAAc,EAAE,oBAAoB,EACpC,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,EAAE,EACP,MAAM,EAAE,EAAE,GACR,EAAE,CA6BJ;AAED,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,EAAE,GACL,EAAE,CA+BJ;AAED,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,EAAE,EAChB,GAAG,EAAE,EAAE,GACL,EAAE,CAwBJ;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,MAAM,CAe5D;AAED,wBAAgB,+BAA+B,CAC9C,iBAAiB,EAAE,YAAY,EAC/B,kBAAkB,EAAE,YAAY,GAC9B;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,WAAW,EAAE,EAAE,CAAA;CAAE,CA+CpC"}
1
+ {"version":3,"file":"oracles.d.ts","sourceRoot":"","sources":["../../../src/math/oracles.ts"],"names":[],"mappings":";;;AAAA,OAAO,EACN,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,iBAAiB,EAGjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAWnD,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE1C,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,CAAC,EAAE,EAAE,EAAE,CAAC,CAUV;AAED,wBAAgB,kCAAkC,CACjD,MAAM,EAAE,iBAAiB,GACvB,EAAE,CAcJ;AAED,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,EAAE,EACR,qBAAqB,KAAO,GAC1B,cAAc,CAwEhB;AAED,wBAAgB,aAAa,CAC5B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,MAAM,GACV,OAAO,CAmCT;AAED,wBAAgB,oBAAoB,CACnC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,GAChC,OAAO,CAWT;AAED,wBAAgB,uBAAuB,CACtC,cAAc,EAAE,oBAAoB,EACpC,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,EAAE,EACP,MAAM,EAAE,EAAE,GACR,EAAE,CA6BJ;AAED,wBAAgB,sBAAsB,CACrC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,EAAE,GACL,EAAE,CAkCJ;AAED,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,EAAE,EAChB,GAAG,EAAE,EAAE,GACL,EAAE,CAwBJ;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,MAAM,CAe5D;AAED,wBAAgB,+BAA+B,CAC9C,iBAAiB,EAAE,YAAY,EAC/B,kBAAkB,EAAE,YAAY,GAC9B;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,WAAW,EAAE,EAAE,CAAA;CAAE,CA+CpC"}
@@ -36,8 +36,8 @@ function getMaxConfidenceIntervalMultiplier(market) {
36
36
  exports.getMaxConfidenceIntervalMultiplier = getMaxConfidenceIntervalMultiplier;
37
37
  function getOracleValidity(market, oraclePriceData, oracleGuardRails, slot, oracleStalenessBuffer = numericConstants_1.FIVE) {
38
38
  const isNonPositive = oraclePriceData.price.lte(numericConstants_1.ZERO);
39
- const isTooVolatile = anchor_1.BN.max(oraclePriceData.price, market.amm.historicalOracleData.lastOraclePriceTwap)
40
- .div(anchor_1.BN.max(numericConstants_1.ONE, anchor_1.BN.min(oraclePriceData.price, market.amm.historicalOracleData.lastOraclePriceTwap)))
39
+ const isTooVolatile = anchor_1.BN.max(oraclePriceData.price, market.marketStats.historicalOracleData.lastOraclePriceTwap)
40
+ .div(anchor_1.BN.max(numericConstants_1.ONE, anchor_1.BN.min(oraclePriceData.price, market.marketStats.historicalOracleData.lastOraclePriceTwap)))
41
41
  .gt(oracleGuardRails.validity.tooVolatileRatio);
42
42
  const confPctOfPrice = oraclePriceData.confidence
43
43
  .mul(numericConstants_1.BID_ASK_SPREAD_PRECISION)
@@ -45,18 +45,18 @@ function getOracleValidity(market, oraclePriceData, oracleGuardRails, slot, orac
45
45
  const isConfTooLarge = confPctOfPrice.gt(oracleGuardRails.validity.confidenceIntervalMaxSize.mul(getMaxConfidenceIntervalMultiplier(market)));
46
46
  const oracleDelay = slot.sub(oraclePriceData.slot).sub(oracleStalenessBuffer);
47
47
  let isStaleForAmmImmediate = true;
48
- if (market.amm.oracleSlotDelayOverride != 0) {
49
- isStaleForAmmImmediate = oracleDelay.gt(anchor_1.BN.max(new anchor_1.BN(market.amm.oracleSlotDelayOverride), numericConstants_1.ZERO));
48
+ if (market.oracleSlotDelayOverride != 0) {
49
+ isStaleForAmmImmediate = oracleDelay.gt(anchor_1.BN.max(new anchor_1.BN(market.oracleSlotDelayOverride), numericConstants_1.ZERO));
50
50
  }
51
51
  let isStaleForAmmLowRisk = false;
52
- if (market.amm.oracleLowRiskSlotDelayOverride != 0) {
53
- isStaleForAmmLowRisk = oracleDelay.gt(anchor_1.BN.max(new anchor_1.BN(market.amm.oracleLowRiskSlotDelayOverride), numericConstants_1.ZERO));
52
+ if (market.oracleLowRiskSlotDelayOverride != 0) {
53
+ isStaleForAmmLowRisk = oracleDelay.gt(anchor_1.BN.max(new anchor_1.BN(market.oracleLowRiskSlotDelayOverride), numericConstants_1.ZERO));
54
54
  }
55
55
  else {
56
56
  isStaleForAmmLowRisk = oracleDelay.gt(oracleGuardRails.validity.slotsBeforeStaleForAmm);
57
57
  }
58
58
  let isStaleForMargin = oracleDelay.gt(new anchor_1.BN(oracleGuardRails.validity.slotsBeforeStaleForMargin));
59
- if ((0, types_1.isVariant)(market.amm.oracleSource, 'pythLazerStableCoin')) {
59
+ if ((0, types_1.isVariant)(market.oracleSource, 'pythLazerStableCoin')) {
60
60
  isStaleForMargin = oracleDelay.gt(new anchor_1.BN(oracleGuardRails.validity.slotsBeforeStaleForMargin).muln(3));
61
61
  }
62
62
  if (isNonPositive) {
@@ -87,12 +87,12 @@ function getOracleValidity(market, oraclePriceData, oracleGuardRails, slot, orac
87
87
  exports.getOracleValidity = getOracleValidity;
88
88
  function isOracleValid(market, oraclePriceData, oracleGuardRails, slot) {
89
89
  // checks if oracle is valid for an AMM only fill
90
- const amm = market.amm;
90
+ const stats = market.marketStats;
91
91
  const isOraclePriceNonPositive = oraclePriceData.price.lte(numericConstants_1.ZERO);
92
92
  const isOraclePriceTooVolatile = oraclePriceData.price
93
- .div(anchor_1.BN.max(numericConstants_1.ONE, amm.historicalOracleData.lastOraclePriceTwap))
93
+ .div(anchor_1.BN.max(numericConstants_1.ONE, stats.historicalOracleData.lastOraclePriceTwap))
94
94
  .gt(oracleGuardRails.validity.tooVolatileRatio) ||
95
- amm.historicalOracleData.lastOraclePriceTwap
95
+ stats.historicalOracleData.lastOraclePriceTwap
96
96
  .div(anchor_1.BN.max(numericConstants_1.ONE, oraclePriceData.price))
97
97
  .gt(oracleGuardRails.validity.tooVolatileRatio);
98
98
  const maxConfidenceIntervalMultiplier = getMaxConfidenceIntervalMultiplier(market);
@@ -110,11 +110,11 @@ function isOracleValid(market, oraclePriceData, oracleGuardRails, slot) {
110
110
  isConfidenceTooLarge);
111
111
  }
112
112
  exports.isOracleValid = isOracleValid;
113
- function isOracleTooDivergent(amm, oraclePriceData, oracleGuardRails) {
113
+ function isOracleTooDivergent(marketStats, oraclePriceData, oracleGuardRails) {
114
114
  const oracleSpreadPct = oraclePriceData.price
115
- .sub(amm.historicalOracleData.lastOraclePriceTwap5Min)
115
+ .sub(marketStats.historicalOracleData.lastOraclePriceTwap5Min)
116
116
  .mul(numericConstants_1.PERCENTAGE_PRECISION)
117
- .div(amm.historicalOracleData.lastOraclePriceTwap5Min);
117
+ .div(marketStats.historicalOracleData.lastOraclePriceTwap5Min);
118
118
  const maxDivergence = anchor_1.BN.max(oracleGuardRails.priceDivergence.oracleTwap5MinPercentDivergence, numericConstants_1.PERCENTAGE_PRECISION.div(new anchor_1.BN(2)));
119
119
  const tooDivergent = oracleSpreadPct.abs().gte(maxDivergence);
120
120
  return tooDivergent;
@@ -141,23 +141,23 @@ function calculateLiveOracleTwap(histOracleData, oraclePriceData, now, period) {
141
141
  return newOracleTwap;
142
142
  }
143
143
  exports.calculateLiveOracleTwap = calculateLiveOracleTwap;
144
- function calculateLiveOracleStd(amm, oraclePriceData, now) {
145
- const sinceLastUpdate = anchor_1.BN.max(numericConstants_1.ONE, now.sub(amm.historicalOracleData.lastOraclePriceTwapTs));
146
- const sinceStart = anchor_1.BN.max(numericConstants_1.ZERO, amm.fundingPeriod.sub(sinceLastUpdate));
147
- const liveOracleTwap = calculateLiveOracleTwap(amm.historicalOracleData, oraclePriceData, now, amm.fundingPeriod);
148
- const liveOracleTwap5MIN = calculateLiveOracleTwap(amm.historicalOracleData, oraclePriceData, now, numericConstants_1.FIVE_MINUTE);
144
+ function calculateLiveOracleStd(marketStats, oraclePriceData, now) {
145
+ const sinceLastUpdate = anchor_1.BN.max(numericConstants_1.ONE, now.sub(marketStats.historicalOracleData.lastOraclePriceTwapTs));
146
+ const sinceStart = anchor_1.BN.max(numericConstants_1.ZERO, marketStats.fundingPeriod.sub(sinceLastUpdate));
147
+ const liveOracleTwap = calculateLiveOracleTwap(marketStats.historicalOracleData, oraclePriceData, now, marketStats.fundingPeriod);
148
+ const liveOracleTwap5MIN = calculateLiveOracleTwap(marketStats.historicalOracleData, oraclePriceData, now, numericConstants_1.FIVE_MINUTE);
149
149
  const priceDeltaVsTwap = anchor_1.BN.max(oraclePriceData.price.sub(liveOracleTwap).abs(), oraclePriceData.price.sub(liveOracleTwap5MIN).abs());
150
- const oracleStd = priceDeltaVsTwap.add(amm.oracleStd.mul(sinceStart).div(sinceStart.add(sinceLastUpdate)));
150
+ const oracleStd = priceDeltaVsTwap.add(marketStats.oracleStd.mul(sinceStart).div(sinceStart.add(sinceLastUpdate)));
151
151
  return oracleStd;
152
152
  }
153
153
  exports.calculateLiveOracleStd = calculateLiveOracleStd;
154
- function getNewOracleConfPct(amm, oraclePriceData, reservePrice, now) {
154
+ function getNewOracleConfPct(marketStats, oraclePriceData, reservePrice, now) {
155
155
  const confInterval = oraclePriceData.confidence || numericConstants_1.ZERO;
156
- const sinceLastUpdate = anchor_1.BN.max(numericConstants_1.ZERO, now.sub(amm.historicalOracleData.lastOraclePriceTwapTs));
157
- let lowerBoundConfPct = amm.lastOracleConfPct;
156
+ const sinceLastUpdate = anchor_1.BN.max(numericConstants_1.ZERO, now.sub(marketStats.historicalOracleData.lastOraclePriceTwapTs));
157
+ let lowerBoundConfPct = marketStats.lastOracleConfPct;
158
158
  if (sinceLastUpdate.gt(numericConstants_1.ZERO)) {
159
159
  const lowerBoundConfDivisor = anchor_1.BN.max(new anchor_1.BN(21).sub(sinceLastUpdate), new anchor_1.BN(5));
160
- lowerBoundConfPct = amm.lastOracleConfPct.sub(amm.lastOracleConfPct.div(lowerBoundConfDivisor));
160
+ lowerBoundConfPct = marketStats.lastOracleConfPct.sub(marketStats.lastOracleConfPct.div(lowerBoundConfDivisor));
161
161
  }
162
162
  const confIntervalPct = confInterval
163
163
  .mul(numericConstants_1.BID_ASK_SPREAD_PRECISION)
@@ -1,6 +1,6 @@
1
1
  /// <reference types="bn.js" />
2
2
  import { User } from '../user';
3
- import { PerpMarketAccount, AMM, Order, PositionDirection, MarketTypeStr, StateAccount } from '../types';
3
+ import { PerpMarketAccount, AMM, MarketStats, Order, PositionDirection, MarketTypeStr, StateAccount } from '../types';
4
4
  import { BN } from '../isomorphic/anchor';
5
5
  import { MMOraclePriceData, OraclePriceData } from '../oracles/types';
6
6
  export declare function isOrderRiskIncreasing(user: User, order: Order): boolean;
@@ -14,7 +14,7 @@ export declare function hasAuctionPrice(order: Order, slot: number): boolean;
14
14
  export declare function isFillableByVAMM(order: Order, market: PerpMarketAccount, mmOraclePriceData: MMOraclePriceData, slot: number, ts: number, state: StateAccount): boolean;
15
15
  export declare function isLowRiskForAmm(order: Order, mmOraclePriceData: MMOraclePriceData, isLiquidation?: boolean): boolean;
16
16
  export declare function calculateBaseAssetAmountForAmmToFulfill(order: Order, market: PerpMarketAccount, mmOraclePriceData: MMOraclePriceData, slot: number): BN;
17
- export declare function calculateBaseAssetAmountToFillUpToLimitPrice(order: Order, amm: AMM, limitPrice: BN, mmOraclePriceData: MMOraclePriceData): BN;
17
+ export declare function calculateBaseAssetAmountToFillUpToLimitPrice(order: Order, amm: AMM, marketStats: MarketStats, orderStepSize: BN, orderTickSize: BN, limitPrice: BN, mmOraclePriceData: MMOraclePriceData): BN;
18
18
  export declare function isOrderExpired(order: Order, ts: number, enforceBuffer?: boolean, bufferSeconds?: number): boolean;
19
19
  export declare function isMarketOrder(order: Order): boolean;
20
20
  export declare function isLimitOrder(order: Order): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/math/orders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/math/orders.ts"],"names":[],"mappings":"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"}
@@ -101,8 +101,8 @@ function getLimitPrice(order, oraclePriceData, slot, fallbackPrice) {
101
101
  if (hasAuctionPrice(order, slot)) {
102
102
  return (0, auction_1.getAuctionPrice)(order, slot, oraclePriceData.price);
103
103
  }
104
- else if (order.oraclePriceOffset !== 0) {
105
- return anchor_1.BN.max(oraclePriceData.price.add(new anchor_1.BN(order.oraclePriceOffset)), numericConstants_1.ONE);
104
+ else if (!order.oraclePriceOffset.eq(numericConstants_1.ZERO)) {
105
+ return anchor_1.BN.max(oraclePriceData.price.add(order.oraclePriceOffset), numericConstants_1.ONE);
106
106
  }
107
107
  else if (order.price.eq(numericConstants_1.ZERO)) {
108
108
  return fallbackPrice;
@@ -114,7 +114,7 @@ function getLimitPrice(order, oraclePriceData, slot, fallbackPrice) {
114
114
  exports.getLimitPrice = getLimitPrice;
115
115
  function hasLimitPrice(order, slot) {
116
116
  return (order.price.gt(numericConstants_1.ZERO) ||
117
- order.oraclePriceOffset != 0 ||
117
+ !order.oraclePriceOffset.eq(numericConstants_1.ZERO) ||
118
118
  !(0, auction_1.isAuctionComplete)(order, slot));
119
119
  }
120
120
  exports.hasLimitPrice = hasLimitPrice;
@@ -145,23 +145,23 @@ function calculateBaseAssetAmountForAmmToFulfill(order, market, mmOraclePriceDat
145
145
  }
146
146
  const limitPrice = getLimitPrice(order, mmOraclePriceData, slot);
147
147
  let baseAssetAmount;
148
- const updatedAMM = (0, amm_1.calculateUpdatedAMM)(market.amm, mmOraclePriceData);
148
+ const updatedAMM = (0, amm_1.calculateUpdatedAMM)(market.amm, market.totalExchangeFee, mmOraclePriceData);
149
149
  if (limitPrice !== undefined) {
150
- baseAssetAmount = calculateBaseAssetAmountToFillUpToLimitPrice(order, updatedAMM, limitPrice, mmOraclePriceData);
150
+ baseAssetAmount = calculateBaseAssetAmountToFillUpToLimitPrice(order, updatedAMM, market.marketStats, market.orderStepSize, market.orderTickSize, limitPrice, mmOraclePriceData);
151
151
  }
152
152
  else {
153
153
  baseAssetAmount = order.baseAssetAmount.sub(order.baseAssetAmountFilled);
154
154
  }
155
- const maxBaseAssetAmount = (0, amm_1.calculateMaxBaseAssetAmountFillable)(updatedAMM, order.direction);
155
+ const maxBaseAssetAmount = (0, amm_1.calculateMaxBaseAssetAmountFillable)(updatedAMM, market.orderStepSize, order.direction);
156
156
  return anchor_1.BN.min(maxBaseAssetAmount, baseAssetAmount);
157
157
  }
158
158
  exports.calculateBaseAssetAmountForAmmToFulfill = calculateBaseAssetAmountForAmmToFulfill;
159
- function calculateBaseAssetAmountToFillUpToLimitPrice(order, amm, limitPrice, mmOraclePriceData) {
159
+ function calculateBaseAssetAmountToFillUpToLimitPrice(order, amm, marketStats, orderStepSize, orderTickSize, limitPrice, mmOraclePriceData) {
160
160
  const adjustedLimitPrice = (0, types_1.isVariant)(order.direction, 'long')
161
- ? limitPrice.sub(amm.orderTickSize)
162
- : limitPrice.add(amm.orderTickSize);
163
- const [maxAmountToTrade, direction] = (0, amm_1.calculateMaxBaseAssetAmountToTrade)(amm, adjustedLimitPrice, order.direction, mmOraclePriceData);
164
- const baseAssetAmount = standardizeBaseAssetAmount(maxAmountToTrade, amm.orderStepSize);
161
+ ? limitPrice.sub(orderTickSize)
162
+ : limitPrice.add(orderTickSize);
163
+ const [maxAmountToTrade, direction] = (0, amm_1.calculateMaxBaseAssetAmountToTrade)(amm, marketStats, adjustedLimitPrice, order.direction, mmOraclePriceData);
164
+ const baseAssetAmount = standardizeBaseAssetAmount(maxAmountToTrade, orderStepSize);
165
165
  // Check that directions are the same
166
166
  const sameDirection = isSameDirection(direction, order.direction);
167
167
  if (!sameDirection) {
@@ -285,7 +285,7 @@ function maxSizeForTargetLiabilityWeightBN(target, imfFactor, liabilityWeight, m
285
285
  }
286
286
  }
287
287
  // cap at max OI
288
- const maxOpenInterest = market.amm.maxOpenInterest;
288
+ const maxOpenInterest = market.maxOpenInterest;
289
289
  if (lo.gt(maxOpenInterest)) {
290
290
  return maxOpenInterest;
291
291
  }
@@ -1 +1 @@
1
- {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/math/position.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAU1C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EAEjB,MAAM,UAAU,CAAC;AAUlB;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,UAAO,EAChB,UAAU,UAAQ,EAClB,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAmDJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,EAC1B,WAAW,SAAQ,EACnB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,EAAE,CAwBJ;AAED,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,iBAAiB,EAC7B,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,EAAE,CAyBJ;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,EAC1B,gBAAgB,UAAO,GACrB,EAAE,CAeJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,GACxB,EAAE,CAoBJ;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,GACxB,EAAE,CAEJ;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAQnE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAMzE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,EAAE,CAUtE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,GAAG,EAAE,CAUlE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,YAAY,EAAE,YAAY,EAC1B,iBAAiB,UAAQ,GACvB,EAAE,CAWJ;AAED,wBAAgB,oBAAoB,CACnC,YAAY,EAAE,YAAY,GACxB,iBAAiB,CAInB;AAED,wBAAgB,wBAAwB,CACvC,YAAY,EAAE,YAAY,GACxB,iBAAiB,CAInB;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAEnE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAM7D"}
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/math/position.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAU1C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EAEjB,MAAM,UAAU,CAAC;AAUlB;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,UAAO,EAChB,UAAU,UAAQ,EAClB,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAyDJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,EAC1B,WAAW,SAAQ,EACnB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,EAAE,CAwBJ;AAED,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,iBAAiB,EAC7B,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,EAAE,CAyBJ;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,EAC1B,gBAAgB,UAAO,GACrB,EAAE,CAeJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,GACxB,EAAE,CAoBJ;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,GACxB,EAAE,CAEJ;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAQnE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAMzE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,EAAE,CAUtE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,GAAG,EAAE,CAUlE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,YAAY,EAAE,YAAY,EAC1B,iBAAiB,UAAQ,GACvB,EAAE,CAWJ;AAED,wBAAgB,oBAAoB,CACnC,YAAY,EAAE,YAAY,GACxB,iBAAiB,CAInB;AAED,wBAAgB,wBAAwB,CACvC,YAAY,EAAE,YAAY,GACxB,iBAAiB,CAInB;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAEnE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAM7D"}
@@ -23,7 +23,7 @@ function calculateBaseAssetValue(market, userPosition, mmOraclePriceData, useSpr
23
23
  let prepegAmm;
24
24
  if (!skipUpdate) {
25
25
  if (market.amm.baseSpread > 0 && useSpread) {
26
- const { baseAssetReserve, quoteAssetReserve, sqrtK, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, directionToClose, mmOraclePriceData, latestSlot);
26
+ const { baseAssetReserve, quoteAssetReserve, sqrtK, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, market.marketStats, market.totalExchangeFee, directionToClose, mmOraclePriceData, latestSlot);
27
27
  prepegAmm = {
28
28
  baseAssetReserve,
29
29
  quoteAssetReserve,
@@ -32,7 +32,7 @@ function calculateBaseAssetValue(market, userPosition, mmOraclePriceData, useSpr
32
32
  };
33
33
  }
34
34
  else {
35
- prepegAmm = (0, amm_1.calculateUpdatedAMM)(market.amm, mmOraclePriceData);
35
+ prepegAmm = (0, amm_1.calculateUpdatedAMM)(market.amm, market.totalExchangeFee, mmOraclePriceData);
36
36
  }
37
37
  }
38
38
  else {
@@ -124,10 +124,10 @@ function calculateUnsettledFundingPnl(market, perpPosition) {
124
124
  }
125
125
  let ammCumulativeFundingRate;
126
126
  if (perpPosition.baseAssetAmount.gt(numericConstants_1.ZERO)) {
127
- ammCumulativeFundingRate = market.amm.cumulativeFundingRateLong;
127
+ ammCumulativeFundingRate = market.cumulativeFundingRateLong;
128
128
  }
129
129
  else {
130
- ammCumulativeFundingRate = market.amm.cumulativeFundingRateShort;
130
+ ammCumulativeFundingRate = market.cumulativeFundingRateShort;
131
131
  }
132
132
  const perPositionFundingRate = ammCumulativeFundingRate
133
133
  .sub(perpPosition.lastCumulativeFundingRate)
@@ -29,13 +29,11 @@ export type BSOL_EMISSIONS_API_RESPONSE = {
29
29
  };
30
30
  export declare function fetchBSolMetrics(): Promise<any>;
31
31
  export declare function fetchBSolVelocityEmissions(): Promise<any>;
32
- /** @deprecated Use `fetchBSolVelocityEmissions` instead. `fetchBSolDriftEmissions` will be removed in a future major. */
33
- export declare const fetchBSolDriftEmissions: typeof fetchBSolVelocityEmissions;
34
- export declare function findBestSuperStakeIxs({ marketIndex, amount, jupiterClient, driftClient, userAccountPublicKey, price, forceMarinade, onlyDirectRoutes, jupiterQuote, }: {
32
+ export declare function findBestSuperStakeIxs({ marketIndex, amount, jupiterClient, velocityClient, userAccountPublicKey, price, forceMarinade, onlyDirectRoutes, jupiterQuote, }: {
35
33
  marketIndex: number;
36
34
  amount: BN;
37
35
  jupiterClient: JupiterClient;
38
- driftClient: VelocityClient;
36
+ velocityClient: VelocityClient;
39
37
  price?: number;
40
38
  userAccountPublicKey?: PublicKey;
41
39
  forceMarinade?: boolean;
@@ -47,10 +45,10 @@ export declare function findBestSuperStakeIxs({ marketIndex, amount, jupiterClie
47
45
  method: 'jupiter' | 'marinade';
48
46
  price?: number;
49
47
  }>;
50
- export declare function findBestMSolSuperStakeIxs({ amount, jupiterClient, driftClient, userAccountPublicKey, price, forceMarinade, onlyDirectRoutes, jupiterQuote, }: {
48
+ export declare function findBestMSolSuperStakeIxs({ amount, jupiterClient, velocityClient, userAccountPublicKey, price, forceMarinade, onlyDirectRoutes, jupiterQuote, }: {
51
49
  amount: BN;
52
50
  jupiterClient: JupiterClient;
53
- driftClient: VelocityClient;
51
+ velocityClient: VelocityClient;
54
52
  price?: number;
55
53
  userAccountPublicKey?: PublicKey;
56
54
  forceMarinade?: boolean;
@@ -62,10 +60,10 @@ export declare function findBestMSolSuperStakeIxs({ amount, jupiterClient, drift
62
60
  method: 'jupiter' | 'marinade';
63
61
  price: number;
64
62
  }>;
65
- export declare function findBestJitoSolSuperStakeIxs({ amount, jupiterClient, driftClient, userAccountPublicKey, onlyDirectRoutes, jupiterQuote, }: {
63
+ export declare function findBestJitoSolSuperStakeIxs({ amount, jupiterClient, velocityClient, userAccountPublicKey, onlyDirectRoutes, jupiterQuote, }: {
66
64
  amount: BN;
67
65
  jupiterClient: JupiterClient;
68
- driftClient: VelocityClient;
66
+ velocityClient: VelocityClient;
69
67
  userAccountPublicKey?: PublicKey;
70
68
  onlyDirectRoutes?: boolean;
71
69
  jupiterQuote?: QuoteResponse;
@@ -80,12 +78,12 @@ export declare function findBestJitoSolSuperStakeIxs({ amount, jupiterClient, dr
80
78
  *
81
79
  * Without doing any extra steps like checking if you can get a better rate by staking directly with that LST platform
82
80
  */
83
- export declare function findBestLstSuperStakeIxs({ amount, jupiterClient, driftClient, userAccountPublicKey, onlyDirectRoutes, lstMarketIndex, jupiterQuote, }: {
81
+ export declare function findBestLstSuperStakeIxs({ amount, jupiterClient, velocityClient, userAccountPublicKey, onlyDirectRoutes, lstMarketIndex, jupiterQuote, }: {
84
82
  amount: BN;
85
83
  lstMint: PublicKey;
86
84
  lstMarketIndex: number;
87
85
  jupiterClient: JupiterClient;
88
- driftClient: VelocityClient;
86
+ velocityClient: VelocityClient;
89
87
  userAccountPublicKey?: PublicKey;
90
88
  onlyDirectRoutes?: boolean;
91
89
  jupiterQuote?: QuoteResponse;
@@ -1 +1 @@
1
- {"version":3,"file":"superStake.d.ts","sourceRoot":"","sources":["../../../src/math/superStake.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"superStake.d.ts","sourceRoot":"","sources":["../../../src/math/superStake.ts"],"names":[],"mappings":"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"}