@velocity-exchange/sdk 0.2.5 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1057) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/README.md +3 -3
  3. package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
  4. package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
  5. package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
  6. package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
  7. package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
  8. package/lib/browser/accounts/bulkAccountLoader.js +51 -0
  9. package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
  10. package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
  11. package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
  12. package/lib/browser/accounts/bulkUserSubscription.js +8 -2
  13. package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
  14. package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
  15. package/lib/browser/accounts/fetch.d.ts +59 -2
  16. package/lib/browser/accounts/fetch.js +57 -2
  17. package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
  18. package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
  19. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
  20. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
  21. package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
  22. package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
  23. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
  24. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
  25. package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
  26. package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
  27. package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
  28. package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
  29. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
  30. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
  31. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
  32. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
  33. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
  34. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
  35. package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
  36. package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
  37. package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
  38. package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
  39. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
  40. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
  41. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
  42. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
  43. package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
  44. package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
  45. package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
  46. package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
  47. package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
  48. package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
  49. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
  50. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
  51. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
  52. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
  53. package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
  54. package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
  55. package/lib/browser/accounts/types.d.ts +149 -0
  56. package/lib/browser/accounts/types.js +13 -0
  57. package/lib/browser/accounts/utils.d.ts +18 -0
  58. package/lib/browser/accounts/utils.js +32 -16
  59. package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
  60. package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
  61. package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
  62. package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
  63. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
  64. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
  65. package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
  66. package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
  67. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
  68. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
  69. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
  70. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
  71. package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
  72. package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
  73. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  74. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
  75. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
  76. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
  77. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
  78. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
  79. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
  80. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
  81. package/lib/browser/addresses/marketAddresses.d.ts +10 -0
  82. package/lib/browser/addresses/marketAddresses.js +10 -0
  83. package/lib/browser/addresses/pda.d.ts +214 -2
  84. package/lib/browser/addresses/pda.js +217 -5
  85. package/lib/browser/adminClient.d.ts +2139 -5
  86. package/lib/browser/adminClient.js +2173 -11
  87. package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
  88. package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
  89. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
  90. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
  91. package/lib/browser/auctionSubscriber/index.d.ts +6 -0
  92. package/lib/browser/auctionSubscriber/index.js +6 -0
  93. package/lib/browser/auctionSubscriber/types.d.ts +7 -0
  94. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
  95. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
  96. package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
  97. package/lib/browser/blockhashSubscriber/index.js +5 -0
  98. package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
  99. package/lib/browser/clock/clockSubscriber.d.ts +24 -0
  100. package/lib/browser/clock/clockSubscriber.js +22 -0
  101. package/lib/browser/config.d.ts +58 -4
  102. package/lib/browser/config.js +88 -21
  103. package/lib/browser/constants/numericConstants.d.ts +67 -0
  104. package/lib/browser/constants/numericConstants.js +68 -1
  105. package/lib/browser/constants/perpMarkets.d.ts +10 -0
  106. package/lib/browser/constants/perpMarkets.js +40 -908
  107. package/lib/browser/constants/spotMarkets.d.ts +13 -0
  108. package/lib/browser/constants/spotMarkets.js +16 -742
  109. package/lib/browser/constants/txConstants.d.ts +1 -0
  110. package/lib/browser/constants/txConstants.js +1 -0
  111. package/lib/browser/core/VelocityCore.d.ts +285 -8
  112. package/lib/browser/core/VelocityCore.js +281 -8
  113. package/lib/browser/core/instructions/deposit.d.ts +22 -0
  114. package/lib/browser/core/instructions/deposit.js +22 -0
  115. package/lib/browser/core/instructions/fill.d.ts +17 -0
  116. package/lib/browser/core/instructions/fill.js +17 -0
  117. package/lib/browser/core/instructions/funding.d.ts +12 -0
  118. package/lib/browser/core/instructions/funding.js +12 -0
  119. package/lib/browser/core/instructions/liquidation.d.ts +18 -0
  120. package/lib/browser/core/instructions/liquidation.js +18 -0
  121. package/lib/browser/core/instructions/orders.d.ts +28 -0
  122. package/lib/browser/core/instructions/orders.js +28 -0
  123. package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
  124. package/lib/browser/core/instructions/perpOrders.js +106 -0
  125. package/lib/browser/core/instructions/settlement.d.ts +14 -0
  126. package/lib/browser/core/instructions/settlement.js +14 -0
  127. package/lib/browser/core/instructions/trigger.d.ts +15 -0
  128. package/lib/browser/core/instructions/trigger.js +15 -0
  129. package/lib/browser/core/instructions/withdraw.d.ts +21 -0
  130. package/lib/browser/core/instructions/withdraw.js +21 -0
  131. package/lib/browser/core/remainingAccounts.d.ts +47 -3
  132. package/lib/browser/core/remainingAccounts.js +20 -0
  133. package/lib/browser/core/signedMsg.d.ts +38 -0
  134. package/lib/browser/core/signedMsg.js +33 -0
  135. package/lib/browser/decode/customCoder.d.ts +39 -3
  136. package/lib/browser/decode/customCoder.js +45 -3
  137. package/lib/browser/decode/user.d.ts +22 -0
  138. package/lib/browser/decode/user.js +22 -0
  139. package/lib/browser/dlob/DLOB.d.ts +502 -53
  140. package/lib/browser/dlob/DLOB.js +540 -98
  141. package/lib/browser/dlob/DLOBNode.d.ts +86 -4
  142. package/lib/browser/dlob/DLOBNode.js +37 -4
  143. package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
  144. package/lib/browser/dlob/DLOBSubscriber.js +42 -12
  145. package/lib/browser/dlob/NodeList.d.ts +69 -0
  146. package/lib/browser/dlob/NodeList.js +66 -0
  147. package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
  148. package/lib/browser/dlob/orderBookLevels.js +84 -14
  149. package/lib/browser/dlob/types.d.ts +15 -0
  150. package/lib/browser/events/eventList.d.ts +14 -0
  151. package/lib/browser/events/eventList.js +14 -0
  152. package/lib/browser/events/eventSubscriber.d.ts +87 -10
  153. package/lib/browser/events/eventSubscriber.js +93 -8
  154. package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
  155. package/lib/browser/events/eventsServerLogProvider.js +27 -0
  156. package/lib/browser/events/fetchLogs.d.ts +31 -0
  157. package/lib/browser/events/fetchLogs.js +46 -1
  158. package/lib/browser/events/parse.d.ts +23 -0
  159. package/lib/browser/events/parse.js +23 -0
  160. package/lib/browser/events/pollingLogProvider.d.ts +24 -0
  161. package/lib/browser/events/pollingLogProvider.js +24 -0
  162. package/lib/browser/events/sort.d.ts +11 -0
  163. package/lib/browser/events/sort.js +12 -0
  164. package/lib/browser/events/txEventCache.d.ts +13 -3
  165. package/lib/browser/events/txEventCache.js +19 -7
  166. package/lib/browser/events/types.d.ts +118 -2
  167. package/lib/browser/events/types.js +11 -0
  168. package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
  169. package/lib/browser/events/webSocketLogProvider.js +28 -0
  170. package/lib/browser/factory/oracleClient.js +2 -2
  171. package/lib/browser/idl/velocity.d.ts +50 -1
  172. package/lib/browser/idl/velocity.json +50 -1
  173. package/lib/browser/keypair.d.ts +8 -0
  174. package/lib/browser/keypair.js +8 -0
  175. package/lib/browser/marginCalculation.d.ts +134 -2
  176. package/lib/browser/marginCalculation.js +121 -0
  177. package/lib/browser/math/amm.d.ts +348 -29
  178. package/lib/browser/math/amm.js +310 -32
  179. package/lib/browser/math/auction.d.ts +95 -19
  180. package/lib/browser/math/auction.js +118 -28
  181. package/lib/browser/math/bankruptcy.d.ts +46 -0
  182. package/lib/browser/math/bankruptcy.js +89 -1
  183. package/lib/browser/math/builder.d.ts +64 -8
  184. package/lib/browser/math/builder.js +71 -9
  185. package/lib/browser/math/conversion.d.ts +21 -0
  186. package/lib/browser/math/conversion.js +21 -0
  187. package/lib/browser/math/exchangeStatus.d.ts +92 -0
  188. package/lib/browser/math/exchangeStatus.js +111 -1
  189. package/lib/browser/math/funding.d.ts +57 -20
  190. package/lib/browser/math/funding.js +63 -23
  191. package/lib/browser/math/insurance.d.ts +62 -0
  192. package/lib/browser/math/insurance.js +62 -0
  193. package/lib/browser/math/liquidation.d.ts +127 -11
  194. package/lib/browser/math/liquidation.js +182 -19
  195. package/lib/browser/math/margin.d.ts +79 -13
  196. package/lib/browser/math/margin.js +80 -14
  197. package/lib/browser/math/market.d.ts +135 -15
  198. package/lib/browser/math/market.js +145 -17
  199. package/lib/browser/math/oracles.d.ts +113 -0
  200. package/lib/browser/math/oracles.js +118 -1
  201. package/lib/browser/math/orders.d.ts +115 -7
  202. package/lib/browser/math/orders.js +133 -18
  203. package/lib/browser/math/position.d.ts +80 -33
  204. package/lib/browser/math/position.js +80 -33
  205. package/lib/browser/math/repeg.d.ts +48 -10
  206. package/lib/browser/math/repeg.js +48 -10
  207. package/lib/browser/math/spotBalance.d.ts +200 -5
  208. package/lib/browser/math/spotBalance.js +239 -10
  209. package/lib/browser/math/spotMarket.d.ts +36 -3
  210. package/lib/browser/math/spotMarket.js +36 -3
  211. package/lib/browser/math/spotPosition.d.ts +72 -0
  212. package/lib/browser/math/spotPosition.js +62 -0
  213. package/lib/browser/math/state.d.ts +31 -0
  214. package/lib/browser/math/state.js +32 -1
  215. package/lib/browser/math/superStake.d.ts +126 -2
  216. package/lib/browser/math/superStake.js +123 -3
  217. package/lib/browser/math/tiers.d.ts +29 -0
  218. package/lib/browser/math/tiers.js +29 -0
  219. package/lib/browser/math/trade.d.ts +102 -51
  220. package/lib/browser/math/trade.js +101 -55
  221. package/lib/browser/math/utils.d.ts +71 -9
  222. package/lib/browser/math/utils.js +71 -9
  223. package/lib/browser/memcmp.d.ts +94 -0
  224. package/lib/browser/memcmp.js +129 -7
  225. package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
  226. package/lib/browser/oracles/oracleClientCache.js +16 -0
  227. package/lib/browser/oracles/oracleId.d.ts +31 -0
  228. package/lib/browser/oracles/oracleId.js +39 -8
  229. package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
  230. package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
  231. package/lib/browser/oracles/pythClient.d.ts +31 -0
  232. package/lib/browser/oracles/pythClient.js +32 -1
  233. package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
  234. package/lib/browser/oracles/pythLazerClient.js +35 -1
  235. package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
  236. package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
  237. package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
  238. package/lib/browser/oracles/strictOraclePrice.js +21 -0
  239. package/lib/browser/oracles/types.d.ts +45 -0
  240. package/lib/browser/oracles/utils.d.ts +20 -0
  241. package/lib/browser/oracles/utils.js +20 -0
  242. package/lib/browser/orderParams.d.ts +42 -4
  243. package/lib/browser/orderParams.js +42 -4
  244. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
  245. package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
  246. package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
  247. package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
  248. package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
  249. package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
  250. package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
  251. package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
  252. package/lib/browser/orderSubscriber/types.d.ts +9 -0
  253. package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
  254. package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
  255. package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
  256. package/lib/browser/priorityFee/averageStrategy.js +1 -0
  257. package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
  258. package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
  259. package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
  260. package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
  261. package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
  262. package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
  263. package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
  264. package/lib/browser/priorityFee/maxStrategy.js +1 -0
  265. package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
  266. package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
  267. package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
  268. package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
  269. package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
  270. package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
  271. package/lib/browser/priorityFee/types.d.ts +32 -0
  272. package/lib/browser/priorityFee/types.js +5 -0
  273. package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
  274. package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
  275. package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
  276. package/lib/browser/slot/SlotSubscriber.js +16 -0
  277. package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
  278. package/lib/browser/slot/SlothashSubscriber.js +25 -1
  279. package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
  280. package/lib/browser/tokenFaucet.d.ts +2 -2
  281. package/lib/browser/tokenFaucet.js +11 -4
  282. package/lib/browser/tx/baseTxSender.d.ts +163 -0
  283. package/lib/browser/tx/baseTxSender.js +174 -6
  284. package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
  285. package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
  286. package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
  287. package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
  288. package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
  289. package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
  290. package/lib/browser/tx/fastSingleTxSender.js +48 -1
  291. package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
  292. package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
  293. package/lib/browser/tx/reportTransactionError.d.ts +18 -6
  294. package/lib/browser/tx/reportTransactionError.js +18 -6
  295. package/lib/browser/tx/retryTxSender.d.ts +40 -0
  296. package/lib/browser/tx/retryTxSender.js +39 -0
  297. package/lib/browser/tx/txHandler.d.ts +146 -35
  298. package/lib/browser/tx/txHandler.js +132 -32
  299. package/lib/browser/tx/txParamProcessor.d.ts +47 -0
  300. package/lib/browser/tx/txParamProcessor.js +47 -0
  301. package/lib/browser/tx/types.d.ts +46 -0
  302. package/lib/browser/tx/types.js +5 -0
  303. package/lib/browser/tx/utils.d.ts +26 -0
  304. package/lib/browser/tx/utils.js +26 -0
  305. package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
  306. package/lib/browser/tx/whileValidTxSender.js +81 -0
  307. package/lib/browser/types.d.ts +786 -13
  308. package/lib/browser/types.js +133 -9
  309. package/lib/browser/user.d.ts +645 -84
  310. package/lib/browser/user.js +779 -96
  311. package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
  312. package/lib/browser/userMap/PollingSubscription.js +14 -2
  313. package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
  314. package/lib/browser/userMap/WebsocketSubscription.js +9 -0
  315. package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
  316. package/lib/browser/userMap/grpcSubscription.js +8 -0
  317. package/lib/browser/userMap/referrerMap.d.ts +72 -2
  318. package/lib/browser/userMap/referrerMap.js +84 -2
  319. package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
  320. package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
  321. package/lib/browser/userMap/userMap.d.ts +81 -3
  322. package/lib/browser/userMap/userMap.js +81 -4
  323. package/lib/browser/userMap/userMapConfig.d.ts +23 -0
  324. package/lib/browser/userMap/userStatsMap.d.ts +22 -0
  325. package/lib/browser/userMap/userStatsMap.js +22 -0
  326. package/lib/browser/userName.d.ts +16 -0
  327. package/lib/browser/userName.js +16 -0
  328. package/lib/browser/userStats.d.ts +28 -1
  329. package/lib/browser/userStats.js +28 -1
  330. package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
  331. package/lib/browser/util/TransactionConfirmationManager.js +33 -0
  332. package/lib/browser/util/chainClock.d.ts +24 -0
  333. package/lib/browser/util/chainClock.js +20 -0
  334. package/lib/browser/util/computeUnits.d.ts +32 -0
  335. package/lib/browser/util/computeUnits.js +32 -0
  336. package/lib/browser/util/digest.d.ts +17 -0
  337. package/lib/browser/util/digest.js +17 -0
  338. package/lib/browser/util/ed25519Utils.d.ts +12 -2
  339. package/lib/browser/util/ed25519Utils.js +12 -2
  340. package/lib/browser/util/promiseTimeout.d.ts +9 -0
  341. package/lib/browser/util/promiseTimeout.js +9 -0
  342. package/lib/browser/velocityClient.d.ts +3323 -216
  343. package/lib/browser/velocityClient.js +3428 -249
  344. package/lib/browser/wallet.d.ts +37 -0
  345. package/lib/browser/wallet.js +37 -0
  346. package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
  347. package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
  348. package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
  349. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
  350. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
  351. package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
  352. package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
  353. package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
  354. package/lib/node/accounts/bulkAccountLoader.js +51 -0
  355. package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
  356. package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
  357. package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
  358. package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
  359. package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
  360. package/lib/node/accounts/bulkUserSubscription.js +8 -2
  361. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
  362. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
  363. package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
  364. package/lib/node/accounts/fetch.d.ts +59 -2
  365. package/lib/node/accounts/fetch.d.ts.map +1 -1
  366. package/lib/node/accounts/fetch.js +57 -2
  367. package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
  368. package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
  369. package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
  370. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
  371. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  372. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
  373. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
  374. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
  375. package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
  376. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
  377. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
  378. package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
  379. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
  380. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
  381. package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
  382. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
  383. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
  384. package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
  385. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
  386. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
  387. package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
  388. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
  389. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
  390. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
  391. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
  392. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  393. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
  394. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
  395. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
  396. package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
  397. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
  398. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
  399. package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
  400. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
  401. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
  402. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
  403. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
  404. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  405. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
  406. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
  407. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
  408. package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
  409. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
  410. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
  411. package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
  412. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
  413. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
  414. package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
  415. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
  416. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
  417. package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
  418. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
  419. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
  420. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
  421. package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
  422. package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
  423. package/lib/node/accounts/testBulkAccountLoader.js +8 -0
  424. package/lib/node/accounts/types.d.ts +149 -0
  425. package/lib/node/accounts/types.d.ts.map +1 -1
  426. package/lib/node/accounts/types.js +13 -0
  427. package/lib/node/accounts/utils.d.ts +18 -0
  428. package/lib/node/accounts/utils.d.ts.map +1 -1
  429. package/lib/node/accounts/utils.js +32 -16
  430. package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
  431. package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
  432. package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
  433. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
  434. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
  435. package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
  436. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
  437. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  438. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
  439. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
  440. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
  441. package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
  442. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
  443. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
  444. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
  445. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
  446. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
  447. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
  448. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
  449. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
  450. package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
  451. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  452. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
  453. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
  454. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
  455. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
  456. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
  457. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
  458. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  459. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
  460. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
  461. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
  462. package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
  463. package/lib/node/addresses/marketAddresses.d.ts +10 -0
  464. package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
  465. package/lib/node/addresses/marketAddresses.js +10 -0
  466. package/lib/node/addresses/pda.d.ts +214 -2
  467. package/lib/node/addresses/pda.d.ts.map +1 -1
  468. package/lib/node/addresses/pda.js +217 -5
  469. package/lib/node/adminClient.d.ts +2139 -5
  470. package/lib/node/adminClient.d.ts.map +1 -1
  471. package/lib/node/adminClient.js +2173 -11
  472. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
  473. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
  474. package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
  475. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
  476. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
  477. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
  478. package/lib/node/auctionSubscriber/index.d.ts +6 -0
  479. package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
  480. package/lib/node/auctionSubscriber/index.js +6 -0
  481. package/lib/node/auctionSubscriber/types.d.ts +7 -0
  482. package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
  483. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
  484. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
  485. package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
  486. package/lib/node/blockhashSubscriber/index.d.ts +5 -0
  487. package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
  488. package/lib/node/blockhashSubscriber/index.js +5 -0
  489. package/lib/node/blockhashSubscriber/types.d.ts +5 -0
  490. package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
  491. package/lib/node/clock/clockSubscriber.d.ts +24 -0
  492. package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
  493. package/lib/node/clock/clockSubscriber.js +22 -0
  494. package/lib/node/config.d.ts +58 -4
  495. package/lib/node/config.d.ts.map +1 -1
  496. package/lib/node/config.js +88 -21
  497. package/lib/node/constants/numericConstants.d.ts +67 -0
  498. package/lib/node/constants/numericConstants.d.ts.map +1 -1
  499. package/lib/node/constants/numericConstants.js +68 -1
  500. package/lib/node/constants/perpMarkets.d.ts +10 -0
  501. package/lib/node/constants/perpMarkets.d.ts.map +1 -1
  502. package/lib/node/constants/perpMarkets.js +40 -908
  503. package/lib/node/constants/spotMarkets.d.ts +13 -0
  504. package/lib/node/constants/spotMarkets.d.ts.map +1 -1
  505. package/lib/node/constants/spotMarkets.js +16 -742
  506. package/lib/node/constants/txConstants.d.ts +1 -0
  507. package/lib/node/constants/txConstants.d.ts.map +1 -1
  508. package/lib/node/constants/txConstants.js +1 -0
  509. package/lib/node/core/VelocityCore.d.ts +285 -8
  510. package/lib/node/core/VelocityCore.d.ts.map +1 -1
  511. package/lib/node/core/VelocityCore.js +281 -8
  512. package/lib/node/core/instructions/deposit.d.ts +22 -0
  513. package/lib/node/core/instructions/deposit.d.ts.map +1 -1
  514. package/lib/node/core/instructions/deposit.js +22 -0
  515. package/lib/node/core/instructions/fill.d.ts +17 -0
  516. package/lib/node/core/instructions/fill.d.ts.map +1 -1
  517. package/lib/node/core/instructions/fill.js +17 -0
  518. package/lib/node/core/instructions/funding.d.ts +12 -0
  519. package/lib/node/core/instructions/funding.d.ts.map +1 -1
  520. package/lib/node/core/instructions/funding.js +12 -0
  521. package/lib/node/core/instructions/liquidation.d.ts +18 -0
  522. package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
  523. package/lib/node/core/instructions/liquidation.js +18 -0
  524. package/lib/node/core/instructions/orders.d.ts +28 -0
  525. package/lib/node/core/instructions/orders.d.ts.map +1 -1
  526. package/lib/node/core/instructions/orders.js +28 -0
  527. package/lib/node/core/instructions/perpOrders.d.ts +106 -0
  528. package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
  529. package/lib/node/core/instructions/perpOrders.js +106 -0
  530. package/lib/node/core/instructions/settlement.d.ts +14 -0
  531. package/lib/node/core/instructions/settlement.d.ts.map +1 -1
  532. package/lib/node/core/instructions/settlement.js +14 -0
  533. package/lib/node/core/instructions/trigger.d.ts +15 -0
  534. package/lib/node/core/instructions/trigger.d.ts.map +1 -1
  535. package/lib/node/core/instructions/trigger.js +15 -0
  536. package/lib/node/core/instructions/withdraw.d.ts +21 -0
  537. package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
  538. package/lib/node/core/instructions/withdraw.js +21 -0
  539. package/lib/node/core/remainingAccounts.d.ts +47 -3
  540. package/lib/node/core/remainingAccounts.d.ts.map +1 -1
  541. package/lib/node/core/remainingAccounts.js +20 -0
  542. package/lib/node/core/signedMsg.d.ts +38 -0
  543. package/lib/node/core/signedMsg.d.ts.map +1 -1
  544. package/lib/node/core/signedMsg.js +33 -0
  545. package/lib/node/decode/customCoder.d.ts +39 -3
  546. package/lib/node/decode/customCoder.d.ts.map +1 -1
  547. package/lib/node/decode/customCoder.js +45 -3
  548. package/lib/node/decode/user.d.ts +22 -0
  549. package/lib/node/decode/user.d.ts.map +1 -1
  550. package/lib/node/decode/user.js +22 -0
  551. package/lib/node/dlob/DLOB.d.ts +502 -53
  552. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  553. package/lib/node/dlob/DLOB.js +540 -98
  554. package/lib/node/dlob/DLOBNode.d.ts +86 -4
  555. package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
  556. package/lib/node/dlob/DLOBNode.js +37 -4
  557. package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
  558. package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
  559. package/lib/node/dlob/DLOBSubscriber.js +42 -12
  560. package/lib/node/dlob/NodeList.d.ts +69 -0
  561. package/lib/node/dlob/NodeList.d.ts.map +1 -1
  562. package/lib/node/dlob/NodeList.js +66 -0
  563. package/lib/node/dlob/orderBookLevels.d.ts +106 -13
  564. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  565. package/lib/node/dlob/orderBookLevels.js +84 -14
  566. package/lib/node/dlob/types.d.ts +15 -0
  567. package/lib/node/dlob/types.d.ts.map +1 -1
  568. package/lib/node/events/eventList.d.ts +14 -0
  569. package/lib/node/events/eventList.d.ts.map +1 -1
  570. package/lib/node/events/eventList.js +14 -0
  571. package/lib/node/events/eventSubscriber.d.ts +87 -10
  572. package/lib/node/events/eventSubscriber.d.ts.map +1 -1
  573. package/lib/node/events/eventSubscriber.js +93 -8
  574. package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
  575. package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
  576. package/lib/node/events/eventsServerLogProvider.js +27 -0
  577. package/lib/node/events/fetchLogs.d.ts +31 -0
  578. package/lib/node/events/fetchLogs.d.ts.map +1 -1
  579. package/lib/node/events/fetchLogs.js +46 -1
  580. package/lib/node/events/parse.d.ts +23 -0
  581. package/lib/node/events/parse.d.ts.map +1 -1
  582. package/lib/node/events/parse.js +23 -0
  583. package/lib/node/events/pollingLogProvider.d.ts +24 -0
  584. package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
  585. package/lib/node/events/pollingLogProvider.js +24 -0
  586. package/lib/node/events/sort.d.ts +11 -0
  587. package/lib/node/events/sort.d.ts.map +1 -1
  588. package/lib/node/events/sort.js +12 -0
  589. package/lib/node/events/txEventCache.d.ts +13 -3
  590. package/lib/node/events/txEventCache.d.ts.map +1 -1
  591. package/lib/node/events/txEventCache.js +19 -7
  592. package/lib/node/events/types.d.ts +118 -2
  593. package/lib/node/events/types.d.ts.map +1 -1
  594. package/lib/node/events/types.js +11 -0
  595. package/lib/node/events/webSocketLogProvider.d.ts +23 -0
  596. package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
  597. package/lib/node/events/webSocketLogProvider.js +28 -0
  598. package/lib/node/factory/oracleClient.js +2 -2
  599. package/lib/node/idl/velocity.d.ts +50 -1
  600. package/lib/node/idl/velocity.d.ts.map +1 -1
  601. package/lib/node/idl/velocity.json +50 -1
  602. package/lib/node/keypair.d.ts +8 -0
  603. package/lib/node/keypair.d.ts.map +1 -1
  604. package/lib/node/keypair.js +8 -0
  605. package/lib/node/marginCalculation.d.ts +134 -2
  606. package/lib/node/marginCalculation.d.ts.map +1 -1
  607. package/lib/node/marginCalculation.js +121 -0
  608. package/lib/node/math/amm.d.ts +348 -29
  609. package/lib/node/math/amm.d.ts.map +1 -1
  610. package/lib/node/math/amm.js +310 -32
  611. package/lib/node/math/auction.d.ts +95 -19
  612. package/lib/node/math/auction.d.ts.map +1 -1
  613. package/lib/node/math/auction.js +118 -28
  614. package/lib/node/math/bankruptcy.d.ts +46 -0
  615. package/lib/node/math/bankruptcy.d.ts.map +1 -1
  616. package/lib/node/math/bankruptcy.js +89 -1
  617. package/lib/node/math/builder.d.ts +64 -8
  618. package/lib/node/math/builder.d.ts.map +1 -1
  619. package/lib/node/math/builder.js +71 -9
  620. package/lib/node/math/conversion.d.ts +21 -0
  621. package/lib/node/math/conversion.d.ts.map +1 -1
  622. package/lib/node/math/conversion.js +21 -0
  623. package/lib/node/math/exchangeStatus.d.ts +92 -0
  624. package/lib/node/math/exchangeStatus.d.ts.map +1 -1
  625. package/lib/node/math/exchangeStatus.js +111 -1
  626. package/lib/node/math/funding.d.ts +57 -20
  627. package/lib/node/math/funding.d.ts.map +1 -1
  628. package/lib/node/math/funding.js +63 -23
  629. package/lib/node/math/insurance.d.ts +62 -0
  630. package/lib/node/math/insurance.d.ts.map +1 -1
  631. package/lib/node/math/insurance.js +62 -0
  632. package/lib/node/math/liquidation.d.ts +127 -11
  633. package/lib/node/math/liquidation.d.ts.map +1 -1
  634. package/lib/node/math/liquidation.js +182 -19
  635. package/lib/node/math/margin.d.ts +79 -13
  636. package/lib/node/math/margin.d.ts.map +1 -1
  637. package/lib/node/math/margin.js +80 -14
  638. package/lib/node/math/market.d.ts +135 -15
  639. package/lib/node/math/market.d.ts.map +1 -1
  640. package/lib/node/math/market.js +145 -17
  641. package/lib/node/math/oracles.d.ts +113 -0
  642. package/lib/node/math/oracles.d.ts.map +1 -1
  643. package/lib/node/math/oracles.js +118 -1
  644. package/lib/node/math/orders.d.ts +115 -7
  645. package/lib/node/math/orders.d.ts.map +1 -1
  646. package/lib/node/math/orders.js +133 -18
  647. package/lib/node/math/position.d.ts +80 -33
  648. package/lib/node/math/position.d.ts.map +1 -1
  649. package/lib/node/math/position.js +80 -33
  650. package/lib/node/math/repeg.d.ts +48 -10
  651. package/lib/node/math/repeg.d.ts.map +1 -1
  652. package/lib/node/math/repeg.js +48 -10
  653. package/lib/node/math/spotBalance.d.ts +200 -5
  654. package/lib/node/math/spotBalance.d.ts.map +1 -1
  655. package/lib/node/math/spotBalance.js +239 -10
  656. package/lib/node/math/spotMarket.d.ts +36 -3
  657. package/lib/node/math/spotMarket.d.ts.map +1 -1
  658. package/lib/node/math/spotMarket.js +36 -3
  659. package/lib/node/math/spotPosition.d.ts +72 -0
  660. package/lib/node/math/spotPosition.d.ts.map +1 -1
  661. package/lib/node/math/spotPosition.js +62 -0
  662. package/lib/node/math/state.d.ts +31 -0
  663. package/lib/node/math/state.d.ts.map +1 -1
  664. package/lib/node/math/state.js +32 -1
  665. package/lib/node/math/superStake.d.ts +126 -2
  666. package/lib/node/math/superStake.d.ts.map +1 -1
  667. package/lib/node/math/superStake.js +123 -3
  668. package/lib/node/math/tiers.d.ts +29 -0
  669. package/lib/node/math/tiers.d.ts.map +1 -1
  670. package/lib/node/math/tiers.js +29 -0
  671. package/lib/node/math/trade.d.ts +102 -51
  672. package/lib/node/math/trade.d.ts.map +1 -1
  673. package/lib/node/math/trade.js +101 -55
  674. package/lib/node/math/utils.d.ts +71 -9
  675. package/lib/node/math/utils.d.ts.map +1 -1
  676. package/lib/node/math/utils.js +71 -9
  677. package/lib/node/memcmp.d.ts +94 -0
  678. package/lib/node/memcmp.d.ts.map +1 -1
  679. package/lib/node/memcmp.js +129 -7
  680. package/lib/node/oracles/oracleClientCache.d.ts +16 -0
  681. package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
  682. package/lib/node/oracles/oracleClientCache.js +16 -0
  683. package/lib/node/oracles/oracleId.d.ts +31 -0
  684. package/lib/node/oracles/oracleId.d.ts.map +1 -1
  685. package/lib/node/oracles/oracleId.js +39 -8
  686. package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
  687. package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
  688. package/lib/node/oracles/prelaunchOracleClient.js +20 -0
  689. package/lib/node/oracles/pythClient.d.ts +31 -0
  690. package/lib/node/oracles/pythClient.d.ts.map +1 -1
  691. package/lib/node/oracles/pythClient.js +32 -1
  692. package/lib/node/oracles/pythLazerClient.d.ts +34 -0
  693. package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
  694. package/lib/node/oracles/pythLazerClient.js +35 -1
  695. package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
  696. package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
  697. package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
  698. package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
  699. package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
  700. package/lib/node/oracles/strictOraclePrice.js +21 -0
  701. package/lib/node/oracles/types.d.ts +45 -0
  702. package/lib/node/oracles/types.d.ts.map +1 -1
  703. package/lib/node/oracles/utils.d.ts +20 -0
  704. package/lib/node/oracles/utils.d.ts.map +1 -1
  705. package/lib/node/oracles/utils.js +20 -0
  706. package/lib/node/orderParams.d.ts +42 -4
  707. package/lib/node/orderParams.d.ts.map +1 -1
  708. package/lib/node/orderParams.js +42 -4
  709. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
  710. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  711. package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
  712. package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
  713. package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
  714. package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
  715. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
  716. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
  717. package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
  718. package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
  719. package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
  720. package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
  721. package/lib/node/orderSubscriber/types.d.ts +9 -0
  722. package/lib/node/orderSubscriber/types.d.ts.map +1 -1
  723. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
  724. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
  725. package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
  726. package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
  727. package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
  728. package/lib/node/priorityFee/averageStrategy.js +1 -0
  729. package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
  730. package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
  731. package/lib/node/priorityFee/ewmaStrategy.js +10 -0
  732. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
  733. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
  734. package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
  735. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
  736. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
  737. package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
  738. package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
  739. package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
  740. package/lib/node/priorityFee/maxStrategy.js +1 -0
  741. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
  742. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
  743. package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
  744. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
  745. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
  746. package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
  747. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
  748. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
  749. package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
  750. package/lib/node/priorityFee/types.d.ts +32 -0
  751. package/lib/node/priorityFee/types.d.ts.map +1 -1
  752. package/lib/node/priorityFee/types.js +5 -0
  753. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
  754. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
  755. package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
  756. package/lib/node/slot/SlotSubscriber.d.ts +18 -0
  757. package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
  758. package/lib/node/slot/SlotSubscriber.js +16 -0
  759. package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
  760. package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
  761. package/lib/node/slot/SlothashSubscriber.js +25 -1
  762. package/lib/node/swift/swiftOrderSubscriber.js +2 -2
  763. package/lib/node/tokenFaucet.d.ts +2 -2
  764. package/lib/node/tokenFaucet.d.ts.map +1 -1
  765. package/lib/node/tokenFaucet.js +11 -4
  766. package/lib/node/tx/baseTxSender.d.ts +163 -0
  767. package/lib/node/tx/baseTxSender.d.ts.map +1 -1
  768. package/lib/node/tx/baseTxSender.js +174 -6
  769. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
  770. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
  771. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
  772. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
  773. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
  774. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
  775. package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
  776. package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
  777. package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
  778. package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
  779. package/lib/node/tx/fastSingleTxSender.js +48 -1
  780. package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
  781. package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
  782. package/lib/node/tx/forwardOnlyTxSender.js +48 -0
  783. package/lib/node/tx/reportTransactionError.d.ts +18 -6
  784. package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
  785. package/lib/node/tx/reportTransactionError.js +18 -6
  786. package/lib/node/tx/retryTxSender.d.ts +40 -0
  787. package/lib/node/tx/retryTxSender.d.ts.map +1 -1
  788. package/lib/node/tx/retryTxSender.js +39 -0
  789. package/lib/node/tx/txHandler.d.ts +146 -35
  790. package/lib/node/tx/txHandler.d.ts.map +1 -1
  791. package/lib/node/tx/txHandler.js +132 -32
  792. package/lib/node/tx/txParamProcessor.d.ts +47 -0
  793. package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
  794. package/lib/node/tx/txParamProcessor.js +47 -0
  795. package/lib/node/tx/types.d.ts +46 -0
  796. package/lib/node/tx/types.d.ts.map +1 -1
  797. package/lib/node/tx/types.js +5 -0
  798. package/lib/node/tx/utils.d.ts +26 -0
  799. package/lib/node/tx/utils.d.ts.map +1 -1
  800. package/lib/node/tx/utils.js +26 -0
  801. package/lib/node/tx/whileValidTxSender.d.ts +82 -0
  802. package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
  803. package/lib/node/tx/whileValidTxSender.js +81 -0
  804. package/lib/node/types.d.ts +786 -13
  805. package/lib/node/types.d.ts.map +1 -1
  806. package/lib/node/types.js +133 -9
  807. package/lib/node/user.d.ts +645 -84
  808. package/lib/node/user.d.ts.map +1 -1
  809. package/lib/node/user.js +779 -96
  810. package/lib/node/userMap/PollingSubscription.d.ts +10 -0
  811. package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
  812. package/lib/node/userMap/PollingSubscription.js +14 -2
  813. package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
  814. package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
  815. package/lib/node/userMap/WebsocketSubscription.js +9 -0
  816. package/lib/node/userMap/grpcSubscription.d.ts +8 -0
  817. package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
  818. package/lib/node/userMap/grpcSubscription.js +8 -0
  819. package/lib/node/userMap/referrerMap.d.ts +72 -2
  820. package/lib/node/userMap/referrerMap.d.ts.map +1 -1
  821. package/lib/node/userMap/referrerMap.js +84 -2
  822. package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
  823. package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
  824. package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
  825. package/lib/node/userMap/userMap.d.ts +81 -3
  826. package/lib/node/userMap/userMap.d.ts.map +1 -1
  827. package/lib/node/userMap/userMap.js +81 -4
  828. package/lib/node/userMap/userMapConfig.d.ts +23 -0
  829. package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
  830. package/lib/node/userMap/userStatsMap.d.ts +22 -0
  831. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  832. package/lib/node/userMap/userStatsMap.js +22 -0
  833. package/lib/node/userName.d.ts +16 -0
  834. package/lib/node/userName.d.ts.map +1 -1
  835. package/lib/node/userName.js +16 -0
  836. package/lib/node/userStats.d.ts +28 -1
  837. package/lib/node/userStats.d.ts.map +1 -1
  838. package/lib/node/userStats.js +28 -1
  839. package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
  840. package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
  841. package/lib/node/util/TransactionConfirmationManager.js +33 -0
  842. package/lib/node/util/chainClock.d.ts +24 -0
  843. package/lib/node/util/chainClock.d.ts.map +1 -1
  844. package/lib/node/util/chainClock.js +20 -0
  845. package/lib/node/util/computeUnits.d.ts +32 -0
  846. package/lib/node/util/computeUnits.d.ts.map +1 -1
  847. package/lib/node/util/computeUnits.js +32 -0
  848. package/lib/node/util/digest.d.ts +17 -0
  849. package/lib/node/util/digest.d.ts.map +1 -1
  850. package/lib/node/util/digest.js +17 -0
  851. package/lib/node/util/ed25519Utils.d.ts +12 -2
  852. package/lib/node/util/ed25519Utils.d.ts.map +1 -1
  853. package/lib/node/util/ed25519Utils.js +12 -2
  854. package/lib/node/util/promiseTimeout.d.ts +9 -0
  855. package/lib/node/util/promiseTimeout.d.ts.map +1 -1
  856. package/lib/node/util/promiseTimeout.js +9 -0
  857. package/lib/node/velocityClient.d.ts +3323 -216
  858. package/lib/node/velocityClient.d.ts.map +1 -1
  859. package/lib/node/velocityClient.js +3428 -249
  860. package/lib/node/wallet.d.ts +37 -0
  861. package/lib/node/wallet.d.ts.map +1 -1
  862. package/lib/node/wallet.js +37 -0
  863. package/package.json +2 -1
  864. package/src/accounts/basicUserAccountSubscriber.ts +18 -0
  865. package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
  866. package/src/accounts/bulkAccountLoader.ts +52 -0
  867. package/src/accounts/bulkUserStatsSubscription.ts +9 -2
  868. package/src/accounts/bulkUserSubscription.ts +8 -2
  869. package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
  870. package/src/accounts/fetch.ts +59 -2
  871. package/src/accounts/grpcAccountSubscriber.ts +30 -0
  872. package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
  873. package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
  874. package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
  875. package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
  876. package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
  877. package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
  878. package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
  879. package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
  880. package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
  881. package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
  882. package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
  883. package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
  884. package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
  885. package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
  886. package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
  887. package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
  888. package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
  889. package/src/accounts/testBulkAccountLoader.ts +8 -0
  890. package/src/accounts/types.ts +149 -0
  891. package/src/accounts/utils.ts +42 -24
  892. package/src/accounts/webSocketAccountSubscriber.ts +41 -0
  893. package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
  894. package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
  895. package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
  896. package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
  897. package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
  898. package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
  899. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
  900. package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
  901. package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
  902. package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
  903. package/src/addresses/marketAddresses.ts +10 -0
  904. package/src/addresses/pda.ts +228 -12
  905. package/src/adminClient.ts +2184 -4
  906. package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
  907. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
  908. package/src/auctionSubscriber/index.ts +6 -0
  909. package/src/auctionSubscriber/types.ts +7 -0
  910. package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
  911. package/src/blockhashSubscriber/index.ts +5 -0
  912. package/src/blockhashSubscriber/types.ts +5 -4
  913. package/src/clock/clockSubscriber.ts +24 -0
  914. package/src/config.ts +109 -22
  915. package/src/constants/numericConstants.ts +70 -0
  916. package/src/constants/perpMarkets.ts +45 -960
  917. package/src/constants/spotMarkets.ts +23 -793
  918. package/src/constants/txConstants.ts +1 -0
  919. package/src/core/VelocityCore.ts +286 -8
  920. package/src/core/instructions/deposit.ts +22 -0
  921. package/src/core/instructions/fill.ts +17 -0
  922. package/src/core/instructions/funding.ts +12 -0
  923. package/src/core/instructions/liquidation.ts +18 -0
  924. package/src/core/instructions/orders.ts +28 -0
  925. package/src/core/instructions/perpOrders.ts +106 -0
  926. package/src/core/instructions/settlement.ts +14 -0
  927. package/src/core/instructions/trigger.ts +15 -0
  928. package/src/core/instructions/withdraw.ts +21 -0
  929. package/src/core/remainingAccounts.ts +47 -3
  930. package/src/core/signedMsg.ts +38 -0
  931. package/src/decode/customCoder.ts +46 -3
  932. package/src/decode/user.ts +22 -0
  933. package/src/dlob/DLOB.ts +668 -97
  934. package/src/dlob/DLOBNode.ts +98 -6
  935. package/src/dlob/DLOBSubscriber.ts +49 -12
  936. package/src/dlob/NodeList.ts +69 -0
  937. package/src/dlob/orderBookLevels.ts +108 -14
  938. package/src/dlob/types.ts +15 -0
  939. package/src/events/eventList.ts +14 -0
  940. package/src/events/eventSubscriber.ts +100 -19
  941. package/src/events/eventsServerLogProvider.ts +28 -0
  942. package/src/events/fetchLogs.ts +52 -2
  943. package/src/events/parse.ts +23 -0
  944. package/src/events/pollingLogProvider.ts +24 -0
  945. package/src/events/sort.ts +12 -0
  946. package/src/events/txEventCache.ts +19 -7
  947. package/src/events/types.ts +131 -11
  948. package/src/events/webSocketLogProvider.ts +29 -0
  949. package/src/factory/oracleClient.ts +2 -2
  950. package/src/idl/velocity.json +50 -1
  951. package/src/idl/velocity.ts +50 -1
  952. package/src/keypair.ts +8 -0
  953. package/src/marginCalculation.ts +153 -2
  954. package/src/math/amm.ts +371 -36
  955. package/src/math/auction.ts +139 -30
  956. package/src/math/bankruptcy.ts +104 -1
  957. package/src/math/builder.ts +74 -8
  958. package/src/math/conversion.ts +21 -0
  959. package/src/math/exchangeStatus.ts +125 -0
  960. package/src/math/funding.ts +63 -23
  961. package/src/math/insurance.ts +62 -0
  962. package/src/math/liquidation.ts +227 -17
  963. package/src/math/margin.ts +80 -14
  964. package/src/math/market.ts +148 -17
  965. package/src/math/oracles.ts +124 -0
  966. package/src/math/orders.ts +144 -18
  967. package/src/math/position.ts +80 -33
  968. package/src/math/repeg.ts +48 -10
  969. package/src/math/spotBalance.ts +252 -12
  970. package/src/math/spotMarket.ts +36 -3
  971. package/src/math/spotPosition.ts +72 -0
  972. package/src/math/state.ts +32 -1
  973. package/src/math/superStake.ts +126 -3
  974. package/src/math/tiers.ts +29 -0
  975. package/src/math/trade.ts +125 -55
  976. package/src/math/utils.ts +71 -9
  977. package/src/memcmp.ts +131 -7
  978. package/src/oracles/oracleClientCache.ts +16 -0
  979. package/src/oracles/oracleId.ts +39 -6
  980. package/src/oracles/prelaunchOracleClient.ts +20 -0
  981. package/src/oracles/pythClient.ts +32 -1
  982. package/src/oracles/pythLazerClient.ts +35 -1
  983. package/src/oracles/quoteAssetOracleClient.ts +18 -0
  984. package/src/oracles/strictOraclePrice.ts +21 -0
  985. package/src/oracles/types.ts +45 -0
  986. package/src/oracles/utils.ts +20 -0
  987. package/src/orderParams.ts +42 -4
  988. package/src/orderSubscriber/OrderSubscriber.ts +74 -2
  989. package/src/orderSubscriber/PollingSubscription.ts +11 -0
  990. package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
  991. package/src/orderSubscriber/grpcSubscription.ts +16 -0
  992. package/src/orderSubscriber/types.ts +9 -0
  993. package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
  994. package/src/priorityFee/averageStrategy.ts +1 -0
  995. package/src/priorityFee/ewmaStrategy.ts +10 -0
  996. package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
  997. package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
  998. package/src/priorityFee/maxStrategy.ts +1 -0
  999. package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
  1000. package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
  1001. package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
  1002. package/src/priorityFee/types.ts +33 -15
  1003. package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
  1004. package/src/slot/SlotSubscriber.ts +18 -0
  1005. package/src/slot/SlothashSubscriber.ts +27 -1
  1006. package/src/swift/swiftOrderSubscriber.ts +2 -2
  1007. package/src/tokenFaucet.ts +10 -7
  1008. package/src/tx/baseTxSender.ts +185 -5
  1009. package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
  1010. package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
  1011. package/src/tx/blockhashFetcher/types.ts +4 -0
  1012. package/src/tx/fastSingleTxSender.ts +58 -4
  1013. package/src/tx/forwardOnlyTxSender.ts +48 -0
  1014. package/src/tx/reportTransactionError.ts +18 -6
  1015. package/src/tx/retryTxSender.ts +40 -0
  1016. package/src/tx/txHandler.ts +146 -35
  1017. package/src/tx/txParamProcessor.ts +47 -0
  1018. package/src/tx/types.ts +46 -0
  1019. package/src/tx/utils.ts +26 -0
  1020. package/src/tx/whileValidTxSender.ts +82 -0
  1021. package/src/types.ts +783 -22
  1022. package/src/user.ts +869 -110
  1023. package/src/userMap/PollingSubscription.ts +16 -2
  1024. package/src/userMap/WebsocketSubscription.ts +9 -0
  1025. package/src/userMap/grpcSubscription.ts +8 -0
  1026. package/src/userMap/referrerMap.ts +92 -3
  1027. package/src/userMap/revenueShareEscrowMap.ts +38 -11
  1028. package/src/userMap/userMap.ts +82 -4
  1029. package/src/userMap/userMapConfig.ts +23 -10
  1030. package/src/userMap/userStatsMap.ts +22 -0
  1031. package/src/userName.ts +16 -0
  1032. package/src/userStats.ts +28 -1
  1033. package/src/util/TransactionConfirmationManager.ts +33 -0
  1034. package/src/util/chainClock.ts +24 -0
  1035. package/src/util/computeUnits.ts +32 -0
  1036. package/src/util/digest.ts +17 -0
  1037. package/src/util/ed25519Utils.ts +12 -2
  1038. package/src/util/promiseTimeout.ts +9 -0
  1039. package/src/velocityClient.ts +3456 -254
  1040. package/src/wallet.ts +37 -0
  1041. package/tests/VelocityCore/builder_escrow.test.ts +121 -0
  1042. package/tests/amm/test.ts +102 -0
  1043. package/tests/builder/builderFee.test.ts +42 -0
  1044. package/tests/dlob/helpers.ts +1 -0
  1045. package/tests/dlob/tickSizeStandardization.ts +545 -0
  1046. package/tests/exchangeStatus/test.ts +45 -0
  1047. package/tests/liquidation/test.ts +125 -0
  1048. package/tests/oracles/mmOracleGate.test.ts +379 -0
  1049. package/tests/oracles/pythPegSnap.test.ts +76 -0
  1050. package/tests/sdkParity/enumParity.test.ts +84 -0
  1051. package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
  1052. package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
  1053. package/tests/spot/test.ts +55 -0
  1054. package/tests/user/bankruptcy.ts +165 -0
  1055. package/tests/user/feeAndWithdrawLimits.ts +284 -0
  1056. package/tests/user/getMarginCalculation.ts +226 -1
  1057. package/tests/user/test.ts +8 -4
@@ -5,9 +5,31 @@ type TransactionBuildingProps = {
5
5
  };
6
6
  /**
7
7
  * This class is responsible for running through a "processing" pipeline for a base transaction, to adjust the standard transaction parameters based on a given configuration.
8
+ *
9
+ * Currently the only pipeline step is simulation-based compute unit resolution: build the
10
+ * transaction with a max compute-unit budget, simulate it, and replace the compute-unit limit
11
+ * (and optionally the compute-unit price) with values derived from actual simulated usage.
8
12
  */
9
13
  export declare class TransactionParamProcessor {
10
14
  private static getComputeUnitsFromSim;
15
+ /**
16
+ * Determines a compute-unit limit to use for a transaction by simulating it (or reusing a
17
+ * pre-supplied simulation), applying `bufferMultiplier` to the actually-consumed units, and
18
+ * clamping the result to at most `MAX_COMPUTE_UNITS` (1,400,000). Simulation runs with
19
+ * `replaceRecentBlockhash: true` to avoid spurious `blockHashNotFound` failures from an
20
+ * already-stale blockhash on the transaction being sized. Never throws: any error (including
21
+ * a simulation error result) is caught and reported via the `success: false` return.
22
+ * @param tx - Transaction to simulate (ignored if `simulatedTx` is supplied instead).
23
+ * @param connection - RPC connection used to simulate, if `simulatedTx` isn't provided.
24
+ * @param bufferMultiplier - Multiplier applied to the raw consumed compute units before
25
+ * clamping (e.g. `1.2` for a 20% buffer) — mandatory to force callers to account for
26
+ * simulated CU counts being an imperfect predictor of the real on-chain cost.
27
+ * @param lowerBoundCu - If provided, the result is floored at `min(lowerBoundCu, MAX_COMPUTE_UNITS)`.
28
+ * @param simulatedTx - A pre-computed simulation result to reuse instead of simulating `tx` again.
29
+ * @returns `{ success: true, computeUnits }` with the buffered/clamped compute-unit limit on
30
+ * success, or `{ success: false, computeUnits: undefined }` if simulation failed or returned no
31
+ * `unitsConsumed`.
32
+ */
11
33
  static getTxSimComputeUnits(tx: VersionedTransaction, connection: Connection, bufferMultiplier: number, // Making this a mandatory param to force the user to remember that simulated CU's can be inaccurate and a buffer should be applied
12
34
  lowerBoundCu?: number, simulatedTx?: SimulatedTransactionResponse): Promise<{
13
35
  success: true;
@@ -16,6 +38,31 @@ export declare class TransactionParamProcessor {
16
38
  success: false;
17
39
  computeUnits: undefined;
18
40
  }>;
41
+ /**
42
+ * Runs the configured processing steps against a base set of tx params and returns the
43
+ * adjusted params. If `processConfig` is empty/absent, returns `baseTxParams` unchanged
44
+ * without building or simulating anything.
45
+ *
46
+ * When `processConfig.useSimulatedComputeUnits` is set: rebuilds the transaction (via
47
+ * `txBuilder`) with `computeUnits` forced to `MAX_COMPUTE_UNITS` so simulation isn't
48
+ * constrained by an under-sized limit, simulates it, and — on success — replaces
49
+ * `computeUnits` with the result of `getTxSimComputeUnits` (failure leaves the original
50
+ * `baseTxParams.computeUnits` untouched, it does not throw).
51
+ *
52
+ * When additionally `processConfig.useSimulatedComputeUnitsForCUPriceCalculation` is set:
53
+ * derives `computeUnitsPrice` from the simulated `computeUnits` via
54
+ * `processConfig.getCUPriceFromComputeUnits`.
55
+ * @param props.baseTxParams - Starting compute-unit limit/price to adjust.
56
+ * @param props.processConfig - Which processing steps to run (see `ProcessingTxParams`).
57
+ * @param props.processParams.connection - RPC connection used for simulation.
58
+ * @param props.processParams.simulatedTx - Pre-computed simulation result to reuse instead of simulating again.
59
+ * @param props.txBuilder - Builds a `VersionedTransaction` from a given `BaseTxParams`, used to
60
+ * produce the transaction that gets simulated.
61
+ * @returns The adjusted `BaseTxParams`.
62
+ * @throws Error if `useSimulatedComputeUnitsForCUPriceCalculation` is set without
63
+ * `useSimulatedComputeUnits`, without `getCUPriceFromComputeUnits`, or if the simulated compute
64
+ * units are unavailable (simulation failed).
65
+ */
19
66
  static process(props: {
20
67
  baseTxParams: BaseTxParams;
21
68
  processConfig: ProcessingTxParams;
@@ -1 +1 @@
1
- {"version":3,"file":"txParamProcessor.d.ts","sourceRoot":"","sources":["../../../src/tx/txParamProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,UAAU,EAEV,4BAA4B,EAC5B,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAO5D,KAAK,wBAAwB,GAAG;IAC/B,QAAQ,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,qBAAa,yBAAyB;mBAChB,sBAAsB;WAUvB,oBAAoB,CACvC,EAAE,EAAE,oBAAoB,EACxB,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,MAAM,EAAE,mIAAmI;IAC7J,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,4BAA4B,GACxC,OAAO,CACP;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GACvC;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,YAAY,EAAE,SAAS,CAAA;KAAE,CAC7C;WAuDY,OAAO,CAAC,KAAK,EAAE;QAC3B,YAAY,EAAE,YAAY,CAAC;QAC3B,aAAa,EAAE,kBAAkB,CAAC;QAClC,aAAa,EAAE;YACd,UAAU,EAAE,UAAU,CAAC;YACvB,WAAW,CAAC,EAAE,4BAA4B,CAAC;SAC3C,CAAC;QACF,SAAS,EAAE,CACV,oBAAoB,EAAE,wBAAwB,KAC1C,OAAO,CAAC,oBAAoB,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,YAAY,CAAC;CAwEzB"}
1
+ {"version":3,"file":"txParamProcessor.d.ts","sourceRoot":"","sources":["../../../src/tx/txParamProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,UAAU,EAEV,4BAA4B,EAC5B,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAO5D,KAAK,wBAAwB,GAAG;IAC/B,QAAQ,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,yBAAyB;mBAChB,sBAAsB;IAU3C;;;;;;;;;;;;;;;;;OAiBG;WACiB,oBAAoB,CACvC,EAAE,EAAE,oBAAoB,EACxB,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,MAAM,EAAE,mIAAmI;IAC7J,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,4BAA4B,GACxC,OAAO,CACP;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GACvC;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,YAAY,EAAE,SAAS,CAAA;KAAE,CAC7C;IAuDD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;WACU,OAAO,CAAC,KAAK,EAAE;QAC3B,YAAY,EAAE,YAAY,CAAC;QAC3B,aAAa,EAAE,kBAAkB,CAAC;QAClC,aAAa,EAAE;YACd,UAAU,EAAE,UAAU,CAAC;YACvB,WAAW,CAAC,EAAE,4BAA4B,CAAC;SAC3C,CAAC;QACF,SAAS,EAAE,CACV,oBAAoB,EAAE,wBAAwB,KAC1C,OAAO,CAAC,oBAAoB,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,YAAY,CAAC;CAwEzB"}
@@ -6,6 +6,10 @@ const MAX_COMPUTE_UNITS = 1400000;
6
6
  const TEST_SIMS_ALWAYS_FAIL = false;
7
7
  /**
8
8
  * This class is responsible for running through a "processing" pipeline for a base transaction, to adjust the standard transaction parameters based on a given configuration.
9
+ *
10
+ * Currently the only pipeline step is simulation-based compute unit resolution: build the
11
+ * transaction with a max compute-unit budget, simulate it, and replace the compute-unit limit
12
+ * (and optionally the compute-unit price) with values derived from actual simulated usage.
9
13
  */
10
14
  class TransactionParamProcessor {
11
15
  static async getComputeUnitsFromSim(txSim) {
@@ -15,6 +19,24 @@ class TransactionParamProcessor {
15
19
  }
16
20
  return undefined;
17
21
  }
22
+ /**
23
+ * Determines a compute-unit limit to use for a transaction by simulating it (or reusing a
24
+ * pre-supplied simulation), applying `bufferMultiplier` to the actually-consumed units, and
25
+ * clamping the result to at most `MAX_COMPUTE_UNITS` (1,400,000). Simulation runs with
26
+ * `replaceRecentBlockhash: true` to avoid spurious `blockHashNotFound` failures from an
27
+ * already-stale blockhash on the transaction being sized. Never throws: any error (including
28
+ * a simulation error result) is caught and reported via the `success: false` return.
29
+ * @param tx - Transaction to simulate (ignored if `simulatedTx` is supplied instead).
30
+ * @param connection - RPC connection used to simulate, if `simulatedTx` isn't provided.
31
+ * @param bufferMultiplier - Multiplier applied to the raw consumed compute units before
32
+ * clamping (e.g. `1.2` for a 20% buffer) — mandatory to force callers to account for
33
+ * simulated CU counts being an imperfect predictor of the real on-chain cost.
34
+ * @param lowerBoundCu - If provided, the result is floored at `min(lowerBoundCu, MAX_COMPUTE_UNITS)`.
35
+ * @param simulatedTx - A pre-computed simulation result to reuse instead of simulating `tx` again.
36
+ * @returns `{ success: true, computeUnits }` with the buffered/clamped compute-unit limit on
37
+ * success, or `{ success: false, computeUnits: undefined }` if simulation failed or returned no
38
+ * `unitsConsumed`.
39
+ */
18
40
  static async getTxSimComputeUnits(tx, connection, bufferMultiplier, // Making this a mandatory param to force the user to remember that simulated CU's can be inaccurate and a buffer should be applied
19
41
  lowerBoundCu, simulatedTx) {
20
42
  var _a, _b;
@@ -54,6 +76,31 @@ class TransactionParamProcessor {
54
76
  };
55
77
  }
56
78
  }
79
+ /**
80
+ * Runs the configured processing steps against a base set of tx params and returns the
81
+ * adjusted params. If `processConfig` is empty/absent, returns `baseTxParams` unchanged
82
+ * without building or simulating anything.
83
+ *
84
+ * When `processConfig.useSimulatedComputeUnits` is set: rebuilds the transaction (via
85
+ * `txBuilder`) with `computeUnits` forced to `MAX_COMPUTE_UNITS` so simulation isn't
86
+ * constrained by an under-sized limit, simulates it, and — on success — replaces
87
+ * `computeUnits` with the result of `getTxSimComputeUnits` (failure leaves the original
88
+ * `baseTxParams.computeUnits` untouched, it does not throw).
89
+ *
90
+ * When additionally `processConfig.useSimulatedComputeUnitsForCUPriceCalculation` is set:
91
+ * derives `computeUnitsPrice` from the simulated `computeUnits` via
92
+ * `processConfig.getCUPriceFromComputeUnits`.
93
+ * @param props.baseTxParams - Starting compute-unit limit/price to adjust.
94
+ * @param props.processConfig - Which processing steps to run (see `ProcessingTxParams`).
95
+ * @param props.processParams.connection - RPC connection used for simulation.
96
+ * @param props.processParams.simulatedTx - Pre-computed simulation result to reuse instead of simulating again.
97
+ * @param props.txBuilder - Builds a `VersionedTransaction` from a given `BaseTxParams`, used to
98
+ * produce the transaction that gets simulated.
99
+ * @returns The adjusted `BaseTxParams`.
100
+ * @throws Error if `useSimulatedComputeUnitsForCUPriceCalculation` is set without
101
+ * `useSimulatedComputeUnits`, without `getCUPriceFromComputeUnits`, or if the simulated compute
102
+ * units are unavailable (simulation failed).
103
+ */
57
104
  static async process(props) {
58
105
  var _a;
59
106
  // # Exit early if no process config is provided
@@ -2,26 +2,72 @@
2
2
  /// <reference types="node" />
3
3
  import { AddressLookupTableAccount, BlockhashWithExpiryBlockHeight, ConfirmOptions, Signer, Transaction, TransactionInstruction, TransactionSignature, VersionedTransaction } from '@solana/web3.js';
4
4
  import { IWallet } from '../types';
5
+ /** How a `TxSender` implementation waits for a transaction to confirm. */
5
6
  export declare enum ConfirmationStrategy {
7
+ /** Confirm via an RPC websocket `onSignature` subscription only. */
6
8
  WebSocket = "websocket",
9
+ /** Confirm by polling `getSignatureStatuses` only. */
7
10
  Polling = "polling",
11
+ /** Race a websocket subscription against polling and resolve on whichever confirms first. */
8
12
  Combo = "combo"
9
13
  }
14
+ /** A landed transaction's signature plus the slot it was confirmed at (`undefined` if the slot wasn't available). */
10
15
  export type TxSigAndSlot = {
11
16
  txSig: TransactionSignature;
12
17
  slot: number | undefined;
13
18
  };
19
+ /** Common interface implemented by every transaction-sending strategy (`BaseTxSender` and its subclasses). */
14
20
  export interface TxSender {
15
21
  wallet: IWallet;
22
+ /**
23
+ * Signs (unless `preSigned`), sends, and confirms a legacy `Transaction`.
24
+ * @param tx - Transaction to send.
25
+ * @param additionalSigners - Extra signers to co-sign alongside the wallet.
26
+ * @param opts - Confirmation options overriding the sender's defaults.
27
+ * @param preSigned - If `true`, skip wallet signing (the transaction is already fully signed).
28
+ * @returns The landed transaction's signature and confirmation slot.
29
+ */
16
30
  send(tx: Transaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions, preSigned?: boolean): Promise<TxSigAndSlot>;
31
+ /**
32
+ * Signs (unless `preSigned`), sends, and confirms a `VersionedTransaction`.
33
+ * @param tx - Transaction to send.
34
+ * @param additionalSigners - Extra signers to co-sign alongside the wallet.
35
+ * @param opts - Confirmation options overriding the sender's defaults.
36
+ * @param preSigned - If `true`, skip wallet signing (the transaction is already fully signed).
37
+ * @returns The landed transaction's signature and confirmation slot.
38
+ */
17
39
  sendVersionedTransaction(tx: VersionedTransaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions, preSigned?: boolean): Promise<TxSigAndSlot>;
40
+ /**
41
+ * Builds (but does not send or sign) an unsigned `VersionedTransaction` from raw instructions.
42
+ * @param ixs - Instructions to include, in order.
43
+ * @param lookupTableAccounts - Address lookup tables to compile the message against.
44
+ * @param additionalSigners - Unused by `BaseTxSender` (signing happens at send time, e.g. in `sendVersionedTransaction`).
45
+ * @param opts - Unused by `BaseTxSender`.
46
+ * @param blockhash - Blockhash to compile the message with; if omitted, the sender fetches a current one.
47
+ * @returns The compiled, unsigned `VersionedTransaction`, not yet sent.
48
+ */
18
49
  getVersionedTransaction(ixs: TransactionInstruction[], lookupTableAccounts: AddressLookupTableAccount[], additionalSigners?: Array<Signer>, opts?: ConfirmOptions, blockhash?: BlockhashWithExpiryBlockHeight): Promise<VersionedTransaction>;
50
+ /**
51
+ * Sends an already-serialized, already-signed transaction and confirms it.
52
+ * @param rawTransaction - Wire-format serialized transaction bytes.
53
+ * @param opts - Confirmation options.
54
+ * @returns The landed transaction's signature and confirmation slot.
55
+ */
19
56
  sendRawTransaction(rawTransaction: Buffer | Uint8Array, opts: ConfirmOptions): Promise<TxSigAndSlot>;
57
+ /**
58
+ * Simulates a transaction against the cluster without sending it.
59
+ * @param tx - Transaction to simulate.
60
+ * @returns `true` if the simulation succeeded (no error), `false` otherwise.
61
+ */
20
62
  simulateTransaction(tx: VersionedTransaction): Promise<boolean>;
63
+ /** Number of transactions sent by this sender that timed out waiting for confirmation. */
21
64
  getTimeoutCount(): number;
65
+ /** Multiplier this sender currently recommends applying to a base priority fee, derived from recent land/timeout behavior. */
22
66
  getSuggestedPriorityFeeMultiplier(): number;
67
+ /** Fraction (0-1) of recently sent transactions that landed successfully. */
23
68
  getTxLandRate(): number;
24
69
  }
70
+ /** Error thrown by tx senders when a transaction fails to send or confirm, carrying a stable numeric `code` (see `constants/txConstants`) alongside the message. */
25
71
  export declare class TxSendError extends Error {
26
72
  message: string;
27
73
  code: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tx/types.ts"],"names":[],"mappings":";;AAAA,OAAO,EACN,yBAAyB,EACzB,8BAA8B,EAC9B,cAAc,EACd,MAAM,EACN,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,oBAAY,oBAAoB;IAC/B,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,KAAK,UAAU;CACf;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,QAAQ;IACxB,MAAM,EAAE,OAAO,CAAC;IAEhB,IAAI,CACH,EAAE,EAAE,WAAW,EACf,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,EAAE,cAAc,EACrB,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB,wBAAwB,CACvB,EAAE,EAAE,oBAAoB,EACxB,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,EAAE,cAAc,EACrB,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB,uBAAuB,CACtB,GAAG,EAAE,sBAAsB,EAAE,EAC7B,mBAAmB,EAAE,yBAAyB,EAAE,EAChD,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,EAAE,cAAc,EACrB,SAAS,CAAC,EAAE,8BAA8B,GACxC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,kBAAkB,CACjB,cAAc,EAAE,MAAM,GAAG,UAAU,EACnC,IAAI,EAAE,cAAc,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB,mBAAmB,CAAC,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhE,eAAe,IAAI,MAAM,CAAC;IAC1B,iCAAiC,IAAI,MAAM,CAAC;IAC5C,aAAa,IAAI,MAAM,CAAC;CACxB;AAED,qBAAa,WAAY,SAAQ,KAAK;IAE7B,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;gBADZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM;CAOpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tx/types.ts"],"names":[],"mappings":";;AAAA,OAAO,EACN,yBAAyB,EACzB,8BAA8B,EAC9B,cAAc,EACd,MAAM,EACN,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,0EAA0E;AAC1E,oBAAY,oBAAoB;IAC/B,oEAAoE;IACpE,SAAS,cAAc;IACvB,sDAAsD;IACtD,OAAO,YAAY;IACnB,6FAA6F;IAC7F,KAAK,UAAU;CACf;AAED,qHAAqH;AACrH,MAAM,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,CAAC;AAEF,8GAA8G;AAC9G,MAAM,WAAW,QAAQ;IACxB,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;;OAOG;IACH,IAAI,CACH,EAAE,EAAE,WAAW,EACf,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,EAAE,cAAc,EACrB,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;OAOG;IACH,wBAAwB,CACvB,EAAE,EAAE,oBAAoB,EACxB,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,EAAE,cAAc,EACrB,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;;OAQG;IACH,uBAAuB,CACtB,GAAG,EAAE,sBAAsB,EAAE,EAC7B,mBAAmB,EAAE,yBAAyB,EAAE,EAChD,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,EAAE,cAAc,EACrB,SAAS,CAAC,EAAE,8BAA8B,GACxC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC;;;;;OAKG;IACH,kBAAkB,CACjB,cAAc,EAAE,MAAM,GAAG,UAAU,EACnC,IAAI,EAAE,cAAc,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhE,0FAA0F;IAC1F,eAAe,IAAI,MAAM,CAAC;IAC1B,8HAA8H;IAC9H,iCAAiC,IAAI,MAAM,CAAC;IAC5C,6EAA6E;IAC7E,aAAa,IAAI,MAAM,CAAC;CACxB;AAED,oKAAoK;AACpK,qBAAa,WAAY,SAAQ,KAAK;IAE7B,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;gBADZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM;CAOpB"}
@@ -1,12 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TxSendError = exports.ConfirmationStrategy = void 0;
4
+ /** How a `TxSender` implementation waits for a transaction to confirm. */
4
5
  var ConfirmationStrategy;
5
6
  (function (ConfirmationStrategy) {
7
+ /** Confirm via an RPC websocket `onSignature` subscription only. */
6
8
  ConfirmationStrategy["WebSocket"] = "websocket";
9
+ /** Confirm by polling `getSignatureStatuses` only. */
7
10
  ConfirmationStrategy["Polling"] = "polling";
11
+ /** Race a websocket subscription against polling and resolve on whichever confirms first. */
8
12
  ConfirmationStrategy["Combo"] = "combo";
9
13
  })(ConfirmationStrategy || (exports.ConfirmationStrategy = ConfirmationStrategy = {}));
14
+ /** Error thrown by tx senders when a transaction fails to send or confirm, carrying a stable numeric `code` (see `constants/txConstants`) alongside the message. */
10
15
  class TxSendError extends Error {
11
16
  constructor(message, code) {
12
17
  super(message);
@@ -1,7 +1,33 @@
1
1
  import { AddressLookupTableAccount, Transaction, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
2
+ /** Maximum serialized transaction size (bytes) Solana will accept over the wire — the 1232-byte MTU-derived limit shared by legacy and versioned transactions. */
2
3
  export declare const MAX_TX_BYTE_SIZE = 1232;
4
+ /** 4-byte magic prefix identifying velocity's native (non-Anchor) entrypoint instructions, followed by a 1-byte opcode — see `createNativeInstructionDiscriminatorBuffer`. */
3
5
  export declare const NATIVE_INSTRUCTION_MAGIC_BYTES: number[];
6
+ /**
7
+ * Checks whether a transaction is a `VersionedTransaction` (v0+) rather than a legacy `Transaction`.
8
+ * @param tx - Transaction to check.
9
+ * @returns `true` if `tx` is versioned.
10
+ */
4
11
  export declare const isVersionedTransaction: (tx: Transaction | VersionedTransaction) => boolean;
12
+ /**
13
+ * Estimates the serialized wire size (bytes) a transaction built from `instructions` would have,
14
+ * without actually building/signing it — used to decide whether instructions still fit under
15
+ * `MAX_TX_BYTE_SIZE` before committing to a blockhash/signature. Accounts for account
16
+ * deduplication and, for versioned transactions, the byte savings from any accounts resolvable via
17
+ * `addressLookupTables`.
18
+ * @param instructions - Instructions the transaction would contain.
19
+ * @param versionedTransaction - Whether to size as a v0 `VersionedTransaction` (includes the
20
+ * version byte and lookup-table address/index overhead) or a legacy `Transaction`; defaults to `true`.
21
+ * @param addressLookupTables - Lookup tables to credit toward reducing the static account-keys list.
22
+ * @returns The estimated total transaction size in bytes.
23
+ */
5
24
  export declare const getSizeOfTransaction: (instructions: TransactionInstruction[], versionedTransaction?: boolean, addressLookupTables?: AddressLookupTableAccount[]) => number;
25
+ /**
26
+ * Builds the 5-byte instruction-data prefix for velocity's native (non-Anchor) entrypoint:
27
+ * `NATIVE_INSTRUCTION_MAGIC_BYTES` (`[0xFF, 0xFF, 0xFF, 0xFF]`) followed by a 1-byte opcode. Used
28
+ * for high-frequency keeper instructions that bypass Anchor's instruction-dispatch overhead.
29
+ * @param discriminator - The native instruction's opcode byte.
30
+ * @returns The 5-byte discriminator buffer to prepend to the instruction's data.
31
+ */
6
32
  export declare function createNativeInstructionDiscriminatorBuffer(discriminator: number): Uint8Array;
7
33
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tx/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,yBAAyB,EACzB,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,8BAA8B,UAA2B,CAAC;AAEvE,eAAO,MAAM,sBAAsB,OAC9B,WAAW,GAAG,oBAAoB,KACpC,OAMF,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBAClB,sBAAsB,EAAE,wDAEjB,yBAAyB,EAAE,KAC9C,MAqEF,CAAC;AAMF,wBAAgB,0CAA0C,CACzD,aAAa,EAAE,MAAM,GACnB,UAAU,CAKZ"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tx/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,yBAAyB,EACzB,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AAEzB,kKAAkK;AAClK,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,8KAA8K;AAC9K,eAAO,MAAM,8BAA8B,UAA2B,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,OAC9B,WAAW,GAAG,oBAAoB,KACpC,OAMF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,iBAClB,sBAAsB,EAAE,wDAEjB,yBAAyB,EAAE,KAC9C,MAqEF,CAAC;AAMF;;;;;;GAMG;AACH,wBAAgB,0CAA0C,CACzD,aAAa,EAAE,MAAM,GACnB,UAAU,CAKZ"}
@@ -2,14 +2,33 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createNativeInstructionDiscriminatorBuffer = exports.getSizeOfTransaction = exports.isVersionedTransaction = exports.NATIVE_INSTRUCTION_MAGIC_BYTES = exports.MAX_TX_BYTE_SIZE = void 0;
4
4
  const web3_js_1 = require("@solana/web3.js");
5
+ /** Maximum serialized transaction size (bytes) Solana will accept over the wire — the 1232-byte MTU-derived limit shared by legacy and versioned transactions. */
5
6
  exports.MAX_TX_BYTE_SIZE = 1232;
7
+ /** 4-byte magic prefix identifying velocity's native (non-Anchor) entrypoint instructions, followed by a 1-byte opcode — see `createNativeInstructionDiscriminatorBuffer`. */
6
8
  exports.NATIVE_INSTRUCTION_MAGIC_BYTES = [0xff, 0xff, 0xff, 0xff];
9
+ /**
10
+ * Checks whether a transaction is a `VersionedTransaction` (v0+) rather than a legacy `Transaction`.
11
+ * @param tx - Transaction to check.
12
+ * @returns `true` if `tx` is versioned.
13
+ */
7
14
  const isVersionedTransaction = (tx) => {
8
15
  const version = tx === null || tx === void 0 ? void 0 : tx.version;
9
16
  const isVersionedTx = tx instanceof web3_js_1.VersionedTransaction || version !== undefined;
10
17
  return isVersionedTx;
11
18
  };
12
19
  exports.isVersionedTransaction = isVersionedTransaction;
20
+ /**
21
+ * Estimates the serialized wire size (bytes) a transaction built from `instructions` would have,
22
+ * without actually building/signing it — used to decide whether instructions still fit under
23
+ * `MAX_TX_BYTE_SIZE` before committing to a blockhash/signature. Accounts for account
24
+ * deduplication and, for versioned transactions, the byte savings from any accounts resolvable via
25
+ * `addressLookupTables`.
26
+ * @param instructions - Instructions the transaction would contain.
27
+ * @param versionedTransaction - Whether to size as a v0 `VersionedTransaction` (includes the
28
+ * version byte and lookup-table address/index overhead) or a legacy `Transaction`; defaults to `true`.
29
+ * @param addressLookupTables - Lookup tables to credit toward reducing the static account-keys list.
30
+ * @returns The estimated total transaction size in bytes.
31
+ */
13
32
  const getSizeOfTransaction = (instructions, versionedTransaction = true, addressLookupTables = []) => {
14
33
  const programs = new Set();
15
34
  const signers = new Set();
@@ -69,6 +88,13 @@ exports.getSizeOfTransaction = getSizeOfTransaction;
69
88
  function getSizeOfCompressedU16(n) {
70
89
  return 1 + Number(n >= 128) + Number(n >= 16384);
71
90
  }
91
+ /**
92
+ * Builds the 5-byte instruction-data prefix for velocity's native (non-Anchor) entrypoint:
93
+ * `NATIVE_INSTRUCTION_MAGIC_BYTES` (`[0xFF, 0xFF, 0xFF, 0xFF]`) followed by a 1-byte opcode. Used
94
+ * for high-frequency keeper instructions that bypass Anchor's instruction-dispatch overhead.
95
+ * @param discriminator - The native instruction's opcode byte.
96
+ * @returns The 5-byte discriminator buffer to prepend to the instruction's data.
97
+ */
72
98
  function createNativeInstructionDiscriminatorBuffer(discriminator) {
73
99
  const buffer = new Uint8Array(5);
74
100
  buffer.set(exports.NATIVE_INSTRUCTION_MAGIC_BYTES, 0);
@@ -8,15 +8,50 @@ import { IWallet } from '../types';
8
8
  type ResolveReference = {
9
9
  resolve?: () => void;
10
10
  };
11
+ /**
12
+ * `TxSender` that (like `RetryTxSender`) resends the same signed transaction to `connection`
13
+ * every `retrySleep` ms until confirmation or timeout, additionally recording each in-flight
14
+ * signature's blockhash/`lastValidBlockHeight` in `untilValid` and detecting solana-core's
15
+ * blockhash-height-offset behavior via `useBlockHeightOffset`. Note: as currently implemented,
16
+ * `sendRawTransaction`'s resend/timeout loop uses the same wall-clock `this.timeout` as
17
+ * `RetryTxSender` and does not itself consult `untilValid`/`useBlockHeightOffset` to stop
18
+ * resending once a transaction's blockhash has actually expired — those fields are populated for
19
+ * callers/subclasses that want to inspect per-transaction validity, not consumed internally here.
20
+ * Prefer this sender when you build transactions via this class's `prepareTx`/`sendVersionedTransaction`
21
+ * (which populate `untilValid`) and need that bookkeeping available.
22
+ */
11
23
  export declare class WhileValidTxSender extends BaseTxSender {
24
+ /** Interval (ms) between resend attempts of the same signed transaction. */
12
25
  retrySleep: number;
13
26
  timoutCount: number;
27
+ /** Tracks each currently in-flight transaction signature's blockhash and `lastValidBlockHeight`, populated by `prepareTx`/`sendVersionedTransaction` and cleared once `sendRawTransaction` finishes. */
14
28
  untilValid: Map<string, {
15
29
  blockhash: string;
16
30
  lastValidBlockHeight: number;
17
31
  }>;
32
+ /** Whether the connected cluster's solana-core version (`< 2`) requires the legacy block-height offset when checking blockhash validity; refreshed asynchronously by `checkAndSetUseBlockHeightOffset`. */
18
33
  useBlockHeightOffset: boolean;
34
+ /**
35
+ * Queries `connection.getVersion()` and sets `useBlockHeightOffset` based on the cluster's
36
+ * solana-core major version (`true` for `< 2`, `false` for `>= 2`). Fire-and-forget: errors
37
+ * and unparseable versions are silently ignored, leaving `useBlockHeightOffset` at its current value.
38
+ */
19
39
  private checkAndSetUseBlockHeightOffset;
40
+ /**
41
+ * @param props.connection - RPC connection used for sending, resending, and confirming.
42
+ * @param props.wallet - Wallet used to sign transactions that aren't already `preSigned`.
43
+ * @param props.opts - Default `ConfirmOptions`; defaults to `DEFAULT_CONFIRMATION_OPTS` with `maxRetries: 0` (retries are handled by this sender's own resend loop, not the RPC node).
44
+ * @param props.retrySleep - Interval (ms) between resend attempts; defaults to 2000 (2s).
45
+ * @param props.additionalConnections - Extra connections to also (re)broadcast raw transactions to.
46
+ * @param props.confirmationStrategy - How to wait for confirmation; defaults to `ConfirmationStrategy.Combo`.
47
+ * @param props.additionalTxSenderCallbacks - Callbacks invoked with each (re)sent transaction's base58 encoding.
48
+ * @param props.txHandler - Custom `TxHandler` for signing/building transactions.
49
+ * @param props.trackTxLandRate - Enables land-rate tracking.
50
+ * @param props.txLandRateLookbackWindowMinutes - Rolling window, in minutes, for the land-rate calculation.
51
+ * @param props.landRateToFeeFunc - Custom mapping from land rate to priority-fee multiplier.
52
+ * @param props.throwOnTimeoutError - Whether confirmation timeouts throw `TxSendError`; defaults to `true`.
53
+ * @param props.throwOnTransactionError - Whether a failed on-chain result throws; defaults to `true`.
54
+ */
20
55
  constructor({ connection, wallet, opts, retrySleep, additionalConnections, confirmationStrategy, additionalTxSenderCallbacks, txHandler, trackTxLandRate, txLandRateLookbackWindowMinutes, landRateToFeeFunc, throwOnTimeoutError, throwOnTransactionError, }: {
21
56
  connection: Connection;
22
57
  wallet: IWallet;
@@ -32,9 +67,56 @@ export declare class WhileValidTxSender extends BaseTxSender {
32
67
  throwOnTimeoutError?: boolean;
33
68
  throwOnTransactionError?: boolean;
34
69
  });
70
+ /**
71
+ * Waits `retrySleep` milliseconds, exposing an early-wake `resolve` via `reference` so the
72
+ * resend loop in `sendRawTransaction` can stop promptly once the transaction confirms or a
73
+ * resend fails.
74
+ * @param reference - Mutable holder `sendRawTransaction` uses to resolve this sleep early.
75
+ */
35
76
  sleep(reference: ResolveReference): Promise<void>;
77
+ /**
78
+ * Prepares (blockhash + signs, unless `preSigned`) a legacy `Transaction` using a fresh
79
+ * blockhash from `txHandler.getLatestBlockhashForTransaction()` (rather than `BaseTxSender`'s
80
+ * `prepareTx`, which would resolve one via `TxHandler.prepareTx`'s own path), and records the
81
+ * resulting signature's blockhash/expiry in `untilValid`.
82
+ * @param tx - Transaction to prepare.
83
+ * @param additionalSigners - Extra signers to co-sign alongside the wallet.
84
+ * @param opts - Confirmation options passed through to `TxHandler.prepareTx`.
85
+ * @param preSigned - If `true`, skip signing; if the transaction carries a
86
+ * `SIGNATURE_BLOCK_AND_EXPIRY` marker (see `TxHandler`), that blockhash is used for `untilValid`
87
+ * instead of a freshly fetched one.
88
+ * @returns The prepared (and signed, unless `preSigned`) transaction.
89
+ * @throws Error if a blockhash can't be fetched/resolved, or the (pre)signed transaction has no signature.
90
+ */
36
91
  prepareTx(tx: Transaction, additionalSigners: Array<Signer>, opts: ConfirmOptions, preSigned?: boolean): Promise<Transaction>;
92
+ /**
93
+ * Signs (unless `preSigned`) and sends a `VersionedTransaction`, always overwriting its
94
+ * `recentBlockhash` with a freshly fetched one first (unless `preSigned` with a
95
+ * `SIGNATURE_BLOCK_AND_EXPIRY` marker, in which case that recorded blockhash is used for
96
+ * `untilValid` instead) — records the signature's blockhash/expiry in `untilValid` before
97
+ * delegating to `sendRawTransaction`.
98
+ * @param tx - Transaction to send; mutated in place (blockhash, signatures) unless `preSigned`.
99
+ * @param additionalSigners - Extra signers to co-sign alongside the wallet.
100
+ * @param opts - Confirmation options; defaults to `this.opts`.
101
+ * @param preSigned - If `true`, skip signing (blockhash/`untilValid` bookkeeping still applies).
102
+ * @returns The result of `sendRawTransaction` on the serialized, signed transaction.
103
+ * @throws Error if a blockhash can't be fetched/resolved, or the (pre)signed transaction has no signature.
104
+ */
37
105
  sendVersionedTransaction(tx: VersionedTransaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions, preSigned?: boolean): Promise<TxSigAndSlot>;
106
+ /**
107
+ * Sends a raw transaction, then repeatedly resends the identical signed bytes to `connection`
108
+ * (and broadcasts to `additionalConnections`/`additionalTxSenderCallbacks`) every `retrySleep`
109
+ * ms while concurrently waiting for confirmation, like `RetryTxSender`. Additionally: if
110
+ * confirmation resolves with an on-chain error and `checkConfirmationResultForError` doesn't
111
+ * itself throw (e.g. the detailed error couldn't be resolved), throws a generic
112
+ * `SendTransactionError` as a fallback when `throwOnTransactionError` is set; and always removes
113
+ * `txid` from `untilValid` once done, regardless of outcome.
114
+ * @param rawTransaction - Serialized, signed transaction bytes.
115
+ * @param opts - Options passed to each send/resend and to confirmation; `opts.commitment` selects confirmation level.
116
+ * @returns The signature and confirmation slot once confirmed.
117
+ * @throws Whatever `confirmTransaction` or `checkConfirmationResultForError` throw, or the
118
+ * fallback `SendTransactionError` described above.
119
+ */
38
120
  sendRawTransaction(rawTransaction: Buffer | Uint8Array, opts: ConfirmOptions): Promise<TxSigAndSlot>;
39
121
  }
40
122
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"whileValidTxSender.d.ts","sourceRoot":"","sources":["../../../src/tx/whileValidTxSender.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EACN,cAAc,EACd,UAAU,EAEV,MAAM,EACN,WAAW,EACX,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAKnC,KAAK,gBAAgB,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,YAAY;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,SAAK;IAChB,UAAU;mBAEI,MAAM;8BAAwB,MAAM;OAC9C;IAEJ,oBAAoB,UAAQ;YAEd,+BAA+B;gBAsB1B,EAClB,UAAU,EACV,MAAM,EACN,IAAsD,EACtD,UAA0B,EAC1B,qBAA+C,EAC/C,oBAAiD,EACjD,2BAAgC,EAChC,SAAS,EACT,eAAe,EACf,+BAA+B,EAC/B,iBAAiB,EACjB,mBAA0B,EAC1B,uBAA8B,GAC9B,EAAE;QACF,UAAU,EAAE,UAAU,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,qBAAqB,CAAC,EAAE,UAAU,EAAE,CAAC;QACrC,2BAA2B,CAAC,EAAE,CAAC,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;QACpE,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;QAC5C,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,+BAA+B,CAAC,EAAE,MAAM,CAAC;QACzC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;QACjD,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,uBAAuB,CAAC,EAAE,OAAO,CAAC;KAClC;IAoBK,KAAK,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjD,SAAS,CACd,EAAE,EAAE,WAAW,EACf,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,EAChC,IAAI,EAAE,cAAc,EACpB,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,WAAW,CAAC;IAgDjB,wBAAwB,CAC7B,EAAE,EAAE,oBAAoB,EACxB,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,EAAE,cAAc,EACrB,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,YAAY,CAAC;IA8DlB,kBAAkB,CACvB,cAAc,EAAE,MAAM,GAAG,UAAU,EACnC,IAAI,EAAE,cAAc,GAClB,OAAO,CAAC,YAAY,CAAC;CA+DxB"}
1
+ {"version":3,"file":"whileValidTxSender.d.ts","sourceRoot":"","sources":["../../../src/tx/whileValidTxSender.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EACN,cAAc,EACd,UAAU,EAEV,MAAM,EACN,WAAW,EACX,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAKnC,KAAK,gBAAgB,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IACnD,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,SAAK;IAChB,wMAAwM;IACxM,UAAU;mBAEI,MAAM;8BAAwB,MAAM;OAC9C;IAEJ,2MAA2M;IAC3M,oBAAoB,UAAQ;IAE5B;;;;OAIG;YACW,+BAA+B;IAsB7C;;;;;;;;;;;;;;OAcG;gBACgB,EAClB,UAAU,EACV,MAAM,EACN,IAAsD,EACtD,UAA0B,EAC1B,qBAA+C,EAC/C,oBAAiD,EACjD,2BAAgC,EAChC,SAAS,EACT,eAAe,EACf,+BAA+B,EAC/B,iBAAiB,EACjB,mBAA0B,EAC1B,uBAA8B,GAC9B,EAAE;QACF,UAAU,EAAE,UAAU,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,qBAAqB,CAAC,EAAE,UAAU,EAAE,CAAC;QACrC,2BAA2B,CAAC,EAAE,CAAC,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;QACpE,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;QAC5C,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,+BAA+B,CAAC,EAAE,MAAM,CAAC;QACzC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;QACjD,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,uBAAuB,CAAC,EAAE,OAAO,CAAC;KAClC;IAoBD;;;;;OAKG;IACG,KAAK,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD;;;;;;;;;;;;;OAaG;IACG,SAAS,CACd,EAAE,EAAE,WAAW,EACf,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,EAChC,IAAI,EAAE,cAAc,EACpB,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,WAAW,CAAC;IAgDvB;;;;;;;;;;;;OAYG;IACG,wBAAwB,CAC7B,EAAE,EAAE,oBAAoB,EACxB,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,EAAE,cAAc,EACrB,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,YAAY,CAAC;IA8DxB;;;;;;;;;;;;;OAaG;IACG,kBAAkB,CACvB,cAAc,EAAE,MAAM,GAAG,UAAU,EACnC,IAAI,EAAE,cAAc,GAClB,OAAO,CAAC,YAAY,CAAC;CA+DxB"}
@@ -10,7 +10,24 @@ const baseTxSender_1 = require("./baseTxSender");
10
10
  const bs58_1 = __importDefault(require("bs58"));
11
11
  const config_1 = require("../config");
12
12
  const DEFAULT_RETRY = 2000;
13
+ /**
14
+ * `TxSender` that (like `RetryTxSender`) resends the same signed transaction to `connection`
15
+ * every `retrySleep` ms until confirmation or timeout, additionally recording each in-flight
16
+ * signature's blockhash/`lastValidBlockHeight` in `untilValid` and detecting solana-core's
17
+ * blockhash-height-offset behavior via `useBlockHeightOffset`. Note: as currently implemented,
18
+ * `sendRawTransaction`'s resend/timeout loop uses the same wall-clock `this.timeout` as
19
+ * `RetryTxSender` and does not itself consult `untilValid`/`useBlockHeightOffset` to stop
20
+ * resending once a transaction's blockhash has actually expired — those fields are populated for
21
+ * callers/subclasses that want to inspect per-transaction validity, not consumed internally here.
22
+ * Prefer this sender when you build transactions via this class's `prepareTx`/`sendVersionedTransaction`
23
+ * (which populate `untilValid`) and need that bookkeeping available.
24
+ */
13
25
  class WhileValidTxSender extends baseTxSender_1.BaseTxSender {
26
+ /**
27
+ * Queries `connection.getVersion()` and sets `useBlockHeightOffset` based on the cluster's
28
+ * solana-core major version (`true` for `< 2`, `false` for `>= 2`). Fire-and-forget: errors
29
+ * and unparseable versions are silently ignored, leaving `useBlockHeightOffset` at its current value.
30
+ */
14
31
  async checkAndSetUseBlockHeightOffset() {
15
32
  this.connection.getVersion().then((version) => {
16
33
  const solanaCoreVersion = version['solana-core'];
@@ -30,6 +47,21 @@ class WhileValidTxSender extends baseTxSender_1.BaseTxSender {
30
47
  }
31
48
  });
32
49
  }
50
+ /**
51
+ * @param props.connection - RPC connection used for sending, resending, and confirming.
52
+ * @param props.wallet - Wallet used to sign transactions that aren't already `preSigned`.
53
+ * @param props.opts - Default `ConfirmOptions`; defaults to `DEFAULT_CONFIRMATION_OPTS` with `maxRetries: 0` (retries are handled by this sender's own resend loop, not the RPC node).
54
+ * @param props.retrySleep - Interval (ms) between resend attempts; defaults to 2000 (2s).
55
+ * @param props.additionalConnections - Extra connections to also (re)broadcast raw transactions to.
56
+ * @param props.confirmationStrategy - How to wait for confirmation; defaults to `ConfirmationStrategy.Combo`.
57
+ * @param props.additionalTxSenderCallbacks - Callbacks invoked with each (re)sent transaction's base58 encoding.
58
+ * @param props.txHandler - Custom `TxHandler` for signing/building transactions.
59
+ * @param props.trackTxLandRate - Enables land-rate tracking.
60
+ * @param props.txLandRateLookbackWindowMinutes - Rolling window, in minutes, for the land-rate calculation.
61
+ * @param props.landRateToFeeFunc - Custom mapping from land rate to priority-fee multiplier.
62
+ * @param props.throwOnTimeoutError - Whether confirmation timeouts throw `TxSendError`; defaults to `true`.
63
+ * @param props.throwOnTransactionError - Whether a failed on-chain result throws; defaults to `true`.
64
+ */
33
65
  constructor({ connection, wallet, opts = { ...config_1.DEFAULT_CONFIRMATION_OPTS, maxRetries: 0 }, retrySleep = DEFAULT_RETRY, additionalConnections = new Array(), confirmationStrategy = types_1.ConfirmationStrategy.Combo, additionalTxSenderCallbacks = [], txHandler, trackTxLandRate, txLandRateLookbackWindowMinutes, landRateToFeeFunc, throwOnTimeoutError = true, throwOnTransactionError = true, }) {
34
66
  super({
35
67
  connection,
@@ -46,17 +78,39 @@ class WhileValidTxSender extends baseTxSender_1.BaseTxSender {
46
78
  throwOnTransactionError,
47
79
  });
48
80
  this.timoutCount = 0;
81
+ /** Tracks each currently in-flight transaction signature's blockhash and `lastValidBlockHeight`, populated by `prepareTx`/`sendVersionedTransaction` and cleared once `sendRawTransaction` finishes. */
49
82
  this.untilValid = new Map();
83
+ /** Whether the connected cluster's solana-core version (`< 2`) requires the legacy block-height offset when checking blockhash validity; refreshed asynchronously by `checkAndSetUseBlockHeightOffset`. */
50
84
  this.useBlockHeightOffset = true;
51
85
  this.retrySleep = retrySleep;
52
86
  this.checkAndSetUseBlockHeightOffset();
53
87
  }
88
+ /**
89
+ * Waits `retrySleep` milliseconds, exposing an early-wake `resolve` via `reference` so the
90
+ * resend loop in `sendRawTransaction` can stop promptly once the transaction confirms or a
91
+ * resend fails.
92
+ * @param reference - Mutable holder `sendRawTransaction` uses to resolve this sleep early.
93
+ */
54
94
  async sleep(reference) {
55
95
  return new Promise((resolve) => {
56
96
  reference.resolve = resolve;
57
97
  setTimeout(resolve, this.retrySleep);
58
98
  });
59
99
  }
100
+ /**
101
+ * Prepares (blockhash + signs, unless `preSigned`) a legacy `Transaction` using a fresh
102
+ * blockhash from `txHandler.getLatestBlockhashForTransaction()` (rather than `BaseTxSender`'s
103
+ * `prepareTx`, which would resolve one via `TxHandler.prepareTx`'s own path), and records the
104
+ * resulting signature's blockhash/expiry in `untilValid`.
105
+ * @param tx - Transaction to prepare.
106
+ * @param additionalSigners - Extra signers to co-sign alongside the wallet.
107
+ * @param opts - Confirmation options passed through to `TxHandler.prepareTx`.
108
+ * @param preSigned - If `true`, skip signing; if the transaction carries a
109
+ * `SIGNATURE_BLOCK_AND_EXPIRY` marker (see `TxHandler`), that blockhash is used for `untilValid`
110
+ * instead of a freshly fetched one.
111
+ * @returns The prepared (and signed, unless `preSigned`) transaction.
112
+ * @throws Error if a blockhash can't be fetched/resolved, or the (pre)signed transaction has no signature.
113
+ */
60
114
  async prepareTx(tx, additionalSigners, opts, preSigned) {
61
115
  var _a;
62
116
  let latestBlockhash = await this.txHandler.getLatestBlockhashForTransaction();
@@ -86,6 +140,19 @@ class WhileValidTxSender extends baseTxSender_1.BaseTxSender {
86
140
  this.untilValid.set(txSig, latestBlockhash);
87
141
  return signedTx;
88
142
  }
143
+ /**
144
+ * Signs (unless `preSigned`) and sends a `VersionedTransaction`, always overwriting its
145
+ * `recentBlockhash` with a freshly fetched one first (unless `preSigned` with a
146
+ * `SIGNATURE_BLOCK_AND_EXPIRY` marker, in which case that recorded blockhash is used for
147
+ * `untilValid` instead) — records the signature's blockhash/expiry in `untilValid` before
148
+ * delegating to `sendRawTransaction`.
149
+ * @param tx - Transaction to send; mutated in place (blockhash, signatures) unless `preSigned`.
150
+ * @param additionalSigners - Extra signers to co-sign alongside the wallet.
151
+ * @param opts - Confirmation options; defaults to `this.opts`.
152
+ * @param preSigned - If `true`, skip signing (blockhash/`untilValid` bookkeeping still applies).
153
+ * @returns The result of `sendRawTransaction` on the serialized, signed transaction.
154
+ * @throws Error if a blockhash can't be fetched/resolved, or the (pre)signed transaction has no signature.
155
+ */
89
156
  async sendVersionedTransaction(tx, additionalSigners, opts, preSigned) {
90
157
  let latestBlockhash = await this.txHandler.getLatestBlockhashForTransaction();
91
158
  if (!latestBlockhash) {
@@ -129,6 +196,20 @@ class WhileValidTxSender extends baseTxSender_1.BaseTxSender {
129
196
  this.untilValid.set(txSig, latestBlockhash);
130
197
  return this.sendRawTransaction(signedTx.serialize(), opts);
131
198
  }
199
+ /**
200
+ * Sends a raw transaction, then repeatedly resends the identical signed bytes to `connection`
201
+ * (and broadcasts to `additionalConnections`/`additionalTxSenderCallbacks`) every `retrySleep`
202
+ * ms while concurrently waiting for confirmation, like `RetryTxSender`. Additionally: if
203
+ * confirmation resolves with an on-chain error and `checkConfirmationResultForError` doesn't
204
+ * itself throw (e.g. the detailed error couldn't be resolved), throws a generic
205
+ * `SendTransactionError` as a fallback when `throwOnTransactionError` is set; and always removes
206
+ * `txid` from `untilValid` once done, regardless of outcome.
207
+ * @param rawTransaction - Serialized, signed transaction bytes.
208
+ * @param opts - Options passed to each send/resend and to confirmation; `opts.commitment` selects confirmation level.
209
+ * @returns The signature and confirmation slot once confirmed.
210
+ * @throws Whatever `confirmTransaction` or `checkConfirmationResultForError` throw, or the
211
+ * fallback `SendTransactionError` described above.
212
+ */
132
213
  async sendRawTransaction(rawTransaction, opts) {
133
214
  var _a, _b, _c;
134
215
  const startTime = this.getTimestamp();