@velocity-exchange/sdk 0.3.0 → 0.6.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 (1127) hide show
  1. package/README.md +3 -3
  2. package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
  3. package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
  4. package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
  5. package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
  6. package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
  7. package/lib/browser/accounts/bulkAccountLoader.js +51 -0
  8. package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
  9. package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
  10. package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
  11. package/lib/browser/accounts/bulkUserSubscription.js +8 -2
  12. package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
  13. package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
  14. package/lib/browser/accounts/fetch.d.ts +59 -2
  15. package/lib/browser/accounts/fetch.js +57 -2
  16. package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
  17. package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
  18. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
  19. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
  20. package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
  21. package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
  22. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
  23. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
  24. package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
  25. package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
  26. package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
  27. package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
  28. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
  29. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
  30. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
  31. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
  32. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
  33. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
  34. package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
  35. package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
  36. package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
  37. package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
  38. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
  39. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
  40. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
  41. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
  42. package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
  43. package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
  44. package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
  45. package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
  46. package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
  47. package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
  48. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
  49. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
  50. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
  51. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
  52. package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
  53. package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
  54. package/lib/browser/accounts/types.d.ts +149 -0
  55. package/lib/browser/accounts/types.js +13 -0
  56. package/lib/browser/accounts/utils.d.ts +18 -0
  57. package/lib/browser/accounts/utils.js +32 -16
  58. package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
  59. package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
  60. package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
  61. package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
  62. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
  63. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
  64. package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
  65. package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
  66. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
  67. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
  68. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
  69. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
  70. package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
  71. package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
  72. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  73. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
  74. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
  75. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
  76. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
  77. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
  78. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
  79. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
  80. package/lib/browser/addresses/marketAddresses.d.ts +10 -0
  81. package/lib/browser/addresses/marketAddresses.js +10 -0
  82. package/lib/browser/addresses/pda.d.ts +214 -2
  83. package/lib/browser/addresses/pda.js +217 -5
  84. package/lib/browser/adminClient.d.ts +2171 -4
  85. package/lib/browser/adminClient.js +2215 -4
  86. package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
  87. package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
  88. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
  89. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
  90. package/lib/browser/auctionSubscriber/index.d.ts +6 -0
  91. package/lib/browser/auctionSubscriber/index.js +6 -0
  92. package/lib/browser/auctionSubscriber/types.d.ts +7 -0
  93. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
  94. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
  95. package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
  96. package/lib/browser/blockhashSubscriber/index.js +5 -0
  97. package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
  98. package/lib/browser/clock/clockSubscriber.d.ts +24 -0
  99. package/lib/browser/clock/clockSubscriber.js +22 -0
  100. package/lib/browser/config.d.ts +58 -4
  101. package/lib/browser/config.js +94 -28
  102. package/lib/browser/constants/numericConstants.d.ts +67 -0
  103. package/lib/browser/constants/numericConstants.js +68 -1
  104. package/lib/browser/constants/perpMarkets.d.ts +10 -0
  105. package/lib/browser/constants/perpMarkets.js +40 -908
  106. package/lib/browser/constants/spotMarkets.d.ts +13 -0
  107. package/lib/browser/constants/spotMarkets.js +16 -742
  108. package/lib/browser/constants/txConstants.d.ts +1 -0
  109. package/lib/browser/constants/txConstants.js +1 -0
  110. package/lib/browser/core/VelocityCore.d.ts +285 -8
  111. package/lib/browser/core/VelocityCore.js +281 -8
  112. package/lib/browser/core/instructions/deposit.d.ts +22 -0
  113. package/lib/browser/core/instructions/deposit.js +22 -0
  114. package/lib/browser/core/instructions/fill.d.ts +17 -0
  115. package/lib/browser/core/instructions/fill.js +17 -0
  116. package/lib/browser/core/instructions/funding.d.ts +12 -0
  117. package/lib/browser/core/instructions/funding.js +12 -0
  118. package/lib/browser/core/instructions/liquidation.d.ts +18 -0
  119. package/lib/browser/core/instructions/liquidation.js +18 -0
  120. package/lib/browser/core/instructions/orders.d.ts +28 -0
  121. package/lib/browser/core/instructions/orders.js +28 -0
  122. package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
  123. package/lib/browser/core/instructions/perpOrders.js +106 -0
  124. package/lib/browser/core/instructions/settlement.d.ts +14 -0
  125. package/lib/browser/core/instructions/settlement.js +14 -0
  126. package/lib/browser/core/instructions/trigger.d.ts +15 -0
  127. package/lib/browser/core/instructions/trigger.js +15 -0
  128. package/lib/browser/core/instructions/withdraw.d.ts +21 -0
  129. package/lib/browser/core/instructions/withdraw.js +21 -0
  130. package/lib/browser/core/remainingAccounts.d.ts +47 -3
  131. package/lib/browser/core/remainingAccounts.js +20 -0
  132. package/lib/browser/core/signedMsg.d.ts +38 -0
  133. package/lib/browser/core/signedMsg.js +33 -0
  134. package/lib/browser/decode/customCoder.d.ts +39 -3
  135. package/lib/browser/decode/customCoder.js +45 -3
  136. package/lib/browser/decode/user.d.ts +22 -0
  137. package/lib/browser/decode/user.js +27 -1
  138. package/lib/browser/dlob/DLOB.d.ts +502 -53
  139. package/lib/browser/dlob/DLOB.js +540 -98
  140. package/lib/browser/dlob/DLOBNode.d.ts +86 -4
  141. package/lib/browser/dlob/DLOBNode.js +37 -4
  142. package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
  143. package/lib/browser/dlob/DLOBSubscriber.js +42 -12
  144. package/lib/browser/dlob/NodeList.d.ts +69 -0
  145. package/lib/browser/dlob/NodeList.js +66 -0
  146. package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
  147. package/lib/browser/dlob/orderBookLevels.js +84 -14
  148. package/lib/browser/dlob/types.d.ts +15 -0
  149. package/lib/browser/events/eventList.d.ts +14 -0
  150. package/lib/browser/events/eventList.js +14 -0
  151. package/lib/browser/events/eventSubscriber.d.ts +87 -10
  152. package/lib/browser/events/eventSubscriber.js +93 -8
  153. package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
  154. package/lib/browser/events/eventsServerLogProvider.js +27 -0
  155. package/lib/browser/events/fetchLogs.d.ts +31 -0
  156. package/lib/browser/events/fetchLogs.js +46 -1
  157. package/lib/browser/events/parse.d.ts +23 -0
  158. package/lib/browser/events/parse.js +23 -0
  159. package/lib/browser/events/pollingLogProvider.d.ts +24 -0
  160. package/lib/browser/events/pollingLogProvider.js +24 -0
  161. package/lib/browser/events/sort.d.ts +11 -0
  162. package/lib/browser/events/sort.js +12 -0
  163. package/lib/browser/events/txEventCache.d.ts +13 -3
  164. package/lib/browser/events/txEventCache.js +19 -7
  165. package/lib/browser/events/types.d.ts +118 -2
  166. package/lib/browser/events/types.js +11 -0
  167. package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
  168. package/lib/browser/events/webSocketLogProvider.js +28 -0
  169. package/lib/browser/factory/oracleClient.js +2 -2
  170. package/lib/browser/idl/velocity.d.ts +150 -7
  171. package/lib/browser/idl/velocity.json +151 -8
  172. package/lib/browser/keypair.d.ts +8 -0
  173. package/lib/browser/keypair.js +8 -0
  174. package/lib/browser/marginCalculation.d.ts +134 -2
  175. package/lib/browser/marginCalculation.js +121 -0
  176. package/lib/browser/math/amm.d.ts +348 -29
  177. package/lib/browser/math/amm.js +310 -32
  178. package/lib/browser/math/auction.d.ts +95 -19
  179. package/lib/browser/math/auction.js +118 -28
  180. package/lib/browser/math/bankruptcy.d.ts +46 -0
  181. package/lib/browser/math/bankruptcy.js +89 -1
  182. package/lib/browser/math/builder.d.ts +64 -8
  183. package/lib/browser/math/builder.js +71 -9
  184. package/lib/browser/math/conversion.d.ts +21 -0
  185. package/lib/browser/math/conversion.js +21 -0
  186. package/lib/browser/math/exchangeStatus.d.ts +91 -0
  187. package/lib/browser/math/exchangeStatus.js +106 -3
  188. package/lib/browser/math/funding.d.ts +57 -20
  189. package/lib/browser/math/funding.js +63 -23
  190. package/lib/browser/math/insurance.d.ts +62 -0
  191. package/lib/browser/math/insurance.js +62 -0
  192. package/lib/browser/math/liquidation.d.ts +127 -11
  193. package/lib/browser/math/liquidation.js +182 -19
  194. package/lib/browser/math/margin.d.ts +79 -13
  195. package/lib/browser/math/margin.js +80 -14
  196. package/lib/browser/math/market.d.ts +135 -15
  197. package/lib/browser/math/market.js +145 -17
  198. package/lib/browser/math/oracles.d.ts +113 -0
  199. package/lib/browser/math/oracles.js +118 -1
  200. package/lib/browser/math/orders.d.ts +115 -10
  201. package/lib/browser/math/orders.js +130 -19
  202. package/lib/browser/math/position.d.ts +80 -33
  203. package/lib/browser/math/position.js +80 -33
  204. package/lib/browser/math/repeg.d.ts +48 -10
  205. package/lib/browser/math/repeg.js +48 -10
  206. package/lib/browser/math/spotBalance.d.ts +200 -5
  207. package/lib/browser/math/spotBalance.js +239 -10
  208. package/lib/browser/math/spotMarket.d.ts +36 -3
  209. package/lib/browser/math/spotMarket.js +36 -3
  210. package/lib/browser/math/spotPosition.d.ts +72 -0
  211. package/lib/browser/math/spotPosition.js +62 -0
  212. package/lib/browser/math/state.d.ts +31 -0
  213. package/lib/browser/math/state.js +31 -0
  214. package/lib/browser/math/superStake.d.ts +126 -2
  215. package/lib/browser/math/superStake.js +123 -3
  216. package/lib/browser/math/tiers.d.ts +29 -0
  217. package/lib/browser/math/tiers.js +29 -0
  218. package/lib/browser/math/trade.d.ts +102 -51
  219. package/lib/browser/math/trade.js +101 -55
  220. package/lib/browser/math/utils.d.ts +71 -9
  221. package/lib/browser/math/utils.js +71 -9
  222. package/lib/browser/memcmp.d.ts +94 -0
  223. package/lib/browser/memcmp.js +103 -2
  224. package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
  225. package/lib/browser/oracles/oracleClientCache.js +16 -0
  226. package/lib/browser/oracles/oracleId.d.ts +31 -0
  227. package/lib/browser/oracles/oracleId.js +39 -8
  228. package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
  229. package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
  230. package/lib/browser/oracles/pythClient.d.ts +31 -0
  231. package/lib/browser/oracles/pythClient.js +32 -1
  232. package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
  233. package/lib/browser/oracles/pythLazerClient.js +35 -1
  234. package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
  235. package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
  236. package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
  237. package/lib/browser/oracles/strictOraclePrice.js +21 -0
  238. package/lib/browser/oracles/types.d.ts +45 -0
  239. package/lib/browser/oracles/utils.d.ts +20 -0
  240. package/lib/browser/oracles/utils.js +20 -0
  241. package/lib/browser/orderParams.d.ts +42 -4
  242. package/lib/browser/orderParams.js +42 -4
  243. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
  244. package/lib/browser/orderSubscriber/OrderSubscriber.js +59 -0
  245. package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
  246. package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
  247. package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
  248. package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
  249. package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
  250. package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
  251. package/lib/browser/orderSubscriber/types.d.ts +9 -0
  252. package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
  253. package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
  254. package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
  255. package/lib/browser/priorityFee/averageStrategy.js +1 -0
  256. package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
  257. package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
  258. package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
  259. package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
  260. package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
  261. package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
  262. package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
  263. package/lib/browser/priorityFee/maxStrategy.js +1 -0
  264. package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
  265. package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
  266. package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
  267. package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
  268. package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
  269. package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
  270. package/lib/browser/priorityFee/types.d.ts +32 -0
  271. package/lib/browser/priorityFee/types.js +5 -0
  272. package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
  273. package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
  274. package/lib/browser/pyth/pythLazerSubscriber.js +37 -27
  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/tx/baseTxSender.d.ts +163 -0
  280. package/lib/browser/tx/baseTxSender.js +174 -6
  281. package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
  282. package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
  283. package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
  284. package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
  285. package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
  286. package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
  287. package/lib/browser/tx/fastSingleTxSender.js +48 -1
  288. package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
  289. package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
  290. package/lib/browser/tx/reportTransactionError.d.ts +18 -6
  291. package/lib/browser/tx/reportTransactionError.js +18 -6
  292. package/lib/browser/tx/retryTxSender.d.ts +40 -0
  293. package/lib/browser/tx/retryTxSender.js +39 -0
  294. package/lib/browser/tx/txHandler.d.ts +146 -35
  295. package/lib/browser/tx/txHandler.js +132 -32
  296. package/lib/browser/tx/txParamProcessor.d.ts +47 -0
  297. package/lib/browser/tx/txParamProcessor.js +47 -0
  298. package/lib/browser/tx/types.d.ts +46 -0
  299. package/lib/browser/tx/types.js +5 -0
  300. package/lib/browser/tx/utils.d.ts +26 -0
  301. package/lib/browser/tx/utils.js +26 -0
  302. package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
  303. package/lib/browser/tx/whileValidTxSender.js +81 -0
  304. package/lib/browser/types.d.ts +785 -13
  305. package/lib/browser/types.js +126 -9
  306. package/lib/browser/user.d.ts +660 -84
  307. package/lib/browser/user.js +816 -97
  308. package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
  309. package/lib/browser/userMap/PollingSubscription.js +14 -2
  310. package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
  311. package/lib/browser/userMap/WebsocketSubscription.js +9 -0
  312. package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
  313. package/lib/browser/userMap/grpcSubscription.js +8 -0
  314. package/lib/browser/userMap/referrerMap.d.ts +72 -2
  315. package/lib/browser/userMap/referrerMap.js +84 -2
  316. package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
  317. package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
  318. package/lib/browser/userMap/userMap.d.ts +81 -3
  319. package/lib/browser/userMap/userMap.js +81 -4
  320. package/lib/browser/userMap/userMapConfig.d.ts +23 -0
  321. package/lib/browser/userMap/userStatsMap.d.ts +22 -0
  322. package/lib/browser/userMap/userStatsMap.js +22 -0
  323. package/lib/browser/userName.d.ts +16 -0
  324. package/lib/browser/userName.js +16 -0
  325. package/lib/browser/userStats.d.ts +28 -1
  326. package/lib/browser/userStats.js +28 -1
  327. package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
  328. package/lib/browser/util/TransactionConfirmationManager.js +33 -0
  329. package/lib/browser/util/chainClock.d.ts +24 -0
  330. package/lib/browser/util/chainClock.js +20 -0
  331. package/lib/browser/util/computeUnits.d.ts +32 -0
  332. package/lib/browser/util/computeUnits.js +32 -0
  333. package/lib/browser/util/digest.d.ts +17 -0
  334. package/lib/browser/util/digest.js +17 -0
  335. package/lib/browser/util/ed25519Utils.d.ts +12 -2
  336. package/lib/browser/util/ed25519Utils.js +12 -2
  337. package/lib/browser/util/promiseTimeout.d.ts +9 -0
  338. package/lib/browser/util/promiseTimeout.js +9 -0
  339. package/lib/browser/velocityClient.d.ts +3363 -220
  340. package/lib/browser/velocityClient.js +3514 -275
  341. package/lib/browser/wallet.d.ts +37 -0
  342. package/lib/browser/wallet.js +37 -0
  343. package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
  344. package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
  345. package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
  346. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
  347. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
  348. package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
  349. package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
  350. package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
  351. package/lib/node/accounts/bulkAccountLoader.js +51 -0
  352. package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
  353. package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
  354. package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
  355. package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
  356. package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
  357. package/lib/node/accounts/bulkUserSubscription.js +8 -2
  358. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
  359. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
  360. package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
  361. package/lib/node/accounts/fetch.d.ts +59 -2
  362. package/lib/node/accounts/fetch.d.ts.map +1 -1
  363. package/lib/node/accounts/fetch.js +57 -2
  364. package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
  365. package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
  366. package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
  367. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
  368. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  369. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
  370. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
  371. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
  372. package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
  373. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
  374. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
  375. package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
  376. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
  377. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
  378. package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
  379. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
  380. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
  381. package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
  382. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
  383. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
  384. package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
  385. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
  386. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
  387. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
  388. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
  389. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  390. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
  391. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
  392. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
  393. package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
  394. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
  395. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
  396. package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
  397. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
  398. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
  399. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
  400. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
  401. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  402. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
  403. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
  404. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
  405. package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
  406. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
  407. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
  408. package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
  409. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
  410. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
  411. package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
  412. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
  413. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
  414. package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
  415. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
  416. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
  417. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
  418. package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
  419. package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
  420. package/lib/node/accounts/testBulkAccountLoader.js +8 -0
  421. package/lib/node/accounts/types.d.ts +149 -0
  422. package/lib/node/accounts/types.d.ts.map +1 -1
  423. package/lib/node/accounts/types.js +13 -0
  424. package/lib/node/accounts/utils.d.ts +18 -0
  425. package/lib/node/accounts/utils.d.ts.map +1 -1
  426. package/lib/node/accounts/utils.js +32 -16
  427. package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
  428. package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
  429. package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
  430. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
  431. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
  432. package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
  433. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
  434. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  435. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
  436. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
  437. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
  438. package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
  439. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
  440. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
  441. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
  442. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
  443. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
  444. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
  445. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
  446. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
  447. package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
  448. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  449. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
  450. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
  451. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
  452. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
  453. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
  454. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
  455. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  456. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
  457. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
  458. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
  459. package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
  460. package/lib/node/addresses/marketAddresses.d.ts +10 -0
  461. package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
  462. package/lib/node/addresses/marketAddresses.js +10 -0
  463. package/lib/node/addresses/pda.d.ts +214 -2
  464. package/lib/node/addresses/pda.d.ts.map +1 -1
  465. package/lib/node/addresses/pda.js +217 -5
  466. package/lib/node/adminClient.d.ts +2171 -4
  467. package/lib/node/adminClient.d.ts.map +1 -1
  468. package/lib/node/adminClient.js +2215 -4
  469. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
  470. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
  471. package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
  472. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
  473. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
  474. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
  475. package/lib/node/auctionSubscriber/index.d.ts +6 -0
  476. package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
  477. package/lib/node/auctionSubscriber/index.js +6 -0
  478. package/lib/node/auctionSubscriber/types.d.ts +7 -0
  479. package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
  480. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
  481. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
  482. package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
  483. package/lib/node/blockhashSubscriber/index.d.ts +5 -0
  484. package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
  485. package/lib/node/blockhashSubscriber/index.js +5 -0
  486. package/lib/node/blockhashSubscriber/types.d.ts +5 -0
  487. package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
  488. package/lib/node/clock/clockSubscriber.d.ts +24 -0
  489. package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
  490. package/lib/node/clock/clockSubscriber.js +22 -0
  491. package/lib/node/config.d.ts +58 -4
  492. package/lib/node/config.d.ts.map +1 -1
  493. package/lib/node/config.js +94 -28
  494. package/lib/node/constants/numericConstants.d.ts +67 -0
  495. package/lib/node/constants/numericConstants.d.ts.map +1 -1
  496. package/lib/node/constants/numericConstants.js +68 -1
  497. package/lib/node/constants/perpMarkets.d.ts +10 -0
  498. package/lib/node/constants/perpMarkets.d.ts.map +1 -1
  499. package/lib/node/constants/perpMarkets.js +40 -908
  500. package/lib/node/constants/spotMarkets.d.ts +13 -0
  501. package/lib/node/constants/spotMarkets.d.ts.map +1 -1
  502. package/lib/node/constants/spotMarkets.js +16 -742
  503. package/lib/node/constants/txConstants.d.ts +1 -0
  504. package/lib/node/constants/txConstants.d.ts.map +1 -1
  505. package/lib/node/constants/txConstants.js +1 -0
  506. package/lib/node/core/VelocityCore.d.ts +285 -8
  507. package/lib/node/core/VelocityCore.d.ts.map +1 -1
  508. package/lib/node/core/VelocityCore.js +281 -8
  509. package/lib/node/core/instructions/deposit.d.ts +22 -0
  510. package/lib/node/core/instructions/deposit.d.ts.map +1 -1
  511. package/lib/node/core/instructions/deposit.js +22 -0
  512. package/lib/node/core/instructions/fill.d.ts +17 -0
  513. package/lib/node/core/instructions/fill.d.ts.map +1 -1
  514. package/lib/node/core/instructions/fill.js +17 -0
  515. package/lib/node/core/instructions/funding.d.ts +12 -0
  516. package/lib/node/core/instructions/funding.d.ts.map +1 -1
  517. package/lib/node/core/instructions/funding.js +12 -0
  518. package/lib/node/core/instructions/liquidation.d.ts +18 -0
  519. package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
  520. package/lib/node/core/instructions/liquidation.js +18 -0
  521. package/lib/node/core/instructions/orders.d.ts +28 -0
  522. package/lib/node/core/instructions/orders.d.ts.map +1 -1
  523. package/lib/node/core/instructions/orders.js +28 -0
  524. package/lib/node/core/instructions/perpOrders.d.ts +106 -0
  525. package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
  526. package/lib/node/core/instructions/perpOrders.js +106 -0
  527. package/lib/node/core/instructions/settlement.d.ts +14 -0
  528. package/lib/node/core/instructions/settlement.d.ts.map +1 -1
  529. package/lib/node/core/instructions/settlement.js +14 -0
  530. package/lib/node/core/instructions/trigger.d.ts +15 -0
  531. package/lib/node/core/instructions/trigger.d.ts.map +1 -1
  532. package/lib/node/core/instructions/trigger.js +15 -0
  533. package/lib/node/core/instructions/withdraw.d.ts +21 -0
  534. package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
  535. package/lib/node/core/instructions/withdraw.js +21 -0
  536. package/lib/node/core/remainingAccounts.d.ts +47 -3
  537. package/lib/node/core/remainingAccounts.d.ts.map +1 -1
  538. package/lib/node/core/remainingAccounts.js +20 -0
  539. package/lib/node/core/signedMsg.d.ts +38 -0
  540. package/lib/node/core/signedMsg.d.ts.map +1 -1
  541. package/lib/node/core/signedMsg.js +33 -0
  542. package/lib/node/decode/customCoder.d.ts +39 -3
  543. package/lib/node/decode/customCoder.d.ts.map +1 -1
  544. package/lib/node/decode/customCoder.js +45 -3
  545. package/lib/node/decode/user.d.ts +22 -0
  546. package/lib/node/decode/user.d.ts.map +1 -1
  547. package/lib/node/decode/user.js +27 -1
  548. package/lib/node/dlob/DLOB.d.ts +502 -53
  549. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  550. package/lib/node/dlob/DLOB.js +540 -98
  551. package/lib/node/dlob/DLOBNode.d.ts +86 -4
  552. package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
  553. package/lib/node/dlob/DLOBNode.js +37 -4
  554. package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
  555. package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
  556. package/lib/node/dlob/DLOBSubscriber.js +42 -12
  557. package/lib/node/dlob/NodeList.d.ts +69 -0
  558. package/lib/node/dlob/NodeList.d.ts.map +1 -1
  559. package/lib/node/dlob/NodeList.js +66 -0
  560. package/lib/node/dlob/orderBookLevels.d.ts +106 -13
  561. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  562. package/lib/node/dlob/orderBookLevels.js +84 -14
  563. package/lib/node/dlob/types.d.ts +15 -0
  564. package/lib/node/dlob/types.d.ts.map +1 -1
  565. package/lib/node/events/eventList.d.ts +14 -0
  566. package/lib/node/events/eventList.d.ts.map +1 -1
  567. package/lib/node/events/eventList.js +14 -0
  568. package/lib/node/events/eventSubscriber.d.ts +87 -10
  569. package/lib/node/events/eventSubscriber.d.ts.map +1 -1
  570. package/lib/node/events/eventSubscriber.js +93 -8
  571. package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
  572. package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
  573. package/lib/node/events/eventsServerLogProvider.js +27 -0
  574. package/lib/node/events/fetchLogs.d.ts +31 -0
  575. package/lib/node/events/fetchLogs.d.ts.map +1 -1
  576. package/lib/node/events/fetchLogs.js +46 -1
  577. package/lib/node/events/parse.d.ts +23 -0
  578. package/lib/node/events/parse.d.ts.map +1 -1
  579. package/lib/node/events/parse.js +23 -0
  580. package/lib/node/events/pollingLogProvider.d.ts +24 -0
  581. package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
  582. package/lib/node/events/pollingLogProvider.js +24 -0
  583. package/lib/node/events/sort.d.ts +11 -0
  584. package/lib/node/events/sort.d.ts.map +1 -1
  585. package/lib/node/events/sort.js +12 -0
  586. package/lib/node/events/txEventCache.d.ts +13 -3
  587. package/lib/node/events/txEventCache.d.ts.map +1 -1
  588. package/lib/node/events/txEventCache.js +19 -7
  589. package/lib/node/events/types.d.ts +118 -2
  590. package/lib/node/events/types.d.ts.map +1 -1
  591. package/lib/node/events/types.js +11 -0
  592. package/lib/node/events/webSocketLogProvider.d.ts +23 -0
  593. package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
  594. package/lib/node/events/webSocketLogProvider.js +28 -0
  595. package/lib/node/factory/oracleClient.js +2 -2
  596. package/lib/node/idl/velocity.d.ts +150 -7
  597. package/lib/node/idl/velocity.d.ts.map +1 -1
  598. package/lib/node/idl/velocity.json +151 -8
  599. package/lib/node/keypair.d.ts +8 -0
  600. package/lib/node/keypair.d.ts.map +1 -1
  601. package/lib/node/keypair.js +8 -0
  602. package/lib/node/marginCalculation.d.ts +134 -2
  603. package/lib/node/marginCalculation.d.ts.map +1 -1
  604. package/lib/node/marginCalculation.js +121 -0
  605. package/lib/node/math/amm.d.ts +348 -29
  606. package/lib/node/math/amm.d.ts.map +1 -1
  607. package/lib/node/math/amm.js +310 -32
  608. package/lib/node/math/auction.d.ts +95 -19
  609. package/lib/node/math/auction.d.ts.map +1 -1
  610. package/lib/node/math/auction.js +118 -28
  611. package/lib/node/math/bankruptcy.d.ts +46 -0
  612. package/lib/node/math/bankruptcy.d.ts.map +1 -1
  613. package/lib/node/math/bankruptcy.js +89 -1
  614. package/lib/node/math/builder.d.ts +64 -8
  615. package/lib/node/math/builder.d.ts.map +1 -1
  616. package/lib/node/math/builder.js +71 -9
  617. package/lib/node/math/conversion.d.ts +21 -0
  618. package/lib/node/math/conversion.d.ts.map +1 -1
  619. package/lib/node/math/conversion.js +21 -0
  620. package/lib/node/math/exchangeStatus.d.ts +91 -0
  621. package/lib/node/math/exchangeStatus.d.ts.map +1 -1
  622. package/lib/node/math/exchangeStatus.js +106 -3
  623. package/lib/node/math/funding.d.ts +57 -20
  624. package/lib/node/math/funding.d.ts.map +1 -1
  625. package/lib/node/math/funding.js +63 -23
  626. package/lib/node/math/insurance.d.ts +62 -0
  627. package/lib/node/math/insurance.d.ts.map +1 -1
  628. package/lib/node/math/insurance.js +62 -0
  629. package/lib/node/math/liquidation.d.ts +127 -11
  630. package/lib/node/math/liquidation.d.ts.map +1 -1
  631. package/lib/node/math/liquidation.js +182 -19
  632. package/lib/node/math/margin.d.ts +79 -13
  633. package/lib/node/math/margin.d.ts.map +1 -1
  634. package/lib/node/math/margin.js +80 -14
  635. package/lib/node/math/market.d.ts +135 -15
  636. package/lib/node/math/market.d.ts.map +1 -1
  637. package/lib/node/math/market.js +145 -17
  638. package/lib/node/math/oracles.d.ts +113 -0
  639. package/lib/node/math/oracles.d.ts.map +1 -1
  640. package/lib/node/math/oracles.js +118 -1
  641. package/lib/node/math/orders.d.ts +115 -10
  642. package/lib/node/math/orders.d.ts.map +1 -1
  643. package/lib/node/math/orders.js +130 -19
  644. package/lib/node/math/position.d.ts +80 -33
  645. package/lib/node/math/position.d.ts.map +1 -1
  646. package/lib/node/math/position.js +80 -33
  647. package/lib/node/math/repeg.d.ts +48 -10
  648. package/lib/node/math/repeg.d.ts.map +1 -1
  649. package/lib/node/math/repeg.js +48 -10
  650. package/lib/node/math/spotBalance.d.ts +200 -5
  651. package/lib/node/math/spotBalance.d.ts.map +1 -1
  652. package/lib/node/math/spotBalance.js +239 -10
  653. package/lib/node/math/spotMarket.d.ts +36 -3
  654. package/lib/node/math/spotMarket.d.ts.map +1 -1
  655. package/lib/node/math/spotMarket.js +36 -3
  656. package/lib/node/math/spotPosition.d.ts +72 -0
  657. package/lib/node/math/spotPosition.d.ts.map +1 -1
  658. package/lib/node/math/spotPosition.js +62 -0
  659. package/lib/node/math/state.d.ts +31 -0
  660. package/lib/node/math/state.d.ts.map +1 -1
  661. package/lib/node/math/state.js +31 -0
  662. package/lib/node/math/superStake.d.ts +126 -2
  663. package/lib/node/math/superStake.d.ts.map +1 -1
  664. package/lib/node/math/superStake.js +123 -3
  665. package/lib/node/math/tiers.d.ts +29 -0
  666. package/lib/node/math/tiers.d.ts.map +1 -1
  667. package/lib/node/math/tiers.js +29 -0
  668. package/lib/node/math/trade.d.ts +102 -51
  669. package/lib/node/math/trade.d.ts.map +1 -1
  670. package/lib/node/math/trade.js +101 -55
  671. package/lib/node/math/utils.d.ts +71 -9
  672. package/lib/node/math/utils.d.ts.map +1 -1
  673. package/lib/node/math/utils.js +71 -9
  674. package/lib/node/memcmp.d.ts +94 -0
  675. package/lib/node/memcmp.d.ts.map +1 -1
  676. package/lib/node/memcmp.js +103 -2
  677. package/lib/node/oracles/oracleClientCache.d.ts +16 -0
  678. package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
  679. package/lib/node/oracles/oracleClientCache.js +16 -0
  680. package/lib/node/oracles/oracleId.d.ts +31 -0
  681. package/lib/node/oracles/oracleId.d.ts.map +1 -1
  682. package/lib/node/oracles/oracleId.js +39 -8
  683. package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
  684. package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
  685. package/lib/node/oracles/prelaunchOracleClient.js +20 -0
  686. package/lib/node/oracles/pythClient.d.ts +31 -0
  687. package/lib/node/oracles/pythClient.d.ts.map +1 -1
  688. package/lib/node/oracles/pythClient.js +32 -1
  689. package/lib/node/oracles/pythLazerClient.d.ts +34 -0
  690. package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
  691. package/lib/node/oracles/pythLazerClient.js +35 -1
  692. package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
  693. package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
  694. package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
  695. package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
  696. package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
  697. package/lib/node/oracles/strictOraclePrice.js +21 -0
  698. package/lib/node/oracles/types.d.ts +45 -0
  699. package/lib/node/oracles/types.d.ts.map +1 -1
  700. package/lib/node/oracles/utils.d.ts +20 -0
  701. package/lib/node/oracles/utils.d.ts.map +1 -1
  702. package/lib/node/oracles/utils.js +20 -0
  703. package/lib/node/orderParams.d.ts +42 -4
  704. package/lib/node/orderParams.d.ts.map +1 -1
  705. package/lib/node/orderParams.js +42 -4
  706. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
  707. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  708. package/lib/node/orderSubscriber/OrderSubscriber.js +59 -0
  709. package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
  710. package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
  711. package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
  712. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
  713. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
  714. package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
  715. package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
  716. package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
  717. package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
  718. package/lib/node/orderSubscriber/types.d.ts +9 -0
  719. package/lib/node/orderSubscriber/types.d.ts.map +1 -1
  720. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
  721. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
  722. package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
  723. package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
  724. package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
  725. package/lib/node/priorityFee/averageStrategy.js +1 -0
  726. package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
  727. package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
  728. package/lib/node/priorityFee/ewmaStrategy.js +10 -0
  729. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
  730. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
  731. package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
  732. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
  733. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
  734. package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
  735. package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
  736. package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
  737. package/lib/node/priorityFee/maxStrategy.js +1 -0
  738. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
  739. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
  740. package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
  741. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
  742. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
  743. package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
  744. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
  745. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
  746. package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
  747. package/lib/node/priorityFee/types.d.ts +32 -0
  748. package/lib/node/priorityFee/types.d.ts.map +1 -1
  749. package/lib/node/priorityFee/types.js +5 -0
  750. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
  751. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
  752. package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
  753. package/lib/node/pyth/pythLazerSubscriber.d.ts.map +1 -1
  754. package/lib/node/pyth/pythLazerSubscriber.js +37 -27
  755. package/lib/node/slot/SlotSubscriber.d.ts +18 -0
  756. package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
  757. package/lib/node/slot/SlotSubscriber.js +16 -0
  758. package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
  759. package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
  760. package/lib/node/slot/SlothashSubscriber.js +25 -1
  761. package/lib/node/tx/baseTxSender.d.ts +163 -0
  762. package/lib/node/tx/baseTxSender.d.ts.map +1 -1
  763. package/lib/node/tx/baseTxSender.js +174 -6
  764. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
  765. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
  766. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
  767. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
  768. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
  769. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
  770. package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
  771. package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
  772. package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
  773. package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
  774. package/lib/node/tx/fastSingleTxSender.js +48 -1
  775. package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
  776. package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
  777. package/lib/node/tx/forwardOnlyTxSender.js +48 -0
  778. package/lib/node/tx/reportTransactionError.d.ts +18 -6
  779. package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
  780. package/lib/node/tx/reportTransactionError.js +18 -6
  781. package/lib/node/tx/retryTxSender.d.ts +40 -0
  782. package/lib/node/tx/retryTxSender.d.ts.map +1 -1
  783. package/lib/node/tx/retryTxSender.js +39 -0
  784. package/lib/node/tx/txHandler.d.ts +146 -35
  785. package/lib/node/tx/txHandler.d.ts.map +1 -1
  786. package/lib/node/tx/txHandler.js +132 -32
  787. package/lib/node/tx/txParamProcessor.d.ts +47 -0
  788. package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
  789. package/lib/node/tx/txParamProcessor.js +47 -0
  790. package/lib/node/tx/types.d.ts +46 -0
  791. package/lib/node/tx/types.d.ts.map +1 -1
  792. package/lib/node/tx/types.js +5 -0
  793. package/lib/node/tx/utils.d.ts +26 -0
  794. package/lib/node/tx/utils.d.ts.map +1 -1
  795. package/lib/node/tx/utils.js +26 -0
  796. package/lib/node/tx/whileValidTxSender.d.ts +82 -0
  797. package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
  798. package/lib/node/tx/whileValidTxSender.js +81 -0
  799. package/lib/node/types.d.ts +785 -13
  800. package/lib/node/types.d.ts.map +1 -1
  801. package/lib/node/types.js +126 -9
  802. package/lib/node/user.d.ts +660 -84
  803. package/lib/node/user.d.ts.map +1 -1
  804. package/lib/node/user.js +816 -97
  805. package/lib/node/userMap/PollingSubscription.d.ts +10 -0
  806. package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
  807. package/lib/node/userMap/PollingSubscription.js +14 -2
  808. package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
  809. package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
  810. package/lib/node/userMap/WebsocketSubscription.js +9 -0
  811. package/lib/node/userMap/grpcSubscription.d.ts +8 -0
  812. package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
  813. package/lib/node/userMap/grpcSubscription.js +8 -0
  814. package/lib/node/userMap/referrerMap.d.ts +72 -2
  815. package/lib/node/userMap/referrerMap.d.ts.map +1 -1
  816. package/lib/node/userMap/referrerMap.js +84 -2
  817. package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
  818. package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
  819. package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
  820. package/lib/node/userMap/userMap.d.ts +81 -3
  821. package/lib/node/userMap/userMap.d.ts.map +1 -1
  822. package/lib/node/userMap/userMap.js +81 -4
  823. package/lib/node/userMap/userMapConfig.d.ts +23 -0
  824. package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
  825. package/lib/node/userMap/userStatsMap.d.ts +22 -0
  826. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  827. package/lib/node/userMap/userStatsMap.js +22 -0
  828. package/lib/node/userName.d.ts +16 -0
  829. package/lib/node/userName.d.ts.map +1 -1
  830. package/lib/node/userName.js +16 -0
  831. package/lib/node/userStats.d.ts +28 -1
  832. package/lib/node/userStats.d.ts.map +1 -1
  833. package/lib/node/userStats.js +28 -1
  834. package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
  835. package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
  836. package/lib/node/util/TransactionConfirmationManager.js +33 -0
  837. package/lib/node/util/chainClock.d.ts +24 -0
  838. package/lib/node/util/chainClock.d.ts.map +1 -1
  839. package/lib/node/util/chainClock.js +20 -0
  840. package/lib/node/util/computeUnits.d.ts +32 -0
  841. package/lib/node/util/computeUnits.d.ts.map +1 -1
  842. package/lib/node/util/computeUnits.js +32 -0
  843. package/lib/node/util/digest.d.ts +17 -0
  844. package/lib/node/util/digest.d.ts.map +1 -1
  845. package/lib/node/util/digest.js +17 -0
  846. package/lib/node/util/ed25519Utils.d.ts +12 -2
  847. package/lib/node/util/ed25519Utils.d.ts.map +1 -1
  848. package/lib/node/util/ed25519Utils.js +12 -2
  849. package/lib/node/util/promiseTimeout.d.ts +9 -0
  850. package/lib/node/util/promiseTimeout.d.ts.map +1 -1
  851. package/lib/node/util/promiseTimeout.js +9 -0
  852. package/lib/node/velocityClient.d.ts +3363 -220
  853. package/lib/node/velocityClient.d.ts.map +1 -1
  854. package/lib/node/velocityClient.js +3514 -275
  855. package/lib/node/wallet.d.ts +37 -0
  856. package/lib/node/wallet.d.ts.map +1 -1
  857. package/lib/node/wallet.js +37 -0
  858. package/package.json +8 -3
  859. package/.prettierignore +0 -1
  860. package/CHANGELOG.md +0 -81
  861. package/build-browser.js +0 -58
  862. package/bunfig.toml +0 -3
  863. package/esbuild-shims.js +0 -12
  864. package/scripts/deposit-isolated-positions.ts +0 -110
  865. package/scripts/find-flagged-users.ts +0 -213
  866. package/scripts/grpc-client-test-comparison.ts +0 -372
  867. package/scripts/grpc-multiuser-client-test-comparison.ts +0 -158
  868. package/scripts/postbuild.js +0 -95
  869. package/scripts/single-grpc-client-test.ts +0 -284
  870. package/scripts/withdraw-isolated-positions.ts +0 -174
  871. package/src/accounts/README_WebSocketAccountSubscriberV2.md +0 -95
  872. package/src/accounts/README_WebSocketProgramAccountSubscriberV2.md +0 -135
  873. package/src/accounts/basicUserAccountSubscriber.ts +0 -61
  874. package/src/accounts/basicUserStatsAccountSubscriber.ts +0 -69
  875. package/src/accounts/bulkAccountLoader.ts +0 -306
  876. package/src/accounts/bulkUserStatsSubscription.ts +0 -33
  877. package/src/accounts/bulkUserSubscription.ts +0 -33
  878. package/src/accounts/customizedCadenceBulkAccountLoader.ts +0 -213
  879. package/src/accounts/fetch.ts +0 -143
  880. package/src/accounts/grpcAccountSubscriber.ts +0 -195
  881. package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +0 -57
  882. package/src/accounts/grpcMultiAccountSubscriber.ts +0 -483
  883. package/src/accounts/grpcMultiUserAccountSubscriber.ts +0 -290
  884. package/src/accounts/grpcProgramAccountSubscriber.ts +0 -231
  885. package/src/accounts/grpcUserAccountSubscriber.ts +0 -48
  886. package/src/accounts/grpcUserStatsAccountSubscriber.ts +0 -50
  887. package/src/accounts/grpcVelocityClientAccountSubscriber.ts +0 -216
  888. package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +0 -782
  889. package/src/accounts/laserProgramAccountSubscriber.ts +0 -232
  890. package/src/accounts/oneShotUserAccountSubscriber.ts +0 -69
  891. package/src/accounts/oneShotUserStatsAccountSubscriber.ts +0 -75
  892. package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +0 -192
  893. package/src/accounts/pollingOracleAccountSubscriber.ts +0 -132
  894. package/src/accounts/pollingTokenAccountSubscriber.ts +0 -125
  895. package/src/accounts/pollingUserAccountSubscriber.ts +0 -166
  896. package/src/accounts/pollingUserStatsAccountSubscriber.ts +0 -158
  897. package/src/accounts/pollingVelocityClientAccountSubscriber.ts +0 -691
  898. package/src/accounts/testBulkAccountLoader.ts +0 -51
  899. package/src/accounts/types.ts +0 -279
  900. package/src/accounts/utils.ts +0 -72
  901. package/src/accounts/webSocketAccountSubscriber.ts +0 -263
  902. package/src/accounts/webSocketAccountSubscriberV2.ts +0 -528
  903. package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +0 -144
  904. package/src/accounts/webSocketProgramAccountSubscriber.ts +0 -208
  905. package/src/accounts/webSocketProgramAccountSubscriberV2.ts +0 -1022
  906. package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +0 -1021
  907. package/src/accounts/webSocketUserAccountSubscriber.ts +0 -113
  908. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +0 -111
  909. package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +0 -740
  910. package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +0 -787
  911. package/src/accounts/websocketProgramUserAccountSubscriber.ts +0 -94
  912. package/src/addresses/marketAddresses.ts +0 -18
  913. package/src/addresses/pda.ts +0 -404
  914. package/src/adminClient.ts +0 -5984
  915. package/src/assert/assert.ts +0 -5
  916. package/src/auctionSubscriber/auctionSubscriber.ts +0 -71
  917. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +0 -80
  918. package/src/auctionSubscriber/index.ts +0 -3
  919. package/src/auctionSubscriber/types.ts +0 -23
  920. package/src/bankrun/bankrunConnection.ts +0 -630
  921. package/src/blockhashSubscriber/BlockhashSubscriber.ts +0 -127
  922. package/src/blockhashSubscriber/index.ts +0 -1
  923. package/src/blockhashSubscriber/types.ts +0 -12
  924. package/src/clock/clockSubscriber.ts +0 -122
  925. package/src/config.ts +0 -225
  926. package/src/constants/index.ts +0 -9
  927. package/src/constants/numericConstants.ts +0 -124
  928. package/src/constants/perpMarkets.ts +0 -1042
  929. package/src/constants/spotMarkets.ts +0 -874
  930. package/src/constants/txConstants.ts +0 -1
  931. package/src/constituentMap/constituentMap.ts +0 -305
  932. package/src/constituentMap/pollingConstituentAccountSubscriber.ts +0 -99
  933. package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +0 -121
  934. package/src/core/VelocityCore.ts +0 -328
  935. package/src/core/index.ts +0 -12
  936. package/src/core/instructions/deposit.ts +0 -42
  937. package/src/core/instructions/fill.ts +0 -34
  938. package/src/core/instructions/funding.ts +0 -21
  939. package/src/core/instructions/liquidation.ts +0 -37
  940. package/src/core/instructions/orders.ts +0 -56
  941. package/src/core/instructions/perpOrders.ts +0 -206
  942. package/src/core/instructions/settlement.ts +0 -26
  943. package/src/core/instructions/trigger.ts +0 -26
  944. package/src/core/instructions/withdraw.ts +0 -44
  945. package/src/core/remainingAccounts.ts +0 -276
  946. package/src/core/signedMsg.ts +0 -71
  947. package/src/decode/customCoder.ts +0 -105
  948. package/src/decode/user.ts +0 -379
  949. package/src/dlob/DLOB.ts +0 -2222
  950. package/src/dlob/DLOBNode.ts +0 -213
  951. package/src/dlob/DLOBSubscriber.ts +0 -232
  952. package/src/dlob/NodeList.ts +0 -175
  953. package/src/dlob/orderBookLevels.ts +0 -601
  954. package/src/dlob/types.ts +0 -22
  955. package/src/events/eventList.ts +0 -100
  956. package/src/events/eventSubscriber.ts +0 -440
  957. package/src/events/eventsServerLogProvider.ts +0 -161
  958. package/src/events/fetchLogs.ts +0 -169
  959. package/src/events/parse.ts +0 -248
  960. package/src/events/pollingLogProvider.ts +0 -89
  961. package/src/events/sort.ts +0 -39
  962. package/src/events/txEventCache.ts +0 -80
  963. package/src/events/types.ts +0 -217
  964. package/src/events/webSocketLogProvider.ts +0 -123
  965. package/src/factory/bigNum.ts +0 -709
  966. package/src/factory/oracleClient.ts +0 -73
  967. package/src/idl/pyth.json +0 -142
  968. package/src/idl/pyth.ts +0 -97
  969. package/src/idl/pyth_solana_receiver.json +0 -628
  970. package/src/idl/token_faucet.json +0 -229
  971. package/src/idl/token_faucet.ts +0 -197
  972. package/src/idl/velocity.json +0 -23974
  973. package/src/idl/velocity.ts +0 -23980
  974. package/src/index.ts +0 -150
  975. package/src/indicative-quotes/indicativeQuotesSender.ts +0 -233
  976. package/src/isomorphic/README.md +0 -19
  977. package/src/isomorphic/anchor.browser.ts +0 -44
  978. package/src/isomorphic/anchor.node.ts +0 -1
  979. package/src/isomorphic/anchor.ts +0 -1
  980. package/src/isomorphic/anchor29.browser.ts +0 -24
  981. package/src/isomorphic/anchor29.node.ts +0 -1
  982. package/src/isomorphic/anchor29.ts +0 -1
  983. package/src/isomorphic/grpc.browser.ts +0 -4
  984. package/src/isomorphic/grpc.node.ts +0 -130
  985. package/src/isomorphic/grpc.ts +0 -1
  986. package/src/jupiter/jupiterClient.ts +0 -502
  987. package/src/keypair.ts +0 -24
  988. package/src/margin/README.md +0 -138
  989. package/src/marginCalculation.ts +0 -256
  990. package/src/marinade/idl/idl.json +0 -1962
  991. package/src/marinade/index.ts +0 -73
  992. package/src/marinade/types.ts +0 -3925
  993. package/src/math/amm.ts +0 -1423
  994. package/src/math/auction.ts +0 -371
  995. package/src/math/bankruptcy.ts +0 -35
  996. package/src/math/builder.ts +0 -64
  997. package/src/math/conversion.ts +0 -24
  998. package/src/math/exchangeStatus.ts +0 -146
  999. package/src/math/funding.ts +0 -458
  1000. package/src/math/insurance.ts +0 -109
  1001. package/src/math/liquidation.ts +0 -223
  1002. package/src/math/margin.ts +0 -261
  1003. package/src/math/market.ts +0 -356
  1004. package/src/math/oracles.ts +0 -353
  1005. package/src/math/orders.ts +0 -378
  1006. package/src/math/position.ts +0 -334
  1007. package/src/math/repeg.ts +0 -185
  1008. package/src/math/spotBalance.ts +0 -756
  1009. package/src/math/spotMarket.ts +0 -82
  1010. package/src/math/spotPosition.ts +0 -191
  1011. package/src/math/state.ts +0 -40
  1012. package/src/math/superStake.ts +0 -479
  1013. package/src/math/tiers.ts +0 -44
  1014. package/src/math/trade.ts +0 -809
  1015. package/src/math/utils.ts +0 -121
  1016. package/src/memcmp.ts +0 -177
  1017. package/src/oracles/oracleClientCache.ts +0 -25
  1018. package/src/oracles/oracleId.ts +0 -66
  1019. package/src/oracles/prelaunchOracleClient.ts +0 -43
  1020. package/src/oracles/pythClient.ts +0 -94
  1021. package/src/oracles/pythLazerClient.ts +0 -107
  1022. package/src/oracles/quoteAssetOracleClient.ts +0 -25
  1023. package/src/oracles/strictOraclePrice.ts +0 -19
  1024. package/src/oracles/types.ts +0 -37
  1025. package/src/oracles/utils.ts +0 -25
  1026. package/src/orderParams.ts +0 -79
  1027. package/src/orderSubscriber/OrderSubscriber.ts +0 -322
  1028. package/src/orderSubscriber/PollingSubscription.ts +0 -39
  1029. package/src/orderSubscriber/WebsocketSubscription.ts +0 -119
  1030. package/src/orderSubscriber/grpcSubscription.ts +0 -139
  1031. package/src/orderSubscriber/index.ts +0 -7
  1032. package/src/orderSubscriber/types.ts +0 -55
  1033. package/src/priorityFee/averageOverSlotsStrategy.ts +0 -16
  1034. package/src/priorityFee/averageStrategy.ts +0 -12
  1035. package/src/priorityFee/ewmaStrategy.ts +0 -41
  1036. package/src/priorityFee/heliusPriorityFeeMethod.ts +0 -57
  1037. package/src/priorityFee/index.ts +0 -16
  1038. package/src/priorityFee/maxOverSlotsStrategy.ts +0 -17
  1039. package/src/priorityFee/maxStrategy.ts +0 -7
  1040. package/src/priorityFee/priorityFeeSubscriber.ts +0 -289
  1041. package/src/priorityFee/priorityFeeSubscriberMap.ts +0 -115
  1042. package/src/priorityFee/solanaPriorityFeeMethod.ts +0 -34
  1043. package/src/priorityFee/types.ts +0 -64
  1044. package/src/priorityFee/velocityPriorityFeeMethod.ts +0 -42
  1045. package/src/pyth/constants.ts +0 -9
  1046. package/src/pyth/index.ts +0 -15
  1047. package/src/pyth/pythLazerSubscriber.ts +0 -365
  1048. package/src/pyth/types.ts +0 -4451
  1049. package/src/pyth/utils.ts +0 -13
  1050. package/src/slot/SlotSubscriber.ts +0 -108
  1051. package/src/slot/SlothashSubscriber.ts +0 -137
  1052. package/src/swap/UnifiedSwapClient.ts +0 -315
  1053. package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +0 -81
  1054. package/src/swift/index.ts +0 -10
  1055. package/src/swift/signedMsgUserAccountSubscriber.ts +0 -251
  1056. package/src/swift/swiftOrderSubscriber.ts +0 -351
  1057. package/src/testClient.ts +0 -42
  1058. package/src/titan/titanClient.ts +0 -438
  1059. package/src/token/index.ts +0 -13
  1060. package/src/tokenFaucet.ts +0 -296
  1061. package/src/tx/baseTxSender.ts +0 -471
  1062. package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +0 -19
  1063. package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +0 -90
  1064. package/src/tx/blockhashFetcher/types.ts +0 -5
  1065. package/src/tx/fastSingleTxSender.ts +0 -146
  1066. package/src/tx/forwardOnlyTxSender.ts +0 -145
  1067. package/src/tx/priorityFeeCalculator.ts +0 -117
  1068. package/src/tx/reportTransactionError.ts +0 -164
  1069. package/src/tx/retryTxSender.ts +0 -137
  1070. package/src/tx/txHandler.ts +0 -898
  1071. package/src/tx/txParamProcessor.ts +0 -178
  1072. package/src/tx/types.ts +0 -71
  1073. package/src/tx/utils.ts +0 -107
  1074. package/src/tx/whileValidTxSender.ts +0 -295
  1075. package/src/types.ts +0 -1822
  1076. package/src/user.ts +0 -4557
  1077. package/src/userConfig.ts +0 -38
  1078. package/src/userMap/PollingSubscription.ts +0 -47
  1079. package/src/userMap/WebsocketSubscription.ts +0 -84
  1080. package/src/userMap/grpcSubscription.ts +0 -85
  1081. package/src/userMap/referrerMap.ts +0 -271
  1082. package/src/userMap/revenueShareEscrowMap.ts +0 -315
  1083. package/src/userMap/userMap.ts +0 -706
  1084. package/src/userMap/userMapConfig.ts +0 -69
  1085. package/src/userMap/userStatsMap.ts +0 -371
  1086. package/src/userName.ts +0 -21
  1087. package/src/userStats.ts +0 -132
  1088. package/src/userStatsConfig.ts +0 -35
  1089. package/src/util/TransactionConfirmationManager.ts +0 -300
  1090. package/src/util/chainClock.ts +0 -41
  1091. package/src/util/computeUnits.ts +0 -69
  1092. package/src/util/digest.ts +0 -16
  1093. package/src/util/ed25519Utils.ts +0 -85
  1094. package/src/util/promiseTimeout.ts +0 -14
  1095. package/src/velocityClient.ts +0 -11612
  1096. package/src/velocityClientConfig.ts +0 -119
  1097. package/src/wallet.ts +0 -54
  1098. package/tests/VelocityCore/decode.test.ts +0 -16
  1099. package/tests/VelocityCore/fill_trigger.test.ts +0 -73
  1100. package/tests/VelocityCore/instructions.test.ts +0 -46
  1101. package/tests/VelocityCore/pdas.test.ts +0 -30
  1102. package/tests/VelocityCore/perp_orders.test.ts +0 -205
  1103. package/tests/VelocityCore/remainingAccounts.test.ts +0 -72
  1104. package/tests/VelocityCore/settlement_liquidation.test.ts +0 -69
  1105. package/tests/accounts/customizedCadenceBulkAccountLoader.test.ts +0 -211
  1106. package/tests/amm/test.ts +0 -2300
  1107. package/tests/auctions/test.ts +0 -81
  1108. package/tests/bn/test.ts +0 -355
  1109. package/tests/ci/verifyConstants.ts +0 -393
  1110. package/tests/decode/test.ts +0 -262
  1111. package/tests/decode/userAccountBufferStrings.ts +0 -102
  1112. package/tests/dlob/helpers.ts +0 -748
  1113. package/tests/dlob/test.ts +0 -6969
  1114. package/tests/events/parseLogsForCuUsage.ts +0 -139
  1115. package/tests/insurance/test.ts +0 -40
  1116. package/tests/spot/test.ts +0 -226
  1117. package/tests/tx/TransactionConfirmationManager.test.ts +0 -312
  1118. package/tests/tx/cachedBlockhashFetcher.test.ts +0 -96
  1119. package/tests/tx/priorityFeeCalculator.ts +0 -77
  1120. package/tests/tx/priorityFeeStrategy.ts +0 -95
  1121. package/tests/user/getMarginCalculation.ts +0 -361
  1122. package/tests/user/helpers.ts +0 -184
  1123. package/tests/user/liquidations.ts +0 -129
  1124. package/tests/user/marginCalculations.test.ts +0 -321
  1125. package/tests/user/test.ts +0 -829
  1126. package/tsconfig.browser.json +0 -18
  1127. package/tsconfig.json +0 -36
@@ -9,14 +9,14 @@
9
9
  * - Health factor and liquidation threshold checks.
10
10
  * - Subscribes to and caches the latest `User` account state from chain.
11
11
  *
12
- * To send instructions (deposit, place order, etc.) use {@link VelocityClient}.
13
- * For referral/volume stats see {@link UserStats} (userStats.ts).
12
+ * To send instructions (deposit, place order, etc.) use `VelocityClient`.
13
+ * For referral/volume stats see `UserStats` (userStats.ts).
14
14
  */
15
15
  import { PublicKey } from '@solana/web3.js';
16
16
  import { EventEmitter } from 'events';
17
17
  import StrictEventEmitter from 'strict-event-emitter-types';
18
18
  import { VelocityClient } from './velocityClient';
19
- import { HealthComponent, HealthComponents, MarginCategory, Order, PerpMarketAccount, PerpPosition, SpotPosition, UserAccount, UserStatus, UserStatsAccount, AccountLiquidatableStatus } from './types';
19
+ import { HealthComponent, HealthComponents, MarginCategory, Order, OrderParams, PerpMarketAccount, PerpPosition, SpotPosition, UserAccount, UserStatus, UserStatsAccount, AccountLiquidatableStatus } from './types';
20
20
  import { DataAndSlot, UserAccountEvents, UserAccountSubscriber } from './accounts/types';
21
21
  import { BN } from './isomorphic/anchor';
22
22
  import { MarketType, PositionDirection, SpotMarketAccount } from './types';
@@ -31,24 +31,29 @@ export declare class User {
31
31
  accountSubscriber: UserAccountSubscriber;
32
32
  _isSubscribed: boolean;
33
33
  eventEmitter: StrictEventEmitter<EventEmitter, UserAccountEvents>;
34
+ /** True only when both `subscribe()` has completed and the underlying `accountSubscriber` itself reports subscribed. */
34
35
  get isSubscribed(): boolean;
35
36
  set isSubscribed(val: boolean);
37
+ /** Constructs a `User` for the account at `config.userAccountPublicKey`, wiring up the account subscriber selected by `config.accountSubscription` (`'websocket'`/`'polling'`/`'grpc'`/`'custom'`). Does not fetch or subscribe — call `subscribe()` next. */
36
38
  constructor(config: UserConfig);
37
39
  /**
38
- * Subscribe to User state accounts
39
- * @returns SusbcriptionSuccess result
40
+ * Subscribes to this `User` account (websocket/polling/gRPC/custom per
41
+ * `UserConfig.accountSubscription`) and awaits the initial account fetch.
42
+ * Must resolve before any `get*`/margin/PnL accessor is called — those
43
+ * throw `NotSubscribedError` until this has completed.
44
+ * @param userAccount Optional pre-fetched account to seed the subscriber with, skipping the initial RPC fetch.
45
+ * @returns True once the underlying subscriber reports subscribed.
40
46
  */
41
47
  subscribe(userAccount?: UserAccount): Promise<boolean>;
42
- /**
43
- * Forces the accountSubscriber to fetch account updates from rpc
44
- */
48
+ /** Forces the account subscriber to re-fetch the `User` account from RPC (bypassing any push/poll cadence). */
45
49
  fetchAccounts(): Promise<void>;
50
+ /** Removes all event listeners and tears down the account subscription. */
46
51
  unsubscribe(): Promise<void>;
47
52
  /**
48
53
  * Returns the cached user account.
49
54
  *
50
55
  * - **Throws** `NotSubscribedError` if the subscriber has not been subscribed
51
- * yet — reading the account before {@link subscribe} resolves is a
56
+ * yet — reading the account before `subscribe()` resolves is a
52
57
  * programming error, not a missing-account condition.
53
58
  * - Returns `undefined` when subscribed but no account was found on chain.
54
59
  * Because `subscribe()` awaits the initial fetch, an `undefined` here means
@@ -57,24 +62,46 @@ export declare class User {
57
62
  */
58
63
  getUserAccount(): UserAccount | undefined;
59
64
  /**
60
- * Like {@link getUserAccount} but throws instead of returning `undefined`
65
+ * Like `getUserAccount` but throws instead of returning `undefined`
61
66
  * when the account was not found. Use at call sites that structurally
62
67
  * require the account to exist. (Still propagates `NotSubscribedError` when
63
68
  * called before subscribing.)
64
69
  *
65
- * Delegates to {@link getUserAccount} (rather than the subscriber directly)
70
+ * Delegates to `getUserAccount` (rather than the subscriber directly)
66
71
  * so callers that override `getUserAccount` see the override here too.
72
+ * @returns The current `UserAccount`.
67
73
  */
68
74
  getUserAccountOrThrow(): UserAccount;
75
+ /**
76
+ * Bypasses the cached subscriber state and force-fetches the `User` account
77
+ * directly from the RPC (via `fetchAccounts`), then returns the freshly
78
+ * cached value. Useful right after sending a transaction, when the
79
+ * websocket/polling subscriber may not yet have observed the update.
80
+ * @returns The freshly fetched `UserAccount`, or `undefined` if the account does not exist on chain.
81
+ */
69
82
  forceGetUserAccount(): Promise<UserAccount | undefined>;
83
+ /**
84
+ * Returns the cached user account together with the slot at which it was
85
+ * last observed. Same `undefined`/`NotSubscribedError` contract as `getUserAccount`.
86
+ */
70
87
  getUserAccountAndSlot(): DataAndSlot<UserAccount> | undefined;
71
88
  /**
72
- * Like {@link getUserAccountAndSlot} but throws instead of returning
89
+ * Like `getUserAccountAndSlot` but throws instead of returning
73
90
  * `undefined` when the account was not found. Use at call sites that
74
91
  * structurally require the account to exist. (Still propagates
75
92
  * `NotSubscribedError` when called before subscribing.)
76
93
  */
77
94
  getUserAccountAndSlotOrThrow(): DataAndSlot<UserAccount>;
95
+ /**
96
+ * Finds the perp position for `marketIndex` on an explicit `userAccount`
97
+ * snapshot rather than the cached account. Only matches "active" positions
98
+ * (see `getActivePerpPositionsForUserAccount`) — a market the user has never
99
+ * touched (or has fully closed and settled) returns `undefined` even though
100
+ * the on-chain array always has a fixed-size slot for every market.
101
+ * @param userAccount Account snapshot to search (does not have to be the subscribed account).
102
+ * @param marketIndex Perp market index to look up.
103
+ * @returns The matching `PerpPosition`, or `undefined` if the user has no active position in that market.
104
+ */
78
105
  getPerpPositionForUserAccount(userAccount: UserAccount, marketIndex: number): PerpPosition | undefined;
79
106
  /**
80
107
  * Gets the user's current position for a given perp market. If the user has no position returns undefined
@@ -82,9 +109,31 @@ export declare class User {
82
109
  * @returns userPerpPosition
83
110
  */
84
111
  getPerpPosition(marketIndex: number): PerpPosition | undefined;
112
+ /**
113
+ * Like `getPerpPosition`, but returns a zeroed-out placeholder position
114
+ * (see `getEmptyPosition`) instead of `undefined` when the user has no
115
+ * active position in `marketIndex`. Convenient for math helpers that need a
116
+ * `PerpPosition` shape unconditionally (e.g. buying-power/leverage calcs).
117
+ */
85
118
  getPerpPositionOrEmpty(marketIndex: number): PerpPosition;
119
+ /**
120
+ * Like `getPerpPosition`, but throws instead of returning `undefined` when
121
+ * the user has no active position in `marketIndex`.
122
+ */
86
123
  getPerpPositionOrThrow(marketIndex: number): PerpPosition;
124
+ /**
125
+ * Like `getPerpPosition`, but also returns the slot at which the underlying
126
+ * `UserAccount` was observed.
127
+ */
87
128
  getPerpPositionAndSlot(marketIndex: number): DataAndSlot<PerpPosition | undefined>;
129
+ /**
130
+ * Finds the spot position for `marketIndex` on an explicit `userAccount`
131
+ * snapshot. Unlike `getPerpPositionForUserAccount`, this does not filter to
132
+ * "active" positions first — it returns whatever fixed-size slot entry
133
+ * exists for that market index, even if the position is empty/available.
134
+ * @param userAccount Account snapshot to search (does not have to be the subscribed account).
135
+ * @param marketIndex Spot market index to look up.
136
+ */
88
137
  getSpotPositionForUserAccount(userAccount: UserAccount, marketIndex: number): SpotPosition | undefined;
89
138
  /**
90
139
  * Gets the user's current position for a given spot market. If the user has no position returns undefined
@@ -92,58 +141,125 @@ export declare class User {
92
141
  * @returns userSpotPosition
93
142
  */
94
143
  getSpotPosition(marketIndex: number): SpotPosition | undefined;
144
+ /**
145
+ * Like `getSpotPosition`, but also returns the slot at which the underlying
146
+ * `UserAccount` was observed.
147
+ */
95
148
  getSpotPositionAndSlot(marketIndex: number): DataAndSlot<SpotPosition | undefined>;
149
+ /** Returns a zeroed-out (no deposit/borrow) placeholder `SpotPosition` for `marketIndex`. */
96
150
  getEmptySpotPosition(marketIndex: number): SpotPosition;
97
151
  /**
98
152
  * Returns the token amount for a given market. The spot market precision is based on the token mint decimals.
99
153
  * Positive if it is a deposit, negative if it is a borrow.
100
154
  *
101
155
  * @param marketIndex
156
+ * @returns Signed token amount, in the spot market's own token decimals (not QUOTE_PRECISION). `ZERO` if the user has no position in the market.
102
157
  */
103
158
  getTokenAmount(marketIndex: number): BN;
159
+ /** Returns a zeroed-out placeholder `PerpPosition` for `marketIndex` (no size, no orders, cross margin). */
104
160
  getEmptyPosition(marketIndex: number): PerpPosition;
161
+ /** Returns true if `position` has no size and no open orders (a market slot that can be treated as unused). */
105
162
  isPositionEmpty(position: PerpPosition): boolean;
163
+ /**
164
+ * Returns the isolated-margin quote deposit backing a given perp position,
165
+ * i.e. `PerpPosition.isolatedPositionScaledBalance` converted to a token
166
+ * amount. This is the collateral segregated to that single isolated
167
+ * position, separate from the user's cross-margin free collateral.
168
+ * @param perpMarketIndex
169
+ * @returns Quote token amount (the quote spot market's own decimals). `ZERO` if the user has no position or no isolated deposit in the market.
170
+ */
106
171
  getIsolatePerpPositionTokenAmount(perpMarketIndex: number): BN;
107
172
  /**
108
173
  * Returns the total USD value of deposits across all isolated perp positions.
174
+ * @returns Precision QUOTE_PRECISION (1e6).
109
175
  */
110
176
  getTotalIsolatedPositionDeposits(): BN;
177
+ /** Returns a shallow copy of `position`. Mutating the clone does not affect the cached account. */
111
178
  getClonedPosition(position: PerpPosition): PerpPosition;
179
+ /** Finds an order by its program-assigned `orderId` on an explicit `userAccount` snapshot. */
112
180
  getOrderForUserAccount(userAccount: UserAccount, orderId: number): Order | undefined;
113
181
  /**
182
+ * Finds an order in the cached `UserAccount` by its program-assigned `orderId`.
114
183
  * @param orderId
115
- * @returns Order
184
+ * @returns The matching `Order`, or `undefined` if no order with that id exists.
116
185
  */
117
186
  getOrder(orderId: number): Order | undefined;
187
+ /** Like `getOrder`, but also returns the slot at which the underlying `UserAccount` was observed. */
118
188
  getOrderAndSlot(orderId: number): DataAndSlot<Order | undefined>;
189
+ /**
190
+ * Finds an order by its caller-assigned `userOrderId` (a client-chosen tag,
191
+ * distinct from the program-assigned `orderId`) on an explicit `userAccount`
192
+ * snapshot.
193
+ */
119
194
  getOrderByUserIdForUserAccount(userAccount: UserAccount, userOrderId: number): Order | undefined;
120
195
  /**
196
+ * Finds an order in the cached `UserAccount` by its caller-assigned
197
+ * `userOrderId` (a client-chosen tag, distinct from the program-assigned `orderId`).
121
198
  * @param userOrderId
122
- * @returns Order
199
+ * @returns The matching `Order`, or `undefined` if no order with that tag exists.
123
200
  */
124
201
  getOrderByUserOrderId(userOrderId: number): Order | undefined;
202
+ /** Like `getOrderByUserOrderId`, but also returns the slot at which the underlying `UserAccount` was observed. */
125
203
  getOrderByUserOrderIdAndSlot(userOrderId: number): DataAndSlot<Order | undefined>;
204
+ /**
205
+ * Filters an explicit `userAccount` snapshot's orders down to those with
206
+ * `OrderStatus.Open`.
207
+ * @returns `undefined` if `userAccount` is `undefined` (i.e. no account loaded), otherwise the array of open orders (possibly empty).
208
+ */
126
209
  getOpenOrdersForUserAccount(userAccount?: UserAccount): Order[] | undefined;
210
+ /** Returns all of the user's orders with `OrderStatus.Open`. Empty array (not `undefined`) if there are none or no account is loaded. */
127
211
  getOpenOrders(): Order[];
212
+ /** Like `getOpenOrders`, but also returns the slot at which the underlying `UserAccount` was observed. */
128
213
  getOpenOrdersAndSlot(): DataAndSlot<Order[]>;
214
+ /** Returns this `User`'s account address (does not require the account to be subscribed or to exist on chain). */
129
215
  getUserAccountPublicKey(): PublicKey;
216
+ /** Checks directly via RPC (bypassing the subscriber cache) whether the `User` account exists on chain. */
130
217
  exists(): Promise<boolean>;
131
218
  /**
132
- * calculates the total open bids/asks in a perp market (including lps)
133
- * @returns : open bids
134
- * @returns : open asks
219
+ * Returns the position's total resting open-order bid/ask size in a perp market.
220
+ * @param marketIndex
221
+ * @returns Tuple of `[openBids, openAsks]`, both `BASE_PRECISION` (1e9). Throws (via `getPerpPositionOrThrow`) if the user has no active position in `marketIndex`.
135
222
  */
136
223
  getPerpBidAsks(marketIndex: number): [BN, BN];
137
224
  /**
138
225
  * calculates Buying Power = free collateral / initial margin ratio
139
- * @returns : Precision QUOTE_PRECISION
226
+ *
227
+ * For `positionType: 'isolated'`, the buying power is capped by the
228
+ * lesser of (a) the user's cross free collateral and (b) the free quote
229
+ * asset value in the perp's quote spot market — mirroring that an isolated
230
+ * position can only draw down as much quote collateral as is actually
231
+ * available to isolate into it.
232
+ * @param marketIndex Perp market to size buying power for.
233
+ * @param collateralBuffer Amount (QUOTE_PRECISION) subtracted from free collateral before sizing, e.g. to reserve for fees. Defaults to zero.
234
+ * @param maxMarginRatio Optional override for the max margin ratio component (see `resolveMaxMarginRatio`); defaults to the position's/user's configured ratio.
235
+ * @param positionType Whether to size for a cross or isolated-margin position. Defaults to `'cross'`.
236
+ * @returns Precision QUOTE_PRECISION (1e6).
140
237
  */
141
238
  getPerpBuyingPower(marketIndex: number, collateralBuffer?: BN, maxMarginRatio?: number | undefined, positionType?: 'isolated' | 'cross'): BN;
142
239
  private resolveMaxMarginRatio;
240
+ /**
241
+ * Converts a free-collateral amount directly into buying power for a perp
242
+ * market, given the (hypothetical) resulting base position size — used
243
+ * internally so the margin ratio (which can vary with position size via the
244
+ * IMF factor) reflects the post-trade size rather than the current size.
245
+ * @param marketIndex
246
+ * @param freeCollateral QUOTE_PRECISION (1e6).
247
+ * @param baseAssetAmount Base size, BASE_PRECISION (1e9), used only to select the applicable margin ratio.
248
+ * @param perpMarketMaxMarginRatio Optional max-margin-ratio override, see `resolveMaxMarginRatio`.
249
+ * @returns Precision QUOTE_PRECISION (1e6).
250
+ */
143
251
  getPerpBuyingPowerFromFreeCollateralAndBaseAssetAmount(marketIndex: number, freeCollateral: BN, baseAssetAmount: BN, perpMarketMaxMarginRatio?: number | undefined): BN;
144
252
  /**
145
253
  * calculates Free Collateral = Total collateral - margin requirement
146
- * @returns : Precision QUOTE_PRECISION
254
+ *
255
+ * When `perpMarketIndex` is provided, returns the free collateral scoped to
256
+ * that market's isolated margin bucket (the isolated quote deposit plus its
257
+ * unrealized PnL, minus its own margin requirement) rather than the user's
258
+ * cross-margin free collateral. If the user has no isolated position open in
259
+ * that market, returns `ZERO` rather than throwing.
260
+ * @param marginCategory `'Initial'` or `'Maintenance'`. Defaults to `'Initial'`; `'Initial'` also enables strict (TWAP-bounded) oracle pricing.
261
+ * @param perpMarketIndex Optional isolated perp market to scope the calculation to; omit for cross margin.
262
+ * @returns Precision QUOTE_PRECISION (1e6). Can be negative (deficit).
147
263
  */
148
264
  getFreeCollateral(marginCategory?: MarginCategory, perpMarketIndex?: number): BN;
149
265
  /**
@@ -153,134 +269,345 @@ export declare class User {
153
269
  /**
154
270
  * Calculates the margin requirement based on the specified parameters.
155
271
  *
272
+ * When `perpMarketIndex` is passed, returns the isolated margin requirement
273
+ * for that market's isolated position only (`ZERO` if none exists) rather
274
+ * than the cross-margin requirement. `liquidationBuffer`, when non-zero,
275
+ * selects the buffered variant (`marginRequirementPlusBuffer` /
276
+ * `MarginContext.liquidation`), which pads the requirement to build in the
277
+ * state account's `liquidationMarginBufferRatio` — the same buffer keepers
278
+ * apply so a position doesn't get flagged for liquidation and immediately
279
+ * clear again.
280
+ *
156
281
  * @param marginCategory - The category of margin to calculate ('Initial' or 'Maintenance').
157
- * @param liquidationBuffer - Optional buffer amount to consider during liquidation scenarios.
158
- * @param strict - Optional flag to enforce strict margin calculations.
159
- * @param includeOpenOrders - Optional flag to include open orders in the margin calculation.
160
- * @param perpMarketIndex - Optional index of the perpetual market. Required if marginType is 'Isolated'.
282
+ * @param liquidationBuffer - Optional buffer amount (MARGIN_PRECISION, 1e4, added to the margin ratio) to consider during liquidation scenarios.
283
+ * @param strict - Optional flag to enforce strict (TWAP-bounded) oracle pricing.
284
+ * @param includeOpenOrders - Optional flag to include open orders' worst-case margin impact.
285
+ * @param perpMarketIndex - Optional index of the perpetual market. Scopes the result to that market's isolated position.
161
286
  *
162
- * @returns The calculated margin requirement as a BN (BigNumber).
287
+ * @returns The calculated margin requirement, QUOTE_PRECISION (1e6).
163
288
  */
164
289
  getMarginRequirement(marginCategory: MarginCategory, liquidationBuffer?: BN, strict?: boolean, includeOpenOrders?: boolean, perpMarketIndex?: number): BN;
165
290
  /**
166
- * @returns The initial margin requirement in USDC. : QUOTE_PRECISION
291
+ * Initial margin requirement the collateral needed to open/maintain a
292
+ * position at initial (as opposed to maintenance) margin ratios, using
293
+ * strict (TWAP-bounded) oracle pricing. This is what gates new orders and
294
+ * increases in leverage.
295
+ * @param perpMarketIndex Optional isolated perp market to scope to; omit for the cross-margin requirement.
296
+ * @returns The initial margin requirement in USDC. : QUOTE_PRECISION (1e6)
167
297
  */
168
298
  getInitialMarginRequirement(perpMarketIndex?: number): BN;
169
299
  /**
170
- * @returns The maintenance margin requirement in USDC. : QUOTE_PRECISION
300
+ * Maintenance margin requirement the minimum collateral below which the
301
+ * position becomes eligible for liquidation. Uses non-strict oracle pricing
302
+ * and includes open orders' worst-case impact by default.
303
+ * @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4) added to the margin ratio, mirroring the state account's `liquidationMarginBufferRatio`.
304
+ * @param perpMarketIndex Optional isolated perp market to scope to; omit for the cross-margin requirement.
305
+ * @returns The maintenance margin requirement in USDC. : QUOTE_PRECISION (1e6)
171
306
  */
172
307
  getMaintenanceMarginRequirement(liquidationBuffer?: BN, perpMarketIndex?: number): BN;
308
+ /**
309
+ * Filters an explicit `userAccount` snapshot's fixed-size perp position
310
+ * array down to slots that are actually "active": nonzero base or quote
311
+ * amount, an outstanding open order count, or a nonzero isolated-margin
312
+ * quote deposit (a position can be flat but still isolated-funded).
313
+ */
173
314
  getActivePerpPositionsForUserAccount(userAccount: UserAccount): PerpPosition[];
315
+ /** Returns the cached account's active perp positions. See `getActivePerpPositionsForUserAccount` for the activity criteria. */
174
316
  getActivePerpPositions(): PerpPosition[];
317
+ /** Like `getActivePerpPositions`, but also returns the slot at which the underlying `UserAccount` was observed. */
175
318
  getActivePerpPositionsAndSlot(): DataAndSlot<PerpPosition[]>;
319
+ /** Filters an explicit `userAccount` snapshot's spot positions to those that are not `isSpotPositionAvailable` (i.e. have a nonzero balance, orders, or cumulative deposits). */
176
320
  getActiveSpotPositionsForUserAccount(userAccount: UserAccount): SpotPosition[];
321
+ /** Returns the cached account's active spot positions. See `getActiveSpotPositionsForUserAccount` for the activity criteria. */
177
322
  getActiveSpotPositions(): SpotPosition[];
323
+ /** Like `getActiveSpotPositions`, but also returns the slot at which the underlying `UserAccount` was observed. */
178
324
  getActiveSpotPositionsAndSlot(): DataAndSlot<SpotPosition[]>;
179
325
  /**
180
- * calculates unrealized position price pnl
181
- * @returns : Precision QUOTE_PRECISION
326
+ * Calculates unrealized position price PnL, summed across all active perp
327
+ * positions (or a single one if `marketIndex` is given).
328
+ *
329
+ * When `withWeightMarginCategory` is supplied, the PnL is asset-weighted
330
+ * for margin purposes: profitable positions are scaled down by
331
+ * `calculateUnrealizedAssetWeight` (an unrealized gain is a less-trusted
332
+ * asset than settled collateral), and — for `'Initial'` margin specifically
333
+ * — the *per-position* weighted gain is additionally capped at
334
+ * `MAX_POSITIVE_UPNL_FOR_INITIAL_MARGIN` (**$100**, QUOTE_PRECISION), a
335
+ * safety guard against a single dangerously-configured or manipulated
336
+ * market inflating buying power. Losses are never capped, and a
337
+ * `liquidationBuffer` (if provided) further inflates negative PnL to
338
+ * mirror the on-chain liquidation-buffer treatment.
339
+ * @param withFunding If true, includes unsettled funding in each position's PnL.
340
+ * @param marketIndex Optional single perp market to scope to; omit to sum across all active positions.
341
+ * @param withWeightMarginCategory Optional `'Initial'` or `'Maintenance'` — applies the asset-weighting (and, for `'Initial'`, the $100-per-position cap) described above. Omit for raw, unweighted PnL.
342
+ * @param strict Use the worse of live oracle price vs 5-minute TWAP per position (gains use the lower price, losses use the higher price). Defaults to false.
343
+ * @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4) that further penalizes negative PnL; only applied when `withWeightMarginCategory` is set.
344
+ * @returns : Precision QUOTE_PRECISION (1e6)
182
345
  */
183
346
  getUnrealizedPNL(withFunding?: boolean, marketIndex?: number, withWeightMarginCategory?: MarginCategory, strict?: boolean, liquidationBuffer?: BN): BN;
184
347
  /**
185
- * calculates unrealized funding payment pnl
186
- * @returns : Precision QUOTE_PRECISION
348
+ * Calculates unrealized funding payment PnL — the funding accrued since
349
+ * each position's `lastCumulativeFundingRate` was last settled, not yet
350
+ * reflected in `quoteAssetAmount`.
351
+ * @param marketIndex Optional single perp market to scope to; omit to sum across all positions.
352
+ * @returns : Precision QUOTE_PRECISION (1e6)
187
353
  */
188
354
  getUnrealizedFundingPNL(marketIndex?: number): BN;
355
+ /**
356
+ * Computes the combined weighted asset value and weighted liability value
357
+ * across the user's spot positions (worst-case, including open-order
358
+ * exposure by default), plus the net quote balance. This is the core spot
359
+ * side of the margin system that `getTotalCollateral`/`getMarginRequirement`
360
+ * build on.
361
+ * @param marketIndex Optional single spot market to scope to; omit to sum across all spot markets.
362
+ * @param marginCategory `'Initial'` or `'Maintenance'` asset/liability weights; omit for unweighted (100%) values.
363
+ * @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4) added to the liability weight side.
364
+ * @param includeOpenOrders If false, ignores open bids/asks and only counts the current balance (faster, less conservative).
365
+ * @param strict Use the worse of live oracle price vs 5-minute TWAP. Defaults to false.
366
+ * @param now Unix timestamp (seconds) used for TWAP staleness when `strict` is set; defaults to current time.
367
+ * @returns `{ totalAssetValue, totalLiabilityValue }`, both QUOTE_PRECISION (1e6) and non-negative.
368
+ */
189
369
  getSpotMarketAssetAndLiabilityValue(marketIndex?: number, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean, now?: BN): {
190
370
  totalAssetValue: BN;
191
371
  totalLiabilityValue: BN;
192
372
  };
373
+ /** Convenience wrapper around `getSpotMarketAssetAndLiabilityValue` returning only `totalLiabilityValue`. See that method for parameter semantics. Returns QUOTE_PRECISION (1e6). */
193
374
  getSpotMarketLiabilityValue(marketIndex?: number, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean, now?: BN): BN;
375
+ /** Thin wrapper around the `math/spotBalance` `getSpotLiabilityValue` helper that supplies the user's `maxMarginRatio`. Returns QUOTE_PRECISION (1e6), negative. */
194
376
  getSpotLiabilityValue(tokenAmount: BN, strictOraclePrice: StrictOraclePrice, spotMarketAccount: SpotMarketAccount, marginCategory?: MarginCategory, liquidationBuffer?: BN): BN;
377
+ /** Convenience wrapper around `getSpotMarketAssetAndLiabilityValue` returning only `totalAssetValue`. See that method for parameter semantics. Returns QUOTE_PRECISION (1e6), non-negative. */
195
378
  getSpotMarketAssetValue(marketIndex?: number, marginCategory?: MarginCategory, includeOpenOrders?: boolean, strict?: boolean, now?: BN): BN;
379
+ /** Thin wrapper around the `math/spotBalance` `getSpotAssetValue` helper that supplies the user's `maxMarginRatio`. Returns QUOTE_PRECISION (1e6), non-negative. */
196
380
  getSpotAssetValue(tokenAmount: BN, strictOraclePrice: StrictOraclePrice, spotMarketAccount: SpotMarketAccount, marginCategory?: MarginCategory): BN;
381
+ /** Net spot value (`totalAssetValue - totalLiabilityValue`) for a single spot market. See `getSpotMarketAssetAndLiabilityValue` for parameter semantics. Returns QUOTE_PRECISION (1e6), can be negative. */
197
382
  getSpotPositionValue(marketIndex: number, marginCategory?: MarginCategory, includeOpenOrders?: boolean, strict?: boolean, now?: BN): BN;
383
+ /**
384
+ * Net spot value (`totalAssetValue - totalLiabilityValue`) across all spot
385
+ * markets combined.
386
+ * @param withWeightMarginCategory Optional `'Initial'`/`'Maintenance'` weighting; omit for unweighted values.
387
+ * @returns Precision QUOTE_PRECISION (1e6), can be negative.
388
+ */
198
389
  getNetSpotMarketValue(withWeightMarginCategory?: MarginCategory): BN;
199
390
  /**
200
391
  * calculates TotalCollateral: collateral + unrealized pnl
201
392
  * @returns : Precision QUOTE_PRECISION
202
393
  */
394
+ /**
395
+ * Calculates Total Collateral: net spot collateral value plus weighted
396
+ * unrealized perp PnL (see `getUnrealizedPNL`'s `$100`-per-position cap
397
+ * under `'Initial'` margin). This is the numerator side of the margin
398
+ * system; `getFreeCollateral`/`getMarginRequirement` are derived from it.
399
+ *
400
+ * When `perpMarketIndex` is provided, returns the isolated total collateral
401
+ * for that market's isolated position bucket instead of the cross-margin
402
+ * total — and **throws** if the user has no isolated margin calculation for
403
+ * that market (unlike `getFreeCollateral`, which swallows the same case and
404
+ * returns `ZERO`).
405
+ * @param marginCategory `'Initial'` or `'Maintenance'`. Defaults to `'Initial'`.
406
+ * @param strict Use TWAP-bounded oracle pricing. Defaults to false.
407
+ * @param includeOpenOrders Include open orders' worst-case impact. Defaults to true.
408
+ * @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4); selects the buffered collateral variant when non-zero.
409
+ * @param perpMarketIndex Optional isolated perp market to scope to.
410
+ * @returns Precision QUOTE_PRECISION (1e6).
411
+ */
203
412
  getTotalCollateral(marginCategory?: MarginCategory, strict?: boolean, includeOpenOrders?: boolean, liquidationBuffer?: BN, perpMarketIndex?: number): BN;
413
+ /**
414
+ * True when the account has an admin-set `equityFloor` and its cross-margin
415
+ * total collateral is below it. While below the floor, the program rejects
416
+ * risk-increasing order placement and fills, withdrawals, and transfers out
417
+ * of the account (`EquityBelowFloor`); reduce-only activity stays allowed.
418
+ * Mirrors `User::is_below_equity_floor` on-chain.
419
+ * @param strict Use TWAP-bounded oracle pricing, matching the withdraw path. Defaults to false.
420
+ */
421
+ isBelowEquityFloor(strict?: boolean): boolean;
422
+ /**
423
+ * Cross-margin total collateral in excess of the admin-set `equityFloor`,
424
+ * floored at zero (QUOTE_PRECISION). Unbounded (`null`) when no floor is set.
425
+ * @param strict Use TWAP-bounded oracle pricing. Defaults to false.
426
+ */
427
+ getEquityAboveFloor(strict?: boolean): BN | null;
428
+ /**
429
+ * Builds the liquidation-buffer map to pass into margin calculations while
430
+ * a liquidation is in progress: `'cross'` is set to the state account's
431
+ * `liquidationMarginBufferRatio` if cross margin is being liquidated, and
432
+ * each isolated perp position currently flagged `BeingLiquidated` or
433
+ * `Bankruptcy` gets the same buffer under its market index. Positions not
434
+ * currently being liquidated are omitted (no buffer applied).
435
+ * @returns Map from `'cross'` or a perp market index to the buffer amount (MARGIN_PRECISION, 1e4).
436
+ */
204
437
  getLiquidationBuffer(): Map<number | 'cross', BN>;
205
438
  /**
206
- * calculates User Health by comparing total collateral and maint. margin requirement
207
- * @returns : number (value from [0, 100])
439
+ * Calculates a user's health score by comparing total collateral against
440
+ * the maintenance margin requirement: `100 * (1 - maintenanceMarginReq / totalCollateral)`,
441
+ * clamped to `[0, 100]` and rounded to the nearest integer. `100` means no
442
+ * maintenance requirement (or a requirement of zero with non-negative
443
+ * collateral); `0` means at or past the maintenance threshold (liquidatable)
444
+ * or that collateral is non-positive.
445
+ *
446
+ * Short-circuits to `0` if the relevant scope is already flagged as being
447
+ * liquidated: cross margin via `isCrossMarginBeingLiquidated` (when
448
+ * `perpMarketIndex` is omitted), or the specific isolated position via
449
+ * `isIsolatedPositionBeingLiquidated` (when `perpMarketIndex` is given).
450
+ * @param perpMarketIndex Optional isolated perp market to scope health to; omit for the cross-margin account's health.
451
+ * @returns Health, an integer in `[0, 100]`.
208
452
  */
209
453
  getHealth(perpMarketIndex?: number): number;
454
+ /**
455
+ * Computes a single perp position's margin-weighted liability value: worst-case
456
+ * (or current, if `includeOpenOrders` is false) base amount, valued at the
457
+ * oracle price (or `expiryPrice` if the market is in settlement, which also
458
+ * zeroes the margin ratio), scaled by the applicable margin ratio for
459
+ * `marginCategory`. Underlies `getPerpMarketLiabilityValue`,
460
+ * `getTotalPerpPositionLiability`, and the leverage/liquidation-price math.
461
+ * @returns Precision QUOTE_PRECISION (1e6); unweighted (raw notional, no margin ratio applied) if `marginCategory` is omitted.
462
+ */
210
463
  calculateWeightedPerpPositionLiability(perpPosition: PerpPosition, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean): BN;
211
464
  /**
212
- * calculates position value of a single perp market in margin system
213
- * @returns : Precision QUOTE_PRECISION
465
+ * Margin-weighted liability value of a single perp position. Thin wrapper
466
+ * around `calculateWeightedPerpPositionLiability` for the position in
467
+ * `marketIndex`; see that method for the worst-case/margin-ratio semantics.
468
+ * @param marketIndex
469
+ * @param marginCategory `'Initial'`/`'Maintenance'` margin ratio to apply; omit for the raw unweighted notional.
470
+ * @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4) added to the margin ratio.
471
+ * @param includeOpenOrders If true (recommended for margin checks), uses the worst-case base amount including open bids/asks.
472
+ * @param strict Use TWAP-bounded quote pricing. Defaults to false.
473
+ * @returns Precision QUOTE_PRECISION (1e6). Throws (via `getPerpPositionOrThrow`) if the user has no active position in `marketIndex`.
214
474
  */
215
475
  getPerpMarketLiabilityValue(marketIndex: number, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean): BN;
216
476
  /**
217
- * calculates sum of position value across all positions in margin system
218
- * @returns : Precision QUOTE_PRECISION
477
+ * Sums `calculateWeightedPerpPositionLiability` across every active perp
478
+ * position the perp side of the margin requirement (see `getMarginRequirement`).
479
+ * @param marginCategory `'Initial'`/`'Maintenance'` margin ratio to apply; omit for the raw unweighted notional.
480
+ * @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4) added to the margin ratio.
481
+ * @param includeOpenOrders If true, uses each position's worst-case base amount including open bids/asks.
482
+ * @param strict Use TWAP-bounded quote pricing. Defaults to false.
483
+ * @returns Precision QUOTE_PRECISION (1e6).
219
484
  */
220
485
  getTotalPerpPositionLiability(marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean): BN;
221
486
  /**
222
- * calculates position value based on oracle
223
- * @returns : Precision QUOTE_PRECISION
487
+ * Values a perp position's base-asset notional at a caller-supplied oracle
488
+ * price rather than looking one up internally — useful for pricing against
489
+ * a simulated/custom price. Returns `ZERO` (via `getPerpPositionOrEmpty`) if
490
+ * the user has no position in `marketIndex`.
491
+ * @param marketIndex
492
+ * @param oraclePriceData Price to value the position at, PRICE_PRECISION (1e6). Caller-supplied so callers can pass a custom/simulated price.
493
+ * @param includeOpenOrders If true, uses the worst-case base amount (including open bids/asks) instead of the current position size. Defaults to false.
494
+ * @returns Precision QUOTE_PRECISION (1e6).
224
495
  */
225
496
  getPerpPositionValue(marketIndex: number, oraclePriceData: Pick<OraclePriceData, 'price'>, includeOpenOrders?: boolean): BN;
226
497
  /**
227
- * calculates position liabiltiy value in margin system
228
- * @returns : Precision QUOTE_PRECISION
498
+ * Unweighted (no margin ratio applied) perp liability notional at a
499
+ * caller-supplied oracle price. Returns `ZERO` (via `getPerpPositionOrEmpty`)
500
+ * if the user has no position in `marketIndex`.
501
+ * @param marketIndex
502
+ * @param oraclePriceData Price to value the position at, PRICE_PRECISION (1e6).
503
+ * @param includeOpenOrders If true, uses the worst-case (including open bids/asks) liability value; otherwise just the current position. Defaults to false.
504
+ * @returns Precision QUOTE_PRECISION (1e6).
229
505
  */
230
506
  getPerpLiabilityValue(marketIndex: number, oraclePriceData: OraclePriceData, includeOpenOrders?: boolean): BN;
507
+ /** Returns `PositionDirection.LONG`/`SHORT` from the sign of `baseAssetAmount`, or `undefined` if the position is flat. */
231
508
  getPositionSide(currentPosition: Pick<PerpPosition, 'baseAssetAmount'>): PositionDirection | undefined;
232
509
  /**
233
510
  * calculates average exit price (optionally for closing up to 100% of position)
234
- * @returns : Precision PRICE_PRECISION
511
+ * @param position Position to estimate the close for.
512
+ * @param amountToClose Optional base amount (BASE_PRECISION, 1e9) to simulate closing; if omitted, closes the full position. Passing `ZERO` returns the current reserve price with zero PnL.
513
+ * @param useAMMClose If true, values the close against the AMM's own reserves (`calculateBaseAssetValue`) instead of the oracle-referenced value (`calculateBaseAssetValueWithOracle`). Defaults to false.
514
+ * @returns Tuple of `[exitPrice, pnl]` — exitPrice is PRICE_PRECISION (1e6), pnl is QUOTE_PRECISION (1e6).
235
515
  */
236
516
  getPositionEstimatedExitPriceAndPnl(position: PerpPosition, amountToClose?: BN, useAMMClose?: boolean): [BN, BN];
237
517
  /**
238
518
  * calculates current user leverage which is (total liability size) / (net asset value)
239
- * @returns : Precision TEN_THOUSAND
519
+ * @param includeOpenOrders If true, sizes the perp liability using worst-case open-order exposure. Defaults to true.
520
+ * @param perpMarketIndex Optional single isolated perp market to scope leverage to (uses that position's own isolated deposit + PnL as its asset value); omit for account-wide leverage.
521
+ * @returns : Precision TEN_THOUSAND (1e4, i.e. `10000` = 1x leverage). `ZERO` if net asset value is zero.
240
522
  */
241
523
  getLeverage(includeOpenOrders?: boolean, perpMarketIndex?: number): BN;
524
+ /** Combines the components from `getLeverageComponents` into a single leverage ratio: `(perpLiability + spotLiability) / (spotAsset + perpPnl - spotLiability)`. Returns TEN_THOUSAND (1e4) precision; `ZERO` if net asset value is zero. */
242
525
  calculateLeverageFromComponents({ perpLiabilityValue, perpPnl, spotAssetValue, spotLiabilityValue, }: {
243
526
  perpLiabilityValue: BN;
244
527
  perpPnl: BN;
245
528
  spotAssetValue: BN;
246
529
  spotLiabilityValue: BN;
247
530
  }): BN;
531
+ /**
532
+ * Gathers the four raw components (`perpLiabilityValue`, `perpPnl`,
533
+ * `spotAssetValue`, `spotLiabilityValue`, all QUOTE_PRECISION/1e6) that
534
+ * `calculateLeverageFromComponents` combines into a leverage ratio.
535
+ *
536
+ * When `perpMarketIndex` is given, scopes to a single isolated position:
537
+ * `spotAssetValue` becomes that position's isolated quote deposit and
538
+ * `spotLiabilityValue` is `ZERO` (isolated positions carry no spot
539
+ * liability of their own). Otherwise sums across the whole account, and
540
+ * folds in `getTotalIsolatedPositionDeposits` as additional spot asset
541
+ * value when `marginCategory` is unweighted.
542
+ */
248
543
  getLeverageComponents(includeOpenOrders?: boolean, marginCategory?: MarginCategory | undefined, perpMarketIndex?: number): {
249
544
  perpLiabilityValue: BN;
250
545
  perpPnl: BN;
251
546
  spotAssetValue: BN;
252
547
  spotLiabilityValue: BN;
253
548
  };
549
+ /**
550
+ * Returns true if the user's deposit position in `spotMarketAccount` is
551
+ * non-empty but worth less than `DUST_POSITION_SIZE` (QUOTE_PRECISION) —
552
+ * i.e. too small to be economically worth withdrawing/settling. Only
553
+ * evaluates deposits (returns false for borrows or an empty position).
554
+ * @throws If the user has no spot position slot for the market (should not happen for a valid `SpotMarketAccount`).
555
+ */
254
556
  isDustDepositPosition(spotMarketAccount: SpotMarketAccount): boolean;
557
+ /** Returns every spot market where the user holds a dust-sized deposit; see `isDustDepositPosition`. */
255
558
  getSpotMarketAccountsWithDustPosition(): SpotMarketAccount[];
559
+ /**
560
+ * Sum of the user's total perp position liability (worst-case, open orders
561
+ * included) and total spot liability value (worst-case, open orders included).
562
+ * @param marginCategory Optional `'Initial'`/`'Maintenance'` weighting; omit for unweighted values.
563
+ * @returns Precision QUOTE_PRECISION (1e6), non-negative.
564
+ */
256
565
  getTotalLiabilityValue(marginCategory?: MarginCategory): BN;
566
+ /**
567
+ * Sum of the user's total spot asset value and total unrealized perp PnL
568
+ * (with funding). When `marginCategory` is omitted (unweighted), also
569
+ * includes `getTotalIsolatedPositionDeposits`.
570
+ * @param marginCategory Optional `'Initial'`/`'Maintenance'` weighting; omit for unweighted values.
571
+ * @returns Precision QUOTE_PRECISION (1e6), non-negative.
572
+ */
257
573
  getTotalAssetValue(marginCategory?: MarginCategory): BN;
574
+ /**
575
+ * Unweighted net USD value of the account: net spot market value, plus
576
+ * unrealized (funding-inclusive) perp PnL, plus isolated position deposits.
577
+ * @returns Precision QUOTE_PRECISION (1e6), can be negative.
578
+ */
258
579
  getNetUsdValue(): BN;
259
580
  /**
260
- * Calculates the all time P&L of the user.
261
- *
262
- * Net withdraws + Net spot market value + Net unrealized P&L -
581
+ * Calculates the all-time P&L of the user: current net USD value
582
+ * (`getNetUsdValue`), plus lifetime total withdraws, minus lifetime total
583
+ * deposits. Equivalent to "everything the account is worth now, plus
584
+ * everything ever taken out, minus everything ever put in".
585
+ * @returns Precision QUOTE_PRECISION (1e6), can be negative.
263
586
  */
264
587
  getTotalAllTimePnl(): BN;
265
588
  /**
266
589
  * calculates max allowable leverage exceeding hitting requirement category
267
590
  * for large sizes where imf factor activates, result is a lower bound
268
- * @param marginCategory {Initial, Maintenance}
269
- * @returns : Precision TEN_THOUSAND
591
+ * @param marginCategory {Initial, Maintenance} — currently unused; the calculation always uses the max-tradeable-size ('Initial') buying power.
592
+ * @returns : Precision TEN_THOUSAND (1e4, i.e. `10000` = 1x)
270
593
  */
271
594
  getMaxLeverageForPerp(perpMarketIndex: number, _marginCategory?: MarginCategory): BN;
272
595
  /**
273
596
  * calculates max allowable leverage exceeding hitting requirement category
274
597
  * @param spotMarketIndex
275
- * @param direction
276
- * @returns : Precision TEN_THOUSAND
598
+ * @param direction Whether to simulate a long (deposit-increasing) or short (borrow-increasing) trade.
599
+ * @returns : Precision TEN_THOUSAND (1e4, i.e. `10000` = 1x)
277
600
  */
278
601
  getMaxLeverageForSpot(spotMarketIndex: number, direction: PositionDirection): BN;
279
602
  /**
280
603
  * calculates margin ratio: 1 / leverage
281
- * @returns : Precision TEN_THOUSAND
604
+ * @returns : Precision TEN_THOUSAND (1e4, i.e. `10000` = 100% margin ratio / 1x leverage). Returns `BN_MAX` if the account has no liabilities.
282
605
  */
283
606
  getMarginRatio(): BN;
607
+ /**
608
+ * @deprecated Use `getLiquidationStatuses` for the full cross + per-isolated-market breakdown. This method returns only the cross-margin status (plus the same isolated map, for convenience) for backward compatibility.
609
+ * @returns The cross-margin `AccountLiquidatableStatus`, plus `isolatedPositions` mapping each isolated perp market index to its own status.
610
+ */
284
611
  canBeLiquidated(): AccountLiquidatableStatus & {
285
612
  isolatedPositions: Map<number, AccountLiquidatableStatus>;
286
613
  };
@@ -289,52 +616,125 @@ export declare class User {
289
616
  * Map keys:
290
617
  * - 'cross' for cross margin
291
618
  * - marketIndex (number) for each isolated perp position
619
+ *
620
+ * Each `canBeLiquidated` compares maintenance total collateral against the
621
+ * maintenance margin requirement for that scope. If `marginCalc` is not
622
+ * supplied, one is computed under `'Maintenance'` with the account's
623
+ * current `getLiquidationBuffer()` applied — i.e. this defaults to the same
624
+ * buffered check the on-chain liquidation instructions use, not a bare
625
+ * maintenance-margin comparison.
626
+ * @param marginCalc Optional pre-computed `MarginCalculation` to reuse (avoids recomputing margin across repeated calls).
292
627
  */
293
628
  getLiquidationStatuses(marginCalc?: MarginCalculation): Map<'cross' | number, AccountLiquidatableStatus>;
629
+ /** Returns true if cross margin or any isolated perp position is currently flagged as being liquidated or bankrupt. */
294
630
  isBeingLiquidated(): boolean;
631
+ /** Returns true if the account-level `UserStatus` has `BEING_LIQUIDATED` or `BANKRUPT` set (cross margin, not per-isolated-position). */
295
632
  isCrossMarginBeingLiquidated(): boolean;
296
633
  /** Returns true if cross margin is currently below maintenance requirement (no buffer). */
297
634
  canCrossMarginBeLiquidated(marginCalc?: MarginCalculation): boolean;
635
+ /** Returns true if any active perp position has `PositionFlag.BeingLiquidated` or `PositionFlag.Bankruptcy` set. */
298
636
  hasIsolatedPositionBeingLiquidated(): boolean;
637
+ /** Returns true if the specific perp position in `perpMarketIndex` has `PositionFlag.BeingLiquidated` or `PositionFlag.Bankruptcy` set. False (not throw) if the user has no position there. */
299
638
  isIsolatedPositionBeingLiquidated(perpMarketIndex: number): boolean;
300
639
  /** Returns true if any isolated perp position is currently below its maintenance requirement (no buffer). */
301
640
  getLiquidatableIsolatedPositions(marginCalc?: MarginCalculation): number[];
641
+ /** Returns true if `isolatedMarginCalculation`'s collateral is below its margin requirement (no buffer). */
302
642
  canIsolatedPositionMarginBeLiquidated(isolatedMarginCalculation: IsolatedMarginCalculation): boolean;
643
+ /** Returns true if the account's `UserStatus` bitmask has `status` set. */
303
644
  hasStatus(status: UserStatus): boolean;
645
+ /** Returns true if the account's `UserStatus` has `BANKRUPT` set (equity insufficient to cover liabilities; awaiting bankruptcy resolution). */
304
646
  isBankrupt(): boolean;
305
647
  /**
306
648
  * Checks if any user position cumulative funding differs from respective market cumulative funding
307
- * @returns
649
+ * @returns True if at least one non-flat perp position has stale `lastCumulativeFundingRate` relative to the market's current long/short cumulative funding rate.
308
650
  */
309
651
  needsToSettleFundingPayment(): boolean;
310
652
  /**
311
- * Calculate the liquidation price of a spot position
312
- * @param marketIndex
313
- * @returns Precision : PRICE_PRECISION
653
+ * Calculate the liquidation price of a spot position — the oracle price at
654
+ * which maintenance free collateral would hit zero, extrapolating linearly
655
+ * from the current free collateral and the position's per-unit-price
656
+ * sensitivity (`calculateFreeCollateralDeltaForSpot`). If a perp market
657
+ * shares the same oracle as this spot market, that perp position's
658
+ * sensitivity is folded in too (scaled for any oracle-source unit
659
+ * difference), since a single price move affects both simultaneously.
660
+ * @param marketIndex Spot market to compute the liquidation price for.
661
+ * @param positionBaseSizeChange Optional simulated change to the position size, in the spot market's own token decimals. Defaults to no change.
662
+ * @returns Precision PRICE_PRECISION (1e6). Returns `new BN(-1)` as a sentinel when there is no position, the position (after `positionBaseSizeChange`) is flat, the price sensitivity is zero, or the computed liquidation price would be negative (position cannot be liquidated by a price move alone).
314
663
  */
315
664
  spotLiquidationPrice(marketIndex: number, positionBaseSizeChange?: BN): BN;
316
665
  /**
317
- * Calculate the liquidation price of a perp position, with optional parameter to calculate the liquidation price after a trade
666
+ * Calculate the liquidation price of a perp position, with optional parameter to calculate the liquidation price after a trade.
667
+ *
668
+ * Like `spotLiquidationPrice`, this extrapolates linearly from current free
669
+ * collateral (`totalCollateral - marginRequirement`, plus `offsetCollateral`)
670
+ * and the position's price sensitivity; if a spot market shares the same
671
+ * oracle, its sensitivity is folded in too. When `marginType === 'Isolated'`,
672
+ * free collateral and the margin requirement are scoped to that market's
673
+ * isolated bucket instead of the cross-margin account (and the spot-oracle
674
+ * cross-contribution above is skipped).
318
675
  * @param marketIndex
319
- * @param positionBaseSizeChange // change in position size to calculate liquidation price for : Precision 10^9
320
- * @param estimatedEntryPrice
321
- * @param marginCategory // allow Initial to be passed in if we are trying to calculate price for DLP de-risking
322
- * @param includeOpenOrders
323
- * @param offsetCollateral // allows calculating the liquidation price after this offset collateral is added to the user's account (e.g. : what will the liquidation price be for this position AFTER I deposit $x worth of collateral)
324
- * @returns Precision : PRICE_PRECISION
676
+ * @param positionBaseSizeChange Change in position size to calculate the liquidation price for, standardized to the market's order step size. Precision BASE_PRECISION (1e9).
677
+ * @param estimatedEntryPrice Entry price for `positionBaseSizeChange`, PRICE_PRECISION (1e6); only affects the result under `marginCategory: 'Maintenance'` (it adjusts free collateral for the estimated realized PnL and taker fee of entering at this price rather than at the oracle price).
678
+ * @param marginCategory Allow `'Initial'` to be passed in if we are trying to calculate price for DLP de-risking. Defaults to `'Maintenance'` (the actual liquidation threshold).
679
+ * @param includeOpenOrders Include open orders' worst-case exposure when sizing the position. Defaults to false.
680
+ * @param offsetCollateral Allows calculating the liquidation price after this offset collateral (QUOTE_PRECISION, 1e6) is added to the user's account (e.g. : what will the liquidation price be for this position AFTER I deposit $x worth of collateral). Defaults to zero.
681
+ * @param marginType `'Isolated'` to scope the calculation to `marketIndex`'s isolated margin bucket; omit/`'Cross'` for the cross-margin account.
682
+ * @returns Precision : PRICE_PRECISION (1e6). Returns `new BN(-1)` as a sentinel when there is no isolated margin calculation for the market (isolated mode), the price sensitivity is zero, or the computed price would be negative (position cannot be liquidated by a price move alone).
325
683
  */
326
684
  liquidationPrice(marketIndex: number, positionBaseSizeChange?: BN, estimatedEntryPrice?: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean, offsetCollateral?: BN, marginType?: MarginType): BN;
685
+ /**
686
+ * Helper for `liquidationPrice`: estimates the net change to free collateral
687
+ * from simultaneously (a) realizing PnL on `positionBaseSizeChange` entered
688
+ * at `estimatedEntryPrice` (assuming the worst/taker fee tier) versus the
689
+ * oracle price, and (b) the resulting change in margin requirement from the
690
+ * new position size. Only component (a) applies under `'Maintenance'`
691
+ * (matching `liquidationPrice`'s default); under other margin categories
692
+ * only the margin-requirement delta is applied.
693
+ * @returns Precision QUOTE_PRECISION (1e6); can be negative.
694
+ */
327
695
  calculateEntriesEffectOnFreeCollateral(market: PerpMarketAccount, oraclePrice: BN, perpPosition: PerpPosition, positionBaseSizeChange: BN, estimatedEntryPrice: BN, includeOpenOrders: boolean, marginCategory?: MarginCategory): BN;
696
+ /**
697
+ * Helper for `liquidationPrice`: the derivative of free collateral with
698
+ * respect to the perp market's oracle price, for the proposed post-trade
699
+ * position (`positionBaseSizeChange` applied to the current, or worst-case
700
+ * if `includeOpenOrders`, base amount). Used as the linear-extrapolation
701
+ * slope to solve for the price at which free collateral hits zero.
702
+ * @returns Precision QUOTE_PRECISION (1e6) per unit of PRICE_PRECISION move, or `undefined` if the proposed position is flat (no defined liquidation price).
703
+ */
328
704
  calculateFreeCollateralDeltaForPerp(market: PerpMarketAccount, perpPosition: PerpPosition, positionBaseSizeChange: BN, oraclePrice: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean): BN | undefined;
705
+ /**
706
+ * Helper for `spotLiquidationPrice`/`liquidationPrice`: the derivative of
707
+ * free collateral with respect to the spot market's oracle price, for a
708
+ * position of `signedTokenAmount` (positive = deposit, negative = borrow).
709
+ * @returns Precision QUOTE_PRECISION (1e6) per unit of PRICE_PRECISION move.
710
+ */
329
711
  calculateFreeCollateralDeltaForSpot(market: SpotMarketAccount, signedTokenAmount: BN, marginCategory?: MarginCategory): BN;
330
712
  /**
331
713
  * Calculates the estimated liquidation price for a position after closing a quote amount of the position.
332
714
  * @param positionMarketIndex
333
- * @param closeQuoteAmount
334
- * @returns : Precision PRICE_PRECISION
715
+ * @param closeQuoteAmount Quote-denominated amount of the position to close, QUOTE_PRECISION (1e6). Converted proportionally to a base-size reduction via the position's current cost basis.
716
+ * @param estimatedEntryPrice Forwarded to `liquidationPrice` as the entry price for the (negative, i.e. closing) size change. PRICE_PRECISION (1e6). Defaults to zero.
717
+ * @returns : Precision PRICE_PRECISION (1e6). See `liquidationPrice` for the `-1` sentinel cases.
335
718
  */
336
719
  liquidationPriceAfterClose(positionMarketIndex: number, closeQuoteAmount: BN, estimatedEntryPrice?: BN): BN;
720
+ /**
721
+ * Calculates the margin required to open a trade of `baseSize` in `targetMarketIndex`, scalar only — does not account for trade direction or existing positions/whether the trade is actually risk-increasing.
722
+ * @param baseSize BASE_PRECISION (1e9).
723
+ * @param estEntryPrice Optional entry price to value the trade at, PRICE_PRECISION (1e6); defaults to the oracle price.
724
+ * @param perpMarketMaxMarginRatio Optional max-margin-ratio override, see `resolveMaxMarginRatio`.
725
+ * @returns Precision QUOTE_PRECISION (1e6).
726
+ */
337
727
  getMarginUSDCRequiredForTrade(targetMarketIndex: number, baseSize: BN, estEntryPrice?: BN, perpMarketMaxMarginRatio?: number): BN;
728
+ /**
729
+ * Converts `getMarginUSDCRequiredForTrade`'s USDC margin requirement into
730
+ * how much of `collateralIndex`'s token a user would need to deposit to
731
+ * cover it, accounting for that collateral's scaled initial asset weight
732
+ * (a lower-weighted asset requires proportionally more deposited).
733
+ * @param baseSize BASE_PRECISION (1e9).
734
+ * @param collateralIndex Spot market to size the deposit in.
735
+ * @param perpMarketMaxMarginRatio Optional max-margin-ratio override, see `resolveMaxMarginRatio`.
736
+ * @returns Token amount in `collateralIndex`'s own decimals.
737
+ */
338
738
  getCollateralDepositRequiredForTrade(targetMarketIndex: number, baseSize: BN, collateralIndex: number, perpMarketMaxMarginRatio?: number): BN;
339
739
  /**
340
740
  * Separates the max trade size into two parts:
@@ -342,7 +742,9 @@ export declare class User {
342
742
  * - oppositeSideTradeSize: the trade size for closing the opposite direction
343
743
  * @param targetMarketIndex
344
744
  * @param tradeSide
345
- * @returns { tradeSize: BN, oppositeSideTradeSize: BN} : Precision QUOTE_PRECISION
745
+ * @param maxMarginRatio Optional max-margin-ratio override, see `resolveMaxMarginRatio`.
746
+ * @param positionType Whether to size for a cross or isolated-margin position (forwarded to `getPerpBuyingPower`). Defaults to `'cross'`.
747
+ * @returns { tradeSize: BN, oppositeSideTradeSize: BN} : Precision QUOTE_PRECISION (1e6)
346
748
  */
347
749
  getMaxTradeSizeUSDCForPerp(targetMarketIndex: number, tradeSide: PositionDirection, maxMarginRatio?: number | undefined, positionType?: 'isolated' | 'cross'): {
348
750
  tradeSize: BN;
@@ -352,10 +754,10 @@ export declare class User {
352
754
  * Get the maximum trade size for a given market, taking into account the user's current leverage, positions, collateral, etc.
353
755
  *
354
756
  * @param targetMarketIndex
355
- * @param direction
356
- * @param currentQuoteAssetValue
357
- * @param currentSpotMarketNetValue
358
- * @returns tradeSizeAllowed : Precision QUOTE_PRECISION
757
+ * @param direction Long (increase deposit / reduce borrow) or short (increase borrow / reduce deposit).
758
+ * @param currentQuoteAssetValue Ignored — always recomputed internally from `getSpotMarketAssetValue(QUOTE_SPOT_MARKET_INDEX)`.
759
+ * @param currentSpotMarketNetValue Optional pre-computed net value for `targetMarketIndex` (QUOTE_PRECISION, 1e6); if omitted, computed via `getSpotPositionValue`.
760
+ * @returns tradeSizeAllowed : Precision QUOTE_PRECISION (1e6)
359
761
  */
360
762
  getMaxTradeSizeUSDCForSpot(targetMarketIndex: number, direction: PositionDirection, currentQuoteAssetValue?: BN, currentSpotMarketNetValue?: BN): BN;
361
763
  /**
@@ -364,8 +766,9 @@ export declare class User {
364
766
  *
365
767
  * @param inMarketIndex
366
768
  * @param outMarketIndex
367
- * @param calculateSwap function to similate in to out swa
368
- * @param iterationLimit how long to run appromixation before erroring out
769
+ * @param calculateSwap Optional function to simulate the in-to-out conversion (e.g. to model swap fees/slippage); defaults to a 1:1 oracle-price conversion.
770
+ * @param iterationLimit How many binary-search iterations to run before erroring out. Defaults to 1000.
771
+ * @returns `inAmount`/`outAmount` in each market's own token decimals, and the resulting `leverage` (TEN_THOUSAND, 1e4 precision) after the swap.
369
772
  */
370
773
  getMaxSwapAmount({ inMarketIndex, outMarketIndex, calculateSwap, iterationLimit, }: {
371
774
  inMarketIndex: number;
@@ -377,18 +780,28 @@ export declare class User {
377
780
  outAmount: BN;
378
781
  leverage: BN;
379
782
  };
783
+ /**
784
+ * Returns a cloned `SpotPosition` with `tokenAmount` (signed, positive =
785
+ * deposit / negative = borrow) applied on top of the existing balance —
786
+ * used to simulate the post-trade/post-swap position without mutating the
787
+ * cached account.
788
+ * @param tokenAmount Signed delta in `market`'s own token decimals.
789
+ */
380
790
  cloneAndUpdateSpotPosition(position: SpotPosition, tokenAmount: BN, market: SpotMarketAccount): SpotPosition;
791
+ /** Worst-case free-collateral contribution (under `'Initial'` margin) of a single spot position. Returns QUOTE_PRECISION (1e6). */
381
792
  calculateSpotPositionFreeCollateralContribution(spotPosition: SpotPosition, strictOraclePrice: StrictOraclePrice): BN;
793
+ /** Worst-case (under `'Initial'` margin) asset/liability value split of a single spot position, for use in leverage calculations. Both fields QUOTE_PRECISION (1e6), non-negative. */
382
794
  calculateSpotPositionLeverageContribution(spotPosition: SpotPosition, strictOraclePrice: StrictOraclePrice): {
383
795
  totalAssetValue: BN;
384
796
  totalLiabilityValue: BN;
385
797
  };
386
798
  /**
387
799
  * Estimates what the user leverage will be after swap
388
- * @param inMarketIndex
389
- * @param outMarketIndex
390
- * @param inAmount
391
- * @param outAmount
800
+ * @param inMarketIndex Market being sold/paid from.
801
+ * @param outMarketIndex Market being bought/received.
802
+ * @param inAmount Amount removed from `inMarketIndex`, that market's own token decimals.
803
+ * @param outAmount Amount added to `outMarketIndex`, that market's own token decimals.
804
+ * @returns Precision TEN_THOUSAND (1e4, i.e. `10000` = 1x).
392
805
  */
393
806
  accountLeverageAfterSwap({ inMarketIndex, outMarketIndex, inAmount, outAmount, }: {
394
807
  inMarketIndex: number;
@@ -399,42 +812,146 @@ export declare class User {
399
812
  /**
400
813
  * Returns the leverage ratio for the account after adding (or subtracting) the given quote size to the given position
401
814
  * @param targetMarketIndex
402
- * @param: targetMarketType
403
- * @param tradeQuoteAmount
404
- * @param tradeSide
405
- * @param includeOpenOrders
406
- * @returns leverageRatio : Precision TEN_THOUSAND
815
+ * @param targetMarketType Whether the trade is on a perp or spot market — the two use different valuation paths.
816
+ * @param tradeQuoteAmount Quote size of the simulated trade, QUOTE_PRECISION (1e6).
817
+ * @param tradeSide Direction of the simulated trade.
818
+ * @param includeOpenOrders Include existing open orders' worst-case impact in both the before/after values. Defaults to true.
819
+ * @returns leverageRatio : Precision TEN_THOUSAND (1e4, i.e. `10000` = 1x)
407
820
  */
408
821
  accountLeverageRatioAfterTrade(targetMarketIndex: number, targetMarketType: MarketType, tradeQuoteAmount: BN, tradeSide: PositionDirection, includeOpenOrders?: boolean): BN;
822
+ /**
823
+ * Looks up the user's fee tier from the state account's fee structure.
824
+ *
825
+ * For perp markets, the tier is selected by the user's rolling 30-day
826
+ * volume (`getUser30dRollingVolumeEstimate`, QUOTE_PRECISION) against fixed
827
+ * breakpoints — $2M, $10M, $20M, $80M, $200M — picking the lowest-index
828
+ * tier whose breakpoint the user's volume is still under (tier 5, the
829
+ * lowest fees, if volume meets or exceeds the top breakpoint). Spot markets
830
+ * always use tier 0 (no volume-based discount).
831
+ * @param marketType `MarketType.PERP` or `MarketType.SPOT`.
832
+ * @param now Optional unix timestamp (seconds) to evaluate the rolling volume window as of; defaults to current time.
833
+ * @returns The matching `FeeTier` (numerator/denominator fee fractions and referee-discount fractions).
834
+ */
409
835
  getUserFeeTier(marketType: MarketType, now?: BN): import("./types").FeeTier;
410
836
  /**
411
- * Calculates how much perp fee will be taken for a given sized trade
412
- * @param quoteAmount
413
- * @returns feeForQuote : Precision QUOTE_PRECISION
837
+ * Calculates how much perp fee will be taken for a given sized trade.
838
+ *
839
+ * When `marketIndex` is provided, delegates to `VelocityClient.getMarketFees`
840
+ * for that specific market's taker-fee multiplier (which itself applies the
841
+ * market's `feeAdjustment`, the referee discount, and — when `builderInfo` is
842
+ * passed — the builder fee). Otherwise uses the volume-based fee tier from
843
+ * `getUserFeeTier(MarketType.PERP)`; if the user is a referee (determined
844
+ * from `UserStats.referrerStatus`'s `IsReferred` flag unless `isReferee` is
845
+ * explicitly passed), the tier's `refereeFeeNumerator`/`refereeFeeDenominator`
846
+ * proportion is subtracted from the fee as a discount, and — when `builderInfo`
847
+ * carries a builder code — the builder fee (`quoteAmount * builderFeeTenthBps /
848
+ * 100_000`) is added on top, mirroring the program's `builder_fee` (`math/fees.rs`).
849
+ * @param quoteAmount Trade size, QUOTE_PRECISION (1e6).
850
+ * @param marketIndex Optional perp market to use `VelocityClient.getMarketFees` for instead of the volume-tier fee structure.
851
+ * @param isReferee Optional override for whether the referee discount applies; defaults to the user's actual `UserStats` referred status. Ignored on the `marketIndex` path (which reads referee status inside `getMarketFees`).
852
+ * @param builderInfo Optional builder code; when it carries `builderIdx` + `builderFeeTenthBps`, the builder fee is added on top of the tiered fee.
853
+ * @returns feeForQuote : Precision QUOTE_PRECISION (1e6)
414
854
  */
415
- calculateFeeForQuoteAmount(quoteAmount: BN, marketIndex?: number): BN;
855
+ calculatePerpTakerFee(quoteAmount: BN, marketIndex?: number, isReferee?: boolean, builderInfo?: Pick<OrderParams, 'builderIdx' | 'builderFeeTenthBps'>): BN;
416
856
  /**
417
857
  * Calculates a user's max withdrawal amounts for a spot market. If reduceOnly is true,
418
- * it will return the max withdrawal amount without opening a liability for the user
858
+ * it will return the max withdrawal amount without opening a liability for the user.
859
+ *
860
+ * Combines three caps: the market-wide withdraw/borrow guard
861
+ * (`calculateWithdrawLimit`, a rolling-window rate limit on the spot
862
+ * market), the user's own deposit balance, and how much their free
863
+ * collateral supports withdrawing/borrowing. If `canBypassWithdrawLimits`
864
+ * returns `canBypass: true` (see that method), the market-wide withdraw
865
+ * limit floor is raised to the user's full deposit amount — letting a
866
+ * small, healthy, always-net-positive depositor withdraw in full even if
867
+ * the market-wide guard would otherwise throttle them.
419
868
  * @param marketIndex
869
+ * @param reduceOnly If true, caps the result so the withdrawal cannot open a borrow (never exceeds the user's current deposit). If false/omitted, may return an amount larger than the deposit, up to the user's max allowed new liability.
420
870
  * @returns withdrawalLimit : Precision is the token precision for the chosen SpotMarket
421
871
  */
422
872
  getWithdrawalLimit(marketIndex: number, reduceOnly?: boolean): BN;
873
+ /**
874
+ * Determines whether the user can bypass the spot market's rolling
875
+ * withdraw-guard limit for `marketIndex`. `canBypass` is true only when
876
+ * **all** of the following hold:
877
+ * - The user currently holds a deposit (not a borrow) in the market.
878
+ * - Their lifetime net deposits (`totalDeposits - totalWithdraws`) are
879
+ * non-negative — they have never net-withdrawn more than they net-deposited.
880
+ * - Their `cumulativeDeposits` for the position has never gone negative
881
+ * (no history of having borrowed and repaid in this market).
882
+ * - Their current deposit amount is below `maxDepositAmount`, i.e. 10% of
883
+ * the spot market's `withdrawGuardThreshold`.
884
+ *
885
+ * This lets a small, well-behaved depositor withdraw their own funds in
886
+ * full even while the market-wide withdraw guard is actively throttling
887
+ * larger movements. Used by `getWithdrawalLimit`.
888
+ * @param marketIndex
889
+ * @returns `canBypass`; `netDeposits` (lifetime `totalDeposits - totalWithdraws`, QUOTE_PRECISION, 1e6); `depositAmount` and `maxDepositAmount`, both in the spot market's own token decimals.
890
+ */
423
891
  canBypassWithdrawLimits(marketIndex: number): {
424
892
  canBypass: boolean;
425
893
  netDeposits: BN;
426
894
  depositAmount: BN;
427
895
  maxDepositAmount: BN;
428
896
  };
897
+ /**
898
+ * Determines whether the user can be marked idle (excluded from userMap
899
+ * subscriptions by default, and skipped by most keeper crank passes) as of
900
+ * `slot`. Requires: not already idle; inactive for the required window
901
+ * since `lastActiveSlot` (1 hour / 9,000 slots if equity is under $1,000,
902
+ * otherwise 1 week / 1,512,000 slots); not currently being liquidated; and
903
+ * no open perp positions, borrows, spot open orders, or open orders of any kind.
904
+ * @param slot Current slot to evaluate inactivity against.
905
+ */
429
906
  canMakeIdle(slot: BN): boolean;
907
+ /**
908
+ * Determines whether this `User` (sub)account can be deleted (checked
909
+ * before sending a delete-user instruction, to give a friendlier error than
910
+ * an on-chain revert). Returns `canDelete: false` with a `reason` string if
911
+ * any of the following hold: it's a referrer's sub-account 0 (referrers
912
+ * cannot delete their primary account); the account is bankrupt or being
913
+ * liquidated; it has any non-empty perp/spot position or open order; or
914
+ * (when the state account charges an initialize-user fee) the account is a
915
+ * "fresh" account — younger than `ACCOUNT_AGE_DELETION_CUTOFF_SECONDS`,
916
+ * measured from its earliest recorded filler/maker/taker volume timestamp —
917
+ * that is not currently idle.
918
+ * @param userStatsAccount Optional pre-fetched `UserStatsAccount`; defaults to `VelocityClient.getUserStatsOrThrow().getAccount()`.
919
+ * @param now Optional unix timestamp (seconds) to evaluate account age against; defaults to current time.
920
+ */
430
921
  canBeDeleted(userStatsAccount?: UserStatsAccount, now?: BN): {
431
922
  canDelete: boolean;
432
923
  reason?: string;
433
924
  };
925
+ /**
926
+ * Returns the numerically-lowest (i.e. safest) contract/asset tier across
927
+ * the user's active positions — perp tiers from active perp positions,
928
+ * spot tiers only from spot **borrows** (deposits are skipped, since asset
929
+ * tier only restricts borrowing exposure). Defaults to `4` (the
930
+ * second-riskiest tier index) when the user has no positions of that kind —
931
+ * this is a permissive default intended for callers doing tier-safety
932
+ * comparisons (see `perpTierIsAsSafeAs` in `math/tiers`), not a claim that
933
+ * "no position" is itself a risky tier.
934
+ * @returns Lower `perpTier`/`spotTier` numbers indicate a safer tier; see `math/tiers` (`getPerpMarketTierNumber`/`getSpotMarketTierNumber`) for the numbering.
935
+ */
434
936
  getSafestTiers(): {
435
937
  perpTier: number;
436
938
  spotTier: number;
437
939
  };
940
+ /**
941
+ * Breaks down a single perp position's contribution to the margin system
942
+ * as a `HealthComponent`: worst-case base size, its unweighted liability
943
+ * value, the applicable margin ratio (`weight`), and the resulting
944
+ * weighted margin requirement (`weightedValue`, which includes the
945
+ * position's open-order margin add-on). Used to build up
946
+ * `getHealthComponents`' `perpPositions` array (e.g. for UI breakdowns of
947
+ * "what's consuming my margin").
948
+ * @param marginCategory `'Initial'` or `'Maintenance'`.
949
+ * @param perpPosition Position to evaluate.
950
+ * @param oraclePriceData Optional oracle price override for the perp market; defaults to the live oracle price.
951
+ * @param quoteOraclePriceData Optional oracle price override for the quote spot market; defaults to the live oracle price.
952
+ * @param includeOpenOrders Include worst-case open-order exposure. Defaults to true.
953
+ * @returns `size` is BASE_PRECISION (1e9); `value`/`weightedValue` are QUOTE_PRECISION (1e6); `weight` is MARGIN_PRECISION (1e4).
954
+ */
438
955
  getPerpPositionHealth({ marginCategory, perpPosition, oraclePriceData, quoteOraclePriceData, includeOpenOrders, }: {
439
956
  marginCategory: MarginCategory;
440
957
  perpPosition: PerpPosition;
@@ -442,6 +959,18 @@ export declare class User {
442
959
  quoteOraclePriceData?: OraclePriceData;
443
960
  includeOpenOrders?: boolean;
444
961
  }): HealthComponent;
962
+ /**
963
+ * Builds a full breakdown of every component feeding into the user's
964
+ * margin calculation, for UI/diagnostic display: `deposits` and `borrows`
965
+ * (one `HealthComponent` per non-quote spot market with a nonzero
966
+ * worst-case position, plus a synthetic entry for the net quote balance),
967
+ * `perpPositions` (via `getPerpPositionHealth`, one per active perp
968
+ * position), and `perpPnl` (each position's weighted unrealized PnL — see
969
+ * `getUnrealizedPNL` for the `'Initial'`-margin $100 cap that also applies
970
+ * here).
971
+ * @param marginCategory `'Initial'` or `'Maintenance'` — determines which asset/liability weights are applied.
972
+ * @returns `HealthComponents` with `size`/`value`/`weightedValue` in each entry using the same precisions as `getPerpPositionHealth`.
973
+ */
445
974
  getHealthComponents({ marginCategory, }: {
446
975
  marginCategory: MarginCategory;
447
976
  }): HealthComponents;
@@ -456,6 +985,7 @@ export declare class User {
456
985
  private getOracleDataForSpotMarket;
457
986
  /**
458
987
  * Get the active perp and spot positions of the user.
988
+ * @returns Market indices only (not full position objects); see `getActivePerpPositions`/`getActiveSpotPositions` for the "active" criteria.
459
989
  */
460
990
  getActivePositions(): {
461
991
  activePerpPositions: number[];
@@ -465,11 +995,57 @@ export declare class User {
465
995
  * Compute the full margin calculation for the user's account.
466
996
  * Prioritize using this function instead of calling getMarginRequirement or getTotalCollateral multiple times.
467
997
  * Consumers can use this to avoid duplicating work across separate calls.
998
+ *
999
+ * Mirrors the on-chain margin accumulation in `math/margin.rs`, splitting
1000
+ * contributions into cross-margin and per-market isolated buckets
1001
+ * (`MarginCalculation.isolatedMarginCalculations`, keyed by perp market
1002
+ * index — see `isPerpPositionIsolated`) and tracking whether the account
1003
+ * holds any isolated-tier liability (`withPerpIsolatedLiability` /
1004
+ * `withSpotIsolatedLiability`, consumed by
1005
+ * `validateAnyIsolatedTierRequirements`). A perp position's isolated
1006
+ * quote-deposit collateral only counts toward that position's own isolated
1007
+ * bucket, never the cross-margin total.
1008
+ *
1009
+ * Also enforces pool-id consistency: every spot/perp position's market must
1010
+ * match the user's `poolId`, **except** a pool-1 user is allowed to hold a
1011
+ * quote-asset deposit (not borrow) even though the quote spot market itself
1012
+ * belongs to pool 0 — throws `InvalidPoolId: ...` otherwise.
1013
+ * @param marginCategory `'Initial'` or `'Maintenance'`. Defaults to `'Initial'`.
1014
+ * @param opts.strict Apply TWAP-bounded (`StrictOraclePrice`) oracle pricing, mirroring the on-chain strict-price gating. Defaults to false.
1015
+ * @param opts.includeOpenOrders Include open orders' worst-case impact. Defaults to true.
1016
+ * @param opts.liquidationBufferMap Per-scope buffer (MARGIN_PRECISION, 1e4) to pad margin requirements with — `'cross'` for the cross-margin bucket, or a perp market index for that market's isolated bucket. See `getLiquidationBuffer`.
468
1017
  */
469
1018
  getMarginCalculation(marginCategory?: MarginCategory, opts?: {
470
1019
  strict?: boolean;
471
1020
  includeOpenOrders?: boolean;
472
1021
  liquidationBufferMap?: Map<number | 'cross', BN>;
473
1022
  }): MarginCalculation;
1023
+ /**
1024
+ * Returns true if `perpPosition` was opened/is held under isolated margin
1025
+ * (`PositionFlag.IsolatedPosition` set) — segregated to its own margin
1026
+ * bucket (see `getMarginCalculation`) rather than sharing cross-margin
1027
+ * collateral with the rest of the account.
1028
+ */
474
1029
  isPerpPositionIsolated(perpPosition: PerpPosition): boolean;
1030
+ /**
1031
+ * Pre-flight check for `IsolatedAssetTierViolation`: mirrors
1032
+ * `validate_any_isolated_tier_requirements` in `math/margin.rs`. A user
1033
+ * holding an isolated-tier perp or spot liability may not simultaneously
1034
+ * carry other liabilities (besides a single usdc borrow, for a perp
1035
+ * isolated liability), unless they are reduce-only.
1036
+ *
1037
+ * Specifically, if `calculation.withPerpIsolatedLiability` is set (an
1038
+ * isolated-*contract-tier* perp liability exists) and the user is not
1039
+ * `UserStatus.REDUCE_ONLY`: more than one perp liability is invalid; margin
1040
+ * trading enabled is invalid; and any spot liability other than a single
1041
+ * USDC borrow is invalid. If `calculation.withSpotIsolatedLiability` is set
1042
+ * (an isolated-*asset-tier* spot liability exists) and not reduce-only: any
1043
+ * perp liability, or more than the one isolated-tier spot liability, is invalid.
1044
+ * @param calculation A `MarginCalculation` from `getMarginCalculation` (any margin category — only the isolated-liability flags and liability counts are read).
1045
+ * @returns `{ valid: true }` if the account satisfies isolated-tier requirements, else `{ valid: false, reason }` with a human-readable reason.
1046
+ */
1047
+ validateAnyIsolatedTierRequirements(calculation: MarginCalculation): {
1048
+ valid: boolean;
1049
+ reason?: string;
1050
+ };
475
1051
  }