@velocity-exchange/sdk 0.2.5 → 0.4.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 (1057) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/README.md +3 -3
  3. package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
  4. package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
  5. package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
  6. package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
  7. package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
  8. package/lib/browser/accounts/bulkAccountLoader.js +51 -0
  9. package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
  10. package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
  11. package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
  12. package/lib/browser/accounts/bulkUserSubscription.js +8 -2
  13. package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
  14. package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
  15. package/lib/browser/accounts/fetch.d.ts +59 -2
  16. package/lib/browser/accounts/fetch.js +57 -2
  17. package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
  18. package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
  19. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
  20. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
  21. package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
  22. package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
  23. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
  24. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
  25. package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
  26. package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
  27. package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
  28. package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
  29. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
  30. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
  31. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
  32. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
  33. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
  34. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
  35. package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
  36. package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
  37. package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
  38. package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
  39. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
  40. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
  41. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
  42. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
  43. package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
  44. package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
  45. package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
  46. package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
  47. package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
  48. package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
  49. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
  50. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
  51. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
  52. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
  53. package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
  54. package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
  55. package/lib/browser/accounts/types.d.ts +149 -0
  56. package/lib/browser/accounts/types.js +13 -0
  57. package/lib/browser/accounts/utils.d.ts +18 -0
  58. package/lib/browser/accounts/utils.js +32 -16
  59. package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
  60. package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
  61. package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
  62. package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
  63. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
  64. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
  65. package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
  66. package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
  67. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
  68. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
  69. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
  70. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
  71. package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
  72. package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
  73. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  74. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
  75. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
  76. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
  77. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
  78. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
  79. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
  80. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
  81. package/lib/browser/addresses/marketAddresses.d.ts +10 -0
  82. package/lib/browser/addresses/marketAddresses.js +10 -0
  83. package/lib/browser/addresses/pda.d.ts +214 -2
  84. package/lib/browser/addresses/pda.js +217 -5
  85. package/lib/browser/adminClient.d.ts +2139 -5
  86. package/lib/browser/adminClient.js +2173 -11
  87. package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
  88. package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
  89. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
  90. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
  91. package/lib/browser/auctionSubscriber/index.d.ts +6 -0
  92. package/lib/browser/auctionSubscriber/index.js +6 -0
  93. package/lib/browser/auctionSubscriber/types.d.ts +7 -0
  94. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
  95. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
  96. package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
  97. package/lib/browser/blockhashSubscriber/index.js +5 -0
  98. package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
  99. package/lib/browser/clock/clockSubscriber.d.ts +24 -0
  100. package/lib/browser/clock/clockSubscriber.js +22 -0
  101. package/lib/browser/config.d.ts +58 -4
  102. package/lib/browser/config.js +88 -21
  103. package/lib/browser/constants/numericConstants.d.ts +67 -0
  104. package/lib/browser/constants/numericConstants.js +68 -1
  105. package/lib/browser/constants/perpMarkets.d.ts +10 -0
  106. package/lib/browser/constants/perpMarkets.js +40 -908
  107. package/lib/browser/constants/spotMarkets.d.ts +13 -0
  108. package/lib/browser/constants/spotMarkets.js +16 -742
  109. package/lib/browser/constants/txConstants.d.ts +1 -0
  110. package/lib/browser/constants/txConstants.js +1 -0
  111. package/lib/browser/core/VelocityCore.d.ts +285 -8
  112. package/lib/browser/core/VelocityCore.js +281 -8
  113. package/lib/browser/core/instructions/deposit.d.ts +22 -0
  114. package/lib/browser/core/instructions/deposit.js +22 -0
  115. package/lib/browser/core/instructions/fill.d.ts +17 -0
  116. package/lib/browser/core/instructions/fill.js +17 -0
  117. package/lib/browser/core/instructions/funding.d.ts +12 -0
  118. package/lib/browser/core/instructions/funding.js +12 -0
  119. package/lib/browser/core/instructions/liquidation.d.ts +18 -0
  120. package/lib/browser/core/instructions/liquidation.js +18 -0
  121. package/lib/browser/core/instructions/orders.d.ts +28 -0
  122. package/lib/browser/core/instructions/orders.js +28 -0
  123. package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
  124. package/lib/browser/core/instructions/perpOrders.js +106 -0
  125. package/lib/browser/core/instructions/settlement.d.ts +14 -0
  126. package/lib/browser/core/instructions/settlement.js +14 -0
  127. package/lib/browser/core/instructions/trigger.d.ts +15 -0
  128. package/lib/browser/core/instructions/trigger.js +15 -0
  129. package/lib/browser/core/instructions/withdraw.d.ts +21 -0
  130. package/lib/browser/core/instructions/withdraw.js +21 -0
  131. package/lib/browser/core/remainingAccounts.d.ts +47 -3
  132. package/lib/browser/core/remainingAccounts.js +20 -0
  133. package/lib/browser/core/signedMsg.d.ts +38 -0
  134. package/lib/browser/core/signedMsg.js +33 -0
  135. package/lib/browser/decode/customCoder.d.ts +39 -3
  136. package/lib/browser/decode/customCoder.js +45 -3
  137. package/lib/browser/decode/user.d.ts +22 -0
  138. package/lib/browser/decode/user.js +22 -0
  139. package/lib/browser/dlob/DLOB.d.ts +502 -53
  140. package/lib/browser/dlob/DLOB.js +540 -98
  141. package/lib/browser/dlob/DLOBNode.d.ts +86 -4
  142. package/lib/browser/dlob/DLOBNode.js +37 -4
  143. package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
  144. package/lib/browser/dlob/DLOBSubscriber.js +42 -12
  145. package/lib/browser/dlob/NodeList.d.ts +69 -0
  146. package/lib/browser/dlob/NodeList.js +66 -0
  147. package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
  148. package/lib/browser/dlob/orderBookLevels.js +84 -14
  149. package/lib/browser/dlob/types.d.ts +15 -0
  150. package/lib/browser/events/eventList.d.ts +14 -0
  151. package/lib/browser/events/eventList.js +14 -0
  152. package/lib/browser/events/eventSubscriber.d.ts +87 -10
  153. package/lib/browser/events/eventSubscriber.js +93 -8
  154. package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
  155. package/lib/browser/events/eventsServerLogProvider.js +27 -0
  156. package/lib/browser/events/fetchLogs.d.ts +31 -0
  157. package/lib/browser/events/fetchLogs.js +46 -1
  158. package/lib/browser/events/parse.d.ts +23 -0
  159. package/lib/browser/events/parse.js +23 -0
  160. package/lib/browser/events/pollingLogProvider.d.ts +24 -0
  161. package/lib/browser/events/pollingLogProvider.js +24 -0
  162. package/lib/browser/events/sort.d.ts +11 -0
  163. package/lib/browser/events/sort.js +12 -0
  164. package/lib/browser/events/txEventCache.d.ts +13 -3
  165. package/lib/browser/events/txEventCache.js +19 -7
  166. package/lib/browser/events/types.d.ts +118 -2
  167. package/lib/browser/events/types.js +11 -0
  168. package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
  169. package/lib/browser/events/webSocketLogProvider.js +28 -0
  170. package/lib/browser/factory/oracleClient.js +2 -2
  171. package/lib/browser/idl/velocity.d.ts +50 -1
  172. package/lib/browser/idl/velocity.json +50 -1
  173. package/lib/browser/keypair.d.ts +8 -0
  174. package/lib/browser/keypair.js +8 -0
  175. package/lib/browser/marginCalculation.d.ts +134 -2
  176. package/lib/browser/marginCalculation.js +121 -0
  177. package/lib/browser/math/amm.d.ts +348 -29
  178. package/lib/browser/math/amm.js +310 -32
  179. package/lib/browser/math/auction.d.ts +95 -19
  180. package/lib/browser/math/auction.js +118 -28
  181. package/lib/browser/math/bankruptcy.d.ts +46 -0
  182. package/lib/browser/math/bankruptcy.js +89 -1
  183. package/lib/browser/math/builder.d.ts +64 -8
  184. package/lib/browser/math/builder.js +71 -9
  185. package/lib/browser/math/conversion.d.ts +21 -0
  186. package/lib/browser/math/conversion.js +21 -0
  187. package/lib/browser/math/exchangeStatus.d.ts +92 -0
  188. package/lib/browser/math/exchangeStatus.js +111 -1
  189. package/lib/browser/math/funding.d.ts +57 -20
  190. package/lib/browser/math/funding.js +63 -23
  191. package/lib/browser/math/insurance.d.ts +62 -0
  192. package/lib/browser/math/insurance.js +62 -0
  193. package/lib/browser/math/liquidation.d.ts +127 -11
  194. package/lib/browser/math/liquidation.js +182 -19
  195. package/lib/browser/math/margin.d.ts +79 -13
  196. package/lib/browser/math/margin.js +80 -14
  197. package/lib/browser/math/market.d.ts +135 -15
  198. package/lib/browser/math/market.js +145 -17
  199. package/lib/browser/math/oracles.d.ts +113 -0
  200. package/lib/browser/math/oracles.js +118 -1
  201. package/lib/browser/math/orders.d.ts +115 -7
  202. package/lib/browser/math/orders.js +133 -18
  203. package/lib/browser/math/position.d.ts +80 -33
  204. package/lib/browser/math/position.js +80 -33
  205. package/lib/browser/math/repeg.d.ts +48 -10
  206. package/lib/browser/math/repeg.js +48 -10
  207. package/lib/browser/math/spotBalance.d.ts +200 -5
  208. package/lib/browser/math/spotBalance.js +239 -10
  209. package/lib/browser/math/spotMarket.d.ts +36 -3
  210. package/lib/browser/math/spotMarket.js +36 -3
  211. package/lib/browser/math/spotPosition.d.ts +72 -0
  212. package/lib/browser/math/spotPosition.js +62 -0
  213. package/lib/browser/math/state.d.ts +31 -0
  214. package/lib/browser/math/state.js +32 -1
  215. package/lib/browser/math/superStake.d.ts +126 -2
  216. package/lib/browser/math/superStake.js +123 -3
  217. package/lib/browser/math/tiers.d.ts +29 -0
  218. package/lib/browser/math/tiers.js +29 -0
  219. package/lib/browser/math/trade.d.ts +102 -51
  220. package/lib/browser/math/trade.js +101 -55
  221. package/lib/browser/math/utils.d.ts +71 -9
  222. package/lib/browser/math/utils.js +71 -9
  223. package/lib/browser/memcmp.d.ts +94 -0
  224. package/lib/browser/memcmp.js +129 -7
  225. package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
  226. package/lib/browser/oracles/oracleClientCache.js +16 -0
  227. package/lib/browser/oracles/oracleId.d.ts +31 -0
  228. package/lib/browser/oracles/oracleId.js +39 -8
  229. package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
  230. package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
  231. package/lib/browser/oracles/pythClient.d.ts +31 -0
  232. package/lib/browser/oracles/pythClient.js +32 -1
  233. package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
  234. package/lib/browser/oracles/pythLazerClient.js +35 -1
  235. package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
  236. package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
  237. package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
  238. package/lib/browser/oracles/strictOraclePrice.js +21 -0
  239. package/lib/browser/oracles/types.d.ts +45 -0
  240. package/lib/browser/oracles/utils.d.ts +20 -0
  241. package/lib/browser/oracles/utils.js +20 -0
  242. package/lib/browser/orderParams.d.ts +42 -4
  243. package/lib/browser/orderParams.js +42 -4
  244. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
  245. package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
  246. package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
  247. package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
  248. package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
  249. package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
  250. package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
  251. package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
  252. package/lib/browser/orderSubscriber/types.d.ts +9 -0
  253. package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
  254. package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
  255. package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
  256. package/lib/browser/priorityFee/averageStrategy.js +1 -0
  257. package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
  258. package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
  259. package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
  260. package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
  261. package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
  262. package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
  263. package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
  264. package/lib/browser/priorityFee/maxStrategy.js +1 -0
  265. package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
  266. package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
  267. package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
  268. package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
  269. package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
  270. package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
  271. package/lib/browser/priorityFee/types.d.ts +32 -0
  272. package/lib/browser/priorityFee/types.js +5 -0
  273. package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
  274. package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
  275. package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
  276. package/lib/browser/slot/SlotSubscriber.js +16 -0
  277. package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
  278. package/lib/browser/slot/SlothashSubscriber.js +25 -1
  279. package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
  280. package/lib/browser/tokenFaucet.d.ts +2 -2
  281. package/lib/browser/tokenFaucet.js +11 -4
  282. package/lib/browser/tx/baseTxSender.d.ts +163 -0
  283. package/lib/browser/tx/baseTxSender.js +174 -6
  284. package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
  285. package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
  286. package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
  287. package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
  288. package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
  289. package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
  290. package/lib/browser/tx/fastSingleTxSender.js +48 -1
  291. package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
  292. package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
  293. package/lib/browser/tx/reportTransactionError.d.ts +18 -6
  294. package/lib/browser/tx/reportTransactionError.js +18 -6
  295. package/lib/browser/tx/retryTxSender.d.ts +40 -0
  296. package/lib/browser/tx/retryTxSender.js +39 -0
  297. package/lib/browser/tx/txHandler.d.ts +146 -35
  298. package/lib/browser/tx/txHandler.js +132 -32
  299. package/lib/browser/tx/txParamProcessor.d.ts +47 -0
  300. package/lib/browser/tx/txParamProcessor.js +47 -0
  301. package/lib/browser/tx/types.d.ts +46 -0
  302. package/lib/browser/tx/types.js +5 -0
  303. package/lib/browser/tx/utils.d.ts +26 -0
  304. package/lib/browser/tx/utils.js +26 -0
  305. package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
  306. package/lib/browser/tx/whileValidTxSender.js +81 -0
  307. package/lib/browser/types.d.ts +786 -13
  308. package/lib/browser/types.js +133 -9
  309. package/lib/browser/user.d.ts +645 -84
  310. package/lib/browser/user.js +779 -96
  311. package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
  312. package/lib/browser/userMap/PollingSubscription.js +14 -2
  313. package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
  314. package/lib/browser/userMap/WebsocketSubscription.js +9 -0
  315. package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
  316. package/lib/browser/userMap/grpcSubscription.js +8 -0
  317. package/lib/browser/userMap/referrerMap.d.ts +72 -2
  318. package/lib/browser/userMap/referrerMap.js +84 -2
  319. package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
  320. package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
  321. package/lib/browser/userMap/userMap.d.ts +81 -3
  322. package/lib/browser/userMap/userMap.js +81 -4
  323. package/lib/browser/userMap/userMapConfig.d.ts +23 -0
  324. package/lib/browser/userMap/userStatsMap.d.ts +22 -0
  325. package/lib/browser/userMap/userStatsMap.js +22 -0
  326. package/lib/browser/userName.d.ts +16 -0
  327. package/lib/browser/userName.js +16 -0
  328. package/lib/browser/userStats.d.ts +28 -1
  329. package/lib/browser/userStats.js +28 -1
  330. package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
  331. package/lib/browser/util/TransactionConfirmationManager.js +33 -0
  332. package/lib/browser/util/chainClock.d.ts +24 -0
  333. package/lib/browser/util/chainClock.js +20 -0
  334. package/lib/browser/util/computeUnits.d.ts +32 -0
  335. package/lib/browser/util/computeUnits.js +32 -0
  336. package/lib/browser/util/digest.d.ts +17 -0
  337. package/lib/browser/util/digest.js +17 -0
  338. package/lib/browser/util/ed25519Utils.d.ts +12 -2
  339. package/lib/browser/util/ed25519Utils.js +12 -2
  340. package/lib/browser/util/promiseTimeout.d.ts +9 -0
  341. package/lib/browser/util/promiseTimeout.js +9 -0
  342. package/lib/browser/velocityClient.d.ts +3323 -216
  343. package/lib/browser/velocityClient.js +3428 -249
  344. package/lib/browser/wallet.d.ts +37 -0
  345. package/lib/browser/wallet.js +37 -0
  346. package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
  347. package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
  348. package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
  349. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
  350. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
  351. package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
  352. package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
  353. package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
  354. package/lib/node/accounts/bulkAccountLoader.js +51 -0
  355. package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
  356. package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
  357. package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
  358. package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
  359. package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
  360. package/lib/node/accounts/bulkUserSubscription.js +8 -2
  361. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
  362. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
  363. package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
  364. package/lib/node/accounts/fetch.d.ts +59 -2
  365. package/lib/node/accounts/fetch.d.ts.map +1 -1
  366. package/lib/node/accounts/fetch.js +57 -2
  367. package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
  368. package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
  369. package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
  370. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
  371. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  372. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
  373. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
  374. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
  375. package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
  376. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
  377. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
  378. package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
  379. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
  380. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
  381. package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
  382. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
  383. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
  384. package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
  385. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
  386. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
  387. package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
  388. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
  389. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
  390. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
  391. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
  392. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  393. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
  394. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
  395. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
  396. package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
  397. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
  398. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
  399. package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
  400. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
  401. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
  402. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
  403. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
  404. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  405. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
  406. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
  407. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
  408. package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
  409. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
  410. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
  411. package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
  412. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
  413. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
  414. package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
  415. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
  416. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
  417. package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
  418. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
  419. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
  420. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
  421. package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
  422. package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
  423. package/lib/node/accounts/testBulkAccountLoader.js +8 -0
  424. package/lib/node/accounts/types.d.ts +149 -0
  425. package/lib/node/accounts/types.d.ts.map +1 -1
  426. package/lib/node/accounts/types.js +13 -0
  427. package/lib/node/accounts/utils.d.ts +18 -0
  428. package/lib/node/accounts/utils.d.ts.map +1 -1
  429. package/lib/node/accounts/utils.js +32 -16
  430. package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
  431. package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
  432. package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
  433. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
  434. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
  435. package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
  436. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
  437. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  438. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
  439. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
  440. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
  441. package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
  442. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
  443. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
  444. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
  445. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
  446. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
  447. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
  448. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
  449. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
  450. package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
  451. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  452. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
  453. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
  454. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
  455. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
  456. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
  457. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
  458. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  459. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
  460. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
  461. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
  462. package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
  463. package/lib/node/addresses/marketAddresses.d.ts +10 -0
  464. package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
  465. package/lib/node/addresses/marketAddresses.js +10 -0
  466. package/lib/node/addresses/pda.d.ts +214 -2
  467. package/lib/node/addresses/pda.d.ts.map +1 -1
  468. package/lib/node/addresses/pda.js +217 -5
  469. package/lib/node/adminClient.d.ts +2139 -5
  470. package/lib/node/adminClient.d.ts.map +1 -1
  471. package/lib/node/adminClient.js +2173 -11
  472. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
  473. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
  474. package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
  475. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
  476. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
  477. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
  478. package/lib/node/auctionSubscriber/index.d.ts +6 -0
  479. package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
  480. package/lib/node/auctionSubscriber/index.js +6 -0
  481. package/lib/node/auctionSubscriber/types.d.ts +7 -0
  482. package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
  483. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
  484. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
  485. package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
  486. package/lib/node/blockhashSubscriber/index.d.ts +5 -0
  487. package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
  488. package/lib/node/blockhashSubscriber/index.js +5 -0
  489. package/lib/node/blockhashSubscriber/types.d.ts +5 -0
  490. package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
  491. package/lib/node/clock/clockSubscriber.d.ts +24 -0
  492. package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
  493. package/lib/node/clock/clockSubscriber.js +22 -0
  494. package/lib/node/config.d.ts +58 -4
  495. package/lib/node/config.d.ts.map +1 -1
  496. package/lib/node/config.js +88 -21
  497. package/lib/node/constants/numericConstants.d.ts +67 -0
  498. package/lib/node/constants/numericConstants.d.ts.map +1 -1
  499. package/lib/node/constants/numericConstants.js +68 -1
  500. package/lib/node/constants/perpMarkets.d.ts +10 -0
  501. package/lib/node/constants/perpMarkets.d.ts.map +1 -1
  502. package/lib/node/constants/perpMarkets.js +40 -908
  503. package/lib/node/constants/spotMarkets.d.ts +13 -0
  504. package/lib/node/constants/spotMarkets.d.ts.map +1 -1
  505. package/lib/node/constants/spotMarkets.js +16 -742
  506. package/lib/node/constants/txConstants.d.ts +1 -0
  507. package/lib/node/constants/txConstants.d.ts.map +1 -1
  508. package/lib/node/constants/txConstants.js +1 -0
  509. package/lib/node/core/VelocityCore.d.ts +285 -8
  510. package/lib/node/core/VelocityCore.d.ts.map +1 -1
  511. package/lib/node/core/VelocityCore.js +281 -8
  512. package/lib/node/core/instructions/deposit.d.ts +22 -0
  513. package/lib/node/core/instructions/deposit.d.ts.map +1 -1
  514. package/lib/node/core/instructions/deposit.js +22 -0
  515. package/lib/node/core/instructions/fill.d.ts +17 -0
  516. package/lib/node/core/instructions/fill.d.ts.map +1 -1
  517. package/lib/node/core/instructions/fill.js +17 -0
  518. package/lib/node/core/instructions/funding.d.ts +12 -0
  519. package/lib/node/core/instructions/funding.d.ts.map +1 -1
  520. package/lib/node/core/instructions/funding.js +12 -0
  521. package/lib/node/core/instructions/liquidation.d.ts +18 -0
  522. package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
  523. package/lib/node/core/instructions/liquidation.js +18 -0
  524. package/lib/node/core/instructions/orders.d.ts +28 -0
  525. package/lib/node/core/instructions/orders.d.ts.map +1 -1
  526. package/lib/node/core/instructions/orders.js +28 -0
  527. package/lib/node/core/instructions/perpOrders.d.ts +106 -0
  528. package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
  529. package/lib/node/core/instructions/perpOrders.js +106 -0
  530. package/lib/node/core/instructions/settlement.d.ts +14 -0
  531. package/lib/node/core/instructions/settlement.d.ts.map +1 -1
  532. package/lib/node/core/instructions/settlement.js +14 -0
  533. package/lib/node/core/instructions/trigger.d.ts +15 -0
  534. package/lib/node/core/instructions/trigger.d.ts.map +1 -1
  535. package/lib/node/core/instructions/trigger.js +15 -0
  536. package/lib/node/core/instructions/withdraw.d.ts +21 -0
  537. package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
  538. package/lib/node/core/instructions/withdraw.js +21 -0
  539. package/lib/node/core/remainingAccounts.d.ts +47 -3
  540. package/lib/node/core/remainingAccounts.d.ts.map +1 -1
  541. package/lib/node/core/remainingAccounts.js +20 -0
  542. package/lib/node/core/signedMsg.d.ts +38 -0
  543. package/lib/node/core/signedMsg.d.ts.map +1 -1
  544. package/lib/node/core/signedMsg.js +33 -0
  545. package/lib/node/decode/customCoder.d.ts +39 -3
  546. package/lib/node/decode/customCoder.d.ts.map +1 -1
  547. package/lib/node/decode/customCoder.js +45 -3
  548. package/lib/node/decode/user.d.ts +22 -0
  549. package/lib/node/decode/user.d.ts.map +1 -1
  550. package/lib/node/decode/user.js +22 -0
  551. package/lib/node/dlob/DLOB.d.ts +502 -53
  552. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  553. package/lib/node/dlob/DLOB.js +540 -98
  554. package/lib/node/dlob/DLOBNode.d.ts +86 -4
  555. package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
  556. package/lib/node/dlob/DLOBNode.js +37 -4
  557. package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
  558. package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
  559. package/lib/node/dlob/DLOBSubscriber.js +42 -12
  560. package/lib/node/dlob/NodeList.d.ts +69 -0
  561. package/lib/node/dlob/NodeList.d.ts.map +1 -1
  562. package/lib/node/dlob/NodeList.js +66 -0
  563. package/lib/node/dlob/orderBookLevels.d.ts +106 -13
  564. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  565. package/lib/node/dlob/orderBookLevels.js +84 -14
  566. package/lib/node/dlob/types.d.ts +15 -0
  567. package/lib/node/dlob/types.d.ts.map +1 -1
  568. package/lib/node/events/eventList.d.ts +14 -0
  569. package/lib/node/events/eventList.d.ts.map +1 -1
  570. package/lib/node/events/eventList.js +14 -0
  571. package/lib/node/events/eventSubscriber.d.ts +87 -10
  572. package/lib/node/events/eventSubscriber.d.ts.map +1 -1
  573. package/lib/node/events/eventSubscriber.js +93 -8
  574. package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
  575. package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
  576. package/lib/node/events/eventsServerLogProvider.js +27 -0
  577. package/lib/node/events/fetchLogs.d.ts +31 -0
  578. package/lib/node/events/fetchLogs.d.ts.map +1 -1
  579. package/lib/node/events/fetchLogs.js +46 -1
  580. package/lib/node/events/parse.d.ts +23 -0
  581. package/lib/node/events/parse.d.ts.map +1 -1
  582. package/lib/node/events/parse.js +23 -0
  583. package/lib/node/events/pollingLogProvider.d.ts +24 -0
  584. package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
  585. package/lib/node/events/pollingLogProvider.js +24 -0
  586. package/lib/node/events/sort.d.ts +11 -0
  587. package/lib/node/events/sort.d.ts.map +1 -1
  588. package/lib/node/events/sort.js +12 -0
  589. package/lib/node/events/txEventCache.d.ts +13 -3
  590. package/lib/node/events/txEventCache.d.ts.map +1 -1
  591. package/lib/node/events/txEventCache.js +19 -7
  592. package/lib/node/events/types.d.ts +118 -2
  593. package/lib/node/events/types.d.ts.map +1 -1
  594. package/lib/node/events/types.js +11 -0
  595. package/lib/node/events/webSocketLogProvider.d.ts +23 -0
  596. package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
  597. package/lib/node/events/webSocketLogProvider.js +28 -0
  598. package/lib/node/factory/oracleClient.js +2 -2
  599. package/lib/node/idl/velocity.d.ts +50 -1
  600. package/lib/node/idl/velocity.d.ts.map +1 -1
  601. package/lib/node/idl/velocity.json +50 -1
  602. package/lib/node/keypair.d.ts +8 -0
  603. package/lib/node/keypair.d.ts.map +1 -1
  604. package/lib/node/keypair.js +8 -0
  605. package/lib/node/marginCalculation.d.ts +134 -2
  606. package/lib/node/marginCalculation.d.ts.map +1 -1
  607. package/lib/node/marginCalculation.js +121 -0
  608. package/lib/node/math/amm.d.ts +348 -29
  609. package/lib/node/math/amm.d.ts.map +1 -1
  610. package/lib/node/math/amm.js +310 -32
  611. package/lib/node/math/auction.d.ts +95 -19
  612. package/lib/node/math/auction.d.ts.map +1 -1
  613. package/lib/node/math/auction.js +118 -28
  614. package/lib/node/math/bankruptcy.d.ts +46 -0
  615. package/lib/node/math/bankruptcy.d.ts.map +1 -1
  616. package/lib/node/math/bankruptcy.js +89 -1
  617. package/lib/node/math/builder.d.ts +64 -8
  618. package/lib/node/math/builder.d.ts.map +1 -1
  619. package/lib/node/math/builder.js +71 -9
  620. package/lib/node/math/conversion.d.ts +21 -0
  621. package/lib/node/math/conversion.d.ts.map +1 -1
  622. package/lib/node/math/conversion.js +21 -0
  623. package/lib/node/math/exchangeStatus.d.ts +92 -0
  624. package/lib/node/math/exchangeStatus.d.ts.map +1 -1
  625. package/lib/node/math/exchangeStatus.js +111 -1
  626. package/lib/node/math/funding.d.ts +57 -20
  627. package/lib/node/math/funding.d.ts.map +1 -1
  628. package/lib/node/math/funding.js +63 -23
  629. package/lib/node/math/insurance.d.ts +62 -0
  630. package/lib/node/math/insurance.d.ts.map +1 -1
  631. package/lib/node/math/insurance.js +62 -0
  632. package/lib/node/math/liquidation.d.ts +127 -11
  633. package/lib/node/math/liquidation.d.ts.map +1 -1
  634. package/lib/node/math/liquidation.js +182 -19
  635. package/lib/node/math/margin.d.ts +79 -13
  636. package/lib/node/math/margin.d.ts.map +1 -1
  637. package/lib/node/math/margin.js +80 -14
  638. package/lib/node/math/market.d.ts +135 -15
  639. package/lib/node/math/market.d.ts.map +1 -1
  640. package/lib/node/math/market.js +145 -17
  641. package/lib/node/math/oracles.d.ts +113 -0
  642. package/lib/node/math/oracles.d.ts.map +1 -1
  643. package/lib/node/math/oracles.js +118 -1
  644. package/lib/node/math/orders.d.ts +115 -7
  645. package/lib/node/math/orders.d.ts.map +1 -1
  646. package/lib/node/math/orders.js +133 -18
  647. package/lib/node/math/position.d.ts +80 -33
  648. package/lib/node/math/position.d.ts.map +1 -1
  649. package/lib/node/math/position.js +80 -33
  650. package/lib/node/math/repeg.d.ts +48 -10
  651. package/lib/node/math/repeg.d.ts.map +1 -1
  652. package/lib/node/math/repeg.js +48 -10
  653. package/lib/node/math/spotBalance.d.ts +200 -5
  654. package/lib/node/math/spotBalance.d.ts.map +1 -1
  655. package/lib/node/math/spotBalance.js +239 -10
  656. package/lib/node/math/spotMarket.d.ts +36 -3
  657. package/lib/node/math/spotMarket.d.ts.map +1 -1
  658. package/lib/node/math/spotMarket.js +36 -3
  659. package/lib/node/math/spotPosition.d.ts +72 -0
  660. package/lib/node/math/spotPosition.d.ts.map +1 -1
  661. package/lib/node/math/spotPosition.js +62 -0
  662. package/lib/node/math/state.d.ts +31 -0
  663. package/lib/node/math/state.d.ts.map +1 -1
  664. package/lib/node/math/state.js +32 -1
  665. package/lib/node/math/superStake.d.ts +126 -2
  666. package/lib/node/math/superStake.d.ts.map +1 -1
  667. package/lib/node/math/superStake.js +123 -3
  668. package/lib/node/math/tiers.d.ts +29 -0
  669. package/lib/node/math/tiers.d.ts.map +1 -1
  670. package/lib/node/math/tiers.js +29 -0
  671. package/lib/node/math/trade.d.ts +102 -51
  672. package/lib/node/math/trade.d.ts.map +1 -1
  673. package/lib/node/math/trade.js +101 -55
  674. package/lib/node/math/utils.d.ts +71 -9
  675. package/lib/node/math/utils.d.ts.map +1 -1
  676. package/lib/node/math/utils.js +71 -9
  677. package/lib/node/memcmp.d.ts +94 -0
  678. package/lib/node/memcmp.d.ts.map +1 -1
  679. package/lib/node/memcmp.js +129 -7
  680. package/lib/node/oracles/oracleClientCache.d.ts +16 -0
  681. package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
  682. package/lib/node/oracles/oracleClientCache.js +16 -0
  683. package/lib/node/oracles/oracleId.d.ts +31 -0
  684. package/lib/node/oracles/oracleId.d.ts.map +1 -1
  685. package/lib/node/oracles/oracleId.js +39 -8
  686. package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
  687. package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
  688. package/lib/node/oracles/prelaunchOracleClient.js +20 -0
  689. package/lib/node/oracles/pythClient.d.ts +31 -0
  690. package/lib/node/oracles/pythClient.d.ts.map +1 -1
  691. package/lib/node/oracles/pythClient.js +32 -1
  692. package/lib/node/oracles/pythLazerClient.d.ts +34 -0
  693. package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
  694. package/lib/node/oracles/pythLazerClient.js +35 -1
  695. package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
  696. package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
  697. package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
  698. package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
  699. package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
  700. package/lib/node/oracles/strictOraclePrice.js +21 -0
  701. package/lib/node/oracles/types.d.ts +45 -0
  702. package/lib/node/oracles/types.d.ts.map +1 -1
  703. package/lib/node/oracles/utils.d.ts +20 -0
  704. package/lib/node/oracles/utils.d.ts.map +1 -1
  705. package/lib/node/oracles/utils.js +20 -0
  706. package/lib/node/orderParams.d.ts +42 -4
  707. package/lib/node/orderParams.d.ts.map +1 -1
  708. package/lib/node/orderParams.js +42 -4
  709. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
  710. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  711. package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
  712. package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
  713. package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
  714. package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
  715. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
  716. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
  717. package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
  718. package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
  719. package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
  720. package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
  721. package/lib/node/orderSubscriber/types.d.ts +9 -0
  722. package/lib/node/orderSubscriber/types.d.ts.map +1 -1
  723. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
  724. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
  725. package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
  726. package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
  727. package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
  728. package/lib/node/priorityFee/averageStrategy.js +1 -0
  729. package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
  730. package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
  731. package/lib/node/priorityFee/ewmaStrategy.js +10 -0
  732. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
  733. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
  734. package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
  735. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
  736. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
  737. package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
  738. package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
  739. package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
  740. package/lib/node/priorityFee/maxStrategy.js +1 -0
  741. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
  742. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
  743. package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
  744. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
  745. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
  746. package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
  747. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
  748. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
  749. package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
  750. package/lib/node/priorityFee/types.d.ts +32 -0
  751. package/lib/node/priorityFee/types.d.ts.map +1 -1
  752. package/lib/node/priorityFee/types.js +5 -0
  753. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
  754. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
  755. package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
  756. package/lib/node/slot/SlotSubscriber.d.ts +18 -0
  757. package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
  758. package/lib/node/slot/SlotSubscriber.js +16 -0
  759. package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
  760. package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
  761. package/lib/node/slot/SlothashSubscriber.js +25 -1
  762. package/lib/node/swift/swiftOrderSubscriber.js +2 -2
  763. package/lib/node/tokenFaucet.d.ts +2 -2
  764. package/lib/node/tokenFaucet.d.ts.map +1 -1
  765. package/lib/node/tokenFaucet.js +11 -4
  766. package/lib/node/tx/baseTxSender.d.ts +163 -0
  767. package/lib/node/tx/baseTxSender.d.ts.map +1 -1
  768. package/lib/node/tx/baseTxSender.js +174 -6
  769. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
  770. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
  771. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
  772. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
  773. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
  774. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
  775. package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
  776. package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
  777. package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
  778. package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
  779. package/lib/node/tx/fastSingleTxSender.js +48 -1
  780. package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
  781. package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
  782. package/lib/node/tx/forwardOnlyTxSender.js +48 -0
  783. package/lib/node/tx/reportTransactionError.d.ts +18 -6
  784. package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
  785. package/lib/node/tx/reportTransactionError.js +18 -6
  786. package/lib/node/tx/retryTxSender.d.ts +40 -0
  787. package/lib/node/tx/retryTxSender.d.ts.map +1 -1
  788. package/lib/node/tx/retryTxSender.js +39 -0
  789. package/lib/node/tx/txHandler.d.ts +146 -35
  790. package/lib/node/tx/txHandler.d.ts.map +1 -1
  791. package/lib/node/tx/txHandler.js +132 -32
  792. package/lib/node/tx/txParamProcessor.d.ts +47 -0
  793. package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
  794. package/lib/node/tx/txParamProcessor.js +47 -0
  795. package/lib/node/tx/types.d.ts +46 -0
  796. package/lib/node/tx/types.d.ts.map +1 -1
  797. package/lib/node/tx/types.js +5 -0
  798. package/lib/node/tx/utils.d.ts +26 -0
  799. package/lib/node/tx/utils.d.ts.map +1 -1
  800. package/lib/node/tx/utils.js +26 -0
  801. package/lib/node/tx/whileValidTxSender.d.ts +82 -0
  802. package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
  803. package/lib/node/tx/whileValidTxSender.js +81 -0
  804. package/lib/node/types.d.ts +786 -13
  805. package/lib/node/types.d.ts.map +1 -1
  806. package/lib/node/types.js +133 -9
  807. package/lib/node/user.d.ts +645 -84
  808. package/lib/node/user.d.ts.map +1 -1
  809. package/lib/node/user.js +779 -96
  810. package/lib/node/userMap/PollingSubscription.d.ts +10 -0
  811. package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
  812. package/lib/node/userMap/PollingSubscription.js +14 -2
  813. package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
  814. package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
  815. package/lib/node/userMap/WebsocketSubscription.js +9 -0
  816. package/lib/node/userMap/grpcSubscription.d.ts +8 -0
  817. package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
  818. package/lib/node/userMap/grpcSubscription.js +8 -0
  819. package/lib/node/userMap/referrerMap.d.ts +72 -2
  820. package/lib/node/userMap/referrerMap.d.ts.map +1 -1
  821. package/lib/node/userMap/referrerMap.js +84 -2
  822. package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
  823. package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
  824. package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
  825. package/lib/node/userMap/userMap.d.ts +81 -3
  826. package/lib/node/userMap/userMap.d.ts.map +1 -1
  827. package/lib/node/userMap/userMap.js +81 -4
  828. package/lib/node/userMap/userMapConfig.d.ts +23 -0
  829. package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
  830. package/lib/node/userMap/userStatsMap.d.ts +22 -0
  831. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  832. package/lib/node/userMap/userStatsMap.js +22 -0
  833. package/lib/node/userName.d.ts +16 -0
  834. package/lib/node/userName.d.ts.map +1 -1
  835. package/lib/node/userName.js +16 -0
  836. package/lib/node/userStats.d.ts +28 -1
  837. package/lib/node/userStats.d.ts.map +1 -1
  838. package/lib/node/userStats.js +28 -1
  839. package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
  840. package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
  841. package/lib/node/util/TransactionConfirmationManager.js +33 -0
  842. package/lib/node/util/chainClock.d.ts +24 -0
  843. package/lib/node/util/chainClock.d.ts.map +1 -1
  844. package/lib/node/util/chainClock.js +20 -0
  845. package/lib/node/util/computeUnits.d.ts +32 -0
  846. package/lib/node/util/computeUnits.d.ts.map +1 -1
  847. package/lib/node/util/computeUnits.js +32 -0
  848. package/lib/node/util/digest.d.ts +17 -0
  849. package/lib/node/util/digest.d.ts.map +1 -1
  850. package/lib/node/util/digest.js +17 -0
  851. package/lib/node/util/ed25519Utils.d.ts +12 -2
  852. package/lib/node/util/ed25519Utils.d.ts.map +1 -1
  853. package/lib/node/util/ed25519Utils.js +12 -2
  854. package/lib/node/util/promiseTimeout.d.ts +9 -0
  855. package/lib/node/util/promiseTimeout.d.ts.map +1 -1
  856. package/lib/node/util/promiseTimeout.js +9 -0
  857. package/lib/node/velocityClient.d.ts +3323 -216
  858. package/lib/node/velocityClient.d.ts.map +1 -1
  859. package/lib/node/velocityClient.js +3428 -249
  860. package/lib/node/wallet.d.ts +37 -0
  861. package/lib/node/wallet.d.ts.map +1 -1
  862. package/lib/node/wallet.js +37 -0
  863. package/package.json +2 -1
  864. package/src/accounts/basicUserAccountSubscriber.ts +18 -0
  865. package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
  866. package/src/accounts/bulkAccountLoader.ts +52 -0
  867. package/src/accounts/bulkUserStatsSubscription.ts +9 -2
  868. package/src/accounts/bulkUserSubscription.ts +8 -2
  869. package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
  870. package/src/accounts/fetch.ts +59 -2
  871. package/src/accounts/grpcAccountSubscriber.ts +30 -0
  872. package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
  873. package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
  874. package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
  875. package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
  876. package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
  877. package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
  878. package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
  879. package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
  880. package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
  881. package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
  882. package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
  883. package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
  884. package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
  885. package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
  886. package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
  887. package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
  888. package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
  889. package/src/accounts/testBulkAccountLoader.ts +8 -0
  890. package/src/accounts/types.ts +149 -0
  891. package/src/accounts/utils.ts +42 -24
  892. package/src/accounts/webSocketAccountSubscriber.ts +41 -0
  893. package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
  894. package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
  895. package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
  896. package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
  897. package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
  898. package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
  899. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
  900. package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
  901. package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
  902. package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
  903. package/src/addresses/marketAddresses.ts +10 -0
  904. package/src/addresses/pda.ts +228 -12
  905. package/src/adminClient.ts +2184 -4
  906. package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
  907. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
  908. package/src/auctionSubscriber/index.ts +6 -0
  909. package/src/auctionSubscriber/types.ts +7 -0
  910. package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
  911. package/src/blockhashSubscriber/index.ts +5 -0
  912. package/src/blockhashSubscriber/types.ts +5 -4
  913. package/src/clock/clockSubscriber.ts +24 -0
  914. package/src/config.ts +109 -22
  915. package/src/constants/numericConstants.ts +70 -0
  916. package/src/constants/perpMarkets.ts +45 -960
  917. package/src/constants/spotMarkets.ts +23 -793
  918. package/src/constants/txConstants.ts +1 -0
  919. package/src/core/VelocityCore.ts +286 -8
  920. package/src/core/instructions/deposit.ts +22 -0
  921. package/src/core/instructions/fill.ts +17 -0
  922. package/src/core/instructions/funding.ts +12 -0
  923. package/src/core/instructions/liquidation.ts +18 -0
  924. package/src/core/instructions/orders.ts +28 -0
  925. package/src/core/instructions/perpOrders.ts +106 -0
  926. package/src/core/instructions/settlement.ts +14 -0
  927. package/src/core/instructions/trigger.ts +15 -0
  928. package/src/core/instructions/withdraw.ts +21 -0
  929. package/src/core/remainingAccounts.ts +47 -3
  930. package/src/core/signedMsg.ts +38 -0
  931. package/src/decode/customCoder.ts +46 -3
  932. package/src/decode/user.ts +22 -0
  933. package/src/dlob/DLOB.ts +668 -97
  934. package/src/dlob/DLOBNode.ts +98 -6
  935. package/src/dlob/DLOBSubscriber.ts +49 -12
  936. package/src/dlob/NodeList.ts +69 -0
  937. package/src/dlob/orderBookLevels.ts +108 -14
  938. package/src/dlob/types.ts +15 -0
  939. package/src/events/eventList.ts +14 -0
  940. package/src/events/eventSubscriber.ts +100 -19
  941. package/src/events/eventsServerLogProvider.ts +28 -0
  942. package/src/events/fetchLogs.ts +52 -2
  943. package/src/events/parse.ts +23 -0
  944. package/src/events/pollingLogProvider.ts +24 -0
  945. package/src/events/sort.ts +12 -0
  946. package/src/events/txEventCache.ts +19 -7
  947. package/src/events/types.ts +131 -11
  948. package/src/events/webSocketLogProvider.ts +29 -0
  949. package/src/factory/oracleClient.ts +2 -2
  950. package/src/idl/velocity.json +50 -1
  951. package/src/idl/velocity.ts +50 -1
  952. package/src/keypair.ts +8 -0
  953. package/src/marginCalculation.ts +153 -2
  954. package/src/math/amm.ts +371 -36
  955. package/src/math/auction.ts +139 -30
  956. package/src/math/bankruptcy.ts +104 -1
  957. package/src/math/builder.ts +74 -8
  958. package/src/math/conversion.ts +21 -0
  959. package/src/math/exchangeStatus.ts +125 -0
  960. package/src/math/funding.ts +63 -23
  961. package/src/math/insurance.ts +62 -0
  962. package/src/math/liquidation.ts +227 -17
  963. package/src/math/margin.ts +80 -14
  964. package/src/math/market.ts +148 -17
  965. package/src/math/oracles.ts +124 -0
  966. package/src/math/orders.ts +144 -18
  967. package/src/math/position.ts +80 -33
  968. package/src/math/repeg.ts +48 -10
  969. package/src/math/spotBalance.ts +252 -12
  970. package/src/math/spotMarket.ts +36 -3
  971. package/src/math/spotPosition.ts +72 -0
  972. package/src/math/state.ts +32 -1
  973. package/src/math/superStake.ts +126 -3
  974. package/src/math/tiers.ts +29 -0
  975. package/src/math/trade.ts +125 -55
  976. package/src/math/utils.ts +71 -9
  977. package/src/memcmp.ts +131 -7
  978. package/src/oracles/oracleClientCache.ts +16 -0
  979. package/src/oracles/oracleId.ts +39 -6
  980. package/src/oracles/prelaunchOracleClient.ts +20 -0
  981. package/src/oracles/pythClient.ts +32 -1
  982. package/src/oracles/pythLazerClient.ts +35 -1
  983. package/src/oracles/quoteAssetOracleClient.ts +18 -0
  984. package/src/oracles/strictOraclePrice.ts +21 -0
  985. package/src/oracles/types.ts +45 -0
  986. package/src/oracles/utils.ts +20 -0
  987. package/src/orderParams.ts +42 -4
  988. package/src/orderSubscriber/OrderSubscriber.ts +74 -2
  989. package/src/orderSubscriber/PollingSubscription.ts +11 -0
  990. package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
  991. package/src/orderSubscriber/grpcSubscription.ts +16 -0
  992. package/src/orderSubscriber/types.ts +9 -0
  993. package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
  994. package/src/priorityFee/averageStrategy.ts +1 -0
  995. package/src/priorityFee/ewmaStrategy.ts +10 -0
  996. package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
  997. package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
  998. package/src/priorityFee/maxStrategy.ts +1 -0
  999. package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
  1000. package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
  1001. package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
  1002. package/src/priorityFee/types.ts +33 -15
  1003. package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
  1004. package/src/slot/SlotSubscriber.ts +18 -0
  1005. package/src/slot/SlothashSubscriber.ts +27 -1
  1006. package/src/swift/swiftOrderSubscriber.ts +2 -2
  1007. package/src/tokenFaucet.ts +10 -7
  1008. package/src/tx/baseTxSender.ts +185 -5
  1009. package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
  1010. package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
  1011. package/src/tx/blockhashFetcher/types.ts +4 -0
  1012. package/src/tx/fastSingleTxSender.ts +58 -4
  1013. package/src/tx/forwardOnlyTxSender.ts +48 -0
  1014. package/src/tx/reportTransactionError.ts +18 -6
  1015. package/src/tx/retryTxSender.ts +40 -0
  1016. package/src/tx/txHandler.ts +146 -35
  1017. package/src/tx/txParamProcessor.ts +47 -0
  1018. package/src/tx/types.ts +46 -0
  1019. package/src/tx/utils.ts +26 -0
  1020. package/src/tx/whileValidTxSender.ts +82 -0
  1021. package/src/types.ts +783 -22
  1022. package/src/user.ts +869 -110
  1023. package/src/userMap/PollingSubscription.ts +16 -2
  1024. package/src/userMap/WebsocketSubscription.ts +9 -0
  1025. package/src/userMap/grpcSubscription.ts +8 -0
  1026. package/src/userMap/referrerMap.ts +92 -3
  1027. package/src/userMap/revenueShareEscrowMap.ts +38 -11
  1028. package/src/userMap/userMap.ts +82 -4
  1029. package/src/userMap/userMapConfig.ts +23 -10
  1030. package/src/userMap/userStatsMap.ts +22 -0
  1031. package/src/userName.ts +16 -0
  1032. package/src/userStats.ts +28 -1
  1033. package/src/util/TransactionConfirmationManager.ts +33 -0
  1034. package/src/util/chainClock.ts +24 -0
  1035. package/src/util/computeUnits.ts +32 -0
  1036. package/src/util/digest.ts +17 -0
  1037. package/src/util/ed25519Utils.ts +12 -2
  1038. package/src/util/promiseTimeout.ts +9 -0
  1039. package/src/velocityClient.ts +3456 -254
  1040. package/src/wallet.ts +37 -0
  1041. package/tests/VelocityCore/builder_escrow.test.ts +121 -0
  1042. package/tests/amm/test.ts +102 -0
  1043. package/tests/builder/builderFee.test.ts +42 -0
  1044. package/tests/dlob/helpers.ts +1 -0
  1045. package/tests/dlob/tickSizeStandardization.ts +545 -0
  1046. package/tests/exchangeStatus/test.ts +45 -0
  1047. package/tests/liquidation/test.ts +125 -0
  1048. package/tests/oracles/mmOracleGate.test.ts +379 -0
  1049. package/tests/oracles/pythPegSnap.test.ts +76 -0
  1050. package/tests/sdkParity/enumParity.test.ts +84 -0
  1051. package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
  1052. package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
  1053. package/tests/spot/test.ts +55 -0
  1054. package/tests/user/bankruptcy.ts +165 -0
  1055. package/tests/user/feeAndWithdrawLimits.ts +284 -0
  1056. package/tests/user/getMarginCalculation.ts +226 -1
  1057. package/tests/user/test.ts +8 -4
@@ -14,6 +14,7 @@ import { LAMPORTS_PRECISION, ZERO } from '../constants/numericConstants';
14
14
  import fetch from 'node-fetch';
15
15
  import { checkSameDate } from './utils';
16
16
 
17
+ /** Response shape of SolBlaze's `bsol/stats` endpoint (bSOL conversion ratio + APY breakdown). */
17
18
  export type BSOL_STATS_API_RESPONSE = {
18
19
  success: boolean;
19
20
  stats?: {
@@ -31,6 +32,7 @@ export type BSOL_STATS_API_RESPONSE = {
31
32
  };
32
33
  };
33
34
 
35
+ /** Response shape of SolBlaze's Velocity-specific lending emissions endpoint. */
34
36
  export type BSOL_EMISSIONS_API_RESPONSE = {
35
37
  success: boolean;
36
38
  emissions?: {
@@ -38,14 +40,52 @@ export type BSOL_EMISSIONS_API_RESPONSE = {
38
40
  };
39
41
  };
40
42
 
43
+ /**
44
+ * Fetches bSOL conversion/APY stats from SolBlaze's public API.
45
+ *
46
+ * @return {Promise<Response>} The raw `fetch` response; caller must check `.status` and parse
47
+ * JSON as `BSOL_STATS_API_RESPONSE`
48
+ */
41
49
  export async function fetchBSolMetrics() {
42
50
  return await fetch('https://stake.solblaze.org/api/v1/stats');
43
51
  }
44
52
 
53
+ /**
54
+ * Fetches bSOL lending-emissions data specific to Velocity from SolBlaze's public API.
55
+ *
56
+ * @return {Promise<Response>} The raw `fetch` response; caller must check `.status` and parse
57
+ * JSON as `BSOL_EMISSIONS_API_RESPONSE`
58
+ */
45
59
  export async function fetchBSolVelocityEmissions() {
46
60
  return await fetch('https://stake.solblaze.org/api/v1/velocity_emissions');
47
61
  }
48
62
 
63
+ /**
64
+ * Dispatches to the correct "super-stake" (deposit SOL, swap to an LST, deposit the LST as
65
+ * leveraged collateral) instruction builder for a given LST spot market, routing by the SDK's
66
+ * hardcoded market-index constants: `2` (mSOL) uses Marinade-or-Jupiter (`findBestMSolSuperStakeIxs`),
67
+ * `6` (JitoSOL) and `8` (a generic LST, e.g. bSOL) both use Jupiter-only routing.
68
+ *
69
+ * @param {object} params
70
+ * @param {number} params.marketIndex - The LST spot market index; must be `2`, `6`, or `8`
71
+ * @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
72
+ * @param {JupiterClient} params.jupiterClient - Jupiter aggregator client for swap routing
73
+ * @param {VelocityClient} params.velocityClient - Velocity client (for market accounts + instruction building)
74
+ * @param {PublicKey} [params.userAccountPublicKey] - The target sub-account; defaults to the
75
+ * client's active sub-account if omitted
76
+ * @param {number} [params.price] - Pre-fetched mSOL/SOL price (market index 2 only); fetched from
77
+ * Marinade if omitted
78
+ * @param {boolean} [params.forceMarinade] - Force the direct Marinade stake path over a Jupiter
79
+ * swap even if Jupiter would be cheaper (market index 2 only)
80
+ * @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
81
+ * @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse instead of
82
+ * fetching a fresh one
83
+ * @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
84
+ * method: 'jupiter' | 'marinade'; price?: number }>} The instructions to submit, any address
85
+ * lookup tables they require, which routing method was chosen, and (market index 2 only) the
86
+ * price used for the routing decision
87
+ * @throws {Error} If `marketIndex` is not one of the supported LST markets
88
+ */
49
89
  export async function findBestSuperStakeIxs({
50
90
  marketIndex,
51
91
  amount,
@@ -108,6 +148,26 @@ export async function findBestSuperStakeIxs({
108
148
  }
109
149
  }
110
150
 
151
+ /**
152
+ * Chooses between staking SOL directly with Marinade (mint mSOL 1:1 at the protocol rate) or
153
+ * swapping SOL for mSOL via Jupiter, whichever is cheaper for the user, then returns the
154
+ * resulting deposit instructions. Marinade is chosen when its price is lower than (i.e. gives
155
+ * more mSOL per SOL than) the best Jupiter quote, when `forceMarinade` is set, or when a Jupiter
156
+ * quote couldn't be obtained.
157
+ *
158
+ * @param {object} params
159
+ * @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
160
+ * @param {JupiterClient} params.jupiterClient - Jupiter aggregator client
161
+ * @param {VelocityClient} params.velocityClient - Velocity client
162
+ * @param {number} [params.price] - Pre-fetched mSOL/SOL Marinade rate; fetched live if omitted
163
+ * @param {PublicKey} [params.userAccountPublicKey] - The target sub-account
164
+ * @param {boolean} [params.forceMarinade] - Force the Marinade path regardless of Jupiter pricing
165
+ * @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
166
+ * @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse
167
+ * @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
168
+ * method: 'jupiter' | 'marinade'; price: number }>} The chosen route's instructions, required
169
+ * lookup tables, the method used, and the mSOL/SOL price used for the decision
170
+ */
111
171
  export async function findBestMSolSuperStakeIxs({
112
172
  amount,
113
173
  jupiterClient,
@@ -190,6 +250,20 @@ export async function findBestMSolSuperStakeIxs({
190
250
  }
191
251
  }
192
252
 
253
+ /**
254
+ * Builds instructions to super-stake into JitoSOL (spot market index `6`) by swapping SOL for
255
+ * JitoSOL via Jupiter. Thin wrapper around `findBestLstSuperStakeIxs`.
256
+ *
257
+ * @param {object} params
258
+ * @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
259
+ * @param {JupiterClient} params.jupiterClient - Jupiter aggregator client
260
+ * @param {VelocityClient} params.velocityClient - Velocity client
261
+ * @param {PublicKey} [params.userAccountPublicKey] - The target sub-account
262
+ * @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
263
+ * @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse
264
+ * @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
265
+ * method: 'jupiter' | 'marinade'; price?: number }>} Always resolves with `method: 'jupiter'`
266
+ */
193
267
  export async function findBestJitoSolSuperStakeIxs({
194
268
  amount,
195
269
  jupiterClient,
@@ -223,9 +297,22 @@ export async function findBestJitoSolSuperStakeIxs({
223
297
  }
224
298
 
225
299
  /**
226
- * Finds best swap instructions for a generic lstMint
300
+ * Builds instructions to super-stake into an arbitrary LST via a Jupiter swap from SOL. Unlike
301
+ * `findBestMSolSuperStakeIxs`, this does not compare against a direct-stake rate with the LST's
302
+ * own protocol — it always routes through Jupiter.
227
303
  *
228
- * Without doing any extra steps like checking if you can get a better rate by staking directly with that LST platform
304
+ * @param {object} params
305
+ * @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
306
+ * @param {PublicKey} params.lstMint - The target LST's mint (unused directly here; kept for
307
+ * caller symmetry with `lstMarketIndex`)
308
+ * @param {number} params.lstMarketIndex - The target LST's spot market index
309
+ * @param {JupiterClient} params.jupiterClient - Jupiter aggregator client
310
+ * @param {VelocityClient} params.velocityClient - Velocity client
311
+ * @param {PublicKey} [params.userAccountPublicKey] - The target sub-account
312
+ * @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
313
+ * @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse
314
+ * @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
315
+ * method: 'jupiter' | 'marinade' }>} Always resolves with `method: 'jupiter'`
229
316
  */
230
317
  export async function findBestLstSuperStakeIxs({
231
318
  amount,
@@ -266,6 +353,7 @@ export async function findBestLstSuperStakeIxs({
266
353
  };
267
354
  }
268
355
 
356
+ /** Response shape of Jito's `stake_pool_stats` endpoint: daily TVL, jitoSOL supply, and APY series. */
269
357
  export type JITO_SOL_METRICS_ENDPOINT_RESPONSE = {
270
358
  tvl: {
271
359
  // TVL in SOL, BN
@@ -299,6 +387,11 @@ const get30DAgo = () => {
299
387
  return date;
300
388
  };
301
389
 
390
+ /**
391
+ * Fetches daily jitoSOL TVL/supply/APY stats for the trailing 30 days from Jito's public API.
392
+ *
393
+ * @return {Promise<JITO_SOL_METRICS_ENDPOINT_RESPONSE>} The parsed JSON response
394
+ */
302
395
  export async function fetchJitoSolMetrics() {
303
396
  const res = await fetch(
304
397
  'https://kobe.mainnet.jito.network/api/v1/stake_pool_stats',
@@ -360,6 +453,22 @@ const getJitoSolHistoricalPriceMap = async (timestamps: number[]) => {
360
453
  }
361
454
  };
362
455
 
456
+ /**
457
+ * Estimates net SOL earned (or lost) from super-staking a given LST market over the user's full
458
+ * deposit history, by converting every historical SOL and LST deposit/withdrawal record to a SOL
459
+ * value at the LST/SOL ratio effective at that record's timestamp, then adding back the current
460
+ * SOL-value of the user's present SOL and LST balances. Requires third-party price history APIs
461
+ * per LST (Marinade for mSOL, Jito's stake pool stats for JitoSOL, SolBlaze's current-only rate
462
+ * for bSOL — bSOL therefore uses one flat ratio for all historical records, not a true history).
463
+ *
464
+ * @param {object} params
465
+ * @param {number} params.marketIndex - The LST spot market index (`2` mSOL, `6` JitoSOL, `8` bSOL)
466
+ * @param {User} params.user - The user account to read current SOL/LST balances from
467
+ * @param {DepositRecord[]} params.depositRecords - The user's historical deposit/withdraw records
468
+ * across the SOL market (index `1`) and the LST market
469
+ * @return {Promise<BN>} Estimated net SOL earned, `LAMPORTS_PRECISION` (1e9); can be negative
470
+ * @throws {Error} If an LST/SOL ratio can't be resolved for a record's timestamp (or for "now")
471
+ */
363
472
  export async function calculateSolEarned({
364
473
  marketIndex,
365
474
  user,
@@ -463,7 +572,21 @@ export async function calculateSolEarned({
463
572
  return solEarned;
464
573
  }
465
574
 
466
- // calculate estimated liquidation price (in LST/SOL) based on target amounts
575
+ /**
576
+ * Estimates the LST/SOL price at which a super-staked (leveraged LST-collateral, SOL-borrow)
577
+ * position would hit maintenance margin and become liquidatable: the price where
578
+ * `lstMaintenanceAssetWeight * lstDepositAmount * price === solMaintenanceLiabilityWeight * solBorrowAmount`.
579
+ * All inputs are plain (unscaled) numbers, not `BN` — weights are expected as fractions (e.g.
580
+ * `0.8` for 80%, i.e. already divided by `SPOT_MARKET_WEIGHT_PRECISION`), and this is a
581
+ * float-precision estimate for UI display, not a program-exact calculation.
582
+ *
583
+ * @param {number} lstDepositAmount - LST collateral amount, in whole LST tokens
584
+ * @param {number} lstMaintenanceAssetWeight - The LST market's maintenance asset weight, as a fraction
585
+ * @param {number} solBorrowAmount - SOL borrow amount, in whole SOL
586
+ * @param {number} solMaintenanceLiabilityWeight - The SOL market's maintenance liability weight, as a fraction
587
+ * @param {number} lstPriceRatio - Current LST/SOL price ratio
588
+ * @return {number} Estimated liquidation LST/SOL price
589
+ */
467
590
  export function calculateEstimatedSuperStakeLiquidationPrice(
468
591
  lstDepositAmount: number,
469
592
  lstMaintenanceAssetWeight: number,
package/src/math/tiers.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  import { isVariant, PerpMarketAccount, SpotMarketAccount } from '../types';
2
2
 
3
+ /**
4
+ * Maps a perp market's `contractTier` to an ordinal safety rank, lower is safer. Matches the
5
+ * declaration order of the Rust `ContractTier` enum (which derives `Ord` from declaration order,
6
+ * used by `ContractTier::is_as_safe_as_contract`'s `self <= other`).
7
+ *
8
+ * @param {PerpMarketAccount} perpMarket - The perp market account
9
+ * @return {number} `0` (A, safest) through `5` (Isolated, riskiest); `4` = HighlySpeculative
10
+ */
3
11
  export function getPerpMarketTierNumber(perpMarket: PerpMarketAccount): number {
4
12
  if (isVariant(perpMarket.contractTier, 'a')) {
5
13
  return 0;
@@ -16,6 +24,14 @@ export function getPerpMarketTierNumber(perpMarket: PerpMarketAccount): number {
16
24
  }
17
25
  }
18
26
 
27
+ /**
28
+ * Maps a spot market's `assetTier` to an ordinal safety rank, lower is safer. Matches the
29
+ * declaration order of the Rust `AssetTier` enum, used by `ContractTier::is_as_safe_as_asset`.
30
+ *
31
+ * @param {SpotMarketAccount} spotMarket - The spot market account
32
+ * @return {number} `0` (Collateral, safest) through `4` (Unlisted, riskiest); `5` is unreachable
33
+ * (falls through only if `assetTier` matches none of the known variants)
34
+ */
19
35
  export function getSpotMarketTierNumber(spotMarket: SpotMarketAccount): number {
20
36
  if (isVariant(spotMarket.assetTier, 'collateral')) {
21
37
  return 0;
@@ -32,6 +48,19 @@ export function getSpotMarketTierNumber(spotMarket: SpotMarketAccount): number {
32
48
  }
33
49
  }
34
50
 
51
+ /**
52
+ * True if a perp market's tier is at least as safe as both a reference perp tier and a reference
53
+ * spot tier, mirroring `ContractTier::is_as_safe_as`. Used to gate cross-margining: a position in
54
+ * a market riskier than the account's other collateral/positions can force isolated margin.
55
+ * A perp tier is "as safe as" a spot tier if the spot tier is Unlisted (anything beats Unlisted);
56
+ * otherwise, if the spot tier is Cross or Isolated, the perp tier must be C-or-safer (tiers 0-2).
57
+ *
58
+ * @param {number} perpTier - This market's tier number, from `getPerpMarketTierNumber`
59
+ * @param {number} otherPerpTier - The reference perp tier number to compare against
60
+ * @param {number} otherSpotTier - The reference spot tier number to compare against, from
61
+ * `getSpotMarketTierNumber`
62
+ * @return {boolean} Whether `perpTier` is as safe as both references
63
+ */
35
64
  export function perpTierIsAsSafeAs(
36
65
  perpTier: number,
37
66
  otherPerpTier: number,
package/src/math/trade.ts CHANGED
@@ -37,6 +37,11 @@ import { L2OrderBook } from '../dlob/orderBookLevels';
37
37
 
38
38
  const MAXPCT = new BN(1000); //percentage units are [0,1000] => [0,1]
39
39
 
40
+ /**
41
+ * Enumerates the price-impact-related fields historically produced by trade-slippage helpers.
42
+ * Not currently consumed as a parameter/return type by any function in this file — kept for
43
+ * backward compatibility with callers that reference it as a key type.
44
+ */
40
45
  export type PriceImpactUnit =
41
46
  | 'entryPrice'
42
47
  | 'maxPrice'
@@ -51,24 +56,23 @@ export type PriceImpactUnit =
51
56
  | 'all';
52
57
 
53
58
  /**
54
- * Calculates avg/max slippage (price impact) for candidate trade
55
- *
56
- * @deprecated use calculateEstimatedPerpEntryPrice instead
57
- *
58
- * @param direction
59
- * @param amount
60
- * @param market
61
- * @param inputAssetType which asset is being traded
62
- * @param useSpread whether to consider spread with calculating slippage
63
- * @return [pctAvgSlippage, pctMaxSlippage, entryPrice, newPrice]
64
- *
65
- * 'pctAvgSlippage' => the percentage change to entryPrice (average est slippage in execution) : Precision PRICE_PRECISION
66
- *
67
- * 'pctMaxSlippage' => the percentage change to maxPrice (highest est slippage in execution) : Precision PRICE_PRECISION
59
+ * Calculates avg/max slippage (price impact) for a hypothetical AMM-only trade.
68
60
  *
69
- * 'entryPrice' => the average price of the trade : Precision PRICE_PRECISION
61
+ * @deprecated Use `calculateEstimatedPerpEntryPrice` instead (this ignores DLOB liquidity and
62
+ * only swaps against the vAMM).
70
63
  *
71
- * 'newPrice' => the price of the asset after the trade : Precision PRICE_PRECISION
64
+ * @param {PositionDirection} direction - Taker's trade direction
65
+ * @param {BN} amount - Trade size in `inputAssetType` units (base: BASE_PRECISION (1e9); quote: QUOTE_PRECISION (1e6))
66
+ * @param {PerpMarketAccount} market - The perp market account
67
+ * @param {AssetType} [inputAssetType] - Whether `amount` denominates base or quote; defaults to `'quote'`
68
+ * @param {MMOraclePriceData} mmOraclePriceData - MM oracle price data used for spread reserve calc
69
+ * @param {boolean} [useSpread] - Whether to consider the bid/ask spread when computing slippage; defaults to `true`
70
+ * @param {BN} [latestSlot] - Slot used for spread-reserve staleness/decay calc when `useSpread` is true
71
+ * @return {[BN, BN, BN, BN]} `[pctAvgSlippage, pctMaxSlippage, entryPrice, newPrice]`, all
72
+ * PRICE_PRECISION (1e6): `pctAvgSlippage` is the percentage change from the pre-trade price to
73
+ * `entryPrice` (average execution slippage); `pctMaxSlippage` is the percentage change from the
74
+ * pre-trade price to `newPrice` (worst-case/marginal slippage); `entryPrice` is the trade's
75
+ * average execution price; `newPrice` is the AMM's price after the trade
72
76
  */
73
77
  export function calculateTradeSlippage(
74
78
  direction: PositionDirection,
@@ -155,15 +159,20 @@ export function calculateTradeSlippage(
155
159
  }
156
160
 
157
161
  /**
158
- * Calculates acquired amounts for trade executed
159
- * @param direction
160
- * @param amount
161
- * @param market
162
- * @param inputAssetType
163
- * @param useSpread
164
- * @return
165
- * | 'acquiredBase' => positive/negative change in user's base : BN AMM_RESERVE_PRECISION
166
- * | 'acquiredQuote' => positive/negative change in user's quote : BN TODO-PRECISION
162
+ * Calculates the AMM reserve deltas and resulting quote amount for a hypothetical constant-product
163
+ * swap against the vAMM, without executing anything on-chain.
164
+ *
165
+ * @param {PositionDirection} direction - Taker's trade direction
166
+ * @param {BN} amount - Trade size in `inputAssetType` units (base: BASE_PRECISION (1e9); quote: QUOTE_PRECISION (1e6))
167
+ * @param {PerpMarketAccount} market - The perp market account
168
+ * @param {AssetType} [inputAssetType] - Whether `amount` denominates base or quote; defaults to `'quote'`
169
+ * @param {MMOraclePriceData} mmOraclePriceData - MM oracle price data used for spread reserve calc
170
+ * @param {boolean} [useSpread] - Whether to swap against the spread-adjusted reserves (bid/ask)
171
+ * rather than the raw reserves; defaults to `true`
172
+ * @param {BN} [latestSlot] - Slot used for spread-reserve staleness/decay calc when `useSpread` is true
173
+ * @return {[BN, BN, BN]} `[acquiredBase, acquiredQuote, acquiredQuoteAssetAmount]` — the change
174
+ * in the AMM's base and quote reserves (signed, `AMM_RESERVE_PRECISION` (1e9)), and the
175
+ * resulting user-facing quote amount swapped, `QUOTE_PRECISION` (1e6)
167
176
  */
168
177
  export function calculateTradeAcquiredAmounts(
169
178
  direction: PositionDirection,
@@ -215,24 +224,26 @@ export function calculateTradeAcquiredAmounts(
215
224
  }
216
225
 
217
226
  /**
218
- * calculateTargetPriceTrade
219
- * simple function for finding arbitraging trades
220
- *
221
- * @deprecated
227
+ * Calculates the AMM-only trade (direction + size) required to push the market's reserve price
228
+ * to (or `pct` of the way to) `targetPrice` — a simple arbitrage-sizing helper.
222
229
  *
223
- * @param market
224
- * @param targetPrice
225
- * @param pct optional default is 100% gap filling, can set smaller.
226
- * @param outputAssetType which asset to trade.
227
- * @param useSpread whether or not to consider the spread when calculating the trade size
228
- * @returns trade direction/size in order to push price to a targetPrice,
230
+ * @deprecated No longer actively maintained; ignores DLOB liquidity.
229
231
  *
230
- * [
231
- * direction => direction of trade required, PositionDirection
232
- * tradeSize => size of trade required, TODO-PRECISION
233
- * entryPrice => the entry price for the trade, PRICE_PRECISION
234
- * targetPrice => the target price PRICE_PRECISION
235
- * ]
232
+ * @param {PerpMarketAccount} market - The perp market account
233
+ * @param {BN} targetPrice - The price to arbitrage toward, PRICE_PRECISION (1e6)
234
+ * @param {BN} [pct] - Fraction of the full price gap to close, out of `MAXPCT` (1000 = 100%);
235
+ * defaults to fully closing the gap
236
+ * @param {AssetType} [outputAssetType] - Whether the returned trade size is denominated in base
237
+ * or quote; defaults to `'quote'`
238
+ * @param {MMOraclePriceData} [mmOraclePriceData] - MM oracle price data used for spread reserve calc
239
+ * @param {boolean} [useSpread] - Whether to consider the bid/ask spread when sizing the trade;
240
+ * defaults to `true`. If `targetPrice` already sits within the current bid/ask spread, returns
241
+ * a zero-size trade
242
+ * @param {BN} [latestSlot] - Slot used for spread-reserve staleness/decay calc when `useSpread` is true
243
+ * @return {[PositionDirection, BN, BN, BN]} `[direction, tradeSize, entryPrice, targetPrice]` —
244
+ * `direction` required to move price toward `targetPrice`; `tradeSize` in `outputAssetType`
245
+ * units (base: BASE_PRECISION (1e9); quote: QUOTE_PRECISION (1e6)); `entryPrice`/`targetPrice`
246
+ * PRICE_PRECISION (1e6)
236
247
  */
237
248
  export function calculateTargetPriceTrade(
238
249
  market: PerpMarketAccount,
@@ -389,17 +400,29 @@ export function calculateTargetPriceTrade(
389
400
  }
390
401
 
391
402
  /**
392
- * Calculates the estimated entry price and price impact of order, in base or quote
393
- * Price impact is based on the difference between the entry price and the best bid/ask price (whether it's dlob or vamm)
403
+ * Simulates walking the combined DLOB + vAMM liquidity to estimate the entry price and price
404
+ * impact of a hypothetical taker order, filling against resting limit orders and the AMM's
405
+ * spread-adjusted reserves in whichever is cheaper at each step. Price impact is the difference
406
+ * between the estimated entry price and the best available price (top of book/AMM) before any
407
+ * fill.
394
408
  *
395
- * @param assetType
396
- * @param amount
397
- * @param direction
398
- * @param market
399
- * @param oraclePriceData
400
- * @param dlob
401
- * @param slot
402
- * @param usersToSkip
409
+ * @param {AssetType} assetType - Whether `amount` denominates base or quote
410
+ * @param {BN} amount - Order size, `assetType === 'base'`: BASE_PRECISION (1e9); `'quote'`: QUOTE_PRECISION (1e6)
411
+ * @param {PositionDirection} direction - Taker's trade direction
412
+ * @param {PerpMarketAccount} market - The perp market account
413
+ * @param {MMOraclePriceData} mmOraclePriceData - MM oracle price data used to price both the DLOB
414
+ * resting orders and the AMM's spread-adjusted reserves
415
+ * @param {DLOB} dlob - The order book to walk for resting limit orders
416
+ * @param {number} slot - Current slot, used to resolve oracle-pegged/auction limit order prices
417
+ * @param {Map<PublicKey, boolean>} [usersToSkip] - Maker user accounts to exclude from the fill
418
+ * simulation (e.g. the taker's own resting orders); defaults to none
419
+ * @return {{ entryPrice: BN; priceImpact: BN; bestPrice: BN; worstPrice: BN; baseFilled: BN;
420
+ * quoteFilled: BN }} `entryPrice`/`bestPrice`/`worstPrice` are PRICE_PRECISION (1e6);
421
+ * `priceImpact` is `|entryPrice - bestPrice| / bestPrice`, also scaled by PRICE_PRECISION
422
+ * (1e6) but represents a ratio, not a price (e.g. `1e4` = 1% impact); `baseFilled` is
423
+ * BASE_PRECISION (1e9); `quoteFilled` is QUOTE_PRECISION (1e6). All-zero only if `amount` is
424
+ * zero; if liquidity runs out before `amount` fully fills, the returned fields reflect the
425
+ * partial fill
403
426
  */
404
427
  export function calculateEstimatedPerpEntryPrice(
405
428
  assetType: AssetType,
@@ -432,7 +455,14 @@ export function calculateEstimatedPerpEntryPrice(
432
455
  const takerIsLong = isVariant(direction, 'long');
433
456
  const limitOrders = dlob[
434
457
  takerIsLong ? 'getRestingLimitAsks' : 'getRestingLimitBids'
435
- ](market.marketIndex, slot, MarketType.PERP, mmOraclePriceData);
458
+ ](
459
+ market.marketIndex,
460
+ slot,
461
+ MarketType.PERP,
462
+ mmOraclePriceData,
463
+ undefined,
464
+ market.orderTickSize
465
+ );
436
466
 
437
467
  const swapDirection = getSwapDirection(assetType, direction);
438
468
 
@@ -489,7 +519,11 @@ export function calculateEstimatedPerpEntryPrice(
489
519
 
490
520
  let limitOrder = limitOrders.next().value;
491
521
  if (limitOrder) {
492
- const limitOrderPrice = limitOrder.getPriceOrThrow(mmOraclePriceData, slot);
522
+ const limitOrderPrice = limitOrder.getPriceOrThrow(
523
+ mmOraclePriceData,
524
+ slot,
525
+ market.orderTickSize
526
+ );
493
527
  bestPrice = takerIsLong
494
528
  ? BN.min(limitOrderPrice, bestPrice)
495
529
  : BN.max(limitOrderPrice, bestPrice);
@@ -502,7 +536,11 @@ export function calculateEstimatedPerpEntryPrice(
502
536
  !cumulativeBaseFilled.eq(amount) &&
503
537
  (ammLiquidity.gt(ZERO) || limitOrder)
504
538
  ) {
505
- const limitOrderPrice = limitOrder?.getPrice(mmOraclePriceData, slot);
539
+ const limitOrderPrice = limitOrder?.getPrice(
540
+ mmOraclePriceData,
541
+ slot,
542
+ market.orderTickSize
543
+ );
506
544
 
507
545
  let maxAmmFill: BN;
508
546
  if (limitOrderPrice) {
@@ -586,7 +624,11 @@ export function calculateEstimatedPerpEntryPrice(
586
624
  !cumulativeQuoteFilled.eq(amount) &&
587
625
  (ammLiquidity.gt(ZERO) || limitOrder)
588
626
  ) {
589
- const limitOrderPrice = limitOrder?.getPrice(mmOraclePriceData, slot);
627
+ const limitOrderPrice = limitOrder?.getPrice(
628
+ mmOraclePriceData,
629
+ slot,
630
+ market.orderTickSize
631
+ );
590
632
 
591
633
  let maxAmmFill: BN;
592
634
  if (limitOrderPrice) {
@@ -695,6 +737,23 @@ export function calculateEstimatedPerpEntryPrice(
695
737
  };
696
738
  }
697
739
 
740
+ /**
741
+ * Estimates entry price and price impact of a hypothetical taker order by walking a pre-built L2
742
+ * order book snapshot (asks for a long taker, bids for a short taker), rather than the live DLOB.
743
+ * Useful when an L2 snapshot is already available and a fresh DLOB walk isn't needed.
744
+ *
745
+ * @param {AssetType} assetType - Whether `amount` denominates base or quote
746
+ * @param {BN} amount - Order size, `basePrecision` for `'base'`; QUOTE_PRECISION (1e6) for `'quote'`
747
+ * @param {PositionDirection} direction - Taker's trade direction
748
+ * @param {BN} basePrecision - The base precision to use for size/price math (e.g. `BASE_PRECISION`)
749
+ * @param {L2OrderBook} l2 - Pre-computed L2 order book (bids/asks with price + size levels)
750
+ * @return {{ entryPrice: BN; priceImpact: BN; bestPrice: BN; worstPrice: BN; baseFilled: BN;
751
+ * quoteFilled: BN }} `entryPrice`/`bestPrice`/`worstPrice` are PRICE_PRECISION (1e6);
752
+ * `priceImpact` is `|entryPrice - bestPrice| / bestPrice` scaled by PRICE_PRECISION (1e6);
753
+ * `baseFilled` is `basePrecision`-scaled; `quoteFilled` is QUOTE_PRECISION (1e6). If the book
754
+ * is empty, `bestPrice`/`worstPrice` are `BN_MAX` (long) or `ZERO` (short) and `entryPrice`/
755
+ * `priceImpact` are `ZERO`
756
+ */
698
757
  export function calculateEstimatedEntryPriceWithL2(
699
758
  assetType: AssetType,
700
759
  amount: BN,
@@ -782,6 +841,17 @@ export function calculateEstimatedEntryPriceWithL2(
782
841
  };
783
842
  }
784
843
 
844
+ /**
845
+ * Estimates a user's trailing-30-day taker + maker volume as of `now`, using the same
846
+ * time-weighted decay shape as the on-chain `update_taker_volume_30d` / `update_maker_volume_30d`
847
+ * (`calculate_rolling_sum`) but without requiring a new fill to trigger the on-chain update —
848
+ * useful for e.g. displaying live fee-tier progress between actual `UserStats` refreshes.
849
+ *
850
+ * @param {UserStatsAccount} userStatsAccount - The user's stats account (`takerVolume30D`,
851
+ * `makerVolume30D`, and their respective last-update timestamps)
852
+ * @param {BN} [now] - Current unix timestamp (seconds); defaults to `Date.now() / 1000`
853
+ * @return {BN} Estimated combined 30-day taker + maker volume, QUOTE_PRECISION (1e6)
854
+ */
785
855
  export function getUser30dRollingVolumeEstimate(
786
856
  userStatsAccount: UserStatsAccount,
787
857
  now?: BN
package/src/math/utils.ts CHANGED
@@ -1,10 +1,28 @@
1
1
  import { BN } from '../isomorphic/anchor';
2
2
  import { ONE, ZERO } from '../constants/numericConstants';
3
3
 
4
+ /**
5
+ * Clamps `x` to the inclusive range `[min, max]`.
6
+ *
7
+ * @param {BN} x - The value to clamp
8
+ * @param {BN} min - The lower bound
9
+ * @param {BN} max - The upper bound
10
+ * @return {BN} `x` if within range, otherwise `min` or `max`
11
+ */
4
12
  export function clampBN(x: BN, min: BN, max: BN): BN {
5
13
  return BN.max(min, BN.min(x, max));
6
14
  }
7
15
 
16
+ /**
17
+ * Integer square root via binary recursion, floored to the nearest integer (i.e.
18
+ * `squareRootBN(n) === Math.floor(Math.sqrt(n))` for values representable as a double). Used
19
+ * throughout the AMM math wherever the program takes an integer sqrt of the constant-product
20
+ * invariant.
21
+ *
22
+ * @param {BN} n - A non-negative integer
23
+ * @return {BN} `floor(sqrt(n))`
24
+ * @throws {Error} If `n` is negative
25
+ */
8
26
  export const squareRootBN = (n: BN): BN => {
9
27
  if (n.lt(new BN(0))) {
10
28
  throw new Error('Sqrt only works on non-negtiave inputs');
@@ -23,6 +41,17 @@ export const squareRootBN = (n: BN): BN => {
23
41
  }
24
42
  };
25
43
 
44
+ /**
45
+ * Integer division rounded up (ceiling), mirroring the program's unsigned `safe_div_ceil` (e.g.
46
+ * used for borrow token amounts, where rounding up favors the protocol/lenders over the
47
+ * borrower). Only meaningful for non-negative operands — `bn.js`'s `.mod()` returns a remainder
48
+ * with the sign of the dividend, so this is not a general-purpose ceiling division for signed
49
+ * inputs.
50
+ *
51
+ * @param {BN} a - The dividend (expected non-negative)
52
+ * @param {BN} b - The divisor (expected positive)
53
+ * @return {BN} `ceil(a / b)`
54
+ */
26
55
  export const divCeil = (a: BN, b: BN): BN => {
27
56
  const quotient = a.div(b);
28
57
 
@@ -35,17 +64,27 @@ export const divCeil = (a: BN, b: BN): BN => {
35
64
  }
36
65
  };
37
66
 
67
+ /**
68
+ * Sign function returning ±1 (never 0).
69
+ *
70
+ * @param {BN} x - The value to test
71
+ * @return {BN} `-1` if `x` is negative, otherwise `1` (including for zero)
72
+ */
38
73
  export const sigNum = (x: BN): BN => {
39
74
  return x.isNeg() ? new BN(-1) : new BN(1);
40
75
  };
41
76
 
42
77
  /**
43
- * calculates the time remaining until the next update based on a rounded, "on-the-hour" update schedule
44
- * this schedule is used for Perpetual Funding Rate and Revenue -> Insurance Updates
45
- * @param now: current blockchain unix timestamp
46
- * @param lastUpdateTs: the unix timestamp of the last update
47
- * @param updatePeriod: desired interval between updates (in seconds)
48
- * @returns: timeRemainingUntilUpdate (in seconds)
78
+ * Calculates the time remaining until the next update is eligible under a rounded, "on-the-hour"
79
+ * update schedule. Used for perp funding rate updates and revenue-to-insurance-fund sweeps: if the
80
+ * last update landed within 1/3 of `updatePeriod` of an hour boundary, the next update is allowed
81
+ * on that boundary; otherwise it's pushed to the following boundary (two periods out) to avoid
82
+ * drifting the schedule off-hour. Returns zero once the wait has already elapsed.
83
+ *
84
+ * @param {BN} now - Current unix timestamp, seconds
85
+ * @param {BN} lastUpdateTs - Unix timestamp of the last update, seconds
86
+ * @param {BN} updatePeriod - Desired interval between updates, seconds
87
+ * @return {BN} Seconds remaining until the next update is eligible (zero if already due)
49
88
  */
50
89
  export function timeRemainingUntilUpdate(
51
90
  now: BN,
@@ -85,6 +124,15 @@ export function timeRemainingUntilUpdate(
85
124
  return timeRemainingUntilUpdate;
86
125
  }
87
126
 
127
+ /**
128
+ * Compares two date strings for equality by calendar day (year/month/date), ignoring
129
+ * time-of-day. Uses the local `getDate()`/`getMonth()`/`getFullYear()` getters, so the
130
+ * comparison is against the process's local-timezone calendar day (not UTC).
131
+ *
132
+ * @param {string} dateString1 - A date string parseable by `new Date()`
133
+ * @param {string} dateString2 - A date string parseable by `new Date()`
134
+ * @return {boolean} Whether both parse to the same calendar day
135
+ */
88
136
  export const checkSameDate = (dateString1: string, dateString2: string) => {
89
137
  const date1 = new Date(dateString1);
90
138
  const date2 = new Date(dateString2);
@@ -97,14 +145,28 @@ export const checkSameDate = (dateString1: string, dateString2: string) => {
97
145
  return isSameDate;
98
146
  };
99
147
 
148
+ /**
149
+ * True if `number` is within `Number.MAX_SAFE_INTEGER` (2^53 - 1), i.e. safe to convert to a
150
+ * `BN` via a JS `number` without losing precision.
151
+ *
152
+ * @param {number} number - The value to check (typically already multiplied by a target precision)
153
+ * @return {boolean} Whether `number` can be represented exactly as a JS number
154
+ */
100
155
  export function isBNSafe(number: number): boolean {
101
156
  return number <= 0x1fffffffffffff;
102
157
  }
103
158
 
104
159
  /**
105
- * Converts a number to BN makes sure the number is safe to convert to BN (that it does not overflow number after multiplying by precision)
106
- * @param number the number to convert to BN
107
- * @param precision the BN precision to use (i.e. QUOTE_PRECISION and BASE_PRECISION from velocity sdk)
160
+ * Converts a human-readable JS `number` into a `BN` scaled by `precision`, routing through a
161
+ * string conversion (`number.toString()` for whole numbers) instead of `number * precision` when
162
+ * the naive multiplication would exceed `Number.MAX_SAFE_INTEGER` (per `isBNSafe`), avoiding
163
+ * silent floating-point precision loss for large inputs. Note a fractional input whose scaled
164
+ * value exceeds `Number.MAX_SAFE_INTEGER` has its fractional part truncated (`bn.js` accepts only
165
+ * integer numbers); this is intentional and pinned by `tests/bn/test.ts`.
166
+ *
167
+ * @param {number} number - The human-readable amount to convert
168
+ * @param {BN} precision - The target fixed-point precision (e.g. `QUOTE_PRECISION`, `BASE_PRECISION`)
169
+ * @return {BN} `number` scaled by `precision`
108
170
  */
109
171
  export function numberToSafeBN(number: number, precision: BN): BN {
110
172
  // check if number has decimals