@drift-labs/sdk 2.97.0-beta.3 → 2.97.0-beta.30

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 (754) hide show
  1. package/README.md +11 -4
  2. package/VERSION +1 -1
  3. package/bun.lockb +0 -0
  4. package/lib/{accounts → browser/accounts}/bulkAccountLoader.d.ts +1 -0
  5. package/lib/browser/accounts/grpcAccountSubscriber.d.ts +16 -0
  6. package/lib/browser/accounts/grpcAccountSubscriber.js +154 -0
  7. package/lib/browser/accounts/grpcDriftClientAccountSubscriber.d.ts +12 -0
  8. package/lib/browser/accounts/grpcDriftClientAccountSubscriber.js +97 -0
  9. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +10 -0
  10. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +30 -0
  11. package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +18 -0
  12. package/lib/browser/accounts/grpcProgramAccountSubscriber.js +171 -0
  13. package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +10 -0
  14. package/lib/browser/accounts/grpcUserAccountSubscriber.js +28 -0
  15. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +10 -0
  16. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +28 -0
  17. package/lib/{accounts → browser/accounts}/types.d.ts +8 -0
  18. package/lib/{accounts → browser/accounts}/webSocketAccountSubscriber.d.ts +2 -1
  19. package/lib/{accounts → browser/accounts}/webSocketDriftClientAccountSubscriber.d.ts +3 -3
  20. package/lib/{accounts → browser/accounts}/webSocketProgramAccountSubscriber.d.ts +2 -1
  21. package/lib/{addresses → browser/addresses}/pda.d.ts +2 -0
  22. package/lib/{addresses → browser/addresses}/pda.js +12 -1
  23. package/lib/{adminClient.d.ts → browser/adminClient.d.ts} +6 -0
  24. package/lib/{adminClient.js → browser/adminClient.js} +53 -0
  25. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +15 -0
  26. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +32 -0
  27. package/lib/{auctionSubscriber → browser/auctionSubscriber}/index.d.ts +1 -0
  28. package/lib/browser/auctionSubscriber/index.js +19 -0
  29. package/lib/{auctionSubscriber → browser/auctionSubscriber}/types.d.ts +2 -0
  30. package/lib/{bankrun → browser/bankrun}/bankrunConnection.d.ts +1 -0
  31. package/lib/{config.d.ts → browser/config.d.ts} +1 -1
  32. package/lib/{config.js → browser/config.js} +5 -3
  33. package/lib/{constants → browser/constants}/perpMarkets.js +43 -2
  34. package/lib/{constants → browser/constants}/spotMarkets.js +2 -2
  35. package/lib/{decode → browser/decode}/phoenix.d.ts +1 -0
  36. package/lib/{decode → browser/decode}/user.d.ts +1 -0
  37. package/lib/{decode → browser/decode}/user.js +10 -0
  38. package/lib/{dlob → browser/dlob}/DLOBOrders.d.ts +1 -0
  39. package/lib/{driftClient.d.ts → browser/driftClient.d.ts} +27 -5
  40. package/lib/{driftClient.js → browser/driftClient.js} +204 -37
  41. package/lib/{driftClientConfig.d.ts → browser/driftClientConfig.d.ts} +6 -1
  42. package/lib/{idl → browser/idl}/drift.json +502 -6
  43. package/lib/{idl → browser/idl}/switchboard_on_demand_30.json +195 -37
  44. package/lib/{index.d.ts → browser/index.d.ts} +8 -0
  45. package/lib/{index.js → browser/index.js} +8 -0
  46. package/lib/browser/isomorphic/grpc.browser.d.ts +1 -0
  47. package/lib/browser/isomorphic/grpc.browser.js +8 -0
  48. package/lib/browser/isomorphic/grpc.d.ts +1 -0
  49. package/lib/browser/isomorphic/grpc.js +8 -0
  50. package/lib/browser/isomorphic/grpc.node.d.ts +5 -0
  51. package/lib/{math → browser/math}/margin.d.ts +3 -3
  52. package/lib/{math → browser/math}/margin.js +10 -10
  53. package/lib/{math → browser/math}/market.d.ts +1 -1
  54. package/lib/{math → browser/math}/market.js +15 -3
  55. package/lib/{math → browser/math}/oracles.d.ts +1 -0
  56. package/lib/{oracles → browser/oracles}/prelaunchOracleClient.d.ts +1 -0
  57. package/lib/{oracles → browser/oracles}/pythClient.d.ts +1 -1
  58. package/lib/{oracles → browser/oracles}/pythClient.js +1 -2
  59. package/lib/{oracles → browser/oracles}/pythPullClient.d.ts +1 -0
  60. package/lib/{oracles → browser/oracles}/quoteAssetOracleClient.d.ts +1 -0
  61. package/lib/{oracles → browser/oracles}/switchboardClient.d.ts +1 -0
  62. package/lib/{oracles → browser/oracles}/switchboardOnDemandClient.d.ts +1 -0
  63. package/lib/{oracles → browser/oracles}/types.d.ts +1 -0
  64. package/lib/{orderSubscriber → browser/orderSubscriber}/OrderSubscriber.d.ts +3 -1
  65. package/lib/{orderSubscriber → browser/orderSubscriber}/OrderSubscriber.js +18 -13
  66. package/lib/browser/orderSubscriber/grpcSubscription.d.ts +22 -0
  67. package/lib/browser/orderSubscriber/grpcSubscription.js +66 -0
  68. package/lib/{orderSubscriber → browser/orderSubscriber}/types.d.ts +9 -0
  69. package/lib/{token → browser/token}/index.d.ts +1 -0
  70. package/lib/{tx → browser/tx}/baseTxSender.d.ts +4 -1
  71. package/lib/{tx → browser/tx}/baseTxSender.js +9 -4
  72. package/lib/{tx → browser/tx}/fastSingleTxSender.d.ts +3 -1
  73. package/lib/{tx → browser/tx}/fastSingleTxSender.js +4 -3
  74. package/lib/{tx → browser/tx}/forwardOnlyTxSender.d.ts +3 -1
  75. package/lib/{tx → browser/tx}/forwardOnlyTxSender.js +2 -1
  76. package/lib/{tx → browser/tx}/retryTxSender.d.ts +3 -1
  77. package/lib/{tx → browser/tx}/retryTxSender.js +3 -2
  78. package/lib/{tx → browser/tx}/types.d.ts +1 -0
  79. package/lib/{tx → browser/tx}/whileValidTxSender.d.ts +3 -1
  80. package/lib/{tx → browser/tx}/whileValidTxSender.js +3 -2
  81. package/lib/{types.d.ts → browser/types.d.ts} +41 -1
  82. package/lib/{types.js → browser/types.js} +11 -1
  83. package/lib/{user.d.ts → browser/user.d.ts} +2 -1
  84. package/lib/{user.js → browser/user.js} +25 -14
  85. package/lib/{userConfig.d.ts → browser/userConfig.d.ts} +6 -1
  86. package/lib/{userMap → browser/userMap}/WebsocketSubscription.d.ts +1 -0
  87. package/lib/browser/userMap/grpcSubscription.d.ts +24 -0
  88. package/lib/browser/userMap/grpcSubscription.js +40 -0
  89. package/lib/{userMap → browser/userMap}/userMap.js +17 -1
  90. package/lib/{userMap → browser/userMap}/userMapConfig.d.ts +6 -0
  91. package/lib/{userStats.js → browser/userStats.js} +11 -4
  92. package/lib/{userStatsConfig.d.ts → browser/userStatsConfig.d.ts} +6 -0
  93. package/lib/node/accounts/basicUserAccountSubscriber.d.ts +27 -0
  94. package/lib/node/accounts/basicUserAccountSubscriber.js +38 -0
  95. package/lib/node/accounts/bulkAccountLoader.d.ts +37 -0
  96. package/lib/node/accounts/bulkAccountLoader.js +222 -0
  97. package/lib/node/accounts/bulkUserStatsSubscription.d.ts +7 -0
  98. package/lib/node/accounts/bulkUserStatsSubscription.js +21 -0
  99. package/lib/node/accounts/bulkUserSubscription.d.ts +7 -0
  100. package/lib/node/accounts/bulkUserSubscription.js +21 -0
  101. package/lib/node/accounts/fetch.d.ts +6 -0
  102. package/lib/node/accounts/fetch.js +30 -0
  103. package/lib/node/accounts/grpcAccountSubscriber.d.ts +16 -0
  104. package/lib/node/accounts/grpcAccountSubscriber.js +154 -0
  105. package/lib/node/accounts/grpcDriftClientAccountSubscriber.d.ts +12 -0
  106. package/lib/node/accounts/grpcDriftClientAccountSubscriber.js +97 -0
  107. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +10 -0
  108. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +30 -0
  109. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +18 -0
  110. package/lib/node/accounts/grpcProgramAccountSubscriber.js +171 -0
  111. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +10 -0
  112. package/lib/node/accounts/grpcUserAccountSubscriber.js +28 -0
  113. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +10 -0
  114. package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +28 -0
  115. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +18 -0
  116. package/lib/node/accounts/oneShotUserAccountSubscriber.js +48 -0
  117. package/lib/node/accounts/pollingDriftClientAccountSubscriber.d.ts +69 -0
  118. package/lib/node/accounts/pollingDriftClientAccountSubscriber.js +415 -0
  119. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +29 -0
  120. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +110 -0
  121. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +27 -0
  122. package/lib/node/accounts/pollingOracleAccountSubscriber.js +78 -0
  123. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +26 -0
  124. package/lib/node/accounts/pollingTokenAccountSubscriber.js +78 -0
  125. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +29 -0
  126. package/lib/node/accounts/pollingUserAccountSubscriber.js +102 -0
  127. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +27 -0
  128. package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +94 -0
  129. package/lib/node/accounts/testBulkAccountLoader.d.ts +4 -0
  130. package/lib/node/accounts/testBulkAccountLoader.js +45 -0
  131. package/lib/node/accounts/types.d.ts +155 -0
  132. package/lib/node/accounts/types.js +16 -0
  133. package/lib/node/accounts/utils.d.ts +8 -0
  134. package/lib/node/accounts/utils.js +39 -0
  135. package/lib/node/accounts/webSocketAccountSubscriber.d.ts +29 -0
  136. package/lib/node/accounts/webSocketAccountSubscriber.js +149 -0
  137. package/lib/node/accounts/webSocketDriftClientAccountSubscriber.d.ts +66 -0
  138. package/lib/node/accounts/webSocketDriftClientAccountSubscriber.js +352 -0
  139. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +23 -0
  140. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +67 -0
  141. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +34 -0
  142. package/lib/node/accounts/webSocketProgramAccountSubscriber.js +127 -0
  143. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +23 -0
  144. package/lib/node/accounts/webSocketUserAccountSubscriber.js +61 -0
  145. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +22 -0
  146. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +52 -0
  147. package/lib/node/addresses/marketAddresses.d.ts +2 -0
  148. package/lib/node/addresses/marketAddresses.js +15 -0
  149. package/lib/node/addresses/pda.d.ts +30 -0
  150. package/lib/node/addresses/pda.js +193 -0
  151. package/lib/node/adminClient.d.ts +202 -0
  152. package/lib/node/adminClient.js +1826 -0
  153. package/lib/node/assert/assert.d.ts +1 -0
  154. package/lib/node/assert/assert.js +9 -0
  155. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +14 -0
  156. package/lib/node/auctionSubscriber/auctionSubscriber.js +32 -0
  157. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +15 -0
  158. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +32 -0
  159. package/lib/node/auctionSubscriber/index.d.ts +3 -0
  160. package/lib/node/auctionSubscriber/index.js +19 -0
  161. package/lib/node/auctionSubscriber/types.d.ts +14 -0
  162. package/lib/node/auctionSubscriber/types.js +2 -0
  163. package/lib/node/bankrun/bankrunConnection.d.ts +74 -0
  164. package/lib/node/bankrun/bankrunConnection.js +318 -0
  165. package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +27 -0
  166. package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +89 -0
  167. package/lib/node/blockhashSubscriber/index.d.ts +1 -0
  168. package/lib/node/blockhashSubscriber/index.js +17 -0
  169. package/lib/node/blockhashSubscriber/types.d.ts +7 -0
  170. package/lib/node/blockhashSubscriber/types.js +2 -0
  171. package/lib/node/clock/clockSubscriber.d.ts +31 -0
  172. package/lib/node/clock/clockSubscriber.js +80 -0
  173. package/lib/node/config.d.ts +58 -0
  174. package/lib/node/config.js +126 -0
  175. package/lib/node/constants/numericConstants.d.ts +71 -0
  176. package/lib/node/constants/numericConstants.js +75 -0
  177. package/lib/node/constants/perpMarkets.d.ts +19 -0
  178. package/lib/node/constants/perpMarkets.js +868 -0
  179. package/lib/node/constants/spotMarkets.d.ts +23 -0
  180. package/lib/node/constants/spotMarkets.js +361 -0
  181. package/lib/node/constants/txConstants.d.ts +1 -0
  182. package/lib/node/constants/txConstants.js +4 -0
  183. package/lib/node/decode/phoenix.d.ts +7 -0
  184. package/lib/node/decode/phoenix.js +159 -0
  185. package/lib/node/decode/user.d.ts +4 -0
  186. package/lib/node/decode/user.js +339 -0
  187. package/lib/node/dlob/DLOB.d.ts +166 -0
  188. package/lib/node/dlob/DLOB.js +1142 -0
  189. package/lib/node/dlob/DLOBApiClient.d.ts +14 -0
  190. package/lib/node/dlob/DLOBApiClient.js +34 -0
  191. package/lib/node/dlob/DLOBNode.d.ts +57 -0
  192. package/lib/node/dlob/DLOBNode.js +86 -0
  193. package/lib/node/dlob/DLOBOrders.d.ts +17 -0
  194. package/lib/node/dlob/DLOBOrders.js +40 -0
  195. package/lib/node/dlob/DLOBSubscriber.d.ts +54 -0
  196. package/lib/node/dlob/DLOBSubscriber.js +139 -0
  197. package/lib/node/dlob/NodeList.d.ts +27 -0
  198. package/lib/node/dlob/NodeList.js +141 -0
  199. package/lib/node/dlob/dlobIdl.json +248 -0
  200. package/lib/node/dlob/orderBookLevels.d.ts +72 -0
  201. package/lib/node/dlob/orderBookLevels.js +438 -0
  202. package/lib/node/dlob/types.d.ts +18 -0
  203. package/lib/node/dlob/types.js +2 -0
  204. package/lib/node/driftClient.d.ts +829 -0
  205. package/lib/node/driftClient.js +4496 -0
  206. package/lib/node/driftClientConfig.d.ts +49 -0
  207. package/lib/node/driftClientConfig.js +2 -0
  208. package/lib/node/events/eventList.d.ts +22 -0
  209. package/lib/node/events/eventList.js +80 -0
  210. package/lib/node/events/eventSubscriber.d.ts +46 -0
  211. package/lib/node/events/eventSubscriber.js +223 -0
  212. package/lib/node/events/eventsServerLogProvider.d.ts +21 -0
  213. package/lib/node/events/eventsServerLogProvider.js +121 -0
  214. package/lib/node/events/fetchLogs.d.ts +25 -0
  215. package/lib/node/events/fetchLogs.js +99 -0
  216. package/lib/node/events/parse.d.ts +6 -0
  217. package/lib/node/events/parse.js +106 -0
  218. package/lib/node/events/pollingLogProvider.d.ts +17 -0
  219. package/lib/node/events/pollingLogProvider.js +58 -0
  220. package/lib/node/events/sort.d.ts +2 -0
  221. package/lib/node/events/sort.js +24 -0
  222. package/lib/node/events/txEventCache.d.ts +24 -0
  223. package/lib/node/events/txEventCache.js +71 -0
  224. package/lib/node/events/types.d.ts +77 -0
  225. package/lib/node/events/types.js +30 -0
  226. package/lib/node/events/webSocketLogProvider.d.ts +24 -0
  227. package/lib/node/events/webSocketLogProvider.js +96 -0
  228. package/lib/node/factory/bigNum.d.ts +122 -0
  229. package/lib/node/factory/bigNum.js +457 -0
  230. package/lib/node/factory/oracleClient.d.ts +5 -0
  231. package/lib/node/factory/oracleClient.js +52 -0
  232. package/lib/node/idl/drift.json +13656 -0
  233. package/lib/node/idl/openbook.json +3854 -0
  234. package/lib/node/idl/pyth_solana_receiver.json +628 -0
  235. package/lib/node/idl/switchboard.json +8354 -0
  236. package/lib/node/idl/switchboard_on_demand_30.json +4541 -0
  237. package/lib/node/idl/token_faucet.json +142 -0
  238. package/lib/node/index.d.ts +120 -0
  239. package/lib/node/index.js +142 -0
  240. package/lib/node/isomorphic/grpc.browser.d.ts +1 -0
  241. package/lib/node/isomorphic/grpc.d.ts +1 -0
  242. package/lib/node/isomorphic/grpc.js +17 -0
  243. package/lib/node/isomorphic/grpc.node.d.ts +5 -0
  244. package/lib/node/isomorphic/grpc.node.js +17 -0
  245. package/lib/node/jupiter/jupiterClient.d.ts +296 -0
  246. package/lib/node/jupiter/jupiterClient.js +178 -0
  247. package/lib/node/keypair.d.ts +2 -0
  248. package/lib/node/keypair.js +28 -0
  249. package/lib/node/marinade/index.d.ts +12 -0
  250. package/lib/node/marinade/index.js +36 -0
  251. package/lib/node/marinade/types.d.ts +1963 -0
  252. package/lib/node/marinade/types.js +1965 -0
  253. package/lib/node/math/amm.d.ts +98 -0
  254. package/lib/node/math/amm.js +626 -0
  255. package/lib/node/math/auction.d.ts +23 -0
  256. package/lib/node/math/auction.js +127 -0
  257. package/lib/node/math/bankruptcy.d.ts +2 -0
  258. package/lib/node/math/bankruptcy.js +31 -0
  259. package/lib/node/math/conversion.d.ts +2 -0
  260. package/lib/node/math/conversion.js +11 -0
  261. package/lib/node/math/exchangeStatus.d.ts +6 -0
  262. package/lib/node/math/exchangeStatus.js +77 -0
  263. package/lib/node/math/fuel.d.ts +6 -0
  264. package/lib/node/math/fuel.js +55 -0
  265. package/lib/node/math/funding.d.ts +34 -0
  266. package/lib/node/math/funding.js +209 -0
  267. package/lib/node/math/insurance.d.ts +7 -0
  268. package/lib/node/math/insurance.js +73 -0
  269. package/lib/node/math/margin.d.ts +39 -0
  270. package/lib/node/math/margin.js +184 -0
  271. package/lib/node/math/market.d.ts +39 -0
  272. package/lib/node/math/market.js +163 -0
  273. package/lib/node/math/oracles.d.ts +14 -0
  274. package/lib/node/math/oracles.js +134 -0
  275. package/lib/node/math/orders.d.ts +23 -0
  276. package/lib/node/math/orders.js +216 -0
  277. package/lib/node/math/position.d.ts +54 -0
  278. package/lib/node/math/position.js +198 -0
  279. package/lib/node/math/repeg.d.ts +22 -0
  280. package/lib/node/math/repeg.js +164 -0
  281. package/lib/node/math/spotBalance.d.ts +83 -0
  282. package/lib/node/math/spotBalance.js +373 -0
  283. package/lib/node/math/spotMarket.d.ts +11 -0
  284. package/lib/node/math/spotMarket.js +49 -0
  285. package/lib/node/math/spotPosition.d.ts +19 -0
  286. package/lib/node/math/spotPosition.js +78 -0
  287. package/lib/node/math/state.d.ts +5 -0
  288. package/lib/node/math/state.js +30 -0
  289. package/lib/node/math/superStake.d.ts +167 -0
  290. package/lib/node/math/superStake.js +306 -0
  291. package/lib/node/math/tiers.d.ts +4 -0
  292. package/lib/node/math/tiers.js +52 -0
  293. package/lib/node/math/trade.d.ts +117 -0
  294. package/lib/node/math/trade.js +637 -0
  295. package/lib/node/math/utils.d.ts +23 -0
  296. package/lib/node/math/utils.js +112 -0
  297. package/lib/node/memcmp.d.ts +7 -0
  298. package/lib/node/memcmp.js +63 -0
  299. package/lib/node/openbook/openbookV2FulfillmentConfigMap.d.ts +10 -0
  300. package/lib/node/openbook/openbookV2FulfillmentConfigMap.js +17 -0
  301. package/lib/node/openbook/openbookV2Subscriber.d.ts +36 -0
  302. package/lib/node/openbook/openbookV2Subscriber.js +104 -0
  303. package/lib/node/oracles/oracleClientCache.d.ts +9 -0
  304. package/lib/node/oracles/oracleClientCache.js +19 -0
  305. package/lib/node/oracles/prelaunchOracleClient.d.ts +12 -0
  306. package/lib/node/oracles/prelaunchOracleClient.js +24 -0
  307. package/lib/node/oracles/pythClient.d.ts +14 -0
  308. package/lib/node/oracles/pythClient.js +51 -0
  309. package/lib/node/oracles/pythPullClient.d.ts +19 -0
  310. package/lib/node/oracles/pythPullClient.js +60 -0
  311. package/lib/node/oracles/quoteAssetOracleClient.d.ts +10 -0
  312. package/lib/node/oracles/quoteAssetOracleClient.js +21 -0
  313. package/lib/node/oracles/strictOraclePrice.d.ts +9 -0
  314. package/lib/node/oracles/strictOraclePrice.js +17 -0
  315. package/lib/node/oracles/switchboardClient.d.ts +12 -0
  316. package/lib/node/oracles/switchboardClient.js +40 -0
  317. package/lib/node/oracles/switchboardOnDemandClient.d.ts +12 -0
  318. package/lib/node/oracles/switchboardOnDemandClient.js +32 -0
  319. package/lib/node/oracles/types.d.ts +23 -0
  320. package/lib/node/oracles/types.js +2 -0
  321. package/lib/node/orderParams.d.ts +29 -0
  322. package/lib/node/orderParams.js +44 -0
  323. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +42 -0
  324. package/lib/node/orderSubscriber/OrderSubscriber.js +170 -0
  325. package/lib/node/orderSubscriber/PollingSubscription.d.ts +12 -0
  326. package/lib/node/orderSubscriber/PollingSubscription.js +23 -0
  327. package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +23 -0
  328. package/lib/node/orderSubscriber/WebsocketSubscription.js +67 -0
  329. package/lib/node/orderSubscriber/grpcSubscription.d.ts +22 -0
  330. package/lib/node/orderSubscriber/grpcSubscription.js +66 -0
  331. package/lib/node/orderSubscriber/index.d.ts +2 -0
  332. package/lib/{auctionSubscriber → node/orderSubscriber}/index.js +1 -1
  333. package/lib/node/orderSubscriber/types.d.ts +34 -0
  334. package/lib/node/orderSubscriber/types.js +2 -0
  335. package/lib/node/phoenix/phoenixFulfillmentConfigMap.d.ts +10 -0
  336. package/lib/node/phoenix/phoenixFulfillmentConfigMap.js +17 -0
  337. package/lib/node/phoenix/phoenixSubscriber.d.ts +41 -0
  338. package/lib/node/phoenix/phoenixSubscriber.js +152 -0
  339. package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +5 -0
  340. package/lib/node/priorityFee/averageOverSlotsStrategy.js +16 -0
  341. package/lib/node/priorityFee/averageStrategy.d.ts +5 -0
  342. package/lib/node/priorityFee/averageStrategy.js +11 -0
  343. package/lib/node/priorityFee/driftPriorityFeeMethod.d.ts +13 -0
  344. package/lib/node/priorityFee/driftPriorityFeeMethod.js +26 -0
  345. package/lib/node/priorityFee/ewmaStrategy.d.ts +11 -0
  346. package/lib/node/priorityFee/ewmaStrategy.js +33 -0
  347. package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +20 -0
  348. package/lib/node/priorityFee/heliusPriorityFeeMethod.js +46 -0
  349. package/lib/node/priorityFee/index.d.ts +11 -0
  350. package/lib/node/priorityFee/index.js +27 -0
  351. package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +5 -0
  352. package/lib/node/priorityFee/maxOverSlotsStrategy.js +17 -0
  353. package/lib/node/priorityFee/maxStrategy.d.ts +7 -0
  354. package/lib/node/priorityFee/maxStrategy.js +9 -0
  355. package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +46 -0
  356. package/lib/node/priorityFee/priorityFeeSubscriber.js +188 -0
  357. package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +48 -0
  358. package/lib/node/priorityFee/priorityFeeSubscriberMap.js +88 -0
  359. package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +6 -0
  360. package/lib/node/priorityFee/solanaPriorityFeeMethod.js +21 -0
  361. package/lib/node/priorityFee/types.d.ts +31 -0
  362. package/lib/node/priorityFee/types.js +10 -0
  363. package/lib/node/serum/serumFulfillmentConfigMap.d.ts +10 -0
  364. package/lib/node/serum/serumFulfillmentConfigMap.js +17 -0
  365. package/lib/node/serum/serumSubscriber.d.ts +32 -0
  366. package/lib/node/serum/serumSubscriber.js +107 -0
  367. package/lib/node/serum/types.d.ts +13 -0
  368. package/lib/node/serum/types.js +2 -0
  369. package/lib/node/slot/SlotSubscriber.d.ts +27 -0
  370. package/lib/node/slot/SlotSubscriber.js +71 -0
  371. package/lib/node/testClient.d.ts +8 -0
  372. package/lib/node/testClient.js +23 -0
  373. package/lib/node/token/index.d.ts +5 -0
  374. package/lib/node/token/index.js +15 -0
  375. package/lib/node/tokenFaucet.d.ts +41 -0
  376. package/lib/node/tokenFaucet.js +188 -0
  377. package/lib/node/tx/baseTxSender.d.ts +57 -0
  378. package/lib/node/tx/baseTxSender.js +293 -0
  379. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +8 -0
  380. package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +13 -0
  381. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +28 -0
  382. package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +73 -0
  383. package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
  384. package/lib/node/tx/blockhashFetcher/types.js +2 -0
  385. package/lib/node/tx/fastSingleTxSender.d.ts +41 -0
  386. package/lib/node/tx/fastSingleTxSender.js +86 -0
  387. package/lib/node/tx/forwardOnlyTxSender.d.ts +37 -0
  388. package/lib/node/tx/forwardOnlyTxSender.js +92 -0
  389. package/lib/node/tx/priorityFeeCalculator.d.ts +44 -0
  390. package/lib/node/tx/priorityFeeCalculator.js +85 -0
  391. package/lib/node/tx/reportTransactionError.d.ts +20 -0
  392. package/lib/node/tx/reportTransactionError.js +103 -0
  393. package/lib/node/tx/retryTxSender.d.ts +37 -0
  394. package/lib/node/tx/retryTxSender.js +86 -0
  395. package/lib/node/tx/txHandler.d.ts +154 -0
  396. package/lib/node/tx/txHandler.js +453 -0
  397. package/lib/node/tx/txParamProcessor.d.ts +25 -0
  398. package/lib/node/tx/txParamProcessor.js +88 -0
  399. package/lib/node/tx/types.d.ts +29 -0
  400. package/lib/node/tx/types.js +20 -0
  401. package/lib/node/tx/utils.d.ts +2 -0
  402. package/lib/node/tx/utils.js +10 -0
  403. package/lib/node/tx/whileValidTxSender.d.ts +44 -0
  404. package/lib/node/tx/whileValidTxSender.js +166 -0
  405. package/lib/node/types.d.ts +1351 -0
  406. package/lib/node/types.js +347 -0
  407. package/lib/node/user.d.ts +411 -0
  408. package/lib/node/user.js +2161 -0
  409. package/lib/node/userConfig.d.ts +26 -0
  410. package/lib/node/userConfig.js +2 -0
  411. package/lib/node/userMap/PollingSubscription.d.ts +16 -0
  412. package/lib/node/userMap/PollingSubscription.js +30 -0
  413. package/lib/node/userMap/WebsocketSubscription.d.ts +25 -0
  414. package/lib/node/userMap/WebsocketSubscription.js +41 -0
  415. package/lib/node/userMap/grpcSubscription.d.ts +24 -0
  416. package/lib/node/userMap/grpcSubscription.js +40 -0
  417. package/lib/node/userMap/userMap.d.ts +88 -0
  418. package/lib/node/userMap/userMap.js +455 -0
  419. package/lib/node/userMap/userMapConfig.d.ts +37 -0
  420. package/lib/node/userMap/userMapConfig.js +2 -0
  421. package/lib/node/userMap/userStatsMap.d.ts +46 -0
  422. package/lib/node/userMap/userStatsMap.js +165 -0
  423. package/lib/node/userName.d.ts +5 -0
  424. package/lib/node/userName.js +21 -0
  425. package/lib/node/userStats.d.ts +19 -0
  426. package/lib/node/userStats.js +65 -0
  427. package/lib/node/userStatsConfig.d.ts +25 -0
  428. package/lib/node/userStatsConfig.js +2 -0
  429. package/lib/node/util/TransactionConfirmationManager.d.ts +16 -0
  430. package/lib/node/util/TransactionConfirmationManager.js +174 -0
  431. package/lib/node/util/chainClock.d.ts +17 -0
  432. package/lib/node/util/chainClock.js +29 -0
  433. package/lib/node/util/computeUnits.d.ts +8 -0
  434. package/lib/node/util/computeUnits.js +46 -0
  435. package/lib/node/util/promiseTimeout.d.ts +1 -0
  436. package/lib/node/util/promiseTimeout.js +14 -0
  437. package/lib/node/util/pythPullOracleUtils.d.ts +2 -0
  438. package/lib/node/util/pythPullOracleUtils.js +15 -0
  439. package/lib/node/util/tps.d.ts +2 -0
  440. package/lib/node/util/tps.js +16 -0
  441. package/lib/node/wallet.d.ts +11 -0
  442. package/lib/node/wallet.js +32 -0
  443. package/package.json +8 -4
  444. package/scripts/postbuild.js +61 -0
  445. package/src/accounts/grpcAccountSubscriber.ts +160 -0
  446. package/src/accounts/grpcDriftClientAccountSubscriber.ts +197 -0
  447. package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +56 -0
  448. package/src/accounts/grpcProgramAccountSubscriber.ts +190 -0
  449. package/src/accounts/grpcUserAccountSubscriber.ts +48 -0
  450. package/src/accounts/grpcUserStatsAccountSubscriber.ts +50 -0
  451. package/src/accounts/types.ts +8 -0
  452. package/src/accounts/webSocketAccountSubscriber.ts +1 -1
  453. package/src/accounts/webSocketDriftClientAccountSubscriber.ts +3 -3
  454. package/src/accounts/webSocketProgramAccountSubscriber.ts +1 -1
  455. package/src/addresses/pda.ts +22 -0
  456. package/src/adminClient.ts +114 -0
  457. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +70 -0
  458. package/src/auctionSubscriber/index.ts +1 -0
  459. package/src/auctionSubscriber/types.ts +2 -0
  460. package/src/config.ts +12 -3
  461. package/src/constants/perpMarkets.ts +44 -2
  462. package/src/constants/spotMarkets.ts +2 -2
  463. package/src/decode/user.ts +11 -1
  464. package/src/driftClient.ts +309 -27
  465. package/src/driftClientConfig.ts +7 -1
  466. package/src/idl/drift.json +502 -6
  467. package/src/idl/switchboard_on_demand_30.json +195 -37
  468. package/src/index.ts +8 -0
  469. package/src/isomorphic/README.md +19 -0
  470. package/src/isomorphic/grpc.browser.ts +4 -0
  471. package/src/isomorphic/grpc.node.ts +23 -0
  472. package/src/isomorphic/grpc.ts +1 -0
  473. package/src/math/margin.ts +20 -12
  474. package/src/math/market.ts +19 -3
  475. package/src/oracles/pythClient.ts +1 -5
  476. package/src/orderSubscriber/OrderSubscriber.ts +14 -11
  477. package/src/orderSubscriber/grpcSubscription.ts +121 -0
  478. package/src/orderSubscriber/types.ts +10 -0
  479. package/src/tx/baseTxSender.ts +21 -13
  480. package/src/tx/fastSingleTxSender.ts +5 -2
  481. package/src/tx/forwardOnlyTxSender.ts +3 -0
  482. package/src/tx/retryTxSender.ts +4 -1
  483. package/src/tx/whileValidTxSender.ts +4 -1
  484. package/src/types.ts +44 -1
  485. package/src/user.ts +37 -10
  486. package/src/userConfig.ts +7 -1
  487. package/src/userMap/grpcSubscription.ts +78 -0
  488. package/src/userMap/userMap.ts +21 -2
  489. package/src/userMap/userMapConfig.ts +7 -0
  490. package/src/userStats.ts +11 -0
  491. package/src/userStatsConfig.ts +7 -0
  492. package/tsconfig.browser.json +13 -0
  493. package/tsconfig.json +1 -1
  494. /package/lib/{accounts → browser/accounts}/basicUserAccountSubscriber.d.ts +0 -0
  495. /package/lib/{accounts → browser/accounts}/basicUserAccountSubscriber.js +0 -0
  496. /package/lib/{accounts → browser/accounts}/bulkAccountLoader.js +0 -0
  497. /package/lib/{accounts → browser/accounts}/bulkUserStatsSubscription.d.ts +0 -0
  498. /package/lib/{accounts → browser/accounts}/bulkUserStatsSubscription.js +0 -0
  499. /package/lib/{accounts → browser/accounts}/bulkUserSubscription.d.ts +0 -0
  500. /package/lib/{accounts → browser/accounts}/bulkUserSubscription.js +0 -0
  501. /package/lib/{accounts → browser/accounts}/fetch.d.ts +0 -0
  502. /package/lib/{accounts → browser/accounts}/fetch.js +0 -0
  503. /package/lib/{accounts → browser/accounts}/oneShotUserAccountSubscriber.d.ts +0 -0
  504. /package/lib/{accounts → browser/accounts}/oneShotUserAccountSubscriber.js +0 -0
  505. /package/lib/{accounts → browser/accounts}/pollingDriftClientAccountSubscriber.d.ts +0 -0
  506. /package/lib/{accounts → browser/accounts}/pollingDriftClientAccountSubscriber.js +0 -0
  507. /package/lib/{accounts → browser/accounts}/pollingInsuranceFundStakeAccountSubscriber.d.ts +0 -0
  508. /package/lib/{accounts → browser/accounts}/pollingInsuranceFundStakeAccountSubscriber.js +0 -0
  509. /package/lib/{accounts → browser/accounts}/pollingOracleAccountSubscriber.d.ts +0 -0
  510. /package/lib/{accounts → browser/accounts}/pollingOracleAccountSubscriber.js +0 -0
  511. /package/lib/{accounts → browser/accounts}/pollingTokenAccountSubscriber.d.ts +0 -0
  512. /package/lib/{accounts → browser/accounts}/pollingTokenAccountSubscriber.js +0 -0
  513. /package/lib/{accounts → browser/accounts}/pollingUserAccountSubscriber.d.ts +0 -0
  514. /package/lib/{accounts → browser/accounts}/pollingUserAccountSubscriber.js +0 -0
  515. /package/lib/{accounts → browser/accounts}/pollingUserStatsAccountSubscriber.d.ts +0 -0
  516. /package/lib/{accounts → browser/accounts}/pollingUserStatsAccountSubscriber.js +0 -0
  517. /package/lib/{accounts → browser/accounts}/testBulkAccountLoader.d.ts +0 -0
  518. /package/lib/{accounts → browser/accounts}/testBulkAccountLoader.js +0 -0
  519. /package/lib/{accounts → browser/accounts}/types.js +0 -0
  520. /package/lib/{accounts → browser/accounts}/utils.d.ts +0 -0
  521. /package/lib/{accounts → browser/accounts}/utils.js +0 -0
  522. /package/lib/{accounts → browser/accounts}/webSocketAccountSubscriber.js +0 -0
  523. /package/lib/{accounts → browser/accounts}/webSocketDriftClientAccountSubscriber.js +0 -0
  524. /package/lib/{accounts → browser/accounts}/webSocketInsuranceFundStakeAccountSubscriber.d.ts +0 -0
  525. /package/lib/{accounts → browser/accounts}/webSocketInsuranceFundStakeAccountSubscriber.js +0 -0
  526. /package/lib/{accounts → browser/accounts}/webSocketProgramAccountSubscriber.js +0 -0
  527. /package/lib/{accounts → browser/accounts}/webSocketUserAccountSubscriber.d.ts +0 -0
  528. /package/lib/{accounts → browser/accounts}/webSocketUserAccountSubscriber.js +0 -0
  529. /package/lib/{accounts → browser/accounts}/webSocketUserStatsAccountSubsriber.d.ts +0 -0
  530. /package/lib/{accounts → browser/accounts}/webSocketUserStatsAccountSubsriber.js +0 -0
  531. /package/lib/{addresses → browser/addresses}/marketAddresses.d.ts +0 -0
  532. /package/lib/{addresses → browser/addresses}/marketAddresses.js +0 -0
  533. /package/lib/{assert → browser/assert}/assert.d.ts +0 -0
  534. /package/lib/{assert → browser/assert}/assert.js +0 -0
  535. /package/lib/{auctionSubscriber → browser/auctionSubscriber}/auctionSubscriber.d.ts +0 -0
  536. /package/lib/{auctionSubscriber → browser/auctionSubscriber}/auctionSubscriber.js +0 -0
  537. /package/lib/{auctionSubscriber → browser/auctionSubscriber}/types.js +0 -0
  538. /package/lib/{bankrun → browser/bankrun}/bankrunConnection.js +0 -0
  539. /package/lib/{blockhashSubscriber → browser/blockhashSubscriber}/BlockhashSubscriber.d.ts +0 -0
  540. /package/lib/{blockhashSubscriber → browser/blockhashSubscriber}/BlockhashSubscriber.js +0 -0
  541. /package/lib/{blockhashSubscriber → browser/blockhashSubscriber}/index.d.ts +0 -0
  542. /package/lib/{blockhashSubscriber → browser/blockhashSubscriber}/index.js +0 -0
  543. /package/lib/{blockhashSubscriber → browser/blockhashSubscriber}/types.d.ts +0 -0
  544. /package/lib/{blockhashSubscriber → browser/blockhashSubscriber}/types.js +0 -0
  545. /package/lib/{clock → browser/clock}/clockSubscriber.d.ts +0 -0
  546. /package/lib/{clock → browser/clock}/clockSubscriber.js +0 -0
  547. /package/lib/{constants → browser/constants}/numericConstants.d.ts +0 -0
  548. /package/lib/{constants → browser/constants}/numericConstants.js +0 -0
  549. /package/lib/{constants → browser/constants}/perpMarkets.d.ts +0 -0
  550. /package/lib/{constants → browser/constants}/spotMarkets.d.ts +0 -0
  551. /package/lib/{constants → browser/constants}/txConstants.d.ts +0 -0
  552. /package/lib/{constants → browser/constants}/txConstants.js +0 -0
  553. /package/lib/{decode → browser/decode}/phoenix.js +0 -0
  554. /package/lib/{dlob → browser/dlob}/DLOB.d.ts +0 -0
  555. /package/lib/{dlob → browser/dlob}/DLOB.js +0 -0
  556. /package/lib/{dlob → browser/dlob}/DLOBApiClient.d.ts +0 -0
  557. /package/lib/{dlob → browser/dlob}/DLOBApiClient.js +0 -0
  558. /package/lib/{dlob → browser/dlob}/DLOBNode.d.ts +0 -0
  559. /package/lib/{dlob → browser/dlob}/DLOBNode.js +0 -0
  560. /package/lib/{dlob → browser/dlob}/DLOBOrders.js +0 -0
  561. /package/lib/{dlob → browser/dlob}/DLOBSubscriber.d.ts +0 -0
  562. /package/lib/{dlob → browser/dlob}/DLOBSubscriber.js +0 -0
  563. /package/lib/{dlob → browser/dlob}/NodeList.d.ts +0 -0
  564. /package/lib/{dlob → browser/dlob}/NodeList.js +0 -0
  565. /package/lib/{dlob → browser/dlob}/dlobIdl.json +0 -0
  566. /package/lib/{dlob → browser/dlob}/orderBookLevels.d.ts +0 -0
  567. /package/lib/{dlob → browser/dlob}/orderBookLevels.js +0 -0
  568. /package/lib/{dlob → browser/dlob}/types.d.ts +0 -0
  569. /package/lib/{dlob → browser/dlob}/types.js +0 -0
  570. /package/lib/{driftClientConfig.js → browser/driftClientConfig.js} +0 -0
  571. /package/lib/{events → browser/events}/eventList.d.ts +0 -0
  572. /package/lib/{events → browser/events}/eventList.js +0 -0
  573. /package/lib/{events → browser/events}/eventSubscriber.d.ts +0 -0
  574. /package/lib/{events → browser/events}/eventSubscriber.js +0 -0
  575. /package/lib/{events → browser/events}/eventsServerLogProvider.d.ts +0 -0
  576. /package/lib/{events → browser/events}/eventsServerLogProvider.js +0 -0
  577. /package/lib/{events → browser/events}/fetchLogs.d.ts +0 -0
  578. /package/lib/{events → browser/events}/fetchLogs.js +0 -0
  579. /package/lib/{events → browser/events}/parse.d.ts +0 -0
  580. /package/lib/{events → browser/events}/parse.js +0 -0
  581. /package/lib/{events → browser/events}/pollingLogProvider.d.ts +0 -0
  582. /package/lib/{events → browser/events}/pollingLogProvider.js +0 -0
  583. /package/lib/{events → browser/events}/sort.d.ts +0 -0
  584. /package/lib/{events → browser/events}/sort.js +0 -0
  585. /package/lib/{events → browser/events}/txEventCache.d.ts +0 -0
  586. /package/lib/{events → browser/events}/txEventCache.js +0 -0
  587. /package/lib/{events → browser/events}/types.d.ts +0 -0
  588. /package/lib/{events → browser/events}/types.js +0 -0
  589. /package/lib/{events → browser/events}/webSocketLogProvider.d.ts +0 -0
  590. /package/lib/{events → browser/events}/webSocketLogProvider.js +0 -0
  591. /package/lib/{factory → browser/factory}/bigNum.d.ts +0 -0
  592. /package/lib/{factory → browser/factory}/bigNum.js +0 -0
  593. /package/lib/{factory → browser/factory}/oracleClient.d.ts +0 -0
  594. /package/lib/{factory → browser/factory}/oracleClient.js +0 -0
  595. /package/lib/{idl → browser/idl}/openbook.json +0 -0
  596. /package/lib/{idl → browser/idl}/pyth_solana_receiver.json +0 -0
  597. /package/lib/{idl → browser/idl}/switchboard.json +0 -0
  598. /package/lib/{idl → browser/idl}/token_faucet.json +0 -0
  599. /package/lib/{jupiter → browser/jupiter}/jupiterClient.d.ts +0 -0
  600. /package/lib/{jupiter → browser/jupiter}/jupiterClient.js +0 -0
  601. /package/lib/{keypair.d.ts → browser/keypair.d.ts} +0 -0
  602. /package/lib/{keypair.js → browser/keypair.js} +0 -0
  603. /package/lib/{marinade → browser/marinade}/index.d.ts +0 -0
  604. /package/lib/{marinade → browser/marinade}/index.js +0 -0
  605. /package/lib/{marinade → browser/marinade}/types.d.ts +0 -0
  606. /package/lib/{marinade → browser/marinade}/types.js +0 -0
  607. /package/lib/{math → browser/math}/amm.d.ts +0 -0
  608. /package/lib/{math → browser/math}/amm.js +0 -0
  609. /package/lib/{math → browser/math}/auction.d.ts +0 -0
  610. /package/lib/{math → browser/math}/auction.js +0 -0
  611. /package/lib/{math → browser/math}/bankruptcy.d.ts +0 -0
  612. /package/lib/{math → browser/math}/bankruptcy.js +0 -0
  613. /package/lib/{math → browser/math}/conversion.d.ts +0 -0
  614. /package/lib/{math → browser/math}/conversion.js +0 -0
  615. /package/lib/{math → browser/math}/exchangeStatus.d.ts +0 -0
  616. /package/lib/{math → browser/math}/exchangeStatus.js +0 -0
  617. /package/lib/{math → browser/math}/fuel.d.ts +0 -0
  618. /package/lib/{math → browser/math}/fuel.js +0 -0
  619. /package/lib/{math → browser/math}/funding.d.ts +0 -0
  620. /package/lib/{math → browser/math}/funding.js +0 -0
  621. /package/lib/{math → browser/math}/insurance.d.ts +0 -0
  622. /package/lib/{math → browser/math}/insurance.js +0 -0
  623. /package/lib/{math → browser/math}/oracles.js +0 -0
  624. /package/lib/{math → browser/math}/orders.d.ts +0 -0
  625. /package/lib/{math → browser/math}/orders.js +0 -0
  626. /package/lib/{math → browser/math}/position.d.ts +0 -0
  627. /package/lib/{math → browser/math}/position.js +0 -0
  628. /package/lib/{math → browser/math}/repeg.d.ts +0 -0
  629. /package/lib/{math → browser/math}/repeg.js +0 -0
  630. /package/lib/{math → browser/math}/spotBalance.d.ts +0 -0
  631. /package/lib/{math → browser/math}/spotBalance.js +0 -0
  632. /package/lib/{math → browser/math}/spotMarket.d.ts +0 -0
  633. /package/lib/{math → browser/math}/spotMarket.js +0 -0
  634. /package/lib/{math → browser/math}/spotPosition.d.ts +0 -0
  635. /package/lib/{math → browser/math}/spotPosition.js +0 -0
  636. /package/lib/{math → browser/math}/state.d.ts +0 -0
  637. /package/lib/{math → browser/math}/state.js +0 -0
  638. /package/lib/{math → browser/math}/superStake.d.ts +0 -0
  639. /package/lib/{math → browser/math}/superStake.js +0 -0
  640. /package/lib/{math → browser/math}/tiers.d.ts +0 -0
  641. /package/lib/{math → browser/math}/tiers.js +0 -0
  642. /package/lib/{math → browser/math}/trade.d.ts +0 -0
  643. /package/lib/{math → browser/math}/trade.js +0 -0
  644. /package/lib/{math → browser/math}/utils.d.ts +0 -0
  645. /package/lib/{math → browser/math}/utils.js +0 -0
  646. /package/lib/{memcmp.d.ts → browser/memcmp.d.ts} +0 -0
  647. /package/lib/{memcmp.js → browser/memcmp.js} +0 -0
  648. /package/lib/{openbook → browser/openbook}/openbookV2FulfillmentConfigMap.d.ts +0 -0
  649. /package/lib/{openbook → browser/openbook}/openbookV2FulfillmentConfigMap.js +0 -0
  650. /package/lib/{openbook → browser/openbook}/openbookV2Subscriber.d.ts +0 -0
  651. /package/lib/{openbook → browser/openbook}/openbookV2Subscriber.js +0 -0
  652. /package/lib/{oracles → browser/oracles}/oracleClientCache.d.ts +0 -0
  653. /package/lib/{oracles → browser/oracles}/oracleClientCache.js +0 -0
  654. /package/lib/{oracles → browser/oracles}/prelaunchOracleClient.js +0 -0
  655. /package/lib/{oracles → browser/oracles}/pythPullClient.js +0 -0
  656. /package/lib/{oracles → browser/oracles}/quoteAssetOracleClient.js +0 -0
  657. /package/lib/{oracles → browser/oracles}/strictOraclePrice.d.ts +0 -0
  658. /package/lib/{oracles → browser/oracles}/strictOraclePrice.js +0 -0
  659. /package/lib/{oracles → browser/oracles}/switchboardClient.js +0 -0
  660. /package/lib/{oracles → browser/oracles}/switchboardOnDemandClient.js +0 -0
  661. /package/lib/{oracles → browser/oracles}/types.js +0 -0
  662. /package/lib/{orderParams.d.ts → browser/orderParams.d.ts} +0 -0
  663. /package/lib/{orderParams.js → browser/orderParams.js} +0 -0
  664. /package/lib/{orderSubscriber → browser/orderSubscriber}/PollingSubscription.d.ts +0 -0
  665. /package/lib/{orderSubscriber → browser/orderSubscriber}/PollingSubscription.js +0 -0
  666. /package/lib/{orderSubscriber → browser/orderSubscriber}/WebsocketSubscription.d.ts +0 -0
  667. /package/lib/{orderSubscriber → browser/orderSubscriber}/WebsocketSubscription.js +0 -0
  668. /package/lib/{orderSubscriber → browser/orderSubscriber}/index.d.ts +0 -0
  669. /package/lib/{orderSubscriber → browser/orderSubscriber}/index.js +0 -0
  670. /package/lib/{orderSubscriber → browser/orderSubscriber}/types.js +0 -0
  671. /package/lib/{phoenix → browser/phoenix}/phoenixFulfillmentConfigMap.d.ts +0 -0
  672. /package/lib/{phoenix → browser/phoenix}/phoenixFulfillmentConfigMap.js +0 -0
  673. /package/lib/{phoenix → browser/phoenix}/phoenixSubscriber.d.ts +0 -0
  674. /package/lib/{phoenix → browser/phoenix}/phoenixSubscriber.js +0 -0
  675. /package/lib/{priorityFee → browser/priorityFee}/averageOverSlotsStrategy.d.ts +0 -0
  676. /package/lib/{priorityFee → browser/priorityFee}/averageOverSlotsStrategy.js +0 -0
  677. /package/lib/{priorityFee → browser/priorityFee}/averageStrategy.d.ts +0 -0
  678. /package/lib/{priorityFee → browser/priorityFee}/averageStrategy.js +0 -0
  679. /package/lib/{priorityFee → browser/priorityFee}/driftPriorityFeeMethod.d.ts +0 -0
  680. /package/lib/{priorityFee → browser/priorityFee}/driftPriorityFeeMethod.js +0 -0
  681. /package/lib/{priorityFee → browser/priorityFee}/ewmaStrategy.d.ts +0 -0
  682. /package/lib/{priorityFee → browser/priorityFee}/ewmaStrategy.js +0 -0
  683. /package/lib/{priorityFee → browser/priorityFee}/heliusPriorityFeeMethod.d.ts +0 -0
  684. /package/lib/{priorityFee → browser/priorityFee}/heliusPriorityFeeMethod.js +0 -0
  685. /package/lib/{priorityFee → browser/priorityFee}/index.d.ts +0 -0
  686. /package/lib/{priorityFee → browser/priorityFee}/index.js +0 -0
  687. /package/lib/{priorityFee → browser/priorityFee}/maxOverSlotsStrategy.d.ts +0 -0
  688. /package/lib/{priorityFee → browser/priorityFee}/maxOverSlotsStrategy.js +0 -0
  689. /package/lib/{priorityFee → browser/priorityFee}/maxStrategy.d.ts +0 -0
  690. /package/lib/{priorityFee → browser/priorityFee}/maxStrategy.js +0 -0
  691. /package/lib/{priorityFee → browser/priorityFee}/priorityFeeSubscriber.d.ts +0 -0
  692. /package/lib/{priorityFee → browser/priorityFee}/priorityFeeSubscriber.js +0 -0
  693. /package/lib/{priorityFee → browser/priorityFee}/priorityFeeSubscriberMap.d.ts +0 -0
  694. /package/lib/{priorityFee → browser/priorityFee}/priorityFeeSubscriberMap.js +0 -0
  695. /package/lib/{priorityFee → browser/priorityFee}/solanaPriorityFeeMethod.d.ts +0 -0
  696. /package/lib/{priorityFee → browser/priorityFee}/solanaPriorityFeeMethod.js +0 -0
  697. /package/lib/{priorityFee → browser/priorityFee}/types.d.ts +0 -0
  698. /package/lib/{priorityFee → browser/priorityFee}/types.js +0 -0
  699. /package/lib/{serum → browser/serum}/serumFulfillmentConfigMap.d.ts +0 -0
  700. /package/lib/{serum → browser/serum}/serumFulfillmentConfigMap.js +0 -0
  701. /package/lib/{serum → browser/serum}/serumSubscriber.d.ts +0 -0
  702. /package/lib/{serum → browser/serum}/serumSubscriber.js +0 -0
  703. /package/lib/{serum → browser/serum}/types.d.ts +0 -0
  704. /package/lib/{serum → browser/serum}/types.js +0 -0
  705. /package/lib/{slot → browser/slot}/SlotSubscriber.d.ts +0 -0
  706. /package/lib/{slot → browser/slot}/SlotSubscriber.js +0 -0
  707. /package/lib/{testClient.d.ts → browser/testClient.d.ts} +0 -0
  708. /package/lib/{testClient.js → browser/testClient.js} +0 -0
  709. /package/lib/{token → browser/token}/index.js +0 -0
  710. /package/lib/{tokenFaucet.d.ts → browser/tokenFaucet.d.ts} +0 -0
  711. /package/lib/{tokenFaucet.js → browser/tokenFaucet.js} +0 -0
  712. /package/lib/{tx → browser/tx}/blockhashFetcher/baseBlockhashFetcher.d.ts +0 -0
  713. /package/lib/{tx → browser/tx}/blockhashFetcher/baseBlockhashFetcher.js +0 -0
  714. /package/lib/{tx → browser/tx}/blockhashFetcher/cachedBlockhashFetcher.d.ts +0 -0
  715. /package/lib/{tx → browser/tx}/blockhashFetcher/cachedBlockhashFetcher.js +0 -0
  716. /package/lib/{tx → browser/tx}/blockhashFetcher/types.d.ts +0 -0
  717. /package/lib/{tx → browser/tx}/blockhashFetcher/types.js +0 -0
  718. /package/lib/{tx → browser/tx}/priorityFeeCalculator.d.ts +0 -0
  719. /package/lib/{tx → browser/tx}/priorityFeeCalculator.js +0 -0
  720. /package/lib/{tx → browser/tx}/reportTransactionError.d.ts +0 -0
  721. /package/lib/{tx → browser/tx}/reportTransactionError.js +0 -0
  722. /package/lib/{tx → browser/tx}/txHandler.d.ts +0 -0
  723. /package/lib/{tx → browser/tx}/txHandler.js +0 -0
  724. /package/lib/{tx → browser/tx}/txParamProcessor.d.ts +0 -0
  725. /package/lib/{tx → browser/tx}/txParamProcessor.js +0 -0
  726. /package/lib/{tx → browser/tx}/types.js +0 -0
  727. /package/lib/{tx → browser/tx}/utils.d.ts +0 -0
  728. /package/lib/{tx → browser/tx}/utils.js +0 -0
  729. /package/lib/{userConfig.js → browser/userConfig.js} +0 -0
  730. /package/lib/{userMap → browser/userMap}/PollingSubscription.d.ts +0 -0
  731. /package/lib/{userMap → browser/userMap}/PollingSubscription.js +0 -0
  732. /package/lib/{userMap → browser/userMap}/WebsocketSubscription.js +0 -0
  733. /package/lib/{userMap → browser/userMap}/userMap.d.ts +0 -0
  734. /package/lib/{userMap → browser/userMap}/userMapConfig.js +0 -0
  735. /package/lib/{userMap → browser/userMap}/userStatsMap.d.ts +0 -0
  736. /package/lib/{userMap → browser/userMap}/userStatsMap.js +0 -0
  737. /package/lib/{userName.d.ts → browser/userName.d.ts} +0 -0
  738. /package/lib/{userName.js → browser/userName.js} +0 -0
  739. /package/lib/{userStats.d.ts → browser/userStats.d.ts} +0 -0
  740. /package/lib/{userStatsConfig.js → browser/userStatsConfig.js} +0 -0
  741. /package/lib/{util → browser/util}/TransactionConfirmationManager.d.ts +0 -0
  742. /package/lib/{util → browser/util}/TransactionConfirmationManager.js +0 -0
  743. /package/lib/{util → browser/util}/chainClock.d.ts +0 -0
  744. /package/lib/{util → browser/util}/chainClock.js +0 -0
  745. /package/lib/{util → browser/util}/computeUnits.d.ts +0 -0
  746. /package/lib/{util → browser/util}/computeUnits.js +0 -0
  747. /package/lib/{util → browser/util}/promiseTimeout.d.ts +0 -0
  748. /package/lib/{util → browser/util}/promiseTimeout.js +0 -0
  749. /package/lib/{util → browser/util}/pythPullOracleUtils.d.ts +0 -0
  750. /package/lib/{util → browser/util}/pythPullOracleUtils.js +0 -0
  751. /package/lib/{util → browser/util}/tps.d.ts +0 -0
  752. /package/lib/{util → browser/util}/tps.js +0 -0
  753. /package/lib/{wallet.d.ts → browser/wallet.d.ts} +0 -0
  754. /package/lib/{wallet.js → browser/wallet.js} +0 -0
@@ -0,0 +1,121 @@
1
+ import { Context, PublicKey } from '@solana/web3.js';
2
+ import { Buffer } from 'buffer';
3
+ import { grpcProgramAccountSubscriber } from '../accounts/grpcProgramAccountSubscriber';
4
+ import { OrderSubscriber } from './OrderSubscriber';
5
+ import { GrpcConfigs, ResubOpts } from '../accounts/types';
6
+ import { UserAccount } from '../types';
7
+ import { getUserFilter, getNonIdleUserFilter } from '../memcmp';
8
+
9
+ export class grpcSubscription {
10
+ private orderSubscriber: OrderSubscriber;
11
+ private skipInitialLoad: boolean;
12
+ private resubOpts?: ResubOpts;
13
+ private resyncIntervalMs?: number;
14
+
15
+ private subscriber?: grpcProgramAccountSubscriber<UserAccount>;
16
+ private resyncTimeoutId?: NodeJS.Timeout;
17
+
18
+ private decoded?: boolean;
19
+
20
+ private grpcConfigs: GrpcConfigs;
21
+
22
+ constructor({
23
+ grpcConfigs,
24
+ orderSubscriber,
25
+ skipInitialLoad = false,
26
+ resubOpts,
27
+ resyncIntervalMs,
28
+ decoded = true,
29
+ }: {
30
+ grpcConfigs: GrpcConfigs;
31
+ orderSubscriber: OrderSubscriber;
32
+ skipInitialLoad?: boolean;
33
+ resubOpts?: ResubOpts;
34
+ resyncIntervalMs?: number;
35
+ decoded?: boolean;
36
+ }) {
37
+ this.orderSubscriber = orderSubscriber;
38
+ this.skipInitialLoad = skipInitialLoad;
39
+ this.resubOpts = resubOpts;
40
+ this.resyncIntervalMs = resyncIntervalMs;
41
+ this.decoded = decoded;
42
+ this.grpcConfigs = grpcConfigs;
43
+ }
44
+
45
+ public async subscribe(): Promise<void> {
46
+ if (this.subscriber) {
47
+ return;
48
+ }
49
+
50
+ this.subscriber = new grpcProgramAccountSubscriber<UserAccount>(
51
+ this.grpcConfigs,
52
+ 'OrderSubscriber',
53
+ 'User',
54
+ this.orderSubscriber.driftClient.program,
55
+ this.orderSubscriber.decodeFn,
56
+ {
57
+ filters: [getUserFilter(), getNonIdleUserFilter()],
58
+ },
59
+ this.resubOpts
60
+ );
61
+
62
+ await this.subscriber.subscribe(
63
+ (
64
+ accountId: PublicKey,
65
+ account: UserAccount,
66
+ context: Context,
67
+ buffer: Buffer
68
+ ) => {
69
+ const userKey = accountId.toBase58();
70
+ if (this.decoded ?? true) {
71
+ this.orderSubscriber.tryUpdateUserAccount(
72
+ userKey,
73
+ 'decoded',
74
+ account,
75
+ context.slot
76
+ );
77
+ } else {
78
+ this.orderSubscriber.tryUpdateUserAccount(
79
+ userKey,
80
+ 'buffer',
81
+ buffer,
82
+ context.slot
83
+ );
84
+ }
85
+ }
86
+ );
87
+
88
+ if (!this.skipInitialLoad) {
89
+ await this.orderSubscriber.fetch();
90
+ }
91
+
92
+ if (this.resyncIntervalMs) {
93
+ const recursiveResync = () => {
94
+ this.resyncTimeoutId = setTimeout(() => {
95
+ this.orderSubscriber
96
+ .fetch()
97
+ .catch((e) => {
98
+ console.error('Failed to resync in OrderSubscriber');
99
+ console.log(e);
100
+ })
101
+ .finally(() => {
102
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
103
+ if (!this.resyncTimeoutId) return;
104
+ recursiveResync();
105
+ });
106
+ }, this.resyncIntervalMs);
107
+ };
108
+ recursiveResync();
109
+ }
110
+ }
111
+
112
+ public async unsubscribe(): Promise<void> {
113
+ if (!this.subscriber) return;
114
+ await this.subscriber.unsubscribe();
115
+ this.subscriber = undefined;
116
+ if (this.resyncTimeoutId !== undefined) {
117
+ clearTimeout(this.resyncTimeoutId);
118
+ this.resyncTimeoutId = undefined;
119
+ }
120
+ }
121
+ }
@@ -1,6 +1,7 @@
1
1
  import { Commitment, PublicKey } from '@solana/web3.js';
2
2
  import { Order, UserAccount } from '../types';
3
3
  import { DriftClient } from '../driftClient';
4
+ import { GrpcConfigs } from '../accounts/types';
4
5
 
5
6
  export type OrderSubscriberConfig = {
6
7
  driftClient: DriftClient;
@@ -17,6 +18,15 @@ export type OrderSubscriberConfig = {
17
18
  logResubMessages?: boolean;
18
19
  resyncIntervalMs?: number;
19
20
  commitment?: Commitment;
21
+ }
22
+ | {
23
+ type: 'grpc';
24
+ grpcConfigs: GrpcConfigs;
25
+ skipInitialLoad?: boolean;
26
+ resubTimeoutMs?: number;
27
+ logResubMessages?: boolean;
28
+ resyncIntervalMs?: number;
29
+ commitment?: Commitment;
20
30
  };
21
31
  fastDecode?: boolean;
22
32
  decodeData?: boolean;
@@ -43,6 +43,7 @@ export abstract class BaseTxSender implements TxSender {
43
43
  additionalTxSenderCallbacks: ((base58EncodedTx: string) => void)[];
44
44
  txHandler: TxHandler;
45
45
  trackTxLandRate?: boolean;
46
+ throwOnTimeoutError: boolean;
46
47
 
47
48
  // For landing rate calcs
48
49
  lookbackWindowMinutes: number;
@@ -63,6 +64,7 @@ export abstract class BaseTxSender implements TxSender {
63
64
  txHandler,
64
65
  txLandRateLookbackWindowMinutes = DEFAULT_TX_LAND_RATE_LOOKBACK_WINDOW_MINUTES,
65
66
  landRateToFeeFunc,
67
+ throwOnTimeoutError = true,
66
68
  }: {
67
69
  connection: Connection;
68
70
  wallet: IWallet;
@@ -75,6 +77,7 @@ export abstract class BaseTxSender implements TxSender {
75
77
  trackTxLandRate?: boolean;
76
78
  txLandRateLookbackWindowMinutes?: number;
77
79
  landRateToFeeFunc?: (landRate: number) => number;
80
+ throwOnTimeoutError?: boolean;
78
81
  }) {
79
82
  this.connection = connection;
80
83
  this.wallet = wallet;
@@ -100,6 +103,7 @@ export abstract class BaseTxSender implements TxSender {
100
103
  }
101
104
  this.landRateToFeeFunc =
102
105
  landRateToFeeFunc ?? this.defaultLandRateToFeeFunc.bind(this);
106
+ this.throwOnTimeoutError = throwOnTimeoutError;
103
107
  }
104
108
 
105
109
  async send(
@@ -283,12 +287,14 @@ export abstract class BaseTxSender implements TxSender {
283
287
  }
284
288
  this.timeoutCount += 1;
285
289
  const duration = (Date.now() - start) / 1000;
286
- throw new TxSendError(
287
- `Transaction was not confirmed in ${duration.toFixed(
288
- 2
289
- )} seconds. It is unknown if it succeeded or failed. Check signature ${signature} using the Solana Explorer or CLI tools.`,
290
- NOT_CONFIRMED_ERROR_CODE
291
- );
290
+ if (this.throwOnTimeoutError) {
291
+ throw new TxSendError(
292
+ `Transaction was not confirmed in ${duration.toFixed(
293
+ 2
294
+ )} seconds. It is unknown if it succeeded or failed. Check signature ${signature} using the Solana Explorer or CLI tools.`,
295
+ NOT_CONFIRMED_ERROR_CODE
296
+ );
297
+ }
292
298
  }
293
299
 
294
300
  return response;
@@ -326,12 +332,14 @@ export abstract class BaseTxSender implements TxSender {
326
332
  // Transaction not confirmed within 30 seconds
327
333
  this.timeoutCount += 1;
328
334
  const duration = (Date.now() - start) / 1000;
329
- throw new TxSendError(
330
- `Transaction was not confirmed in ${duration.toFixed(
331
- 2
332
- )} seconds. It is unknown if it succeeded or failed. Check signature ${signature} using the Solana Explorer or CLI tools.`,
333
- NOT_CONFIRMED_ERROR_CODE
334
- );
335
+ if (this.throwOnTimeoutError) {
336
+ throw new TxSendError(
337
+ `Transaction was not confirmed in ${duration.toFixed(
338
+ 2
339
+ )} seconds. It is unknown if it succeeded or failed. Check signature ${signature} using the Solana Explorer or CLI tools.`,
340
+ NOT_CONFIRMED_ERROR_CODE
341
+ );
342
+ }
335
343
  }
336
344
 
337
345
  async confirmTransaction(
@@ -407,7 +415,7 @@ export abstract class BaseTxSender implements TxSender {
407
415
  txSig: string,
408
416
  result: SignatureResult
409
417
  ): Promise<void> {
410
- if (result.err) {
418
+ if (result?.err) {
411
419
  await throwTransactionError(
412
420
  txSig,
413
421
  this.connection,
@@ -43,6 +43,7 @@ export class FastSingleTxSender extends BaseTxSender {
43
43
  txHandler,
44
44
  txLandRateLookbackWindowMinutes,
45
45
  landRateToFeeFunc,
46
+ throwOnTimeoutError = true,
46
47
  }: {
47
48
  connection: Connection;
48
49
  wallet: IWallet;
@@ -58,6 +59,7 @@ export class FastSingleTxSender extends BaseTxSender {
58
59
  txHandler?: TxHandler;
59
60
  txLandRateLookbackWindowMinutes?: number;
60
61
  landRateToFeeFunc?: (landRate: number) => number;
62
+ throwOnTimeoutError?: boolean;
61
63
  }) {
62
64
  super({
63
65
  connection,
@@ -70,6 +72,7 @@ export class FastSingleTxSender extends BaseTxSender {
70
72
  trackTxLandRate,
71
73
  txLandRateLookbackWindowMinutes,
72
74
  landRateToFeeFunc,
75
+ throwOnTimeoutError,
73
76
  });
74
77
  this.connection = connection;
75
78
  this.wallet = wallet;
@@ -118,14 +121,14 @@ export class FastSingleTxSender extends BaseTxSender {
118
121
  this.confirmTransaction(txid, opts.commitment).then(
119
122
  async (result) => {
120
123
  this.txSigCache?.set(txid, true);
121
- await this.checkConfirmationResultForError(txid, result.value);
124
+ await this.checkConfirmationResultForError(txid, result?.value);
122
125
  slot = result.context.slot;
123
126
  }
124
127
  );
125
128
  } else {
126
129
  const result = await this.confirmTransaction(txid, opts.commitment);
127
130
  this.txSigCache?.set(txid, true);
128
- await this.checkConfirmationResultForError(txid, result.value);
131
+ await this.checkConfirmationResultForError(txid, result?.value);
129
132
  slot = result.context.slot;
130
133
  }
131
134
  } catch (e) {
@@ -38,6 +38,7 @@ export class ForwardOnlyTxSender extends BaseTxSender {
38
38
  trackTxLandRate,
39
39
  txLandRateLookbackWindowMinutes,
40
40
  landRateToFeeFunc,
41
+ throwOnTimeoutError = true,
41
42
  }: {
42
43
  connection: Connection;
43
44
  wallet: IWallet;
@@ -50,6 +51,7 @@ export class ForwardOnlyTxSender extends BaseTxSender {
50
51
  trackTxLandRate?: boolean;
51
52
  txLandRateLookbackWindowMinutes?: number;
52
53
  landRateToFeeFunc?: (landRate: number) => number;
54
+ throwOnTimeoutError?: boolean;
53
55
  }) {
54
56
  super({
55
57
  connection,
@@ -63,6 +65,7 @@ export class ForwardOnlyTxSender extends BaseTxSender {
63
65
  trackTxLandRate,
64
66
  txLandRateLookbackWindowMinutes,
65
67
  landRateToFeeFunc,
68
+ throwOnTimeoutError,
66
69
  });
67
70
  this.connection = connection;
68
71
  this.wallet = wallet;
@@ -34,6 +34,7 @@ export class RetryTxSender extends BaseTxSender {
34
34
  trackTxLandRate,
35
35
  txLandRateLookbackWindowMinutes,
36
36
  landRateToFeeFunc,
37
+ throwOnTimeoutError = true,
37
38
  }: {
38
39
  connection: Connection;
39
40
  wallet: IWallet;
@@ -47,6 +48,7 @@ export class RetryTxSender extends BaseTxSender {
47
48
  trackTxLandRate?: boolean;
48
49
  txLandRateLookbackWindowMinutes?: number;
49
50
  landRateToFeeFunc?: (landRate: number) => number;
51
+ throwOnTimeoutError?: boolean;
50
52
  }) {
51
53
  super({
52
54
  connection,
@@ -60,6 +62,7 @@ export class RetryTxSender extends BaseTxSender {
60
62
  trackTxLandRate,
61
63
  txLandRateLookbackWindowMinutes,
62
64
  landRateToFeeFunc,
65
+ throwOnTimeoutError,
63
66
  });
64
67
  this.connection = connection;
65
68
  this.wallet = wallet;
@@ -117,7 +120,7 @@ export class RetryTxSender extends BaseTxSender {
117
120
  const result = await this.confirmTransaction(txid, opts.commitment);
118
121
  this.txSigCache?.set(txid, true);
119
122
 
120
- await this.checkConfirmationResultForError(txid, result.value);
123
+ await this.checkConfirmationResultForError(txid, result?.value);
121
124
 
122
125
  slot = result.context.slot;
123
126
  // eslint-disable-next-line no-useless-catch
@@ -68,6 +68,7 @@ export class WhileValidTxSender extends BaseTxSender {
68
68
  trackTxLandRate,
69
69
  txLandRateLookbackWindowMinutes,
70
70
  landRateToFeeFunc,
71
+ throwOnTimeoutError = true,
71
72
  }: {
72
73
  connection: Connection;
73
74
  wallet: IWallet;
@@ -80,6 +81,7 @@ export class WhileValidTxSender extends BaseTxSender {
80
81
  trackTxLandRate?: boolean;
81
82
  txLandRateLookbackWindowMinutes?: number;
82
83
  landRateToFeeFunc?: (landRate: number) => number;
84
+ throwOnTimeoutError?: boolean;
83
85
  }) {
84
86
  super({
85
87
  connection,
@@ -92,6 +94,7 @@ export class WhileValidTxSender extends BaseTxSender {
92
94
  txLandRateLookbackWindowMinutes,
93
95
  confirmationStrategy,
94
96
  landRateToFeeFunc,
97
+ throwOnTimeoutError,
95
98
  });
96
99
  this.retrySleep = retrySleep;
97
100
 
@@ -235,7 +238,7 @@ export class WhileValidTxSender extends BaseTxSender {
235
238
 
236
239
  this.txSigCache?.set(txid, true);
237
240
 
238
- await this.checkConfirmationResultForError(txid, result.value);
241
+ await this.checkConfirmationResultForError(txid, result?.value);
239
242
 
240
243
  if (result?.value?.err) {
241
244
  // Fallback error handling if there's a problem reporting the error in checkConfirmationResultForError
package/src/types.ts CHANGED
@@ -68,6 +68,11 @@ export enum UserStatus {
68
68
  ADVANCED_LP = 8,
69
69
  }
70
70
 
71
+ export class MarginMode {
72
+ static readonly DEFAULT = { default: {} };
73
+ static readonly HIGH_LEVERAGE = { highLeverage: {} };
74
+ }
75
+
71
76
  export class ContractType {
72
77
  static readonly PERPETUAL = { perpetual: {} };
73
78
  static readonly FUTURE = { future: {} };
@@ -661,6 +666,9 @@ export type PerpMarketAccount = {
661
666
  fuelBoostTaker: number;
662
667
  fuelBoostMaker: number;
663
668
  fuelBoostPosition: number;
669
+
670
+ highLeverageMarginRatioInitial: number;
671
+ highLeverageMarginRatioMaintenance: number;
664
672
  };
665
673
 
666
674
  export type HistoricalOracleData = {
@@ -906,7 +914,7 @@ export type UserStatsAccount = {
906
914
  current_epoch_referrer_reward: BN;
907
915
  };
908
916
  referrer: PublicKey;
909
- isReferrer: boolean;
917
+ referrerStatus: boolean;
910
918
  authority: PublicKey;
911
919
  ifStakedQuoteAssetAmount: BN;
912
920
 
@@ -950,6 +958,7 @@ export type UserAccount = {
950
958
  openAuctions: number;
951
959
  hasOpenAuction: boolean;
952
960
  lastFuelBonusUpdateTs: number;
961
+ marginMode: MarginMode;
953
962
  };
954
963
 
955
964
  export type SpotPosition = {
@@ -1074,6 +1083,29 @@ export type SwiftTriggerOrderParams = {
1074
1083
  baseAssetAmount: BN;
1075
1084
  };
1076
1085
 
1086
+ export type RFQMakerOrderParams = {
1087
+ uuid: Uint8Array; // From buffer of standard UUID string
1088
+ authority: PublicKey;
1089
+ subAccountId: number;
1090
+ marketIndex: number;
1091
+ marketType: MarketType;
1092
+ baseAssetAmount: BN;
1093
+ price: BN;
1094
+ direction: PositionDirection;
1095
+ maxTs: BN;
1096
+ };
1097
+
1098
+ export type RFQMakerMessage = {
1099
+ orderParams: RFQMakerOrderParams;
1100
+ signature: Uint8Array;
1101
+ };
1102
+
1103
+ export type RFQMatch = {
1104
+ baseAssetAmount: BN;
1105
+ makerOrderParams: RFQMakerOrderParams;
1106
+ makerSignature: Uint8Array;
1107
+ };
1108
+
1077
1109
  export type MakerInfo = {
1078
1110
  maker: PublicKey;
1079
1111
  makerStats: PublicKey;
@@ -1093,6 +1125,11 @@ export type ReferrerInfo = {
1093
1125
  referrerStats: PublicKey;
1094
1126
  };
1095
1127
 
1128
+ export enum ReferrerStatus {
1129
+ IsReferrer = 1,
1130
+ IsReferred = 2,
1131
+ }
1132
+
1096
1133
  export enum PlaceAndTakeOrderSuccessCondition {
1097
1134
  PartialFill = 1,
1098
1135
  FullFill = 2,
@@ -1301,3 +1338,9 @@ export type SignedTxData = {
1301
1338
  lastValidBlockHeight?: number;
1302
1339
  blockHash: string;
1303
1340
  };
1341
+
1342
+ export type HighLeverageModeConfig = {
1343
+ maxUsers: number;
1344
+ currentUsers: number;
1345
+ reduceOnly: boolean;
1346
+ };
package/src/user.ts CHANGED
@@ -100,6 +100,7 @@ import {
100
100
  calculatePerpFuelBonus,
101
101
  calculateInsuranceFuelBonus,
102
102
  } from './math/fuel';
103
+ import { grpcUserAccountSubscriber } from './accounts/grpcUserAccountSubscriber';
103
104
 
104
105
  export class User {
105
106
  driftClient: DriftClient;
@@ -130,6 +131,16 @@ export class User {
130
131
  );
131
132
  } else if (config.accountSubscription?.type === 'custom') {
132
133
  this.accountSubscriber = config.accountSubscription.userAccountSubscriber;
134
+ } else if (config.accountSubscription?.type === 'grpc') {
135
+ this.accountSubscriber = new grpcUserAccountSubscriber(
136
+ config.accountSubscription.grpcConfigs,
137
+ config.driftClient.program,
138
+ config.userAccountPublicKey,
139
+ {
140
+ resubTimeoutMs: config.accountSubscription?.resubTimeoutMs,
141
+ logResubMessages: config.accountSubscription?.logResubMessages,
142
+ }
143
+ );
133
144
  } else {
134
145
  this.accountSubscriber = new WebSocketUserAccountSubscriber(
135
146
  config.driftClient.program,
@@ -676,7 +687,8 @@ export class User {
676
687
  this.driftClient.getPerpMarketAccount(marketIndex),
677
688
  baseAssetAmount,
678
689
  'Initial',
679
- this.getUserAccount().maxMarginRatio
690
+ this.getUserAccount().maxMarginRatio,
691
+ this.isHighLeverageMode()
680
692
  );
681
693
 
682
694
  return freeCollateral.mul(MARGIN_PRECISION).div(new BN(marginRatio));
@@ -1507,7 +1519,8 @@ export class User {
1507
1519
  market,
1508
1520
  baseAssetAmount.abs(),
1509
1521
  marginCategory,
1510
- this.getUserAccount().maxMarginRatio
1522
+ this.getUserAccount().maxMarginRatio,
1523
+ this.isHighLeverageMode()
1511
1524
  )
1512
1525
  );
1513
1526
 
@@ -1972,7 +1985,8 @@ export class User {
1972
1985
  market,
1973
1986
  maxSize,
1974
1987
  marginCategory,
1975
- this.getUserAccount().maxMarginRatio
1988
+ this.getUserAccount().maxMarginRatio,
1989
+ this.isHighLeverageMode()
1976
1990
  );
1977
1991
 
1978
1992
  // use more fesible size since imf factor activated
@@ -1993,7 +2007,8 @@ export class User {
1993
2007
  market,
1994
2008
  targetSize,
1995
2009
  marginCategory,
1996
- this.getUserAccount().maxMarginRatio
2010
+ this.getUserAccount().maxMarginRatio,
2011
+ this.isHighLeverageMode()
1997
2012
  );
1998
2013
  attempts += 1;
1999
2014
  }
@@ -2154,6 +2169,10 @@ export class User {
2154
2169
  return (this.getUserAccount().status & UserStatus.BANKRUPT) > 0;
2155
2170
  }
2156
2171
 
2172
+ public isHighLeverageMode(): boolean {
2173
+ return isVariant(this.getUserAccount().marginMode, 'highLeverage');
2174
+ }
2175
+
2157
2176
  /**
2158
2177
  * Checks if any user position cumulative funding differs from respective market cumulative funding
2159
2178
  * @returns
@@ -2443,7 +2462,9 @@ export class User {
2443
2462
  const marginRatio = calculateMarketMarginRatio(
2444
2463
  market,
2445
2464
  baseAssetAmount.abs(),
2446
- 'Maintenance'
2465
+ 'Maintenance',
2466
+ this.getUserAccount().maxMarginRatio,
2467
+ this.isHighLeverageMode()
2447
2468
  );
2448
2469
 
2449
2470
  return liabilityValue.mul(new BN(marginRatio)).div(MARGIN_PRECISION);
@@ -2488,7 +2509,8 @@ export class User {
2488
2509
  market,
2489
2510
  proposedBaseAssetAmount.abs(),
2490
2511
  marginCategory,
2491
- this.getUserAccount().maxMarginRatio
2512
+ this.getUserAccount().maxMarginRatio,
2513
+ this.isHighLeverageMode()
2492
2514
  );
2493
2515
  const marginRatioQuotePrecision = new BN(marginRatio)
2494
2516
  .mul(QUOTE_PRECISION)
@@ -2602,13 +2624,16 @@ export class User {
2602
2624
 
2603
2625
  public getMarginUSDCRequiredForTrade(
2604
2626
  targetMarketIndex: number,
2605
- baseSize: BN
2627
+ baseSize: BN,
2628
+ estEntryPrice?: BN
2606
2629
  ): BN {
2607
2630
  return calculateMarginUSDCRequiredForTrade(
2608
2631
  this.driftClient,
2609
2632
  targetMarketIndex,
2610
2633
  baseSize,
2611
- this.getUserAccount().maxMarginRatio
2634
+ this.getUserAccount().maxMarginRatio,
2635
+ undefined,
2636
+ estEntryPrice
2612
2637
  );
2613
2638
  }
2614
2639
 
@@ -2622,7 +2647,8 @@ export class User {
2622
2647
  targetMarketIndex,
2623
2648
  baseSize,
2624
2649
  collateralIndex,
2625
- this.getUserAccount().maxMarginRatio
2650
+ this.getUserAccount().maxMarginRatio,
2651
+ false // assume user cant be high leverage if they havent created user account ?
2626
2652
  );
2627
2653
  }
2628
2654
 
@@ -3771,7 +3797,8 @@ export class User {
3771
3797
  perpMarket,
3772
3798
  worstCaseBaseAmount.abs(),
3773
3799
  marginCategory,
3774
- this.getUserAccount().maxMarginRatio
3800
+ this.getUserAccount().maxMarginRatio,
3801
+ this.isHighLeverageMode()
3775
3802
  )
3776
3803
  );
3777
3804
 
package/src/userConfig.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { DriftClient } from './driftClient';
2
2
  import { Commitment, PublicKey } from '@solana/web3.js';
3
3
  import { BulkAccountLoader } from './accounts/bulkAccountLoader';
4
- import { UserAccountSubscriber } from './accounts/types';
4
+ import { GrpcConfigs, UserAccountSubscriber } from './accounts/types';
5
5
 
6
6
  export type UserConfig = {
7
7
  accountSubscription?: UserSubscriptionConfig;
@@ -10,6 +10,12 @@ export type UserConfig = {
10
10
  };
11
11
 
12
12
  export type UserSubscriptionConfig =
13
+ | {
14
+ type: 'grpc';
15
+ resubTimeoutMs?: number;
16
+ logResubMessages?: boolean;
17
+ grpcConfigs: GrpcConfigs;
18
+ }
13
19
  | {
14
20
  type: 'websocket';
15
21
  resubTimeoutMs?: number;
@@ -0,0 +1,78 @@
1
+ import { UserMap } from './userMap';
2
+ import { getNonIdleUserFilter, getUserFilter } from '../memcmp';
3
+ import { WebSocketProgramAccountSubscriber } from '../accounts/webSocketProgramAccountSubscriber';
4
+ import { UserAccount } from '../types';
5
+ import { Context, PublicKey } from '@solana/web3.js';
6
+ import { GrpcConfigs, ResubOpts } from '../accounts/types';
7
+ import { grpcProgramAccountSubscriber } from '../accounts/grpcProgramAccountSubscriber';
8
+
9
+ export class grpcSubscription {
10
+ private grpcConfigs: GrpcConfigs;
11
+ private userMap: UserMap;
12
+ private skipInitialLoad: boolean;
13
+ private resubOpts?: ResubOpts;
14
+ private includeIdle?: boolean;
15
+ private decodeFn: (name: string, data: Buffer) => UserAccount;
16
+
17
+ private subscriber: WebSocketProgramAccountSubscriber<UserAccount>;
18
+
19
+ constructor({
20
+ grpcConfigs,
21
+ userMap,
22
+ skipInitialLoad = false,
23
+ resubOpts,
24
+ includeIdle = false,
25
+ decodeFn,
26
+ }: {
27
+ grpcConfigs: GrpcConfigs;
28
+ userMap: UserMap;
29
+ skipInitialLoad?: boolean;
30
+ resubOpts?: ResubOpts;
31
+ includeIdle?: boolean;
32
+ decodeFn: (name: string, data: Buffer) => UserAccount;
33
+ }) {
34
+ this.userMap = userMap;
35
+ this.skipInitialLoad = skipInitialLoad;
36
+ this.resubOpts = resubOpts;
37
+ this.includeIdle = includeIdle || false;
38
+ this.decodeFn = decodeFn;
39
+ this.grpcConfigs = grpcConfigs;
40
+ }
41
+
42
+ public async subscribe(): Promise<void> {
43
+ if (!this.subscriber) {
44
+ const filters = [getUserFilter()];
45
+ if (!this.includeIdle) {
46
+ filters.push(getNonIdleUserFilter());
47
+ }
48
+ this.subscriber = new grpcProgramAccountSubscriber<UserAccount>(
49
+ this.grpcConfigs,
50
+ 'UserMap',
51
+ 'User',
52
+ this.userMap.driftClient.program,
53
+ this.decodeFn,
54
+ {
55
+ filters,
56
+ },
57
+ this.resubOpts
58
+ );
59
+ }
60
+
61
+ await this.subscriber.subscribe(
62
+ (accountId: PublicKey, account: UserAccount, context: Context) => {
63
+ const userKey = accountId.toBase58();
64
+ this.userMap.updateUserAccount(userKey, account, context.slot);
65
+ }
66
+ );
67
+
68
+ if (!this.skipInitialLoad) {
69
+ await this.userMap.sync();
70
+ }
71
+ }
72
+
73
+ public async unsubscribe(): Promise<void> {
74
+ if (!this.subscriber) return;
75
+ await this.subscriber.unsubscribe();
76
+ this.subscriber = undefined;
77
+ }
78
+ }