@velocity-exchange/sdk 0.2.5 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1057) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/README.md +3 -3
  3. package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
  4. package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
  5. package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
  6. package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
  7. package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
  8. package/lib/browser/accounts/bulkAccountLoader.js +51 -0
  9. package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
  10. package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
  11. package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
  12. package/lib/browser/accounts/bulkUserSubscription.js +8 -2
  13. package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
  14. package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
  15. package/lib/browser/accounts/fetch.d.ts +59 -2
  16. package/lib/browser/accounts/fetch.js +57 -2
  17. package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
  18. package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
  19. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
  20. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
  21. package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
  22. package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
  23. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
  24. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
  25. package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
  26. package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
  27. package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
  28. package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
  29. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
  30. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
  31. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
  32. package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
  33. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
  34. package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
  35. package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
  36. package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
  37. package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
  38. package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
  39. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
  40. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
  41. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
  42. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
  43. package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
  44. package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
  45. package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
  46. package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
  47. package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
  48. package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
  49. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
  50. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
  51. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
  52. package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
  53. package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
  54. package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
  55. package/lib/browser/accounts/types.d.ts +149 -0
  56. package/lib/browser/accounts/types.js +13 -0
  57. package/lib/browser/accounts/utils.d.ts +18 -0
  58. package/lib/browser/accounts/utils.js +32 -16
  59. package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
  60. package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
  61. package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
  62. package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
  63. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
  64. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
  65. package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
  66. package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
  67. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
  68. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
  69. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
  70. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
  71. package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
  72. package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
  73. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  74. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
  75. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
  76. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
  77. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
  78. package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
  79. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
  80. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
  81. package/lib/browser/addresses/marketAddresses.d.ts +10 -0
  82. package/lib/browser/addresses/marketAddresses.js +10 -0
  83. package/lib/browser/addresses/pda.d.ts +214 -2
  84. package/lib/browser/addresses/pda.js +217 -5
  85. package/lib/browser/adminClient.d.ts +2139 -5
  86. package/lib/browser/adminClient.js +2173 -11
  87. package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
  88. package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
  89. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
  90. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
  91. package/lib/browser/auctionSubscriber/index.d.ts +6 -0
  92. package/lib/browser/auctionSubscriber/index.js +6 -0
  93. package/lib/browser/auctionSubscriber/types.d.ts +7 -0
  94. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
  95. package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
  96. package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
  97. package/lib/browser/blockhashSubscriber/index.js +5 -0
  98. package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
  99. package/lib/browser/clock/clockSubscriber.d.ts +24 -0
  100. package/lib/browser/clock/clockSubscriber.js +22 -0
  101. package/lib/browser/config.d.ts +58 -4
  102. package/lib/browser/config.js +88 -21
  103. package/lib/browser/constants/numericConstants.d.ts +67 -0
  104. package/lib/browser/constants/numericConstants.js +68 -1
  105. package/lib/browser/constants/perpMarkets.d.ts +10 -0
  106. package/lib/browser/constants/perpMarkets.js +40 -908
  107. package/lib/browser/constants/spotMarkets.d.ts +13 -0
  108. package/lib/browser/constants/spotMarkets.js +16 -742
  109. package/lib/browser/constants/txConstants.d.ts +1 -0
  110. package/lib/browser/constants/txConstants.js +1 -0
  111. package/lib/browser/core/VelocityCore.d.ts +285 -8
  112. package/lib/browser/core/VelocityCore.js +281 -8
  113. package/lib/browser/core/instructions/deposit.d.ts +22 -0
  114. package/lib/browser/core/instructions/deposit.js +22 -0
  115. package/lib/browser/core/instructions/fill.d.ts +17 -0
  116. package/lib/browser/core/instructions/fill.js +17 -0
  117. package/lib/browser/core/instructions/funding.d.ts +12 -0
  118. package/lib/browser/core/instructions/funding.js +12 -0
  119. package/lib/browser/core/instructions/liquidation.d.ts +18 -0
  120. package/lib/browser/core/instructions/liquidation.js +18 -0
  121. package/lib/browser/core/instructions/orders.d.ts +28 -0
  122. package/lib/browser/core/instructions/orders.js +28 -0
  123. package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
  124. package/lib/browser/core/instructions/perpOrders.js +106 -0
  125. package/lib/browser/core/instructions/settlement.d.ts +14 -0
  126. package/lib/browser/core/instructions/settlement.js +14 -0
  127. package/lib/browser/core/instructions/trigger.d.ts +15 -0
  128. package/lib/browser/core/instructions/trigger.js +15 -0
  129. package/lib/browser/core/instructions/withdraw.d.ts +21 -0
  130. package/lib/browser/core/instructions/withdraw.js +21 -0
  131. package/lib/browser/core/remainingAccounts.d.ts +47 -3
  132. package/lib/browser/core/remainingAccounts.js +20 -0
  133. package/lib/browser/core/signedMsg.d.ts +38 -0
  134. package/lib/browser/core/signedMsg.js +33 -0
  135. package/lib/browser/decode/customCoder.d.ts +39 -3
  136. package/lib/browser/decode/customCoder.js +45 -3
  137. package/lib/browser/decode/user.d.ts +22 -0
  138. package/lib/browser/decode/user.js +22 -0
  139. package/lib/browser/dlob/DLOB.d.ts +502 -53
  140. package/lib/browser/dlob/DLOB.js +540 -98
  141. package/lib/browser/dlob/DLOBNode.d.ts +86 -4
  142. package/lib/browser/dlob/DLOBNode.js +37 -4
  143. package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
  144. package/lib/browser/dlob/DLOBSubscriber.js +42 -12
  145. package/lib/browser/dlob/NodeList.d.ts +69 -0
  146. package/lib/browser/dlob/NodeList.js +66 -0
  147. package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
  148. package/lib/browser/dlob/orderBookLevels.js +84 -14
  149. package/lib/browser/dlob/types.d.ts +15 -0
  150. package/lib/browser/events/eventList.d.ts +14 -0
  151. package/lib/browser/events/eventList.js +14 -0
  152. package/lib/browser/events/eventSubscriber.d.ts +87 -10
  153. package/lib/browser/events/eventSubscriber.js +93 -8
  154. package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
  155. package/lib/browser/events/eventsServerLogProvider.js +27 -0
  156. package/lib/browser/events/fetchLogs.d.ts +31 -0
  157. package/lib/browser/events/fetchLogs.js +46 -1
  158. package/lib/browser/events/parse.d.ts +23 -0
  159. package/lib/browser/events/parse.js +23 -0
  160. package/lib/browser/events/pollingLogProvider.d.ts +24 -0
  161. package/lib/browser/events/pollingLogProvider.js +24 -0
  162. package/lib/browser/events/sort.d.ts +11 -0
  163. package/lib/browser/events/sort.js +12 -0
  164. package/lib/browser/events/txEventCache.d.ts +13 -3
  165. package/lib/browser/events/txEventCache.js +19 -7
  166. package/lib/browser/events/types.d.ts +118 -2
  167. package/lib/browser/events/types.js +11 -0
  168. package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
  169. package/lib/browser/events/webSocketLogProvider.js +28 -0
  170. package/lib/browser/factory/oracleClient.js +2 -2
  171. package/lib/browser/idl/velocity.d.ts +50 -1
  172. package/lib/browser/idl/velocity.json +50 -1
  173. package/lib/browser/keypair.d.ts +8 -0
  174. package/lib/browser/keypair.js +8 -0
  175. package/lib/browser/marginCalculation.d.ts +134 -2
  176. package/lib/browser/marginCalculation.js +121 -0
  177. package/lib/browser/math/amm.d.ts +348 -29
  178. package/lib/browser/math/amm.js +310 -32
  179. package/lib/browser/math/auction.d.ts +95 -19
  180. package/lib/browser/math/auction.js +118 -28
  181. package/lib/browser/math/bankruptcy.d.ts +46 -0
  182. package/lib/browser/math/bankruptcy.js +89 -1
  183. package/lib/browser/math/builder.d.ts +64 -8
  184. package/lib/browser/math/builder.js +71 -9
  185. package/lib/browser/math/conversion.d.ts +21 -0
  186. package/lib/browser/math/conversion.js +21 -0
  187. package/lib/browser/math/exchangeStatus.d.ts +92 -0
  188. package/lib/browser/math/exchangeStatus.js +111 -1
  189. package/lib/browser/math/funding.d.ts +57 -20
  190. package/lib/browser/math/funding.js +63 -23
  191. package/lib/browser/math/insurance.d.ts +62 -0
  192. package/lib/browser/math/insurance.js +62 -0
  193. package/lib/browser/math/liquidation.d.ts +127 -11
  194. package/lib/browser/math/liquidation.js +182 -19
  195. package/lib/browser/math/margin.d.ts +79 -13
  196. package/lib/browser/math/margin.js +80 -14
  197. package/lib/browser/math/market.d.ts +135 -15
  198. package/lib/browser/math/market.js +145 -17
  199. package/lib/browser/math/oracles.d.ts +113 -0
  200. package/lib/browser/math/oracles.js +118 -1
  201. package/lib/browser/math/orders.d.ts +115 -7
  202. package/lib/browser/math/orders.js +133 -18
  203. package/lib/browser/math/position.d.ts +80 -33
  204. package/lib/browser/math/position.js +80 -33
  205. package/lib/browser/math/repeg.d.ts +48 -10
  206. package/lib/browser/math/repeg.js +48 -10
  207. package/lib/browser/math/spotBalance.d.ts +200 -5
  208. package/lib/browser/math/spotBalance.js +239 -10
  209. package/lib/browser/math/spotMarket.d.ts +36 -3
  210. package/lib/browser/math/spotMarket.js +36 -3
  211. package/lib/browser/math/spotPosition.d.ts +72 -0
  212. package/lib/browser/math/spotPosition.js +62 -0
  213. package/lib/browser/math/state.d.ts +31 -0
  214. package/lib/browser/math/state.js +32 -1
  215. package/lib/browser/math/superStake.d.ts +126 -2
  216. package/lib/browser/math/superStake.js +123 -3
  217. package/lib/browser/math/tiers.d.ts +29 -0
  218. package/lib/browser/math/tiers.js +29 -0
  219. package/lib/browser/math/trade.d.ts +102 -51
  220. package/lib/browser/math/trade.js +101 -55
  221. package/lib/browser/math/utils.d.ts +71 -9
  222. package/lib/browser/math/utils.js +71 -9
  223. package/lib/browser/memcmp.d.ts +94 -0
  224. package/lib/browser/memcmp.js +129 -7
  225. package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
  226. package/lib/browser/oracles/oracleClientCache.js +16 -0
  227. package/lib/browser/oracles/oracleId.d.ts +31 -0
  228. package/lib/browser/oracles/oracleId.js +39 -8
  229. package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
  230. package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
  231. package/lib/browser/oracles/pythClient.d.ts +31 -0
  232. package/lib/browser/oracles/pythClient.js +32 -1
  233. package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
  234. package/lib/browser/oracles/pythLazerClient.js +35 -1
  235. package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
  236. package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
  237. package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
  238. package/lib/browser/oracles/strictOraclePrice.js +21 -0
  239. package/lib/browser/oracles/types.d.ts +45 -0
  240. package/lib/browser/oracles/utils.d.ts +20 -0
  241. package/lib/browser/oracles/utils.js +20 -0
  242. package/lib/browser/orderParams.d.ts +42 -4
  243. package/lib/browser/orderParams.js +42 -4
  244. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
  245. package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
  246. package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
  247. package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
  248. package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
  249. package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
  250. package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
  251. package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
  252. package/lib/browser/orderSubscriber/types.d.ts +9 -0
  253. package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
  254. package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
  255. package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
  256. package/lib/browser/priorityFee/averageStrategy.js +1 -0
  257. package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
  258. package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
  259. package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
  260. package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
  261. package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
  262. package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
  263. package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
  264. package/lib/browser/priorityFee/maxStrategy.js +1 -0
  265. package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
  266. package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
  267. package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
  268. package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
  269. package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
  270. package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
  271. package/lib/browser/priorityFee/types.d.ts +32 -0
  272. package/lib/browser/priorityFee/types.js +5 -0
  273. package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
  274. package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
  275. package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
  276. package/lib/browser/slot/SlotSubscriber.js +16 -0
  277. package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
  278. package/lib/browser/slot/SlothashSubscriber.js +25 -1
  279. package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
  280. package/lib/browser/tokenFaucet.d.ts +2 -2
  281. package/lib/browser/tokenFaucet.js +11 -4
  282. package/lib/browser/tx/baseTxSender.d.ts +163 -0
  283. package/lib/browser/tx/baseTxSender.js +174 -6
  284. package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
  285. package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
  286. package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
  287. package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
  288. package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
  289. package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
  290. package/lib/browser/tx/fastSingleTxSender.js +48 -1
  291. package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
  292. package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
  293. package/lib/browser/tx/reportTransactionError.d.ts +18 -6
  294. package/lib/browser/tx/reportTransactionError.js +18 -6
  295. package/lib/browser/tx/retryTxSender.d.ts +40 -0
  296. package/lib/browser/tx/retryTxSender.js +39 -0
  297. package/lib/browser/tx/txHandler.d.ts +146 -35
  298. package/lib/browser/tx/txHandler.js +132 -32
  299. package/lib/browser/tx/txParamProcessor.d.ts +47 -0
  300. package/lib/browser/tx/txParamProcessor.js +47 -0
  301. package/lib/browser/tx/types.d.ts +46 -0
  302. package/lib/browser/tx/types.js +5 -0
  303. package/lib/browser/tx/utils.d.ts +26 -0
  304. package/lib/browser/tx/utils.js +26 -0
  305. package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
  306. package/lib/browser/tx/whileValidTxSender.js +81 -0
  307. package/lib/browser/types.d.ts +786 -13
  308. package/lib/browser/types.js +133 -9
  309. package/lib/browser/user.d.ts +645 -84
  310. package/lib/browser/user.js +779 -96
  311. package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
  312. package/lib/browser/userMap/PollingSubscription.js +14 -2
  313. package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
  314. package/lib/browser/userMap/WebsocketSubscription.js +9 -0
  315. package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
  316. package/lib/browser/userMap/grpcSubscription.js +8 -0
  317. package/lib/browser/userMap/referrerMap.d.ts +72 -2
  318. package/lib/browser/userMap/referrerMap.js +84 -2
  319. package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
  320. package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
  321. package/lib/browser/userMap/userMap.d.ts +81 -3
  322. package/lib/browser/userMap/userMap.js +81 -4
  323. package/lib/browser/userMap/userMapConfig.d.ts +23 -0
  324. package/lib/browser/userMap/userStatsMap.d.ts +22 -0
  325. package/lib/browser/userMap/userStatsMap.js +22 -0
  326. package/lib/browser/userName.d.ts +16 -0
  327. package/lib/browser/userName.js +16 -0
  328. package/lib/browser/userStats.d.ts +28 -1
  329. package/lib/browser/userStats.js +28 -1
  330. package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
  331. package/lib/browser/util/TransactionConfirmationManager.js +33 -0
  332. package/lib/browser/util/chainClock.d.ts +24 -0
  333. package/lib/browser/util/chainClock.js +20 -0
  334. package/lib/browser/util/computeUnits.d.ts +32 -0
  335. package/lib/browser/util/computeUnits.js +32 -0
  336. package/lib/browser/util/digest.d.ts +17 -0
  337. package/lib/browser/util/digest.js +17 -0
  338. package/lib/browser/util/ed25519Utils.d.ts +12 -2
  339. package/lib/browser/util/ed25519Utils.js +12 -2
  340. package/lib/browser/util/promiseTimeout.d.ts +9 -0
  341. package/lib/browser/util/promiseTimeout.js +9 -0
  342. package/lib/browser/velocityClient.d.ts +3323 -216
  343. package/lib/browser/velocityClient.js +3428 -249
  344. package/lib/browser/wallet.d.ts +37 -0
  345. package/lib/browser/wallet.js +37 -0
  346. package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
  347. package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
  348. package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
  349. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
  350. package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
  351. package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
  352. package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
  353. package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
  354. package/lib/node/accounts/bulkAccountLoader.js +51 -0
  355. package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
  356. package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
  357. package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
  358. package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
  359. package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
  360. package/lib/node/accounts/bulkUserSubscription.js +8 -2
  361. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
  362. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
  363. package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
  364. package/lib/node/accounts/fetch.d.ts +59 -2
  365. package/lib/node/accounts/fetch.d.ts.map +1 -1
  366. package/lib/node/accounts/fetch.js +57 -2
  367. package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
  368. package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
  369. package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
  370. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
  371. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  372. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
  373. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
  374. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
  375. package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
  376. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
  377. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
  378. package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
  379. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
  380. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
  381. package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
  382. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
  383. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
  384. package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
  385. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
  386. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
  387. package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
  388. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
  389. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
  390. package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
  391. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
  392. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  393. package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
  394. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
  395. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
  396. package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
  397. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
  398. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
  399. package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
  400. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
  401. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
  402. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
  403. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
  404. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  405. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
  406. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
  407. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
  408. package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
  409. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
  410. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
  411. package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
  412. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
  413. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
  414. package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
  415. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
  416. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
  417. package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
  418. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
  419. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
  420. package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
  421. package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
  422. package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
  423. package/lib/node/accounts/testBulkAccountLoader.js +8 -0
  424. package/lib/node/accounts/types.d.ts +149 -0
  425. package/lib/node/accounts/types.d.ts.map +1 -1
  426. package/lib/node/accounts/types.js +13 -0
  427. package/lib/node/accounts/utils.d.ts +18 -0
  428. package/lib/node/accounts/utils.d.ts.map +1 -1
  429. package/lib/node/accounts/utils.js +32 -16
  430. package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
  431. package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
  432. package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
  433. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
  434. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
  435. package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
  436. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
  437. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  438. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
  439. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
  440. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
  441. package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
  442. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
  443. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
  444. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
  445. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
  446. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
  447. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
  448. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
  449. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
  450. package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
  451. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  452. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
  453. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
  454. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
  455. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
  456. package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
  457. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
  458. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
  459. package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
  460. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
  461. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
  462. package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
  463. package/lib/node/addresses/marketAddresses.d.ts +10 -0
  464. package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
  465. package/lib/node/addresses/marketAddresses.js +10 -0
  466. package/lib/node/addresses/pda.d.ts +214 -2
  467. package/lib/node/addresses/pda.d.ts.map +1 -1
  468. package/lib/node/addresses/pda.js +217 -5
  469. package/lib/node/adminClient.d.ts +2139 -5
  470. package/lib/node/adminClient.d.ts.map +1 -1
  471. package/lib/node/adminClient.js +2173 -11
  472. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
  473. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
  474. package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
  475. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
  476. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
  477. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
  478. package/lib/node/auctionSubscriber/index.d.ts +6 -0
  479. package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
  480. package/lib/node/auctionSubscriber/index.js +6 -0
  481. package/lib/node/auctionSubscriber/types.d.ts +7 -0
  482. package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
  483. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
  484. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
  485. package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
  486. package/lib/node/blockhashSubscriber/index.d.ts +5 -0
  487. package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
  488. package/lib/node/blockhashSubscriber/index.js +5 -0
  489. package/lib/node/blockhashSubscriber/types.d.ts +5 -0
  490. package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
  491. package/lib/node/clock/clockSubscriber.d.ts +24 -0
  492. package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
  493. package/lib/node/clock/clockSubscriber.js +22 -0
  494. package/lib/node/config.d.ts +58 -4
  495. package/lib/node/config.d.ts.map +1 -1
  496. package/lib/node/config.js +88 -21
  497. package/lib/node/constants/numericConstants.d.ts +67 -0
  498. package/lib/node/constants/numericConstants.d.ts.map +1 -1
  499. package/lib/node/constants/numericConstants.js +68 -1
  500. package/lib/node/constants/perpMarkets.d.ts +10 -0
  501. package/lib/node/constants/perpMarkets.d.ts.map +1 -1
  502. package/lib/node/constants/perpMarkets.js +40 -908
  503. package/lib/node/constants/spotMarkets.d.ts +13 -0
  504. package/lib/node/constants/spotMarkets.d.ts.map +1 -1
  505. package/lib/node/constants/spotMarkets.js +16 -742
  506. package/lib/node/constants/txConstants.d.ts +1 -0
  507. package/lib/node/constants/txConstants.d.ts.map +1 -1
  508. package/lib/node/constants/txConstants.js +1 -0
  509. package/lib/node/core/VelocityCore.d.ts +285 -8
  510. package/lib/node/core/VelocityCore.d.ts.map +1 -1
  511. package/lib/node/core/VelocityCore.js +281 -8
  512. package/lib/node/core/instructions/deposit.d.ts +22 -0
  513. package/lib/node/core/instructions/deposit.d.ts.map +1 -1
  514. package/lib/node/core/instructions/deposit.js +22 -0
  515. package/lib/node/core/instructions/fill.d.ts +17 -0
  516. package/lib/node/core/instructions/fill.d.ts.map +1 -1
  517. package/lib/node/core/instructions/fill.js +17 -0
  518. package/lib/node/core/instructions/funding.d.ts +12 -0
  519. package/lib/node/core/instructions/funding.d.ts.map +1 -1
  520. package/lib/node/core/instructions/funding.js +12 -0
  521. package/lib/node/core/instructions/liquidation.d.ts +18 -0
  522. package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
  523. package/lib/node/core/instructions/liquidation.js +18 -0
  524. package/lib/node/core/instructions/orders.d.ts +28 -0
  525. package/lib/node/core/instructions/orders.d.ts.map +1 -1
  526. package/lib/node/core/instructions/orders.js +28 -0
  527. package/lib/node/core/instructions/perpOrders.d.ts +106 -0
  528. package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
  529. package/lib/node/core/instructions/perpOrders.js +106 -0
  530. package/lib/node/core/instructions/settlement.d.ts +14 -0
  531. package/lib/node/core/instructions/settlement.d.ts.map +1 -1
  532. package/lib/node/core/instructions/settlement.js +14 -0
  533. package/lib/node/core/instructions/trigger.d.ts +15 -0
  534. package/lib/node/core/instructions/trigger.d.ts.map +1 -1
  535. package/lib/node/core/instructions/trigger.js +15 -0
  536. package/lib/node/core/instructions/withdraw.d.ts +21 -0
  537. package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
  538. package/lib/node/core/instructions/withdraw.js +21 -0
  539. package/lib/node/core/remainingAccounts.d.ts +47 -3
  540. package/lib/node/core/remainingAccounts.d.ts.map +1 -1
  541. package/lib/node/core/remainingAccounts.js +20 -0
  542. package/lib/node/core/signedMsg.d.ts +38 -0
  543. package/lib/node/core/signedMsg.d.ts.map +1 -1
  544. package/lib/node/core/signedMsg.js +33 -0
  545. package/lib/node/decode/customCoder.d.ts +39 -3
  546. package/lib/node/decode/customCoder.d.ts.map +1 -1
  547. package/lib/node/decode/customCoder.js +45 -3
  548. package/lib/node/decode/user.d.ts +22 -0
  549. package/lib/node/decode/user.d.ts.map +1 -1
  550. package/lib/node/decode/user.js +22 -0
  551. package/lib/node/dlob/DLOB.d.ts +502 -53
  552. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  553. package/lib/node/dlob/DLOB.js +540 -98
  554. package/lib/node/dlob/DLOBNode.d.ts +86 -4
  555. package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
  556. package/lib/node/dlob/DLOBNode.js +37 -4
  557. package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
  558. package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
  559. package/lib/node/dlob/DLOBSubscriber.js +42 -12
  560. package/lib/node/dlob/NodeList.d.ts +69 -0
  561. package/lib/node/dlob/NodeList.d.ts.map +1 -1
  562. package/lib/node/dlob/NodeList.js +66 -0
  563. package/lib/node/dlob/orderBookLevels.d.ts +106 -13
  564. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  565. package/lib/node/dlob/orderBookLevels.js +84 -14
  566. package/lib/node/dlob/types.d.ts +15 -0
  567. package/lib/node/dlob/types.d.ts.map +1 -1
  568. package/lib/node/events/eventList.d.ts +14 -0
  569. package/lib/node/events/eventList.d.ts.map +1 -1
  570. package/lib/node/events/eventList.js +14 -0
  571. package/lib/node/events/eventSubscriber.d.ts +87 -10
  572. package/lib/node/events/eventSubscriber.d.ts.map +1 -1
  573. package/lib/node/events/eventSubscriber.js +93 -8
  574. package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
  575. package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
  576. package/lib/node/events/eventsServerLogProvider.js +27 -0
  577. package/lib/node/events/fetchLogs.d.ts +31 -0
  578. package/lib/node/events/fetchLogs.d.ts.map +1 -1
  579. package/lib/node/events/fetchLogs.js +46 -1
  580. package/lib/node/events/parse.d.ts +23 -0
  581. package/lib/node/events/parse.d.ts.map +1 -1
  582. package/lib/node/events/parse.js +23 -0
  583. package/lib/node/events/pollingLogProvider.d.ts +24 -0
  584. package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
  585. package/lib/node/events/pollingLogProvider.js +24 -0
  586. package/lib/node/events/sort.d.ts +11 -0
  587. package/lib/node/events/sort.d.ts.map +1 -1
  588. package/lib/node/events/sort.js +12 -0
  589. package/lib/node/events/txEventCache.d.ts +13 -3
  590. package/lib/node/events/txEventCache.d.ts.map +1 -1
  591. package/lib/node/events/txEventCache.js +19 -7
  592. package/lib/node/events/types.d.ts +118 -2
  593. package/lib/node/events/types.d.ts.map +1 -1
  594. package/lib/node/events/types.js +11 -0
  595. package/lib/node/events/webSocketLogProvider.d.ts +23 -0
  596. package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
  597. package/lib/node/events/webSocketLogProvider.js +28 -0
  598. package/lib/node/factory/oracleClient.js +2 -2
  599. package/lib/node/idl/velocity.d.ts +50 -1
  600. package/lib/node/idl/velocity.d.ts.map +1 -1
  601. package/lib/node/idl/velocity.json +50 -1
  602. package/lib/node/keypair.d.ts +8 -0
  603. package/lib/node/keypair.d.ts.map +1 -1
  604. package/lib/node/keypair.js +8 -0
  605. package/lib/node/marginCalculation.d.ts +134 -2
  606. package/lib/node/marginCalculation.d.ts.map +1 -1
  607. package/lib/node/marginCalculation.js +121 -0
  608. package/lib/node/math/amm.d.ts +348 -29
  609. package/lib/node/math/amm.d.ts.map +1 -1
  610. package/lib/node/math/amm.js +310 -32
  611. package/lib/node/math/auction.d.ts +95 -19
  612. package/lib/node/math/auction.d.ts.map +1 -1
  613. package/lib/node/math/auction.js +118 -28
  614. package/lib/node/math/bankruptcy.d.ts +46 -0
  615. package/lib/node/math/bankruptcy.d.ts.map +1 -1
  616. package/lib/node/math/bankruptcy.js +89 -1
  617. package/lib/node/math/builder.d.ts +64 -8
  618. package/lib/node/math/builder.d.ts.map +1 -1
  619. package/lib/node/math/builder.js +71 -9
  620. package/lib/node/math/conversion.d.ts +21 -0
  621. package/lib/node/math/conversion.d.ts.map +1 -1
  622. package/lib/node/math/conversion.js +21 -0
  623. package/lib/node/math/exchangeStatus.d.ts +92 -0
  624. package/lib/node/math/exchangeStatus.d.ts.map +1 -1
  625. package/lib/node/math/exchangeStatus.js +111 -1
  626. package/lib/node/math/funding.d.ts +57 -20
  627. package/lib/node/math/funding.d.ts.map +1 -1
  628. package/lib/node/math/funding.js +63 -23
  629. package/lib/node/math/insurance.d.ts +62 -0
  630. package/lib/node/math/insurance.d.ts.map +1 -1
  631. package/lib/node/math/insurance.js +62 -0
  632. package/lib/node/math/liquidation.d.ts +127 -11
  633. package/lib/node/math/liquidation.d.ts.map +1 -1
  634. package/lib/node/math/liquidation.js +182 -19
  635. package/lib/node/math/margin.d.ts +79 -13
  636. package/lib/node/math/margin.d.ts.map +1 -1
  637. package/lib/node/math/margin.js +80 -14
  638. package/lib/node/math/market.d.ts +135 -15
  639. package/lib/node/math/market.d.ts.map +1 -1
  640. package/lib/node/math/market.js +145 -17
  641. package/lib/node/math/oracles.d.ts +113 -0
  642. package/lib/node/math/oracles.d.ts.map +1 -1
  643. package/lib/node/math/oracles.js +118 -1
  644. package/lib/node/math/orders.d.ts +115 -7
  645. package/lib/node/math/orders.d.ts.map +1 -1
  646. package/lib/node/math/orders.js +133 -18
  647. package/lib/node/math/position.d.ts +80 -33
  648. package/lib/node/math/position.d.ts.map +1 -1
  649. package/lib/node/math/position.js +80 -33
  650. package/lib/node/math/repeg.d.ts +48 -10
  651. package/lib/node/math/repeg.d.ts.map +1 -1
  652. package/lib/node/math/repeg.js +48 -10
  653. package/lib/node/math/spotBalance.d.ts +200 -5
  654. package/lib/node/math/spotBalance.d.ts.map +1 -1
  655. package/lib/node/math/spotBalance.js +239 -10
  656. package/lib/node/math/spotMarket.d.ts +36 -3
  657. package/lib/node/math/spotMarket.d.ts.map +1 -1
  658. package/lib/node/math/spotMarket.js +36 -3
  659. package/lib/node/math/spotPosition.d.ts +72 -0
  660. package/lib/node/math/spotPosition.d.ts.map +1 -1
  661. package/lib/node/math/spotPosition.js +62 -0
  662. package/lib/node/math/state.d.ts +31 -0
  663. package/lib/node/math/state.d.ts.map +1 -1
  664. package/lib/node/math/state.js +32 -1
  665. package/lib/node/math/superStake.d.ts +126 -2
  666. package/lib/node/math/superStake.d.ts.map +1 -1
  667. package/lib/node/math/superStake.js +123 -3
  668. package/lib/node/math/tiers.d.ts +29 -0
  669. package/lib/node/math/tiers.d.ts.map +1 -1
  670. package/lib/node/math/tiers.js +29 -0
  671. package/lib/node/math/trade.d.ts +102 -51
  672. package/lib/node/math/trade.d.ts.map +1 -1
  673. package/lib/node/math/trade.js +101 -55
  674. package/lib/node/math/utils.d.ts +71 -9
  675. package/lib/node/math/utils.d.ts.map +1 -1
  676. package/lib/node/math/utils.js +71 -9
  677. package/lib/node/memcmp.d.ts +94 -0
  678. package/lib/node/memcmp.d.ts.map +1 -1
  679. package/lib/node/memcmp.js +129 -7
  680. package/lib/node/oracles/oracleClientCache.d.ts +16 -0
  681. package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
  682. package/lib/node/oracles/oracleClientCache.js +16 -0
  683. package/lib/node/oracles/oracleId.d.ts +31 -0
  684. package/lib/node/oracles/oracleId.d.ts.map +1 -1
  685. package/lib/node/oracles/oracleId.js +39 -8
  686. package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
  687. package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
  688. package/lib/node/oracles/prelaunchOracleClient.js +20 -0
  689. package/lib/node/oracles/pythClient.d.ts +31 -0
  690. package/lib/node/oracles/pythClient.d.ts.map +1 -1
  691. package/lib/node/oracles/pythClient.js +32 -1
  692. package/lib/node/oracles/pythLazerClient.d.ts +34 -0
  693. package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
  694. package/lib/node/oracles/pythLazerClient.js +35 -1
  695. package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
  696. package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
  697. package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
  698. package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
  699. package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
  700. package/lib/node/oracles/strictOraclePrice.js +21 -0
  701. package/lib/node/oracles/types.d.ts +45 -0
  702. package/lib/node/oracles/types.d.ts.map +1 -1
  703. package/lib/node/oracles/utils.d.ts +20 -0
  704. package/lib/node/oracles/utils.d.ts.map +1 -1
  705. package/lib/node/oracles/utils.js +20 -0
  706. package/lib/node/orderParams.d.ts +42 -4
  707. package/lib/node/orderParams.d.ts.map +1 -1
  708. package/lib/node/orderParams.js +42 -4
  709. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
  710. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  711. package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
  712. package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
  713. package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
  714. package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
  715. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
  716. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
  717. package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
  718. package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
  719. package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
  720. package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
  721. package/lib/node/orderSubscriber/types.d.ts +9 -0
  722. package/lib/node/orderSubscriber/types.d.ts.map +1 -1
  723. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
  724. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
  725. package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
  726. package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
  727. package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
  728. package/lib/node/priorityFee/averageStrategy.js +1 -0
  729. package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
  730. package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
  731. package/lib/node/priorityFee/ewmaStrategy.js +10 -0
  732. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
  733. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
  734. package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
  735. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
  736. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
  737. package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
  738. package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
  739. package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
  740. package/lib/node/priorityFee/maxStrategy.js +1 -0
  741. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
  742. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
  743. package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
  744. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
  745. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
  746. package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
  747. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
  748. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
  749. package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
  750. package/lib/node/priorityFee/types.d.ts +32 -0
  751. package/lib/node/priorityFee/types.d.ts.map +1 -1
  752. package/lib/node/priorityFee/types.js +5 -0
  753. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
  754. package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
  755. package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
  756. package/lib/node/slot/SlotSubscriber.d.ts +18 -0
  757. package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
  758. package/lib/node/slot/SlotSubscriber.js +16 -0
  759. package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
  760. package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
  761. package/lib/node/slot/SlothashSubscriber.js +25 -1
  762. package/lib/node/swift/swiftOrderSubscriber.js +2 -2
  763. package/lib/node/tokenFaucet.d.ts +2 -2
  764. package/lib/node/tokenFaucet.d.ts.map +1 -1
  765. package/lib/node/tokenFaucet.js +11 -4
  766. package/lib/node/tx/baseTxSender.d.ts +163 -0
  767. package/lib/node/tx/baseTxSender.d.ts.map +1 -1
  768. package/lib/node/tx/baseTxSender.js +174 -6
  769. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
  770. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
  771. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
  772. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
  773. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
  774. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
  775. package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
  776. package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
  777. package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
  778. package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
  779. package/lib/node/tx/fastSingleTxSender.js +48 -1
  780. package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
  781. package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
  782. package/lib/node/tx/forwardOnlyTxSender.js +48 -0
  783. package/lib/node/tx/reportTransactionError.d.ts +18 -6
  784. package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
  785. package/lib/node/tx/reportTransactionError.js +18 -6
  786. package/lib/node/tx/retryTxSender.d.ts +40 -0
  787. package/lib/node/tx/retryTxSender.d.ts.map +1 -1
  788. package/lib/node/tx/retryTxSender.js +39 -0
  789. package/lib/node/tx/txHandler.d.ts +146 -35
  790. package/lib/node/tx/txHandler.d.ts.map +1 -1
  791. package/lib/node/tx/txHandler.js +132 -32
  792. package/lib/node/tx/txParamProcessor.d.ts +47 -0
  793. package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
  794. package/lib/node/tx/txParamProcessor.js +47 -0
  795. package/lib/node/tx/types.d.ts +46 -0
  796. package/lib/node/tx/types.d.ts.map +1 -1
  797. package/lib/node/tx/types.js +5 -0
  798. package/lib/node/tx/utils.d.ts +26 -0
  799. package/lib/node/tx/utils.d.ts.map +1 -1
  800. package/lib/node/tx/utils.js +26 -0
  801. package/lib/node/tx/whileValidTxSender.d.ts +82 -0
  802. package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
  803. package/lib/node/tx/whileValidTxSender.js +81 -0
  804. package/lib/node/types.d.ts +786 -13
  805. package/lib/node/types.d.ts.map +1 -1
  806. package/lib/node/types.js +133 -9
  807. package/lib/node/user.d.ts +645 -84
  808. package/lib/node/user.d.ts.map +1 -1
  809. package/lib/node/user.js +779 -96
  810. package/lib/node/userMap/PollingSubscription.d.ts +10 -0
  811. package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
  812. package/lib/node/userMap/PollingSubscription.js +14 -2
  813. package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
  814. package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
  815. package/lib/node/userMap/WebsocketSubscription.js +9 -0
  816. package/lib/node/userMap/grpcSubscription.d.ts +8 -0
  817. package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
  818. package/lib/node/userMap/grpcSubscription.js +8 -0
  819. package/lib/node/userMap/referrerMap.d.ts +72 -2
  820. package/lib/node/userMap/referrerMap.d.ts.map +1 -1
  821. package/lib/node/userMap/referrerMap.js +84 -2
  822. package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
  823. package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
  824. package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
  825. package/lib/node/userMap/userMap.d.ts +81 -3
  826. package/lib/node/userMap/userMap.d.ts.map +1 -1
  827. package/lib/node/userMap/userMap.js +81 -4
  828. package/lib/node/userMap/userMapConfig.d.ts +23 -0
  829. package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
  830. package/lib/node/userMap/userStatsMap.d.ts +22 -0
  831. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  832. package/lib/node/userMap/userStatsMap.js +22 -0
  833. package/lib/node/userName.d.ts +16 -0
  834. package/lib/node/userName.d.ts.map +1 -1
  835. package/lib/node/userName.js +16 -0
  836. package/lib/node/userStats.d.ts +28 -1
  837. package/lib/node/userStats.d.ts.map +1 -1
  838. package/lib/node/userStats.js +28 -1
  839. package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
  840. package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
  841. package/lib/node/util/TransactionConfirmationManager.js +33 -0
  842. package/lib/node/util/chainClock.d.ts +24 -0
  843. package/lib/node/util/chainClock.d.ts.map +1 -1
  844. package/lib/node/util/chainClock.js +20 -0
  845. package/lib/node/util/computeUnits.d.ts +32 -0
  846. package/lib/node/util/computeUnits.d.ts.map +1 -1
  847. package/lib/node/util/computeUnits.js +32 -0
  848. package/lib/node/util/digest.d.ts +17 -0
  849. package/lib/node/util/digest.d.ts.map +1 -1
  850. package/lib/node/util/digest.js +17 -0
  851. package/lib/node/util/ed25519Utils.d.ts +12 -2
  852. package/lib/node/util/ed25519Utils.d.ts.map +1 -1
  853. package/lib/node/util/ed25519Utils.js +12 -2
  854. package/lib/node/util/promiseTimeout.d.ts +9 -0
  855. package/lib/node/util/promiseTimeout.d.ts.map +1 -1
  856. package/lib/node/util/promiseTimeout.js +9 -0
  857. package/lib/node/velocityClient.d.ts +3323 -216
  858. package/lib/node/velocityClient.d.ts.map +1 -1
  859. package/lib/node/velocityClient.js +3428 -249
  860. package/lib/node/wallet.d.ts +37 -0
  861. package/lib/node/wallet.d.ts.map +1 -1
  862. package/lib/node/wallet.js +37 -0
  863. package/package.json +2 -1
  864. package/src/accounts/basicUserAccountSubscriber.ts +18 -0
  865. package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
  866. package/src/accounts/bulkAccountLoader.ts +52 -0
  867. package/src/accounts/bulkUserStatsSubscription.ts +9 -2
  868. package/src/accounts/bulkUserSubscription.ts +8 -2
  869. package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
  870. package/src/accounts/fetch.ts +59 -2
  871. package/src/accounts/grpcAccountSubscriber.ts +30 -0
  872. package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
  873. package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
  874. package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
  875. package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
  876. package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
  877. package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
  878. package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
  879. package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
  880. package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
  881. package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
  882. package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
  883. package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
  884. package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
  885. package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
  886. package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
  887. package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
  888. package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
  889. package/src/accounts/testBulkAccountLoader.ts +8 -0
  890. package/src/accounts/types.ts +149 -0
  891. package/src/accounts/utils.ts +42 -24
  892. package/src/accounts/webSocketAccountSubscriber.ts +41 -0
  893. package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
  894. package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
  895. package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
  896. package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
  897. package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
  898. package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
  899. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
  900. package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
  901. package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
  902. package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
  903. package/src/addresses/marketAddresses.ts +10 -0
  904. package/src/addresses/pda.ts +228 -12
  905. package/src/adminClient.ts +2184 -4
  906. package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
  907. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
  908. package/src/auctionSubscriber/index.ts +6 -0
  909. package/src/auctionSubscriber/types.ts +7 -0
  910. package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
  911. package/src/blockhashSubscriber/index.ts +5 -0
  912. package/src/blockhashSubscriber/types.ts +5 -4
  913. package/src/clock/clockSubscriber.ts +24 -0
  914. package/src/config.ts +109 -22
  915. package/src/constants/numericConstants.ts +70 -0
  916. package/src/constants/perpMarkets.ts +45 -960
  917. package/src/constants/spotMarkets.ts +23 -793
  918. package/src/constants/txConstants.ts +1 -0
  919. package/src/core/VelocityCore.ts +286 -8
  920. package/src/core/instructions/deposit.ts +22 -0
  921. package/src/core/instructions/fill.ts +17 -0
  922. package/src/core/instructions/funding.ts +12 -0
  923. package/src/core/instructions/liquidation.ts +18 -0
  924. package/src/core/instructions/orders.ts +28 -0
  925. package/src/core/instructions/perpOrders.ts +106 -0
  926. package/src/core/instructions/settlement.ts +14 -0
  927. package/src/core/instructions/trigger.ts +15 -0
  928. package/src/core/instructions/withdraw.ts +21 -0
  929. package/src/core/remainingAccounts.ts +47 -3
  930. package/src/core/signedMsg.ts +38 -0
  931. package/src/decode/customCoder.ts +46 -3
  932. package/src/decode/user.ts +22 -0
  933. package/src/dlob/DLOB.ts +668 -97
  934. package/src/dlob/DLOBNode.ts +98 -6
  935. package/src/dlob/DLOBSubscriber.ts +49 -12
  936. package/src/dlob/NodeList.ts +69 -0
  937. package/src/dlob/orderBookLevels.ts +108 -14
  938. package/src/dlob/types.ts +15 -0
  939. package/src/events/eventList.ts +14 -0
  940. package/src/events/eventSubscriber.ts +100 -19
  941. package/src/events/eventsServerLogProvider.ts +28 -0
  942. package/src/events/fetchLogs.ts +52 -2
  943. package/src/events/parse.ts +23 -0
  944. package/src/events/pollingLogProvider.ts +24 -0
  945. package/src/events/sort.ts +12 -0
  946. package/src/events/txEventCache.ts +19 -7
  947. package/src/events/types.ts +131 -11
  948. package/src/events/webSocketLogProvider.ts +29 -0
  949. package/src/factory/oracleClient.ts +2 -2
  950. package/src/idl/velocity.json +50 -1
  951. package/src/idl/velocity.ts +50 -1
  952. package/src/keypair.ts +8 -0
  953. package/src/marginCalculation.ts +153 -2
  954. package/src/math/amm.ts +371 -36
  955. package/src/math/auction.ts +139 -30
  956. package/src/math/bankruptcy.ts +104 -1
  957. package/src/math/builder.ts +74 -8
  958. package/src/math/conversion.ts +21 -0
  959. package/src/math/exchangeStatus.ts +125 -0
  960. package/src/math/funding.ts +63 -23
  961. package/src/math/insurance.ts +62 -0
  962. package/src/math/liquidation.ts +227 -17
  963. package/src/math/margin.ts +80 -14
  964. package/src/math/market.ts +148 -17
  965. package/src/math/oracles.ts +124 -0
  966. package/src/math/orders.ts +144 -18
  967. package/src/math/position.ts +80 -33
  968. package/src/math/repeg.ts +48 -10
  969. package/src/math/spotBalance.ts +252 -12
  970. package/src/math/spotMarket.ts +36 -3
  971. package/src/math/spotPosition.ts +72 -0
  972. package/src/math/state.ts +32 -1
  973. package/src/math/superStake.ts +126 -3
  974. package/src/math/tiers.ts +29 -0
  975. package/src/math/trade.ts +125 -55
  976. package/src/math/utils.ts +71 -9
  977. package/src/memcmp.ts +131 -7
  978. package/src/oracles/oracleClientCache.ts +16 -0
  979. package/src/oracles/oracleId.ts +39 -6
  980. package/src/oracles/prelaunchOracleClient.ts +20 -0
  981. package/src/oracles/pythClient.ts +32 -1
  982. package/src/oracles/pythLazerClient.ts +35 -1
  983. package/src/oracles/quoteAssetOracleClient.ts +18 -0
  984. package/src/oracles/strictOraclePrice.ts +21 -0
  985. package/src/oracles/types.ts +45 -0
  986. package/src/oracles/utils.ts +20 -0
  987. package/src/orderParams.ts +42 -4
  988. package/src/orderSubscriber/OrderSubscriber.ts +74 -2
  989. package/src/orderSubscriber/PollingSubscription.ts +11 -0
  990. package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
  991. package/src/orderSubscriber/grpcSubscription.ts +16 -0
  992. package/src/orderSubscriber/types.ts +9 -0
  993. package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
  994. package/src/priorityFee/averageStrategy.ts +1 -0
  995. package/src/priorityFee/ewmaStrategy.ts +10 -0
  996. package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
  997. package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
  998. package/src/priorityFee/maxStrategy.ts +1 -0
  999. package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
  1000. package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
  1001. package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
  1002. package/src/priorityFee/types.ts +33 -15
  1003. package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
  1004. package/src/slot/SlotSubscriber.ts +18 -0
  1005. package/src/slot/SlothashSubscriber.ts +27 -1
  1006. package/src/swift/swiftOrderSubscriber.ts +2 -2
  1007. package/src/tokenFaucet.ts +10 -7
  1008. package/src/tx/baseTxSender.ts +185 -5
  1009. package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
  1010. package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
  1011. package/src/tx/blockhashFetcher/types.ts +4 -0
  1012. package/src/tx/fastSingleTxSender.ts +58 -4
  1013. package/src/tx/forwardOnlyTxSender.ts +48 -0
  1014. package/src/tx/reportTransactionError.ts +18 -6
  1015. package/src/tx/retryTxSender.ts +40 -0
  1016. package/src/tx/txHandler.ts +146 -35
  1017. package/src/tx/txParamProcessor.ts +47 -0
  1018. package/src/tx/types.ts +46 -0
  1019. package/src/tx/utils.ts +26 -0
  1020. package/src/tx/whileValidTxSender.ts +82 -0
  1021. package/src/types.ts +783 -22
  1022. package/src/user.ts +869 -110
  1023. package/src/userMap/PollingSubscription.ts +16 -2
  1024. package/src/userMap/WebsocketSubscription.ts +9 -0
  1025. package/src/userMap/grpcSubscription.ts +8 -0
  1026. package/src/userMap/referrerMap.ts +92 -3
  1027. package/src/userMap/revenueShareEscrowMap.ts +38 -11
  1028. package/src/userMap/userMap.ts +82 -4
  1029. package/src/userMap/userMapConfig.ts +23 -10
  1030. package/src/userMap/userStatsMap.ts +22 -0
  1031. package/src/userName.ts +16 -0
  1032. package/src/userStats.ts +28 -1
  1033. package/src/util/TransactionConfirmationManager.ts +33 -0
  1034. package/src/util/chainClock.ts +24 -0
  1035. package/src/util/computeUnits.ts +32 -0
  1036. package/src/util/digest.ts +17 -0
  1037. package/src/util/ed25519Utils.ts +12 -2
  1038. package/src/util/promiseTimeout.ts +9 -0
  1039. package/src/velocityClient.ts +3456 -254
  1040. package/src/wallet.ts +37 -0
  1041. package/tests/VelocityCore/builder_escrow.test.ts +121 -0
  1042. package/tests/amm/test.ts +102 -0
  1043. package/tests/builder/builderFee.test.ts +42 -0
  1044. package/tests/dlob/helpers.ts +1 -0
  1045. package/tests/dlob/tickSizeStandardization.ts +545 -0
  1046. package/tests/exchangeStatus/test.ts +45 -0
  1047. package/tests/liquidation/test.ts +125 -0
  1048. package/tests/oracles/mmOracleGate.test.ts +379 -0
  1049. package/tests/oracles/pythPegSnap.test.ts +76 -0
  1050. package/tests/sdkParity/enumParity.test.ts +84 -0
  1051. package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
  1052. package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
  1053. package/tests/spot/test.ts +55 -0
  1054. package/tests/user/bankruptcy.ts +165 -0
  1055. package/tests/user/feeAndWithdrawLimits.ts +284 -0
  1056. package/tests/user/getMarginCalculation.ts +226 -1
  1057. package/tests/user/test.ts +8 -4
@@ -3,6 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPublicKeyAndSourceFromOracleId = exports.getOracleId = exports.getOracleSourceFromNum = exports.getOracleSourceNum = void 0;
4
4
  const web3_js_1 = require("@solana/web3.js");
5
5
  const types_1 = require("../types");
6
+ /**
7
+ * Maps an `OracleSource` enum-object (e.g. `{ pyth: {} }`) to its stable numeric encoding
8
+ * (`OracleSourceNum`) used as part of an oracle id string. This encoding is SDK-internal — it
9
+ * is not the on-chain Borsh discriminant (see `OracleSourceNum`).
10
+ * @param source - The oracle source variant.
11
+ * @returns The corresponding `OracleSourceNum` value.
12
+ * @throws Error if `source` doesn't match any known variant.
13
+ */
6
14
  function getOracleSourceNum(source) {
7
15
  if ('pyth' in source)
8
16
  return types_1.OracleSourceNum.PYTH;
@@ -16,8 +24,8 @@ function getOracleSourceNum(source) {
16
24
  return types_1.OracleSourceNum.PYTH_1K_PULL;
17
25
  if ('pyth1MPull' in source)
18
26
  return types_1.OracleSourceNum.PYTH_1M_PULL;
19
- if ('switchboard' in source)
20
- return types_1.OracleSourceNum.SWITCHBOARD;
27
+ if ('deprecatedSwitchboard' in source)
28
+ return types_1.OracleSourceNum.DEPRECATED_SWITCHBOARD;
21
29
  if ('quoteAsset' in source)
22
30
  return types_1.OracleSourceNum.QUOTE_ASSET;
23
31
  if ('pythStableCoin' in source)
@@ -26,8 +34,8 @@ function getOracleSourceNum(source) {
26
34
  return types_1.OracleSourceNum.PYTH_STABLE_COIN_PULL;
27
35
  if ('prelaunch' in source)
28
36
  return types_1.OracleSourceNum.PRELAUNCH;
29
- if ('switchboardOnDemand' in source)
30
- return types_1.OracleSourceNum.SWITCHBOARD_ON_DEMAND;
37
+ if ('deprecatedSwitchboardOnDemand' in source)
38
+ return types_1.OracleSourceNum.DEPRECATED_SWITCHBOARD_ON_DEMAND;
31
39
  if ('pythLazer' in source)
32
40
  return types_1.OracleSourceNum.PYTH_LAZER;
33
41
  if ('pythLazer1K' in source)
@@ -39,6 +47,13 @@ function getOracleSourceNum(source) {
39
47
  throw new Error('Invalid oracle source');
40
48
  }
41
49
  exports.getOracleSourceNum = getOracleSourceNum;
50
+ /**
51
+ * Inverse of `getOracleSourceNum`: maps a numeric `OracleSourceNum` back to its `OracleSource`
52
+ * enum-object.
53
+ * @param sourceNum - Numeric oracle source encoding.
54
+ * @returns The corresponding `OracleSource` variant.
55
+ * @throws Error if `sourceNum` doesn't match any known `OracleSourceNum` value.
56
+ */
42
57
  function getOracleSourceFromNum(sourceNum) {
43
58
  if (sourceNum === types_1.OracleSourceNum.PYTH)
44
59
  return 'pyth';
@@ -52,8 +67,8 @@ function getOracleSourceFromNum(sourceNum) {
52
67
  return 'pyth1KPull';
53
68
  if (sourceNum === types_1.OracleSourceNum.PYTH_1M_PULL)
54
69
  return 'pyth1MPull';
55
- if (sourceNum === types_1.OracleSourceNum.SWITCHBOARD)
56
- return 'switchboard';
70
+ if (sourceNum === types_1.OracleSourceNum.DEPRECATED_SWITCHBOARD)
71
+ return 'deprecatedSwitchboard';
57
72
  if (sourceNum === types_1.OracleSourceNum.QUOTE_ASSET)
58
73
  return 'quoteAsset';
59
74
  if (sourceNum === types_1.OracleSourceNum.PYTH_STABLE_COIN)
@@ -62,8 +77,8 @@ function getOracleSourceFromNum(sourceNum) {
62
77
  return 'pythStableCoinPull';
63
78
  if (sourceNum === types_1.OracleSourceNum.PRELAUNCH)
64
79
  return 'prelaunch';
65
- if (sourceNum === types_1.OracleSourceNum.SWITCHBOARD_ON_DEMAND)
66
- return 'switchboardOnDemand';
80
+ if (sourceNum === types_1.OracleSourceNum.DEPRECATED_SWITCHBOARD_ON_DEMAND)
81
+ return 'deprecatedSwitchboardOnDemand';
67
82
  if (sourceNum === types_1.OracleSourceNum.PYTH_LAZER)
68
83
  return 'pythLazer';
69
84
  if (sourceNum === types_1.OracleSourceNum.PYTH_LAZER_1K)
@@ -75,10 +90,26 @@ function getOracleSourceFromNum(sourceNum) {
75
90
  throw new Error('Invalid oracle source');
76
91
  }
77
92
  exports.getOracleSourceFromNum = getOracleSourceFromNum;
93
+ /**
94
+ * Builds a stable string id for an oracle account, uniquely identifying it by both its address
95
+ * and the source/decoding scheme to use — the same pubkey can be interpreted under different
96
+ * `OracleSource`s (e.g. `pyth` vs `pyth1K`) with different results, so the pubkey alone is not a
97
+ * safe cache/map key.
98
+ * @param publicKey - The oracle account's address.
99
+ * @param source - The oracle source variant to decode it as.
100
+ * @returns A string of the form `"<base58 pubkey>-<OracleSourceNum>"`.
101
+ */
78
102
  function getOracleId(publicKey, source) {
79
103
  return `${publicKey.toBase58()}-${getOracleSourceNum(source)}`;
80
104
  }
81
105
  exports.getOracleId = getOracleId;
106
+ /**
107
+ * Inverse of `getOracleId`: parses an oracle id string back into its pubkey and `OracleSource`.
108
+ * @param oracleId - An id string previously produced by `getOracleId`.
109
+ * @returns The decoded `publicKey` and `source`.
110
+ * @throws Error if the encoded source number doesn't match any known `OracleSourceNum` value, or
111
+ * `PublicKey` construction fails on a malformed id.
112
+ */
82
113
  function getPublicKeyAndSourceFromOracleId(oracleId) {
83
114
  const [publicKey, source] = oracleId.split('-');
84
115
  return {
@@ -3,11 +3,31 @@
3
3
  import { Connection, PublicKey } from '@solana/web3.js';
4
4
  import { OracleClient, OraclePriceData } from './types';
5
5
  import { VelocityProgram } from '../config';
6
+ /**
7
+ * `OracleClient` for the `PrelaunchOracle` account type — a synthetic, program-managed "oracle"
8
+ * used for perp markets that have not yet listed on a real price feed. Its price is admin/keeper
9
+ * set (via `updatePrelaunchOracleParams`) rather than fed by an external network.
10
+ */
6
11
  export declare class PrelaunchOracleClient implements OracleClient {
7
12
  private connection;
8
13
  private program;
9
14
  constructor(connection: Connection, program: VelocityProgram);
15
+ /**
16
+ * Fetches and decodes a `PrelaunchOracle` account's current price data.
17
+ * @param pricePublicKey - The `PrelaunchOracle` account's address (see `getPrelaunchOraclePublicKey`).
18
+ * @returns The decoded price data.
19
+ * @throws Error if the account does not exist.
20
+ */
10
21
  getOraclePriceData(pricePublicKey: PublicKey): Promise<OraclePriceData>;
22
+ /**
23
+ * Decodes raw `PrelaunchOracle` account bytes into normalized `OraclePriceData`. Note `slot` is
24
+ * populated from `ammLastUpdateSlot` (the last time the paired AMM used this price), not a
25
+ * slot recorded by the oracle account itself, and `hasSufficientNumberOfDataPoints` is always
26
+ * `true` since there is no publisher-count concept for this source.
27
+ * @param buffer - Raw `PrelaunchOracle` account data.
28
+ * @returns Price (`price`), confidence (`confidence`, both PRICE_PRECISION 1e6), and the
29
+ * prelaunch-only upper bound (`maxPrice`, PRICE_PRECISION 1e6).
30
+ */
11
31
  getOraclePriceDataFromBuffer(buffer: Buffer): OraclePriceData;
12
32
  }
13
33
  //# sourceMappingURL=prelaunchOracleClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prelaunchOracleClient.d.ts","sourceRoot":"","sources":["../../../src/oracles/prelaunchOracleClient.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAI5C,qBAAa,qBAAsB,YAAW,YAAY;IACzD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAkB;gBAEd,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe;IAKtD,kBAAkB,CAC9B,cAAc,EAAE,SAAS,GACvB,OAAO,CAAC,eAAe,CAAC;IASpB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;CAgBpE"}
1
+ {"version":3,"file":"prelaunchOracleClient.d.ts","sourceRoot":"","sources":["../../../src/oracles/prelaunchOracleClient.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAI5C;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,YAAY;IACzD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAkB;gBAEd,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe;IAKnE;;;;;OAKG;IACU,kBAAkB,CAC9B,cAAc,EAAE,SAAS,GACvB,OAAO,CAAC,eAAe,CAAC;IAS3B;;;;;;;;OAQG;IACI,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;CAgBpE"}
@@ -2,15 +2,35 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PrelaunchOracleClient = void 0;
4
4
  const utils_1 = require("./utils");
5
+ /**
6
+ * `OracleClient` for the `PrelaunchOracle` account type — a synthetic, program-managed "oracle"
7
+ * used for perp markets that have not yet listed on a real price feed. Its price is admin/keeper
8
+ * set (via `updatePrelaunchOracleParams`) rather than fed by an external network.
9
+ */
5
10
  class PrelaunchOracleClient {
6
11
  constructor(connection, program) {
7
12
  this.connection = connection;
8
13
  this.program = program;
9
14
  }
15
+ /**
16
+ * Fetches and decodes a `PrelaunchOracle` account's current price data.
17
+ * @param pricePublicKey - The `PrelaunchOracle` account's address (see `getPrelaunchOraclePublicKey`).
18
+ * @returns The decoded price data.
19
+ * @throws Error if the account does not exist.
20
+ */
10
21
  async getOraclePriceData(pricePublicKey) {
11
22
  const data = await (0, utils_1.getOracleAccountDataOrThrow)(this.connection, pricePublicKey, 'Prelaunch oracle');
12
23
  return this.getOraclePriceDataFromBuffer(data);
13
24
  }
25
+ /**
26
+ * Decodes raw `PrelaunchOracle` account bytes into normalized `OraclePriceData`. Note `slot` is
27
+ * populated from `ammLastUpdateSlot` (the last time the paired AMM used this price), not a
28
+ * slot recorded by the oracle account itself, and `hasSufficientNumberOfDataPoints` is always
29
+ * `true` since there is no publisher-count concept for this source.
30
+ * @param buffer - Raw `PrelaunchOracle` account data.
31
+ * @returns Price (`price`), confidence (`confidence`, both PRICE_PRECISION 1e6), and the
32
+ * prelaunch-only upper bound (`maxPrice`, PRICE_PRECISION 1e6).
33
+ */
14
34
  getOraclePriceDataFromBuffer(buffer) {
15
35
  const prelaunchOracle = this.program.account.prelaunchOracle.coder.accounts.decodeUnchecked('prelaunchOracle', buffer);
16
36
  return {
@@ -3,12 +3,43 @@
3
3
  import { Connection, PublicKey } from '@solana/web3.js';
4
4
  import { OracleClient, OraclePriceData } from './types';
5
5
  import { BN } from '../isomorphic/anchor';
6
+ /**
7
+ * `OracleClient` for legacy (push-model) Pyth price accounts, decoded via `@pythnetwork/client`'s
8
+ * `parsePriceData`. Backs the `pyth`, `pyth1K`, `pyth1M`, and `pythStableCoin` `OracleSource`
9
+ * variants — the `pythPull`/`pyth1KPull`/`pyth1MPull`/`pythStableCoinPull` (Pyth pull-oracle)
10
+ * variants have been removed from the SDK and throw in `getOracleClient`.
11
+ */
6
12
  export declare class PythClient implements OracleClient {
7
13
  private connection;
8
14
  private multiple;
9
15
  private stableCoin;
16
+ /**
17
+ * @param connection - RPC connection used to fetch oracle account data.
18
+ * @param multiple - Divisor applied to the raw Pyth precision before rescaling to
19
+ * PRICE_PRECISION; pass `1000`/`1000000` for the `pyth1K`/`pyth1M` source variants (feeds
20
+ * quoted per 1,000 / 1,000,000 units of the underlying), or the default `ONE` (1) for a
21
+ * standard per-unit feed.
22
+ * @param stableCoin - When `true` (the `pythStableCoin` variant), snaps the decoded price to
23
+ * exactly `QUOTE_PRECISION` (1.0) whenever it is within 5bps (or within `confidence` if
24
+ * tighter) of peg — see `getStableCoinPrice`.
25
+ */
10
26
  constructor(connection: Connection, multiple?: BN, stableCoin?: boolean);
27
+ /**
28
+ * Fetches and decodes a Pyth price account's current price data.
29
+ * @param pricePublicKey - The Pyth price account's address.
30
+ * @returns The decoded, normalized price data.
31
+ * @throws Error if the account does not exist.
32
+ */
11
33
  getOraclePriceData(pricePublicKey: PublicKey): Promise<OraclePriceData>;
34
+ /**
35
+ * Decodes raw Pyth price account bytes into normalized `OraclePriceData`, rescaling from
36
+ * Pyth's native exponent to PRICE_PRECISION (1e6) via `convertPythPrice`. `confidence` defaults
37
+ * to 0 if the account has no confidence field (e.g. uninitialized), and `hasSufficientNumberOfDataPoints`
38
+ * is `true` only when the number of active quoters is at least `min(numComponentPrices, 3)`.
39
+ * @param buffer - Raw Pyth price account data.
40
+ * @returns `price`, `confidence`, `twap`, `twapConfidence` (all PRICE_PRECISION 1e6), `slot`
41
+ * (the price account's last update slot), and `hasSufficientNumberOfDataPoints`.
42
+ */
12
43
  getOraclePriceDataFromBuffer(buffer: Buffer): OraclePriceData;
13
44
  }
14
45
  //# sourceMappingURL=pythClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pythClient.d.ts","sourceRoot":"","sources":["../../../src/oracles/pythClient.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAS1C,qBAAa,UAAW,YAAW,YAAY;IAC9C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAU;gBAG3B,UAAU,EAAE,UAAU,EACtB,QAAQ,KAAM,EACd,UAAU,UAAQ;IAON,kBAAkB,CAC9B,cAAc,EAAE,SAAS,GACvB,OAAO,CAAC,eAAe,CAAC;IASpB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;CAsCpE"}
1
+ {"version":3,"file":"pythClient.d.ts","sourceRoot":"","sources":["../../../src/oracles/pythClient.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAS1C;;;;;GAKG;AACH,qBAAa,UAAW,YAAW,YAAY;IAC9C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAU;IAE5B;;;;;;;;;OASG;gBAEF,UAAU,EAAE,UAAU,EACtB,QAAQ,KAAM,EACd,UAAU,UAAQ;IAOnB;;;;;OAKG;IACU,kBAAkB,CAC9B,cAAc,EAAE,SAAS,GACvB,OAAO,CAAC,eAAe,CAAC;IAS3B;;;;;;;;OAQG;IACI,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;CAsCpE"}
@@ -5,16 +5,47 @@ const client_1 = require("@pythnetwork/client");
5
5
  const anchor_1 = require("../isomorphic/anchor");
6
6
  const numericConstants_1 = require("../constants/numericConstants");
7
7
  const utils_1 = require("./utils");
8
+ /**
9
+ * `OracleClient` for legacy (push-model) Pyth price accounts, decoded via `@pythnetwork/client`'s
10
+ * `parsePriceData`. Backs the `pyth`, `pyth1K`, `pyth1M`, and `pythStableCoin` `OracleSource`
11
+ * variants — the `pythPull`/`pyth1KPull`/`pyth1MPull`/`pythStableCoinPull` (Pyth pull-oracle)
12
+ * variants have been removed from the SDK and throw in `getOracleClient`.
13
+ */
8
14
  class PythClient {
15
+ /**
16
+ * @param connection - RPC connection used to fetch oracle account data.
17
+ * @param multiple - Divisor applied to the raw Pyth precision before rescaling to
18
+ * PRICE_PRECISION; pass `1000`/`1000000` for the `pyth1K`/`pyth1M` source variants (feeds
19
+ * quoted per 1,000 / 1,000,000 units of the underlying), or the default `ONE` (1) for a
20
+ * standard per-unit feed.
21
+ * @param stableCoin - When `true` (the `pythStableCoin` variant), snaps the decoded price to
22
+ * exactly `QUOTE_PRECISION` (1.0) whenever it is within 5bps (or within `confidence` if
23
+ * tighter) of peg — see `getStableCoinPrice`.
24
+ */
9
25
  constructor(connection, multiple = numericConstants_1.ONE, stableCoin = false) {
10
26
  this.connection = connection;
11
27
  this.multiple = multiple;
12
28
  this.stableCoin = stableCoin;
13
29
  }
30
+ /**
31
+ * Fetches and decodes a Pyth price account's current price data.
32
+ * @param pricePublicKey - The Pyth price account's address.
33
+ * @returns The decoded, normalized price data.
34
+ * @throws Error if the account does not exist.
35
+ */
14
36
  async getOraclePriceData(pricePublicKey) {
15
37
  const data = await (0, utils_1.getOracleAccountDataOrThrow)(this.connection, pricePublicKey, 'Pyth oracle');
16
38
  return this.getOraclePriceDataFromBuffer(data);
17
39
  }
40
+ /**
41
+ * Decodes raw Pyth price account bytes into normalized `OraclePriceData`, rescaling from
42
+ * Pyth's native exponent to PRICE_PRECISION (1e6) via `convertPythPrice`. `confidence` defaults
43
+ * to 0 if the account has no confidence field (e.g. uninitialized), and `hasSufficientNumberOfDataPoints`
44
+ * is `true` only when the number of active quoters is at least `min(numComponentPrices, 3)`.
45
+ * @param buffer - Raw Pyth price account data.
46
+ * @returns `price`, `confidence`, `twap`, `twapConfidence` (all PRICE_PRECISION 1e6), `slot`
47
+ * (the price account's last update slot), and `hasSufficientNumberOfDataPoints`.
48
+ */
18
49
  getOraclePriceDataFromBuffer(buffer) {
19
50
  var _a;
20
51
  const priceData = (0, client_1.parsePriceData)(buffer);
@@ -48,7 +79,7 @@ function convertPythPrice(price, exponent, multiple) {
48
79
  }
49
80
  const fiveBPS = new anchor_1.BN(500);
50
81
  function getStableCoinPrice(price, confidence) {
51
- if (price.sub(numericConstants_1.QUOTE_PRECISION).abs().lt(anchor_1.BN.min(confidence, fiveBPS))) {
82
+ if (price.sub(numericConstants_1.QUOTE_PRECISION).abs().lte(anchor_1.BN.min(confidence, fiveBPS))) {
52
83
  return numericConstants_1.QUOTE_PRECISION;
53
84
  }
54
85
  else {
@@ -3,14 +3,48 @@
3
3
  import { Connection, PublicKey } from '@solana/web3.js';
4
4
  import { OracleClient, OraclePriceData } from './types';
5
5
  import { BN } from '../isomorphic/anchor';
6
+ /**
7
+ * `OracleClient` for `PythLazerOracle` accounts — Velocity's on-chain cache of a Pyth Lazer
8
+ * push-update feed, decoded via the velocity program's own Anchor coder (Lazer has no dedicated
9
+ * client account layout package, unlike legacy Pyth). Backs the `pythLazer`, `pythLazer1K`,
10
+ * `pythLazer1M`, and `pythLazerStableCoin` `OracleSource` variants.
11
+ */
6
12
  export declare class PythLazerClient implements OracleClient {
7
13
  private connection;
8
14
  private multiple;
9
15
  private stableCoin;
10
16
  private program;
11
17
  readonly decodeFunc: (name: string, data: Buffer) => any;
18
+ /**
19
+ * @param connection - RPC connection used to fetch oracle account data; also used to spin up a
20
+ * throwaway `AnchorProvider`/`Program` (with a fresh random keypair, never used to sign) purely
21
+ * to get access to the IDL's `pythLazerOracle` account coder.
22
+ * @param multiple - Divisor applied to the raw Lazer precision before rescaling to
23
+ * PRICE_PRECISION; pass `1000`/`1000000` for the `pythLazer1K`/`pythLazer1M` source variants, or
24
+ * the default `ONE` (1) for a standard per-unit feed.
25
+ * @param stableCoin - When `true` (the `pythLazerStableCoin` variant), snaps the decoded price
26
+ * to exactly `QUOTE_PRECISION` (1.0) whenever it is within 5bps (or within `confidence` if
27
+ * tighter) of peg — see `getStableCoinPrice`.
28
+ */
12
29
  constructor(connection: Connection, multiple?: BN, stableCoin?: boolean);
30
+ /**
31
+ * Fetches and decodes a `PythLazerOracle` account's current price data.
32
+ * @param pricePublicKey - The `PythLazerOracle` account's address (see `getPythLazerOraclePublicKey`).
33
+ * @returns The decoded, normalized price data.
34
+ * @throws Error if the account does not exist.
35
+ */
13
36
  getOraclePriceData(pricePublicKey: PublicKey): Promise<OraclePriceData>;
37
+ /**
38
+ * Decodes raw `PythLazerOracle` account bytes into normalized `OraclePriceData`, rescaling from
39
+ * the feed's native exponent to PRICE_PRECISION (1e6) via `convertPythPrice`. Unlike legacy
40
+ * Pyth, Lazer has no separate TWAP field on-chain, so `twap`/`twapConfidence` are both set to
41
+ * the same converted live `price`/`conf` rather than a genuine time-weighted average.
42
+ * `hasSufficientNumberOfDataPoints` is always `true` (no publisher-count concept for this
43
+ * source), and `sequenceId` is set to the feed's `publishTime` for staleness/ordering checks.
44
+ * @param buffer - Raw `PythLazerOracle` account data.
45
+ * @returns `price`, `confidence`, `twap`, `twapConfidence` (all PRICE_PRECISION 1e6), `slot`
46
+ * (`postedSlot`, the slot the update landed on-chain), and `sequenceId` (`publishTime`).
47
+ */
14
48
  getOraclePriceDataFromBuffer(buffer: Buffer): OraclePriceData;
15
49
  }
16
50
  //# sourceMappingURL=pythLazerClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pythLazerClient.d.ts","sourceRoot":"","sources":["../../../src/oracles/pythLazerClient.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAW,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAkB,EAAE,EAAW,MAAM,sBAAsB,CAAC;AAanE,qBAAa,eAAgB,YAAW,YAAY;IACnD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,OAAO,CAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;gBAGxD,UAAU,EAAE,UAAU,EACtB,QAAQ,KAAM,EACd,UAAU,UAAQ;IAqBN,kBAAkB,CAC9B,cAAc,EAAE,SAAS,GACvB,OAAO,CAAC,eAAe,CAAC;IASpB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;CAkCpE"}
1
+ {"version":3,"file":"pythLazerClient.d.ts","sourceRoot":"","sources":["../../../src/oracles/pythLazerClient.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAW,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAkB,EAAE,EAAW,MAAM,sBAAsB,CAAC;AAanE;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,YAAY;IACnD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,OAAO,CAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;IAEzD;;;;;;;;;;OAUG;gBAEF,UAAU,EAAE,UAAU,EACtB,QAAQ,KAAM,EACd,UAAU,UAAQ;IAqBnB;;;;;OAKG;IACU,kBAAkB,CAC9B,cAAc,EAAE,SAAS,GACvB,OAAO,CAAC,eAAe,CAAC;IAS3B;;;;;;;;;;OAUG;IACI,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;CAkCpE"}
@@ -10,7 +10,24 @@ const numericConstants_1 = require("../constants/numericConstants");
10
10
  const wallet_1 = require("../wallet");
11
11
  const velocity_json_1 = __importDefault(require("../idl/velocity.json"));
12
12
  const utils_1 = require("./utils");
13
+ /**
14
+ * `OracleClient` for `PythLazerOracle` accounts — Velocity's on-chain cache of a Pyth Lazer
15
+ * push-update feed, decoded via the velocity program's own Anchor coder (Lazer has no dedicated
16
+ * client account layout package, unlike legacy Pyth). Backs the `pythLazer`, `pythLazer1K`,
17
+ * `pythLazer1M`, and `pythLazerStableCoin` `OracleSource` variants.
18
+ */
13
19
  class PythLazerClient {
20
+ /**
21
+ * @param connection - RPC connection used to fetch oracle account data; also used to spin up a
22
+ * throwaway `AnchorProvider`/`Program` (with a fresh random keypair, never used to sign) purely
23
+ * to get access to the IDL's `pythLazerOracle` account coder.
24
+ * @param multiple - Divisor applied to the raw Lazer precision before rescaling to
25
+ * PRICE_PRECISION; pass `1000`/`1000000` for the `pythLazer1K`/`pythLazer1M` source variants, or
26
+ * the default `ONE` (1) for a standard per-unit feed.
27
+ * @param stableCoin - When `true` (the `pythLazerStableCoin` variant), snaps the decoded price
28
+ * to exactly `QUOTE_PRECISION` (1.0) whenever it is within 5bps (or within `confidence` if
29
+ * tighter) of peg — see `getStableCoinPrice`.
30
+ */
14
31
  constructor(connection, multiple = numericConstants_1.ONE, stableCoin = false) {
15
32
  this.connection = connection;
16
33
  this.multiple = multiple;
@@ -23,10 +40,27 @@ class PythLazerClient {
23
40
  this.program = new anchor_1.Program(velocity_json_1.default, provider);
24
41
  this.decodeFunc = this.program.account.pythLazerOracle.coder.accounts.decodeUnchecked.bind(this.program.account.pythLazerOracle.coder.accounts);
25
42
  }
43
+ /**
44
+ * Fetches and decodes a `PythLazerOracle` account's current price data.
45
+ * @param pricePublicKey - The `PythLazerOracle` account's address (see `getPythLazerOraclePublicKey`).
46
+ * @returns The decoded, normalized price data.
47
+ * @throws Error if the account does not exist.
48
+ */
26
49
  async getOraclePriceData(pricePublicKey) {
27
50
  const data = await (0, utils_1.getOracleAccountDataOrThrow)(this.connection, pricePublicKey, 'Pyth lazer oracle');
28
51
  return this.getOraclePriceDataFromBuffer(data);
29
52
  }
53
+ /**
54
+ * Decodes raw `PythLazerOracle` account bytes into normalized `OraclePriceData`, rescaling from
55
+ * the feed's native exponent to PRICE_PRECISION (1e6) via `convertPythPrice`. Unlike legacy
56
+ * Pyth, Lazer has no separate TWAP field on-chain, so `twap`/`twapConfidence` are both set to
57
+ * the same converted live `price`/`conf` rather than a genuine time-weighted average.
58
+ * `hasSufficientNumberOfDataPoints` is always `true` (no publisher-count concept for this
59
+ * source), and `sequenceId` is set to the feed's `publishTime` for staleness/ordering checks.
60
+ * @param buffer - Raw `PythLazerOracle` account data.
61
+ * @returns `price`, `confidence`, `twap`, `twapConfidence` (all PRICE_PRECISION 1e6), `slot`
62
+ * (`postedSlot`, the slot the update landed on-chain), and `sequenceId` (`publishTime`).
63
+ */
30
64
  getOraclePriceDataFromBuffer(buffer) {
31
65
  const priceData = this.decodeFunc('pythLazerOracle', buffer);
32
66
  const confidence = convertPythPrice(priceData.conf, priceData.exponent, this.multiple);
@@ -53,7 +87,7 @@ function convertPythPrice(price, exponent, multiple) {
53
87
  }
54
88
  const fiveBPS = new anchor_1.BN(500);
55
89
  function getStableCoinPrice(price, confidence) {
56
- if (price.sub(numericConstants_1.QUOTE_PRECISION).abs().lt(anchor_1.BN.min(confidence, fiveBPS))) {
90
+ if (price.sub(numericConstants_1.QUOTE_PRECISION).abs().lte(anchor_1.BN.min(confidence, fiveBPS))) {
57
91
  return numericConstants_1.QUOTE_PRECISION;
58
92
  }
59
93
  else {
@@ -2,10 +2,28 @@
2
2
  /// <reference types="node" />
3
3
  import { PublicKey } from '@solana/web3.js';
4
4
  import { OracleClient, OraclePriceData } from './types';
5
+ /**
6
+ * Fixed price of exactly 1.0 (PRICE_PRECISION, 1e6) with a minimal confidence band, returned by
7
+ * `QuoteAssetOracleClient` for any oracle lookup. Represents the quote asset (e.g. USDC) pegged
8
+ * 1:1 to itself with no real oracle needed.
9
+ */
5
10
  export declare const QUOTE_ORACLE_PRICE_DATA: OraclePriceData;
11
+ /**
12
+ * `OracleClient` for the `quoteAsset` `OracleSource` variant — the spot market whose asset *is*
13
+ * the protocol's quote currency. Ignores its inputs entirely and always returns the constant
14
+ * `QUOTE_ORACLE_PRICE_DATA` (price 1.0); never makes an RPC call.
15
+ */
6
16
  export declare class QuoteAssetOracleClient implements OracleClient {
7
17
  constructor();
18
+ /**
19
+ * @param _pricePublicKey - Ignored.
20
+ * @returns The constant `QUOTE_ORACLE_PRICE_DATA`.
21
+ */
8
22
  getOraclePriceData(_pricePublicKey: PublicKey): Promise<OraclePriceData>;
23
+ /**
24
+ * @param _buffer - Ignored.
25
+ * @returns The constant `QUOTE_ORACLE_PRICE_DATA`.
26
+ */
9
27
  getOraclePriceDataFromBuffer(_buffer: Buffer): OraclePriceData;
10
28
  }
11
29
  //# sourceMappingURL=quoteAssetOracleClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quoteAssetOracleClient.d.ts","sourceRoot":"","sources":["../../../src/oracles/quoteAssetOracleClient.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAIxD,eAAO,MAAM,uBAAuB,EAAE,eAKrC,CAAC;AAEF,qBAAa,sBAAuB,YAAW,YAAY;;IAG7C,kBAAkB,CAC9B,eAAe,EAAE,SAAS,GACxB,OAAO,CAAC,eAAe,CAAC;IAIpB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;CAGrE"}
1
+ {"version":3,"file":"quoteAssetOracleClient.d.ts","sourceRoot":"","sources":["../../../src/oracles/quoteAssetOracleClient.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAIxD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,eAKrC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,YAAY;;IAG1D;;;OAGG;IACU,kBAAkB,CAC9B,eAAe,EAAE,SAAS,GACxB,OAAO,CAAC,eAAe,CAAC;IAI3B;;;OAGG;IACI,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;CAGrE"}
@@ -3,17 +3,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.QuoteAssetOracleClient = exports.QUOTE_ORACLE_PRICE_DATA = void 0;
4
4
  const anchor_1 = require("../isomorphic/anchor");
5
5
  const numericConstants_1 = require("../constants/numericConstants");
6
+ /**
7
+ * Fixed price of exactly 1.0 (PRICE_PRECISION, 1e6) with a minimal confidence band, returned by
8
+ * `QuoteAssetOracleClient` for any oracle lookup. Represents the quote asset (e.g. USDC) pegged
9
+ * 1:1 to itself with no real oracle needed.
10
+ */
6
11
  exports.QUOTE_ORACLE_PRICE_DATA = {
7
12
  price: numericConstants_1.PRICE_PRECISION,
8
13
  slot: new anchor_1.BN(0),
9
14
  confidence: new anchor_1.BN(1),
10
15
  hasSufficientNumberOfDataPoints: true,
11
16
  };
17
+ /**
18
+ * `OracleClient` for the `quoteAsset` `OracleSource` variant — the spot market whose asset *is*
19
+ * the protocol's quote currency. Ignores its inputs entirely and always returns the constant
20
+ * `QUOTE_ORACLE_PRICE_DATA` (price 1.0); never makes an RPC call.
21
+ */
12
22
  class QuoteAssetOracleClient {
13
23
  constructor() { }
24
+ /**
25
+ * @param _pricePublicKey - Ignored.
26
+ * @returns The constant `QUOTE_ORACLE_PRICE_DATA`.
27
+ */
14
28
  async getOraclePriceData(_pricePublicKey) {
15
29
  return Promise.resolve(exports.QUOTE_ORACLE_PRICE_DATA);
16
30
  }
31
+ /**
32
+ * @param _buffer - Ignored.
33
+ * @returns The constant `QUOTE_ORACLE_PRICE_DATA`.
34
+ */
17
35
  getOraclePriceDataFromBuffer(_buffer) {
18
36
  return exports.QUOTE_ORACLE_PRICE_DATA;
19
37
  }
@@ -1,9 +1,30 @@
1
1
  import { BN } from '../isomorphic/anchor';
2
+ /**
3
+ * Pairs a live oracle price with its 5-minute TWAP so margin/value calculations can pick whichever
4
+ * is more conservative — mirroring the on-chain "strict" price used for collateral valuation, which
5
+ * exists so a transient price spike/dip can't be used to over-value collateral or under-value a
6
+ * liability. All values are PRICE_PRECISION (1e6).
7
+ */
2
8
  export declare class StrictOraclePrice {
3
9
  current: BN;
4
10
  twap?: BN;
11
+ /**
12
+ * @param current - Live oracle price, PRICE_PRECISION (1e6).
13
+ * @param twap - 5-minute oracle TWAP, PRICE_PRECISION (1e6). If omitted, `max()`/`min()` both
14
+ * fall back to `current`.
15
+ */
5
16
  constructor(current: BN, twap?: BN);
17
+ /**
18
+ * The higher of `current` and `twap` — use when a higher price is the conservative choice
19
+ * (e.g. valuing a liability/borrow, where undervaluing it would overstate free collateral).
20
+ * @returns The larger of `current` and `twap` (or just `current` if no `twap` was provided), PRICE_PRECISION (1e6).
21
+ */
6
22
  max(): BN;
23
+ /**
24
+ * The lower of `current` and `twap` — use when a lower price is the conservative choice (e.g.
25
+ * valuing a deposit/asset, where overvaluing it would overstate free collateral).
26
+ * @returns The smaller of `current` and `twap` (or just `current` if no `twap` was provided), PRICE_PRECISION (1e6).
27
+ */
7
28
  min(): BN;
8
29
  }
9
30
  //# sourceMappingURL=strictOraclePrice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"strictOraclePrice.d.ts","sourceRoot":"","sources":["../../../src/oracles/strictOraclePrice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE1C,qBAAa,iBAAiB;IAC7B,OAAO,EAAE,EAAE,CAAC;IACZ,IAAI,CAAC,EAAE,EAAE,CAAC;gBAEE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;IAK3B,GAAG,IAAI,EAAE;IAIT,GAAG,IAAI,EAAE;CAGhB"}
1
+ {"version":3,"file":"strictOraclePrice.d.ts","sourceRoot":"","sources":["../../../src/oracles/strictOraclePrice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE1C;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,EAAE,EAAE,CAAC;IACZ,IAAI,CAAC,EAAE,EAAE,CAAC;IAEV;;;;OAIG;gBACS,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;IAKlC;;;;OAIG;IACI,GAAG,IAAI,EAAE;IAIhB;;;;OAIG;IACI,GAAG,IAAI,EAAE;CAGhB"}
@@ -2,14 +2,35 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StrictOraclePrice = void 0;
4
4
  const anchor_1 = require("../isomorphic/anchor");
5
+ /**
6
+ * Pairs a live oracle price with its 5-minute TWAP so margin/value calculations can pick whichever
7
+ * is more conservative — mirroring the on-chain "strict" price used for collateral valuation, which
8
+ * exists so a transient price spike/dip can't be used to over-value collateral or under-value a
9
+ * liability. All values are PRICE_PRECISION (1e6).
10
+ */
5
11
  class StrictOraclePrice {
12
+ /**
13
+ * @param current - Live oracle price, PRICE_PRECISION (1e6).
14
+ * @param twap - 5-minute oracle TWAP, PRICE_PRECISION (1e6). If omitted, `max()`/`min()` both
15
+ * fall back to `current`.
16
+ */
6
17
  constructor(current, twap) {
7
18
  this.current = current;
8
19
  this.twap = twap;
9
20
  }
21
+ /**
22
+ * The higher of `current` and `twap` — use when a higher price is the conservative choice
23
+ * (e.g. valuing a liability/borrow, where undervaluing it would overstate free collateral).
24
+ * @returns The larger of `current` and `twap` (or just `current` if no `twap` was provided), PRICE_PRECISION (1e6).
25
+ */
10
26
  max() {
11
27
  return this.twap ? anchor_1.BN.max(this.twap, this.current) : this.current;
12
28
  }
29
+ /**
30
+ * The lower of `current` and `twap` — use when a lower price is the conservative choice (e.g.
31
+ * valuing a deposit/asset, where overvaluing it would overstate free collateral).
32
+ * @returns The smaller of `current` and `twap` (or just `current` if no `twap` was provided), PRICE_PRECISION (1e6).
33
+ */
13
34
  min() {
14
35
  return this.twap ? anchor_1.BN.min(this.twap, this.current) : this.current;
15
36
  }
@@ -9,25 +9,70 @@
9
9
  import { BN } from '../isomorphic/anchor';
10
10
  import { PublicKey } from '@solana/web3.js';
11
11
  import { OracleSource } from '../types';
12
+ /**
13
+ * `OraclePriceData` variant for the market-maker (MM) oracle feed, which has no TWAP or
14
+ * pre-launch `maxPrice` fields but instead flags whether the MM oracle is currently trusted.
15
+ */
12
16
  export type MMOraclePriceData = Omit<OraclePriceData, 'twap' | 'twapConfidence' | 'maxPrice'> & {
17
+ /** Whether the MM oracle is currently considered active/valid and safe to use in place of the primary oracle. */
13
18
  isMMOracleActive: boolean;
19
+ /**
20
+ * Whether the MM oracle is enabled (has a non-zero price), mirroring `MMOraclePriceData::is_enabled`.
21
+ * Populated by `VelocityClient.getMMOracleDataForPerpMarket`; used by the AMM-fill volatility gate
22
+ * (`isFallbackAvailableLiquiditySource`). Optional because MM data is sometimes constructed without it.
23
+ */
24
+ isMMOracleEnabled?: boolean;
25
+ /**
26
+ * Whether the MM oracle is at least as recent as the exchange (safe) oracle, mirroring
27
+ * `MMOraclePriceData::is_mm_oracle_as_recent`. Used together with `isMMExchangeDiffBpsHigh` by the
28
+ * AMM-fill volatility gate.
29
+ */
30
+ isMMOracleAsRecent?: boolean;
31
+ /**
32
+ * Whether the MM-vs-exchange oracle price difference exceeds the 1% fallback threshold
33
+ * (`MM_EXCHANGE_FALLBACK_THRESHOLD`), mirroring `MMOraclePriceData::is_mm_exchange_diff_bps_high`.
34
+ * When the MM oracle is enabled and as-recent, a high diff suppresses AMM fills (early volatility protection).
35
+ */
36
+ isMMExchangeDiffBpsHigh?: boolean;
14
37
  };
38
+ /** Normalized oracle price snapshot produced by every `OracleClient`, regardless of underlying source. */
15
39
  export type OraclePriceData = {
40
+ /** Oracle price, PRICE_PRECISION (1e6). */
16
41
  price: BN;
42
+ /** Slot at which this price was last updated on-chain. */
17
43
  slot: BN;
44
+ /** Oracle confidence interval (± band around `price`), PRICE_PRECISION (1e6). */
18
45
  confidence: BN;
46
+ /** Whether the source had enough independent publishers/quoters for the price to be trusted (Pyth-specific; always `true` for sources without a publisher-count concept). */
19
47
  hasSufficientNumberOfDataPoints: boolean;
48
+ /** Time-weighted average price, PRICE_PRECISION (1e6). Absent for sources with no TWAP (e.g. Pyth Lazer echoes the live price here instead). */
20
49
  twap?: BN;
50
+ /** Confidence interval of `twap`, PRICE_PRECISION (1e6). */
21
51
  twapConfidence?: BN;
52
+ /** Upper price bound; only populated for prelaunch-market oracles, PRICE_PRECISION (1e6). */
22
53
  maxPrice?: BN;
54
+ /** Monotonic sequence/publish-time id used to detect out-of-order updates (Pyth Lazer only). */
23
55
  sequenceId?: BN;
24
56
  };
57
+ /** Identifies an oracle account and which `OracleSource` variant to decode it as. */
25
58
  export type OracleInfo = {
26
59
  publicKey: PublicKey;
27
60
  source: OracleSource;
28
61
  };
62
+ /** Common interface implemented by every per-source oracle adapter (Pyth, Pyth Lazer, prelaunch, quote-asset). */
29
63
  export interface OracleClient {
64
+ /**
65
+ * Decodes raw oracle account bytes into normalized `OraclePriceData` without any RPC call.
66
+ * @param buffer - Raw account data as returned by `getAccountInfo`/`getMultipleAccounts`.
67
+ * @returns The decoded, normalized price data.
68
+ */
30
69
  getOraclePriceDataFromBuffer(buffer: Buffer): OraclePriceData;
70
+ /**
71
+ * Fetches and decodes an oracle account's current price data.
72
+ * @param publicKey - The oracle account's address.
73
+ * @returns The decoded, normalized price data.
74
+ * @throws Error if the account does not exist.
75
+ */
31
76
  getOraclePriceData(publicKey: PublicKey): Promise<OraclePriceData>;
32
77
  }
33
78
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/oracles/types.ts"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG,IAAI,CACnC,eAAe,EACf,MAAM,GAAG,gBAAgB,GAAG,UAAU,CACtC,GAAG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,IAAI,EAAE,EAAE,CAAC;IACT,UAAU,EAAE,EAAE,CAAC;IACf,+BAA+B,EAAE,OAAO,CAAC;IACzC,IAAI,CAAC,EAAE,EAAE,CAAC;IACV,cAAc,CAAC,EAAE,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,CAAC;IACd,UAAU,CAAC,EAAE,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC5B,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC;IAC9D,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACnE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/oracles/types.ts"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CACnC,eAAe,EACf,MAAM,GAAG,gBAAgB,GAAG,UAAU,CACtC,GAAG;IACH,iHAAiH;IACjH,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,0GAA0G;AAC1G,MAAM,MAAM,eAAe,GAAG;IAC7B,2CAA2C;IAC3C,KAAK,EAAE,EAAE,CAAC;IACV,0DAA0D;IAC1D,IAAI,EAAE,EAAE,CAAC;IACT,iFAAiF;IACjF,UAAU,EAAE,EAAE,CAAC;IACf,6KAA6K;IAC7K,+BAA+B,EAAE,OAAO,CAAC;IACzC,gJAAgJ;IAChJ,IAAI,CAAC,EAAE,EAAE,CAAC;IACV,4DAA4D;IAC5D,cAAc,CAAC,EAAE,EAAE,CAAC;IACpB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,EAAE,CAAC;IACd,gGAAgG;IAChG,UAAU,CAAC,EAAE,EAAE,CAAC;CAChB,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,kHAAkH;AAClH,MAAM,WAAW,YAAY;IAC5B;;;;OAIG;IACH,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC;IAC9D;;;;;OAKG;IACH,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACnE"}