@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
@@ -19,16 +19,19 @@ exports.MAJORS_TOP_OF_BOOK_QUOTE_AMOUNTS = [
19
19
  new anchor_1.BN(20000).mul(numericConstants_1.QUOTE_PRECISION),
20
20
  new anchor_1.BN(50000).mul(numericConstants_1.QUOTE_PRECISION),
21
21
  ];
22
+ const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz';
22
23
  /**
23
24
  * Get an {@link Generator<L2Level>} generator from a {@link Generator<DLOBNode>}
24
25
  * @param dlobNodes e.g. {@link DLOB#getRestingLimitAsks} or {@link DLOB#getRestingLimitBids}
25
26
  * @param oraclePriceData
26
27
  * @param slot
27
28
  */
28
- const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz';
29
29
  function* getL2GeneratorFromDLOBNodes(dlobNodes, oraclePriceData, slot) {
30
30
  for (const dlobNode of dlobNodes) {
31
- const size = dlobNode.order.baseAssetAmount.sub(dlobNode.order.baseAssetAmountFilled);
31
+ const size = dlobNode.baseAssetAmount.sub(dlobNode.order.baseAssetAmountFilled);
32
+ if (size.lte(numericConstants_1.ZERO)) {
33
+ continue;
34
+ }
32
35
  yield {
33
36
  size,
34
37
  price: dlobNode.getPrice(oraclePriceData, slot),
@@ -16,7 +16,7 @@ import { OraclePriceData } from './oracles/types';
16
16
  import { DriftClientConfig } from './driftClientConfig';
17
17
  import { User } from './user';
18
18
  import { UserSubscriptionConfig } from './userConfig';
19
- import { DriftEnv } from './config/types';
19
+ import { DriftEnv } from './config';
20
20
  import { UserStats } from './userStats';
21
21
  import { JupiterClient, QuoteResponse, SwapMode } from './jupiter/jupiterClient';
22
22
  import { UserStatsSubscriptionConfig } from './userStatsConfig';
@@ -41,8 +41,8 @@ const numericConstants_1 = require("./constants/numericConstants");
41
41
  const position_1 = require("./math/position");
42
42
  const spotBalance_1 = require("./math/spotBalance");
43
43
  const userName_1 = require("./userName");
44
- const pollingDriftClientAccountSubscriber_1 = require("./accounts/driftClientAccount/pollingDriftClientAccountSubscriber");
45
- const webSocketDriftClientAccountSubscriber_1 = require("./accounts/driftClientAccount/webSocketDriftClientAccountSubscriber");
44
+ const pollingDriftClientAccountSubscriber_1 = require("./accounts/pollingDriftClientAccountSubscriber");
45
+ const webSocketDriftClientAccountSubscriber_1 = require("./accounts/webSocketDriftClientAccountSubscriber");
46
46
  const retryTxSender_1 = require("./tx/retryTxSender");
47
47
  const user_1 = require("./user");
48
48
  const config_1 = require("./config");
@@ -67,7 +67,7 @@ const ed25519Utils_1 = require("./util/ed25519Utils");
67
67
  const utils_2 = require("./tx/utils");
68
68
  const pyth_solana_receiver_json_1 = __importDefault(require("./idl/pyth_solana_receiver.json"));
69
69
  const on_demand_1 = require("@switchboard-xyz/on-demand");
70
- const grpcDriftClientAccountSubscriber_1 = require("./accounts/driftClientAccount/grpcDriftClientAccountSubscriber");
70
+ const grpcDriftClientAccountSubscriber_1 = require("./accounts/grpcDriftClientAccountSubscriber");
71
71
  const tweetnacl_1 = __importDefault(require("tweetnacl"));
72
72
  const oracleId_1 = require("./oracles/oracleId");
73
73
  const sha256_1 = require("@noble/hashes/sha256");
@@ -4417,15 +4417,27 @@ class DriftClient {
4417
4417
  this.eventEmitter.emit(eventName, data);
4418
4418
  }
4419
4419
  getOracleDataForPerpMarket(marketIndex) {
4420
- return this.accountSubscriber.getOraclePriceDataAndSlotForPerpMarket(marketIndex).data;
4420
+ const perpMarket = this.getPerpMarketAccount(marketIndex);
4421
+ const isMMOracleActive = !perpMarket.amm.mmOracleSlot.eq(numericConstants_1.ZERO);
4422
+ return {
4423
+ ...this.accountSubscriber.getOraclePriceDataAndSlotForPerpMarket(marketIndex).data,
4424
+ isMMOracleActive,
4425
+ };
4421
4426
  }
4422
4427
  getMMOracleDataForPerpMarket(marketIndex) {
4423
4428
  const perpMarket = this.getPerpMarketAccount(marketIndex);
4424
4429
  const oracleData = this.getOracleDataForPerpMarket(marketIndex);
4425
4430
  const stateAccountAndSlot = this.accountSubscriber.getStateAccountAndSlot();
4431
+ const pctDiff = perpMarket.amm.mmOraclePrice
4432
+ .sub(oracleData.price)
4433
+ .abs()
4434
+ .mul(numericConstants_1.PERCENTAGE_PRECISION)
4435
+ .div(anchor_1.BN.max(oracleData.price, numericConstants_1.ONE));
4426
4436
  if (!(0, oracles_1.isOracleValid)(perpMarket, oracleData, stateAccountAndSlot.data.oracleGuardRails, stateAccountAndSlot.slot) ||
4427
4437
  perpMarket.amm.mmOraclePrice.eq(numericConstants_1.ZERO) ||
4428
- perpMarket.amm.mmOracleSlot < oracleData.slot) {
4438
+ perpMarket.amm.mmOracleSlot < oracleData.slot ||
4439
+ pctDiff.gt(numericConstants_1.PERCENTAGE_PRECISION.divn(100)) // 1% threshold
4440
+ ) {
4429
4441
  return { ...oracleData, fetchedWithMMOracle: true };
4430
4442
  }
4431
4443
  else {
@@ -4440,6 +4452,7 @@ class DriftClient {
4440
4452
  confidence: conf,
4441
4453
  hasSufficientNumberOfDataPoints: true,
4442
4454
  fetchedWithMMOracle: true,
4455
+ isMMOracleActive: oracleData.isMMOracleActive,
4443
4456
  };
4444
4457
  }
4445
4458
  }
@@ -1,8 +1,8 @@
1
1
  import { Commitment, ConfirmOptions, Connection, PublicKey, TransactionVersion } from '@solana/web3.js';
2
2
  import { IWallet, TxParams } from './types';
3
3
  import { OracleInfo } from './oracles/types';
4
- import { BulkAccountLoader } from './accounts/bulkAccountLoader/bulkAccountLoader';
5
- import { DriftEnv } from './config/types';
4
+ import { BulkAccountLoader } from './accounts/bulkAccountLoader';
5
+ import { DriftEnv } from './config';
6
6
  import { TxSender } from './tx/types';
7
7
  import { TxHandler, TxHandlerConfig } from './tx/txHandler';
8
8
  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
  },
@@ -8,22 +8,22 @@ export * from './oracles/strictOraclePrice';
8
8
  export * from './types';
9
9
  export * from './constants/perpMarkets';
10
10
  export * from './accounts/fetch';
11
- export * from './accounts/driftClientAccount/webSocketDriftClientAccountSubscriber';
12
- export * from './accounts/insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber';
13
- export * from './accounts/highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber';
14
- export * from './accounts/bulkAccountLoader/bulkAccountLoader';
11
+ export * from './accounts/webSocketDriftClientAccountSubscriber';
12
+ export * from './accounts/webSocketInsuranceFundStakeAccountSubscriber';
13
+ export * from './accounts/webSocketHighLeverageModeConfigAccountSubscriber';
14
+ export * from './accounts/bulkAccountLoader';
15
15
  export * from './accounts/bulkUserSubscription';
16
16
  export * from './accounts/bulkUserStatsSubscription';
17
- export { CustomizedCadenceBulkAccountLoader } from './accounts/bulkAccountLoader/customizedCadenceBulkAccountLoader';
18
- export * from './accounts/driftClientAccount/pollingDriftClientAccountSubscriber';
19
- export * from './accounts/oracleAccount/pollingOracleAccountSubscriber';
20
- export * from './accounts/tokenAccount/pollingTokenAccountSubscriber';
21
- export * from './accounts/userAccount/pollingUserAccountSubscriber';
22
- export * from './accounts/userStatsAccount/pollingUserStatsAccountSubscriber';
23
- export * from './accounts/insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber';
24
- export * from './accounts/highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber';
25
- export * from './accounts/userAccount/basicUserAccountSubscriber';
26
- export * from './accounts/userAccount/oneShotUserAccountSubscriber';
17
+ export { CustomizedCadenceBulkAccountLoader } from './accounts/customizedCadenceBulkAccountLoader';
18
+ export * from './accounts/pollingDriftClientAccountSubscriber';
19
+ export * from './accounts/pollingOracleAccountSubscriber';
20
+ export * from './accounts/pollingTokenAccountSubscriber';
21
+ export * from './accounts/pollingUserAccountSubscriber';
22
+ export * from './accounts/pollingUserStatsAccountSubscriber';
23
+ export * from './accounts/pollingInsuranceFundStakeAccountSubscriber';
24
+ export * from './accounts/pollingHighLeverageModeConfigAccountSubscriber';
25
+ export * from './accounts/basicUserAccountSubscriber';
26
+ export * from './accounts/oneShotUserAccountSubscriber';
27
27
  export * from './accounts/types';
28
28
  export * from './addresses/pda';
29
29
  export * from './adminClient';
@@ -75,9 +75,7 @@ export * from './keypair';
75
75
  export * from './types';
76
76
  export * from './math/utils';
77
77
  export * from './math/fuel';
78
- /** Config */
79
78
  export * from './config';
80
- export * from './config/types';
81
79
  export * from './constants/numericConstants';
82
80
  export * from './serum/serumSubscriber';
83
81
  export * from './serum/serumFulfillmentConfigMap';
@@ -110,21 +108,16 @@ export * from './util/pythOracleUtils';
110
108
  export * from './math/spotBalance';
111
109
  export * from './constants/spotMarkets';
112
110
  export * from './driftClientConfig';
113
- /** DLOB */
114
111
  export * from './dlob/DLOB';
115
112
  export * from './dlob/DLOBNode';
116
113
  export * from './dlob/NodeList';
117
114
  export * from './dlob/DLOBSubscriber';
118
115
  export * from './dlob/types';
119
116
  export * from './dlob/orderBookLevels';
120
- export * from './dlob/utils';
121
- /** UserMap */
122
117
  export * from './userMap/userMap';
123
118
  export * from './userMap/referrerMap';
124
119
  export * from './userMap/userStatsMap';
125
120
  export * from './userMap/userMapConfig';
126
- export * from './userMap/events';
127
- export * from './userMap/types';
128
121
  export * from './math/bankruptcy';
129
122
  export * from './orderSubscriber';
130
123
  export * from './orderSubscriber/types';
@@ -31,23 +31,23 @@ __exportStar(require("./oracles/strictOraclePrice"), exports);
31
31
  __exportStar(require("./types"), exports);
32
32
  __exportStar(require("./constants/perpMarkets"), exports);
33
33
  __exportStar(require("./accounts/fetch"), exports);
34
- __exportStar(require("./accounts/driftClientAccount/webSocketDriftClientAccountSubscriber"), exports);
35
- __exportStar(require("./accounts/insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber"), exports);
36
- __exportStar(require("./accounts/highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber"), exports);
37
- __exportStar(require("./accounts/bulkAccountLoader/bulkAccountLoader"), exports);
34
+ __exportStar(require("./accounts/webSocketDriftClientAccountSubscriber"), exports);
35
+ __exportStar(require("./accounts/webSocketInsuranceFundStakeAccountSubscriber"), exports);
36
+ __exportStar(require("./accounts/webSocketHighLeverageModeConfigAccountSubscriber"), exports);
37
+ __exportStar(require("./accounts/bulkAccountLoader"), exports);
38
38
  __exportStar(require("./accounts/bulkUserSubscription"), exports);
39
39
  __exportStar(require("./accounts/bulkUserStatsSubscription"), exports);
40
- var customizedCadenceBulkAccountLoader_1 = require("./accounts/bulkAccountLoader/customizedCadenceBulkAccountLoader");
40
+ var customizedCadenceBulkAccountLoader_1 = require("./accounts/customizedCadenceBulkAccountLoader");
41
41
  Object.defineProperty(exports, "CustomizedCadenceBulkAccountLoader", { enumerable: true, get: function () { return customizedCadenceBulkAccountLoader_1.CustomizedCadenceBulkAccountLoader; } });
42
- __exportStar(require("./accounts/driftClientAccount/pollingDriftClientAccountSubscriber"), exports);
43
- __exportStar(require("./accounts/oracleAccount/pollingOracleAccountSubscriber"), exports);
44
- __exportStar(require("./accounts/tokenAccount/pollingTokenAccountSubscriber"), exports);
45
- __exportStar(require("./accounts/userAccount/pollingUserAccountSubscriber"), exports);
46
- __exportStar(require("./accounts/userStatsAccount/pollingUserStatsAccountSubscriber"), exports);
47
- __exportStar(require("./accounts/insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber"), exports);
48
- __exportStar(require("./accounts/highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber"), exports);
49
- __exportStar(require("./accounts/userAccount/basicUserAccountSubscriber"), exports);
50
- __exportStar(require("./accounts/userAccount/oneShotUserAccountSubscriber"), exports);
42
+ __exportStar(require("./accounts/pollingDriftClientAccountSubscriber"), exports);
43
+ __exportStar(require("./accounts/pollingOracleAccountSubscriber"), exports);
44
+ __exportStar(require("./accounts/pollingTokenAccountSubscriber"), exports);
45
+ __exportStar(require("./accounts/pollingUserAccountSubscriber"), exports);
46
+ __exportStar(require("./accounts/pollingUserStatsAccountSubscriber"), exports);
47
+ __exportStar(require("./accounts/pollingInsuranceFundStakeAccountSubscriber"), exports);
48
+ __exportStar(require("./accounts/pollingHighLeverageModeConfigAccountSubscriber"), exports);
49
+ __exportStar(require("./accounts/basicUserAccountSubscriber"), exports);
50
+ __exportStar(require("./accounts/oneShotUserAccountSubscriber"), exports);
51
51
  __exportStar(require("./accounts/types"), exports);
52
52
  __exportStar(require("./addresses/pda"), exports);
53
53
  __exportStar(require("./adminClient"), exports);
@@ -99,9 +99,7 @@ __exportStar(require("./keypair"), exports);
99
99
  __exportStar(require("./types"), exports);
100
100
  __exportStar(require("./math/utils"), exports);
101
101
  __exportStar(require("./math/fuel"), exports);
102
- /** Config */
103
102
  __exportStar(require("./config"), exports);
104
- __exportStar(require("./config/types"), exports);
105
103
  __exportStar(require("./constants/numericConstants"), exports);
106
104
  __exportStar(require("./serum/serumSubscriber"), exports);
107
105
  __exportStar(require("./serum/serumFulfillmentConfigMap"), exports);
@@ -134,21 +132,16 @@ __exportStar(require("./util/pythOracleUtils"), exports);
134
132
  __exportStar(require("./math/spotBalance"), exports);
135
133
  __exportStar(require("./constants/spotMarkets"), exports);
136
134
  __exportStar(require("./driftClientConfig"), exports);
137
- /** DLOB */
138
135
  __exportStar(require("./dlob/DLOB"), exports);
139
136
  __exportStar(require("./dlob/DLOBNode"), exports);
140
137
  __exportStar(require("./dlob/NodeList"), exports);
141
138
  __exportStar(require("./dlob/DLOBSubscriber"), exports);
142
139
  __exportStar(require("./dlob/types"), exports);
143
140
  __exportStar(require("./dlob/orderBookLevels"), exports);
144
- __exportStar(require("./dlob/utils"), exports);
145
- /** UserMap */
146
141
  __exportStar(require("./userMap/userMap"), exports);
147
142
  __exportStar(require("./userMap/referrerMap"), exports);
148
143
  __exportStar(require("./userMap/userStatsMap"), exports);
149
144
  __exportStar(require("./userMap/userMapConfig"), exports);
150
- __exportStar(require("./userMap/events"), exports);
151
- __exportStar(require("./userMap/types"), exports);
152
145
  __exportStar(require("./math/bankruptcy"), exports);
153
146
  __exportStar(require("./orderSubscriber"), exports);
154
147
  __exportStar(require("./orderSubscriber/types"), exports);
@@ -12,6 +12,10 @@ export declare function calculateUpdatedAMMSpreadReserves(amm: AMM, direction: P
12
12
  sqrtK: BN;
13
13
  newPeg: BN;
14
14
  };
15
+ export declare function calculateAMMBidAskPrice(amm: AMM, oraclePriceData: OraclePriceData, withUpdate?: boolean, isPrediction?: boolean): [BN, BN];
16
+ /**
17
+ * @deprecated Use calculateAMMBidAskPrice instead
18
+ */
15
19
  export declare function calculateBidAskPrice(amm: AMM, oraclePriceData: OraclePriceData, withUpdate?: boolean, isPrediction?: boolean): [BN, BN];
16
20
  /**
17
21
  * Calculates a price given an arbitrary base and quote amount (they must have the same precision)
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateMaxBaseAssetAmountFillable = exports.calculateQuoteAssetAmountSwapped = exports.calculateMaxBaseAssetAmountToTrade = exports.calculateTerminalPrice = exports.getSwapDirection = exports.calculateSwapOutput = exports.calculateSpreadReserves = exports.getQuoteAssetReservePredictionMarketBounds = exports.calculateSpread = exports.calculateSpreadBN = exports.calculateVolSpreadBN = exports.calculateMaxSpread = exports.calculateEffectiveLeverage = exports.calculateReferencePriceOffset = exports.calculateInventoryScale = exports.calculateInventoryLiquidityRatio = exports.calculateMarketOpenBidAsk = exports.calculateAmmReservesAfterSwap = exports.calculatePrice = exports.calculateBidAskPrice = exports.calculateUpdatedAMMSpreadReserves = exports.calculateUpdatedAMM = exports.calculateNewAmm = exports.calculateOptimalPegAndBudget = exports.calculatePegFromTargetPrice = void 0;
3
+ exports.calculateMaxBaseAssetAmountFillable = exports.calculateQuoteAssetAmountSwapped = exports.calculateMaxBaseAssetAmountToTrade = exports.calculateTerminalPrice = exports.getSwapDirection = exports.calculateSwapOutput = exports.calculateSpreadReserves = exports.getQuoteAssetReservePredictionMarketBounds = exports.calculateSpread = exports.calculateSpreadBN = exports.calculateVolSpreadBN = exports.calculateMaxSpread = exports.calculateEffectiveLeverage = exports.calculateReferencePriceOffset = exports.calculateInventoryScale = exports.calculateInventoryLiquidityRatio = exports.calculateMarketOpenBidAsk = exports.calculateAmmReservesAfterSwap = exports.calculatePrice = exports.calculateBidAskPrice = exports.calculateAMMBidAskPrice = exports.calculateUpdatedAMMSpreadReserves = exports.calculateUpdatedAMM = exports.calculateNewAmm = exports.calculateOptimalPegAndBudget = exports.calculatePegFromTargetPrice = void 0;
4
4
  const anchor_1 = require("@coral-xyz/anchor");
5
5
  const numericConstants_1 = require("../constants/numericConstants");
6
6
  const types_1 = require("../types");
@@ -82,9 +82,6 @@ function calculateNewAmm(amm, oraclePriceData) {
82
82
  }
83
83
  exports.calculateNewAmm = calculateNewAmm;
84
84
  function calculateUpdatedAMM(amm, oraclePriceData) {
85
- if (!(oraclePriceData === null || oraclePriceData === void 0 ? void 0 : oraclePriceData.fetchedWithMMOracle)) {
86
- console.log('Use driftClient method getMMOracleDataForPerpMarket for accurate MM pricing');
87
- }
88
85
  if (amm.curveUpdateIntensity == 0 || oraclePriceData === undefined) {
89
86
  return amm;
90
87
  }
@@ -108,8 +105,9 @@ function calculateUpdatedAMM(amm, oraclePriceData) {
108
105
  }
109
106
  exports.calculateUpdatedAMM = calculateUpdatedAMM;
110
107
  function calculateUpdatedAMMSpreadReserves(amm, direction, oraclePriceData, isPrediction = false) {
111
- if (!(oraclePriceData === null || oraclePriceData === void 0 ? void 0 : oraclePriceData.fetchedWithMMOracle)) {
112
- console.log('Use driftClient method getMMOracleDataForPerpMarket for accurate MM pricing');
108
+ if (!(oraclePriceData === null || oraclePriceData === void 0 ? void 0 : oraclePriceData.fetchedWithMMOracle) &&
109
+ (oraclePriceData === null || oraclePriceData === void 0 ? void 0 : oraclePriceData.isMMOracleActive)) {
110
+ console.log('Use driftClient method getMMOracleDataForPerpMarket for accurate updated AMM in calculateUpdatedAMMSpreadReserves');
113
111
  }
114
112
  const newAmm = calculateUpdatedAMM(amm, oraclePriceData);
115
113
  const [shortReserves, longReserves] = calculateSpreadReserves(newAmm, oraclePriceData, undefined, isPrediction);
@@ -125,10 +123,28 @@ function calculateUpdatedAMMSpreadReserves(amm, direction, oraclePriceData, isPr
125
123
  return result;
126
124
  }
127
125
  exports.calculateUpdatedAMMSpreadReserves = calculateUpdatedAMMSpreadReserves;
128
- function calculateBidAskPrice(amm, oraclePriceData, withUpdate = true, isPrediction = false) {
129
- if (!(oraclePriceData === null || oraclePriceData === void 0 ? void 0 : oraclePriceData.fetchedWithMMOracle)) {
130
- console.log('Use driftClient method getMMOracleDataForPerpMarket for accurate MM pricing');
126
+ function calculateAMMBidAskPrice(amm, oraclePriceData, withUpdate = true, isPrediction = false) {
127
+ if (!(oraclePriceData === null || oraclePriceData === void 0 ? void 0 : oraclePriceData.fetchedWithMMOracle) &&
128
+ (oraclePriceData === null || oraclePriceData === void 0 ? void 0 : oraclePriceData.isMMOracleActive)) {
129
+ console.log('Use driftClient method getMMOracleDataForPerpMarket for accurate MM pricing in calculateAMMBidAskPrice');
130
+ }
131
+ let newAmm;
132
+ if (withUpdate) {
133
+ newAmm = calculateUpdatedAMM(amm, oraclePriceData);
134
+ }
135
+ else {
136
+ newAmm = amm;
131
137
  }
138
+ const [bidReserves, askReserves] = calculateSpreadReserves(newAmm, oraclePriceData, undefined, isPrediction);
139
+ const askPrice = calculatePrice(askReserves.baseAssetReserve, askReserves.quoteAssetReserve, newAmm.pegMultiplier);
140
+ const bidPrice = calculatePrice(bidReserves.baseAssetReserve, bidReserves.quoteAssetReserve, newAmm.pegMultiplier);
141
+ return [bidPrice, askPrice];
142
+ }
143
+ exports.calculateAMMBidAskPrice = calculateAMMBidAskPrice;
144
+ /**
145
+ * @deprecated Use calculateAMMBidAskPrice instead
146
+ */
147
+ function calculateBidAskPrice(amm, oraclePriceData, withUpdate = true, isPrediction = false) {
132
148
  let newAmm;
133
149
  if (withUpdate) {
134
150
  newAmm = calculateUpdatedAMM(amm, oraclePriceData);
@@ -6,7 +6,7 @@ const numericConstants_1 = require("../constants/numericConstants");
6
6
  const anchor_1 = require("@coral-xyz/anchor");
7
7
  const market_1 = require("./market");
8
8
  const spotBalance_1 = require("./spotBalance");
9
- const oneShotUserAccountSubscriber_1 = require("../accounts/userAccount/oneShotUserAccountSubscriber");
9
+ const oneShotUserAccountSubscriber_1 = require("../accounts/oneShotUserAccountSubscriber");
10
10
  const user_1 = require("../user");
11
11
  const types_1 = require("../types");
12
12
  const assert_1 = require("../assert/assert");
@@ -38,3 +38,13 @@ export declare function calculateAvailablePerpLiquidity(market: PerpMarketAccoun
38
38
  asks: BN;
39
39
  };
40
40
  export declare function calculatePerpMarketBaseLiquidatorFee(market: PerpMarketAccount, userHighLeverageMode: boolean): number;
41
+ /**
42
+ * Calculates trigger price for a perp market based on oracle price and current time
43
+ * Implements the same logic as the Rust get_trigger_price function
44
+ *
45
+ * @param market - The perp market account
46
+ * @param oraclePrice - Current oracle price (precision: PRICE_PRECISION)
47
+ * @param now - Current timestamp in seconds
48
+ * @returns trigger price (precision: PRICE_PRECISION)
49
+ */
50
+ export declare function getTriggerPrice(market: PerpMarketAccount, oraclePrice: BN, now: BN, useMedianPrice: boolean): BN;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculatePerpMarketBaseLiquidatorFee = exports.calculateAvailablePerpLiquidity = exports.calculateNetUserPnlImbalance = exports.calculateNetUserPnl = exports.calculateMarketMaxAvailableInsurance = exports.calculateMarketAvailablePNL = exports.calculateUnrealizedAssetWeight = exports.calculateMarketMarginRatio = exports.calculateOracleSpread = exports.calculateOracleReserveSpread = exports.calculateNewMarketAfterTrade = exports.calculateAskPrice = exports.calculateBidPrice = exports.calculateReservePrice = void 0;
3
+ exports.getTriggerPrice = exports.calculatePerpMarketBaseLiquidatorFee = exports.calculateAvailablePerpLiquidity = exports.calculateNetUserPnlImbalance = exports.calculateNetUserPnl = exports.calculateMarketMaxAvailableInsurance = exports.calculateMarketAvailablePNL = exports.calculateUnrealizedAssetWeight = exports.calculateMarketMarginRatio = exports.calculateOracleSpread = exports.calculateOracleReserveSpread = exports.calculateNewMarketAfterTrade = exports.calculateAskPrice = exports.calculateBidPrice = exports.calculateReservePrice = void 0;
4
4
  const anchor_1 = require("@coral-xyz/anchor");
5
5
  const types_1 = require("../types");
6
6
  const amm_1 = require("./amm");
@@ -172,3 +172,78 @@ function calculatePerpMarketBaseLiquidatorFee(market, userHighLeverageMode) {
172
172
  }
173
173
  }
174
174
  exports.calculatePerpMarketBaseLiquidatorFee = calculatePerpMarketBaseLiquidatorFee;
175
+ /**
176
+ * Calculates trigger price for a perp market based on oracle price and current time
177
+ * Implements the same logic as the Rust get_trigger_price function
178
+ *
179
+ * @param market - The perp market account
180
+ * @param oraclePrice - Current oracle price (precision: PRICE_PRECISION)
181
+ * @param now - Current timestamp in seconds
182
+ * @returns trigger price (precision: PRICE_PRECISION)
183
+ */
184
+ function getTriggerPrice(market, oraclePrice, now, useMedianPrice) {
185
+ if (!useMedianPrice) {
186
+ return oraclePrice.abs();
187
+ }
188
+ const lastFillPrice = market.lastFillPrice;
189
+ // Calculate 5-minute basis
190
+ const markPrice5minTwap = market.amm.lastMarkPriceTwap5Min;
191
+ const lastOraclePriceTwap5min = market.amm.historicalOracleData.lastOraclePriceTwap5Min;
192
+ const basis5min = markPrice5minTwap.sub(lastOraclePriceTwap5min);
193
+ const oraclePlusBasis5min = oraclePrice.add(basis5min);
194
+ // Calculate funding basis
195
+ const lastFundingBasis = getLastFundingBasis(market, oraclePrice, now);
196
+ const oraclePlusFundingBasis = oraclePrice.add(lastFundingBasis);
197
+ const prices = [
198
+ lastFillPrice.gt(numericConstants_1.ZERO) ? lastFillPrice : oraclePrice,
199
+ oraclePlusFundingBasis,
200
+ oraclePlusBasis5min,
201
+ ].sort((a, b) => a.cmp(b));
202
+ const medianPrice = prices[1];
203
+ return clampTriggerPrice(market, oraclePrice.abs(), medianPrice);
204
+ }
205
+ exports.getTriggerPrice = getTriggerPrice;
206
+ /**
207
+ * Calculates the last funding basis for trigger price calculation
208
+ * Implements the same logic as the Rust get_last_funding_basis function
209
+ */
210
+ function getLastFundingBasis(market, oraclePrice, now) {
211
+ if (market.amm.lastFundingOracleTwap.gt(numericConstants_1.ZERO)) {
212
+ const lastFundingRate = market.amm.lastFundingRate
213
+ .mul(numericConstants_1.PRICE_PRECISION)
214
+ .div(market.amm.lastFundingOracleTwap)
215
+ .muln(24);
216
+ const lastFundingRatePreAdj = lastFundingRate.sub(numericConstants_1.FUNDING_RATE_PRECISION.div(new anchor_1.BN(5000)) // FUNDING_RATE_OFFSET_PERCENTAGE
217
+ );
218
+ const timeLeftUntilFundingUpdate = anchor_1.BN.min(anchor_1.BN.max(now.sub(market.amm.lastFundingRateTs), numericConstants_1.ZERO), market.amm.fundingPeriod);
219
+ const lastFundingBasis = oraclePrice
220
+ .mul(lastFundingRatePreAdj)
221
+ .div(numericConstants_1.PERCENTAGE_PRECISION)
222
+ .mul(market.amm.fundingPeriod.sub(timeLeftUntilFundingUpdate))
223
+ .div(market.amm.fundingPeriod)
224
+ .div(new anchor_1.BN(1000)); // FUNDING_RATE_BUFFER
225
+ return lastFundingBasis;
226
+ }
227
+ else {
228
+ return numericConstants_1.ZERO;
229
+ }
230
+ }
231
+ /**
232
+ * Clamps trigger price based on contract tier
233
+ * Implements the same logic as the Rust clamp_trigger_price function
234
+ */
235
+ function clampTriggerPrice(market, oraclePrice, medianPrice) {
236
+ let maxBpsDiff;
237
+ const tier = market.contractTier;
238
+ if ((0, types_1.isVariant)(tier, 'a') || (0, types_1.isVariant)(tier, 'b')) {
239
+ maxBpsDiff = new anchor_1.BN(500); // 20 BPS
240
+ }
241
+ else if ((0, types_1.isVariant)(tier, 'c')) {
242
+ maxBpsDiff = new anchor_1.BN(100); // 100 BPS
243
+ }
244
+ else {
245
+ maxBpsDiff = new anchor_1.BN(40); // 250 BPS
246
+ }
247
+ const maxOracleDiff = oraclePrice.div(maxBpsDiff);
248
+ return anchor_1.BN.min(anchor_1.BN.max(medianPrice, oraclePrice.sub(maxOracleDiff)), oraclePrice.add(maxOracleDiff));
249
+ }
@@ -23,3 +23,4 @@ export declare function isTriggered(order: Order): boolean;
23
23
  export declare function isRestingLimitOrder(order: Order, slot: number): boolean;
24
24
  export declare function isTakingOrder(order: Order, slot: number): boolean;
25
25
  export declare function isSignedMsgOrder(order: Order): boolean;
26
+ export declare function calculateOrderBaseAssetAmount(order: Order, existingBaseAssetAmount: BN): BN;