@velocity-exchange/sdk 0.1.0 → 0.2.1

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 (761) hide show
  1. package/CHANGELOG.md +4 -32
  2. package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +5 -3
  3. package/lib/browser/accounts/basicUserAccountSubscriber.js +4 -3
  4. package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +5 -3
  5. package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +4 -3
  6. package/lib/browser/accounts/bulkAccountLoader.d.ts +5 -5
  7. package/lib/browser/accounts/bulkAccountLoader.js +12 -1
  8. package/lib/browser/accounts/grpcAccountSubscriber.d.ts +2 -1
  9. package/lib/browser/accounts/grpcAccountSubscriber.js +8 -2
  10. package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +3 -2
  11. package/lib/browser/accounts/grpcMultiAccountSubscriber.js +13 -5
  12. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -1
  13. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +12 -8
  14. package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +2 -1
  15. package/lib/browser/accounts/grpcProgramAccountSubscriber.js +8 -2
  16. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +18 -3
  17. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +1 -1
  18. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +40 -17
  19. package/lib/browser/accounts/laserProgramAccountSubscriber.js +3 -0
  20. package/lib/browser/accounts/oneShotUserAccountSubscriber.js +4 -3
  21. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +7 -3
  22. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  23. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +3 -3
  24. package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +0 -2
  25. package/lib/browser/accounts/pollingOracleAccountSubscriber.js +16 -5
  26. package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +0 -2
  27. package/lib/browser/accounts/pollingTokenAccountSubscriber.js +16 -5
  28. package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +8 -4
  29. package/lib/browser/accounts/pollingUserAccountSubscriber.js +17 -11
  30. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +4 -2
  31. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +6 -6
  32. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +7 -1
  33. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +64 -28
  34. package/lib/browser/accounts/types.d.ts +4 -4
  35. package/lib/browser/accounts/utils.d.ts +1 -0
  36. package/lib/browser/accounts/utils.js +8 -1
  37. package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +4 -2
  38. package/lib/browser/accounts/webSocketAccountSubscriber.js +17 -5
  39. package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +4 -2
  40. package/lib/browser/accounts/webSocketAccountSubscriberV2.js +17 -6
  41. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  42. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +9 -0
  43. package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +3 -1
  44. package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +14 -3
  45. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -1
  46. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +15 -3
  47. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -1
  48. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +14 -4
  49. package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +4 -2
  50. package/lib/browser/accounts/webSocketUserAccountSubscriber.js +9 -0
  51. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +4 -2
  52. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +9 -0
  53. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +4 -4
  54. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +48 -20
  55. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +7 -3
  56. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +45 -14
  57. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +1 -1
  58. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +0 -3
  59. package/lib/browser/addresses/marketAddresses.js +3 -2
  60. package/lib/browser/addresses/pda.d.ts +0 -2
  61. package/lib/browser/addresses/pda.js +1 -14
  62. package/lib/browser/adminClient.d.ts +24 -29
  63. package/lib/browser/adminClient.js +156 -157
  64. package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +1 -1
  65. package/lib/browser/auctionSubscriber/auctionSubscriber.js +6 -4
  66. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +1 -1
  67. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +9 -4
  68. package/lib/browser/bankrun/bankrunConnection.d.ts +8 -5
  69. package/lib/browser/bankrun/bankrunConnection.js +92 -32
  70. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +1 -1
  71. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +3 -2
  72. package/lib/browser/clock/clockSubscriber.d.ts +6 -6
  73. package/lib/browser/clock/clockSubscriber.js +4 -3
  74. package/lib/browser/config.d.ts +1 -1
  75. package/lib/browser/config.js +8 -4
  76. package/lib/browser/constants/index.d.ts +1 -2
  77. package/lib/browser/constants/index.js +1 -2
  78. package/lib/browser/constants/numericConstants.d.ts +1 -2
  79. package/lib/browser/constants/numericConstants.js +7 -5
  80. package/lib/browser/constants/spotMarkets.d.ts +0 -1
  81. package/lib/browser/constituentMap/constituentMap.js +5 -1
  82. package/lib/browser/constituentMap/pollingConstituentAccountSubscriber.js +3 -2
  83. package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.d.ts +2 -3
  84. package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.js +10 -3
  85. package/lib/browser/core/VelocityCore.d.ts +0 -1
  86. package/lib/browser/core/instructions/deposit.d.ts +0 -1
  87. package/lib/browser/core/instructions/perpOrders.d.ts +14 -0
  88. package/lib/browser/core/instructions/perpOrders.js +14 -0
  89. package/lib/browser/core/instructions/withdraw.d.ts +0 -1
  90. package/lib/browser/core/remainingAccounts.d.ts +2 -2
  91. package/lib/browser/core/remainingAccounts.js +2 -2
  92. package/lib/browser/decode/user.js +9 -1
  93. package/lib/browser/dlob/DLOB.d.ts +6 -2
  94. package/lib/browser/dlob/DLOB.js +201 -138
  95. package/lib/browser/dlob/DLOBNode.d.ts +5 -3
  96. package/lib/browser/dlob/DLOBNode.js +7 -0
  97. package/lib/browser/dlob/DLOBSubscriber.d.ts +0 -1
  98. package/lib/browser/dlob/DLOBSubscriber.js +37 -32
  99. package/lib/browser/dlob/NodeList.d.ts +0 -1
  100. package/lib/browser/dlob/NodeList.js +8 -7
  101. package/lib/browser/dlob/orderBookLevels.d.ts +0 -1
  102. package/lib/browser/dlob/orderBookLevels.js +19 -12
  103. package/lib/browser/events/eventList.d.ts +3 -3
  104. package/lib/browser/events/eventList.js +4 -1
  105. package/lib/browser/events/eventSubscriber.d.ts +5 -2
  106. package/lib/browser/events/eventSubscriber.js +75 -26
  107. package/lib/browser/events/eventsServerLogProvider.d.ts +2 -2
  108. package/lib/browser/events/eventsServerLogProvider.js +15 -8
  109. package/lib/browser/events/fetchLogs.d.ts +1 -1
  110. package/lib/browser/events/fetchLogs.js +4 -2
  111. package/lib/browser/events/pollingLogProvider.d.ts +2 -2
  112. package/lib/browser/events/pollingLogProvider.js +1 -0
  113. package/lib/browser/events/txEventCache.d.ts +3 -3
  114. package/lib/browser/events/txEventCache.js +6 -2
  115. package/lib/browser/events/types.d.ts +2 -4
  116. package/lib/browser/events/types.js +0 -2
  117. package/lib/browser/events/webSocketLogProvider.d.ts +2 -2
  118. package/lib/browser/events/webSocketLogProvider.js +5 -2
  119. package/lib/browser/factory/bigNum.d.ts +0 -1
  120. package/lib/browser/factory/bigNum.js +1 -1
  121. package/lib/browser/idl/velocity.d.ts +1243 -1586
  122. package/lib/browser/idl/velocity.json +1234 -1577
  123. package/lib/browser/index.d.ts +0 -2
  124. package/lib/browser/index.js +0 -2
  125. package/lib/browser/indicative-quotes/indicativeQuotesSender.d.ts +0 -1
  126. package/lib/browser/jupiter/jupiterClient.d.ts +1 -2
  127. package/lib/browser/jupiter/jupiterClient.js +18 -8
  128. package/lib/browser/marginCalculation.d.ts +0 -1
  129. package/lib/browser/marginCalculation.js +1 -0
  130. package/lib/browser/marinade/index.d.ts +2 -3
  131. package/lib/browser/marinade/index.js +5 -0
  132. package/lib/browser/math/amm.d.ts +31 -14
  133. package/lib/browser/math/amm.js +77 -22
  134. package/lib/browser/math/auction.d.ts +0 -1
  135. package/lib/browser/math/bankruptcy.js +1 -1
  136. package/lib/browser/math/conversion.d.ts +0 -1
  137. package/lib/browser/math/funding.d.ts +0 -1
  138. package/lib/browser/math/funding.js +6 -6
  139. package/lib/browser/math/insurance.d.ts +1 -2
  140. package/lib/browser/math/insurance.js +4 -5
  141. package/lib/browser/math/liquidation.d.ts +0 -1
  142. package/lib/browser/math/margin.d.ts +1 -10
  143. package/lib/browser/math/margin.js +3 -62
  144. package/lib/browser/math/market.d.ts +4 -13
  145. package/lib/browser/math/market.js +6 -40
  146. package/lib/browser/math/oracles.d.ts +0 -4
  147. package/lib/browser/math/oracles.js +1 -14
  148. package/lib/browser/math/orders.d.ts +0 -6
  149. package/lib/browser/math/orders.js +2 -74
  150. package/lib/browser/math/position.d.ts +1 -6
  151. package/lib/browser/math/position.js +5 -10
  152. package/lib/browser/math/repeg.d.ts +0 -2
  153. package/lib/browser/math/repeg.js +1 -23
  154. package/lib/browser/math/spotBalance.d.ts +4 -5
  155. package/lib/browser/math/spotBalance.js +6 -6
  156. package/lib/browser/math/spotMarket.d.ts +0 -7
  157. package/lib/browser/math/spotMarket.js +1 -16
  158. package/lib/browser/math/spotPosition.d.ts +4 -5
  159. package/lib/browser/math/state.d.ts +0 -3
  160. package/lib/browser/math/state.js +1 -9
  161. package/lib/browser/math/superStake.d.ts +3 -54
  162. package/lib/browser/math/superStake.js +16 -13
  163. package/lib/browser/math/trade.d.ts +2 -3
  164. package/lib/browser/math/trade.js +6 -6
  165. package/lib/browser/math/utils.d.ts +0 -1
  166. package/lib/browser/memcmp.d.ts +0 -1
  167. package/lib/browser/memcmp.js +1 -10
  168. package/lib/browser/oracles/oracleClientCache.d.ts +1 -1
  169. package/lib/browser/oracles/prelaunchOracleClient.js +3 -2
  170. package/lib/browser/oracles/pythClient.d.ts +0 -1
  171. package/lib/browser/oracles/pythClient.js +9 -3
  172. package/lib/browser/oracles/pythLazerClient.d.ts +0 -1
  173. package/lib/browser/oracles/pythLazerClient.js +3 -2
  174. package/lib/browser/oracles/strictOraclePrice.d.ts +0 -1
  175. package/lib/browser/oracles/types.d.ts +0 -1
  176. package/lib/browser/oracles/utils.d.ts +4 -1
  177. package/lib/browser/oracles/utils.js +9 -1
  178. package/lib/browser/orderParams.d.ts +0 -1
  179. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +1 -1
  180. package/lib/browser/orderSubscriber/OrderSubscriber.js +8 -2
  181. package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +1 -1
  182. package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +1 -1
  183. package/lib/browser/priorityFee/priorityFeeSubscriber.js +32 -8
  184. package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +1 -1
  185. package/lib/browser/pyth/types.d.ts +0 -1
  186. package/lib/browser/slot/SlotSubscriber.d.ts +1 -1
  187. package/lib/browser/slot/SlotSubscriber.js +2 -1
  188. package/lib/browser/slot/SlothashSubscriber.d.ts +3 -2
  189. package/lib/browser/slot/SlothashSubscriber.js +11 -4
  190. package/lib/browser/swap/UnifiedSwapClient.d.ts +0 -1
  191. package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.d.ts +0 -3
  192. package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.js +5 -5
  193. package/lib/browser/swift/signedMsgUserAccountSubscriber.d.ts +3 -2
  194. package/lib/browser/swift/signedMsgUserAccountSubscriber.js +13 -5
  195. package/lib/browser/swift/swiftOrderSubscriber.d.ts +1 -1
  196. package/lib/browser/swift/swiftOrderSubscriber.js +10 -5
  197. package/lib/browser/testClient.js +3 -2
  198. package/lib/browser/titan/titanClient.d.ts +0 -1
  199. package/lib/browser/tokenFaucet.d.ts +0 -1
  200. package/lib/browser/tokenFaucet.js +16 -2
  201. package/lib/browser/tx/baseTxSender.d.ts +4 -4
  202. package/lib/browser/tx/baseTxSender.js +5 -4
  203. package/lib/browser/tx/fastSingleTxSender.d.ts +3 -3
  204. package/lib/browser/tx/fastSingleTxSender.js +9 -5
  205. package/lib/browser/tx/reportTransactionError.d.ts +2 -2
  206. package/lib/browser/tx/reportTransactionError.js +5 -1
  207. package/lib/browser/tx/retryTxSender.d.ts +1 -1
  208. package/lib/browser/tx/retryTxSender.js +4 -2
  209. package/lib/browser/tx/txHandler.d.ts +9 -3
  210. package/lib/browser/tx/txHandler.js +54 -40
  211. package/lib/browser/tx/txParamProcessor.d.ts +4 -1
  212. package/lib/browser/tx/txParamProcessor.js +6 -0
  213. package/lib/browser/tx/types.d.ts +1 -1
  214. package/lib/browser/tx/whileValidTxSender.d.ts +1 -6
  215. package/lib/browser/tx/whileValidTxSender.js +35 -13
  216. package/lib/browser/types.d.ts +25 -69
  217. package/lib/browser/types.js +2 -2
  218. package/lib/browser/user.d.ts +21 -8
  219. package/lib/browser/user.js +156 -132
  220. package/lib/browser/userMap/WebsocketSubscription.d.ts +1 -1
  221. package/lib/browser/userMap/grpcSubscription.d.ts +1 -1
  222. package/lib/browser/userMap/referrerMap.js +10 -3
  223. package/lib/browser/userMap/revenueShareEscrowMap.js +4 -0
  224. package/lib/browser/userMap/userMap.d.ts +1 -1
  225. package/lib/browser/userMap/userMap.js +36 -23
  226. package/lib/browser/userMap/userStatsMap.d.ts +1 -1
  227. package/lib/browser/userMap/userStatsMap.js +18 -13
  228. package/lib/browser/userStats.d.ts +7 -2
  229. package/lib/browser/userStats.js +18 -4
  230. package/lib/browser/util/TransactionConfirmationManager.js +4 -2
  231. package/lib/browser/util/chainClock.d.ts +1 -1
  232. package/lib/browser/util/computeUnits.d.ts +1 -1
  233. package/lib/browser/util/computeUnits.js +6 -1
  234. package/lib/browser/velocityClient.d.ts +93 -36
  235. package/lib/browser/velocityClient.js +414 -280
  236. package/lib/node/accounts/basicUserAccountSubscriber.d.ts +5 -3
  237. package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
  238. package/lib/node/accounts/basicUserAccountSubscriber.js +4 -3
  239. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +5 -3
  240. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
  241. package/lib/node/accounts/basicUserStatsAccountSubscriber.js +4 -3
  242. package/lib/node/accounts/bulkAccountLoader.d.ts +5 -5
  243. package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
  244. package/lib/node/accounts/bulkAccountLoader.js +12 -1
  245. package/lib/node/accounts/grpcAccountSubscriber.d.ts +2 -1
  246. package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
  247. package/lib/node/accounts/grpcAccountSubscriber.js +8 -2
  248. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +3 -2
  249. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
  250. package/lib/node/accounts/grpcMultiAccountSubscriber.js +13 -5
  251. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -1
  252. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
  253. package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +12 -8
  254. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +2 -1
  255. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
  256. package/lib/node/accounts/grpcProgramAccountSubscriber.js +8 -2
  257. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
  258. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +18 -3
  259. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +1 -1
  260. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  261. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +40 -17
  262. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
  263. package/lib/node/accounts/laserProgramAccountSubscriber.js +3 -0
  264. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
  265. package/lib/node/accounts/oneShotUserAccountSubscriber.js +4 -3
  266. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
  267. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +7 -3
  268. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  269. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  270. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +3 -3
  271. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +0 -2
  272. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
  273. package/lib/node/accounts/pollingOracleAccountSubscriber.js +16 -5
  274. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +0 -2
  275. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
  276. package/lib/node/accounts/pollingTokenAccountSubscriber.js +16 -5
  277. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +8 -4
  278. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
  279. package/lib/node/accounts/pollingUserAccountSubscriber.js +17 -11
  280. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +4 -2
  281. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
  282. package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +6 -6
  283. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +7 -1
  284. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
  285. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +64 -28
  286. package/lib/node/accounts/types.d.ts +4 -4
  287. package/lib/node/accounts/types.d.ts.map +1 -1
  288. package/lib/node/accounts/utils.d.ts +1 -0
  289. package/lib/node/accounts/utils.d.ts.map +1 -1
  290. package/lib/node/accounts/utils.js +8 -1
  291. package/lib/node/accounts/webSocketAccountSubscriber.d.ts +4 -2
  292. package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
  293. package/lib/node/accounts/webSocketAccountSubscriber.js +17 -5
  294. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +4 -2
  295. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
  296. package/lib/node/accounts/webSocketAccountSubscriberV2.js +17 -6
  297. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  298. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  299. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +9 -0
  300. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +3 -1
  301. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
  302. package/lib/node/accounts/webSocketProgramAccountSubscriber.js +14 -3
  303. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -1
  304. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
  305. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +15 -3
  306. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -1
  307. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
  308. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +14 -4
  309. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +4 -2
  310. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
  311. package/lib/node/accounts/webSocketUserAccountSubscriber.js +9 -0
  312. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +4 -2
  313. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
  314. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +9 -0
  315. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +4 -4
  316. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
  317. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +48 -20
  318. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +7 -3
  319. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  320. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +45 -14
  321. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +1 -1
  322. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
  323. package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +0 -3
  324. package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
  325. package/lib/node/addresses/marketAddresses.js +3 -2
  326. package/lib/node/addresses/pda.d.ts +0 -2
  327. package/lib/node/addresses/pda.d.ts.map +1 -1
  328. package/lib/node/addresses/pda.js +1 -14
  329. package/lib/node/adminClient.d.ts +24 -29
  330. package/lib/node/adminClient.d.ts.map +1 -1
  331. package/lib/node/adminClient.js +156 -157
  332. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +1 -1
  333. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
  334. package/lib/node/auctionSubscriber/auctionSubscriber.js +6 -4
  335. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +1 -1
  336. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
  337. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +9 -4
  338. package/lib/node/bankrun/bankrunConnection.d.ts +8 -5
  339. package/lib/node/bankrun/bankrunConnection.d.ts.map +1 -1
  340. package/lib/node/bankrun/bankrunConnection.js +92 -32
  341. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +1 -1
  342. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
  343. package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +3 -2
  344. package/lib/node/clock/clockSubscriber.d.ts +6 -6
  345. package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
  346. package/lib/node/clock/clockSubscriber.js +4 -3
  347. package/lib/node/config.d.ts +1 -1
  348. package/lib/node/config.d.ts.map +1 -1
  349. package/lib/node/config.js +8 -4
  350. package/lib/node/constants/index.d.ts +1 -2
  351. package/lib/node/constants/index.d.ts.map +1 -1
  352. package/lib/node/constants/index.js +1 -2
  353. package/lib/node/constants/numericConstants.d.ts +1 -2
  354. package/lib/node/constants/numericConstants.d.ts.map +1 -1
  355. package/lib/node/constants/numericConstants.js +7 -5
  356. package/lib/node/constants/spotMarkets.d.ts +0 -1
  357. package/lib/node/constants/spotMarkets.d.ts.map +1 -1
  358. package/lib/node/constituentMap/constituentMap.d.ts.map +1 -1
  359. package/lib/node/constituentMap/constituentMap.js +5 -1
  360. package/lib/node/constituentMap/pollingConstituentAccountSubscriber.d.ts.map +1 -1
  361. package/lib/node/constituentMap/pollingConstituentAccountSubscriber.js +3 -2
  362. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts +2 -3
  363. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts.map +1 -1
  364. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.js +10 -3
  365. package/lib/node/core/VelocityCore.d.ts +0 -1
  366. package/lib/node/core/VelocityCore.d.ts.map +1 -1
  367. package/lib/node/core/instructions/deposit.d.ts +0 -1
  368. package/lib/node/core/instructions/deposit.d.ts.map +1 -1
  369. package/lib/node/core/instructions/perpOrders.d.ts +14 -0
  370. package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
  371. package/lib/node/core/instructions/perpOrders.js +14 -0
  372. package/lib/node/core/instructions/withdraw.d.ts +0 -1
  373. package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
  374. package/lib/node/core/remainingAccounts.d.ts +2 -2
  375. package/lib/node/core/remainingAccounts.d.ts.map +1 -1
  376. package/lib/node/core/remainingAccounts.js +2 -2
  377. package/lib/node/decode/user.d.ts.map +1 -1
  378. package/lib/node/decode/user.js +9 -1
  379. package/lib/node/dlob/DLOB.d.ts +6 -2
  380. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  381. package/lib/node/dlob/DLOB.js +201 -138
  382. package/lib/node/dlob/DLOBNode.d.ts +5 -3
  383. package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
  384. package/lib/node/dlob/DLOBNode.js +7 -0
  385. package/lib/node/dlob/DLOBSubscriber.d.ts +0 -1
  386. package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
  387. package/lib/node/dlob/DLOBSubscriber.js +37 -32
  388. package/lib/node/dlob/NodeList.d.ts +0 -1
  389. package/lib/node/dlob/NodeList.d.ts.map +1 -1
  390. package/lib/node/dlob/NodeList.js +8 -7
  391. package/lib/node/dlob/orderBookLevels.d.ts +0 -1
  392. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  393. package/lib/node/dlob/orderBookLevels.js +19 -12
  394. package/lib/node/events/eventList.d.ts +3 -3
  395. package/lib/node/events/eventList.d.ts.map +1 -1
  396. package/lib/node/events/eventList.js +4 -1
  397. package/lib/node/events/eventSubscriber.d.ts +5 -2
  398. package/lib/node/events/eventSubscriber.d.ts.map +1 -1
  399. package/lib/node/events/eventSubscriber.js +75 -26
  400. package/lib/node/events/eventsServerLogProvider.d.ts +2 -2
  401. package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
  402. package/lib/node/events/eventsServerLogProvider.js +15 -8
  403. package/lib/node/events/fetchLogs.d.ts +1 -1
  404. package/lib/node/events/fetchLogs.d.ts.map +1 -1
  405. package/lib/node/events/fetchLogs.js +4 -2
  406. package/lib/node/events/pollingLogProvider.d.ts +2 -2
  407. package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
  408. package/lib/node/events/pollingLogProvider.js +1 -0
  409. package/lib/node/events/txEventCache.d.ts +3 -3
  410. package/lib/node/events/txEventCache.d.ts.map +1 -1
  411. package/lib/node/events/txEventCache.js +6 -2
  412. package/lib/node/events/types.d.ts +2 -4
  413. package/lib/node/events/types.d.ts.map +1 -1
  414. package/lib/node/events/types.js +0 -2
  415. package/lib/node/events/webSocketLogProvider.d.ts +2 -2
  416. package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
  417. package/lib/node/events/webSocketLogProvider.js +5 -2
  418. package/lib/node/factory/bigNum.d.ts +0 -1
  419. package/lib/node/factory/bigNum.d.ts.map +1 -1
  420. package/lib/node/factory/bigNum.js +1 -1
  421. package/lib/node/idl/velocity.d.ts +1243 -1586
  422. package/lib/node/idl/velocity.d.ts.map +1 -1
  423. package/lib/node/idl/velocity.json +1234 -1577
  424. package/lib/node/index.d.ts +0 -2
  425. package/lib/node/index.d.ts.map +1 -1
  426. package/lib/node/index.js +0 -2
  427. package/lib/node/indicative-quotes/indicativeQuotesSender.d.ts +0 -1
  428. package/lib/node/indicative-quotes/indicativeQuotesSender.d.ts.map +1 -1
  429. package/lib/node/jupiter/jupiterClient.d.ts +1 -2
  430. package/lib/node/jupiter/jupiterClient.d.ts.map +1 -1
  431. package/lib/node/jupiter/jupiterClient.js +18 -8
  432. package/lib/node/marginCalculation.d.ts +0 -1
  433. package/lib/node/marginCalculation.d.ts.map +1 -1
  434. package/lib/node/marginCalculation.js +1 -0
  435. package/lib/node/marinade/index.d.ts +2 -3
  436. package/lib/node/marinade/index.d.ts.map +1 -1
  437. package/lib/node/marinade/index.js +5 -0
  438. package/lib/node/math/amm.d.ts +31 -14
  439. package/lib/node/math/amm.d.ts.map +1 -1
  440. package/lib/node/math/amm.js +77 -22
  441. package/lib/node/math/auction.d.ts +0 -1
  442. package/lib/node/math/auction.d.ts.map +1 -1
  443. package/lib/node/math/bankruptcy.js +1 -1
  444. package/lib/node/math/conversion.d.ts +0 -1
  445. package/lib/node/math/conversion.d.ts.map +1 -1
  446. package/lib/node/math/funding.d.ts +0 -1
  447. package/lib/node/math/funding.d.ts.map +1 -1
  448. package/lib/node/math/funding.js +6 -6
  449. package/lib/node/math/insurance.d.ts +1 -2
  450. package/lib/node/math/insurance.d.ts.map +1 -1
  451. package/lib/node/math/insurance.js +4 -5
  452. package/lib/node/math/liquidation.d.ts +0 -1
  453. package/lib/node/math/liquidation.d.ts.map +1 -1
  454. package/lib/node/math/margin.d.ts +1 -10
  455. package/lib/node/math/margin.d.ts.map +1 -1
  456. package/lib/node/math/margin.js +3 -62
  457. package/lib/node/math/market.d.ts +4 -13
  458. package/lib/node/math/market.d.ts.map +1 -1
  459. package/lib/node/math/market.js +6 -40
  460. package/lib/node/math/oracles.d.ts +0 -4
  461. package/lib/node/math/oracles.d.ts.map +1 -1
  462. package/lib/node/math/oracles.js +1 -14
  463. package/lib/node/math/orders.d.ts +0 -6
  464. package/lib/node/math/orders.d.ts.map +1 -1
  465. package/lib/node/math/orders.js +2 -74
  466. package/lib/node/math/position.d.ts +1 -6
  467. package/lib/node/math/position.d.ts.map +1 -1
  468. package/lib/node/math/position.js +5 -10
  469. package/lib/node/math/repeg.d.ts +0 -2
  470. package/lib/node/math/repeg.d.ts.map +1 -1
  471. package/lib/node/math/repeg.js +1 -23
  472. package/lib/node/math/spotBalance.d.ts +4 -5
  473. package/lib/node/math/spotBalance.d.ts.map +1 -1
  474. package/lib/node/math/spotBalance.js +6 -6
  475. package/lib/node/math/spotMarket.d.ts +0 -7
  476. package/lib/node/math/spotMarket.d.ts.map +1 -1
  477. package/lib/node/math/spotMarket.js +1 -16
  478. package/lib/node/math/spotPosition.d.ts +4 -5
  479. package/lib/node/math/spotPosition.d.ts.map +1 -1
  480. package/lib/node/math/state.d.ts +0 -3
  481. package/lib/node/math/state.d.ts.map +1 -1
  482. package/lib/node/math/state.js +1 -9
  483. package/lib/node/math/superStake.d.ts +3 -54
  484. package/lib/node/math/superStake.d.ts.map +1 -1
  485. package/lib/node/math/superStake.js +16 -13
  486. package/lib/node/math/trade.d.ts +2 -3
  487. package/lib/node/math/trade.d.ts.map +1 -1
  488. package/lib/node/math/trade.js +6 -6
  489. package/lib/node/math/utils.d.ts +0 -1
  490. package/lib/node/math/utils.d.ts.map +1 -1
  491. package/lib/node/memcmp.d.ts +0 -1
  492. package/lib/node/memcmp.d.ts.map +1 -1
  493. package/lib/node/memcmp.js +1 -10
  494. package/lib/node/oracles/oracleClientCache.d.ts +1 -1
  495. package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
  496. package/lib/node/oracles/prelaunchOracleClient.js +3 -2
  497. package/lib/node/oracles/pythClient.d.ts +0 -1
  498. package/lib/node/oracles/pythClient.d.ts.map +1 -1
  499. package/lib/node/oracles/pythClient.js +9 -3
  500. package/lib/node/oracles/pythLazerClient.d.ts +0 -1
  501. package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
  502. package/lib/node/oracles/pythLazerClient.js +3 -2
  503. package/lib/node/oracles/strictOraclePrice.d.ts +0 -1
  504. package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
  505. package/lib/node/oracles/types.d.ts +0 -1
  506. package/lib/node/oracles/types.d.ts.map +1 -1
  507. package/lib/node/oracles/utils.d.ts +4 -1
  508. package/lib/node/oracles/utils.d.ts.map +1 -1
  509. package/lib/node/oracles/utils.js +9 -1
  510. package/lib/node/orderParams.d.ts +0 -1
  511. package/lib/node/orderParams.d.ts.map +1 -1
  512. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +1 -1
  513. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  514. package/lib/node/orderSubscriber/OrderSubscriber.js +8 -2
  515. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +1 -1
  516. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
  517. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +1 -1
  518. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
  519. package/lib/node/priorityFee/priorityFeeSubscriber.js +32 -8
  520. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +1 -1
  521. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
  522. package/lib/node/pyth/types.d.ts +0 -1
  523. package/lib/node/pyth/types.d.ts.map +1 -1
  524. package/lib/node/slot/SlotSubscriber.d.ts +1 -1
  525. package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
  526. package/lib/node/slot/SlotSubscriber.js +2 -1
  527. package/lib/node/slot/SlothashSubscriber.d.ts +3 -2
  528. package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
  529. package/lib/node/slot/SlothashSubscriber.js +11 -4
  530. package/lib/node/swap/UnifiedSwapClient.d.ts +0 -1
  531. package/lib/node/swap/UnifiedSwapClient.d.ts.map +1 -1
  532. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts +0 -3
  533. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts.map +1 -1
  534. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.js +5 -5
  535. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts +3 -2
  536. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts.map +1 -1
  537. package/lib/node/swift/signedMsgUserAccountSubscriber.js +13 -5
  538. package/lib/node/swift/swiftOrderSubscriber.d.ts +1 -1
  539. package/lib/node/swift/swiftOrderSubscriber.d.ts.map +1 -1
  540. package/lib/node/swift/swiftOrderSubscriber.js +10 -5
  541. package/lib/node/testClient.js +3 -2
  542. package/lib/node/titan/titanClient.d.ts +0 -1
  543. package/lib/node/titan/titanClient.d.ts.map +1 -1
  544. package/lib/node/tokenFaucet.d.ts +0 -1
  545. package/lib/node/tokenFaucet.d.ts.map +1 -1
  546. package/lib/node/tokenFaucet.js +16 -2
  547. package/lib/node/tx/baseTxSender.d.ts +4 -4
  548. package/lib/node/tx/baseTxSender.d.ts.map +1 -1
  549. package/lib/node/tx/baseTxSender.js +5 -4
  550. package/lib/node/tx/fastSingleTxSender.d.ts +3 -3
  551. package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
  552. package/lib/node/tx/fastSingleTxSender.js +9 -5
  553. package/lib/node/tx/reportTransactionError.d.ts +2 -2
  554. package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
  555. package/lib/node/tx/reportTransactionError.js +5 -1
  556. package/lib/node/tx/retryTxSender.d.ts +1 -1
  557. package/lib/node/tx/retryTxSender.d.ts.map +1 -1
  558. package/lib/node/tx/retryTxSender.js +4 -2
  559. package/lib/node/tx/txHandler.d.ts +9 -3
  560. package/lib/node/tx/txHandler.d.ts.map +1 -1
  561. package/lib/node/tx/txHandler.js +54 -40
  562. package/lib/node/tx/txParamProcessor.d.ts +4 -1
  563. package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
  564. package/lib/node/tx/txParamProcessor.js +6 -0
  565. package/lib/node/tx/types.d.ts +1 -1
  566. package/lib/node/tx/types.d.ts.map +1 -1
  567. package/lib/node/tx/whileValidTxSender.d.ts +1 -6
  568. package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
  569. package/lib/node/tx/whileValidTxSender.js +35 -13
  570. package/lib/node/types.d.ts +25 -69
  571. package/lib/node/types.d.ts.map +1 -1
  572. package/lib/node/types.js +2 -2
  573. package/lib/node/user.d.ts +21 -8
  574. package/lib/node/user.d.ts.map +1 -1
  575. package/lib/node/user.js +156 -132
  576. package/lib/node/userMap/WebsocketSubscription.d.ts +1 -1
  577. package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
  578. package/lib/node/userMap/grpcSubscription.d.ts +1 -1
  579. package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
  580. package/lib/node/userMap/referrerMap.d.ts.map +1 -1
  581. package/lib/node/userMap/referrerMap.js +10 -3
  582. package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
  583. package/lib/node/userMap/revenueShareEscrowMap.js +4 -0
  584. package/lib/node/userMap/userMap.d.ts +1 -1
  585. package/lib/node/userMap/userMap.d.ts.map +1 -1
  586. package/lib/node/userMap/userMap.js +36 -23
  587. package/lib/node/userMap/userStatsMap.d.ts +1 -1
  588. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  589. package/lib/node/userMap/userStatsMap.js +18 -13
  590. package/lib/node/userStats.d.ts +7 -2
  591. package/lib/node/userStats.d.ts.map +1 -1
  592. package/lib/node/userStats.js +18 -4
  593. package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
  594. package/lib/node/util/TransactionConfirmationManager.js +4 -2
  595. package/lib/node/util/chainClock.d.ts +1 -1
  596. package/lib/node/util/chainClock.d.ts.map +1 -1
  597. package/lib/node/util/computeUnits.d.ts +1 -1
  598. package/lib/node/util/computeUnits.d.ts.map +1 -1
  599. package/lib/node/util/computeUnits.js +6 -1
  600. package/lib/node/velocityClient.d.ts +93 -36
  601. package/lib/node/velocityClient.d.ts.map +1 -1
  602. package/lib/node/velocityClient.js +414 -280
  603. package/package.json +15 -8
  604. package/src/accounts/basicUserAccountSubscriber.ts +7 -5
  605. package/src/accounts/basicUserStatsAccountSubscriber.ts +9 -5
  606. package/src/accounts/bulkAccountLoader.ts +20 -7
  607. package/src/accounts/grpcAccountSubscriber.ts +11 -3
  608. package/src/accounts/grpcMultiAccountSubscriber.ts +24 -9
  609. package/src/accounts/grpcMultiUserAccountSubscriber.ts +16 -12
  610. package/src/accounts/grpcProgramAccountSubscriber.ts +11 -3
  611. package/src/accounts/grpcVelocityClientAccountSubscriber.ts +17 -7
  612. package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +66 -39
  613. package/src/accounts/laserProgramAccountSubscriber.ts +3 -0
  614. package/src/accounts/oneShotUserAccountSubscriber.ts +5 -3
  615. package/src/accounts/oneShotUserStatsAccountSubscriber.ts +8 -3
  616. package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +11 -5
  617. package/src/accounts/pollingOracleAccountSubscriber.ts +17 -10
  618. package/src/accounts/pollingTokenAccountSubscriber.ts +17 -10
  619. package/src/accounts/pollingUserAccountSubscriber.ts +26 -20
  620. package/src/accounts/pollingUserStatsAccountSubscriber.ts +12 -10
  621. package/src/accounts/pollingVelocityClientAccountSubscriber.ts +76 -30
  622. package/src/accounts/types.ts +6 -4
  623. package/src/accounts/utils.ts +10 -0
  624. package/src/accounts/webSocketAccountSubscriber.ts +23 -10
  625. package/src/accounts/webSocketAccountSubscriberV2.ts +23 -8
  626. package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +17 -2
  627. package/src/accounts/webSocketProgramAccountSubscriber.ts +29 -4
  628. package/src/accounts/webSocketProgramAccountSubscriberV2.ts +30 -4
  629. package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +29 -4
  630. package/src/accounts/webSocketUserAccountSubscriber.ts +11 -2
  631. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +15 -2
  632. package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +76 -48
  633. package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +74 -35
  634. package/src/accounts/websocketProgramUserAccountSubscriber.ts +1 -6
  635. package/src/addresses/marketAddresses.ts +3 -2
  636. package/src/addresses/pda.ts +0 -25
  637. package/src/adminClient.ts +273 -303
  638. package/src/auctionSubscriber/auctionSubscriber.ts +7 -5
  639. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +12 -5
  640. package/src/bankrun/bankrunConnection.ts +110 -40
  641. package/src/blockhashSubscriber/BlockhashSubscriber.ts +5 -4
  642. package/src/clock/clockSubscriber.ts +10 -9
  643. package/src/config.ts +8 -3
  644. package/src/constants/index.ts +1 -2
  645. package/src/constants/numericConstants.ts +8 -4
  646. package/src/constituentMap/constituentMap.ts +8 -1
  647. package/src/constituentMap/pollingConstituentAccountSubscriber.ts +4 -2
  648. package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +13 -4
  649. package/src/core/instructions/perpOrders.ts +14 -0
  650. package/src/core/remainingAccounts.ts +4 -4
  651. package/src/decode/user.ts +8 -1
  652. package/src/dlob/DLOB.ts +296 -172
  653. package/src/dlob/DLOBNode.ts +23 -3
  654. package/src/dlob/DLOBSubscriber.ts +51 -34
  655. package/src/dlob/NodeList.ts +8 -7
  656. package/src/dlob/orderBookLevels.ts +45 -25
  657. package/src/events/eventList.ts +4 -1
  658. package/src/events/eventSubscriber.ts +107 -49
  659. package/src/events/eventsServerLogProvider.ts +22 -13
  660. package/src/events/fetchLogs.ts +3 -3
  661. package/src/events/pollingLogProvider.ts +2 -2
  662. package/src/events/txEventCache.ts +8 -2
  663. package/src/events/types.ts +0 -8
  664. package/src/events/webSocketLogProvider.ts +5 -3
  665. package/src/factory/bigNum.ts +2 -2
  666. package/src/idl/velocity.json +1234 -1577
  667. package/src/idl/velocity.ts +1234 -1577
  668. package/src/index.ts +0 -2
  669. package/src/jupiter/jupiterClient.ts +30 -10
  670. package/src/marginCalculation.ts +1 -0
  671. package/src/marinade/index.ts +11 -2
  672. package/src/math/amm.ts +188 -33
  673. package/src/math/bankruptcy.ts +1 -1
  674. package/src/math/funding.ts +7 -6
  675. package/src/math/insurance.ts +6 -8
  676. package/src/math/margin.ts +5 -112
  677. package/src/math/market.ts +6 -96
  678. package/src/math/oracles.ts +0 -17
  679. package/src/math/orders.ts +1 -110
  680. package/src/math/position.ts +4 -16
  681. package/src/math/repeg.ts +0 -29
  682. package/src/math/spotBalance.ts +14 -10
  683. package/src/math/spotMarket.ts +2 -28
  684. package/src/math/spotPosition.ts +4 -4
  685. package/src/math/state.ts +0 -8
  686. package/src/math/superStake.ts +19 -65
  687. package/src/math/trade.ts +2 -6
  688. package/src/memcmp.ts +0 -9
  689. package/src/oracles/prelaunchOracleClient.ts +7 -2
  690. package/src/oracles/pythClient.ts +12 -3
  691. package/src/oracles/pythLazerClient.ts +7 -2
  692. package/src/oracles/utils.ts +15 -0
  693. package/src/orderSubscriber/OrderSubscriber.ts +10 -4
  694. package/src/priorityFee/heliusPriorityFeeMethod.ts +1 -1
  695. package/src/priorityFee/priorityFeeSubscriber.ts +45 -9
  696. package/src/priorityFee/solanaPriorityFeeMethod.ts +1 -1
  697. package/src/pyth/types.ts +0 -2
  698. package/src/slot/SlotSubscriber.ts +3 -3
  699. package/src/slot/SlothashSubscriber.ts +17 -6
  700. package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +5 -6
  701. package/src/swift/signedMsgUserAccountSubscriber.ts +16 -8
  702. package/src/swift/swiftOrderSubscriber.ts +10 -9
  703. package/src/testClient.ts +2 -2
  704. package/src/tokenFaucet.ts +22 -3
  705. package/src/tx/baseTxSender.ts +10 -10
  706. package/src/tx/fastSingleTxSender.ts +12 -8
  707. package/src/tx/reportTransactionError.ts +12 -7
  708. package/src/tx/retryTxSender.ts +6 -4
  709. package/src/tx/txHandler.ts +88 -43
  710. package/src/tx/txParamProcessor.ts +18 -3
  711. package/src/tx/types.ts +1 -1
  712. package/src/tx/whileValidTxSender.ts +51 -22
  713. package/src/types.ts +39 -75
  714. package/src/user.ts +200 -152
  715. package/src/userMap/WebsocketSubscription.ts +1 -1
  716. package/src/userMap/grpcSubscription.ts +1 -1
  717. package/src/userMap/referrerMap.ts +14 -10
  718. package/src/userMap/revenueShareEscrowMap.ts +8 -3
  719. package/src/userMap/userMap.ts +43 -25
  720. package/src/userMap/userStatsMap.ts +32 -19
  721. package/src/userStats.ts +21 -8
  722. package/src/util/TransactionConfirmationManager.ts +10 -2
  723. package/src/util/chainClock.ts +1 -1
  724. package/src/util/computeUnits.ts +7 -3
  725. package/src/velocityClient.ts +536 -383
  726. package/tests/VelocityCore/remainingAccounts.test.ts +4 -5
  727. package/tests/accounts/customizedCadenceBulkAccountLoader.test.ts +19 -11
  728. package/tests/amm/test.ts +300 -95
  729. package/tests/decode/userAccountBufferStrings.ts +100 -100
  730. package/tests/dlob/helpers.ts +162 -173
  731. package/tests/dlob/test.ts +155 -106
  732. package/tests/tx/TransactionConfirmationManager.test.ts +9 -2
  733. package/tests/user/getMarginCalculation.ts +1 -1
  734. package/tests/user/helpers.ts +3 -4
  735. package/tests/user/marginCalculations.test.ts +2 -2
  736. package/tests/user/test.ts +3 -3
  737. package/tsconfig.browser.json +3 -1
  738. package/tsconfig.json +21 -2
  739. package/.yarn/install-state.gz +0 -0
  740. package/VERSION +0 -1
  741. package/bun.lock +0 -1885
  742. package/lib/browser/constants/insuranceFund.d.ts +0 -5
  743. package/lib/browser/constants/insuranceFund.js +0 -9
  744. package/lib/browser/tx/forwardOnlyTxSender.d.ts +0 -37
  745. package/lib/browser/tx/forwardOnlyTxSender.js +0 -92
  746. package/lib/browser/util/tps.d.ts +0 -2
  747. package/lib/browser/util/tps.js +0 -16
  748. package/lib/node/constants/insuranceFund.d.ts +0 -6
  749. package/lib/node/constants/insuranceFund.d.ts.map +0 -1
  750. package/lib/node/constants/insuranceFund.js +0 -9
  751. package/lib/node/tx/forwardOnlyTxSender.d.ts +0 -38
  752. package/lib/node/tx/forwardOnlyTxSender.d.ts.map +0 -1
  753. package/lib/node/tx/forwardOnlyTxSender.js +0 -92
  754. package/lib/node/util/tps.d.ts +0 -3
  755. package/lib/node/util/tps.d.ts.map +0 -1
  756. package/lib/node/util/tps.js +0 -16
  757. package/scripts/updateVersion.js +0 -28
  758. package/src/constants/insuranceFund.ts +0 -8
  759. package/src/tx/forwardOnlyTxSender.ts +0 -145
  760. package/src/util/tps.ts +0 -27
  761. package/tests/decode/phoenix.ts +0 -71
package/src/index.ts CHANGED
@@ -107,13 +107,11 @@ export * from './tx/fastSingleTxSender';
107
107
  export * from './tx/retryTxSender';
108
108
  export * from './tx/whileValidTxSender';
109
109
  export * from './tx/priorityFeeCalculator';
110
- export * from './tx/forwardOnlyTxSender';
111
110
  export * from './tx/types';
112
111
  export * from './tx/txHandler';
113
112
  export * from './tx/txParamProcessor';
114
113
  export * from './util/computeUnits';
115
114
  export * from './util/digest';
116
- export * from './util/tps';
117
115
  export * from './util/promiseTimeout';
118
116
  export * from './math/spotBalance';
119
117
  export * from './velocityClientConfig';
@@ -6,7 +6,7 @@ import {
6
6
  TransactionMessage,
7
7
  VersionedTransaction,
8
8
  } from '@solana/web3.js';
9
- import fetch from 'node-fetch';
9
+ import fetch, { RequestInit } from 'node-fetch';
10
10
  import { BN } from '../isomorphic/anchor';
11
11
  import { SwapMode } from '../swap/UnifiedSwapClient';
12
12
 
@@ -302,6 +302,22 @@ export class JupiterClient {
302
302
  maxAutoSlippageBps?: number;
303
303
  usdEstimate?: number;
304
304
  }): Promise<QuoteResponse> {
305
+ if (autoSlippage && maxAutoSlippageBps === undefined) {
306
+ throw new Error(
307
+ 'JupiterClient.getQuote: maxAutoSlippageBps is required when autoSlippage is enabled'
308
+ );
309
+ }
310
+ if (autoSlippage && usdEstimate === undefined) {
311
+ throw new Error(
312
+ 'JupiterClient.getQuote: usdEstimate is required when autoSlippage is enabled'
313
+ );
314
+ }
315
+ const maxAutoSlippageBpsParam =
316
+ autoSlippage && maxAutoSlippageBps !== undefined
317
+ ? maxAutoSlippageBps.toString()
318
+ : '0';
319
+ const autoSlippageCollisionUsdValueParam =
320
+ autoSlippage && usdEstimate !== undefined ? usdEstimate.toString() : '0';
305
321
  const params = new URLSearchParams({
306
322
  inputMint: inputMint.toString(),
307
323
  outputMint: outputMint.toString(),
@@ -311,10 +327,8 @@ export class JupiterClient {
311
327
  onlyDirectRoutes: onlyDirectRoutes.toString(),
312
328
  maxAccounts: maxAccounts.toString(),
313
329
  autoSlippage: autoSlippage.toString(),
314
- maxAutoSlippageBps: autoSlippage ? maxAutoSlippageBps.toString() : '0',
315
- autoSlippageCollisionUsdValue: autoSlippage
316
- ? usdEstimate.toString()
317
- : '0',
330
+ maxAutoSlippageBps: maxAutoSlippageBpsParam,
331
+ autoSlippageCollisionUsdValue: autoSlippageCollisionUsdValueParam,
318
332
  ...(excludeDexes && { excludeDexes: excludeDexes.join(',') }),
319
333
  });
320
334
  if (swapMode === 'ExactOut') {
@@ -409,7 +423,9 @@ export class JupiterClient {
409
423
  return await this.getLookupTable(lookup.accountKey);
410
424
  })
411
425
  )
412
- ).filter((lookup) => lookup);
426
+ ).filter(
427
+ (lookup): lookup is AddressLookupTableAccount => lookup !== undefined
428
+ );
413
429
 
414
430
  const transactionMessage = TransactionMessage.decompile(message, {
415
431
  addressLookupTableAccounts: lookupTables,
@@ -422,12 +438,16 @@ export class JupiterClient {
422
438
 
423
439
  async getLookupTable(
424
440
  accountKey: PublicKey
425
- ): Promise<AddressLookupTableAccount> {
426
- if (this.lookupTableCahce.has(accountKey.toString())) {
427
- return this.lookupTableCahce.get(accountKey.toString());
441
+ ): Promise<AddressLookupTableAccount | undefined> {
442
+ const cached = this.lookupTableCahce.get(accountKey.toString());
443
+ if (cached !== undefined) {
444
+ return cached;
428
445
  }
429
446
 
430
- return (await this.connection.getAddressLookupTable(accountKey)).value;
447
+ return (
448
+ (await this.connection.getAddressLookupTable(accountKey)).value ??
449
+ undefined
450
+ );
431
451
  }
432
452
 
433
453
  /**
@@ -48,6 +48,7 @@ export class MarginContext {
48
48
  this.strict = false;
49
49
  this.ignoreInvalidDepositOracles = false;
50
50
  this.isolatedMarginBuffers = new Map();
51
+ this.crossMarginBuffer = ZERO;
51
52
  }
52
53
 
53
54
  static standard(marginType: MarginCategory): MarginContext {
@@ -11,10 +11,19 @@ const marinadeFinanceProgramId = new PublicKey(
11
11
  'MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD'
12
12
  );
13
13
 
14
+ // The Marinade SDK is built against anchor 0.29 (3-arg `new Program`), so the
15
+ // provider is typed against the anchor29 shim. Callers hold an anchor 1.0
16
+ // AnchorProvider, which is runtime-compatible but nominally distinct — accept it
17
+ // loosely and narrow at the construction boundary rather than leaking the cast to
18
+ // every call site.
14
19
  export function getMarinadeFinanceProgram(
15
- provider: AnchorProvider
20
+ provider: unknown
16
21
  ): Program<MarinadeFinance> {
17
- return new Program<MarinadeFinance>(IDL, marinadeFinanceProgramId, provider);
22
+ return new Program<MarinadeFinance>(
23
+ IDL,
24
+ marinadeFinanceProgramId,
25
+ provider as AnchorProvider
26
+ );
18
27
  }
19
28
 
20
29
  export function getMarinadeDepositIx({
package/src/math/amm.ts CHANGED
@@ -8,11 +8,11 @@ import {
8
8
  ONE,
9
9
  AMM_TO_QUOTE_PRECISION_RATIO,
10
10
  QUOTE_PRECISION,
11
- MARGIN_PRECISION,
12
11
  PRICE_DIV_PEG,
13
12
  PERCENTAGE_PRECISION,
14
13
  DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT,
15
14
  FUNDING_RATE_BUFFER_PRECISION,
15
+ FUNDING_RATE_OFFSET_PERCENTAGE,
16
16
  TWO,
17
17
  } from '../constants/numericConstants';
18
18
  import {
@@ -53,7 +53,6 @@ export function calculatePegFromTargetPrice(
53
53
 
54
54
  export function calculateOptimalPegAndBudget(
55
55
  amm: AMM,
56
- totalExchangeFee: BN,
57
56
  mmOraclePriceData: MMOraclePriceData
58
57
  ): [BN, BN, BN, boolean] {
59
58
  const reservePriceBefore = calculatePrice(
@@ -69,8 +68,9 @@ export function calculateOptimalPegAndBudget(
69
68
  );
70
69
  const prePegCost = calculateRepegCost(amm, newPeg);
71
70
 
72
- const totalFeeLB = totalExchangeFee.div(new BN(2));
73
- const budget = BN.max(ZERO, amm.totalFeeMinusDistributions.sub(totalFeeLB));
71
+ // no protocol floor post-isolation: tfmd contains only the AMM's own
72
+ // equity and is fully spendable on the repeg
73
+ const budget = BN.max(ZERO, amm.totalFeeMinusDistributions);
74
74
 
75
75
  let checkLowerBound = true;
76
76
  if (budget.lt(prePegCost)) {
@@ -103,9 +103,9 @@ export function calculateOptimalPegAndBudget(
103
103
  checkLowerBound = false;
104
104
 
105
105
  return [newTargetPrice, newOptimalPeg, newBudget, false];
106
- } else if (
107
- amm.totalFeeMinusDistributions.lt(totalExchangeFee.div(new BN(2)))
108
- ) {
106
+ } else if (budget.eq(ZERO)) {
107
+ // mirrors the program: budget = max(0, tfmd), so a zero budget
108
+ // means the AMM has no equity to spend (no floor post-isolation)
109
109
  checkLowerBound = false;
110
110
  }
111
111
  }
@@ -115,14 +115,13 @@ export function calculateOptimalPegAndBudget(
115
115
 
116
116
  export function calculateNewAmm(
117
117
  amm: AMM,
118
- totalExchangeFee: BN,
119
118
  mmOraclePriceData: MMOraclePriceData
120
119
  ): [BN, BN, BN, BN] {
121
120
  let pKNumer = new BN(1);
122
121
  let pKDenom = new BN(1);
123
122
 
124
123
  const [targetPrice, _newPeg, budget, _checkLowerBound] =
125
- calculateOptimalPegAndBudget(amm, totalExchangeFee, mmOraclePriceData);
124
+ calculateOptimalPegAndBudget(amm, mmOraclePriceData);
126
125
  let prePegCost = calculateRepegCost(amm, _newPeg);
127
126
  let newPeg = _newPeg;
128
127
 
@@ -158,8 +157,7 @@ export function calculateNewAmm(
158
157
 
159
158
  export function calculateUpdatedAMM(
160
159
  amm: AMM,
161
- totalExchangeFee: BN,
162
- mmOraclePriceData: MMOraclePriceData
160
+ mmOraclePriceData?: MMOraclePriceData
163
161
  ): AMM {
164
162
  if (amm.curveUpdateIntensity == 0 || mmOraclePriceData === undefined) {
165
163
  return amm;
@@ -167,7 +165,6 @@ export function calculateUpdatedAMM(
167
165
  const newAmm = Object.assign({}, amm);
168
166
  const [prepegCost, pKNumer, pKDenom, newPeg] = calculateNewAmm(
169
167
  amm,
170
- totalExchangeFee,
171
168
  mmOraclePriceData
172
169
  );
173
170
 
@@ -201,12 +198,11 @@ export function calculateUpdatedAMM(
201
198
  export function calculateUpdatedAMMSpreadReserves(
202
199
  amm: AMM,
203
200
  marketStats: MarketStats,
204
- totalExchangeFee: BN,
205
201
  direction: PositionDirection,
206
- mmOraclePriceData: MMOraclePriceData,
202
+ mmOraclePriceData?: MMOraclePriceData,
207
203
  latestSlot?: BN
208
204
  ): { baseAssetReserve: BN; quoteAssetReserve: BN; sqrtK: BN; newPeg: BN } {
209
- const newAmm = calculateUpdatedAMM(amm, totalExchangeFee, mmOraclePriceData);
205
+ const newAmm = calculateUpdatedAMM(amm, mmOraclePriceData);
210
206
  const [shortReserves, longReserves] = calculateSpreadReserves(
211
207
  newAmm,
212
208
  marketStats,
@@ -232,14 +228,13 @@ export function calculateUpdatedAMMSpreadReserves(
232
228
  export function calculateBidAskPrice(
233
229
  amm: AMM,
234
230
  marketStats: MarketStats,
235
- totalExchangeFee: BN,
236
- mmOraclePriceData: MMOraclePriceData,
231
+ mmOraclePriceData?: MMOraclePriceData,
237
232
  withUpdate = true,
238
233
  latestSlot?: BN
239
234
  ): [BN, BN] {
240
235
  let newAmm: AMM;
241
236
  if (withUpdate) {
242
- newAmm = calculateUpdatedAMM(amm, totalExchangeFee, mmOraclePriceData);
237
+ newAmm = calculateUpdatedAMM(amm, mmOraclePriceData);
243
238
  } else {
244
239
  newAmm = amm;
245
240
  }
@@ -557,14 +552,6 @@ export function calculateEffectiveLeverage(
557
552
  return effectiveLeverage;
558
553
  }
559
554
 
560
- export function calculateMaxSpread(marginRatioInitial: number): number {
561
- const maxTargetSpread: number = new BN(marginRatioInitial)
562
- .mul(BID_ASK_SPREAD_PRECISION.div(MARGIN_PRECISION))
563
- .toNumber();
564
-
565
- return maxTargetSpread;
566
- }
567
-
568
555
  export function calculateVolSpreadBN(
569
556
  lastOracleConfPct: BN,
570
557
  reservePrice: BN,
@@ -614,6 +601,81 @@ export function calculateVolSpreadBN(
614
601
  return [longVolSpread, shortVolSpread];
615
602
  }
616
603
 
604
+ /**
605
+ * Funding bias β(f) (BID_ASK_SPREAD_PRECISION): bounded multiplier for the
606
+ * paying-side spread while the vAMM is paying funding. Mirrors the program's
607
+ * `calculate_spread_funding_bias_scale`.
608
+ *
609
+ * ρ(f) = clamp(|f| / f_ref, 0, 1), f_ref = FUNDING_RATE_OFFSET_PERCENTAGE
610
+ * β(f) = 1 + s * ρ(f), s = fundingBiasSensitivity / 100
611
+ *
612
+ * f = 24h avg funding rate normalized to a daily fraction of the oracle twap
613
+ * captured at the last funding update. The vAMM pays when f * q < 0
614
+ * (q = baseAssetAmountWithAmm). Returns 1x when the vAMM receives funding or
615
+ * s = 0.
616
+ */
617
+ export function calculateSpreadFundingBiasScale(
618
+ baseAssetAmountWithAmm: BN,
619
+ last24HAvgFundingRate: BN,
620
+ lastFundingOracleTwap: BN,
621
+ fundingBiasSensitivity: number
622
+ ): number {
623
+ const one = BID_ASK_SPREAD_PRECISION.toNumber();
624
+ if (fundingBiasSensitivity === 0 || lastFundingOracleTwap.lte(ZERO)) {
625
+ return one;
626
+ }
627
+
628
+ // f: daily funding rate as a fraction of price, FUNDING_RATE_PRECISION
629
+ const fNorm = last24HAvgFundingRate
630
+ .mul(PRICE_PRECISION)
631
+ .div(lastFundingOracleTwap)
632
+ .muln(24);
633
+
634
+ // f * q >= 0: vAMM receives (or rate/inventory is zero), β = 1
635
+ if (fNorm.isZero() || baseAssetAmountWithAmm.isZero()) {
636
+ return one;
637
+ }
638
+ if (fNorm.isNeg() === baseAssetAmountWithAmm.isNeg()) {
639
+ return one;
640
+ }
641
+
642
+ // ρ = clamp(|f| / f_ref, 0, 1), PERCENTAGE_PRECISION
643
+ const ramp = BN.min(
644
+ fNorm.abs().mul(PERCENTAGE_PRECISION).div(FUNDING_RATE_OFFSET_PERCENTAGE),
645
+ PERCENTAGE_PRECISION
646
+ ).toNumber();
647
+
648
+ // β = 1 + s * ρ
649
+ return one + Math.floor((fundingBiasSensitivity * ramp) / 100);
650
+ }
651
+
652
+ export interface SpreadTerms {
653
+ longVolSpread: number;
654
+ shortVolSpread: number;
655
+ longSpreadwPS: number;
656
+ shortSpreadwPS: number;
657
+ maxTargetSpread: number;
658
+ inventorySpreadScale: number;
659
+ longSpreadwInvScale: number;
660
+ shortSpreadwInvScale: number;
661
+ effectiveLeverage: number;
662
+ effectiveLeverageCapped: number;
663
+ longSpreadwEL: number;
664
+ shortSpreadwEL: number;
665
+ revenueRetreatAmount: number;
666
+ halfRevenueRetreatAmount: number;
667
+ longSpreadwRevRetreat: number;
668
+ shortSpreadwRevRetreat: number;
669
+ fundingBiasScale: number;
670
+ longSpreadwFundingBias: number;
671
+ shortSpreadwFundingBias: number;
672
+ longSpreadwOffsetShrink: number;
673
+ shortSpreadwOffsetShrink: number;
674
+ totalSpread: number;
675
+ longSpread: number;
676
+ shortSpread: number;
677
+ }
678
+
617
679
  export function calculateSpreadBN(
618
680
  baseSpread: number,
619
681
  lastOracleReservePriceSpreadPct: BN,
@@ -635,8 +697,63 @@ export function calculateSpreadBN(
635
697
  shortIntensity: BN,
636
698
  volume24H: BN,
637
699
  ammInventorySpreadAdjustment: number,
700
+ last24HAvgFundingRate?: BN,
701
+ lastFundingOracleTwap?: BN,
702
+ fundingBiasSensitivity?: number,
703
+ returnTerms?: false
704
+ ): [number, number];
705
+ export function calculateSpreadBN(
706
+ baseSpread: number,
707
+ lastOracleReservePriceSpreadPct: BN,
708
+ lastOracleConfPct: BN,
709
+ maxSpread: number,
710
+ quoteAssetReserve: BN,
711
+ terminalQuoteAssetReserve: BN,
712
+ pegMultiplier: BN,
713
+ baseAssetAmountWithAmm: BN,
714
+ reservePrice: BN,
715
+ totalFeeMinusDistributions: BN,
716
+ netRevenueSinceLastFunding: BN,
717
+ baseAssetReserve: BN,
718
+ minBaseAssetReserve: BN,
719
+ maxBaseAssetReserve: BN,
720
+ markStd: BN,
721
+ oracleStd: BN,
722
+ longIntensity: BN,
723
+ shortIntensity: BN,
724
+ volume24H: BN,
725
+ ammInventorySpreadAdjustment: number,
726
+ last24HAvgFundingRate: BN,
727
+ lastFundingOracleTwap: BN,
728
+ fundingBiasSensitivity: number,
729
+ returnTerms: true
730
+ ): SpreadTerms;
731
+ export function calculateSpreadBN(
732
+ baseSpread: number,
733
+ lastOracleReservePriceSpreadPct: BN,
734
+ lastOracleConfPct: BN,
735
+ maxSpread: number,
736
+ quoteAssetReserve: BN,
737
+ terminalQuoteAssetReserve: BN,
738
+ pegMultiplier: BN,
739
+ baseAssetAmountWithAmm: BN,
740
+ reservePrice: BN,
741
+ totalFeeMinusDistributions: BN,
742
+ netRevenueSinceLastFunding: BN,
743
+ baseAssetReserve: BN,
744
+ minBaseAssetReserve: BN,
745
+ maxBaseAssetReserve: BN,
746
+ markStd: BN,
747
+ oracleStd: BN,
748
+ longIntensity: BN,
749
+ shortIntensity: BN,
750
+ volume24H: BN,
751
+ ammInventorySpreadAdjustment: number,
752
+ last24HAvgFundingRate: BN = ZERO,
753
+ lastFundingOracleTwap: BN = ZERO,
754
+ fundingBiasSensitivity = 0,
638
755
  returnTerms = false
639
- ) {
756
+ ): [number, number] | SpreadTerms {
640
757
  assert(Number.isInteger(baseSpread));
641
758
  assert(Number.isInteger(maxSpread));
642
759
 
@@ -657,6 +774,9 @@ export function calculateSpreadBN(
657
774
  halfRevenueRetreatAmount: 0,
658
775
  longSpreadwRevRetreat: 0,
659
776
  shortSpreadwRevRetreat: 0,
777
+ fundingBiasScale: 0,
778
+ longSpreadwFundingBias: 0,
779
+ shortSpreadwFundingBias: 0,
660
780
  longSpreadwOffsetShrink: 0,
661
781
  shortSpreadwOffsetShrink: 0,
662
782
  totalSpread: 0,
@@ -803,6 +923,32 @@ export function calculateSpreadBN(
803
923
  spreadTerms.longSpreadwRevRetreat = longSpread;
804
924
  spreadTerms.shortSpreadwRevRetreat = shortSpread;
805
925
 
926
+ // funding bias: w_pay = min(w_max, (w_0 * σ(q) * λ(q) + r(q)) * β(f)).
927
+ // β multiplies the fully built paying side only, selected by sign(q)
928
+ // (the same side σ widens); the max-spread cap below still bounds it.
929
+ // β = 1 when the vAMM receives.
930
+ const fundingBiasScale = calculateSpreadFundingBiasScale(
931
+ baseAssetAmountWithAmm,
932
+ last24HAvgFundingRate,
933
+ lastFundingOracleTwap,
934
+ fundingBiasSensitivity
935
+ );
936
+ const spreadPrecision = BID_ASK_SPREAD_PRECISION.toNumber();
937
+ if (fundingBiasScale > spreadPrecision) {
938
+ if (baseAssetAmountWithAmm.gt(ZERO)) {
939
+ longSpread = Math.floor(
940
+ (longSpread * fundingBiasScale) / spreadPrecision
941
+ );
942
+ } else if (baseAssetAmountWithAmm.lt(ZERO)) {
943
+ shortSpread = Math.floor(
944
+ (shortSpread * fundingBiasScale) / spreadPrecision
945
+ );
946
+ }
947
+ }
948
+ spreadTerms.fundingBiasScale = fundingBiasScale;
949
+ spreadTerms.longSpreadwFundingBias = longSpread;
950
+ spreadTerms.shortSpreadwFundingBias = shortSpread;
951
+
806
952
  if (ammInventorySpreadAdjustment < 0) {
807
953
  const adjustment = Math.abs(ammInventorySpreadAdjustment);
808
954
 
@@ -856,7 +1002,7 @@ export function calculateSpreadBN(
856
1002
  export function calculateSpread(
857
1003
  amm: AMM,
858
1004
  marketStats: MarketStats,
859
- oraclePriceData: OraclePriceData,
1005
+ oraclePriceData?: OraclePriceData,
860
1006
  now?: BN,
861
1007
  reservePrice?: BN
862
1008
  ): [number, number] {
@@ -864,6 +1010,12 @@ export function calculateSpread(
864
1010
  return [amm.baseSpread / 2, amm.baseSpread / 2];
865
1011
  }
866
1012
 
1013
+ if (!oraclePriceData) {
1014
+ throw new Error(
1015
+ 'calculateSpread: oraclePriceData is required when baseSpread and curveUpdateIntensity are nonzero'
1016
+ );
1017
+ }
1018
+
867
1019
  if (!reservePrice) {
868
1020
  reservePrice = calculatePrice(
869
1021
  amm.baseAssetReserve,
@@ -911,7 +1063,10 @@ export function calculateSpread(
911
1063
  marketStats.longIntensityVolume,
912
1064
  marketStats.shortIntensityVolume,
913
1065
  marketStats.volume24H,
914
- amm.ammInventorySpreadAdjustment
1066
+ amm.ammInventorySpreadAdjustment,
1067
+ marketStats.last24HAvgFundingRate,
1068
+ marketStats.lastFundingOracleTwap,
1069
+ amm.fundingBiasSensitivity
915
1070
  );
916
1071
  let longSpread = spreads[0];
917
1072
  let shortSpread = spreads[1];
@@ -942,7 +1097,7 @@ export function calculateSpread(
942
1097
  export function calculateSpreadReserves(
943
1098
  amm: AMM,
944
1099
  marketStats: MarketStats,
945
- mmOraclePriceData: MMOraclePriceData,
1100
+ mmOraclePriceData?: MMOraclePriceData,
946
1101
  now?: BN,
947
1102
  latestSlot?: BN
948
1103
  ) {
@@ -951,8 +1106,8 @@ export function calculateSpreadReserves(
951
1106
  direction: PositionDirection,
952
1107
  amm: AMM
953
1108
  ): {
954
- baseAssetReserve;
955
- quoteAssetReserve;
1109
+ baseAssetReserve: BN;
1110
+ quoteAssetReserve: BN;
956
1111
  } {
957
1112
  if (spread === 0) {
958
1113
  return {
@@ -1181,7 +1336,7 @@ export function calculateMaxBaseAssetAmountToTrade(
1181
1336
  marketStats: MarketStats,
1182
1337
  limit_price: BN,
1183
1338
  direction: PositionDirection,
1184
- mmOraclePriceData?: MMOraclePriceData,
1339
+ mmOraclePriceData: MMOraclePriceData,
1185
1340
  now?: BN
1186
1341
  ): [BN, PositionDirection] {
1187
1342
  const invariant = amm.sqrtK.mul(amm.sqrtK);
@@ -4,7 +4,7 @@ import { isVariant } from '../types';
4
4
  import { User } from '../user';
5
5
 
6
6
  export function isUserBankrupt(user: User): boolean {
7
- const userAccount = user.getUserAccount();
7
+ const userAccount = user.getUserAccountOrThrow();
8
8
  let hasLiability = false;
9
9
  for (const position of userAccount.spotPositions) {
10
10
  if (position.scaledBalance.gt(ZERO)) {
@@ -41,7 +41,6 @@ function calculateLiveMarkTwap(
41
41
  const [bid, ask] = calculateBidAskPrice(
42
42
  market.amm,
43
43
  market.marketStats,
44
- market.totalExchangeFee,
45
44
  mmOraclePriceData
46
45
  );
47
46
  markPrice = bid.add(ask).div(new BN(2));
@@ -156,6 +155,11 @@ export function calculateAllEstimatedFundingRate(
156
155
  now,
157
156
  market.marketStats.fundingPeriod
158
157
  );
158
+ if (!oraclePriceData) {
159
+ throw new Error(
160
+ 'calculateAllEstimatedFundingRate: oraclePriceData is required for an initialized market'
161
+ );
162
+ }
159
163
  const liveOracleTwap = calculateLiveOracleTwap(
160
164
  market.marketStats.historicalOracleData,
161
165
  oraclePriceData,
@@ -427,13 +431,10 @@ export function calculateLongShortFundingRateAndLiveTwaps(
427
431
  */
428
432
  export function calculateFundingPool(market: PerpMarketAccount): BN {
429
433
  // todo
430
- const totalFeeLB = market.totalExchangeFee.div(new BN(2));
434
+ // no protocol floor post-isolation: 1/3 of the AMM's own equity
431
435
  const feePool = BN.max(
432
436
  ZERO,
433
- market.amm.totalFeeMinusDistributions
434
- .sub(totalFeeLB)
435
- .mul(new BN(1))
436
- .div(new BN(3))
437
+ market.amm.totalFeeMinusDistributions.mul(new BN(1)).div(new BN(3))
437
438
  );
438
439
  return feePool;
439
440
  }
@@ -6,7 +6,7 @@ import { SpotBalanceType, SpotMarketAccount } from '../types';
6
6
  export function nextRevenuePoolSettleApr(
7
7
  spotMarket: SpotMarketAccount,
8
8
  vaultBalance: BN, // vault token amount
9
- amount?: BN // delta token amount
9
+ amount: BN // delta token amount
10
10
  ): number {
11
11
  const MAX_APR = new BN(10).mul(PERCENTAGE_PRECISION); // 1000% APR
12
12
 
@@ -18,13 +18,11 @@ export function nextRevenuePoolSettleApr(
18
18
  );
19
19
 
20
20
  const payoutRatio = 0.1;
21
- const ratioForStakers =
22
- spotMarket.insuranceFund.totalFactor > 0 &&
23
- spotMarket.insuranceFund.userFactor > 0 &&
24
- spotMarket.insuranceFund.revenueSettlePeriod.gt(ZERO)
25
- ? spotMarket.insuranceFund.userFactor /
26
- spotMarket.insuranceFund.totalFactor
27
- : 0;
21
+ // the insurance fund is 100% staker-owned: every settled token accrues to
22
+ // stakers as share-price appreciation (no protocol split)
23
+ const ratioForStakers = spotMarket.insuranceFund.revenueSettlePeriod.gt(ZERO)
24
+ ? 1
25
+ : 0;
28
26
 
29
27
  // Settle periods from on-chain data:
30
28
  const revSettlePeriod =