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

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 +25708 -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 +25709 -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 +25708 -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
package/src/user.ts CHANGED
@@ -1,3 +1,16 @@
1
+ /**
2
+ * User — read-oriented abstraction over the on-chain `User` account.
3
+ *
4
+ * Responsibilities:
5
+ * - Margin and free-collateral calculations (mirrors `programs/drift/src/math/margin.rs`).
6
+ * - Position accessors: perp positions, spot positions, unrealized PnL, leverage.
7
+ * - Open order queries and filtering.
8
+ * - Health factor and liquidation threshold checks.
9
+ * - Subscribes to and caches the latest `User` account state from chain.
10
+ *
11
+ * To send instructions (deposit, place order, etc.) use {@link DriftClient}.
12
+ * For referral/volume stats see {@link UserStats} (userStats.ts).
13
+ */
1
14
  import { PublicKey } from '@solana/web3.js';
2
15
  import { EventEmitter } from 'events';
3
16
  import StrictEventEmitter from 'strict-event-emitter-types';
@@ -141,8 +154,10 @@ export class User {
141
154
  config.driftClient.connection,
142
155
  config.userAccountPublicKey,
143
156
  config.accountSubscription.accountLoader,
144
- this.driftClient.program.account.user.coder.accounts.decodeUnchecked.bind(
145
- this.driftClient.program.account.user.coder.accounts
157
+ (
158
+ this.driftClient.program.account as any
159
+ ).user.coder.accounts.decodeUnchecked.bind(
160
+ (this.driftClient.program.account as any).user.coder.accounts
146
161
  )
147
162
  );
148
163
  } else if (config.accountSubscription?.type === 'custom') {
@@ -347,7 +362,6 @@ export class User {
347
362
  settledPnl: ZERO,
348
363
  lpShares: ZERO,
349
364
  lastQuoteAssetAmountPerLp: ZERO,
350
- perLpBase: 0,
351
365
  maxMarginRatio: 0,
352
366
  isolatedPositionScaledBalance: ZERO,
353
367
  positionFlag: 0,
@@ -525,7 +539,6 @@ export class User {
525
539
  public getPerpBuyingPower(
526
540
  marketIndex: number,
527
541
  collateralBuffer = ZERO,
528
- enterHighLeverageMode = undefined,
529
542
  maxMarginRatio = undefined,
530
543
  positionType: 'isolated' | 'cross' = 'cross'
531
544
  ): BN {
@@ -560,7 +573,6 @@ export class User {
560
573
  );
561
574
  const generalFreeCollateral = this.getFreeCollateral(
562
575
  'Initial',
563
- enterHighLeverageMode,
564
576
  undefined
565
577
  );
566
578
  freeCollateral = BN.min(
@@ -569,18 +581,15 @@ export class User {
569
581
  ).sub(collateralBuffer);
570
582
  } else {
571
583
  // free collateral from the cross account only
572
- freeCollateral = this.getFreeCollateral(
573
- 'Initial',
574
- enterHighLeverageMode,
575
- undefined
576
- ).sub(collateralBuffer);
584
+ freeCollateral = this.getFreeCollateral('Initial', undefined).sub(
585
+ collateralBuffer
586
+ );
577
587
  }
578
588
 
579
589
  return this.getPerpBuyingPowerFromFreeCollateralAndBaseAssetAmount(
580
590
  marketIndex,
581
591
  freeCollateral,
582
592
  worstCaseBaseAssetAmount,
583
- enterHighLeverageMode,
584
593
  maxMarginRatio || perpPosition.maxMarginRatio
585
594
  );
586
595
  }
@@ -589,7 +598,6 @@ export class User {
589
598
  marketIndex: number,
590
599
  freeCollateral: BN,
591
600
  baseAssetAmount: BN,
592
- enterHighLeverageMode = undefined,
593
601
  perpMarketMaxMarginRatio = undefined
594
602
  ): BN {
595
603
  const maxMarginRatio = Math.max(
@@ -600,8 +608,7 @@ export class User {
600
608
  this.driftClient.getPerpMarketAccount(marketIndex),
601
609
  baseAssetAmount,
602
610
  'Initial',
603
- maxMarginRatio,
604
- enterHighLeverageMode || this.isHighLeverageMode('Initial')
611
+ maxMarginRatio
605
612
  );
606
613
 
607
614
  return freeCollateral.mul(MARGIN_PRECISION).div(new BN(marginRatio));
@@ -613,11 +620,9 @@ export class User {
613
620
  */
614
621
  public getFreeCollateral(
615
622
  marginCategory: MarginCategory = 'Initial',
616
- enterHighLeverageMode = false,
617
623
  perpMarketIndex?: number
618
624
  ): BN {
619
625
  const calc = this.getMarginCalculation(marginCategory, {
620
- enteringHighLeverage: enterHighLeverageMode,
621
626
  strict: marginCategory === 'Initial',
622
627
  });
623
628
 
@@ -640,8 +645,7 @@ export class User {
640
645
  marginCategory: MarginCategory,
641
646
  liquidationBuffer?: BN,
642
647
  strict?: boolean,
643
- includeOpenOrders?: boolean,
644
- enteringHighLeverage?: boolean
648
+ includeOpenOrders?: boolean
645
649
  ): BN;
646
650
 
647
651
  /**
@@ -651,7 +655,6 @@ export class User {
651
655
  * @param liquidationBuffer - Optional buffer amount to consider during liquidation scenarios.
652
656
  * @param strict - Optional flag to enforce strict margin calculations.
653
657
  * @param includeOpenOrders - Optional flag to include open orders in the margin calculation.
654
- * @param enteringHighLeverage - Optional flag indicating if the user is entering high leverage mode.
655
658
  * @param perpMarketIndex - Optional index of the perpetual market. Required if marginType is 'Isolated'.
656
659
  *
657
660
  * @returns The calculated margin requirement as a BN (BigNumber).
@@ -661,7 +664,6 @@ export class User {
661
664
  liquidationBuffer?: BN,
662
665
  strict?: boolean,
663
666
  includeOpenOrders?: boolean,
664
- enteringHighLeverage?: boolean,
665
667
  perpMarketIndex?: number
666
668
  ): BN;
667
669
 
@@ -670,7 +672,6 @@ export class User {
670
672
  liquidationBuffer?: BN,
671
673
  strict?: boolean,
672
674
  includeOpenOrders?: boolean,
673
- enteringHighLeverage?: boolean,
674
675
  perpMarketIndex?: number
675
676
  ): BN {
676
677
  const liquidationBufferMap = new Map();
@@ -683,7 +684,6 @@ export class User {
683
684
  const marginCalc = this.getMarginCalculation(marginCategory, {
684
685
  strict,
685
686
  includeOpenOrders,
686
- enteringHighLeverage,
687
687
  liquidationBufferMap,
688
688
  });
689
689
 
@@ -711,16 +711,12 @@ export class User {
711
711
  /**
712
712
  * @returns The initial margin requirement in USDC. : QUOTE_PRECISION
713
713
  */
714
- public getInitialMarginRequirement(
715
- enterHighLeverageMode = false,
716
- perpMarketIndex?: number
717
- ): BN {
714
+ public getInitialMarginRequirement(perpMarketIndex?: number): BN {
718
715
  return this.getMarginRequirement(
719
716
  'Initial',
720
717
  undefined,
721
718
  true,
722
719
  undefined,
723
- enterHighLeverageMode,
724
720
  perpMarketIndex
725
721
  );
726
722
  }
@@ -737,7 +733,6 @@ export class User {
737
733
  liquidationBuffer,
738
734
  false, // strict default
739
735
  true, // includeOpenOrders default
740
- false, // enteringHighLeverage default
741
736
  perpMarketIndex
742
737
  );
743
738
  }
@@ -1438,8 +1433,7 @@ export class User {
1438
1433
  marginCategory?: MarginCategory,
1439
1434
  liquidationBuffer?: BN,
1440
1435
  includeOpenOrders?: boolean,
1441
- strict = false,
1442
- enteringHighLeverage = undefined
1436
+ strict = false
1443
1437
  ): BN {
1444
1438
  const market = this.driftClient.getPerpMarketAccount(
1445
1439
  perpPosition.marketIndex
@@ -1468,8 +1462,7 @@ export class User {
1468
1462
  baseAssetAmount = perpPosition.baseAssetAmount;
1469
1463
  liabilityValue = calculatePerpLiabilityValue(
1470
1464
  baseAssetAmount,
1471
- valuationPrice,
1472
- isVariant(market.contractType, 'prediction')
1465
+ valuationPrice
1473
1466
  );
1474
1467
  }
1475
1468
 
@@ -1483,11 +1476,7 @@ export class User {
1483
1476
  market,
1484
1477
  baseAssetAmount.abs(),
1485
1478
  marginCategory,
1486
- enteringHighLeverage === false
1487
- ? Math.max(market.marginRatioInitial, userCustomMargin)
1488
- : userCustomMargin,
1489
- this.isHighLeverageMode(marginCategory) ||
1490
- enteringHighLeverage === true
1479
+ userCustomMargin
1491
1480
  )
1492
1481
  );
1493
1482
 
@@ -1561,8 +1550,7 @@ export class User {
1561
1550
  marginCategory?: MarginCategory,
1562
1551
  liquidationBuffer?: BN,
1563
1552
  includeOpenOrders?: boolean,
1564
- strict = false,
1565
- enteringHighLeverage = undefined
1553
+ strict = false
1566
1554
  ): BN {
1567
1555
  return this.getActivePerpPositions().reduce(
1568
1556
  (totalPerpValue, perpPosition) => {
@@ -1571,8 +1559,7 @@ export class User {
1571
1559
  marginCategory,
1572
1560
  liquidationBuffer,
1573
1561
  includeOpenOrders,
1574
- strict,
1575
- enteringHighLeverage
1562
+ strict
1576
1563
  );
1577
1564
  return totalPerpValue.add(baseAssetValue);
1578
1565
  },
@@ -1624,8 +1611,7 @@ export class User {
1624
1611
  } else {
1625
1612
  return calculatePerpLiabilityValue(
1626
1613
  userPosition.baseAssetAmount,
1627
- oraclePriceData.price,
1628
- isVariant(market.contractType, 'prediction')
1614
+ oraclePriceData.price
1629
1615
  );
1630
1616
  }
1631
1617
  }
@@ -1933,14 +1919,12 @@ export class User {
1933
1919
  * for large sizes where imf factor activates, result is a lower bound
1934
1920
  * @param marginCategory {Initial, Maintenance}
1935
1921
  * @param isLp if calculating max leveraging for adding lp, need to add buffer
1936
- * @param enterHighLeverageMode can pass this as true to calculate max leverage if the user was to enter high leverage mode
1937
1922
  * @returns : Precision TEN_THOUSAND
1938
1923
  */
1939
1924
  public getMaxLeverageForPerp(
1940
1925
  perpMarketIndex: number,
1941
1926
  _marginCategory: MarginCategory = 'Initial',
1942
- isLp = false,
1943
- enterHighLeverageMode = undefined
1927
+ isLp = false
1944
1928
  ): BN {
1945
1929
  const market = this.driftClient.getPerpMarketAccount(perpMarketIndex);
1946
1930
  const marketPrice =
@@ -1969,14 +1953,12 @@ export class User {
1969
1953
  this.getMaxTradeSizeUSDCForPerp(
1970
1954
  perpMarketIndex,
1971
1955
  PositionDirection.LONG,
1972
- false,
1973
- enterHighLeverageMode || this.isHighLeverageMode('Initial')
1956
+ false
1974
1957
  ).tradeSize,
1975
1958
  this.getMaxTradeSizeUSDCForPerp(
1976
1959
  perpMarketIndex,
1977
1960
  PositionDirection.SHORT,
1978
- false,
1979
- enterHighLeverageMode || this.isHighLeverageMode('Initial')
1961
+ false
1980
1962
  ).tradeSize
1981
1963
  ).sub(lpBuffer),
1982
1964
  ZERO
@@ -2241,14 +2223,6 @@ export class User {
2241
2223
  return (this.getUserAccount().status & UserStatus.BANKRUPT) > 0;
2242
2224
  }
2243
2225
 
2244
- public isHighLeverageMode(marginCategory: MarginCategory): boolean {
2245
- return (
2246
- isVariant(this.getUserAccount().marginMode, 'highLeverage') ||
2247
- (marginCategory === 'Maintenance' &&
2248
- isVariant(this.getUserAccount().marginMode, 'highLeverageMaintenance'))
2249
- );
2250
- }
2251
-
2252
2226
  /**
2253
2227
  * Checks if any user position cumulative funding differs from respective market cumulative funding
2254
2228
  * @returns
@@ -2389,7 +2363,6 @@ export class User {
2389
2363
  marginCategory: MarginCategory = 'Maintenance',
2390
2364
  includeOpenOrders = false,
2391
2365
  offsetCollateral = ZERO,
2392
- enteringHighLeverage = false,
2393
2366
  marginType?: MarginType
2394
2367
  ): BN {
2395
2368
  const market = this.driftClient.getPerpMarketAccount(marketIndex);
@@ -2406,7 +2379,6 @@ export class User {
2406
2379
  const marginCalculation = this.getMarginCalculation(marginCategory, {
2407
2380
  strict: false,
2408
2381
  includeOpenOrders,
2409
- enteringHighLeverage,
2410
2382
  });
2411
2383
  const isolatedMarginCalculation =
2412
2384
  marginCalculation.isolatedMarginCalculations.get(marketIndex);
@@ -2424,8 +2396,7 @@ export class User {
2424
2396
  positionBaseSizeChange,
2425
2397
  oraclePrice,
2426
2398
  marginCategory,
2427
- includeOpenOrders,
2428
- enteringHighLeverage
2399
+ includeOpenOrders
2429
2400
  );
2430
2401
 
2431
2402
  if (!freeCollateralDelta || freeCollateralDelta.eq(ZERO)) {
@@ -2455,8 +2426,7 @@ export class User {
2455
2426
  marginCategory,
2456
2427
  undefined,
2457
2428
  false,
2458
- includeOpenOrders,
2459
- enteringHighLeverage
2429
+ includeOpenOrders
2460
2430
  );
2461
2431
 
2462
2432
  let freeCollateral = BN.max(
@@ -2476,8 +2446,7 @@ export class User {
2476
2446
  currentPerpPosition,
2477
2447
  positionBaseSizeChange,
2478
2448
  estimatedEntryPrice,
2479
- includeOpenOrders,
2480
- enteringHighLeverage
2449
+ includeOpenOrders
2481
2450
  );
2482
2451
 
2483
2452
  freeCollateral = freeCollateral.add(freeCollateralChangeFromNewPosition);
@@ -2488,8 +2457,7 @@ export class User {
2488
2457
  positionBaseSizeChange,
2489
2458
  oraclePrice,
2490
2459
  marginCategory,
2491
- includeOpenOrders,
2492
- enteringHighLeverage
2460
+ includeOpenOrders
2493
2461
  );
2494
2462
 
2495
2463
  if (!freeCollateralDelta) {
@@ -2559,7 +2527,6 @@ export class User {
2559
2527
  positionBaseSizeChange: BN,
2560
2528
  estimatedEntryPrice: BN,
2561
2529
  includeOpenOrders: boolean,
2562
- enteringHighLeverage = undefined,
2563
2530
  marginCategory: MarginCategory = 'Maintenance'
2564
2531
  ): BN {
2565
2532
  let freeCollateralChange = ZERO;
@@ -2607,8 +2574,7 @@ export class User {
2607
2574
  baseAssetAmount = perpPosition.baseAssetAmount;
2608
2575
  liabilityValue = calculatePerpLiabilityValue(
2609
2576
  baseAssetAmount,
2610
- oraclePrice,
2611
- isVariant(market.contractType, 'prediction')
2577
+ oraclePrice
2612
2578
  );
2613
2579
  }
2614
2580
 
@@ -2620,10 +2586,7 @@ export class User {
2620
2586
  market,
2621
2587
  baseAssetAmount.abs(),
2622
2588
  marginCategory,
2623
- enteringHighLeverage === false
2624
- ? Math.max(market.marginRatioInitial, userCustomMargin)
2625
- : userCustomMargin,
2626
- this.isHighLeverageMode(marginCategory) || enteringHighLeverage === true
2589
+ userCustomMargin
2627
2590
  );
2628
2591
 
2629
2592
  return liabilityValue.mul(new BN(marginRatio)).div(MARGIN_PRECISION);
@@ -2651,8 +2614,7 @@ export class User {
2651
2614
  positionBaseSizeChange: BN,
2652
2615
  oraclePrice: BN,
2653
2616
  marginCategory: MarginCategory = 'Maintenance',
2654
- includeOpenOrders = false,
2655
- enteringHighLeverage = undefined
2617
+ includeOpenOrders = false
2656
2618
  ): BN | undefined {
2657
2619
  const baseAssetAmount = includeOpenOrders
2658
2620
  ? calculateWorstCaseBaseAssetAmount(perpPosition, market, oraclePrice)
@@ -2674,10 +2636,7 @@ export class User {
2674
2636
  market,
2675
2637
  proposedBaseAssetAmount.abs(),
2676
2638
  marginCategory,
2677
- enteringHighLeverage === false
2678
- ? Math.max(market.marginRatioInitial, userCustomMargin)
2679
- : userCustomMargin,
2680
- this.isHighLeverageMode(marginCategory) || enteringHighLeverage === true
2639
+ userCustomMargin
2681
2640
  );
2682
2641
 
2683
2642
  const marginRatioQuotePrecision = new BN(marginRatio)
@@ -2689,33 +2648,24 @@ export class User {
2689
2648
  }
2690
2649
 
2691
2650
  let freeCollateralDelta = ZERO;
2692
- if (isVariant(market.contractType, 'prediction')) {
2693
- // for prediction market, increase in pnl and margin requirement will net out for position
2694
- // open order margin requirement will change with price though
2695
- if (orderBaseAssetAmount.gt(ZERO)) {
2696
- freeCollateralDelta = marginRatioQuotePrecision.neg();
2697
- } else if (orderBaseAssetAmount.lt(ZERO)) {
2698
- freeCollateralDelta = marginRatioQuotePrecision;
2699
- }
2651
+
2652
+ if (proposedBaseAssetAmount.gt(ZERO)) {
2653
+ freeCollateralDelta = QUOTE_PRECISION.sub(marginRatioQuotePrecision)
2654
+ .mul(proposedBaseAssetAmount)
2655
+ .div(BASE_PRECISION);
2700
2656
  } else {
2701
- if (proposedBaseAssetAmount.gt(ZERO)) {
2702
- freeCollateralDelta = QUOTE_PRECISION.sub(marginRatioQuotePrecision)
2703
- .mul(proposedBaseAssetAmount)
2704
- .div(BASE_PRECISION);
2705
- } else {
2706
- freeCollateralDelta = QUOTE_PRECISION.neg()
2707
- .sub(marginRatioQuotePrecision)
2708
- .mul(proposedBaseAssetAmount.abs())
2709
- .div(BASE_PRECISION);
2710
- }
2657
+ freeCollateralDelta = QUOTE_PRECISION.neg()
2658
+ .sub(marginRatioQuotePrecision)
2659
+ .mul(proposedBaseAssetAmount.abs())
2660
+ .div(BASE_PRECISION);
2661
+ }
2711
2662
 
2712
- if (!orderBaseAssetAmount.eq(ZERO)) {
2713
- freeCollateralDelta = freeCollateralDelta.sub(
2714
- marginRatioQuotePrecision
2715
- .mul(orderBaseAssetAmount.abs())
2716
- .div(BASE_PRECISION)
2717
- );
2718
- }
2663
+ if (!orderBaseAssetAmount.eq(ZERO)) {
2664
+ freeCollateralDelta = freeCollateralDelta.sub(
2665
+ marginRatioQuotePrecision
2666
+ .mul(orderBaseAssetAmount.abs())
2667
+ .div(BASE_PRECISION)
2668
+ );
2719
2669
  }
2720
2670
 
2721
2671
  return freeCollateralDelta;
@@ -2800,7 +2750,6 @@ export class User {
2800
2750
  targetMarketIndex,
2801
2751
  baseSize,
2802
2752
  maxMarginRatio,
2803
- undefined,
2804
2753
  estEntryPrice
2805
2754
  );
2806
2755
  }
@@ -2820,8 +2769,7 @@ export class User {
2820
2769
  targetMarketIndex,
2821
2770
  baseSize,
2822
2771
  collateralIndex,
2823
- maxMarginRatio,
2824
- false // assume user cant be high leverage if they havent created user account ?
2772
+ maxMarginRatio
2825
2773
  );
2826
2774
  }
2827
2775
 
@@ -2838,7 +2786,6 @@ export class User {
2838
2786
  targetMarketIndex: number,
2839
2787
  tradeSide: PositionDirection,
2840
2788
  isLp = false,
2841
- enterHighLeverageMode = undefined,
2842
2789
  maxMarginRatio = undefined,
2843
2790
  positionType: 'isolated' | 'cross' = 'cross'
2844
2791
  ): { tradeSize: BN; oppositeSideTradeSize: BN } {
@@ -2872,14 +2819,12 @@ export class User {
2872
2819
  ? ZERO
2873
2820
  : calculatePerpLiabilityValue(
2874
2821
  currentPosition.baseAssetAmount,
2875
- oracleData.price,
2876
- isVariant(marketAccount.contractType, 'prediction')
2822
+ oracleData.price
2877
2823
  );
2878
2824
 
2879
2825
  const maxPositionSize = this.getPerpBuyingPower(
2880
2826
  targetMarketIndex,
2881
2827
  lpBuffer,
2882
- enterHighLeverageMode,
2883
2828
  maxMarginRatio,
2884
2829
  positionType
2885
2830
  );
@@ -2898,16 +2843,12 @@ export class User {
2898
2843
  // current leverage is greater than max leverage - can only reduce position size
2899
2844
 
2900
2845
  if (!targetingSameSide) {
2901
- const market = this.driftClient.getPerpMarketAccount(targetMarketIndex);
2902
2846
  const perpLiabilityValue = calculatePerpLiabilityValue(
2903
2847
  currentPosition.baseAssetAmount,
2904
- oracleData.price,
2905
- isVariant(market.contractType, 'prediction')
2848
+ oracleData.price
2906
2849
  );
2907
2850
  const totalCollateral = this.getTotalCollateral();
2908
- const marginRequirement = this.getInitialMarginRequirement(
2909
- enterHighLeverageMode
2910
- );
2851
+ const marginRequirement = this.getInitialMarginRequirement();
2911
2852
  const marginRatio = Math.max(
2912
2853
  currentPosition.maxMarginRatio,
2913
2854
  this.getUserAccount().maxMarginRatio
@@ -2941,10 +2882,7 @@ export class User {
2941
2882
  }
2942
2883
  }
2943
2884
 
2944
- const freeCollateral = this.getFreeCollateral(
2945
- 'Initial',
2946
- enterHighLeverageMode
2947
- );
2885
+ const freeCollateral = this.getFreeCollateral('Initial');
2948
2886
 
2949
2887
  let baseTradeSize =
2950
2888
  targetSide === 'long'
@@ -2959,7 +2897,6 @@ export class User {
2959
2897
  baseTradeSize,
2960
2898
  oracleData.price,
2961
2899
  false,
2962
- enterHighLeverageMode,
2963
2900
  'Initial'
2964
2901
  );
2965
2902
 
@@ -2980,7 +2917,6 @@ export class User {
2980
2917
  baseTradeSize,
2981
2918
  oracleData.price,
2982
2919
  false,
2983
- enterHighLeverageMode,
2984
2920
  'Initial'
2985
2921
  );
2986
2922
  }
@@ -3698,10 +3634,6 @@ export class User {
3698
3634
 
3699
3635
  const feeTierIndex = 0;
3700
3636
  if (isVariant(marketType, 'perp')) {
3701
- if (this.isHighLeverageMode('Initial')) {
3702
- return state.perpFeeStructure.feeTiers[0];
3703
- }
3704
-
3705
3637
  const userStatsAccount: UserStatsAccount = this.driftClient
3706
3638
  .getUserStats()
3707
3639
  .getAccount();
@@ -3766,17 +3698,12 @@ export class User {
3766
3698
  * @param quoteAmount
3767
3699
  * @returns feeForQuote : Precision QUOTE_PRECISION
3768
3700
  */
3769
- public calculateFeeForQuoteAmount(
3770
- quoteAmount: BN,
3771
- marketIndex?: number,
3772
- enteringHighLeverageMode?: boolean
3773
- ): BN {
3701
+ public calculateFeeForQuoteAmount(quoteAmount: BN, marketIndex?: number): BN {
3774
3702
  if (marketIndex !== undefined) {
3775
3703
  const takerFeeMultiplier = this.driftClient.getMarketFees(
3776
3704
  MarketType.PERP,
3777
3705
  marketIndex,
3778
- this,
3779
- enteringHighLeverageMode
3706
+ this
3780
3707
  ).takerFee;
3781
3708
  const feeAmountNum =
3782
3709
  BigNum.from(quoteAmount, QUOTE_PRECISION_EXP).toNum() *
@@ -4130,8 +4057,7 @@ export class User {
4130
4057
  worstCaseBaseAmount = perpPosition.baseAssetAmount;
4131
4058
  worstCaseLiabilityValue = calculatePerpLiabilityValue(
4132
4059
  perpPosition.baseAssetAmount,
4133
- oraclePrice,
4134
- isVariant(perpMarket.contractType, 'prediction')
4060
+ oraclePrice
4135
4061
  );
4136
4062
  }
4137
4063
 
@@ -4144,8 +4070,7 @@ export class User {
4144
4070
  perpMarket,
4145
4071
  worstCaseBaseAmount.abs(),
4146
4072
  marginCategory,
4147
- userCustomMargin,
4148
- this.isHighLeverageMode(marginCategory)
4073
+ userCustomMargin
4149
4074
  )
4150
4075
  );
4151
4076
 
@@ -4427,12 +4352,10 @@ export class User {
4427
4352
  opts?: {
4428
4353
  strict?: boolean; // mirror StrictOraclePrice application
4429
4354
  includeOpenOrders?: boolean;
4430
- enteringHighLeverage?: boolean;
4431
4355
  liquidationBufferMap?: Map<number | 'cross', BN>; // margin_buffer analog for buffer mode
4432
4356
  }
4433
4357
  ): MarginCalculation {
4434
4358
  const strict = opts?.strict ?? false;
4435
- const enteringHighLeverage = opts?.enteringHighLeverage ?? false;
4436
4359
  const liquidationBufferMap = opts?.liquidationBufferMap ?? new Map();
4437
4360
  const includeOpenOrders = opts?.includeOpenOrders ?? true;
4438
4361
 
@@ -4604,8 +4527,7 @@ export class User {
4604
4527
  market,
4605
4528
  worstCaseBaseAssetAmount.abs(),
4606
4529
  marginCategory,
4607
- customMarginRatio,
4608
- this.isHighLeverageMode(marginCategory) || enteringHighLeverage
4530
+ customMarginRatio
4609
4531
  )
4610
4532
  );
4611
4533
  if (isVariant(market.status, 'settlement')) {
@@ -53,7 +53,7 @@ export class WebsocketSubscription {
53
53
  }
54
54
  this.subscriber = new WebSocketProgramAccountSubscriber<UserAccount>(
55
55
  'UserMap',
56
- 'User',
56
+ 'user',
57
57
  this.userMap.driftClient.program,
58
58
  this.decodeFn,
59
59
  {
@@ -55,7 +55,7 @@ export class grpcSubscription {
55
55
  this.subscriber = await grpcProgramAccountSubscriber.create<UserAccount>(
56
56
  this.grpcConfigs,
57
57
  'UserMap',
58
- 'User',
58
+ 'user',
59
59
  this.userMap.driftClient.program,
60
60
  this.decodeFn,
61
61
  {
@@ -76,11 +76,12 @@ export class RevenueShareEscrowMap {
76
76
  );
77
77
 
78
78
  if (accountInfo && accountInfo.data) {
79
- const escrow =
80
- this.driftClient.program.account.revenueShareEscrow.coder.accounts.decode(
81
- 'RevenueShareEscrow',
82
- accountInfo.data
83
- ) as RevenueShareEscrowAccount;
79
+ const escrow = (
80
+ this.driftClient.program.account as any
81
+ ).revenueShareEscrow.coder.accounts.decode(
82
+ 'revenueShareEscrow',
83
+ accountInfo.data
84
+ ) as RevenueShareEscrowAccount;
84
85
 
85
86
  this.authorityEscrowMap.set(authority, escrow);
86
87
  }
@@ -129,11 +130,12 @@ export class RevenueShareEscrowMap {
129
130
  ),
130
131
  'confirmed'
131
132
  );
132
- const escrowNew =
133
- this.driftClient.program.account.revenueShareEscrow.coder.accounts.decode(
134
- 'RevenueShareEscrow',
135
- accountInfo.data
136
- ) as RevenueShareEscrowAccount;
133
+ const escrowNew = (
134
+ this.driftClient.program.account as any
135
+ ).revenueShareEscrow.coder.accounts.decode(
136
+ 'revenueShareEscrow',
137
+ accountInfo.data
138
+ ) as RevenueShareEscrowAccount;
137
139
  this.authorityEscrowMap.set(authority, escrowNew);
138
140
  }
139
141
  }
@@ -179,11 +181,12 @@ export class RevenueShareEscrowMap {
179
181
  programAccount.account.data[1]
180
182
  );
181
183
 
182
- const escrow =
183
- this.driftClient.program.account.revenueShareEscrow.coder.accounts.decode(
184
- 'RevenueShareEscrow',
185
- buffer
186
- ) as RevenueShareEscrowAccount;
184
+ const escrow = (
185
+ this.driftClient.program.account as any
186
+ ).revenueShareEscrow.coder.accounts.decode(
187
+ 'revenueShareEscrow',
188
+ buffer
189
+ ) as RevenueShareEscrowAccount;
187
190
 
188
191
  // Extract authority from the account data
189
192
  const authorityKey = escrow.authority.toBase58();
@@ -205,11 +208,12 @@ export class RevenueShareEscrowMap {
205
208
  programAccount.account.data[1]
206
209
  );
207
210
 
208
- const escrow =
209
- this.driftClient.program.account.revenueShareEscrow.coder.accounts.decode(
210
- 'RevenueShareEscrow',
211
- buffer
212
- ) as RevenueShareEscrowAccount;
211
+ const escrow = (
212
+ this.driftClient.program.account as any
213
+ ).revenueShareEscrow.coder.accounts.decode(
214
+ 'revenueShareEscrow',
215
+ buffer
216
+ ) as RevenueShareEscrowAccount;
213
217
 
214
218
  // Extract authority from the account data
215
219
  const authorityKey = escrow.authority.toBase58();