@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
@@ -2,8 +2,10 @@
2
2
  import { BN } from '../isomorphic/anchor';
3
3
  import { MarketTypeStr, Order } from '../types';
4
4
  import { MMOraclePriceData, OraclePriceData } from '../oracles/types';
5
+ export type NodeOraclePriceData<T extends MarketTypeStr = MarketTypeStr> = T extends 'spot' ? OraclePriceData : MMOraclePriceData;
5
6
  export interface DLOBNode {
6
- getPrice<T extends MarketTypeStr>(oraclePriceData: T extends 'spot' ? OraclePriceData : MMOraclePriceData, slot: number): BN;
7
+ getPrice<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number): BN | undefined;
8
+ getPriceOrThrow<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number): BN;
7
9
  isVammNode(): boolean;
8
10
  order: Order | undefined;
9
11
  isBaseFilled(): boolean;
@@ -23,7 +25,8 @@ export declare abstract class OrderNode implements DLOBNode {
23
25
  constructor(order: Order, userAccount: string, baseAssetAmount?: BN, isSignedMsg?: boolean);
24
26
  abstract getSortValue(order: Order): BN;
25
27
  getLabel(): string;
26
- getPrice<T extends MarketTypeStr>(oraclePriceData: T extends 'spot' ? OraclePriceData : MMOraclePriceData, slot: number): BN;
28
+ getPrice<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number): BN | undefined;
29
+ getPriceOrThrow<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number): BN;
27
30
  isBaseFilled(): boolean;
28
31
  isVammNode(): boolean;
29
32
  }
@@ -33,6 +33,13 @@ class OrderNode {
33
33
  getPrice(oraclePriceData, slot) {
34
34
  return (0, orders_1.getLimitPrice)(this.order, oraclePriceData, slot);
35
35
  }
36
+ getPriceOrThrow(oraclePriceData, slot) {
37
+ const price = this.getPrice(oraclePriceData, slot);
38
+ if (price === undefined) {
39
+ throw new Error(`OrderNode.getPrice: order ${this.order.orderId} has no limit price`);
40
+ }
41
+ return price;
42
+ }
36
43
  isBaseFilled() {
37
44
  return this.order.baseAssetAmountFilled.eq(this.order.baseAssetAmount);
38
45
  }
@@ -29,7 +29,7 @@ class DLOBSubscriber {
29
29
  this.eventEmitter.emit('update', this.dlob);
30
30
  }
31
31
  catch (e) {
32
- this.eventEmitter.emit('error', e);
32
+ this.eventEmitter.emit('error', e instanceof Error ? e : new Error(String(e)));
33
33
  }
34
34
  }, this.updateFrequency);
35
35
  }
@@ -64,35 +64,39 @@ class DLOBSubscriber {
64
64
  throw new Error('Either marketName or marketIndex and marketType must be provided');
65
65
  }
66
66
  }
67
- let oraclePriceData;
68
67
  const isPerp = (0, types_1.isVariant)(marketType, 'perp');
69
68
  if (isPerp) {
70
- const perpMarketAccount = this.velocityClient.getPerpMarketAccount(marketIndex);
71
- oraclePriceData = this.velocityClient.getOracleDataForPerpMarket(perpMarketAccount.marketIndex);
72
- }
73
- else {
74
- oraclePriceData =
75
- this.velocityClient.getOracleDataForSpotMarket(marketIndex);
76
- }
77
- if (isPerp && includeVamm) {
78
- if (fallbackL2Generators.length > 0) {
79
- throw new Error('includeVamm can only be used if fallbackL2Generators is empty');
69
+ const perpMarketAccount = this.velocityClient.getPerpMarketAccountOrThrow(marketIndex);
70
+ const oraclePriceData = this.velocityClient.getMMOracleDataForPerpMarket(perpMarketAccount.marketIndex);
71
+ if (includeVamm) {
72
+ if (fallbackL2Generators.length > 0) {
73
+ throw new Error('includeVamm can only be used if fallbackL2Generators is empty');
74
+ }
75
+ fallbackL2Generators = [
76
+ (0, orderBookLevels_1.getVammL2Generator)({
77
+ marketAccount: perpMarketAccount,
78
+ mmOraclePriceData: this.velocityClient.getMMOracleDataForPerpMarket(marketIndex),
79
+ numOrders: numVammOrders !== null && numVammOrders !== void 0 ? numVammOrders : depth,
80
+ topOfBookQuoteAmounts: marketIndex < 3
81
+ ? orderBookLevels_1.MAJORS_TOP_OF_BOOK_QUOTE_AMOUNTS
82
+ : orderBookLevels_1.DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS,
83
+ latestSlot,
84
+ }),
85
+ ];
80
86
  }
81
- fallbackL2Generators = [
82
- (0, orderBookLevels_1.getVammL2Generator)({
83
- marketAccount: this.velocityClient.getPerpMarketAccount(marketIndex),
84
- mmOraclePriceData: this.velocityClient.getMMOracleDataForPerpMarket(marketIndex),
85
- numOrders: numVammOrders !== null && numVammOrders !== void 0 ? numVammOrders : depth,
86
- topOfBookQuoteAmounts: marketIndex < 3
87
- ? orderBookLevels_1.MAJORS_TOP_OF_BOOK_QUOTE_AMOUNTS
88
- : orderBookLevels_1.DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS,
89
- latestSlot,
90
- }),
91
- ];
87
+ return this.dlob.getL2({
88
+ marketIndex,
89
+ marketType: types_1.MarketType.PERP,
90
+ depth,
91
+ oraclePriceData,
92
+ slot: this.slotSource.getSlot(),
93
+ fallbackL2Generators: fallbackL2Generators,
94
+ });
92
95
  }
96
+ const oraclePriceData = this.velocityClient.getOracleDataForSpotMarket(marketIndex);
93
97
  return this.dlob.getL2({
94
98
  marketIndex,
95
- marketType,
99
+ marketType: types_1.MarketType.SPOT,
96
100
  depth,
97
101
  oraclePriceData,
98
102
  slot: this.slotSource.getSlot(),
@@ -120,19 +124,20 @@ class DLOBSubscriber {
120
124
  throw new Error('Either marketName or marketIndex and marketType must be provided');
121
125
  }
122
126
  }
123
- let oraclePriceData;
124
127
  const isPerp = (0, types_1.isVariant)(marketType, 'perp');
125
128
  if (isPerp) {
126
- oraclePriceData =
127
- this.velocityClient.getOracleDataForPerpMarket(marketIndex);
128
- }
129
- else {
130
- oraclePriceData =
131
- this.velocityClient.getOracleDataForSpotMarket(marketIndex);
129
+ const oraclePriceData = this.velocityClient.getMMOracleDataForPerpMarket(marketIndex);
130
+ return this.dlob.getL3({
131
+ marketIndex,
132
+ marketType: types_1.MarketType.PERP,
133
+ oraclePriceData,
134
+ slot: this.slotSource.getSlot(),
135
+ });
132
136
  }
137
+ const oraclePriceData = this.velocityClient.getOracleDataForSpotMarket(marketIndex);
133
138
  return this.dlob.getL3({
134
139
  marketIndex,
135
- marketType,
140
+ marketType: types_1.MarketType.SPOT,
136
141
  oraclePriceData,
137
142
  slot: this.slotSource.getSlot(),
138
143
  });
@@ -45,9 +45,10 @@ class NodeList {
45
45
  !this.prependNode(currentNode.next, newNode)) {
46
46
  currentNode = currentNode.next;
47
47
  }
48
- newNode.next = currentNode.next;
49
- if (currentNode.next !== undefined) {
50
- newNode.next.previous = newNode;
48
+ const nextNode = currentNode.next;
49
+ newNode.next = nextNode;
50
+ if (nextNode !== undefined) {
51
+ nextNode.previous = newNode;
51
52
  }
52
53
  currentNode.next = newNode;
53
54
  newNode.previous = currentNode;
@@ -69,16 +70,16 @@ class NodeList {
69
70
  }
70
71
  update(order, userAccount) {
71
72
  const orderId = getOrderSignature(order.orderId, userAccount);
72
- if (this.nodeMap.has(orderId)) {
73
- const node = this.nodeMap.get(orderId);
73
+ const node = this.nodeMap.get(orderId);
74
+ if (node !== undefined) {
74
75
  Object.assign(node.order, order);
75
76
  node.haveFilled = false;
76
77
  }
77
78
  }
78
79
  remove(order, userAccount) {
79
80
  const orderId = getOrderSignature(order.orderId, userAccount);
80
- if (this.nodeMap.has(orderId)) {
81
- const node = this.nodeMap.get(orderId);
81
+ const node = this.nodeMap.get(orderId);
82
+ if (node !== undefined) {
82
83
  if (node.next) {
83
84
  node.next.previous = node.previous;
84
85
  }
@@ -28,13 +28,16 @@ const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz';
28
28
  */
29
29
  function* getL2GeneratorFromDLOBNodes(dlobNodes, oraclePriceData, slot) {
30
30
  for (const dlobNode of dlobNodes) {
31
+ if (!dlobNode.order) {
32
+ continue;
33
+ }
31
34
  const size = dlobNode.baseAssetAmount.sub(dlobNode.order.baseAssetAmountFilled);
32
35
  if (size.lte(numericConstants_1.ZERO)) {
33
36
  continue;
34
37
  }
35
38
  yield {
36
39
  size,
37
- price: dlobNode.getPrice(oraclePriceData, slot),
40
+ price: dlobNode.getPriceOrThrow(oraclePriceData, slot),
38
41
  sources: dlobNode.userAccount == INDICATIVE_QUOTES_PUBKEY
39
42
  ? { indicative: size }
40
43
  : {
@@ -83,8 +86,9 @@ function createL2Levels(generator, depth) {
83
86
  const currentLevel = levels[levels.length - 1];
84
87
  currentLevel.size = currentLevel.size.add(size);
85
88
  for (const [source, size] of Object.entries(level.sources)) {
86
- if (currentLevel.sources[source]) {
87
- currentLevel.sources[source] = currentLevel.sources[source].add(size);
89
+ const existingSize = currentLevel.sources[source];
90
+ if (existingSize) {
91
+ currentLevel.sources[source] = existingSize.add(size);
88
92
  }
89
93
  else {
90
94
  currentLevel.sources[source] = size;
@@ -102,7 +106,7 @@ function createL2Levels(generator, depth) {
102
106
  }
103
107
  exports.createL2Levels = createL2Levels;
104
108
  function getVammL2Generator({ marketAccount, mmOraclePriceData, numOrders, now = new anchor_1.BN(Math.floor(Date.now() / 1000)), topOfBookQuoteAmounts = [], latestSlot, }) {
105
- const updatedAmm = (0, amm_1.calculateUpdatedAMM)(marketAccount.amm, marketAccount.totalExchangeFee, mmOraclePriceData);
109
+ const updatedAmm = (0, amm_1.calculateUpdatedAMM)(marketAccount.amm, mmOraclePriceData);
106
110
  const paused = (0, exchangeStatus_1.isOperationPaused)(marketAccount.pausedOperations, types_1.PerpOperation.AMM_FILL);
107
111
  let [openBids, openAsks] = paused
108
112
  ? [numericConstants_1.ZERO, numericConstants_1.ZERO]
@@ -208,8 +212,9 @@ function groupL2Levels(levels, grouping, direction, depth) {
208
212
  const currentLevel = cloneL2Level(groupedLevels[groupedLevels.length - 1]);
209
213
  currentLevel.size = currentLevel.size.add(size);
210
214
  for (const [source, size] of Object.entries(level.sources)) {
211
- if (currentLevel.sources[source]) {
212
- currentLevel.sources[source] = currentLevel.sources[source].add(size);
215
+ const existingSize = currentLevel.sources[source];
216
+ if (existingSize) {
217
+ currentLevel.sources[source] = existingSize.add(size);
213
218
  }
214
219
  else {
215
220
  currentLevel.sources[source] = size;
@@ -238,12 +243,13 @@ const mergeByPrice = (bidsOrAsks) => {
238
243
  const merged = new Map();
239
244
  for (const level of bidsOrAsks) {
240
245
  const key = level.price.toString();
241
- if (merged.has(key)) {
242
- const existing = merged.get(key);
246
+ const existing = merged.get(key);
247
+ if (existing) {
243
248
  existing.size = existing.size.add(level.size);
244
249
  for (const [source, size] of Object.entries(level.sources)) {
245
- if (existing.sources[source]) {
246
- existing.sources[source] = existing.sources[source].add(size);
250
+ const existingSize = existing.sources[source];
251
+ if (existingSize) {
252
+ existing.sources[source] = existingSize.add(size);
247
253
  }
248
254
  else {
249
255
  existing.sources[source] = size;
@@ -289,10 +295,11 @@ function uncrossL2(bids, asks, oraclePrice, oracleTwap5Min, markTwap5Min, groupi
289
295
  if (levels.length > 0 && levels[levels.length - 1].price.eq(newPrice)) {
290
296
  levels[levels.length - 1].size = levels[levels.length - 1].size.add(oldLevel.size);
291
297
  for (const [source, size] of Object.entries(oldLevel.sources)) {
292
- if (levels[levels.length - 1].sources[source]) {
298
+ const existingSize = levels[levels.length - 1].sources[source];
299
+ if (existingSize) {
293
300
  levels[levels.length - 1].sources = {
294
301
  ...levels[levels.length - 1].sources,
295
- [source]: levels[levels.length - 1].sources[source].add(size),
302
+ [source]: existingSize.add(size),
296
303
  };
297
304
  }
298
305
  else {
@@ -37,7 +37,7 @@ class EventList {
37
37
  currentNode = currentNode.next;
38
38
  }
39
39
  newNode.next = currentNode.next;
40
- if (currentNode.next !== undefined) {
40
+ if (newNode.next !== undefined) {
41
41
  newNode.next.prev = newNode;
42
42
  }
43
43
  else {
@@ -52,6 +52,9 @@ class EventList {
52
52
  }
53
53
  detach() {
54
54
  const node = this.tail;
55
+ if (node === undefined) {
56
+ return;
57
+ }
55
58
  if (node.prev !== undefined) {
56
59
  node.prev.next = node.next;
57
60
  }
@@ -22,13 +22,16 @@ export declare class EventSubscriber {
22
22
  private txEventCache;
23
23
  private awaitTxPromises;
24
24
  private awaitTxResolver;
25
- private logProvider;
25
+ private _logProvider?;
26
26
  private _currentProviderType;
27
27
  eventEmitter: StrictEventEmitter<EventEmitter, EventSubscriberEvents>;
28
28
  private lastSeenSlot;
29
29
  private lastSeenBlockTime;
30
- lastSeenTxSig: string;
30
+ lastSeenTxSig: string | undefined;
31
+ private get logProvider();
31
32
  constructor(connection: Connection, program: Program, options?: EventSubscriptionOptions);
33
+ private getLogProviderConfig;
34
+ private getEventTypes;
32
35
  get currentProviderType(): LogProviderType;
33
36
  private initializeLogProvider;
34
37
  private populateInitialEventListMap;
@@ -12,6 +12,12 @@ const sort_1 = require("./sort");
12
12
  const parse_1 = require("./parse");
13
13
  const eventsServerLogProvider_1 = require("./eventsServerLogProvider");
14
14
  class EventSubscriber {
15
+ get logProvider() {
16
+ if (!this._logProvider) {
17
+ throw new Error('EventSubscriber: logProvider accessed before initializeLogProvider()');
18
+ }
19
+ return this._logProvider;
20
+ }
15
21
  constructor(connection, program, options = types_1.DefaultEventSubscriptionOptions) {
16
22
  var _a;
17
23
  this.connection = connection;
@@ -24,18 +30,31 @@ class EventSubscriber {
24
30
  this.txEventCache = new txEventCache_1.TxEventCache(this.options.maxTx);
25
31
  this.eventListMap = new Map();
26
32
  this.eventEmitter = new events_1.EventEmitter();
27
- this._currentProviderType = this.options.logProviderConfig.type;
33
+ this._currentProviderType = this.getLogProviderConfig().type;
28
34
  this.initializeLogProvider();
29
35
  }
36
+ getLogProviderConfig() {
37
+ if (this.options.logProviderConfig === undefined) {
38
+ throw new Error('EventSubscriber: logProviderConfig is not set');
39
+ }
40
+ return this.options.logProviderConfig;
41
+ }
42
+ getEventTypes() {
43
+ if (this.options.eventTypes === undefined) {
44
+ throw new Error('EventSubscriber: eventTypes is not set');
45
+ }
46
+ return this.options.eventTypes;
47
+ }
30
48
  get currentProviderType() {
31
49
  return this._currentProviderType;
32
50
  }
33
51
  initializeLogProvider(subscribe = false) {
34
- const logProviderConfig = this.options.logProviderConfig;
52
+ var _a, _b;
53
+ const logProviderConfig = this.getLogProviderConfig();
35
54
  if (this._currentProviderType === 'websocket') {
36
- this.logProvider = new webSocketLogProvider_1.WebSocketLogProvider(
55
+ this._logProvider = new webSocketLogProvider_1.WebSocketLogProvider(
37
56
  // @ts-ignore
38
- this.connection, this.address, this.options.commitment, this.options.logProviderConfig.resubTimeoutMs);
57
+ this.connection, this.address, (_a = this.options.commitment) !== null && _a !== void 0 ? _a : 'confirmed', logProviderConfig.resubTimeoutMs);
39
58
  }
40
59
  else if (this._currentProviderType === 'polling') {
41
60
  const frequency = 'frequency' in logProviderConfig
@@ -44,12 +63,12 @@ class EventSubscriber {
44
63
  const batchSize = 'batchSize' in logProviderConfig
45
64
  ? logProviderConfig.batchSize
46
65
  : logProviderConfig.fallbackBatchSize;
47
- this.logProvider = new pollingLogProvider_1.PollingLogProvider(
66
+ this._logProvider = new pollingLogProvider_1.PollingLogProvider(
48
67
  // @ts-ignore
49
- this.connection, this.address, this.options.commitment, frequency, batchSize);
68
+ this.connection, this.address, (_b = this.options.commitment) !== null && _b !== void 0 ? _b : 'confirmed', frequency, batchSize);
50
69
  }
51
70
  else if (this._currentProviderType === 'events-server') {
52
- this.logProvider = new eventsServerLogProvider_1.EventsServerLogProvider(logProviderConfig.url, this.options.eventTypes, this.options.address ? this.options.address.toString() : undefined);
71
+ this._logProvider = new eventsServerLogProvider_1.EventsServerLogProvider(logProviderConfig.url, this.getEventTypes(), this.options.address ? this.options.address.toString() : undefined);
53
72
  }
54
73
  else {
55
74
  throw new Error(`Invalid log provider type: ${this._currentProviderType}`);
@@ -61,8 +80,16 @@ class EventSubscriber {
61
80
  }
62
81
  }
63
82
  populateInitialEventListMap() {
64
- for (const eventType of this.options.eventTypes) {
65
- this.eventListMap.set(eventType, new eventList_1.EventList(eventType, this.options.maxEventsPerType, (0, sort_1.getSortFn)(this.options.orderBy, this.options.orderDir), this.options.orderDir));
83
+ const maxEventsPerType = this.options.maxEventsPerType;
84
+ const orderBy = this.options.orderBy;
85
+ const orderDir = this.options.orderDir;
86
+ if (maxEventsPerType === undefined ||
87
+ orderBy === undefined ||
88
+ orderDir === undefined) {
89
+ throw new Error('EventSubscriber: maxEventsPerType, orderBy and orderDir must be set');
90
+ }
91
+ for (const eventType of this.getEventTypes()) {
92
+ this.eventListMap.set(eventType, new eventList_1.EventList(eventType, maxEventsPerType, (0, sort_1.getSortFn)(orderBy, orderDir), orderDir));
66
93
  }
67
94
  }
68
95
  /**
@@ -87,22 +114,27 @@ class EventSubscriber {
87
114
  this._currentProviderType = nextProviderType;
88
115
  }
89
116
  async subscribe() {
117
+ var _a;
90
118
  try {
91
119
  if (this.logProvider.isSubscribed()) {
92
120
  return true;
93
121
  }
94
122
  this.populateInitialEventListMap();
95
- if (this.options.logProviderConfig.type === 'websocket' ||
96
- this.options.logProviderConfig.type === 'events-server') {
97
- const logProviderConfig = this.options
98
- .logProviderConfig;
99
- if (this.logProvider.eventEmitter) {
100
- this.logProvider.eventEmitter.on('reconnect', async (reconnectAttempts) => {
101
- if (reconnectAttempts > logProviderConfig.maxReconnectAttempts) {
102
- console.log(`EventSubscriber: Reconnect attempts ${reconnectAttempts}/${logProviderConfig.maxReconnectAttempts}, reconnecting...`);
103
- this.logProvider.eventEmitter.removeAllListeners('reconnect');
123
+ if (this.getLogProviderConfig().type === 'websocket' ||
124
+ this.getLogProviderConfig().type === 'events-server') {
125
+ const logProviderConfig = this.getLogProviderConfig();
126
+ // `maxReconnectAttempts` is optional; when unset the original
127
+ // `reconnectAttempts > undefined` comparison was always false, so
128
+ // fall back to Infinity to preserve that never-trigger behavior.
129
+ const maxReconnectAttempts = (_a = logProviderConfig.maxReconnectAttempts) !== null && _a !== void 0 ? _a : Infinity;
130
+ const eventEmitter = this.logProvider.eventEmitter;
131
+ if (eventEmitter) {
132
+ eventEmitter.on('reconnect', async (reconnectAttempts) => {
133
+ if (reconnectAttempts > maxReconnectAttempts) {
134
+ console.log(`EventSubscriber: Reconnect attempts ${reconnectAttempts}/${maxReconnectAttempts}, reconnecting...`);
135
+ eventEmitter.removeAllListeners('reconnect');
104
136
  await this.unsubscribe();
105
- this.updateFallbackProviderType(reconnectAttempts, logProviderConfig.maxReconnectAttempts);
137
+ this.updateFallbackProviderType(reconnectAttempts, maxReconnectAttempts);
106
138
  this.initializeLogProvider(true);
107
139
  }
108
140
  });
@@ -125,7 +157,11 @@ class EventSubscriber {
125
157
  }
126
158
  const wrappedEvents = this.parseEventsFromLogs(txSig, slot, logs, txSigIndex);
127
159
  for (const wrappedEvent of wrappedEvents) {
128
- this.eventListMap.get(wrappedEvent.eventType).insert(wrappedEvent);
160
+ const eventList = this.eventListMap.get(wrappedEvent.eventType);
161
+ if (eventList === undefined) {
162
+ throw new Error(`EventSubscriber: no EventList for eventType ${wrappedEvent.eventType}`);
163
+ }
164
+ eventList.insert(wrappedEvent);
129
165
  }
130
166
  // dont emit event till we've added all the events to the eventListMap
131
167
  for (const wrappedEvent of wrappedEvents) {
@@ -133,7 +169,10 @@ class EventSubscriber {
133
169
  }
134
170
  if (this.awaitTxPromises.has(txSig)) {
135
171
  this.awaitTxPromises.delete(txSig);
136
- this.awaitTxResolver.get(txSig)();
172
+ const resolver = this.awaitTxResolver.get(txSig);
173
+ if (resolver !== undefined) {
174
+ resolver();
175
+ }
137
176
  this.awaitTxResolver.delete(txSig);
138
177
  }
139
178
  if (!this.lastSeenSlot || slot > this.lastSeenSlot) {
@@ -141,7 +180,8 @@ class EventSubscriber {
141
180
  this.lastSeenSlot = slot;
142
181
  }
143
182
  if (this.lastSeenBlockTime === undefined ||
144
- mostRecentBlockTime > this.lastSeenBlockTime) {
183
+ (mostRecentBlockTime !== undefined &&
184
+ mostRecentBlockTime > this.lastSeenBlockTime)) {
145
185
  this.lastSeenBlockTime = mostRecentBlockTime;
146
186
  }
147
187
  this.txEventCache.add(txSig, wrappedEvents);
@@ -153,7 +193,11 @@ class EventSubscriber {
153
193
  let txFetched = 0;
154
194
  let beforeTx = undefined;
155
195
  const untilTx = this.options.untilTx;
156
- while (txFetched < this.options.maxTx) {
196
+ const maxTx = this.options.maxTx;
197
+ if (maxTx === undefined) {
198
+ throw new Error('EventSubscriber: maxTx is not set');
199
+ }
200
+ while (txFetched < maxTx) {
157
201
  const response = await (0, fetchLogs_1.fetchLogs)(
158
202
  // @ts-ignore
159
203
  this.connection, this.address, this.options.commitment === 'finalized' ? 'finalized' : 'confirmed', beforeTx, untilTx);
@@ -198,8 +242,9 @@ class EventSubscriber {
198
242
  return records;
199
243
  }
200
244
  awaitTx(txSig) {
201
- if (this.awaitTxPromises.has(txSig)) {
202
- return this.awaitTxPromises.get(txSig);
245
+ const existingPromise = this.awaitTxPromises.get(txSig);
246
+ if (existingPromise !== undefined) {
247
+ return existingPromise;
203
248
  }
204
249
  if (this.txEventCache.has(txSig)) {
205
250
  return Promise.resolve();
@@ -220,7 +265,11 @@ class EventSubscriber {
220
265
  * @param eventType
221
266
  */
222
267
  getEventsArray(eventType) {
223
- return this.eventListMap.get(eventType).toArray();
268
+ const eventList = this.eventListMap.get(eventType);
269
+ if (eventList === undefined) {
270
+ throw new Error(`EventSubscriber: no EventList for eventType ${eventType}`);
271
+ }
272
+ return eventList.toArray();
224
273
  }
225
274
  getEventsByTx(txSig) {
226
275
  return this.txEventCache.get(txSig);
@@ -12,7 +12,7 @@ export declare class EventsServerLogProvider implements LogProvider {
12
12
  private lastHeartbeat;
13
13
  private timeoutId?;
14
14
  private reconnectAttempts;
15
- eventEmitter?: EventEmitter;
15
+ eventEmitter: EventEmitter;
16
16
  constructor(url: string, eventTypes: EventType[], userAccount?: string);
17
17
  isSubscribed(): boolean;
18
18
  subscribe(callback: logProviderCallback): Promise<boolean>;
@@ -30,22 +30,23 @@ class EventsServerLogProvider {
30
30
  if (this.ws !== undefined) {
31
31
  return true;
32
32
  }
33
- this.ws = new WebSocketImpl(this.url);
33
+ const ws = new WebSocketImpl(this.url);
34
+ this.ws = ws;
34
35
  this.callback = callback;
35
- this.ws.addEventListener('open', () => {
36
+ ws.addEventListener('open', () => {
36
37
  for (const channel of this.eventTypes) {
37
38
  const subscribeMessage = {
38
39
  type: 'subscribe',
39
40
  channel: channel,
40
41
  };
41
42
  if (this.userAccount) {
42
- subscribeMessage['user'] = this.userAccount;
43
+ subscribeMessage.user = this.userAccount;
43
44
  }
44
- this.ws.send(JSON.stringify(subscribeMessage));
45
+ ws.send(JSON.stringify(subscribeMessage));
45
46
  }
46
47
  this.reconnectAttempts = 0;
47
48
  });
48
- this.ws.addEventListener('message', (data) => {
49
+ ws.addEventListener('message', (data) => {
49
50
  try {
50
51
  if (!this.isUnsubscribing) {
51
52
  clearTimeout(this.timeoutId);
@@ -64,6 +65,9 @@ class EventsServerLogProvider {
64
65
  return;
65
66
  }
66
67
  const event = JSON.parse(parsedData.data);
68
+ if (this.callback === undefined) {
69
+ return;
70
+ }
67
71
  this.callback(event.txSig, event.slot, [
68
72
  'Program vELoC1audYbSYVRXn1vPaV8Axoa9oU6BYmNGZZBDZ1P invoke [1]',
69
73
  event.rawLog,
@@ -74,10 +78,10 @@ class EventsServerLogProvider {
74
78
  console.error('Error parsing message:', error);
75
79
  }
76
80
  });
77
- this.ws.addEventListener('close', () => {
81
+ ws.addEventListener('close', () => {
78
82
  console.log('eventsServerLogProvider: WebSocket closed');
79
83
  });
80
- this.ws.addEventListener('error', (error) => {
84
+ ws.addEventListener('error', (error) => {
81
85
  console.error('eventsServerLogProvider: WebSocket error:', error);
82
86
  });
83
87
  this.setTimeout();
@@ -110,10 +114,13 @@ class EventsServerLogProvider {
110
114
  if (timeSinceLastHeartbeat >
111
115
  EVENT_SERVER_HEARTBEAT_INTERVAL_MS * ALLOWED_MISSED_HEARTBEATS) {
112
116
  console.log(`eventServerLogProvider: No heartbeat in ${timeSinceLastHeartbeat}ms, resubscribing on attempt ${this.reconnectAttempts + 1}`);
117
+ const callback = this.callback;
113
118
  await this.unsubscribe();
114
119
  this.reconnectAttempts++;
115
120
  this.eventEmitter.emit('reconnect', this.reconnectAttempts);
116
- this.subscribe(this.callback);
121
+ if (callback !== undefined) {
122
+ this.subscribe(callback);
123
+ }
117
124
  }
118
125
  }, EVENT_SERVER_HEARTBEAT_INTERVAL_MS * 2);
119
126
  }
@@ -14,7 +14,7 @@ type FetchLogsResponse = {
14
14
  transactionLogs: Log[];
15
15
  mostRecentBlockTime: number | undefined;
16
16
  };
17
- export declare function fetchLogs(connection: Connection, address: PublicKey, finality: Finality, beforeTx?: TransactionSignature, untilTx?: TransactionSignature, limit?: number, batchSize?: number): Promise<FetchLogsResponse>;
17
+ export declare function fetchLogs(connection: Connection, address: PublicKey, finality: Finality, beforeTx?: TransactionSignature, untilTx?: TransactionSignature, limit?: number, batchSize?: number): Promise<FetchLogsResponse | undefined>;
18
18
  export declare function fetchTransactionLogs(connection: Connection, signatures: TransactionSignature[], finality: Finality): Promise<Log[]>;
19
19
  export declare class LogParser {
20
20
  private program;
@@ -4,13 +4,15 @@ exports.LogParser = exports.fetchTransactionLogs = exports.fetchLogs = void 0;
4
4
  const promiseTimeout_1 = require("../util/promiseTimeout");
5
5
  const parse_1 = require("./parse");
6
6
  function mapTransactionResponseToLog(transaction) {
7
+ var _a, _b;
7
8
  return {
8
9
  txSig: transaction.transaction.signatures[0],
9
10
  slot: transaction.slot,
10
- logs: transaction.meta.logMessages,
11
+ logs: (_b = (_a = transaction.meta) === null || _a === void 0 ? void 0 : _a.logMessages) !== null && _b !== void 0 ? _b : [],
11
12
  };
12
13
  }
13
14
  async function fetchLogs(connection, address, finality, beforeTx, untilTx, limit, batchSize = 25) {
15
+ var _a;
14
16
  const signatures = await connection.getSignaturesForAddress(address, {
15
17
  before: beforeTx,
16
18
  until: untilTx,
@@ -33,7 +35,7 @@ async function fetchLogs(connection, address, finality, beforeTx, untilTx, limit
33
35
  mostRecentTx: mostRecent.signature,
34
36
  earliestSlot: earliest.slot,
35
37
  mostRecentSlot: mostRecent.slot,
36
- mostRecentBlockTime: mostRecent.blockTime,
38
+ mostRecentBlockTime: (_a = mostRecent.blockTime) !== null && _a !== void 0 ? _a : undefined,
37
39
  };
38
40
  }
39
41
  exports.fetchLogs = fetchLogs;
@@ -6,7 +6,7 @@ export declare class PollingLogProvider implements LogProvider {
6
6
  private frequency;
7
7
  private batchSize?;
8
8
  private finality;
9
- private intervalId;
9
+ private intervalId?;
10
10
  private mostRecentSeenTx?;
11
11
  private mutex;
12
12
  private firstFetch;
@@ -8,6 +8,7 @@ class PollingLogProvider {
8
8
  this.address = address;
9
9
  this.frequency = frequency;
10
10
  this.batchSize = batchSize;
11
+ this.mutex = 0;
11
12
  this.firstFetch = true;
12
13
  this.finality = commitment === 'finalized' ? 'finalized' : 'confirmed';
13
14
  }
@@ -23,8 +23,12 @@ class TxEventCache {
23
23
  this.size--;
24
24
  }
25
25
  else if (this.size === this.maxTx) {
26
- delete this.cacheMap[this.tail.key];
27
- this.detach(this.tail);
26
+ const tail = this.tail;
27
+ if (tail === undefined) {
28
+ throw new Error('TxEventCache.add: cache at capacity but tail is unset');
29
+ }
30
+ delete this.cacheMap[tail.key];
31
+ this.detach(tail);
28
32
  this.size--;
29
33
  }
30
34
  // Write to head of LinkedList