@drift-labs/sdk 2.130.0-beta.9 → 2.130.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/VERSION +1 -1
  2. package/lib/browser/accounts/{userAccount/basicUserAccountSubscriber.d.ts → basicUserAccountSubscriber.d.ts} +2 -2
  3. package/lib/browser/accounts/{bulkAccountLoader/bulkAccountLoader.d.ts → bulkAccountLoader.d.ts} +2 -2
  4. package/lib/browser/accounts/{bulkAccountLoader/bulkAccountLoader.js → bulkAccountLoader.js} +2 -2
  5. package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +1 -1
  6. package/lib/browser/accounts/bulkUserSubscription.d.ts +1 -1
  7. package/lib/browser/accounts/{bulkAccountLoader/customizedCadenceBulkAccountLoader.js → customizedCadenceBulkAccountLoader.js} +1 -1
  8. package/lib/browser/accounts/{baseSubscribers/grpcAccountSubscriber.d.ts → grpcAccountSubscriber.d.ts} +2 -1
  9. package/lib/{node/accounts/baseSubscribers → browser/accounts}/grpcAccountSubscriber.js +17 -13
  10. package/lib/browser/accounts/{driftClientAccount/grpcDriftClientAccountSubscriber.d.ts → grpcDriftClientAccountSubscriber.d.ts} +2 -2
  11. package/lib/{node/accounts/driftClientAccount → browser/accounts}/grpcDriftClientAccountSubscriber.js +4 -4
  12. package/lib/browser/accounts/{insuranceFundStakeAccount/grpcInsuranceFundStakeAccountSubscriber.d.ts → grpcInsuranceFundStakeAccountSubscriber.d.ts} +2 -2
  13. package/lib/{node/accounts/insuranceFundStakeAccount → browser/accounts}/grpcInsuranceFundStakeAccountSubscriber.js +1 -1
  14. package/lib/browser/accounts/{programAccount/grpcProgramAccountSubscriber.d.ts → grpcProgramAccountSubscriber.d.ts} +2 -1
  15. package/lib/browser/accounts/{programAccount/grpcProgramAccountSubscriber.js → grpcProgramAccountSubscriber.js} +17 -13
  16. package/lib/browser/accounts/{userAccount/grpcUserAccountSubscriber.d.ts → grpcUserAccountSubscriber.d.ts} +2 -2
  17. package/lib/browser/accounts/{userAccount/grpcUserAccountSubscriber.js → grpcUserAccountSubscriber.js} +1 -1
  18. package/lib/browser/accounts/{userStatsAccount/grpcUserStatsAccountSubscriber.d.ts → grpcUserStatsAccountSubscriber.d.ts} +2 -2
  19. package/lib/{node/accounts/userStatsAccount → browser/accounts}/grpcUserStatsAccountSubscriber.js +1 -1
  20. package/lib/browser/accounts/{userAccount/oneShotUserAccountSubscriber.d.ts → oneShotUserAccountSubscriber.d.ts} +2 -2
  21. package/lib/browser/accounts/{driftClientAccount/pollingDriftClientAccountSubscriber.d.ts → pollingDriftClientAccountSubscriber.d.ts} +5 -5
  22. package/lib/browser/accounts/{driftClientAccount/pollingDriftClientAccountSubscriber.js → pollingDriftClientAccountSubscriber.js} +8 -8
  23. package/lib/browser/accounts/{highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.d.ts → pollingHighLeverageModeConfigAccountSubscriber.d.ts} +3 -3
  24. package/lib/browser/accounts/{highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.js → pollingHighLeverageModeConfigAccountSubscriber.js} +1 -1
  25. package/lib/browser/accounts/{insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber.d.ts → pollingInsuranceFundStakeAccountSubscriber.d.ts} +3 -3
  26. package/lib/{node/accounts/insuranceFundStakeAccount → browser/accounts}/pollingInsuranceFundStakeAccountSubscriber.js +1 -1
  27. package/lib/browser/accounts/{oracleAccount/pollingOracleAccountSubscriber.d.ts → pollingOracleAccountSubscriber.d.ts} +3 -3
  28. package/lib/{node/accounts/oracleAccount → browser/accounts}/pollingOracleAccountSubscriber.js +1 -1
  29. package/lib/browser/accounts/{tokenAccount/pollingTokenAccountSubscriber.d.ts → pollingTokenAccountSubscriber.d.ts} +2 -2
  30. package/lib/browser/accounts/{tokenAccount/pollingTokenAccountSubscriber.js → pollingTokenAccountSubscriber.js} +2 -2
  31. package/lib/browser/accounts/{userAccount/pollingUserAccountSubscriber.d.ts → pollingUserAccountSubscriber.d.ts} +4 -4
  32. package/lib/browser/accounts/{userAccount/pollingUserAccountSubscriber.js → pollingUserAccountSubscriber.js} +1 -1
  33. package/lib/browser/accounts/{userStatsAccount/pollingUserStatsAccountSubscriber.d.ts → pollingUserStatsAccountSubscriber.d.ts} +3 -3
  34. package/lib/browser/accounts/{userStatsAccount/pollingUserStatsAccountSubscriber.js → pollingUserStatsAccountSubscriber.js} +1 -1
  35. package/lib/browser/accounts/types.d.ts +11 -0
  36. package/lib/browser/accounts/{baseSubscribers/webSocketAccountSubscriber.d.ts → webSocketAccountSubscriber.d.ts} +1 -1
  37. package/lib/{node/accounts/baseSubscribers → browser/accounts}/webSocketAccountSubscriber.js +1 -1
  38. package/lib/browser/accounts/{driftClientAccount/webSocketDriftClientAccountSubscriber.d.ts → webSocketDriftClientAccountSubscriber.d.ts} +4 -4
  39. package/lib/browser/accounts/{driftClientAccount/webSocketDriftClientAccountSubscriber.js → webSocketDriftClientAccountSubscriber.js} +9 -9
  40. package/lib/browser/accounts/{highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.d.ts → webSocketHighLeverageModeConfigAccountSubscriber.d.ts} +2 -2
  41. package/lib/browser/accounts/{highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.js → webSocketHighLeverageModeConfigAccountSubscriber.js} +2 -2
  42. package/lib/browser/accounts/{insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.d.ts → webSocketInsuranceFundStakeAccountSubscriber.d.ts} +2 -2
  43. package/lib/browser/accounts/{insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.js → webSocketInsuranceFundStakeAccountSubscriber.js} +2 -2
  44. package/lib/browser/accounts/{programAccount/webSocketProgramAccountSubscriber.d.ts → webSocketProgramAccountSubscriber.d.ts} +1 -1
  45. package/lib/browser/accounts/{userAccount/webSocketUserAccountSubscriber.d.ts → webSocketUserAccountSubscriber.d.ts} +2 -2
  46. package/lib/{node/accounts/userAccount → browser/accounts}/webSocketUserAccountSubscriber.js +2 -2
  47. package/lib/browser/accounts/{userStatsAccount/webSocketUserStatsAccountSubsriber.d.ts → webSocketUserStatsAccountSubsriber.d.ts} +2 -2
  48. package/lib/browser/accounts/{userStatsAccount/webSocketUserStatsAccountSubsriber.js → webSocketUserStatsAccountSubsriber.js} +2 -2
  49. package/lib/browser/adminClient.d.ts +2 -2
  50. package/lib/browser/adminClient.js +14 -14
  51. package/lib/browser/auctionSubscriber/auctionSubscriber.js +1 -1
  52. package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +1 -1
  53. package/lib/browser/{config/index.d.ts → config.d.ts} +5 -5
  54. package/lib/{node/config/index.js → browser/config.js} +3 -3
  55. package/lib/browser/constants/perpMarkets.d.ts +1 -1
  56. package/lib/browser/constants/spotMarkets.d.ts +1 -1
  57. package/lib/browser/dlob/DLOB.d.ts +3 -3
  58. package/lib/browser/dlob/DLOB.js +18 -13
  59. package/lib/browser/dlob/DLOBNode.d.ts +5 -3
  60. package/lib/browser/dlob/DLOBNode.js +14 -13
  61. package/lib/browser/dlob/DLOBSubscriber.js +1 -1
  62. package/lib/browser/dlob/NodeList.d.ts +4 -1
  63. package/lib/browser/dlob/NodeList.js +11 -8
  64. package/lib/browser/dlob/orderBookLevels.d.ts +6 -0
  65. package/lib/browser/dlob/orderBookLevels.js +5 -2
  66. package/lib/browser/driftClient.d.ts +1 -1
  67. package/lib/browser/driftClient.js +18 -5
  68. package/lib/browser/driftClientConfig.d.ts +2 -2
  69. package/lib/browser/idl/drift.json +82 -11
  70. package/lib/browser/index.d.ts +14 -21
  71. package/lib/browser/index.js +14 -21
  72. package/lib/browser/math/amm.d.ts +4 -0
  73. package/lib/browser/math/amm.js +25 -9
  74. package/lib/browser/math/margin.js +1 -1
  75. package/lib/browser/math/market.d.ts +10 -0
  76. package/lib/browser/math/market.js +76 -1
  77. package/lib/browser/math/orders.d.ts +1 -0
  78. package/lib/browser/math/orders.js +13 -1
  79. package/lib/browser/math/state.d.ts +1 -0
  80. package/lib/browser/math/state.js +6 -1
  81. package/lib/browser/openbook/openbookV2Subscriber.d.ts +1 -1
  82. package/lib/browser/oracles/types.d.ts +1 -0
  83. package/lib/browser/oracles/utils.js +1 -3
  84. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +1 -1
  85. package/lib/browser/orderSubscriber/OrderSubscriber.js +10 -3
  86. package/lib/browser/orderSubscriber/WebsocketSubscription.js +1 -1
  87. package/lib/browser/orderSubscriber/grpcSubscription.js +1 -1
  88. package/lib/browser/phoenix/phoenixSubscriber.d.ts +1 -1
  89. package/lib/browser/serum/serumSubscriber.d.ts +1 -1
  90. package/lib/browser/serum/types.d.ts +1 -1
  91. package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.d.ts +1 -1
  92. package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.js +1 -1
  93. package/lib/browser/swift/signedMsgUserAccountSubscriber.d.ts +1 -1
  94. package/lib/browser/swift/signedMsgUserAccountSubscriber.js +1 -1
  95. package/lib/browser/swift/swiftOrderSubscriber.d.ts +1 -1
  96. package/lib/browser/types.d.ts +7 -0
  97. package/lib/browser/types.js +6 -1
  98. package/lib/browser/user.js +3 -3
  99. package/lib/browser/userConfig.d.ts +1 -1
  100. package/lib/browser/userMap/PollingSubscription.d.ts +2 -2
  101. package/lib/browser/userMap/WebsocketSubscription.d.ts +2 -2
  102. package/lib/browser/userMap/WebsocketSubscription.js +1 -1
  103. package/lib/browser/userMap/grpcSubscription.d.ts +2 -2
  104. package/lib/browser/userMap/grpcSubscription.js +1 -1
  105. package/lib/browser/userMap/userMap.d.ts +18 -3
  106. package/lib/browser/userMap/userMap.js +1 -1
  107. package/lib/browser/userMap/userStatsMap.d.ts +1 -1
  108. package/lib/browser/userMap/userStatsMap.js +1 -1
  109. package/lib/browser/userStats.js +3 -3
  110. package/lib/browser/userStatsConfig.d.ts +1 -1
  111. package/lib/node/accounts/{userAccount/basicUserAccountSubscriber.d.ts → basicUserAccountSubscriber.d.ts} +2 -2
  112. package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -0
  113. package/lib/node/accounts/{bulkAccountLoader/bulkAccountLoader.d.ts → bulkAccountLoader.d.ts} +2 -2
  114. package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -0
  115. package/lib/node/accounts/{bulkAccountLoader/bulkAccountLoader.js → bulkAccountLoader.js} +2 -2
  116. package/lib/node/accounts/bulkUserStatsSubscription.d.ts +1 -1
  117. package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
  118. package/lib/node/accounts/bulkUserSubscription.d.ts +1 -1
  119. package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
  120. package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -0
  121. package/lib/node/accounts/{bulkAccountLoader/customizedCadenceBulkAccountLoader.js → customizedCadenceBulkAccountLoader.js} +1 -1
  122. package/lib/node/accounts/{baseSubscribers/grpcAccountSubscriber.d.ts → grpcAccountSubscriber.d.ts} +2 -1
  123. package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -0
  124. package/lib/{browser/accounts/baseSubscribers → node/accounts}/grpcAccountSubscriber.js +17 -13
  125. package/lib/node/accounts/{driftClientAccount/grpcDriftClientAccountSubscriber.d.ts → grpcDriftClientAccountSubscriber.d.ts} +2 -2
  126. package/lib/node/accounts/grpcDriftClientAccountSubscriber.d.ts.map +1 -0
  127. package/lib/{browser/accounts/driftClientAccount → node/accounts}/grpcDriftClientAccountSubscriber.js +4 -4
  128. package/lib/node/accounts/{insuranceFundStakeAccount/grpcInsuranceFundStakeAccountSubscriber.d.ts → grpcInsuranceFundStakeAccountSubscriber.d.ts} +2 -2
  129. package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -0
  130. package/lib/{browser/accounts/insuranceFundStakeAccount → node/accounts}/grpcInsuranceFundStakeAccountSubscriber.js +1 -1
  131. package/lib/node/accounts/{programAccount/grpcProgramAccountSubscriber.d.ts → grpcProgramAccountSubscriber.d.ts} +2 -1
  132. package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -0
  133. package/lib/node/accounts/{programAccount/grpcProgramAccountSubscriber.js → grpcProgramAccountSubscriber.js} +17 -13
  134. package/lib/node/accounts/{userAccount/grpcUserAccountSubscriber.d.ts → grpcUserAccountSubscriber.d.ts} +2 -2
  135. package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -0
  136. package/lib/node/accounts/{userAccount/grpcUserAccountSubscriber.js → grpcUserAccountSubscriber.js} +1 -1
  137. package/lib/node/accounts/{userStatsAccount/grpcUserStatsAccountSubscriber.d.ts → grpcUserStatsAccountSubscriber.d.ts} +2 -2
  138. package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -0
  139. package/lib/{browser/accounts/userStatsAccount → node/accounts}/grpcUserStatsAccountSubscriber.js +1 -1
  140. package/lib/node/accounts/{userAccount/oneShotUserAccountSubscriber.d.ts → oneShotUserAccountSubscriber.d.ts} +2 -2
  141. package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -0
  142. package/lib/node/accounts/{driftClientAccount/pollingDriftClientAccountSubscriber.d.ts → pollingDriftClientAccountSubscriber.d.ts} +5 -5
  143. package/lib/node/accounts/pollingDriftClientAccountSubscriber.d.ts.map +1 -0
  144. package/lib/node/accounts/{driftClientAccount/pollingDriftClientAccountSubscriber.js → pollingDriftClientAccountSubscriber.js} +8 -8
  145. package/lib/node/accounts/{highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.d.ts → pollingHighLeverageModeConfigAccountSubscriber.d.ts} +3 -3
  146. package/lib/node/accounts/pollingHighLeverageModeConfigAccountSubscriber.d.ts.map +1 -0
  147. package/lib/node/accounts/{highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.js → pollingHighLeverageModeConfigAccountSubscriber.js} +1 -1
  148. package/lib/node/accounts/{insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber.d.ts → pollingInsuranceFundStakeAccountSubscriber.d.ts} +3 -3
  149. package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -0
  150. package/lib/{browser/accounts/insuranceFundStakeAccount → node/accounts}/pollingInsuranceFundStakeAccountSubscriber.js +1 -1
  151. package/lib/node/accounts/{oracleAccount/pollingOracleAccountSubscriber.d.ts → pollingOracleAccountSubscriber.d.ts} +3 -3
  152. package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -0
  153. package/lib/{browser/accounts/oracleAccount → node/accounts}/pollingOracleAccountSubscriber.js +1 -1
  154. package/lib/node/accounts/{tokenAccount/pollingTokenAccountSubscriber.d.ts → pollingTokenAccountSubscriber.d.ts} +2 -2
  155. package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -0
  156. package/lib/node/accounts/{tokenAccount/pollingTokenAccountSubscriber.js → pollingTokenAccountSubscriber.js} +2 -2
  157. package/lib/node/accounts/{userAccount/pollingUserAccountSubscriber.d.ts → pollingUserAccountSubscriber.d.ts} +4 -4
  158. package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -0
  159. package/lib/node/accounts/{userAccount/pollingUserAccountSubscriber.js → pollingUserAccountSubscriber.js} +1 -1
  160. package/lib/node/accounts/{userStatsAccount/pollingUserStatsAccountSubscriber.d.ts → pollingUserStatsAccountSubscriber.d.ts} +3 -3
  161. package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -0
  162. package/lib/node/accounts/{userStatsAccount/pollingUserStatsAccountSubscriber.js → pollingUserStatsAccountSubscriber.js} +1 -1
  163. package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -0
  164. package/lib/node/accounts/types.d.ts +11 -0
  165. package/lib/node/accounts/types.d.ts.map +1 -1
  166. package/lib/node/accounts/{baseSubscribers/webSocketAccountSubscriber.d.ts → webSocketAccountSubscriber.d.ts} +1 -1
  167. package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -0
  168. package/lib/{browser/accounts/baseSubscribers → node/accounts}/webSocketAccountSubscriber.js +1 -1
  169. package/lib/node/accounts/{driftClientAccount/webSocketDriftClientAccountSubscriber.d.ts → webSocketDriftClientAccountSubscriber.d.ts} +4 -4
  170. package/lib/node/accounts/webSocketDriftClientAccountSubscriber.d.ts.map +1 -0
  171. package/lib/node/accounts/{driftClientAccount/webSocketDriftClientAccountSubscriber.js → webSocketDriftClientAccountSubscriber.js} +9 -9
  172. package/lib/node/accounts/{highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.d.ts → webSocketHighLeverageModeConfigAccountSubscriber.d.ts} +2 -2
  173. package/lib/node/accounts/webSocketHighLeverageModeConfigAccountSubscriber.d.ts.map +1 -0
  174. package/lib/node/accounts/{highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.js → webSocketHighLeverageModeConfigAccountSubscriber.js} +2 -2
  175. package/lib/node/accounts/{insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.d.ts → webSocketInsuranceFundStakeAccountSubscriber.d.ts} +2 -2
  176. package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -0
  177. package/lib/node/accounts/{insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.js → webSocketInsuranceFundStakeAccountSubscriber.js} +2 -2
  178. package/lib/node/accounts/{programAccount/webSocketProgramAccountSubscriber.d.ts → webSocketProgramAccountSubscriber.d.ts} +1 -1
  179. package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -0
  180. package/lib/node/accounts/{userAccount/webSocketUserAccountSubscriber.d.ts → webSocketUserAccountSubscriber.d.ts} +2 -2
  181. package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -0
  182. package/lib/{browser/accounts/userAccount → node/accounts}/webSocketUserAccountSubscriber.js +2 -2
  183. package/lib/node/accounts/{userStatsAccount/webSocketUserStatsAccountSubsriber.d.ts → webSocketUserStatsAccountSubsriber.d.ts} +2 -2
  184. package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -0
  185. package/lib/node/accounts/{userStatsAccount/webSocketUserStatsAccountSubsriber.js → webSocketUserStatsAccountSubsriber.js} +2 -2
  186. package/lib/node/adminClient.d.ts +2 -2
  187. package/lib/node/adminClient.d.ts.map +1 -1
  188. package/lib/node/adminClient.js +14 -14
  189. package/lib/node/auctionSubscriber/auctionSubscriber.js +1 -1
  190. package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +1 -1
  191. package/lib/node/{config/index.d.ts → config.d.ts} +6 -6
  192. package/lib/node/config.d.ts.map +1 -0
  193. package/lib/{browser/config/index.js → node/config.js} +3 -3
  194. package/lib/node/constants/perpMarkets.d.ts +1 -1
  195. package/lib/node/constants/perpMarkets.d.ts.map +1 -1
  196. package/lib/node/constants/spotMarkets.d.ts +1 -1
  197. package/lib/node/constants/spotMarkets.d.ts.map +1 -1
  198. package/lib/node/dlob/DLOB.d.ts +3 -3
  199. package/lib/node/dlob/DLOB.d.ts.map +1 -1
  200. package/lib/node/dlob/DLOB.js +18 -13
  201. package/lib/node/dlob/DLOBNode.d.ts +5 -3
  202. package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
  203. package/lib/node/dlob/DLOBNode.js +14 -13
  204. package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
  205. package/lib/node/dlob/DLOBSubscriber.js +1 -1
  206. package/lib/node/dlob/NodeList.d.ts +4 -1
  207. package/lib/node/dlob/NodeList.d.ts.map +1 -1
  208. package/lib/node/dlob/NodeList.js +11 -8
  209. package/lib/node/dlob/orderBookLevels.d.ts +6 -0
  210. package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
  211. package/lib/node/dlob/orderBookLevels.js +5 -2
  212. package/lib/node/driftClient.d.ts +1 -1
  213. package/lib/node/driftClient.d.ts.map +1 -1
  214. package/lib/node/driftClient.js +18 -5
  215. package/lib/node/driftClientConfig.d.ts +2 -2
  216. package/lib/node/driftClientConfig.d.ts.map +1 -1
  217. package/lib/node/idl/drift.json +82 -11
  218. package/lib/node/index.d.ts +14 -21
  219. package/lib/node/index.d.ts.map +1 -1
  220. package/lib/node/index.js +14 -21
  221. package/lib/node/math/amm.d.ts +4 -0
  222. package/lib/node/math/amm.d.ts.map +1 -1
  223. package/lib/node/math/amm.js +25 -9
  224. package/lib/node/math/margin.js +1 -1
  225. package/lib/node/math/market.d.ts +10 -0
  226. package/lib/node/math/market.d.ts.map +1 -1
  227. package/lib/node/math/market.js +76 -1
  228. package/lib/node/math/orders.d.ts +1 -0
  229. package/lib/node/math/orders.d.ts.map +1 -1
  230. package/lib/node/math/orders.js +13 -1
  231. package/lib/node/math/state.d.ts +1 -0
  232. package/lib/node/math/state.d.ts.map +1 -1
  233. package/lib/node/math/state.js +6 -1
  234. package/lib/node/openbook/openbookV2Subscriber.d.ts +1 -1
  235. package/lib/node/openbook/openbookV2Subscriber.d.ts.map +1 -1
  236. package/lib/node/oracles/types.d.ts +1 -0
  237. package/lib/node/oracles/types.d.ts.map +1 -1
  238. package/lib/node/oracles/utils.d.ts.map +1 -1
  239. package/lib/node/oracles/utils.js +1 -3
  240. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +1 -1
  241. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  242. package/lib/node/orderSubscriber/OrderSubscriber.js +10 -3
  243. package/lib/node/orderSubscriber/WebsocketSubscription.js +1 -1
  244. package/lib/node/orderSubscriber/grpcSubscription.js +1 -1
  245. package/lib/node/phoenix/phoenixSubscriber.d.ts +1 -1
  246. package/lib/node/phoenix/phoenixSubscriber.d.ts.map +1 -1
  247. package/lib/node/serum/serumSubscriber.d.ts +1 -1
  248. package/lib/node/serum/serumSubscriber.d.ts.map +1 -1
  249. package/lib/node/serum/types.d.ts +1 -1
  250. package/lib/node/serum/types.d.ts.map +1 -1
  251. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts +1 -1
  252. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts.map +1 -1
  253. package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.js +1 -1
  254. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts +1 -1
  255. package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts.map +1 -1
  256. package/lib/node/swift/signedMsgUserAccountSubscriber.js +1 -1
  257. package/lib/node/swift/swiftOrderSubscriber.d.ts +1 -1
  258. package/lib/node/swift/swiftOrderSubscriber.d.ts.map +1 -1
  259. package/lib/node/types.d.ts +7 -0
  260. package/lib/node/types.d.ts.map +1 -1
  261. package/lib/node/types.js +6 -1
  262. package/lib/node/user.js +3 -3
  263. package/lib/node/userConfig.d.ts +1 -1
  264. package/lib/node/userConfig.d.ts.map +1 -1
  265. package/lib/node/userMap/PollingSubscription.d.ts +2 -2
  266. package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
  267. package/lib/node/userMap/WebsocketSubscription.d.ts +2 -2
  268. package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
  269. package/lib/node/userMap/WebsocketSubscription.js +1 -1
  270. package/lib/node/userMap/grpcSubscription.d.ts +2 -2
  271. package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
  272. package/lib/node/userMap/grpcSubscription.js +1 -1
  273. package/lib/node/userMap/userMap.d.ts +18 -3
  274. package/lib/node/userMap/userMap.d.ts.map +1 -1
  275. package/lib/node/userMap/userMap.js +1 -1
  276. package/lib/node/userMap/userStatsMap.d.ts +1 -1
  277. package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
  278. package/lib/node/userMap/userStatsMap.js +1 -1
  279. package/lib/node/userStats.js +3 -3
  280. package/lib/node/userStatsConfig.d.ts +1 -1
  281. package/lib/node/userStatsConfig.d.ts.map +1 -1
  282. package/package.json +1 -1
  283. package/src/accounts/{userAccount/basicUserAccountSubscriber.ts → basicUserAccountSubscriber.ts} +2 -6
  284. package/src/accounts/{bulkAccountLoader/bulkAccountLoader.ts → bulkAccountLoader.ts} +4 -4
  285. package/src/accounts/bulkUserStatsSubscription.ts +2 -2
  286. package/src/accounts/bulkUserSubscription.ts +2 -2
  287. package/src/accounts/{bulkAccountLoader/customizedCadenceBulkAccountLoader.ts → customizedCadenceBulkAccountLoader.ts} +1 -1
  288. package/src/accounts/{baseSubscribers/grpcAccountSubscriber.ts → grpcAccountSubscriber.ts} +26 -13
  289. package/src/accounts/{driftClientAccount/grpcDriftClientAccountSubscriber.ts → grpcDriftClientAccountSubscriber.ts} +7 -11
  290. package/src/accounts/{insuranceFundStakeAccount/grpcInsuranceFundStakeAccountSubscriber.ts → grpcInsuranceFundStakeAccountSubscriber.ts} +3 -3
  291. package/src/accounts/{programAccount/grpcProgramAccountSubscriber.ts → grpcProgramAccountSubscriber.ts} +28 -13
  292. package/src/accounts/{userAccount/grpcUserAccountSubscriber.ts → grpcUserAccountSubscriber.ts} +3 -3
  293. package/src/accounts/{userStatsAccount/grpcUserStatsAccountSubscriber.ts → grpcUserStatsAccountSubscriber.ts} +3 -3
  294. package/src/accounts/{userAccount/oneShotUserAccountSubscriber.ts → oneShotUserAccountSubscriber.ts} +2 -2
  295. package/src/accounts/{driftClientAccount/pollingDriftClientAccountSubscriber.ts → pollingDriftClientAccountSubscriber.ts} +10 -10
  296. package/src/accounts/{highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.ts → pollingHighLeverageModeConfigAccountSubscriber.ts} +3 -3
  297. package/src/accounts/{insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber.ts → pollingInsuranceFundStakeAccountSubscriber.ts} +3 -3
  298. package/src/accounts/{oracleAccount/pollingOracleAccountSubscriber.ts → pollingOracleAccountSubscriber.ts} +3 -3
  299. package/src/accounts/{tokenAccount/pollingTokenAccountSubscriber.ts → pollingTokenAccountSubscriber.ts} +3 -3
  300. package/src/accounts/{userAccount/pollingUserAccountSubscriber.ts → pollingUserAccountSubscriber.ts} +4 -4
  301. package/src/accounts/{userStatsAccount/pollingUserStatsAccountSubscriber.ts → pollingUserStatsAccountSubscriber.ts} +3 -3
  302. package/src/accounts/types.ts +12 -0
  303. package/src/accounts/{baseSubscribers/webSocketAccountSubscriber.ts → webSocketAccountSubscriber.ts} +2 -2
  304. package/src/accounts/{driftClientAccount/webSocketDriftClientAccountSubscriber.ts → webSocketDriftClientAccountSubscriber.ts} +11 -15
  305. package/src/accounts/{highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.ts → webSocketHighLeverageModeConfigAccountSubscriber.ts} +3 -3
  306. package/src/accounts/{insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.ts → webSocketInsuranceFundStakeAccountSubscriber.ts} +3 -3
  307. package/src/accounts/{programAccount/webSocketProgramAccountSubscriber.ts → webSocketProgramAccountSubscriber.ts} +1 -1
  308. package/src/accounts/{userAccount/webSocketUserAccountSubscriber.ts → webSocketUserAccountSubscriber.ts} +3 -3
  309. package/src/accounts/{userStatsAccount/webSocketUserStatsAccountSubsriber.ts → webSocketUserStatsAccountSubsriber.ts} +3 -3
  310. package/src/adminClient.ts +29 -27
  311. package/src/auctionSubscriber/auctionSubscriber.ts +1 -1
  312. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +2 -2
  313. package/src/{config/index.ts → config.ts} +7 -6
  314. package/src/constants/perpMarkets.ts +1 -1
  315. package/src/constants/spotMarkets.ts +1 -1
  316. package/src/dlob/DLOB.ts +31 -8
  317. package/src/dlob/DLOBNode.ts +22 -11
  318. package/src/dlob/DLOBSubscriber.ts +2 -1
  319. package/src/dlob/NodeList.ts +12 -3
  320. package/src/dlob/orderBookLevels.ts +8 -2
  321. package/src/driftClient.ts +22 -8
  322. package/src/driftClientConfig.ts +2 -2
  323. package/src/idl/drift.json +83 -12
  324. package/src/index.ts +14 -26
  325. package/src/math/amm.ts +49 -10
  326. package/src/math/margin.ts +1 -1
  327. package/src/math/market.ts +105 -0
  328. package/src/math/orders.ts +18 -0
  329. package/src/math/state.ts +7 -1
  330. package/src/openbook/openbookV2Subscriber.ts +1 -1
  331. package/src/oracles/types.ts +1 -0
  332. package/src/oracles/utils.ts +1 -3
  333. package/src/orderSubscriber/OrderSubscriber.ts +16 -2
  334. package/src/orderSubscriber/WebsocketSubscription.ts +1 -1
  335. package/src/orderSubscriber/grpcSubscription.ts +1 -1
  336. package/src/phoenix/phoenixSubscriber.ts +1 -1
  337. package/src/serum/serumSubscriber.ts +1 -1
  338. package/src/serum/types.ts +1 -1
  339. package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +1 -1
  340. package/src/swift/signedMsgUserAccountSubscriber.ts +1 -1
  341. package/src/swift/swiftOrderSubscriber.ts +1 -1
  342. package/src/testClient.ts +1 -1
  343. package/src/types.ts +9 -0
  344. package/src/user.ts +3 -3
  345. package/src/userConfig.ts +1 -1
  346. package/src/userMap/PollingSubscription.ts +3 -3
  347. package/src/userMap/WebsocketSubscription.ts +4 -4
  348. package/src/userMap/grpcSubscription.ts +5 -5
  349. package/src/userMap/userMap.ts +31 -4
  350. package/src/userMap/userStatsMap.ts +2 -2
  351. package/src/userStats.ts +3 -3
  352. package/src/userStatsConfig.ts +1 -1
  353. package/tests/accounts/customizedCadenceBulkAccountLoader.test.ts +1 -1
  354. package/lib/browser/config/types.d.ts +0 -1
  355. package/lib/browser/config/types.js +0 -2
  356. package/lib/browser/dlob/utils.d.ts +0 -1
  357. package/lib/browser/dlob/utils.js +0 -7
  358. package/lib/browser/userMap/events.d.ts +0 -6
  359. package/lib/browser/userMap/events.js +0 -2
  360. package/lib/browser/userMap/types.d.ts +0 -32
  361. package/lib/browser/userMap/types.js +0 -2
  362. package/lib/node/accounts/baseSubscribers/grpcAccountSubscriber.d.ts.map +0 -1
  363. package/lib/node/accounts/baseSubscribers/webSocketAccountSubscriber.d.ts.map +0 -1
  364. package/lib/node/accounts/bulkAccountLoader/bulkAccountLoader.d.ts.map +0 -1
  365. package/lib/node/accounts/bulkAccountLoader/customizedCadenceBulkAccountLoader.d.ts.map +0 -1
  366. package/lib/node/accounts/bulkAccountLoader/testBulkAccountLoader.d.ts.map +0 -1
  367. package/lib/node/accounts/driftClientAccount/grpcDriftClientAccountSubscriber.d.ts.map +0 -1
  368. package/lib/node/accounts/driftClientAccount/pollingDriftClientAccountSubscriber.d.ts.map +0 -1
  369. package/lib/node/accounts/driftClientAccount/webSocketDriftClientAccountSubscriber.d.ts.map +0 -1
  370. package/lib/node/accounts/highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.d.ts.map +0 -1
  371. package/lib/node/accounts/highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.d.ts.map +0 -1
  372. package/lib/node/accounts/insuranceFundStakeAccount/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +0 -1
  373. package/lib/node/accounts/insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +0 -1
  374. package/lib/node/accounts/insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +0 -1
  375. package/lib/node/accounts/oracleAccount/pollingOracleAccountSubscriber.d.ts.map +0 -1
  376. package/lib/node/accounts/programAccount/grpcProgramAccountSubscriber.d.ts.map +0 -1
  377. package/lib/node/accounts/programAccount/webSocketProgramAccountSubscriber.d.ts.map +0 -1
  378. package/lib/node/accounts/tokenAccount/pollingTokenAccountSubscriber.d.ts.map +0 -1
  379. package/lib/node/accounts/userAccount/basicUserAccountSubscriber.d.ts.map +0 -1
  380. package/lib/node/accounts/userAccount/grpcUserAccountSubscriber.d.ts.map +0 -1
  381. package/lib/node/accounts/userAccount/oneShotUserAccountSubscriber.d.ts.map +0 -1
  382. package/lib/node/accounts/userAccount/pollingUserAccountSubscriber.d.ts.map +0 -1
  383. package/lib/node/accounts/userAccount/webSocketUserAccountSubscriber.d.ts.map +0 -1
  384. package/lib/node/accounts/userStatsAccount/grpcUserStatsAccountSubscriber.d.ts.map +0 -1
  385. package/lib/node/accounts/userStatsAccount/pollingUserStatsAccountSubscriber.d.ts.map +0 -1
  386. package/lib/node/accounts/userStatsAccount/webSocketUserStatsAccountSubsriber.d.ts.map +0 -1
  387. package/lib/node/config/index.d.ts.map +0 -1
  388. package/lib/node/config/types.d.ts +0 -2
  389. package/lib/node/config/types.d.ts.map +0 -1
  390. package/lib/node/config/types.js +0 -2
  391. package/lib/node/dlob/utils.d.ts +0 -2
  392. package/lib/node/dlob/utils.d.ts.map +0 -1
  393. package/lib/node/dlob/utils.js +0 -7
  394. package/lib/node/userMap/events.d.ts +0 -7
  395. package/lib/node/userMap/events.d.ts.map +0 -1
  396. package/lib/node/userMap/events.js +0 -2
  397. package/lib/node/userMap/types.d.ts +0 -33
  398. package/lib/node/userMap/types.d.ts.map +0 -1
  399. package/lib/node/userMap/types.js +0 -2
  400. package/src/config/types.ts +0 -1
  401. package/src/dlob/utils.ts +0 -6
  402. package/src/userMap/events.ts +0 -7
  403. package/src/userMap/types.ts +0 -47
  404. /package/lib/browser/accounts/{userAccount/basicUserAccountSubscriber.js → basicUserAccountSubscriber.js} +0 -0
  405. /package/lib/browser/accounts/{bulkAccountLoader/customizedCadenceBulkAccountLoader.d.ts → customizedCadenceBulkAccountLoader.d.ts} +0 -0
  406. /package/lib/browser/accounts/{userAccount/oneShotUserAccountSubscriber.js → oneShotUserAccountSubscriber.js} +0 -0
  407. /package/lib/browser/accounts/{bulkAccountLoader/testBulkAccountLoader.d.ts → testBulkAccountLoader.d.ts} +0 -0
  408. /package/lib/browser/accounts/{bulkAccountLoader/testBulkAccountLoader.js → testBulkAccountLoader.js} +0 -0
  409. /package/lib/browser/accounts/{programAccount/webSocketProgramAccountSubscriber.js → webSocketProgramAccountSubscriber.js} +0 -0
  410. /package/lib/node/accounts/{userAccount/basicUserAccountSubscriber.js → basicUserAccountSubscriber.js} +0 -0
  411. /package/lib/node/accounts/{bulkAccountLoader/customizedCadenceBulkAccountLoader.d.ts → customizedCadenceBulkAccountLoader.d.ts} +0 -0
  412. /package/lib/node/accounts/{userAccount/oneShotUserAccountSubscriber.js → oneShotUserAccountSubscriber.js} +0 -0
  413. /package/lib/node/accounts/{bulkAccountLoader/testBulkAccountLoader.d.ts → testBulkAccountLoader.d.ts} +0 -0
  414. /package/lib/node/accounts/{bulkAccountLoader/testBulkAccountLoader.js → testBulkAccountLoader.js} +0 -0
  415. /package/lib/node/accounts/{programAccount/webSocketProgramAccountSubscriber.js → webSocketProgramAccountSubscriber.js} +0 -0
  416. /package/src/accounts/{bulkAccountLoader/testBulkAccountLoader.ts → testBulkAccountLoader.ts} +0 -0
package/src/dlob/DLOB.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { NodeList } from './NodeList';
2
- import { getOrderSignature } from './utils';
1
+ import { getOrderSignature, NodeList } from './NodeList';
3
2
  import { BN } from '@coral-xyz/anchor';
4
3
  import {
5
4
  BASE_PRECISION,
@@ -12,6 +11,7 @@ import { decodeName } from '../userName';
12
11
  import { DLOBNode, DLOBNodeType, TriggerOrderNode } from './DLOBNode';
13
12
  import { DriftClient } from '../driftClient';
14
13
  import {
14
+ calculateOrderBaseAssetAmount,
15
15
  getLimitPrice,
16
16
  isOrderExpired,
17
17
  isRestingLimitOrder,
@@ -181,7 +181,26 @@ export class DLOB {
181
181
  const protectedMaker = isUserProtectedMaker(userAccount);
182
182
 
183
183
  for (const order of userAccount.orders) {
184
- this.insertOrder(order, userAccountPubkeyString, slot, protectedMaker);
184
+ let baseAssetAmount = order.baseAssetAmount;
185
+ if (order.reduceOnly) {
186
+ const existingBaseAmount =
187
+ userAccount.perpPositions.find(
188
+ (pos) =>
189
+ pos.marketIndex === order.marketIndex && pos.openOrders > 0
190
+ )?.baseAssetAmount || ZERO;
191
+ baseAssetAmount = calculateOrderBaseAssetAmount(
192
+ order,
193
+ existingBaseAmount
194
+ );
195
+ }
196
+
197
+ this.insertOrder(
198
+ order,
199
+ userAccountPubkeyString,
200
+ slot,
201
+ protectedMaker,
202
+ baseAssetAmount
203
+ );
185
204
  }
186
205
  }
187
206
 
@@ -194,6 +213,7 @@ export class DLOB {
194
213
  userAccount: string,
195
214
  slot: number,
196
215
  isUserProtectedMaker: boolean,
216
+ baseAssetAmount: BN,
197
217
  onInsert?: OrderBookCallback
198
218
  ): void {
199
219
  if (!isVariant(order.status, 'open')) {
@@ -221,7 +241,8 @@ export class DLOB {
221
241
  marketType,
222
242
  userAccount,
223
243
  isUserProtectedMaker,
224
- this.protectedMakerParamsMap[marketType].get(order.marketIndex)
244
+ this.protectedMakerParamsMap[marketType].get(order.marketIndex),
245
+ baseAssetAmount
225
246
  );
226
247
 
227
248
  if (onInsert) {
@@ -233,6 +254,7 @@ export class DLOB {
233
254
  order: Order,
234
255
  userAccount: string,
235
256
  isUserProtectedMaker: boolean,
257
+ baseAssetAmount?: BN,
236
258
  onInsert?: OrderBookCallback
237
259
  ): void {
238
260
  const marketType = getVariant(order.marketType) as MarketTypeStr;
@@ -252,7 +274,8 @@ export class DLOB {
252
274
  marketType,
253
275
  userAccount,
254
276
  isUserProtectedMaker,
255
- this.protectedMakerParamsMap[marketType].get(order.marketIndex)
277
+ this.protectedMakerParamsMap[marketType].get(order.marketIndex),
278
+ baseAssetAmount
256
279
  );
257
280
  if (onInsert) {
258
281
  onInsert();
@@ -1559,7 +1582,7 @@ export class DLOB {
1559
1582
  public findNodesToTrigger(
1560
1583
  marketIndex: number,
1561
1584
  slot: number,
1562
- oraclePrice: BN,
1585
+ triggerPrice: BN,
1563
1586
  marketType: MarketType,
1564
1587
  stateAccount: StateAccount
1565
1588
  ): NodeToTrigger[] {
@@ -1576,7 +1599,7 @@ export class DLOB {
1576
1599
  : undefined;
1577
1600
  if (triggerAboveList) {
1578
1601
  for (const node of triggerAboveList.getGenerator()) {
1579
- if (oraclePrice.gt(node.order.triggerPrice)) {
1602
+ if (triggerPrice.gt(node.order.triggerPrice)) {
1580
1603
  nodesToTrigger.push({
1581
1604
  node: node,
1582
1605
  });
@@ -1591,7 +1614,7 @@ export class DLOB {
1591
1614
  : undefined;
1592
1615
  if (triggerBelowList) {
1593
1616
  for (const node of triggerBelowList.getGenerator()) {
1594
- if (oraclePrice.lt(node.order.triggerPrice)) {
1617
+ if (triggerPrice.lt(node.order.triggerPrice)) {
1595
1618
  nodesToTrigger.push({
1596
1619
  node: node,
1597
1620
  });
@@ -8,7 +8,7 @@ import { getLimitPrice } from '../math/orders';
8
8
  import { isVariant, Order, ProtectedMakerParams } from '../types';
9
9
  import { OraclePriceData } from '../oracles/types';
10
10
  import { convertToNumber } from '../math/conversion';
11
- import { getOrderSignature } from './utils';
11
+ import { getOrderSignature } from './NodeList';
12
12
 
13
13
  export interface DLOBNode {
14
14
  getPrice(oraclePriceData: OraclePriceData, slot: number): BN;
@@ -20,6 +20,7 @@ export interface DLOBNode {
20
20
  isProtectedMaker: boolean;
21
21
  protectedMakerParams?: ProtectedMakerParams;
22
22
  isSignedMsg: boolean | undefined;
23
+ baseAssetAmount: BN;
23
24
  }
24
25
 
25
26
  export abstract class OrderNode implements DLOBNode {
@@ -30,6 +31,7 @@ export abstract class OrderNode implements DLOBNode {
30
31
  haveTrigger = false;
31
32
  isProtectedMaker: boolean;
32
33
  protectedMakerParams?: ProtectedMakerParams;
34
+ baseAssetAmount: BN;
33
35
  isSignedMsg: boolean;
34
36
 
35
37
  constructor(
@@ -37,6 +39,7 @@ export abstract class OrderNode implements DLOBNode {
37
39
  userAccount: string,
38
40
  isProtectedMaker: boolean,
39
41
  protectedMakerParams?: ProtectedMakerParams,
42
+ baseAssetAmount?: BN,
40
43
  isSignedMsg = false
41
44
  ) {
42
45
  // Copy the order over to the node
@@ -45,6 +48,7 @@ export abstract class OrderNode implements DLOBNode {
45
48
  this.sortValue = this.getSortValue(order);
46
49
  this.isProtectedMaker = isProtectedMaker;
47
50
  this.protectedMakerParams = protectedMakerParams;
51
+ this.baseAssetAmount = baseAssetAmount ?? order.baseAssetAmount;
48
52
  this.isSignedMsg = isSignedMsg;
49
53
  }
50
54
 
@@ -156,8 +160,8 @@ export class SignedMsgOrderNode extends OrderNode {
156
160
  next?: SignedMsgOrderNode;
157
161
  previous?: SignedMsgOrderNode;
158
162
 
159
- constructor(order: Order, userAccount: string) {
160
- super(order, userAccount, false, undefined, true);
163
+ constructor(order: Order, userAccount: string, baseAssetAmount?: BN) {
164
+ super(order, userAccount, false, undefined, baseAssetAmount, true);
161
165
  }
162
166
 
163
167
  getSortValue(order: Order): BN {
@@ -189,7 +193,8 @@ export function createNode<T extends DLOBNodeType>(
189
193
  order: Order,
190
194
  userAccount: string,
191
195
  isProtectedMaker: boolean,
192
- protectedMakerParams?: ProtectedMakerParams
196
+ protectedMakerParams?: ProtectedMakerParams,
197
+ baseAssetAmount?: BN
193
198
  ): DLOBNodeMap[T] {
194
199
  switch (nodeType) {
195
200
  case 'floatingLimit':
@@ -197,45 +202,51 @@ export function createNode<T extends DLOBNodeType>(
197
202
  order,
198
203
  userAccount,
199
204
  isProtectedMaker,
200
- protectedMakerParams
205
+ protectedMakerParams,
206
+ baseAssetAmount
201
207
  );
202
208
  case 'protectedFloatingLimit':
203
209
  return new FloatingLimitOrderNode(
204
210
  order,
205
211
  userAccount,
206
212
  isProtectedMaker,
207
- protectedMakerParams
213
+ protectedMakerParams,
214
+ baseAssetAmount
208
215
  );
209
216
  case 'restingLimit':
210
217
  return new RestingLimitOrderNode(
211
218
  order,
212
219
  userAccount,
213
220
  isProtectedMaker,
214
- protectedMakerParams
221
+ protectedMakerParams,
222
+ baseAssetAmount
215
223
  );
216
224
  case 'takingLimit':
217
225
  return new TakingLimitOrderNode(
218
226
  order,
219
227
  userAccount,
220
228
  isProtectedMaker,
221
- protectedMakerParams
229
+ protectedMakerParams,
230
+ baseAssetAmount
222
231
  );
223
232
  case 'market':
224
233
  return new MarketOrderNode(
225
234
  order,
226
235
  userAccount,
227
236
  isProtectedMaker,
228
- undefined
237
+ undefined,
238
+ baseAssetAmount
229
239
  );
230
240
  case 'trigger':
231
241
  return new TriggerOrderNode(
232
242
  order,
233
243
  userAccount,
234
244
  isProtectedMaker,
235
- undefined
245
+ undefined,
246
+ baseAssetAmount
236
247
  );
237
248
  case 'signedMsg':
238
- return new SignedMsgOrderNode(order, userAccount);
249
+ return new SignedMsgOrderNode(order, userAccount, baseAssetAmount);
239
250
  default:
240
251
  throw Error(`Unknown DLOBNode type ${nodeType}`);
241
252
  }
@@ -139,7 +139,8 @@ export class DLOBSubscriber {
139
139
  fallbackL2Generators = [
140
140
  getVammL2Generator({
141
141
  marketAccount: this.driftClient.getPerpMarketAccount(marketIndex),
142
- oraclePriceData,
142
+ oraclePriceData:
143
+ this.driftClient.getMMOracleDataForPerpMarket(marketIndex),
143
144
  numOrders: numVammOrders ?? depth,
144
145
  topOfBookQuoteAmounts:
145
146
  marketIndex < 3
@@ -5,10 +5,17 @@ import {
5
5
  ProtectedMakerParams,
6
6
  } from '../types';
7
7
  import { createNode, DLOBNode, DLOBNodeMap } from './DLOBNode';
8
- import { getOrderSignature } from './utils';
8
+ import { BN } from '@coral-xyz/anchor';
9
9
 
10
10
  export type SortDirection = 'asc' | 'desc';
11
11
 
12
+ export function getOrderSignature(
13
+ orderId: number,
14
+ userAccount: string
15
+ ): string {
16
+ return `${userAccount.toString()}-${orderId.toString()}`;
17
+ }
18
+
12
19
  export interface DLOBNodeGenerator {
13
20
  getGenerator(): Generator<DLOBNode>;
14
21
  }
@@ -36,7 +43,8 @@ export class NodeList<NodeType extends keyof DLOBNodeMap>
36
43
  marketType: MarketTypeStr,
37
44
  userAccount: string,
38
45
  isProtectedMaker: boolean,
39
- protectedMakerParamsMap?: ProtectedMakerParams
46
+ protectedMakerParamsMap?: ProtectedMakerParams,
47
+ baseAssetAmount?: BN
40
48
  ): void {
41
49
  if (!isVariant(order.status, 'open')) {
42
50
  return;
@@ -47,7 +55,8 @@ export class NodeList<NodeType extends keyof DLOBNodeMap>
47
55
  order,
48
56
  userAccount,
49
57
  isProtectedMaker,
50
- protectedMakerParamsMap
58
+ protectedMakerParamsMap,
59
+ baseAssetAmount
51
60
  );
52
61
 
53
62
  const orderSignature = getOrderSignature(order.orderId, userAccount);
@@ -78,22 +78,28 @@ export const MAJORS_TOP_OF_BOOK_QUOTE_AMOUNTS = [
78
78
  new BN(50000).mul(QUOTE_PRECISION),
79
79
  ];
80
80
 
81
+ const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz';
82
+
81
83
  /**
82
84
  * Get an {@link Generator<L2Level>} generator from a {@link Generator<DLOBNode>}
83
85
  * @param dlobNodes e.g. {@link DLOB#getRestingLimitAsks} or {@link DLOB#getRestingLimitBids}
84
86
  * @param oraclePriceData
85
87
  * @param slot
86
88
  */
87
- const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz';
88
89
  export function* getL2GeneratorFromDLOBNodes(
89
90
  dlobNodes: Generator<DLOBNode>,
90
91
  oraclePriceData: OraclePriceData,
91
92
  slot: number
92
93
  ): Generator<L2Level> {
93
94
  for (const dlobNode of dlobNodes) {
94
- const size = dlobNode.order.baseAssetAmount.sub(
95
+ const size = dlobNode.baseAssetAmount.sub(
95
96
  dlobNode.order.baseAssetAmountFilled
96
97
  ) as BN;
98
+
99
+ if (size.lte(ZERO)) {
100
+ continue;
101
+ }
102
+
97
103
  yield {
98
104
  size,
99
105
  price: dlobNode.getPrice(oraclePriceData, slot),
@@ -123,6 +123,8 @@ import { TxSender, TxSigAndSlot } from './tx/types';
123
123
  import {
124
124
  BASE_PRECISION,
125
125
  GOV_SPOT_MARKET_INDEX,
126
+ ONE,
127
+ PERCENTAGE_PRECISION,
126
128
  PRICE_PRECISION,
127
129
  QUOTE_PRECISION,
128
130
  QUOTE_SPOT_MARKET_INDEX,
@@ -133,8 +135,8 @@ import { getSignedTokenAmount, getTokenAmount } from './math/spotBalance';
133
135
  import { decodeName, DEFAULT_USER_NAME, encodeName } from './userName';
134
136
  import { OraclePriceData } from './oracles/types';
135
137
  import { DriftClientConfig } from './driftClientConfig';
136
- import { PollingDriftClientAccountSubscriber } from './accounts/driftClientAccount/pollingDriftClientAccountSubscriber';
137
- import { WebSocketDriftClientAccountSubscriber } from './accounts/driftClientAccount/webSocketDriftClientAccountSubscriber';
138
+ import { PollingDriftClientAccountSubscriber } from './accounts/pollingDriftClientAccountSubscriber';
139
+ import { WebSocketDriftClientAccountSubscriber } from './accounts/webSocketDriftClientAccountSubscriber';
138
140
  import { RetryTxSender } from './tx/retryTxSender';
139
141
  import { User } from './user';
140
142
  import { UserSubscriptionConfig } from './userConfig';
@@ -143,9 +145,9 @@ import {
143
145
  DRIFT_ORACLE_RECEIVER_ID,
144
146
  DEFAULT_CONFIRMATION_OPTS,
145
147
  DRIFT_PROGRAM_ID,
148
+ DriftEnv,
146
149
  PYTH_LAZER_STORAGE_ACCOUNT_KEY,
147
150
  } from './config';
148
- import { DriftEnv } from './config/types';
149
151
  import { WRAPPED_SOL_MINT } from './constants/spotMarkets';
150
152
  import { UserStats } from './userStats';
151
153
  import { isSpotPositionAvailable } from './math/spotPosition';
@@ -184,7 +186,7 @@ import {
184
186
  } from './tx/utils';
185
187
  import pythSolanaReceiverIdl from './idl/pyth_solana_receiver.json';
186
188
  import { asV0Tx, PullFeed, AnchorUtils } from '@switchboard-xyz/on-demand';
187
- import { gprcDriftClientAccountSubscriber } from './accounts/driftClientAccount/grpcDriftClientAccountSubscriber';
189
+ import { gprcDriftClientAccountSubscriber } from './accounts/grpcDriftClientAccountSubscriber';
188
190
  import nacl from 'tweetnacl';
189
191
  import { Slothash } from './slot/SlothashSubscriber';
190
192
  import { getOracleId } from './oracles/oracleId';
@@ -8485,15 +8487,25 @@ export class DriftClient {
8485
8487
  }
8486
8488
 
8487
8489
  public getOracleDataForPerpMarket(marketIndex: number): OraclePriceData {
8488
- return this.accountSubscriber.getOraclePriceDataAndSlotForPerpMarket(
8489
- marketIndex
8490
- ).data;
8490
+ const perpMarket = this.getPerpMarketAccount(marketIndex);
8491
+ const isMMOracleActive = !perpMarket.amm.mmOracleSlot.eq(ZERO);
8492
+ return {
8493
+ ...this.accountSubscriber.getOraclePriceDataAndSlotForPerpMarket(
8494
+ marketIndex
8495
+ ).data,
8496
+ isMMOracleActive,
8497
+ };
8491
8498
  }
8492
8499
 
8493
8500
  public getMMOracleDataForPerpMarket(marketIndex: number): OraclePriceData {
8494
8501
  const perpMarket = this.getPerpMarketAccount(marketIndex);
8495
8502
  const oracleData = this.getOracleDataForPerpMarket(marketIndex);
8496
8503
  const stateAccountAndSlot = this.accountSubscriber.getStateAccountAndSlot();
8504
+ const pctDiff = perpMarket.amm.mmOraclePrice
8505
+ .sub(oracleData.price)
8506
+ .abs()
8507
+ .mul(PERCENTAGE_PRECISION)
8508
+ .div(BN.max(oracleData.price, ONE));
8497
8509
  if (
8498
8510
  !isOracleValid(
8499
8511
  perpMarket,
@@ -8502,7 +8514,8 @@ export class DriftClient {
8502
8514
  stateAccountAndSlot.slot
8503
8515
  ) ||
8504
8516
  perpMarket.amm.mmOraclePrice.eq(ZERO) ||
8505
- perpMarket.amm.mmOracleSlot < oracleData.slot
8517
+ perpMarket.amm.mmOracleSlot < oracleData.slot ||
8518
+ pctDiff.gt(PERCENTAGE_PRECISION.divn(100)) // 1% threshold
8506
8519
  ) {
8507
8520
  return { ...oracleData, fetchedWithMMOracle: true };
8508
8521
  } else {
@@ -8517,6 +8530,7 @@ export class DriftClient {
8517
8530
  confidence: conf,
8518
8531
  hasSufficientNumberOfDataPoints: true,
8519
8532
  fetchedWithMMOracle: true,
8533
+ isMMOracleActive: oracleData.isMMOracleActive,
8520
8534
  };
8521
8535
  }
8522
8536
  }
@@ -7,8 +7,8 @@ import {
7
7
  } from '@solana/web3.js';
8
8
  import { IWallet, TxParams } from './types';
9
9
  import { OracleInfo } from './oracles/types';
10
- import { BulkAccountLoader } from './accounts/bulkAccountLoader/bulkAccountLoader';
11
- import { DriftEnv } from './config/types';
10
+ import { BulkAccountLoader } from './accounts/bulkAccountLoader';
11
+ import { DriftEnv } from './config';
12
12
  import { TxSender } from './tx/types';
13
13
  import { TxHandler, TxHandlerConfig } from './tx/txHandler';
14
14
  import { DelistedMarketSetting, GrpcConfigs } from './accounts/types';
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.129.0",
2
+ "version": "2.130.0",
3
3
  "name": "drift",
4
4
  "instructions": [
5
5
  {
@@ -2099,7 +2099,12 @@
2099
2099
  "isSigner": false
2100
2100
  }
2101
2101
  ],
2102
- "args": []
2102
+ "args": [
2103
+ {
2104
+ "name": "disableMaintenance",
2105
+ "type": "bool"
2106
+ }
2107
+ ]
2103
2108
  },
2104
2109
  {
2105
2110
  "name": "updateUserFuelBonus",
@@ -7531,7 +7536,7 @@
7531
7536
  ]
7532
7537
  },
7533
7538
  {
7534
- "name": "updateDisableBitflagsMmOracle",
7539
+ "name": "updateFeatureBitFlagsMmOracle",
7535
7540
  "accounts": [
7536
7541
  {
7537
7542
  "name": "admin",
@@ -7546,7 +7551,7 @@
7546
7551
  ],
7547
7552
  "args": [
7548
7553
  {
7549
- "name": "disable",
7554
+ "name": "enable",
7550
7555
  "type": "bool"
7551
7556
  }
7552
7557
  ]
@@ -7795,11 +7800,24 @@
7795
7800
  "type": "u8"
7796
7801
  },
7797
7802
  {
7798
- "name": "padding",
7803
+ "name": "padding1",
7799
7804
  "type": {
7800
7805
  "array": [
7801
7806
  "u8",
7802
- 31
7807
+ 3
7808
+ ]
7809
+ }
7810
+ },
7811
+ {
7812
+ "name": "currentMaintenanceUsers",
7813
+ "type": "u32"
7814
+ },
7815
+ {
7816
+ "name": "padding2",
7817
+ "type": {
7818
+ "array": [
7819
+ "u8",
7820
+ 24
7803
7821
  ]
7804
7822
  }
7805
7823
  }
@@ -8324,12 +8342,20 @@
8324
8342
  "name": "protectedMakerDynamicDivisor",
8325
8343
  "type": "u8"
8326
8344
  },
8345
+ {
8346
+ "name": "padding1",
8347
+ "type": "u32"
8348
+ },
8349
+ {
8350
+ "name": "lastFillPrice",
8351
+ "type": "u64"
8352
+ },
8327
8353
  {
8328
8354
  "name": "padding",
8329
8355
  "type": {
8330
8356
  "array": [
8331
8357
  "u8",
8332
- 36
8358
+ 24
8333
8359
  ]
8334
8360
  }
8335
8361
  }
@@ -9060,7 +9086,7 @@
9060
9086
  "type": "u16"
9061
9087
  },
9062
9088
  {
9063
- "name": "disableBitFlags",
9089
+ "name": "featureBitFlags",
9064
9090
  "type": "u8"
9065
9091
  },
9066
9092
  {
@@ -10640,7 +10666,7 @@
10640
10666
  "name": "lastFundingRate",
10641
10667
  "docs": [
10642
10668
  "last funding rate in this perp market (unit is quote per base)",
10643
- "precision: QUOTE_PRECISION"
10669
+ "precision: FUNDING_RATE_PRECISION"
10644
10670
  ],
10645
10671
  "type": "i64"
10646
10672
  },
@@ -10648,7 +10674,7 @@
10648
10674
  "name": "lastFundingRateLong",
10649
10675
  "docs": [
10650
10676
  "last funding rate for longs in this perp market (unit is quote per base)",
10651
- "precision: QUOTE_PRECISION"
10677
+ "precision: FUNDING_RATE_PRECISION"
10652
10678
  ],
10653
10679
  "type": "i64"
10654
10680
  },
@@ -11078,9 +11104,13 @@
11078
11104
  "type": {
11079
11105
  "array": [
11080
11106
  "u8",
11081
- 11
11107
+ 3
11082
11108
  ]
11083
11109
  }
11110
+ },
11111
+ {
11112
+ "name": "lastFundingOracleTwap",
11113
+ "type": "i64"
11084
11114
  }
11085
11115
  ]
11086
11116
  }
@@ -12002,6 +12032,26 @@
12002
12032
  ]
12003
12033
  }
12004
12034
  },
12035
+ {
12036
+ "name": "LogMode",
12037
+ "type": {
12038
+ "kind": "enum",
12039
+ "variants": [
12040
+ {
12041
+ "name": "None"
12042
+ },
12043
+ {
12044
+ "name": "ExchangeOracle"
12045
+ },
12046
+ {
12047
+ "name": "MMOracle"
12048
+ },
12049
+ {
12050
+ "name": "SafeMMOracle"
12051
+ }
12052
+ ]
12053
+ }
12054
+ },
12005
12055
  {
12006
12056
  "name": "PositionUpdateType",
12007
12057
  "type": {
@@ -12751,6 +12801,20 @@
12751
12801
  ]
12752
12802
  }
12753
12803
  },
12804
+ {
12805
+ "name": "FeatureBitFlags",
12806
+ "type": {
12807
+ "kind": "enum",
12808
+ "variants": [
12809
+ {
12810
+ "name": "MmOracleUpdate"
12811
+ },
12812
+ {
12813
+ "name": "EnableMedianTriggerPrice"
12814
+ }
12815
+ ]
12816
+ }
12817
+ },
12754
12818
  {
12755
12819
  "name": "UserStatus",
12756
12820
  "type": {
@@ -13674,6 +13738,13 @@
13674
13738
  "option": "u64"
13675
13739
  },
13676
13740
  "index": false
13741
+ },
13742
+ {
13743
+ "name": "triggerPrice",
13744
+ "type": {
13745
+ "option": "u64"
13746
+ },
13747
+ "index": false
13677
13748
  }
13678
13749
  ]
13679
13750
  },
@@ -15982,4 +16053,4 @@
15982
16053
  "metadata": {
15983
16054
  "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"
15984
16055
  }
15985
- }
16056
+ }
package/src/index.ts CHANGED
@@ -9,22 +9,22 @@ export * from './oracles/strictOraclePrice';
9
9
  export * from './types';
10
10
  export * from './constants/perpMarkets';
11
11
  export * from './accounts/fetch';
12
- export * from './accounts/driftClientAccount/webSocketDriftClientAccountSubscriber';
13
- export * from './accounts/insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber';
14
- export * from './accounts/highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber';
15
- export * from './accounts/bulkAccountLoader/bulkAccountLoader';
12
+ export * from './accounts/webSocketDriftClientAccountSubscriber';
13
+ export * from './accounts/webSocketInsuranceFundStakeAccountSubscriber';
14
+ export * from './accounts/webSocketHighLeverageModeConfigAccountSubscriber';
15
+ export * from './accounts/bulkAccountLoader';
16
16
  export * from './accounts/bulkUserSubscription';
17
17
  export * from './accounts/bulkUserStatsSubscription';
18
- export { CustomizedCadenceBulkAccountLoader } from './accounts/bulkAccountLoader/customizedCadenceBulkAccountLoader';
19
- export * from './accounts/driftClientAccount/pollingDriftClientAccountSubscriber';
20
- export * from './accounts/oracleAccount/pollingOracleAccountSubscriber';
21
- export * from './accounts/tokenAccount/pollingTokenAccountSubscriber';
22
- export * from './accounts/userAccount/pollingUserAccountSubscriber';
23
- export * from './accounts/userStatsAccount/pollingUserStatsAccountSubscriber';
24
- export * from './accounts/insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber';
25
- export * from './accounts/highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber';
26
- export * from './accounts/userAccount/basicUserAccountSubscriber';
27
- export * from './accounts/userAccount/oneShotUserAccountSubscriber';
18
+ export { CustomizedCadenceBulkAccountLoader } from './accounts/customizedCadenceBulkAccountLoader';
19
+ export * from './accounts/pollingDriftClientAccountSubscriber';
20
+ export * from './accounts/pollingOracleAccountSubscriber';
21
+ export * from './accounts/pollingTokenAccountSubscriber';
22
+ export * from './accounts/pollingUserAccountSubscriber';
23
+ export * from './accounts/pollingUserStatsAccountSubscriber';
24
+ export * from './accounts/pollingInsuranceFundStakeAccountSubscriber';
25
+ export * from './accounts/pollingHighLeverageModeConfigAccountSubscriber';
26
+ export * from './accounts/basicUserAccountSubscriber';
27
+ export * from './accounts/oneShotUserAccountSubscriber';
28
28
  export * from './accounts/types';
29
29
  export * from './addresses/pda';
30
30
  export * from './adminClient';
@@ -76,11 +76,7 @@ export * from './keypair';
76
76
  export * from './types';
77
77
  export * from './math/utils';
78
78
  export * from './math/fuel';
79
-
80
- /** Config */
81
79
  export * from './config';
82
- export * from './config/types';
83
-
84
80
  export * from './constants/numericConstants';
85
81
  export * from './serum/serumSubscriber';
86
82
  export * from './serum/serumFulfillmentConfigMap';
@@ -113,24 +109,16 @@ export * from './util/pythOracleUtils';
113
109
  export * from './math/spotBalance';
114
110
  export * from './constants/spotMarkets';
115
111
  export * from './driftClientConfig';
116
-
117
- /** DLOB */
118
112
  export * from './dlob/DLOB';
119
113
  export * from './dlob/DLOBNode';
120
114
  export * from './dlob/NodeList';
121
115
  export * from './dlob/DLOBSubscriber';
122
116
  export * from './dlob/types';
123
117
  export * from './dlob/orderBookLevels';
124
- export * from './dlob/utils';
125
-
126
- /** UserMap */
127
118
  export * from './userMap/userMap';
128
119
  export * from './userMap/referrerMap';
129
120
  export * from './userMap/userStatsMap';
130
121
  export * from './userMap/userMapConfig';
131
- export * from './userMap/events';
132
- export * from './userMap/types';
133
-
134
122
  export * from './math/bankruptcy';
135
123
  export * from './orderSubscriber';
136
124
  export * from './orderSubscriber/types';