@drift-labs/sdk-browser 2.162.0-beta.2 → 2.163.0-beta.10

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 (500) hide show
  1. package/.prettierignore +1 -0
  2. package/.yarn/install-state.gz +0 -0
  3. package/README.md +2 -2
  4. package/VERSION +1 -1
  5. package/bun.lock +47 -79
  6. package/lib/browser/accounts/fetch.d.ts +6 -6
  7. package/lib/browser/accounts/fetch.js +4 -4
  8. package/lib/browser/accounts/grpcAccountSubscriber.d.ts +2 -2
  9. package/lib/browser/accounts/grpcDriftClientAccountSubscriber.d.ts +2 -2
  10. package/lib/browser/accounts/grpcDriftClientAccountSubscriberV2.d.ts +3 -3
  11. package/lib/browser/accounts/grpcDriftClientAccountSubscriberV2.js +2 -2
  12. package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +2 -2
  13. package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +2 -2
  14. package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -2
  15. package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +2 -2
  16. package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +2 -2
  17. package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +2 -2
  18. package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +2 -2
  19. package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +3 -3
  20. package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +3 -3
  21. package/lib/browser/accounts/pollingDriftClientAccountSubscriber.d.ts +3 -3
  22. package/lib/browser/accounts/pollingDriftClientAccountSubscriber.js +2 -2
  23. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +3 -3
  24. package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +1 -1
  25. package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +2 -2
  26. package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +2 -2
  27. package/lib/browser/accounts/pollingUserAccountSubscriber.js +2 -2
  28. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +3 -3
  29. package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +1 -1
  30. package/lib/browser/accounts/testBulkAccountLoader.js +3 -5
  31. package/lib/browser/accounts/types.d.ts +11 -14
  32. package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +3 -3
  33. package/lib/browser/accounts/webSocketAccountSubscriber.js +1 -2
  34. package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +3 -3
  35. package/lib/browser/accounts/webSocketDriftClientAccountSubscriber.d.ts +5 -5
  36. package/lib/browser/accounts/webSocketDriftClientAccountSubscriber.js +2 -2
  37. package/lib/browser/accounts/webSocketDriftClientAccountSubscriberV2.d.ts +3 -3
  38. package/lib/browser/accounts/webSocketDriftClientAccountSubscriberV2.js +2 -2
  39. package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +3 -3
  40. package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +3 -3
  41. package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -3
  42. package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -3
  43. package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +3 -3
  44. package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +3 -3
  45. package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +2 -2
  46. package/lib/browser/addresses/pda.d.ts +6 -2
  47. package/lib/browser/addresses/pda.js +7 -12
  48. package/lib/browser/adminClient.d.ts +11 -9
  49. package/lib/browser/adminClient.js +30 -72
  50. package/lib/browser/auctionSubscriber/auctionSubscriber.js +1 -1
  51. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +1 -1
  52. package/lib/browser/config.d.ts +7 -3
  53. package/lib/browser/config.js +9 -7
  54. package/lib/browser/constants/index.d.ts +5 -0
  55. package/lib/browser/constants/index.js +5 -0
  56. package/lib/browser/constants/numericConstants.d.ts +1 -1
  57. package/lib/browser/constants/numericConstants.js +3 -3
  58. package/lib/browser/constants/perpMarkets.js +3 -412
  59. package/lib/browser/constants/spotMarkets.js +7 -91
  60. package/lib/browser/constituentMap/constituentMap.js +2 -2
  61. package/lib/browser/constituentMap/pollingConstituentAccountSubscriber.d.ts +3 -3
  62. package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.d.ts +3 -3
  63. package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.js +1 -1
  64. package/lib/browser/decode/customCoder.d.ts +7 -9
  65. package/lib/browser/decode/customCoder.js +17 -28
  66. package/lib/browser/decode/user.js +7 -25
  67. package/lib/browser/dlob/DLOB.d.ts +12 -0
  68. package/lib/browser/dlob/DLOB.js +12 -0
  69. package/lib/browser/dlob/orderBookLevels.js +1 -1
  70. package/lib/browser/driftClient.d.ts +32 -59
  71. package/lib/browser/driftClient.js +85 -562
  72. package/lib/browser/driftClientConfig.d.ts +7 -0
  73. package/lib/browser/events/eventSubscriber.d.ts +8 -0
  74. package/lib/browser/events/eventSubscriber.js +5 -2
  75. package/lib/browser/events/parse.d.ts +1 -1
  76. package/lib/browser/factory/oracleClient.d.ts +2 -2
  77. package/lib/browser/factory/oracleClient.js +9 -21
  78. package/lib/browser/idl/drift.d.ts +21406 -0
  79. package/lib/browser/idl/drift.js +2 -0
  80. package/lib/browser/idl/drift.json +20850 -15287
  81. package/lib/browser/idl/pyth.d.ts +97 -0
  82. package/lib/browser/idl/pyth.js +2 -0
  83. package/lib/browser/idl/token_faucet.d.ts +197 -0
  84. package/lib/browser/idl/token_faucet.js +2 -0
  85. package/lib/browser/idl/token_faucet.json +148 -61
  86. package/lib/browser/index.d.ts +13 -6
  87. package/lib/browser/index.js +12 -5
  88. package/lib/browser/marinade/index.d.ts +1 -1
  89. package/lib/browser/marinade/index.js +2 -2
  90. package/lib/browser/math/amm.d.ts +4 -5
  91. package/lib/browser/math/amm.js +8 -35
  92. package/lib/browser/math/funding.js +6 -1
  93. package/lib/browser/math/margin.d.ts +3 -4
  94. package/lib/browser/math/margin.js +16 -47
  95. package/lib/browser/math/market.d.ts +2 -2
  96. package/lib/browser/math/market.js +10 -42
  97. package/lib/browser/math/oracles.js +14 -19
  98. package/lib/browser/math/position.js +1 -1
  99. package/lib/browser/math/trade.js +4 -4
  100. package/lib/browser/memcmp.js +8 -8
  101. package/lib/browser/openbook/openbookV2Subscriber.d.ts +1 -1
  102. package/lib/browser/openbook/openbookV2Subscriber.js +3 -3
  103. package/lib/browser/oracles/oracleClientCache.d.ts +2 -2
  104. package/lib/browser/oracles/prelaunchOracleClient.d.ts +2 -2
  105. package/lib/browser/oracles/prelaunchOracleClient.js +1 -1
  106. package/lib/browser/oracles/pythLazerClient.js +3 -5
  107. package/lib/browser/oracles/types.d.ts +6 -0
  108. package/lib/browser/orderParams.d.ts +0 -1
  109. package/lib/browser/orderParams.js +1 -5
  110. package/lib/browser/orderSubscriber/OrderSubscriber.js +3 -4
  111. package/lib/browser/orderSubscriber/WebsocketSubscription.js +1 -1
  112. package/lib/browser/orderSubscriber/grpcSubscription.js +2 -2
  113. package/lib/browser/orderSubscriber/index.d.ts +5 -0
  114. package/lib/browser/orderSubscriber/index.js +5 -0
  115. package/lib/browser/priorityFee/index.d.ts +5 -0
  116. package/lib/browser/priorityFee/index.js +5 -0
  117. package/lib/browser/pyth/index.d.ts +2 -2
  118. package/lib/browser/pyth/types.d.ts +1 -1
  119. package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.js +1 -1
  120. package/lib/browser/swift/index.d.ts +7 -0
  121. package/lib/browser/swift/index.js +7 -0
  122. package/lib/browser/swift/signedMsgUserAccountSubscriber.js +4 -3
  123. package/lib/browser/tokenFaucet.d.ts +2 -2
  124. package/lib/browser/tokenFaucet.js +4 -4
  125. package/lib/browser/tx/txHandler.d.ts +12 -0
  126. package/lib/browser/tx/txHandler.js +12 -0
  127. package/lib/browser/types.d.ts +19 -31
  128. package/lib/browser/types.js +6 -11
  129. package/lib/browser/user.d.ts +27 -18
  130. package/lib/browser/user.js +64 -100
  131. package/lib/browser/userMap/WebsocketSubscription.js +1 -1
  132. package/lib/browser/userMap/grpcSubscription.js +1 -1
  133. package/lib/browser/userMap/revenueShareEscrowMap.js +4 -4
  134. package/lib/browser/userMap/userMap.js +4 -5
  135. package/lib/browser/userMap/userStatsMap.js +2 -3
  136. package/lib/browser/userStats.d.ts +5 -0
  137. package/lib/node/accounts/fetch.d.ts +6 -6
  138. package/lib/node/accounts/fetch.d.ts.map +1 -1
  139. package/lib/node/accounts/fetch.js +4 -4
  140. package/lib/node/accounts/grpcAccountSubscriber.d.ts +2 -2
  141. package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
  142. package/lib/node/accounts/grpcDriftClientAccountSubscriber.d.ts +2 -2
  143. package/lib/node/accounts/grpcDriftClientAccountSubscriber.d.ts.map +1 -1
  144. package/lib/node/accounts/grpcDriftClientAccountSubscriberV2.d.ts +3 -3
  145. package/lib/node/accounts/grpcDriftClientAccountSubscriberV2.d.ts.map +1 -1
  146. package/lib/node/accounts/grpcDriftClientAccountSubscriberV2.js +2 -2
  147. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +2 -2
  148. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  149. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +2 -2
  150. package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
  151. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -2
  152. package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
  153. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +2 -2
  154. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
  155. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +2 -2
  156. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
  157. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +2 -2
  158. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
  159. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +2 -2
  160. package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
  161. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +3 -3
  162. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
  163. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +3 -3
  164. package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
  165. package/lib/node/accounts/pollingDriftClientAccountSubscriber.d.ts +3 -3
  166. package/lib/node/accounts/pollingDriftClientAccountSubscriber.d.ts.map +1 -1
  167. package/lib/node/accounts/pollingDriftClientAccountSubscriber.js +2 -2
  168. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +3 -3
  169. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  170. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +1 -1
  171. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +2 -2
  172. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
  173. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +2 -2
  174. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
  175. package/lib/node/accounts/pollingUserAccountSubscriber.js +2 -2
  176. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +3 -3
  177. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
  178. package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +1 -1
  179. package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
  180. package/lib/node/accounts/testBulkAccountLoader.js +3 -5
  181. package/lib/node/accounts/types.d.ts +11 -14
  182. package/lib/node/accounts/types.d.ts.map +1 -1
  183. package/lib/node/accounts/webSocketAccountSubscriber.d.ts +3 -3
  184. package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
  185. package/lib/node/accounts/webSocketAccountSubscriber.js +1 -2
  186. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +3 -3
  187. package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
  188. package/lib/node/accounts/webSocketDriftClientAccountSubscriber.d.ts +5 -5
  189. package/lib/node/accounts/webSocketDriftClientAccountSubscriber.d.ts.map +1 -1
  190. package/lib/node/accounts/webSocketDriftClientAccountSubscriber.js +2 -2
  191. package/lib/node/accounts/webSocketDriftClientAccountSubscriberV2.d.ts +3 -3
  192. package/lib/node/accounts/webSocketDriftClientAccountSubscriberV2.d.ts.map +1 -1
  193. package/lib/node/accounts/webSocketDriftClientAccountSubscriberV2.js +2 -2
  194. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +3 -3
  195. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
  196. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +3 -3
  197. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
  198. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -3
  199. package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
  200. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -3
  201. package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
  202. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +3 -3
  203. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
  204. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +3 -3
  205. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
  206. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +2 -2
  207. package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
  208. package/lib/node/addresses/pda.d.ts +6 -2
  209. package/lib/node/addresses/pda.d.ts.map +1 -1
  210. package/lib/node/addresses/pda.js +7 -12
  211. package/lib/node/adminClient.d.ts +11 -9
  212. package/lib/node/adminClient.d.ts.map +1 -1
  213. package/lib/node/adminClient.js +30 -72
  214. package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
  215. package/lib/node/auctionSubscriber/auctionSubscriber.js +1 -1
  216. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
  217. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +1 -1
  218. package/lib/node/config.d.ts +7 -3
  219. package/lib/node/config.d.ts.map +1 -1
  220. package/lib/node/config.js +9 -7
  221. package/lib/node/constants/index.d.ts +5 -0
  222. package/lib/node/constants/index.d.ts.map +1 -1
  223. package/lib/node/constants/index.js +5 -0
  224. package/lib/node/constants/numericConstants.d.ts +1 -1
  225. package/lib/node/constants/numericConstants.d.ts.map +1 -1
  226. package/lib/node/constants/numericConstants.js +3 -3
  227. package/lib/node/constants/perpMarkets.d.ts.map +1 -1
  228. package/lib/node/constants/perpMarkets.js +3 -412
  229. package/lib/node/constants/spotMarkets.d.ts.map +1 -1
  230. package/lib/node/constants/spotMarkets.js +7 -91
  231. package/lib/node/constituentMap/constituentMap.d.ts.map +1 -1
  232. package/lib/node/constituentMap/constituentMap.js +2 -2
  233. package/lib/node/constituentMap/pollingConstituentAccountSubscriber.d.ts +3 -3
  234. package/lib/node/constituentMap/pollingConstituentAccountSubscriber.d.ts.map +1 -1
  235. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts +3 -3
  236. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts.map +1 -1
  237. package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.js +1 -1
  238. package/lib/node/decode/customCoder.d.ts +7 -9
  239. package/lib/node/decode/customCoder.d.ts.map +1 -1
  240. package/lib/node/decode/customCoder.js +17 -28
  241. package/lib/node/decode/user.d.ts.map +1 -1
  242. package/lib/node/decode/user.js +7 -25
  243. package/lib/node/dlob/DLOB.d.ts +12 -0
  244. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  245. package/lib/node/dlob/DLOB.js +12 -0
  246. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  247. package/lib/node/dlob/orderBookLevels.js +1 -1
  248. package/lib/node/driftClient.d.ts +32 -59
  249. package/lib/node/driftClient.d.ts.map +1 -1
  250. package/lib/node/driftClient.js +85 -562
  251. package/lib/node/driftClientConfig.d.ts +7 -0
  252. package/lib/node/driftClientConfig.d.ts.map +1 -1
  253. package/lib/node/events/eventSubscriber.d.ts +8 -0
  254. package/lib/node/events/eventSubscriber.d.ts.map +1 -1
  255. package/lib/node/events/eventSubscriber.js +5 -2
  256. package/lib/node/events/parse.d.ts +1 -1
  257. package/lib/node/events/parse.d.ts.map +1 -1
  258. package/lib/node/factory/oracleClient.d.ts +2 -2
  259. package/lib/node/factory/oracleClient.d.ts.map +1 -1
  260. package/lib/node/factory/oracleClient.js +9 -21
  261. package/lib/node/idl/drift.d.ts +21407 -0
  262. package/lib/node/idl/drift.d.ts.map +1 -0
  263. package/lib/node/idl/drift.js +2 -0
  264. package/lib/node/idl/drift.json +20850 -15287
  265. package/lib/node/idl/pyth.d.ts +98 -0
  266. package/lib/node/idl/pyth.d.ts.map +1 -0
  267. package/lib/node/idl/pyth.js +2 -0
  268. package/lib/node/idl/token_faucet.d.ts +198 -0
  269. package/lib/node/idl/token_faucet.d.ts.map +1 -0
  270. package/lib/node/idl/token_faucet.js +2 -0
  271. package/lib/node/idl/token_faucet.json +148 -61
  272. package/lib/node/index.d.ts +13 -6
  273. package/lib/node/index.d.ts.map +1 -1
  274. package/lib/node/index.js +12 -5
  275. package/lib/node/marinade/index.d.ts +1 -1
  276. package/lib/node/marinade/index.d.ts.map +1 -1
  277. package/lib/node/marinade/index.js +2 -2
  278. package/lib/node/math/amm.d.ts +4 -5
  279. package/lib/node/math/amm.d.ts.map +1 -1
  280. package/lib/node/math/amm.js +8 -35
  281. package/lib/node/math/funding.d.ts.map +1 -1
  282. package/lib/node/math/funding.js +6 -1
  283. package/lib/node/math/margin.d.ts +3 -4
  284. package/lib/node/math/margin.d.ts.map +1 -1
  285. package/lib/node/math/margin.js +16 -47
  286. package/lib/node/math/market.d.ts +2 -2
  287. package/lib/node/math/market.d.ts.map +1 -1
  288. package/lib/node/math/market.js +10 -42
  289. package/lib/node/math/oracles.d.ts.map +1 -1
  290. package/lib/node/math/oracles.js +14 -19
  291. package/lib/node/math/position.d.ts.map +1 -1
  292. package/lib/node/math/position.js +1 -1
  293. package/lib/node/math/trade.d.ts.map +1 -1
  294. package/lib/node/math/trade.js +4 -4
  295. package/lib/node/memcmp.js +8 -8
  296. package/lib/node/openbook/openbookV2Subscriber.d.ts +1 -1
  297. package/lib/node/openbook/openbookV2Subscriber.d.ts.map +1 -1
  298. package/lib/node/openbook/openbookV2Subscriber.js +3 -3
  299. package/lib/node/oracles/oracleClientCache.d.ts +2 -2
  300. package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
  301. package/lib/node/oracles/prelaunchOracleClient.d.ts +2 -2
  302. package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
  303. package/lib/node/oracles/prelaunchOracleClient.js +1 -1
  304. package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
  305. package/lib/node/oracles/pythLazerClient.js +3 -5
  306. package/lib/node/oracles/types.d.ts +6 -0
  307. package/lib/node/oracles/types.d.ts.map +1 -1
  308. package/lib/node/orderParams.d.ts +0 -1
  309. package/lib/node/orderParams.d.ts.map +1 -1
  310. package/lib/node/orderParams.js +1 -5
  311. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  312. package/lib/node/orderSubscriber/OrderSubscriber.js +3 -4
  313. package/lib/node/orderSubscriber/WebsocketSubscription.js +1 -1
  314. package/lib/node/orderSubscriber/grpcSubscription.js +2 -2
  315. package/lib/node/orderSubscriber/index.d.ts +5 -0
  316. package/lib/node/orderSubscriber/index.d.ts.map +1 -1
  317. package/lib/node/orderSubscriber/index.js +5 -0
  318. package/lib/node/priorityFee/index.d.ts +5 -0
  319. package/lib/node/priorityFee/index.d.ts.map +1 -1
  320. package/lib/node/priorityFee/index.js +5 -0
  321. package/lib/node/pyth/index.d.ts +2 -2
  322. package/lib/node/pyth/index.d.ts.map +1 -1
  323. package/lib/node/pyth/types.d.ts +1 -1
  324. package/lib/node/pyth/types.d.ts.map +1 -1
  325. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.js +1 -1
  326. package/lib/node/swift/index.d.ts +7 -0
  327. package/lib/node/swift/index.d.ts.map +1 -1
  328. package/lib/node/swift/index.js +7 -0
  329. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts.map +1 -1
  330. package/lib/node/swift/signedMsgUserAccountSubscriber.js +4 -3
  331. package/lib/node/tokenFaucet.d.ts +2 -2
  332. package/lib/node/tokenFaucet.d.ts.map +1 -1
  333. package/lib/node/tokenFaucet.js +4 -4
  334. package/lib/node/tx/txHandler.d.ts +12 -0
  335. package/lib/node/tx/txHandler.d.ts.map +1 -1
  336. package/lib/node/tx/txHandler.js +12 -0
  337. package/lib/node/types.d.ts +19 -31
  338. package/lib/node/types.d.ts.map +1 -1
  339. package/lib/node/types.js +6 -11
  340. package/lib/node/user.d.ts +27 -18
  341. package/lib/node/user.d.ts.map +1 -1
  342. package/lib/node/user.js +64 -100
  343. package/lib/node/userMap/WebsocketSubscription.js +1 -1
  344. package/lib/node/userMap/grpcSubscription.js +1 -1
  345. package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
  346. package/lib/node/userMap/revenueShareEscrowMap.js +4 -4
  347. package/lib/node/userMap/userMap.d.ts.map +1 -1
  348. package/lib/node/userMap/userMap.js +4 -5
  349. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  350. package/lib/node/userMap/userStatsMap.js +2 -3
  351. package/lib/node/userStats.d.ts +5 -0
  352. package/lib/node/userStats.d.ts.map +1 -1
  353. package/package.json +5 -7
  354. package/src/accounts/fetch.ts +18 -17
  355. package/src/accounts/grpcAccountSubscriber.ts +3 -3
  356. package/src/accounts/grpcDriftClientAccountSubscriber.ts +2 -3
  357. package/src/accounts/grpcDriftClientAccountSubscriberV2.ts +5 -6
  358. package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +2 -2
  359. package/src/accounts/grpcMultiAccountSubscriber.ts +4 -4
  360. package/src/accounts/grpcMultiUserAccountSubscriber.ts +4 -4
  361. package/src/accounts/grpcProgramAccountSubscriber.ts +3 -3
  362. package/src/accounts/grpcUserAccountSubscriber.ts +2 -2
  363. package/src/accounts/grpcUserStatsAccountSubscriber.ts +2 -2
  364. package/src/accounts/laserProgramAccountSubscriber.ts +3 -3
  365. package/src/accounts/oneShotUserAccountSubscriber.ts +6 -7
  366. package/src/accounts/oneShotUserStatsAccountSubscriber.ts +10 -9
  367. package/src/accounts/pollingDriftClientAccountSubscriber.ts +12 -11
  368. package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +11 -10
  369. package/src/accounts/pollingOracleAccountSubscriber.ts +2 -2
  370. package/src/accounts/pollingTokenAccountSubscriber.ts +2 -2
  371. package/src/accounts/pollingUserAccountSubscriber.ts +2 -2
  372. package/src/accounts/pollingUserStatsAccountSubscriber.ts +14 -14
  373. package/src/accounts/testBulkAccountLoader.ts +3 -5
  374. package/src/accounts/types.ts +10 -25
  375. package/src/accounts/webSocketAccountSubscriber.ts +5 -5
  376. package/src/accounts/webSocketAccountSubscriberV2.ts +4 -3
  377. package/src/accounts/webSocketDriftClientAccountSubscriber.ts +9 -10
  378. package/src/accounts/webSocketDriftClientAccountSubscriberV2.ts +13 -10
  379. package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +3 -3
  380. package/src/accounts/webSocketProgramAccountSubscriber.ts +4 -3
  381. package/src/accounts/webSocketProgramAccountSubscriberV2.ts +4 -3
  382. package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +4 -3
  383. package/src/accounts/webSocketUserAccountSubscriber.ts +3 -3
  384. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +3 -3
  385. package/src/accounts/websocketProgramUserAccountSubscriber.ts +4 -4
  386. package/src/addresses/pda.ts +6 -22
  387. package/src/adminClient.ts +154 -239
  388. package/src/auctionSubscriber/auctionSubscriber.ts +5 -3
  389. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +5 -3
  390. package/src/config.ts +24 -16
  391. package/src/constants/index.ts +5 -0
  392. package/src/constants/numericConstants.ts +2 -3
  393. package/src/constants/perpMarkets.ts +3 -445
  394. package/src/constants/spotMarkets.ts +7 -102
  395. package/src/constituentMap/constituentMap.ts +5 -6
  396. package/src/constituentMap/pollingConstituentAccountSubscriber.ts +3 -3
  397. package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +6 -6
  398. package/src/decode/customCoder.ts +26 -35
  399. package/src/decode/user.ts +7 -25
  400. package/src/dlob/DLOB.ts +12 -0
  401. package/src/dlob/orderBookLevels.ts +0 -1
  402. package/src/driftClient.ts +245 -1091
  403. package/src/driftClientConfig.ts +7 -0
  404. package/src/events/eventSubscriber.ts +14 -2
  405. package/src/events/parse.ts +2 -2
  406. package/src/factory/oracleClient.ts +17 -28
  407. package/src/idl/drift.json +20850 -15287
  408. package/src/idl/drift.ts +21406 -0
  409. package/src/idl/pyth.ts +97 -0
  410. package/src/idl/token_faucet.json +148 -61
  411. package/src/idl/token_faucet.ts +197 -0
  412. package/src/index.ts +13 -12
  413. package/src/margin/README.md +0 -1
  414. package/src/marinade/index.ts +2 -2
  415. package/src/math/amm.ts +2 -48
  416. package/src/math/funding.ts +8 -3
  417. package/src/math/margin.ts +12 -67
  418. package/src/math/market.ts +15 -69
  419. package/src/math/oracles.ts +14 -30
  420. package/src/math/position.ts +0 -1
  421. package/src/math/trade.ts +0 -4
  422. package/src/memcmp.ts +1 -1
  423. package/src/openbook/openbookV2Subscriber.ts +1 -1
  424. package/src/oracles/oracleClientCache.ts +2 -2
  425. package/src/oracles/prelaunchOracleClient.ts +9 -8
  426. package/src/oracles/pythLazerClient.ts +10 -12
  427. package/src/oracles/types.ts +6 -0
  428. package/src/orderParams.ts +0 -5
  429. package/src/orderSubscriber/OrderSubscriber.ts +7 -6
  430. package/src/orderSubscriber/WebsocketSubscription.ts +1 -1
  431. package/src/orderSubscriber/grpcSubscription.ts +2 -2
  432. package/src/orderSubscriber/index.ts +5 -0
  433. package/src/priorityFee/index.ts +5 -0
  434. package/src/pyth/index.ts +4 -4
  435. package/src/pyth/types.ts +1 -1
  436. package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +1 -1
  437. package/src/swift/index.ts +7 -0
  438. package/src/swift/signedMsgUserAccountSubscriber.ts +7 -4
  439. package/src/tokenFaucet.ts +8 -4
  440. package/src/tx/txHandler.ts +12 -0
  441. package/src/types.ts +16 -20
  442. package/src/user.ts +66 -144
  443. package/src/userMap/WebsocketSubscription.ts +1 -1
  444. package/src/userMap/grpcSubscription.ts +1 -1
  445. package/src/userMap/revenueShareEscrowMap.ts +24 -20
  446. package/src/userMap/userMap.ts +8 -7
  447. package/src/userMap/userStatsMap.ts +6 -5
  448. package/src/userStats.ts +5 -0
  449. package/tests/accounts/customizedCadenceBulkAccountLoader.test.ts +5 -4
  450. package/tests/amm/test.ts +45 -64
  451. package/tests/ci/verifyConstants.ts +23 -26
  452. package/tests/decode/test.ts +2 -4
  453. package/tests/dlob/helpers.ts +8 -15
  454. package/tests/user/helpers.ts +0 -2
  455. package/tests/user/marginCalculations.test.ts +2 -3
  456. package/tests/user/test.ts +18 -15
  457. package/lib/browser/accounts/pollingHighLeverageModeConfigAccountSubscriber.d.ts +0 -29
  458. package/lib/browser/accounts/pollingHighLeverageModeConfigAccountSubscriber.js +0 -111
  459. package/lib/browser/accounts/webSocketHighLeverageModeConfigAccountSubscriber.d.ts +0 -23
  460. package/lib/browser/accounts/webSocketHighLeverageModeConfigAccountSubscriber.js +0 -69
  461. package/lib/browser/idl/pyth_solana_receiver.json +0 -628
  462. package/lib/browser/idl/switchboard.json +0 -8354
  463. package/lib/browser/idl/switchboard_on_demand_30.json +0 -5849
  464. package/lib/browser/oracles/pythPullClient.d.ts +0 -19
  465. package/lib/browser/oracles/pythPullClient.js +0 -65
  466. package/lib/browser/oracles/switchboardClient.d.ts +0 -12
  467. package/lib/browser/oracles/switchboardClient.js +0 -40
  468. package/lib/browser/oracles/switchboardOnDemandClient.d.ts +0 -12
  469. package/lib/browser/oracles/switchboardOnDemandClient.js +0 -33
  470. package/lib/browser/util/pythOracleUtils.d.ts +0 -2
  471. package/lib/browser/util/pythOracleUtils.js +0 -15
  472. package/lib/node/accounts/pollingHighLeverageModeConfigAccountSubscriber.d.ts +0 -30
  473. package/lib/node/accounts/pollingHighLeverageModeConfigAccountSubscriber.d.ts.map +0 -1
  474. package/lib/node/accounts/pollingHighLeverageModeConfigAccountSubscriber.js +0 -111
  475. package/lib/node/accounts/webSocketHighLeverageModeConfigAccountSubscriber.d.ts +0 -24
  476. package/lib/node/accounts/webSocketHighLeverageModeConfigAccountSubscriber.d.ts.map +0 -1
  477. package/lib/node/accounts/webSocketHighLeverageModeConfigAccountSubscriber.js +0 -69
  478. package/lib/node/idl/pyth_solana_receiver.json +0 -628
  479. package/lib/node/idl/switchboard.json +0 -8354
  480. package/lib/node/idl/switchboard_on_demand_30.json +0 -5849
  481. package/lib/node/oracles/pythPullClient.d.ts +0 -20
  482. package/lib/node/oracles/pythPullClient.d.ts.map +0 -1
  483. package/lib/node/oracles/pythPullClient.js +0 -65
  484. package/lib/node/oracles/switchboardClient.d.ts +0 -13
  485. package/lib/node/oracles/switchboardClient.d.ts.map +0 -1
  486. package/lib/node/oracles/switchboardClient.js +0 -40
  487. package/lib/node/oracles/switchboardOnDemandClient.d.ts +0 -13
  488. package/lib/node/oracles/switchboardOnDemandClient.d.ts.map +0 -1
  489. package/lib/node/oracles/switchboardOnDemandClient.js +0 -33
  490. package/lib/node/util/pythOracleUtils.d.ts +0 -3
  491. package/lib/node/util/pythOracleUtils.d.ts.map +0 -1
  492. package/lib/node/util/pythOracleUtils.js +0 -15
  493. package/src/accounts/pollingHighLeverageModeConfigAccountSubscriber.ts +0 -189
  494. package/src/accounts/webSocketHighLeverageModeConfigAccountSubscriber.ts +0 -131
  495. package/src/idl/switchboard.json +0 -8354
  496. package/src/idl/switchboard_on_demand_30.json +0 -5849
  497. package/src/oracles/pythPullClient.ts +0 -112
  498. package/src/oracles/switchboardClient.ts +0 -77
  499. package/src/oracles/switchboardOnDemandClient.ts +0 -64
  500. package/src/util/pythOracleUtils.ts +0 -11
@@ -4,17 +4,17 @@ import {
4
4
  TokenAccountEvents,
5
5
  TokenAccountSubscriber,
6
6
  } from './types';
7
- import { Program } from '@coral-xyz/anchor';
8
7
  import StrictEventEmitter from 'strict-event-emitter-types';
9
8
  import { EventEmitter } from 'events';
10
9
  import { PublicKey } from '@solana/web3.js';
11
10
  import { BulkAccountLoader } from './bulkAccountLoader';
12
11
  import { Account } from '@solana/spl-token';
13
12
  import { parseTokenAccount } from '../token';
13
+ import { DriftProgram } from '../config';
14
14
 
15
15
  export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
16
16
  isSubscribed: boolean;
17
- program: Program;
17
+ program: DriftProgram;
18
18
  eventEmitter: StrictEventEmitter<EventEmitter, TokenAccountEvents>;
19
19
  publicKey: PublicKey;
20
20
 
@@ -75,7 +75,7 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
75
75
  return;
76
76
  }
77
77
 
78
- const account = this.decode('User', buffer);
78
+ const account = this.decode('user', buffer);
79
79
  this.user = { data: account, slot };
80
80
  this.eventEmitter.emit('userAccountUpdate', account);
81
81
  this.eventEmitter.emit('update');
@@ -101,7 +101,7 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
101
101
  );
102
102
  if (dataAndContext.context.slot > (this.user?.slot ?? 0)) {
103
103
  this.user = {
104
- data: this.decode('User', dataAndContext.value.data),
104
+ data: this.decode('user', dataAndContext.value.data),
105
105
  slot: dataAndContext.context.slot,
106
106
  };
107
107
  }
@@ -4,7 +4,7 @@ import {
4
4
  UserStatsAccountSubscriber,
5
5
  UserStatsAccountEvents,
6
6
  } from './types';
7
- import { Program } from '@coral-xyz/anchor';
7
+ import { DriftProgram } from '../config';
8
8
  import StrictEventEmitter from 'strict-event-emitter-types';
9
9
  import { EventEmitter } from 'events';
10
10
  import { PublicKey } from '@solana/web3.js';
@@ -15,7 +15,7 @@ export class PollingUserStatsAccountSubscriber
15
15
  implements UserStatsAccountSubscriber
16
16
  {
17
17
  isSubscribed: boolean;
18
- program: Program;
18
+ program: DriftProgram;
19
19
  eventEmitter: StrictEventEmitter<EventEmitter, UserStatsAccountEvents>;
20
20
  userStatsAccountPublicKey: PublicKey;
21
21
 
@@ -26,7 +26,7 @@ export class PollingUserStatsAccountSubscriber
26
26
  userStats?: DataAndSlot<UserStatsAccount>;
27
27
 
28
28
  public constructor(
29
- program: Program,
29
+ program: DriftProgram,
30
30
  userStatsAccountPublicKey: PublicKey,
31
31
  accountLoader: BulkAccountLoader
32
32
  ) {
@@ -74,11 +74,10 @@ export class PollingUserStatsAccountSubscriber
74
74
  return;
75
75
  }
76
76
 
77
- const account =
78
- this.program.account.userStats.coder.accounts.decodeUnchecked(
79
- 'UserStats',
80
- buffer
81
- );
77
+ const account = this.program.coder.accounts.decodeUnchecked(
78
+ 'userStats',
79
+ buffer
80
+ );
82
81
  this.userStats = { data: account, slot };
83
82
  this.eventEmitter.emit('userStatsAccountUpdate', account);
84
83
  this.eventEmitter.emit('update');
@@ -98,14 +97,15 @@ export class PollingUserStatsAccountSubscriber
98
97
 
99
98
  async fetch(): Promise<void> {
100
99
  try {
101
- const dataAndContext =
102
- await this.program.account.userStats.fetchAndContext(
103
- this.userStatsAccountPublicKey,
104
- this.accountLoader.commitment
105
- );
100
+ const dataAndContext = await (
101
+ this.program.account as any
102
+ ).userStats.fetchAndContext(
103
+ this.userStatsAccountPublicKey,
104
+ this.accountLoader.commitment
105
+ );
106
106
  if (dataAndContext.context.slot > (this.userStats?.slot ?? 0)) {
107
107
  this.userStats = {
108
- data: dataAndContext.data as UserStatsAccount,
108
+ data: dataAndContext.data as unknown as UserStatsAccount,
109
109
  slot: dataAndContext.context.slot,
110
110
  };
111
111
  }
@@ -6,28 +6,26 @@ export class TestBulkAccountLoader extends BulkAccountLoader {
6
6
  return;
7
7
  }
8
8
 
9
- const accounts = [];
10
9
  for (const accountsToLoadChunk of accountsToLoadChunks) {
11
10
  for (const accountToLoad of accountsToLoadChunk) {
12
11
  const account = await this.connection.getAccountInfoAndContext(
13
12
  accountToLoad.publicKey,
14
13
  this.commitment
15
14
  );
16
- accounts.push(account);
17
15
  const newSlot = account.context.slot;
18
16
  if (newSlot > this.mostRecentSlot) {
19
17
  this.mostRecentSlot = newSlot;
20
18
  }
21
19
 
22
20
  if (accountToLoad.callbacks.size === 0) {
23
- return;
21
+ continue;
24
22
  }
25
23
 
26
24
  const key = accountToLoad.publicKey.toBase58();
27
25
  const prev = this.bufferAndSlotMap.get(key);
28
26
 
29
27
  if (prev && newSlot < prev.slot) {
30
- return;
28
+ continue;
31
29
  }
32
30
 
33
31
  let newBuffer: Buffer | undefined = undefined;
@@ -39,7 +37,7 @@ export class TestBulkAccountLoader extends BulkAccountLoader {
39
37
  if (!prev) {
40
38
  this.bufferAndSlotMap.set(key, { slot: newSlot, buffer: newBuffer });
41
39
  this.handleAccountCallbacks(accountToLoad, newBuffer, newSlot);
42
- return;
40
+ continue;
43
41
  }
44
42
 
45
43
  const oldBuffer = prev.buffer;
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Account subscription interfaces and types.
3
+ *
4
+ * DriftClient uses a `DriftClientAccountSubscriber` (WebSocket or polling) to keep
5
+ * market, oracle, and state accounts cached in memory. `User` uses a `UserAccountSubscriber`
6
+ * for the individual User account. All subscribers implement the interfaces defined here.
7
+ *
8
+ * Implementations: `webSocketDriftClientAccountSubscriber.ts` (default),
9
+ * `pollingDriftClientAccountSubscriber.ts`, `bulkAccountLoader.ts` (batched RPC).
10
+ */
1
11
  import {
2
12
  SpotMarketAccount,
3
13
  PerpMarketAccount,
@@ -7,7 +17,6 @@ import {
7
17
  UserStatsAccount,
8
18
  InsuranceFundStake,
9
19
  ConstituentAccount,
10
- HighLeverageModeConfig,
11
20
  } from '../types';
12
21
  import StrictEventEmitter from 'strict-event-emitter-types';
13
22
  import { EventEmitter } from 'events';
@@ -248,30 +257,6 @@ export type LaserGrpcConfigs = BaseGrpcConfigs & {
248
257
 
249
258
  export type GrpcConfigs = YellowstoneGrpcConfigs | LaserGrpcConfigs;
250
259
 
251
- export interface HighLeverageModeConfigAccountSubscriber {
252
- eventEmitter: StrictEventEmitter<
253
- EventEmitter,
254
- HighLeverageModeConfigAccountEvents
255
- >;
256
- isSubscribed: boolean;
257
-
258
- subscribe(
259
- highLeverageModeConfigAccount?: HighLeverageModeConfig
260
- ): Promise<boolean>;
261
- fetch(): Promise<void>;
262
- unsubscribe(): Promise<void>;
263
-
264
- getHighLeverageModeConfigAccountAndSlot(): DataAndSlot<HighLeverageModeConfig>;
265
- }
266
-
267
- export interface HighLeverageModeConfigAccountEvents {
268
- highLeverageModeConfigAccountUpdate: (
269
- payload: HighLeverageModeConfig
270
- ) => void;
271
- update: void;
272
- error: (e: Error) => void;
273
- }
274
-
275
260
  export interface ConstituentAccountSubscriber {
276
261
  eventEmitter: StrictEventEmitter<EventEmitter, ConstituentAccountEvents>;
277
262
  isSubscribed: boolean;
@@ -4,9 +4,9 @@ import {
4
4
  AccountSubscriber,
5
5
  ResubOpts,
6
6
  } from './types';
7
- import { AnchorProvider, Program } from '@coral-xyz/anchor';
7
+ import { AnchorProvider } from '@coral-xyz/anchor';
8
8
  import { AccountInfo, Commitment, Context, PublicKey } from '@solana/web3.js';
9
- import { capitalize } from './utils';
9
+ import { DriftProgram } from '../config';
10
10
  import * as Buffer from 'buffer';
11
11
 
12
12
  export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
@@ -14,7 +14,7 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
14
14
  bufferAndSlot?: BufferAndSlot;
15
15
  accountName: string;
16
16
  logAccountName: string;
17
- program: Program;
17
+ program: DriftProgram;
18
18
  accountPublicKey: PublicKey;
19
19
  decodeBufferFn: (buffer: Buffer) => T;
20
20
  onChange: (data: T) => void;
@@ -31,7 +31,7 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
31
31
 
32
32
  public constructor(
33
33
  accountName: string,
34
- program: Program,
34
+ program: DriftProgram,
35
35
  accountPublicKey: PublicKey,
36
36
  decodeBuffer?: (buffer: Buffer) => T,
37
37
  resubOpts?: ResubOpts,
@@ -199,7 +199,7 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
199
199
  return this.decodeBufferFn(buffer);
200
200
  } else {
201
201
  return this.program.account[this.accountName].coder.accounts.decode(
202
- capitalize(this.accountName),
202
+ this.accountName,
203
203
  buffer
204
204
  );
205
205
  }
@@ -4,7 +4,8 @@ import {
4
4
  ResubOpts,
5
5
  BufferAndSlot,
6
6
  } from './types';
7
- import { AnchorProvider, Program } from '@coral-xyz/anchor';
7
+ import { AnchorProvider } from '@coral-xyz/anchor';
8
+ import { DriftProgram } from '../config';
8
9
  import { capitalize } from './utils';
9
10
  import {
10
11
  AccountInfoBase,
@@ -74,7 +75,7 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
74
75
  bufferAndSlot?: BufferAndSlot;
75
76
  accountName: string;
76
77
  logAccountName: string;
77
- program: Program;
78
+ program: DriftProgram;
78
79
  accountPublicKey: PublicKey;
79
80
  decodeBufferFn: (buffer: Buffer) => T;
80
81
  onChange: (data: T) => void;
@@ -112,7 +113,7 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
112
113
  */
113
114
  public constructor(
114
115
  accountName: string,
115
- program: Program,
116
+ program: DriftProgram,
116
117
  accountPublicKey: PublicKey,
117
118
  decodeBuffer?: (buffer: Buffer) => T,
118
119
  resubOpts?: ResubOpts,
@@ -8,7 +8,6 @@ import {
8
8
  ResubOpts,
9
9
  } from './types';
10
10
  import { PerpMarketAccount, SpotMarketAccount, StateAccount } from '../types';
11
- import { Program } from '@coral-xyz/anchor';
12
11
  import StrictEventEmitter from 'strict-event-emitter-types';
13
12
  import { EventEmitter } from 'events';
14
13
  import {
@@ -24,7 +23,7 @@ import { OracleInfo, OraclePriceData } from '../oracles/types';
24
23
  import { OracleClientCache } from '../oracles/oracleClientCache';
25
24
  import * as Buffer from 'buffer';
26
25
  import { QUOTE_ORACLE_PRICE_DATA } from '../oracles/quoteAssetOracleClient';
27
- import { findAllMarketAndOracles } from '../config';
26
+ import { findAllMarketAndOracles, DriftProgram } from '../config';
28
27
  import { findDelistedPerpMarketsAndOracles } from './utils';
29
28
  import { getOracleId } from '../oracles/oracleId';
30
29
  import { OracleSource } from '../types';
@@ -39,7 +38,7 @@ export class WebSocketDriftClientAccountSubscriber
39
38
  implements DriftClientAccountSubscriber
40
39
  {
41
40
  isSubscribed: boolean;
42
- program: Program;
41
+ program: DriftProgram;
43
42
  commitment?: Commitment;
44
43
  perpMarketIndexes: number[];
45
44
  spotMarketIndexes: number[];
@@ -71,7 +70,7 @@ export class WebSocketDriftClientAccountSubscriber
71
70
  initialOraclePriceData: Map<string, OraclePriceData>;
72
71
  customPerpMarketAccountSubscriber?: new (
73
72
  accountName: string,
74
- program: Program,
73
+ program: DriftProgram,
75
74
  accountPublicKey: PublicKey,
76
75
  decodeBuffer?: (buffer: Buffer) => any,
77
76
  resubOpts?: ResubOpts,
@@ -79,7 +78,7 @@ export class WebSocketDriftClientAccountSubscriber
79
78
  ) => AccountSubscriber<any>;
80
79
  customOracleAccountSubscriber?: new (
81
80
  accountName: string,
82
- program: Program,
81
+ program: DriftProgram,
83
82
  accountPublicKey: PublicKey,
84
83
  decodeBuffer?: (buffer: Buffer) => any,
85
84
  resubOpts?: ResubOpts,
@@ -91,7 +90,7 @@ export class WebSocketDriftClientAccountSubscriber
91
90
  protected subscriptionPromiseResolver: (val: boolean) => void;
92
91
 
93
92
  public constructor(
94
- program: Program,
93
+ program: DriftProgram,
95
94
  perpMarketIndexes: number[],
96
95
  spotMarketIndexes: number[],
97
96
  oracleInfos: OracleInfo[],
@@ -101,7 +100,7 @@ export class WebSocketDriftClientAccountSubscriber
101
100
  commitment?: Commitment,
102
101
  customPerpMarketAccountSubscriber?: new (
103
102
  accountName: string,
104
- program: Program,
103
+ program: DriftProgram,
105
104
  accountPublicKey: PublicKey,
106
105
  decodeBuffer?: (buffer: Buffer) => any,
107
106
  resubOpts?: ResubOpts,
@@ -109,7 +108,7 @@ export class WebSocketDriftClientAccountSubscriber
109
108
  ) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>,
110
109
  customOracleAccountSubscriber?: new (
111
110
  accountName: string,
112
- program: Program,
111
+ program: DriftProgram,
113
112
  accountPublicKey: PublicKey,
114
113
  decodeBuffer?: (buffer: Buffer) => any,
115
114
  resubOpts?: ResubOpts,
@@ -238,7 +237,7 @@ export class WebSocketDriftClientAccountSubscriber
238
237
  .filter((accountInfo) => !!accountInfo)
239
238
  .map((accountInfo) => {
240
239
  const perpMarket = this.program.coder.accounts.decode(
241
- 'PerpMarket',
240
+ 'perpMarket',
242
241
  accountInfo.data
243
242
  );
244
243
  return [perpMarket.marketIndex, perpMarket];
@@ -263,7 +262,7 @@ export class WebSocketDriftClientAccountSubscriber
263
262
  .filter((accountInfo) => !!accountInfo)
264
263
  .map((accountInfo) => {
265
264
  const spotMarket = this.program.coder.accounts.decode(
266
- 'SpotMarket',
265
+ 'spotMarket',
267
266
  accountInfo.data
268
267
  );
269
268
  return [spotMarket.marketIndex, spotMarket];
@@ -13,7 +13,6 @@ import {
13
13
  SpotMarketAccount,
14
14
  StateAccount,
15
15
  } from '../types';
16
- import { Program } from '@coral-xyz/anchor';
17
16
  import StrictEventEmitter from 'strict-event-emitter-types';
18
17
  import { EventEmitter } from 'events';
19
18
  import {
@@ -32,7 +31,7 @@ import {
32
31
  import { OracleInfo, OraclePriceData } from '../oracles/types';
33
32
  import { OracleClientCache } from '../oracles/oracleClientCache';
34
33
  import { QUOTE_ORACLE_PRICE_DATA } from '../oracles/quoteAssetOracleClient';
35
- import { findAllMarketAndOracles } from '../config';
34
+ import { DriftProgram, findAllMarketAndOracles } from '../config';
36
35
  import { findDelistedPerpMarketsAndOracles } from './utils';
37
36
  import {
38
37
  getOracleId,
@@ -54,7 +53,7 @@ export class WebSocketDriftClientAccountSubscriberV2
54
53
  implements DriftClientAccountSubscriber
55
54
  {
56
55
  isSubscribed: boolean;
57
- program: Program;
56
+ program: DriftProgram;
58
57
  commitment?: Commitment;
59
58
  perpMarketIndexes: number[];
60
59
  spotMarketIndexes: number[];
@@ -97,7 +96,7 @@ export class WebSocketDriftClientAccountSubscriberV2
97
96
  string;
98
97
 
99
98
  public constructor(
100
- program: Program,
99
+ program: DriftProgram,
101
100
  perpMarketIndexes: number[],
102
101
  spotMarketIndexes: number[],
103
102
  oracleInfos: OracleInfo[],
@@ -203,10 +202,12 @@ export class WebSocketDriftClientAccountSubscriberV2
203
202
  this.perpMarketAllAccountsSubscriber =
204
203
  new WebSocketProgramAccountsSubscriberV2<PerpMarketAccount>(
205
204
  'PerpMarketAccountsSubscriber',
206
- 'PerpMarket',
205
+ 'perpMarket',
207
206
  this.program,
208
- this.program.account.perpMarket.coder.accounts.decodeUnchecked.bind(
209
- this.program.account.perpMarket.coder.accounts
207
+ (
208
+ this.program.account as any
209
+ ).perpMarket.coder.accounts.decodeUnchecked.bind(
210
+ (this.program.account as any).perpMarket.coder.accounts
210
211
  ),
211
212
  {
212
213
  filters: [getPerpMarketAccountsFilter()],
@@ -219,10 +220,12 @@ export class WebSocketDriftClientAccountSubscriberV2
219
220
  this.spotMarketAllAccountsSubscriber =
220
221
  new WebSocketProgramAccountsSubscriberV2<SpotMarketAccount>(
221
222
  'SpotMarketAccountsSubscriber',
222
- 'SpotMarket',
223
+ 'spotMarket',
223
224
  this.program,
224
- this.program.account.spotMarket.coder.accounts.decodeUnchecked.bind(
225
- this.program.account.spotMarket.coder.accounts
225
+ (
226
+ this.program.account as any
227
+ ).spotMarket.coder.accounts.decodeUnchecked.bind(
228
+ (this.program.account as any).spotMarket.coder.accounts
226
229
  ),
227
230
  {
228
231
  filters: [getSpotMarketAccountsFilter()],
@@ -5,12 +5,12 @@ import {
5
5
  InsuranceFundStakeAccountEvents,
6
6
  InsuranceFundStakeAccountSubscriber,
7
7
  } from './types';
8
- import { Program } from '@coral-xyz/anchor';
9
8
  import StrictEventEmitter from 'strict-event-emitter-types';
10
9
  import { EventEmitter } from 'events';
11
10
  import { Commitment, PublicKey } from '@solana/web3.js';
12
11
  import { WebSocketAccountSubscriber } from './webSocketAccountSubscriber';
13
12
  import { InsuranceFundStake } from '../types';
13
+ import { DriftProgram } from '../config';
14
14
 
15
15
  export class WebSocketInsuranceFundStakeAccountSubscriber
16
16
  implements InsuranceFundStakeAccountSubscriber
@@ -18,7 +18,7 @@ export class WebSocketInsuranceFundStakeAccountSubscriber
18
18
  isSubscribed: boolean;
19
19
  resubTimeoutMs?: number;
20
20
  commitment?: Commitment;
21
- program: Program;
21
+ program: DriftProgram;
22
22
  eventEmitter: StrictEventEmitter<
23
23
  EventEmitter,
24
24
  InsuranceFundStakeAccountEvents
@@ -28,7 +28,7 @@ export class WebSocketInsuranceFundStakeAccountSubscriber
28
28
  insuranceFundStakeDataAccountSubscriber: AccountSubscriber<InsuranceFundStake>;
29
29
 
30
30
  public constructor(
31
- program: Program,
31
+ program: DriftProgram,
32
32
  insuranceFundStakeAccountPublicKey: PublicKey,
33
33
  resubTimeoutMs?: number,
34
34
  commitment?: Commitment
@@ -1,5 +1,5 @@
1
1
  import { BufferAndSlot, ProgramAccountSubscriber, ResubOpts } from './types';
2
- import { AnchorProvider, Program } from '@coral-xyz/anchor';
2
+ import { AnchorProvider } from '@coral-xyz/anchor';
3
3
  import {
4
4
  Commitment,
5
5
  Context,
@@ -7,6 +7,7 @@ import {
7
7
  MemcmpFilter,
8
8
  PublicKey,
9
9
  } from '@solana/web3.js';
10
+ import { DriftProgram } from '../config';
10
11
  import * as Buffer from 'buffer';
11
12
 
12
13
  export class WebSocketProgramAccountSubscriber<T>
@@ -16,7 +17,7 @@ export class WebSocketProgramAccountSubscriber<T>
16
17
  accountDiscriminator: string;
17
18
  bufferAndSlot?: BufferAndSlot;
18
19
  bufferAndSlotMap: Map<string, BufferAndSlot> = new Map();
19
- program: Program;
20
+ program: DriftProgram;
20
21
  decodeBuffer: (accountName: string, ix: Buffer) => T;
21
22
  onChange: (
22
23
  accountId: PublicKey,
@@ -35,7 +36,7 @@ export class WebSocketProgramAccountSubscriber<T>
35
36
  public constructor(
36
37
  subscriptionName: string,
37
38
  accountDiscriminator: string,
38
- program: Program,
39
+ program: DriftProgram,
39
40
  decodeBufferFn: (accountName: string, ix: Buffer) => T,
40
41
  options: { filters: MemcmpFilter[]; commitment?: Commitment } = {
41
42
  filters: [],
@@ -1,5 +1,6 @@
1
1
  import { BufferAndSlot, ProgramAccountSubscriber, ResubOpts } from './types';
2
- import { AnchorProvider, Program } from '@coral-xyz/anchor';
2
+ import { AnchorProvider } from '@coral-xyz/anchor';
3
+ import { DriftProgram } from '../config';
3
4
  import { Commitment, Context, MemcmpFilter, PublicKey } from '@solana/web3.js';
4
5
  import {
5
6
  AccountInfoBase,
@@ -98,7 +99,7 @@ export class WebSocketProgramAccountsSubscriberV2<T>
98
99
  subscriptionName: string;
99
100
  accountDiscriminator: string;
100
101
  bufferAndSlotMap: Map<string, BufferAndSlot> = new Map();
101
- program: Program;
102
+ program: DriftProgram;
102
103
  decodeBuffer: (accountName: string, ix: Buffer) => T;
103
104
  onChange: (
104
105
  accountId: PublicKey,
@@ -142,7 +143,7 @@ export class WebSocketProgramAccountsSubscriberV2<T>
142
143
  public constructor(
143
144
  subscriptionName: string,
144
145
  accountDiscriminator: string,
145
- program: Program,
146
+ program: DriftProgram,
146
147
  decodeBufferFn: (accountName: string, ix: Buffer) => T,
147
148
  options: { filters: MemcmpFilter[]; commitment?: Commitment } = {
148
149
  filters: [],
@@ -1,5 +1,6 @@
1
1
  import { BufferAndSlot, ProgramAccountSubscriber, ResubOpts } from './types';
2
- import { AnchorProvider, Program } from '@coral-xyz/anchor';
2
+ import { AnchorProvider } from '@coral-xyz/anchor';
3
+ import { DriftProgram } from '../config';
3
4
  import { Commitment, Context, MemcmpFilter, PublicKey } from '@solana/web3.js';
4
5
  import {
5
6
  AccountInfoBase,
@@ -98,7 +99,7 @@ export class WebSocketProgramAccountsSubscriberV2<T>
98
99
  subscriptionName: string;
99
100
  accountDiscriminator: string;
100
101
  bufferAndSlotMap: Map<string, BufferAndSlot> = new Map();
101
- program: Program;
102
+ program: DriftProgram;
102
103
  decodeBuffer: (accountName: string, ix: Buffer) => T;
103
104
  onChange: (
104
105
  accountId: PublicKey,
@@ -142,7 +143,7 @@ export class WebSocketProgramAccountsSubscriberV2<T>
142
143
  public constructor(
143
144
  subscriptionName: string,
144
145
  accountDiscriminator: string,
145
- program: Program,
146
+ program: DriftProgram,
146
147
  decodeBufferFn: (accountName: string, ix: Buffer) => T,
147
148
  options: { filters: MemcmpFilter[]; commitment?: Commitment } = {
148
149
  filters: [],
@@ -6,7 +6,7 @@ import {
6
6
  UserAccountSubscriber,
7
7
  ResubOpts,
8
8
  } from './types';
9
- import { Program } from '@coral-xyz/anchor';
9
+ import { DriftProgram } from '../config';
10
10
  import StrictEventEmitter from 'strict-event-emitter-types';
11
11
  import { EventEmitter } from 'events';
12
12
  import { Commitment, PublicKey } from '@solana/web3.js';
@@ -17,14 +17,14 @@ export class WebSocketUserAccountSubscriber implements UserAccountSubscriber {
17
17
  isSubscribed: boolean;
18
18
  resubOpts?: ResubOpts;
19
19
  commitment?: Commitment;
20
- program: Program;
20
+ program: DriftProgram;
21
21
  eventEmitter: StrictEventEmitter<EventEmitter, UserAccountEvents>;
22
22
  userAccountPublicKey: PublicKey;
23
23
 
24
24
  userDataAccountSubscriber: AccountSubscriber<UserAccount>;
25
25
 
26
26
  public constructor(
27
- program: Program,
27
+ program: DriftProgram,
28
28
  userAccountPublicKey: PublicKey,
29
29
  resubOpts?: ResubOpts,
30
30
  commitment?: Commitment
@@ -6,7 +6,7 @@ import {
6
6
  UserStatsAccountEvents,
7
7
  ResubOpts,
8
8
  } from './types';
9
- import { Program } from '@coral-xyz/anchor';
9
+ import { DriftProgram } from '../config';
10
10
  import StrictEventEmitter from 'strict-event-emitter-types';
11
11
  import { EventEmitter } from 'events';
12
12
  import { Commitment, PublicKey } from '@solana/web3.js';
@@ -19,14 +19,14 @@ export class WebSocketUserStatsAccountSubscriber
19
19
  isSubscribed: boolean;
20
20
  resubOpts?: ResubOpts;
21
21
  commitment?: Commitment;
22
- program: Program;
22
+ program: DriftProgram;
23
23
  eventEmitter: StrictEventEmitter<EventEmitter, UserStatsAccountEvents>;
24
24
  userStatsAccountPublicKey: PublicKey;
25
25
 
26
26
  userStatsAccountSubscriber: AccountSubscriber<UserStatsAccount>;
27
27
 
28
28
  public constructor(
29
- program: Program,
29
+ program: DriftProgram,
30
30
  userStatsAccountPublicKey: PublicKey,
31
31
  resubOpts?: ResubOpts,
32
32
  commitment?: Commitment
@@ -4,7 +4,7 @@ import {
4
4
  UserAccountEvents,
5
5
  UserAccountSubscriber,
6
6
  } from './types';
7
- import { Program } from '@coral-xyz/anchor';
7
+ import { DriftProgram } from '../config';
8
8
  import StrictEventEmitter from 'strict-event-emitter-types';
9
9
  import { EventEmitter } from 'events';
10
10
  import { Context, PublicKey } from '@solana/web3.js';
@@ -18,12 +18,12 @@ export class WebSocketProgramUserAccountSubscriber
18
18
  eventEmitter: StrictEventEmitter<EventEmitter, UserAccountEvents>;
19
19
 
20
20
  private userAccountPublicKey: PublicKey;
21
- private program: Program;
21
+ private program: DriftProgram;
22
22
  private programSubscriber: WebSocketProgramAccountSubscriber<UserAccount>;
23
23
  private userAccountAndSlot?: DataAndSlot<UserAccount>;
24
24
 
25
25
  public constructor(
26
- program: Program,
26
+ program: DriftProgram,
27
27
  userAccountPublicKey: PublicKey,
28
28
  programSubscriber: WebSocketProgramAccountSubscriber<UserAccount>
29
29
  ) {
@@ -66,7 +66,7 @@ export class WebSocketProgramUserAccountSubscriber
66
66
  );
67
67
  }
68
68
 
69
- const account = await this.program.account.user.fetch(
69
+ const account = await (this.program.account as any).user.fetch(
70
70
  this.userAccountPublicKey
71
71
  );
72
72
  this.updateData(account as UserAccount, 0);
@@ -1,3 +1,9 @@
1
+ /**
2
+ * PDA derivation helpers for all Drift protocol accounts.
3
+ * Covers: User, UserStats, PerpMarket, SpotMarket, InsuranceFundStake,
4
+ * ProtectedMakerModeConfig, HighLeverageModeConfig, State, and vault PDAs.
5
+ * All functions are pure (no RPC calls).
6
+ */
1
7
  import { PublicKey } from '@solana/web3.js';
2
8
  import * as anchor from '@coral-xyz/anchor';
3
9
  import { BN } from '@coral-xyz/anchor';
@@ -323,19 +329,6 @@ export function getPrelaunchOraclePublicKey(
323
329
  )[0];
324
330
  }
325
331
 
326
- export function getPythPullOraclePublicKey(
327
- progarmId: PublicKey,
328
- feedId: Uint8Array
329
- ): PublicKey {
330
- return PublicKey.findProgramAddressSync(
331
- [
332
- Buffer.from(anchor.utils.bytes.utf8.encode('pyth_pull')),
333
- Buffer.from(feedId),
334
- ],
335
- progarmId
336
- )[0];
337
- }
338
-
339
332
  export function getPythLazerOraclePublicKey(
340
333
  progarmId: PublicKey,
341
334
  feedId: number
@@ -362,15 +355,6 @@ export function getTokenProgramForSpotMarket(
362
355
  return TOKEN_PROGRAM_ID;
363
356
  }
364
357
 
365
- export function getHighLeverageModeConfigPublicKey(
366
- programId: PublicKey
367
- ): PublicKey {
368
- return PublicKey.findProgramAddressSync(
369
- [Buffer.from(anchor.utils.bytes.utf8.encode('high_leverage_mode_config'))],
370
- programId
371
- )[0];
372
- }
373
-
374
358
  export function getProtectedMakerModeConfigPublicKey(
375
359
  programId: PublicKey
376
360
  ): PublicKey {