@velocity-exchange/sdk 0.1.0 → 0.2.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 (676) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/bun.lock +23 -1
  3. package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +5 -3
  4. package/lib/browser/accounts/basicUserAccountSubscriber.js +4 -3
  5. package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +5 -3
  6. package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +4 -3
  7. package/lib/browser/accounts/bulkAccountLoader.d.ts +5 -5
  8. package/lib/browser/accounts/bulkAccountLoader.js +12 -1
  9. package/lib/browser/accounts/grpcAccountSubscriber.d.ts +2 -1
  10. package/lib/browser/accounts/grpcAccountSubscriber.js +8 -2
  11. package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +3 -2
  12. package/lib/browser/accounts/grpcMultiAccountSubscriber.js +13 -5
  13. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -1
  14. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +12 -8
  15. package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +2 -1
  16. package/lib/browser/accounts/grpcProgramAccountSubscriber.js +8 -2
  17. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +18 -3
  18. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +1 -1
  19. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +40 -17
  20. package/lib/browser/accounts/laserProgramAccountSubscriber.js +3 -0
  21. package/lib/browser/accounts/oneShotUserAccountSubscriber.js +4 -3
  22. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +7 -3
  23. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  24. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +3 -3
  25. package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +0 -2
  26. package/lib/browser/accounts/pollingOracleAccountSubscriber.js +16 -5
  27. package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +0 -2
  28. package/lib/browser/accounts/pollingTokenAccountSubscriber.js +16 -5
  29. package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +8 -4
  30. package/lib/browser/accounts/pollingUserAccountSubscriber.js +17 -11
  31. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +4 -2
  32. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +6 -6
  33. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +7 -1
  34. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +64 -28
  35. package/lib/browser/accounts/types.d.ts +4 -4
  36. package/lib/browser/accounts/utils.d.ts +1 -0
  37. package/lib/browser/accounts/utils.js +8 -1
  38. package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +4 -2
  39. package/lib/browser/accounts/webSocketAccountSubscriber.js +17 -5
  40. package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +4 -2
  41. package/lib/browser/accounts/webSocketAccountSubscriberV2.js +17 -6
  42. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  43. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +9 -0
  44. package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +3 -1
  45. package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +14 -3
  46. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -1
  47. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +15 -3
  48. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -1
  49. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +14 -4
  50. package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +4 -2
  51. package/lib/browser/accounts/webSocketUserAccountSubscriber.js +9 -0
  52. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +4 -2
  53. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +9 -0
  54. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +4 -4
  55. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +48 -20
  56. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +7 -3
  57. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +45 -14
  58. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +1 -1
  59. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +0 -3
  60. package/lib/browser/addresses/marketAddresses.js +3 -2
  61. package/lib/browser/addresses/pda.d.ts +0 -2
  62. package/lib/browser/addresses/pda.js +1 -14
  63. package/lib/browser/adminClient.d.ts +24 -28
  64. package/lib/browser/adminClient.js +156 -157
  65. package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +1 -1
  66. package/lib/browser/auctionSubscriber/auctionSubscriber.js +6 -4
  67. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +1 -1
  68. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +9 -4
  69. package/lib/browser/bankrun/bankrunConnection.d.ts +6 -4
  70. package/lib/browser/bankrun/bankrunConnection.js +69 -31
  71. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +1 -1
  72. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +3 -2
  73. package/lib/browser/clock/clockSubscriber.d.ts +6 -6
  74. package/lib/browser/clock/clockSubscriber.js +4 -3
  75. package/lib/browser/config.d.ts +1 -1
  76. package/lib/browser/config.js +8 -4
  77. package/lib/browser/constants/index.d.ts +1 -2
  78. package/lib/browser/constants/index.js +1 -2
  79. package/lib/browser/constants/numericConstants.d.ts +1 -3
  80. package/lib/browser/constants/numericConstants.js +3 -5
  81. package/lib/browser/constituentMap/constituentMap.js +5 -1
  82. package/lib/browser/constituentMap/pollingConstituentAccountSubscriber.js +3 -2
  83. package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.d.ts +2 -3
  84. package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.js +10 -3
  85. package/lib/browser/core/instructions/perpOrders.d.ts +14 -0
  86. package/lib/browser/core/instructions/perpOrders.js +14 -0
  87. package/lib/browser/core/remainingAccounts.d.ts +2 -2
  88. package/lib/browser/core/remainingAccounts.js +2 -2
  89. package/lib/browser/decode/user.js +9 -1
  90. package/lib/browser/dlob/DLOB.d.ts +6 -1
  91. package/lib/browser/dlob/DLOB.js +201 -138
  92. package/lib/browser/dlob/DLOBNode.d.ts +5 -2
  93. package/lib/browser/dlob/DLOBNode.js +7 -0
  94. package/lib/browser/dlob/DLOBSubscriber.js +37 -32
  95. package/lib/browser/dlob/NodeList.js +8 -7
  96. package/lib/browser/dlob/orderBookLevels.js +19 -12
  97. package/lib/browser/events/eventList.js +4 -1
  98. package/lib/browser/events/eventSubscriber.d.ts +5 -2
  99. package/lib/browser/events/eventSubscriber.js +75 -26
  100. package/lib/browser/events/eventsServerLogProvider.d.ts +1 -1
  101. package/lib/browser/events/eventsServerLogProvider.js +15 -8
  102. package/lib/browser/events/fetchLogs.d.ts +1 -1
  103. package/lib/browser/events/fetchLogs.js +4 -2
  104. package/lib/browser/events/pollingLogProvider.d.ts +1 -1
  105. package/lib/browser/events/pollingLogProvider.js +1 -0
  106. package/lib/browser/events/txEventCache.js +6 -2
  107. package/lib/browser/events/types.d.ts +2 -4
  108. package/lib/browser/events/types.js +0 -2
  109. package/lib/browser/events/webSocketLogProvider.d.ts +1 -1
  110. package/lib/browser/events/webSocketLogProvider.js +5 -2
  111. package/lib/browser/factory/bigNum.js +1 -1
  112. package/lib/browser/idl/velocity.d.ts +1243 -1586
  113. package/lib/browser/idl/velocity.json +1234 -1577
  114. package/lib/browser/index.d.ts +0 -2
  115. package/lib/browser/index.js +0 -2
  116. package/lib/browser/jupiter/jupiterClient.d.ts +1 -1
  117. package/lib/browser/jupiter/jupiterClient.js +18 -8
  118. package/lib/browser/marginCalculation.js +1 -0
  119. package/lib/browser/math/amm.d.ts +31 -13
  120. package/lib/browser/math/amm.js +77 -22
  121. package/lib/browser/math/bankruptcy.js +1 -1
  122. package/lib/browser/math/funding.js +6 -6
  123. package/lib/browser/math/insurance.d.ts +1 -1
  124. package/lib/browser/math/insurance.js +4 -5
  125. package/lib/browser/math/margin.d.ts +1 -9
  126. package/lib/browser/math/margin.js +3 -62
  127. package/lib/browser/math/market.d.ts +4 -12
  128. package/lib/browser/math/market.js +6 -40
  129. package/lib/browser/math/oracles.d.ts +0 -3
  130. package/lib/browser/math/oracles.js +1 -14
  131. package/lib/browser/math/orders.d.ts +0 -5
  132. package/lib/browser/math/orders.js +2 -74
  133. package/lib/browser/math/position.d.ts +0 -4
  134. package/lib/browser/math/position.js +5 -10
  135. package/lib/browser/math/repeg.d.ts +0 -1
  136. package/lib/browser/math/repeg.js +1 -23
  137. package/lib/browser/math/spotBalance.d.ts +4 -4
  138. package/lib/browser/math/spotBalance.js +6 -6
  139. package/lib/browser/math/spotMarket.d.ts +0 -6
  140. package/lib/browser/math/spotMarket.js +1 -16
  141. package/lib/browser/math/spotPosition.d.ts +4 -4
  142. package/lib/browser/math/state.d.ts +0 -2
  143. package/lib/browser/math/state.js +1 -9
  144. package/lib/browser/math/superStake.d.ts +3 -53
  145. package/lib/browser/math/superStake.js +16 -13
  146. package/lib/browser/math/trade.js +6 -6
  147. package/lib/browser/memcmp.d.ts +0 -1
  148. package/lib/browser/memcmp.js +1 -10
  149. package/lib/browser/oracles/prelaunchOracleClient.js +3 -2
  150. package/lib/browser/oracles/pythClient.js +9 -3
  151. package/lib/browser/oracles/pythLazerClient.js +3 -2
  152. package/lib/browser/oracles/utils.d.ts +4 -0
  153. package/lib/browser/oracles/utils.js +9 -1
  154. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +1 -1
  155. package/lib/browser/orderSubscriber/OrderSubscriber.js +8 -2
  156. package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +1 -1
  157. package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +1 -1
  158. package/lib/browser/priorityFee/priorityFeeSubscriber.js +32 -8
  159. package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +1 -1
  160. package/lib/browser/pyth/types.d.ts +0 -1
  161. package/lib/browser/slot/SlotSubscriber.d.ts +1 -1
  162. package/lib/browser/slot/SlotSubscriber.js +2 -1
  163. package/lib/browser/slot/SlothashSubscriber.d.ts +3 -2
  164. package/lib/browser/slot/SlothashSubscriber.js +11 -4
  165. package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.d.ts +0 -3
  166. package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.js +5 -5
  167. package/lib/browser/swift/signedMsgUserAccountSubscriber.d.ts +3 -2
  168. package/lib/browser/swift/signedMsgUserAccountSubscriber.js +13 -5
  169. package/lib/browser/swift/swiftOrderSubscriber.d.ts +1 -1
  170. package/lib/browser/swift/swiftOrderSubscriber.js +10 -5
  171. package/lib/browser/testClient.js +3 -2
  172. package/lib/browser/tokenFaucet.js +16 -2
  173. package/lib/browser/tx/baseTxSender.d.ts +4 -4
  174. package/lib/browser/tx/baseTxSender.js +5 -4
  175. package/lib/browser/tx/fastSingleTxSender.d.ts +3 -3
  176. package/lib/browser/tx/fastSingleTxSender.js +9 -5
  177. package/lib/browser/tx/reportTransactionError.d.ts +2 -2
  178. package/lib/browser/tx/reportTransactionError.js +5 -1
  179. package/lib/browser/tx/retryTxSender.d.ts +1 -1
  180. package/lib/browser/tx/retryTxSender.js +4 -2
  181. package/lib/browser/tx/txHandler.d.ts +7 -1
  182. package/lib/browser/tx/txHandler.js +54 -40
  183. package/lib/browser/tx/txParamProcessor.d.ts +4 -1
  184. package/lib/browser/tx/txParamProcessor.js +6 -0
  185. package/lib/browser/tx/types.d.ts +1 -1
  186. package/lib/browser/tx/whileValidTxSender.d.ts +1 -6
  187. package/lib/browser/tx/whileValidTxSender.js +35 -13
  188. package/lib/browser/types.d.ts +27 -70
  189. package/lib/browser/types.js +2 -2
  190. package/lib/browser/user.d.ts +21 -7
  191. package/lib/browser/user.js +156 -132
  192. package/lib/browser/userMap/WebsocketSubscription.d.ts +1 -1
  193. package/lib/browser/userMap/grpcSubscription.d.ts +1 -1
  194. package/lib/browser/userMap/referrerMap.js +10 -3
  195. package/lib/browser/userMap/revenueShareEscrowMap.js +4 -0
  196. package/lib/browser/userMap/userMap.d.ts +1 -1
  197. package/lib/browser/userMap/userMap.js +36 -23
  198. package/lib/browser/userMap/userStatsMap.d.ts +1 -1
  199. package/lib/browser/userMap/userStatsMap.js +18 -13
  200. package/lib/browser/userStats.d.ts +7 -2
  201. package/lib/browser/userStats.js +18 -4
  202. package/lib/browser/util/TransactionConfirmationManager.js +4 -2
  203. package/lib/browser/util/chainClock.d.ts +1 -1
  204. package/lib/browser/util/computeUnits.d.ts +1 -1
  205. package/lib/browser/util/computeUnits.js +6 -1
  206. package/lib/browser/velocityClient.d.ts +92 -34
  207. package/lib/browser/velocityClient.js +414 -280
  208. package/lib/node/accounts/basicUserAccountSubscriber.d.ts +5 -3
  209. package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
  210. package/lib/node/accounts/basicUserAccountSubscriber.js +4 -3
  211. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +5 -3
  212. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
  213. package/lib/node/accounts/basicUserStatsAccountSubscriber.js +4 -3
  214. package/lib/node/accounts/bulkAccountLoader.d.ts +5 -5
  215. package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
  216. package/lib/node/accounts/bulkAccountLoader.js +12 -1
  217. package/lib/node/accounts/grpcAccountSubscriber.d.ts +2 -1
  218. package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
  219. package/lib/node/accounts/grpcAccountSubscriber.js +8 -2
  220. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +3 -2
  221. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
  222. package/lib/node/accounts/grpcMultiAccountSubscriber.js +13 -5
  223. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -1
  224. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
  225. package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +12 -8
  226. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +2 -1
  227. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
  228. package/lib/node/accounts/grpcProgramAccountSubscriber.js +8 -2
  229. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
  230. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +18 -3
  231. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +1 -1
  232. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  233. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +40 -17
  234. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
  235. package/lib/node/accounts/laserProgramAccountSubscriber.js +3 -0
  236. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
  237. package/lib/node/accounts/oneShotUserAccountSubscriber.js +4 -3
  238. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
  239. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +7 -3
  240. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  241. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  242. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +3 -3
  243. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +0 -2
  244. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
  245. package/lib/node/accounts/pollingOracleAccountSubscriber.js +16 -5
  246. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +0 -2
  247. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
  248. package/lib/node/accounts/pollingTokenAccountSubscriber.js +16 -5
  249. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +8 -4
  250. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
  251. package/lib/node/accounts/pollingUserAccountSubscriber.js +17 -11
  252. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +4 -2
  253. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
  254. package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +6 -6
  255. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +7 -1
  256. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
  257. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +64 -28
  258. package/lib/node/accounts/types.d.ts +4 -4
  259. package/lib/node/accounts/types.d.ts.map +1 -1
  260. package/lib/node/accounts/utils.d.ts +1 -0
  261. package/lib/node/accounts/utils.d.ts.map +1 -1
  262. package/lib/node/accounts/utils.js +8 -1
  263. package/lib/node/accounts/webSocketAccountSubscriber.d.ts +4 -2
  264. package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
  265. package/lib/node/accounts/webSocketAccountSubscriber.js +17 -5
  266. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +4 -2
  267. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
  268. package/lib/node/accounts/webSocketAccountSubscriberV2.js +17 -6
  269. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +4 -2
  270. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  271. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +9 -0
  272. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +3 -1
  273. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
  274. package/lib/node/accounts/webSocketProgramAccountSubscriber.js +14 -3
  275. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -1
  276. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
  277. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +15 -3
  278. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -1
  279. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
  280. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +14 -4
  281. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +4 -2
  282. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
  283. package/lib/node/accounts/webSocketUserAccountSubscriber.js +9 -0
  284. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +4 -2
  285. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
  286. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +9 -0
  287. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +4 -4
  288. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
  289. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +48 -20
  290. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +7 -3
  291. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  292. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +45 -14
  293. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +1 -1
  294. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
  295. package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +0 -3
  296. package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
  297. package/lib/node/addresses/marketAddresses.js +3 -2
  298. package/lib/node/addresses/pda.d.ts +0 -2
  299. package/lib/node/addresses/pda.d.ts.map +1 -1
  300. package/lib/node/addresses/pda.js +1 -14
  301. package/lib/node/adminClient.d.ts +24 -28
  302. package/lib/node/adminClient.d.ts.map +1 -1
  303. package/lib/node/adminClient.js +156 -157
  304. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +1 -1
  305. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
  306. package/lib/node/auctionSubscriber/auctionSubscriber.js +6 -4
  307. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +1 -1
  308. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
  309. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +9 -4
  310. package/lib/node/bankrun/bankrunConnection.d.ts +6 -4
  311. package/lib/node/bankrun/bankrunConnection.d.ts.map +1 -1
  312. package/lib/node/bankrun/bankrunConnection.js +69 -31
  313. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +1 -1
  314. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
  315. package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +3 -2
  316. package/lib/node/clock/clockSubscriber.d.ts +6 -6
  317. package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
  318. package/lib/node/clock/clockSubscriber.js +4 -3
  319. package/lib/node/config.d.ts +1 -1
  320. package/lib/node/config.d.ts.map +1 -1
  321. package/lib/node/config.js +8 -4
  322. package/lib/node/constants/index.d.ts +1 -2
  323. package/lib/node/constants/index.d.ts.map +1 -1
  324. package/lib/node/constants/index.js +1 -2
  325. package/lib/node/constants/numericConstants.d.ts +1 -3
  326. package/lib/node/constants/numericConstants.d.ts.map +1 -1
  327. package/lib/node/constants/numericConstants.js +3 -5
  328. package/lib/node/constituentMap/constituentMap.d.ts.map +1 -1
  329. package/lib/node/constituentMap/constituentMap.js +5 -1
  330. package/lib/node/constituentMap/pollingConstituentAccountSubscriber.d.ts.map +1 -1
  331. package/lib/node/constituentMap/pollingConstituentAccountSubscriber.js +3 -2
  332. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts +2 -3
  333. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts.map +1 -1
  334. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.js +10 -3
  335. package/lib/node/core/instructions/perpOrders.d.ts +14 -0
  336. package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
  337. package/lib/node/core/instructions/perpOrders.js +14 -0
  338. package/lib/node/core/remainingAccounts.d.ts +2 -2
  339. package/lib/node/core/remainingAccounts.d.ts.map +1 -1
  340. package/lib/node/core/remainingAccounts.js +2 -2
  341. package/lib/node/decode/user.d.ts.map +1 -1
  342. package/lib/node/decode/user.js +9 -1
  343. package/lib/node/dlob/DLOB.d.ts +6 -1
  344. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  345. package/lib/node/dlob/DLOB.js +201 -138
  346. package/lib/node/dlob/DLOBNode.d.ts +5 -2
  347. package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
  348. package/lib/node/dlob/DLOBNode.js +7 -0
  349. package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
  350. package/lib/node/dlob/DLOBSubscriber.js +37 -32
  351. package/lib/node/dlob/NodeList.d.ts.map +1 -1
  352. package/lib/node/dlob/NodeList.js +8 -7
  353. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  354. package/lib/node/dlob/orderBookLevels.js +19 -12
  355. package/lib/node/events/eventList.d.ts +3 -3
  356. package/lib/node/events/eventList.d.ts.map +1 -1
  357. package/lib/node/events/eventList.js +4 -1
  358. package/lib/node/events/eventSubscriber.d.ts +5 -2
  359. package/lib/node/events/eventSubscriber.d.ts.map +1 -1
  360. package/lib/node/events/eventSubscriber.js +75 -26
  361. package/lib/node/events/eventsServerLogProvider.d.ts +2 -2
  362. package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
  363. package/lib/node/events/eventsServerLogProvider.js +15 -8
  364. package/lib/node/events/fetchLogs.d.ts +1 -1
  365. package/lib/node/events/fetchLogs.d.ts.map +1 -1
  366. package/lib/node/events/fetchLogs.js +4 -2
  367. package/lib/node/events/pollingLogProvider.d.ts +2 -2
  368. package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
  369. package/lib/node/events/pollingLogProvider.js +1 -0
  370. package/lib/node/events/txEventCache.d.ts +3 -3
  371. package/lib/node/events/txEventCache.d.ts.map +1 -1
  372. package/lib/node/events/txEventCache.js +6 -2
  373. package/lib/node/events/types.d.ts +2 -4
  374. package/lib/node/events/types.d.ts.map +1 -1
  375. package/lib/node/events/types.js +0 -2
  376. package/lib/node/events/webSocketLogProvider.d.ts +2 -2
  377. package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
  378. package/lib/node/events/webSocketLogProvider.js +5 -2
  379. package/lib/node/factory/bigNum.js +1 -1
  380. package/lib/node/idl/velocity.d.ts +1243 -1586
  381. package/lib/node/idl/velocity.d.ts.map +1 -1
  382. package/lib/node/idl/velocity.json +1234 -1577
  383. package/lib/node/index.d.ts +0 -2
  384. package/lib/node/index.d.ts.map +1 -1
  385. package/lib/node/index.js +0 -2
  386. package/lib/node/jupiter/jupiterClient.d.ts +1 -1
  387. package/lib/node/jupiter/jupiterClient.d.ts.map +1 -1
  388. package/lib/node/jupiter/jupiterClient.js +18 -8
  389. package/lib/node/marginCalculation.d.ts.map +1 -1
  390. package/lib/node/marginCalculation.js +1 -0
  391. package/lib/node/math/amm.d.ts +31 -13
  392. package/lib/node/math/amm.d.ts.map +1 -1
  393. package/lib/node/math/amm.js +77 -22
  394. package/lib/node/math/bankruptcy.js +1 -1
  395. package/lib/node/math/funding.d.ts.map +1 -1
  396. package/lib/node/math/funding.js +6 -6
  397. package/lib/node/math/insurance.d.ts +1 -1
  398. package/lib/node/math/insurance.d.ts.map +1 -1
  399. package/lib/node/math/insurance.js +4 -5
  400. package/lib/node/math/margin.d.ts +1 -9
  401. package/lib/node/math/margin.d.ts.map +1 -1
  402. package/lib/node/math/margin.js +3 -62
  403. package/lib/node/math/market.d.ts +4 -12
  404. package/lib/node/math/market.d.ts.map +1 -1
  405. package/lib/node/math/market.js +6 -40
  406. package/lib/node/math/oracles.d.ts +0 -3
  407. package/lib/node/math/oracles.d.ts.map +1 -1
  408. package/lib/node/math/oracles.js +1 -14
  409. package/lib/node/math/orders.d.ts +0 -5
  410. package/lib/node/math/orders.d.ts.map +1 -1
  411. package/lib/node/math/orders.js +2 -74
  412. package/lib/node/math/position.d.ts +1 -5
  413. package/lib/node/math/position.d.ts.map +1 -1
  414. package/lib/node/math/position.js +5 -10
  415. package/lib/node/math/repeg.d.ts +0 -1
  416. package/lib/node/math/repeg.d.ts.map +1 -1
  417. package/lib/node/math/repeg.js +1 -23
  418. package/lib/node/math/spotBalance.d.ts +4 -4
  419. package/lib/node/math/spotBalance.d.ts.map +1 -1
  420. package/lib/node/math/spotBalance.js +6 -6
  421. package/lib/node/math/spotMarket.d.ts +0 -6
  422. package/lib/node/math/spotMarket.d.ts.map +1 -1
  423. package/lib/node/math/spotMarket.js +1 -16
  424. package/lib/node/math/spotPosition.d.ts +4 -4
  425. package/lib/node/math/spotPosition.d.ts.map +1 -1
  426. package/lib/node/math/state.d.ts +0 -2
  427. package/lib/node/math/state.d.ts.map +1 -1
  428. package/lib/node/math/state.js +1 -9
  429. package/lib/node/math/superStake.d.ts +3 -53
  430. package/lib/node/math/superStake.d.ts.map +1 -1
  431. package/lib/node/math/superStake.js +16 -13
  432. package/lib/node/math/trade.d.ts +2 -2
  433. package/lib/node/math/trade.d.ts.map +1 -1
  434. package/lib/node/math/trade.js +6 -6
  435. package/lib/node/memcmp.d.ts +0 -1
  436. package/lib/node/memcmp.d.ts.map +1 -1
  437. package/lib/node/memcmp.js +1 -10
  438. package/lib/node/oracles/oracleClientCache.d.ts +1 -1
  439. package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
  440. package/lib/node/oracles/prelaunchOracleClient.js +3 -2
  441. package/lib/node/oracles/pythClient.d.ts.map +1 -1
  442. package/lib/node/oracles/pythClient.js +9 -3
  443. package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
  444. package/lib/node/oracles/pythLazerClient.js +3 -2
  445. package/lib/node/oracles/utils.d.ts +4 -0
  446. package/lib/node/oracles/utils.d.ts.map +1 -1
  447. package/lib/node/oracles/utils.js +9 -1
  448. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +1 -1
  449. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  450. package/lib/node/orderSubscriber/OrderSubscriber.js +8 -2
  451. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +1 -1
  452. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
  453. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +1 -1
  454. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
  455. package/lib/node/priorityFee/priorityFeeSubscriber.js +32 -8
  456. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +1 -1
  457. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
  458. package/lib/node/pyth/types.d.ts +0 -1
  459. package/lib/node/pyth/types.d.ts.map +1 -1
  460. package/lib/node/slot/SlotSubscriber.d.ts +1 -1
  461. package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
  462. package/lib/node/slot/SlotSubscriber.js +2 -1
  463. package/lib/node/slot/SlothashSubscriber.d.ts +3 -2
  464. package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
  465. package/lib/node/slot/SlothashSubscriber.js +11 -4
  466. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts +0 -3
  467. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts.map +1 -1
  468. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.js +5 -5
  469. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts +3 -2
  470. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts.map +1 -1
  471. package/lib/node/swift/signedMsgUserAccountSubscriber.js +13 -5
  472. package/lib/node/swift/swiftOrderSubscriber.d.ts +1 -1
  473. package/lib/node/swift/swiftOrderSubscriber.d.ts.map +1 -1
  474. package/lib/node/swift/swiftOrderSubscriber.js +10 -5
  475. package/lib/node/testClient.js +3 -2
  476. package/lib/node/tokenFaucet.d.ts.map +1 -1
  477. package/lib/node/tokenFaucet.js +16 -2
  478. package/lib/node/tx/baseTxSender.d.ts +4 -4
  479. package/lib/node/tx/baseTxSender.d.ts.map +1 -1
  480. package/lib/node/tx/baseTxSender.js +5 -4
  481. package/lib/node/tx/fastSingleTxSender.d.ts +3 -3
  482. package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
  483. package/lib/node/tx/fastSingleTxSender.js +9 -5
  484. package/lib/node/tx/reportTransactionError.d.ts +2 -2
  485. package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
  486. package/lib/node/tx/reportTransactionError.js +5 -1
  487. package/lib/node/tx/retryTxSender.d.ts +1 -1
  488. package/lib/node/tx/retryTxSender.d.ts.map +1 -1
  489. package/lib/node/tx/retryTxSender.js +4 -2
  490. package/lib/node/tx/txHandler.d.ts +9 -3
  491. package/lib/node/tx/txHandler.d.ts.map +1 -1
  492. package/lib/node/tx/txHandler.js +54 -40
  493. package/lib/node/tx/txParamProcessor.d.ts +4 -1
  494. package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
  495. package/lib/node/tx/txParamProcessor.js +6 -0
  496. package/lib/node/tx/types.d.ts +1 -1
  497. package/lib/node/tx/types.d.ts.map +1 -1
  498. package/lib/node/tx/whileValidTxSender.d.ts +1 -6
  499. package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
  500. package/lib/node/tx/whileValidTxSender.js +35 -13
  501. package/lib/node/types.d.ts +25 -68
  502. package/lib/node/types.d.ts.map +1 -1
  503. package/lib/node/types.js +2 -2
  504. package/lib/node/user.d.ts +21 -7
  505. package/lib/node/user.d.ts.map +1 -1
  506. package/lib/node/user.js +156 -132
  507. package/lib/node/userMap/WebsocketSubscription.d.ts +1 -1
  508. package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
  509. package/lib/node/userMap/grpcSubscription.d.ts +1 -1
  510. package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
  511. package/lib/node/userMap/referrerMap.d.ts.map +1 -1
  512. package/lib/node/userMap/referrerMap.js +10 -3
  513. package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
  514. package/lib/node/userMap/revenueShareEscrowMap.js +4 -0
  515. package/lib/node/userMap/userMap.d.ts +1 -1
  516. package/lib/node/userMap/userMap.d.ts.map +1 -1
  517. package/lib/node/userMap/userMap.js +36 -23
  518. package/lib/node/userMap/userStatsMap.d.ts +1 -1
  519. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  520. package/lib/node/userMap/userStatsMap.js +18 -13
  521. package/lib/node/userStats.d.ts +7 -2
  522. package/lib/node/userStats.d.ts.map +1 -1
  523. package/lib/node/userStats.js +18 -4
  524. package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
  525. package/lib/node/util/TransactionConfirmationManager.js +4 -2
  526. package/lib/node/util/chainClock.d.ts +1 -1
  527. package/lib/node/util/chainClock.d.ts.map +1 -1
  528. package/lib/node/util/computeUnits.d.ts +1 -1
  529. package/lib/node/util/computeUnits.d.ts.map +1 -1
  530. package/lib/node/util/computeUnits.js +6 -1
  531. package/lib/node/velocityClient.d.ts +93 -35
  532. package/lib/node/velocityClient.d.ts.map +1 -1
  533. package/lib/node/velocityClient.js +414 -280
  534. package/package.json +5 -3
  535. package/src/accounts/basicUserAccountSubscriber.ts +7 -5
  536. package/src/accounts/basicUserStatsAccountSubscriber.ts +9 -5
  537. package/src/accounts/bulkAccountLoader.ts +20 -7
  538. package/src/accounts/grpcAccountSubscriber.ts +11 -3
  539. package/src/accounts/grpcMultiAccountSubscriber.ts +24 -9
  540. package/src/accounts/grpcMultiUserAccountSubscriber.ts +16 -12
  541. package/src/accounts/grpcProgramAccountSubscriber.ts +11 -3
  542. package/src/accounts/grpcVelocityClientAccountSubscriber.ts +17 -7
  543. package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +66 -39
  544. package/src/accounts/laserProgramAccountSubscriber.ts +3 -0
  545. package/src/accounts/oneShotUserAccountSubscriber.ts +5 -3
  546. package/src/accounts/oneShotUserStatsAccountSubscriber.ts +8 -3
  547. package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +11 -5
  548. package/src/accounts/pollingOracleAccountSubscriber.ts +17 -10
  549. package/src/accounts/pollingTokenAccountSubscriber.ts +17 -10
  550. package/src/accounts/pollingUserAccountSubscriber.ts +26 -20
  551. package/src/accounts/pollingUserStatsAccountSubscriber.ts +12 -10
  552. package/src/accounts/pollingVelocityClientAccountSubscriber.ts +76 -30
  553. package/src/accounts/types.ts +6 -4
  554. package/src/accounts/utils.ts +10 -0
  555. package/src/accounts/webSocketAccountSubscriber.ts +23 -10
  556. package/src/accounts/webSocketAccountSubscriberV2.ts +23 -8
  557. package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +17 -2
  558. package/src/accounts/webSocketProgramAccountSubscriber.ts +29 -4
  559. package/src/accounts/webSocketProgramAccountSubscriberV2.ts +30 -4
  560. package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +29 -4
  561. package/src/accounts/webSocketUserAccountSubscriber.ts +11 -2
  562. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +15 -2
  563. package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +76 -48
  564. package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +74 -35
  565. package/src/accounts/websocketProgramUserAccountSubscriber.ts +1 -6
  566. package/src/addresses/marketAddresses.ts +3 -2
  567. package/src/addresses/pda.ts +0 -25
  568. package/src/adminClient.ts +273 -303
  569. package/src/auctionSubscriber/auctionSubscriber.ts +7 -5
  570. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +12 -5
  571. package/src/bankrun/bankrunConnection.ts +83 -39
  572. package/src/blockhashSubscriber/BlockhashSubscriber.ts +5 -4
  573. package/src/clock/clockSubscriber.ts +10 -9
  574. package/src/config.ts +8 -3
  575. package/src/constants/index.ts +1 -2
  576. package/src/constants/numericConstants.ts +3 -3
  577. package/src/constituentMap/constituentMap.ts +8 -1
  578. package/src/constituentMap/pollingConstituentAccountSubscriber.ts +4 -2
  579. package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +13 -4
  580. package/src/core/instructions/perpOrders.ts +14 -0
  581. package/src/core/remainingAccounts.ts +4 -4
  582. package/src/decode/user.ts +8 -1
  583. package/src/dlob/DLOB.ts +296 -172
  584. package/src/dlob/DLOBNode.ts +23 -3
  585. package/src/dlob/DLOBSubscriber.ts +51 -34
  586. package/src/dlob/NodeList.ts +8 -7
  587. package/src/dlob/orderBookLevels.ts +45 -25
  588. package/src/events/eventList.ts +4 -1
  589. package/src/events/eventSubscriber.ts +107 -49
  590. package/src/events/eventsServerLogProvider.ts +22 -13
  591. package/src/events/fetchLogs.ts +3 -3
  592. package/src/events/pollingLogProvider.ts +2 -2
  593. package/src/events/txEventCache.ts +8 -2
  594. package/src/events/types.ts +0 -8
  595. package/src/events/webSocketLogProvider.ts +5 -3
  596. package/src/factory/bigNum.ts +2 -2
  597. package/src/idl/velocity.json +1234 -1577
  598. package/src/idl/velocity.ts +1234 -1577
  599. package/src/index.ts +0 -2
  600. package/src/jupiter/jupiterClient.ts +30 -10
  601. package/src/marginCalculation.ts +1 -0
  602. package/src/math/amm.ts +188 -33
  603. package/src/math/bankruptcy.ts +1 -1
  604. package/src/math/funding.ts +7 -6
  605. package/src/math/insurance.ts +6 -8
  606. package/src/math/margin.ts +5 -112
  607. package/src/math/market.ts +6 -96
  608. package/src/math/oracles.ts +0 -17
  609. package/src/math/orders.ts +1 -110
  610. package/src/math/position.ts +4 -16
  611. package/src/math/repeg.ts +0 -29
  612. package/src/math/spotBalance.ts +14 -10
  613. package/src/math/spotMarket.ts +2 -28
  614. package/src/math/spotPosition.ts +4 -4
  615. package/src/math/state.ts +0 -8
  616. package/src/math/superStake.ts +19 -65
  617. package/src/math/trade.ts +2 -6
  618. package/src/memcmp.ts +0 -9
  619. package/src/oracles/prelaunchOracleClient.ts +7 -2
  620. package/src/oracles/pythClient.ts +12 -3
  621. package/src/oracles/pythLazerClient.ts +7 -2
  622. package/src/oracles/utils.ts +15 -0
  623. package/src/orderSubscriber/OrderSubscriber.ts +10 -4
  624. package/src/priorityFee/heliusPriorityFeeMethod.ts +1 -1
  625. package/src/priorityFee/priorityFeeSubscriber.ts +45 -9
  626. package/src/priorityFee/solanaPriorityFeeMethod.ts +1 -1
  627. package/src/pyth/types.ts +0 -2
  628. package/src/slot/SlotSubscriber.ts +3 -3
  629. package/src/slot/SlothashSubscriber.ts +17 -6
  630. package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +5 -6
  631. package/src/swift/signedMsgUserAccountSubscriber.ts +16 -8
  632. package/src/swift/swiftOrderSubscriber.ts +10 -9
  633. package/src/testClient.ts +2 -2
  634. package/src/tokenFaucet.ts +22 -3
  635. package/src/tx/baseTxSender.ts +10 -10
  636. package/src/tx/fastSingleTxSender.ts +12 -8
  637. package/src/tx/reportTransactionError.ts +12 -7
  638. package/src/tx/retryTxSender.ts +6 -4
  639. package/src/tx/txHandler.ts +88 -43
  640. package/src/tx/txParamProcessor.ts +18 -3
  641. package/src/tx/types.ts +1 -1
  642. package/src/tx/whileValidTxSender.ts +51 -22
  643. package/src/types.ts +39 -75
  644. package/src/user.ts +200 -152
  645. package/src/userMap/WebsocketSubscription.ts +1 -1
  646. package/src/userMap/grpcSubscription.ts +1 -1
  647. package/src/userMap/referrerMap.ts +13 -9
  648. package/src/userMap/revenueShareEscrowMap.ts +6 -1
  649. package/src/userMap/userMap.ts +43 -25
  650. package/src/userMap/userStatsMap.ts +32 -19
  651. package/src/userStats.ts +21 -8
  652. package/src/util/TransactionConfirmationManager.ts +10 -2
  653. package/src/util/chainClock.ts +1 -1
  654. package/src/util/computeUnits.ts +7 -3
  655. package/src/velocityClient.ts +536 -383
  656. package/tests/amm/test.ts +138 -0
  657. package/tests/dlob/helpers.ts +6 -1
  658. package/tsconfig.json +1 -0
  659. package/lib/browser/constants/insuranceFund.d.ts +0 -5
  660. package/lib/browser/constants/insuranceFund.js +0 -9
  661. package/lib/browser/tx/forwardOnlyTxSender.d.ts +0 -37
  662. package/lib/browser/tx/forwardOnlyTxSender.js +0 -92
  663. package/lib/browser/util/tps.d.ts +0 -2
  664. package/lib/browser/util/tps.js +0 -16
  665. package/lib/node/constants/insuranceFund.d.ts +0 -6
  666. package/lib/node/constants/insuranceFund.d.ts.map +0 -1
  667. package/lib/node/constants/insuranceFund.js +0 -9
  668. package/lib/node/tx/forwardOnlyTxSender.d.ts +0 -38
  669. package/lib/node/tx/forwardOnlyTxSender.d.ts.map +0 -1
  670. package/lib/node/tx/forwardOnlyTxSender.js +0 -92
  671. package/lib/node/util/tps.d.ts +0 -3
  672. package/lib/node/util/tps.d.ts.map +0 -1
  673. package/lib/node/util/tps.js +0 -16
  674. package/src/constants/insuranceFund.ts +0 -8
  675. package/src/tx/forwardOnlyTxSender.ts +0 -145
  676. package/src/util/tps.ts +0 -27
@@ -10,9 +10,16 @@ import { MMOraclePriceData, OraclePriceData } from '../oracles/types';
10
10
  import { convertToNumber } from '../math/conversion';
11
11
  import { getOrderSignature } from './NodeList';
12
12
 
13
+ export type NodeOraclePriceData<T extends MarketTypeStr = MarketTypeStr> =
14
+ T extends 'spot' ? OraclePriceData : MMOraclePriceData;
15
+
13
16
  export interface DLOBNode {
14
17
  getPrice<T extends MarketTypeStr>(
15
- oraclePriceData: T extends 'spot' ? OraclePriceData : MMOraclePriceData,
18
+ oraclePriceData: NodeOraclePriceData<T>,
19
+ slot: number
20
+ ): BN | undefined;
21
+ getPriceOrThrow<T extends MarketTypeStr>(
22
+ oraclePriceData: NodeOraclePriceData<T>,
16
23
  slot: number
17
24
  ): BN;
18
25
  isVammNode(): boolean;
@@ -77,12 +84,25 @@ export abstract class OrderNode implements DLOBNode {
77
84
  }
78
85
 
79
86
  getPrice<T extends MarketTypeStr>(
80
- oraclePriceData: T extends 'spot' ? OraclePriceData : MMOraclePriceData,
87
+ oraclePriceData: NodeOraclePriceData<T>,
81
88
  slot: number
82
- ): BN {
89
+ ): BN | undefined {
83
90
  return getLimitPrice<T>(this.order, oraclePriceData, slot);
84
91
  }
85
92
 
93
+ getPriceOrThrow<T extends MarketTypeStr>(
94
+ oraclePriceData: NodeOraclePriceData<T>,
95
+ slot: number
96
+ ): BN {
97
+ const price = this.getPrice<T>(oraclePriceData, slot);
98
+ if (price === undefined) {
99
+ throw new Error(
100
+ `OrderNode.getPrice: order ${this.order.orderId} has no limit price`
101
+ );
102
+ }
103
+ return price;
104
+ }
105
+
86
106
  isBaseFilled(): boolean {
87
107
  return this.order.baseAssetAmountFilled.eq(this.order.baseAssetAmount);
88
108
  }
@@ -52,7 +52,10 @@ export class DLOBSubscriber {
52
52
  await this.updateDLOB();
53
53
  this.eventEmitter.emit('update', this.dlob);
54
54
  } catch (e) {
55
- this.eventEmitter.emit('error', e);
55
+ this.eventEmitter.emit(
56
+ 'error',
57
+ e instanceof Error ? e : new Error(String(e))
58
+ );
56
59
  }
57
60
  }, this.updateFrequency);
58
61
  }
@@ -111,44 +114,52 @@ export class DLOBSubscriber {
111
114
  }
112
115
  }
113
116
 
114
- let oraclePriceData;
115
117
  const isPerp = isVariant(marketType, 'perp');
116
118
  if (isPerp) {
117
119
  const perpMarketAccount =
118
- this.velocityClient.getPerpMarketAccount(marketIndex);
119
- oraclePriceData = this.velocityClient.getOracleDataForPerpMarket(
120
+ this.velocityClient.getPerpMarketAccountOrThrow(marketIndex);
121
+ const oraclePriceData = this.velocityClient.getMMOracleDataForPerpMarket(
120
122
  perpMarketAccount.marketIndex
121
123
  );
122
- } else {
123
- oraclePriceData =
124
- this.velocityClient.getOracleDataForSpotMarket(marketIndex);
125
- }
126
124
 
127
- if (isPerp && includeVamm) {
128
- if (fallbackL2Generators.length > 0) {
129
- throw new Error(
130
- 'includeVamm can only be used if fallbackL2Generators is empty'
131
- );
125
+ if (includeVamm) {
126
+ if (fallbackL2Generators.length > 0) {
127
+ throw new Error(
128
+ 'includeVamm can only be used if fallbackL2Generators is empty'
129
+ );
130
+ }
131
+
132
+ fallbackL2Generators = [
133
+ getVammL2Generator({
134
+ marketAccount: perpMarketAccount,
135
+ mmOraclePriceData:
136
+ this.velocityClient.getMMOracleDataForPerpMarket(marketIndex),
137
+ numOrders: numVammOrders ?? depth,
138
+ topOfBookQuoteAmounts:
139
+ marketIndex < 3
140
+ ? MAJORS_TOP_OF_BOOK_QUOTE_AMOUNTS
141
+ : DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS,
142
+ latestSlot,
143
+ }),
144
+ ];
132
145
  }
133
146
 
134
- fallbackL2Generators = [
135
- getVammL2Generator({
136
- marketAccount: this.velocityClient.getPerpMarketAccount(marketIndex),
137
- mmOraclePriceData:
138
- this.velocityClient.getMMOracleDataForPerpMarket(marketIndex),
139
- numOrders: numVammOrders ?? depth,
140
- topOfBookQuoteAmounts:
141
- marketIndex < 3
142
- ? MAJORS_TOP_OF_BOOK_QUOTE_AMOUNTS
143
- : DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS,
144
- latestSlot,
145
- }),
146
- ];
147
+ return this.dlob.getL2({
148
+ marketIndex,
149
+ marketType: MarketType.PERP,
150
+ depth,
151
+ oraclePriceData,
152
+ slot: this.slotSource.getSlot(),
153
+ fallbackL2Generators: fallbackL2Generators,
154
+ });
147
155
  }
148
156
 
157
+ const oraclePriceData =
158
+ this.velocityClient.getOracleDataForSpotMarket(marketIndex);
159
+
149
160
  return this.dlob.getL2({
150
161
  marketIndex,
151
- marketType,
162
+ marketType: MarketType.SPOT,
152
163
  depth,
153
164
  oraclePriceData,
154
165
  slot: this.slotSource.getSlot(),
@@ -188,19 +199,25 @@ export class DLOBSubscriber {
188
199
  }
189
200
  }
190
201
 
191
- let oraclePriceData;
192
202
  const isPerp = isVariant(marketType, 'perp');
193
203
  if (isPerp) {
194
- oraclePriceData =
195
- this.velocityClient.getOracleDataForPerpMarket(marketIndex);
196
- } else {
197
- oraclePriceData =
198
- this.velocityClient.getOracleDataForSpotMarket(marketIndex);
204
+ const oraclePriceData =
205
+ this.velocityClient.getMMOracleDataForPerpMarket(marketIndex);
206
+
207
+ return this.dlob.getL3({
208
+ marketIndex,
209
+ marketType: MarketType.PERP,
210
+ oraclePriceData,
211
+ slot: this.slotSource.getSlot(),
212
+ });
199
213
  }
200
214
 
215
+ const oraclePriceData =
216
+ this.velocityClient.getOracleDataForSpotMarket(marketIndex);
217
+
201
218
  return this.dlob.getL3({
202
219
  marketIndex,
203
- marketType,
220
+ marketType: MarketType.SPOT,
204
221
  oraclePriceData,
205
222
  slot: this.slotSource.getSlot(),
206
223
  });
@@ -78,9 +78,10 @@ export class NodeList<NodeType extends keyof DLOBNodeMap>
78
78
  currentNode = currentNode.next;
79
79
  }
80
80
 
81
- newNode.next = currentNode.next;
82
- if (currentNode.next !== undefined) {
83
- newNode.next.previous = newNode;
81
+ const nextNode = currentNode.next;
82
+ newNode.next = nextNode;
83
+ if (nextNode !== undefined) {
84
+ nextNode.previous = newNode;
84
85
  }
85
86
  currentNode.next = newNode;
86
87
  newNode.previous = currentNode;
@@ -109,8 +110,8 @@ export class NodeList<NodeType extends keyof DLOBNodeMap>
109
110
 
110
111
  public update(order: Order, userAccount: string): void {
111
112
  const orderId = getOrderSignature(order.orderId, userAccount);
112
- if (this.nodeMap.has(orderId)) {
113
- const node = this.nodeMap.get(orderId);
113
+ const node = this.nodeMap.get(orderId);
114
+ if (node !== undefined) {
114
115
  Object.assign(node.order, order);
115
116
  node.haveFilled = false;
116
117
  }
@@ -118,8 +119,8 @@ export class NodeList<NodeType extends keyof DLOBNodeMap>
118
119
 
119
120
  public remove(order: Order, userAccount: string): void {
120
121
  const orderId = getOrderSignature(order.orderId, userAccount);
121
- if (this.nodeMap.has(orderId)) {
122
- const node = this.nodeMap.get(orderId);
122
+ const node = this.nodeMap.get(orderId);
123
+ if (node !== undefined) {
123
124
  if (node.next) {
124
125
  node.next.previous = node.previous;
125
126
  }
@@ -86,6 +86,9 @@ export function* getL2GeneratorFromDLOBNodes(
86
86
  slot: number
87
87
  ): Generator<L2Level> {
88
88
  for (const dlobNode of dlobNodes) {
89
+ if (!dlobNode.order) {
90
+ continue;
91
+ }
89
92
  const size = dlobNode.baseAssetAmount.sub(
90
93
  dlobNode.order.baseAssetAmountFilled
91
94
  ) as BN;
@@ -96,7 +99,7 @@ export function* getL2GeneratorFromDLOBNodes(
96
99
 
97
100
  yield {
98
101
  size,
99
- price: dlobNode.getPrice(oraclePriceData, slot),
102
+ price: dlobNode.getPriceOrThrow(oraclePriceData, slot),
100
103
  sources:
101
104
  dlobNode.userAccount == INDICATIVE_QUOTES_PUBKEY
102
105
  ? { indicative: size }
@@ -111,16 +114,21 @@ export function* mergeL2LevelGenerators(
111
114
  l2LevelGenerators: Generator<L2Level>[],
112
115
  compare: (a: L2Level, b: L2Level) => boolean
113
116
  ): Generator<L2Level> {
114
- const generators = l2LevelGenerators.map((generator) => {
117
+ type GeneratorState = {
118
+ generator: Generator<L2Level>;
119
+ next: IteratorResult<L2Level>;
120
+ };
121
+
122
+ const generators: GeneratorState[] = l2LevelGenerators.map((generator) => {
115
123
  return {
116
124
  generator,
117
125
  next: generator.next(),
118
126
  };
119
127
  });
120
128
 
121
- let next;
129
+ let next: GeneratorState | undefined;
122
130
  do {
123
- next = generators.reduce((best, next) => {
131
+ next = generators.reduce<GeneratorState | undefined>((best, next) => {
124
132
  if (next.next.done) {
125
133
  return best;
126
134
  }
@@ -154,9 +162,13 @@ export function createL2Levels(
154
162
  if (levels.length > 0 && levels[levels.length - 1].price.eq(price)) {
155
163
  const currentLevel = levels[levels.length - 1];
156
164
  currentLevel.size = currentLevel.size.add(size);
157
- for (const [source, size] of Object.entries(level.sources)) {
158
- if (currentLevel.sources[source]) {
159
- currentLevel.sources[source] = currentLevel.sources[source].add(size);
165
+ for (const [source, size] of Object.entries(level.sources) as [
166
+ liquiditySource,
167
+ BN,
168
+ ][]) {
169
+ const existingSize = currentLevel.sources[source];
170
+ if (existingSize) {
171
+ currentLevel.sources[source] = existingSize.add(size);
160
172
  } else {
161
173
  currentLevel.sources[source] = size;
162
174
  }
@@ -185,11 +197,7 @@ export function getVammL2Generator({
185
197
  topOfBookQuoteAmounts?: BN[];
186
198
  latestSlot?: BN;
187
199
  }): L2OrderBookGenerator {
188
- const updatedAmm = calculateUpdatedAMM(
189
- marketAccount.amm,
190
- marketAccount.totalExchangeFee,
191
- mmOraclePriceData
192
- );
200
+ const updatedAmm = calculateUpdatedAMM(marketAccount.amm, mmOraclePriceData);
193
201
  const paused = isOperationPaused(
194
202
  marketAccount.pausedOperations,
195
203
  PerpOperation.AMM_FILL
@@ -354,9 +362,13 @@ function groupL2Levels(
354
362
  );
355
363
 
356
364
  currentLevel.size = currentLevel.size.add(size);
357
- for (const [source, size] of Object.entries(level.sources)) {
358
- if (currentLevel.sources[source]) {
359
- currentLevel.sources[source] = currentLevel.sources[source].add(size);
365
+ for (const [source, size] of Object.entries(level.sources) as [
366
+ liquiditySource,
367
+ BN,
368
+ ][]) {
369
+ const existingSize = currentLevel.sources[source];
370
+ if (existingSize) {
371
+ currentLevel.sources[source] = existingSize.add(size);
360
372
  } else {
361
373
  currentLevel.sources[source] = size;
362
374
  }
@@ -386,12 +398,16 @@ const mergeByPrice = (bidsOrAsks: L2Level[]) => {
386
398
  const merged = new Map<string, L2Level>();
387
399
  for (const level of bidsOrAsks) {
388
400
  const key = level.price.toString();
389
- if (merged.has(key)) {
390
- const existing = merged.get(key);
401
+ const existing = merged.get(key);
402
+ if (existing) {
391
403
  existing.size = existing.size.add(level.size);
392
- for (const [source, size] of Object.entries(level.sources)) {
393
- if (existing.sources[source]) {
394
- existing.sources[source] = existing.sources[source].add(size);
404
+ for (const [source, size] of Object.entries(level.sources) as [
405
+ liquiditySource,
406
+ BN,
407
+ ][]) {
408
+ const existingSize = existing.sources[source];
409
+ if (existingSize) {
410
+ existing.sources[source] = existingSize.add(size);
395
411
  } else {
396
412
  existing.sources[source] = size;
397
413
  }
@@ -449,11 +465,15 @@ export function uncrossL2(
449
465
  levels[levels.length - 1].size = levels[levels.length - 1].size.add(
450
466
  oldLevel.size
451
467
  );
452
- for (const [source, size] of Object.entries(oldLevel.sources)) {
453
- if (levels[levels.length - 1].sources[source]) {
468
+ for (const [source, size] of Object.entries(oldLevel.sources) as [
469
+ liquiditySource,
470
+ BN,
471
+ ][]) {
472
+ const existingSize = levels[levels.length - 1].sources[source];
473
+ if (existingSize) {
454
474
  levels[levels.length - 1].sources = {
455
475
  ...levels[levels.length - 1].sources,
456
- [source]: levels[levels.length - 1].sources[source].add(size),
476
+ [source]: existingSize.add(size),
457
477
  };
458
478
  } else {
459
479
  levels[levels.length - 1].sources[source] = size;
@@ -473,8 +493,8 @@ export function uncrossL2(
473
493
 
474
494
  let bidIndex = 0;
475
495
  let askIndex = 0;
476
- let maxBid: BN;
477
- let minAsk: BN;
496
+ let maxBid: BN | undefined;
497
+ let minAsk: BN | undefined;
478
498
 
479
499
  const getPriceAndSetBound = (newPrice: BN, direction: PositionDirection) => {
480
500
  if (isVariant(direction, 'long')) {
@@ -51,7 +51,7 @@ export class EventList<Type extends EventType> {
51
51
  }
52
52
 
53
53
  newNode.next = currentNode.next;
54
- if (currentNode.next !== undefined) {
54
+ if (newNode.next !== undefined) {
55
55
  newNode.next.prev = newNode;
56
56
  } else {
57
57
  this.tail = newNode;
@@ -68,6 +68,9 @@ export class EventList<Type extends EventType> {
68
68
 
69
69
  detach(): void {
70
70
  const node = this.tail;
71
+ if (node === undefined) {
72
+ return;
73
+ }
71
74
  if (node.prev !== undefined) {
72
75
  node.prev.next = node.next;
73
76
  } else {
@@ -21,6 +21,7 @@ import {
21
21
  LogProviderType,
22
22
  StreamingLogProviderConfig,
23
23
  PollingLogProviderConfig,
24
+ LogProviderConfig,
24
25
  } from './types';
25
26
  import { TxEventCache } from './txEventCache';
26
27
  import { EventList } from './eventList';
@@ -39,12 +40,21 @@ export class EventSubscriber {
39
40
  private txEventCache: TxEventCache;
40
41
  private awaitTxPromises = new Map<string, Promise<void>>();
41
42
  private awaitTxResolver = new Map<string, () => void>();
42
- private logProvider: LogProvider;
43
+ private _logProvider?: LogProvider;
43
44
  private _currentProviderType: LogProviderType;
44
45
  public eventEmitter: StrictEventEmitter<EventEmitter, EventSubscriberEvents>;
45
- private lastSeenSlot: number;
46
+ private lastSeenSlot: number | undefined;
46
47
  private lastSeenBlockTime: number | undefined;
47
- public lastSeenTxSig: string;
48
+ public lastSeenTxSig: string | undefined;
49
+
50
+ private get logProvider(): LogProvider {
51
+ if (!this._logProvider) {
52
+ throw new Error(
53
+ 'EventSubscriber: logProvider accessed before initializeLogProvider()'
54
+ );
55
+ }
56
+ return this._logProvider;
57
+ }
48
58
 
49
59
  public constructor(
50
60
  private connection: Connection,
@@ -57,26 +67,38 @@ export class EventSubscriber {
57
67
  this.eventListMap = new Map<EventType, EventList<EventType>>();
58
68
  this.eventEmitter = new EventEmitter();
59
69
 
60
- this._currentProviderType = this.options.logProviderConfig.type;
70
+ this._currentProviderType = this.getLogProviderConfig().type;
61
71
  this.initializeLogProvider();
62
72
  }
63
73
 
74
+ private getLogProviderConfig(): LogProviderConfig {
75
+ if (this.options.logProviderConfig === undefined) {
76
+ throw new Error('EventSubscriber: logProviderConfig is not set');
77
+ }
78
+ return this.options.logProviderConfig;
79
+ }
80
+
81
+ private getEventTypes(): EventType[] {
82
+ if (this.options.eventTypes === undefined) {
83
+ throw new Error('EventSubscriber: eventTypes is not set');
84
+ }
85
+ return this.options.eventTypes;
86
+ }
87
+
64
88
  get currentProviderType() {
65
89
  return this._currentProviderType;
66
90
  }
67
91
 
68
92
  private initializeLogProvider(subscribe = false) {
69
- const logProviderConfig = this.options.logProviderConfig;
93
+ const logProviderConfig = this.getLogProviderConfig();
70
94
 
71
95
  if (this._currentProviderType === 'websocket') {
72
- this.logProvider = new WebSocketLogProvider(
96
+ this._logProvider = new WebSocketLogProvider(
73
97
  // @ts-ignore
74
98
  this.connection,
75
99
  this.address,
76
- this.options.commitment,
77
- (
78
- this.options.logProviderConfig as WebSocketLogProviderConfig
79
- ).resubTimeoutMs
100
+ this.options.commitment ?? 'confirmed',
101
+ (logProviderConfig as WebSocketLogProviderConfig).resubTimeoutMs
80
102
  );
81
103
  } else if (this._currentProviderType === 'polling') {
82
104
  const frequency =
@@ -88,18 +110,18 @@ export class EventSubscriber {
88
110
  ? (logProviderConfig as PollingLogProviderConfig).batchSize
89
111
  : (logProviderConfig as StreamingLogProviderConfig).fallbackBatchSize;
90
112
 
91
- this.logProvider = new PollingLogProvider(
113
+ this._logProvider = new PollingLogProvider(
92
114
  // @ts-ignore
93
115
  this.connection,
94
116
  this.address,
95
- this.options.commitment,
117
+ this.options.commitment ?? 'confirmed',
96
118
  frequency,
97
119
  batchSize
98
120
  );
99
121
  } else if (this._currentProviderType === 'events-server') {
100
- this.logProvider = new EventsServerLogProvider(
122
+ this._logProvider = new EventsServerLogProvider(
101
123
  (logProviderConfig as EventsServerLogProviderConfig).url,
102
- this.options.eventTypes,
124
+ this.getEventTypes(),
103
125
  this.options.address ? this.options.address.toString() : undefined
104
126
  );
105
127
  } else {
@@ -126,14 +148,26 @@ export class EventSubscriber {
126
148
  }
127
149
 
128
150
  private populateInitialEventListMap() {
129
- for (const eventType of this.options.eventTypes) {
151
+ const maxEventsPerType = this.options.maxEventsPerType;
152
+ const orderBy = this.options.orderBy;
153
+ const orderDir = this.options.orderDir;
154
+ if (
155
+ maxEventsPerType === undefined ||
156
+ orderBy === undefined ||
157
+ orderDir === undefined
158
+ ) {
159
+ throw new Error(
160
+ 'EventSubscriber: maxEventsPerType, orderBy and orderDir must be set'
161
+ );
162
+ }
163
+ for (const eventType of this.getEventTypes()) {
130
164
  this.eventListMap.set(
131
165
  eventType,
132
166
  new EventList(
133
167
  eventType,
134
- this.options.maxEventsPerType,
135
- getSortFn(this.options.orderBy, this.options.orderDir),
136
- this.options.orderDir
168
+ maxEventsPerType,
169
+ getSortFn(orderBy, orderDir),
170
+ orderDir
137
171
  )
138
172
  );
139
173
  }
@@ -175,30 +209,33 @@ export class EventSubscriber {
175
209
  this.populateInitialEventListMap();
176
210
 
177
211
  if (
178
- this.options.logProviderConfig.type === 'websocket' ||
179
- this.options.logProviderConfig.type === 'events-server'
212
+ this.getLogProviderConfig().type === 'websocket' ||
213
+ this.getLogProviderConfig().type === 'events-server'
180
214
  ) {
181
- const logProviderConfig = this.options
182
- .logProviderConfig as StreamingLogProviderConfig;
183
-
184
- if (this.logProvider.eventEmitter) {
185
- this.logProvider.eventEmitter.on(
186
- 'reconnect',
187
- async (reconnectAttempts) => {
188
- if (reconnectAttempts > logProviderConfig.maxReconnectAttempts) {
189
- console.log(
190
- `EventSubscriber: Reconnect attempts ${reconnectAttempts}/${logProviderConfig.maxReconnectAttempts}, reconnecting...`
191
- );
192
- this.logProvider.eventEmitter.removeAllListeners('reconnect');
193
- await this.unsubscribe();
194
- this.updateFallbackProviderType(
195
- reconnectAttempts,
196
- logProviderConfig.maxReconnectAttempts
197
- );
198
- this.initializeLogProvider(true);
199
- }
215
+ const logProviderConfig =
216
+ this.getLogProviderConfig() as StreamingLogProviderConfig;
217
+ // `maxReconnectAttempts` is optional; when unset the original
218
+ // `reconnectAttempts > undefined` comparison was always false, so
219
+ // fall back to Infinity to preserve that never-trigger behavior.
220
+ const maxReconnectAttempts =
221
+ logProviderConfig.maxReconnectAttempts ?? Infinity;
222
+
223
+ const eventEmitter = this.logProvider.eventEmitter;
224
+ if (eventEmitter) {
225
+ eventEmitter.on('reconnect', async (reconnectAttempts) => {
226
+ if (reconnectAttempts > maxReconnectAttempts) {
227
+ console.log(
228
+ `EventSubscriber: Reconnect attempts ${reconnectAttempts}/${maxReconnectAttempts}, reconnecting...`
229
+ );
230
+ eventEmitter.removeAllListeners('reconnect');
231
+ await this.unsubscribe();
232
+ this.updateFallbackProviderType(
233
+ reconnectAttempts,
234
+ maxReconnectAttempts
235
+ );
236
+ this.initializeLogProvider(true);
200
237
  }
201
- );
238
+ });
202
239
  }
203
240
  }
204
241
  this.logProvider.subscribe(
@@ -243,7 +280,13 @@ export class EventSubscriber {
243
280
  );
244
281
 
245
282
  for (const wrappedEvent of wrappedEvents) {
246
- this.eventListMap.get(wrappedEvent.eventType).insert(wrappedEvent);
283
+ const eventList = this.eventListMap.get(wrappedEvent.eventType);
284
+ if (eventList === undefined) {
285
+ throw new Error(
286
+ `EventSubscriber: no EventList for eventType ${wrappedEvent.eventType}`
287
+ );
288
+ }
289
+ eventList.insert(wrappedEvent);
247
290
  }
248
291
 
249
292
  // dont emit event till we've added all the events to the eventListMap
@@ -253,7 +296,10 @@ export class EventSubscriber {
253
296
 
254
297
  if (this.awaitTxPromises.has(txSig)) {
255
298
  this.awaitTxPromises.delete(txSig);
256
- this.awaitTxResolver.get(txSig)();
299
+ const resolver = this.awaitTxResolver.get(txSig);
300
+ if (resolver !== undefined) {
301
+ resolver();
302
+ }
257
303
  this.awaitTxResolver.delete(txSig);
258
304
  }
259
305
 
@@ -264,7 +310,8 @@ export class EventSubscriber {
264
310
 
265
311
  if (
266
312
  this.lastSeenBlockTime === undefined ||
267
- mostRecentBlockTime > this.lastSeenBlockTime
313
+ (mostRecentBlockTime !== undefined &&
314
+ mostRecentBlockTime > this.lastSeenBlockTime)
268
315
  ) {
269
316
  this.lastSeenBlockTime = mostRecentBlockTime;
270
317
  }
@@ -278,9 +325,13 @@ export class EventSubscriber {
278
325
  }
279
326
 
280
327
  let txFetched = 0;
281
- let beforeTx: TransactionSignature = undefined;
282
- const untilTx: TransactionSignature = this.options.untilTx;
283
- while (txFetched < this.options.maxTx) {
328
+ let beforeTx: TransactionSignature | undefined = undefined;
329
+ const untilTx: TransactionSignature | undefined = this.options.untilTx;
330
+ const maxTx = this.options.maxTx;
331
+ if (maxTx === undefined) {
332
+ throw new Error('EventSubscriber: maxTx is not set');
333
+ }
334
+ while (txFetched < maxTx) {
284
335
  const response = await fetchLogs(
285
336
  // @ts-ignore
286
337
  this.connection,
@@ -343,8 +394,9 @@ export class EventSubscriber {
343
394
  }
344
395
 
345
396
  public awaitTx(txSig: TransactionSignature): Promise<void> {
346
- if (this.awaitTxPromises.has(txSig)) {
347
- return this.awaitTxPromises.get(txSig);
397
+ const existingPromise = this.awaitTxPromises.get(txSig);
398
+ if (existingPromise !== undefined) {
399
+ return existingPromise;
348
400
  }
349
401
 
350
402
  if (this.txEventCache.has(txSig)) {
@@ -373,7 +425,13 @@ export class EventSubscriber {
373
425
  public getEventsArray<Type extends EventType>(
374
426
  eventType: Type
375
427
  ): EventMap[Type][] {
376
- return this.eventListMap.get(eventType).toArray() as EventMap[Type][];
428
+ const eventList = this.eventListMap.get(eventType);
429
+ if (eventList === undefined) {
430
+ throw new Error(
431
+ `EventSubscriber: no EventList for eventType ${eventType}`
432
+ );
433
+ }
434
+ return eventList.toArray() as EventMap[Type][];
377
435
  }
378
436
 
379
437
  public getEventsByTx(txSig: TransactionSignature): WrappedEvents | undefined {