@drift-labs/common 1.0.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 (400) hide show
  1. package/lib/Config.d.ts +26 -0
  2. package/lib/Config.js +29 -0
  3. package/lib/Config.js.map +1 -0
  4. package/lib/EnvironmentConstants.d.ts +40 -0
  5. package/lib/EnvironmentConstants.js +64 -0
  6. package/lib/EnvironmentConstants.js.map +1 -0
  7. package/lib/actions/actionHelpers/accountDeletionHelpers.d.ts +16 -0
  8. package/lib/actions/actionHelpers/accountDeletionHelpers.js +151 -0
  9. package/lib/actions/actionHelpers/accountDeletionHelpers.js.map +1 -0
  10. package/lib/actions/actionHelpers/actionHelpers.d.ts +13 -0
  11. package/lib/actions/actionHelpers/actionHelpers.js +8 -0
  12. package/lib/actions/actionHelpers/actionHelpers.js.map +1 -0
  13. package/lib/chartConstants.d.ts +2 -0
  14. package/lib/chartConstants.js +14 -0
  15. package/lib/chartConstants.js.map +1 -0
  16. package/lib/clients/candleClient.d.ts +74 -0
  17. package/lib/clients/candleClient.js +364 -0
  18. package/lib/clients/candleClient.js.map +1 -0
  19. package/lib/clients/dataApiWsClient.d.ts +33 -0
  20. package/lib/clients/dataApiWsClient.js +118 -0
  21. package/lib/clients/dataApiWsClient.js.map +1 -0
  22. package/lib/clients/index.d.ts +1 -0
  23. package/lib/clients/index.js +19 -0
  24. package/lib/clients/index.js.map +1 -0
  25. package/lib/clients/marketDataFeed.d.ts +42 -0
  26. package/lib/clients/marketDataFeed.js +422 -0
  27. package/lib/clients/marketDataFeed.js.map +1 -0
  28. package/lib/clients/redisClient.d.ts +89 -0
  29. package/lib/clients/redisClient.js +647 -0
  30. package/lib/clients/redisClient.js.map +1 -0
  31. package/lib/clients/swiftClient.d.ts +57 -0
  32. package/lib/clients/swiftClient.js +289 -0
  33. package/lib/clients/swiftClient.js.map +1 -0
  34. package/lib/clients/tvFeed.d.ts +63 -0
  35. package/lib/clients/tvFeed.js +351 -0
  36. package/lib/clients/tvFeed.js.map +1 -0
  37. package/lib/common-ui-utils/commonUiUtils.d.ts +211 -0
  38. package/lib/common-ui-utils/commonUiUtils.js +624 -0
  39. package/lib/common-ui-utils/commonUiUtils.js.map +1 -0
  40. package/lib/common-ui-utils/index.d.ts +6 -0
  41. package/lib/common-ui-utils/index.js +23 -0
  42. package/lib/common-ui-utils/index.js.map +1 -0
  43. package/lib/common-ui-utils/market.d.ts +27 -0
  44. package/lib/common-ui-utils/market.js +80 -0
  45. package/lib/common-ui-utils/market.js.map +1 -0
  46. package/lib/common-ui-utils/order.d.ts +11 -0
  47. package/lib/common-ui-utils/order.js +161 -0
  48. package/lib/common-ui-utils/order.js.map +1 -0
  49. package/lib/common-ui-utils/settings/settings.d.ts +51 -0
  50. package/lib/common-ui-utils/settings/settings.js +84 -0
  51. package/lib/common-ui-utils/settings/settings.js.map +1 -0
  52. package/lib/common-ui-utils/trading.d.ts +56 -0
  53. package/lib/common-ui-utils/trading.js +200 -0
  54. package/lib/common-ui-utils/trading.js.map +1 -0
  55. package/lib/common-ui-utils/user.d.ts +13 -0
  56. package/lib/common-ui-utils/user.js +124 -0
  57. package/lib/common-ui-utils/user.js.map +1 -0
  58. package/lib/constants/autogenerated/driftErrors.json +1787 -0
  59. package/lib/constants/autogenerated/jup-v4-error-codes.json +67 -0
  60. package/lib/constants/autogenerated/jup-v6-error-codes.json +115 -0
  61. package/lib/constants/dev.d.ts +15 -0
  62. package/lib/constants/dev.js +19 -0
  63. package/lib/constants/dev.js.map +1 -0
  64. package/lib/constants/geoblockList.d.ts +4 -0
  65. package/lib/constants/geoblockList.js +32 -0
  66. package/lib/constants/geoblockList.js.map +1 -0
  67. package/lib/constants/index.d.ts +9 -0
  68. package/lib/constants/index.js +26 -0
  69. package/lib/constants/index.js.map +1 -0
  70. package/lib/constants/markets.d.ts +1 -0
  71. package/lib/constants/markets.js +5 -0
  72. package/lib/constants/markets.js.map +1 -0
  73. package/lib/constants/misc.d.ts +23 -0
  74. package/lib/constants/misc.js +27 -0
  75. package/lib/constants/misc.js.map +1 -0
  76. package/lib/constants/orders.d.ts +12 -0
  77. package/lib/constants/orders.js +79 -0
  78. package/lib/constants/orders.js.map +1 -0
  79. package/lib/constants/pools.d.ts +5 -0
  80. package/lib/constants/pools.js +9 -0
  81. package/lib/constants/pools.js.map +1 -0
  82. package/lib/constants/predictionMarket.d.ts +3 -0
  83. package/lib/constants/predictionMarket.js +7 -0
  84. package/lib/constants/predictionMarket.js.map +1 -0
  85. package/lib/constants/superstake.d.ts +22 -0
  86. package/lib/constants/superstake.js +45 -0
  87. package/lib/constants/superstake.js.map +1 -0
  88. package/lib/constants/trade.d.ts +2 -0
  89. package/lib/constants/trade.js +9 -0
  90. package/lib/constants/trade.js.map +1 -0
  91. package/lib/drift/Drift/clients/AuthorityDrift/DriftL2OrderbookManager.d.ts +68 -0
  92. package/lib/drift/Drift/clients/AuthorityDrift/DriftL2OrderbookManager.js +146 -0
  93. package/lib/drift/Drift/clients/AuthorityDrift/DriftL2OrderbookManager.js.map +1 -0
  94. package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.d.ts +204 -0
  95. package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.js +530 -0
  96. package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.js.map +1 -0
  97. package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/types.d.ts +90 -0
  98. package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/types.js +3 -0
  99. package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/types.js.map +1 -0
  100. package/lib/drift/Drift/clients/AuthorityDrift/SubscriptionManager.d.ts +139 -0
  101. package/lib/drift/Drift/clients/AuthorityDrift/SubscriptionManager.js +287 -0
  102. package/lib/drift/Drift/clients/AuthorityDrift/SubscriptionManager.js.map +1 -0
  103. package/lib/drift/Drift/clients/AuthorityDrift/index.d.ts +242 -0
  104. package/lib/drift/Drift/clients/AuthorityDrift/index.js +503 -0
  105. package/lib/drift/Drift/clients/AuthorityDrift/index.js.map +1 -0
  106. package/lib/drift/Drift/clients/CentralServerDrift.d.ts +91 -0
  107. package/lib/drift/Drift/clients/CentralServerDrift.js +326 -0
  108. package/lib/drift/Drift/clients/CentralServerDrift.js.map +1 -0
  109. package/lib/drift/Drift/clients/index.d.ts +3 -0
  110. package/lib/drift/Drift/clients/index.js +20 -0
  111. package/lib/drift/Drift/clients/index.js.map +1 -0
  112. package/lib/drift/Drift/constants/blockchain.d.ts +24 -0
  113. package/lib/drift/Drift/constants/blockchain.js +32 -0
  114. package/lib/drift/Drift/constants/blockchain.js.map +1 -0
  115. package/lib/drift/Drift/constants/errors.d.ts +6 -0
  116. package/lib/drift/Drift/constants/errors.js +14 -0
  117. package/lib/drift/Drift/constants/errors.js.map +1 -0
  118. package/lib/drift/Drift/constants/index.d.ts +3 -0
  119. package/lib/drift/Drift/constants/index.js +20 -0
  120. package/lib/drift/Drift/constants/index.js.map +1 -0
  121. package/lib/drift/Drift/constants/orderbook.d.ts +7 -0
  122. package/lib/drift/Drift/constants/orderbook.js +10 -0
  123. package/lib/drift/Drift/constants/orderbook.js.map +1 -0
  124. package/lib/drift/Drift/data/PollingDlob.d.ts +154 -0
  125. package/lib/drift/Drift/data/PollingDlob.js +387 -0
  126. package/lib/drift/Drift/data/PollingDlob.js.map +1 -0
  127. package/lib/drift/Drift/data/index.d.ts +1 -0
  128. package/lib/drift/Drift/data/index.js +18 -0
  129. package/lib/drift/Drift/data/index.js.map +1 -0
  130. package/lib/drift/Drift/index.d.ts +4 -0
  131. package/lib/drift/Drift/index.js +21 -0
  132. package/lib/drift/Drift/index.js.map +1 -0
  133. package/lib/drift/Drift/stores/MarkPriceCache.d.ts +27 -0
  134. package/lib/drift/Drift/stores/MarkPriceCache.js +59 -0
  135. package/lib/drift/Drift/stores/MarkPriceCache.js.map +1 -0
  136. package/lib/drift/Drift/stores/OraclePriceCache.d.ts +21 -0
  137. package/lib/drift/Drift/stores/OraclePriceCache.js +57 -0
  138. package/lib/drift/Drift/stores/OraclePriceCache.js.map +1 -0
  139. package/lib/drift/Drift/stores/UserAccountCache.d.ts +49 -0
  140. package/lib/drift/Drift/stores/UserAccountCache.js +107 -0
  141. package/lib/drift/Drift/stores/UserAccountCache.js.map +1 -0
  142. package/lib/drift/Drift/stores/index.d.ts +3 -0
  143. package/lib/drift/Drift/stores/index.js +20 -0
  144. package/lib/drift/Drift/stores/index.js.map +1 -0
  145. package/lib/drift/base/actions/index.d.ts +4 -0
  146. package/lib/drift/base/actions/index.js +21 -0
  147. package/lib/drift/base/actions/index.js.map +1 -0
  148. package/lib/drift/base/actions/perp/index.d.ts +2 -0
  149. package/lib/drift/base/actions/perp/index.js +19 -0
  150. package/lib/drift/base/actions/perp/index.js.map +1 -0
  151. package/lib/drift/base/actions/perp/settleFunding.d.ts +25 -0
  152. package/lib/drift/base/actions/perp/settleFunding.js +41 -0
  153. package/lib/drift/base/actions/perp/settleFunding.js.map +1 -0
  154. package/lib/drift/base/actions/perp/settlePnl.d.ts +35 -0
  155. package/lib/drift/base/actions/perp/settlePnl.js +44 -0
  156. package/lib/drift/base/actions/perp/settlePnl.js.map +1 -0
  157. package/lib/drift/base/actions/spot/borrow.d.ts +1 -0
  158. package/lib/drift/base/actions/spot/borrow.js +8 -0
  159. package/lib/drift/base/actions/spot/borrow.js.map +1 -0
  160. package/lib/drift/base/actions/spot/deposit.d.ts +40 -0
  161. package/lib/drift/base/actions/spot/deposit.js +82 -0
  162. package/lib/drift/base/actions/spot/deposit.js.map +1 -0
  163. package/lib/drift/base/actions/spot/index.d.ts +3 -0
  164. package/lib/drift/base/actions/spot/index.js +20 -0
  165. package/lib/drift/base/actions/spot/index.js.map +1 -0
  166. package/lib/drift/base/actions/spot/withdraw.d.ts +16 -0
  167. package/lib/drift/base/actions/spot/withdraw.js +39 -0
  168. package/lib/drift/base/actions/spot/withdraw.js.map +1 -0
  169. package/lib/drift/base/actions/trade/cancelOrder.d.ts +47 -0
  170. package/lib/drift/base/actions/trade/cancelOrder.js +55 -0
  171. package/lib/drift/base/actions/trade/cancelOrder.js.map +1 -0
  172. package/lib/drift/base/actions/trade/editOrder.d.ts +55 -0
  173. package/lib/drift/base/actions/trade/editOrder.js +35 -0
  174. package/lib/drift/base/actions/trade/editOrder.js.map +1 -0
  175. package/lib/drift/base/actions/trade/index.d.ts +4 -0
  176. package/lib/drift/base/actions/trade/index.js +21 -0
  177. package/lib/drift/base/actions/trade/index.js.map +1 -0
  178. package/lib/drift/base/actions/trade/openPerpOrder/index.d.ts +3 -0
  179. package/lib/drift/base/actions/trade/openPerpOrder/index.js +20 -0
  180. package/lib/drift/base/actions/trade/openPerpOrder/index.js.map +1 -0
  181. package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.d.ts +84 -0
  182. package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.js +293 -0
  183. package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.js.map +1 -0
  184. package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.d.ts +19 -0
  185. package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.js +161 -0
  186. package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.js.map +1 -0
  187. package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.d.ts +166 -0
  188. package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.js +156 -0
  189. package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.js.map +1 -0
  190. package/lib/drift/base/actions/trade/swap.d.ts +62 -0
  191. package/lib/drift/base/actions/trade/swap.js +60 -0
  192. package/lib/drift/base/actions/trade/swap.js.map +1 -0
  193. package/lib/drift/base/actions/user/create.d.ts +75 -0
  194. package/lib/drift/base/actions/user/create.js +104 -0
  195. package/lib/drift/base/actions/user/create.js.map +1 -0
  196. package/lib/drift/base/actions/user/delete.d.ts +47 -0
  197. package/lib/drift/base/actions/user/delete.js +39 -0
  198. package/lib/drift/base/actions/user/delete.js.map +1 -0
  199. package/lib/drift/base/actions/user/index.d.ts +1 -0
  200. package/lib/drift/base/actions/user/index.js +18 -0
  201. package/lib/drift/base/actions/user/index.js.map +1 -0
  202. package/lib/drift/base/constants/accountNames.d.ts +1 -0
  203. package/lib/drift/base/constants/accountNames.js +13 -0
  204. package/lib/drift/base/constants/accountNames.js.map +1 -0
  205. package/lib/drift/base/details/index.d.ts +2 -0
  206. package/lib/drift/base/details/index.js +19 -0
  207. package/lib/drift/base/details/index.js.map +1 -0
  208. package/lib/drift/base/details/market/funding.d.ts +9 -0
  209. package/lib/drift/base/details/market/funding.js +50 -0
  210. package/lib/drift/base/details/market/funding.js.map +1 -0
  211. package/lib/drift/base/details/market/index.d.ts +2 -0
  212. package/lib/drift/base/details/market/index.js +19 -0
  213. package/lib/drift/base/details/market/index.js.map +1 -0
  214. package/lib/drift/base/details/market/openInterest.d.ts +5 -0
  215. package/lib/drift/base/details/market/openInterest.js +12 -0
  216. package/lib/drift/base/details/market/openInterest.js.map +1 -0
  217. package/lib/drift/base/details/user/balances.d.ts +40 -0
  218. package/lib/drift/base/details/user/balances.js +39 -0
  219. package/lib/drift/base/details/user/balances.js.map +1 -0
  220. package/lib/drift/base/details/user/index.d.ts +4 -0
  221. package/lib/drift/base/details/user/index.js +21 -0
  222. package/lib/drift/base/details/user/index.js.map +1 -0
  223. package/lib/drift/base/details/user/marginInfo.d.ts +29 -0
  224. package/lib/drift/base/details/user/marginInfo.js +49 -0
  225. package/lib/drift/base/details/user/marginInfo.js.map +1 -0
  226. package/lib/drift/base/details/user/orders.d.ts +3 -0
  227. package/lib/drift/base/details/user/orders.js +11 -0
  228. package/lib/drift/base/details/user/orders.js.map +1 -0
  229. package/lib/drift/base/details/user/positions.d.ts +70 -0
  230. package/lib/drift/base/details/user/positions.js +146 -0
  231. package/lib/drift/base/details/user/positions.js.map +1 -0
  232. package/lib/drift/cli.d.ts +25 -0
  233. package/lib/drift/cli.js +900 -0
  234. package/lib/drift/cli.js.map +1 -0
  235. package/lib/drift/constants/apiUrls.d.ts +27 -0
  236. package/lib/drift/constants/apiUrls.js +31 -0
  237. package/lib/drift/constants/apiUrls.js.map +1 -0
  238. package/lib/drift/example.d.ts +19 -0
  239. package/lib/drift/example.js +249 -0
  240. package/lib/drift/example.js.map +1 -0
  241. package/lib/drift/index.d.ts +3 -0
  242. package/lib/drift/index.js +20 -0
  243. package/lib/drift/index.js.map +1 -0
  244. package/lib/drift/utils/auctionParamsResponseMapper.d.ts +45 -0
  245. package/lib/drift/utils/auctionParamsResponseMapper.js +148 -0
  246. package/lib/drift/utils/auctionParamsResponseMapper.js.map +1 -0
  247. package/lib/drift/utils/funding.d.ts +2 -0
  248. package/lib/drift/utils/funding.js +9 -0
  249. package/lib/drift/utils/funding.js.map +1 -0
  250. package/lib/drift/utils/index.d.ts +3 -0
  251. package/lib/drift/utils/index.js +23 -0
  252. package/lib/drift/utils/index.js.map +1 -0
  253. package/lib/drift/utils/orderParams.d.ts +48 -0
  254. package/lib/drift/utils/orderParams.js +140 -0
  255. package/lib/drift/utils/orderParams.js.map +1 -0
  256. package/lib/index.d.ts +45 -0
  257. package/lib/index.js +68 -0
  258. package/lib/index.js.map +1 -0
  259. package/lib/serializableTypes.d.ts +961 -0
  260. package/lib/serializableTypes.js +3887 -0
  261. package/lib/serializableTypes.js.map +1 -0
  262. package/lib/types/MarketId.d.ts +26 -0
  263. package/lib/types/MarketId.js +64 -0
  264. package/lib/types/MarketId.js.map +1 -0
  265. package/lib/types/Superstake.d.ts +7 -0
  266. package/lib/types/Superstake.js +3 -0
  267. package/lib/types/Superstake.js.map +1 -0
  268. package/lib/types/UIEnv.d.ts +26 -0
  269. package/lib/types/UIEnv.js +49 -0
  270. package/lib/types/UIEnv.js.map +1 -0
  271. package/lib/types/UIMarket.d.ts +94 -0
  272. package/lib/types/UIMarket.js +224 -0
  273. package/lib/types/UIMarket.js.map +1 -0
  274. package/lib/types/candles.d.ts +4 -0
  275. package/lib/types/candles.js +9 -0
  276. package/lib/types/candles.js.map +1 -0
  277. package/lib/types/dataServer.d.ts +53 -0
  278. package/lib/types/dataServer.js +3 -0
  279. package/lib/types/dataServer.js.map +1 -0
  280. package/lib/types/historyServer.d.ts +38 -0
  281. package/lib/types/historyServer.js +11 -0
  282. package/lib/types/historyServer.js.map +1 -0
  283. package/lib/types/index.d.ts +12 -0
  284. package/lib/types/index.js +29 -0
  285. package/lib/types/index.js.map +1 -0
  286. package/lib/types/leaderboard.d.ts +80 -0
  287. package/lib/types/leaderboard.js +11 -0
  288. package/lib/types/leaderboard.js.map +1 -0
  289. package/lib/types/remote-configs.d.ts +61 -0
  290. package/lib/types/remote-configs.js +3 -0
  291. package/lib/types/remote-configs.js.map +1 -0
  292. package/lib/types/trade.d.ts +18 -0
  293. package/lib/types/trade.js +3 -0
  294. package/lib/types/trade.js.map +1 -0
  295. package/lib/types/user.d.ts +40 -0
  296. package/lib/types/user.js +3 -0
  297. package/lib/types/user.js.map +1 -0
  298. package/lib/types/utility.d.ts +15 -0
  299. package/lib/types/utility.js +3 -0
  300. package/lib/types/utility.js.map +1 -0
  301. package/lib/utils/CircularBuffers/CircularBuffer.d.ts +22 -0
  302. package/lib/utils/CircularBuffers/CircularBuffer.js +73 -0
  303. package/lib/utils/CircularBuffers/CircularBuffer.js.map +1 -0
  304. package/lib/utils/CircularBuffers/UniqueCircularBuffer.d.ts +19 -0
  305. package/lib/utils/CircularBuffers/UniqueCircularBuffer.js +78 -0
  306. package/lib/utils/CircularBuffers/UniqueCircularBuffer.js.map +1 -0
  307. package/lib/utils/CircularBuffers/index.d.ts +2 -0
  308. package/lib/utils/CircularBuffers/index.js +19 -0
  309. package/lib/utils/CircularBuffers/index.js.map +1 -0
  310. package/lib/utils/MultiplexWebSocket.d.ts +95 -0
  311. package/lib/utils/MultiplexWebSocket.js +416 -0
  312. package/lib/utils/MultiplexWebSocket.js.map +1 -0
  313. package/lib/utils/NumLib.d.ts +106 -0
  314. package/lib/utils/NumLib.js +300 -0
  315. package/lib/utils/NumLib.js.map +1 -0
  316. package/lib/utils/SharedInterval.d.ts +21 -0
  317. package/lib/utils/SharedInterval.js +47 -0
  318. package/lib/utils/SharedInterval.js.map +1 -0
  319. package/lib/utils/SlotBasedResultValidator.d.ts +9 -0
  320. package/lib/utils/SlotBasedResultValidator.js +27 -0
  321. package/lib/utils/SlotBasedResultValidator.js.map +1 -0
  322. package/lib/utils/Stopwatch.d.ts +15 -0
  323. package/lib/utils/Stopwatch.js +31 -0
  324. package/lib/utils/Stopwatch.js.map +1 -0
  325. package/lib/utils/StrictEventEmitter.d.ts +15 -0
  326. package/lib/utils/StrictEventEmitter.js +55 -0
  327. package/lib/utils/StrictEventEmitter.js.map +1 -0
  328. package/lib/utils/WalletConnectionState.d.ts +31 -0
  329. package/lib/utils/WalletConnectionState.js +83 -0
  330. package/lib/utils/WalletConnectionState.js.map +1 -0
  331. package/lib/utils/assert.d.ts +1 -0
  332. package/lib/utils/assert.js +10 -0
  333. package/lib/utils/assert.js.map +1 -0
  334. package/lib/utils/candles/Candle.d.ts +94 -0
  335. package/lib/utils/candles/Candle.js +580 -0
  336. package/lib/utils/candles/Candle.js.map +1 -0
  337. package/lib/utils/candles/types.d.ts +8 -0
  338. package/lib/utils/candles/types.js +3 -0
  339. package/lib/utils/candles/types.js.map +1 -0
  340. package/lib/utils/dlob-server/DlobServerWebsocketUtils.d.ts +57 -0
  341. package/lib/utils/dlob-server/DlobServerWebsocketUtils.js +137 -0
  342. package/lib/utils/dlob-server/DlobServerWebsocketUtils.js.map +1 -0
  343. package/lib/utils/driftEvents.d.ts +10 -0
  344. package/lib/utils/driftEvents.js +123 -0
  345. package/lib/utils/driftEvents.js.map +1 -0
  346. package/lib/utils/equalityChecks.d.ts +12 -0
  347. package/lib/utils/equalityChecks.js +71 -0
  348. package/lib/utils/equalityChecks.js.map +1 -0
  349. package/lib/utils/featureFlags.d.ts +3 -0
  350. package/lib/utils/featureFlags.js +7 -0
  351. package/lib/utils/featureFlags.js.map +1 -0
  352. package/lib/utils/geoblock/index.d.ts +4 -0
  353. package/lib/utils/geoblock/index.js +20 -0
  354. package/lib/utils/geoblock/index.js.map +1 -0
  355. package/lib/utils/index.d.ts +181 -0
  356. package/lib/utils/index.js +608 -0
  357. package/lib/utils/index.js.map +1 -0
  358. package/lib/utils/insuranceFund.d.ts +15 -0
  359. package/lib/utils/insuranceFund.js +84 -0
  360. package/lib/utils/insuranceFund.js.map +1 -0
  361. package/lib/utils/logger.d.ts +5 -0
  362. package/lib/utils/logger.js +53 -0
  363. package/lib/utils/logger.js.map +1 -0
  364. package/lib/utils/math.d.ts +10 -0
  365. package/lib/utils/math.js +89 -0
  366. package/lib/utils/math.js.map +1 -0
  367. package/lib/utils/orderbook/index.d.ts +65 -0
  368. package/lib/utils/orderbook/index.js +80 -0
  369. package/lib/utils/orderbook/index.js.map +1 -0
  370. package/lib/utils/pollingSequenceGuard.d.ts +9 -0
  371. package/lib/utils/pollingSequenceGuard.js +24 -0
  372. package/lib/utils/pollingSequenceGuard.js.map +1 -0
  373. package/lib/utils/priority-fees/PriorityFeeCalculator.d.ts +24 -0
  374. package/lib/utils/priority-fees/PriorityFeeCalculator.js +53 -0
  375. package/lib/utils/priority-fees/PriorityFeeCalculator.js.map +1 -0
  376. package/lib/utils/priority-fees/PriorityFeeStrategies.d.ts +5 -0
  377. package/lib/utils/priority-fees/PriorityFeeStrategies.js +43 -0
  378. package/lib/utils/priority-fees/PriorityFeeStrategies.js.map +1 -0
  379. package/lib/utils/priority-fees/index.d.ts +2 -0
  380. package/lib/utils/priority-fees/index.js +19 -0
  381. package/lib/utils/priority-fees/index.js.map +1 -0
  382. package/lib/utils/priorityFees.d.ts +14 -0
  383. package/lib/utils/priorityFees.js +68 -0
  384. package/lib/utils/priorityFees.js.map +1 -0
  385. package/lib/utils/rpcLatency.d.ts +7 -0
  386. package/lib/utils/rpcLatency.js +49 -0
  387. package/lib/utils/rpcLatency.js.map +1 -0
  388. package/lib/utils/rxjs.d.ts +11 -0
  389. package/lib/utils/rxjs.js +24 -0
  390. package/lib/utils/rxjs.js.map +1 -0
  391. package/lib/utils/s3Buckets.d.ts +43 -0
  392. package/lib/utils/s3Buckets.js +108 -0
  393. package/lib/utils/s3Buckets.js.map +1 -0
  394. package/lib/utils/superstake.d.ts +86 -0
  395. package/lib/utils/superstake.js +224 -0
  396. package/lib/utils/superstake.js.map +1 -0
  397. package/lib/utils/token.d.ts +16 -0
  398. package/lib/utils/token.js +44 -0
  399. package/lib/utils/token.js.map +1 -0
  400. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/drift/Drift/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,8CAA4B;AAC5B,yCAAuB;AACvB,2CAAyB","sourcesContent":["export * from './clients';\nexport * from './constants';\nexport * from './data';\nexport * from './stores';\n"]}
@@ -0,0 +1,27 @@
1
+ import { BN } from '@drift-labs/sdk';
2
+ import { Subscription } from 'rxjs';
3
+ import { MarketKey } from '../../../types';
4
+ export type MarkPriceData = {
5
+ markPrice: BN;
6
+ bestBid: BN;
7
+ bestAsk: BN;
8
+ lastUpdateSlot: number;
9
+ };
10
+ export type MarkPriceLookup = Record<MarketKey, MarkPriceData>;
11
+ export declare class MarkPriceCache {
12
+ private _store;
13
+ private updatesSubject$;
14
+ constructor();
15
+ get store(): {
16
+ [x: string & {
17
+ __TYPE__: "MarketKey";
18
+ }]: MarkPriceData;
19
+ };
20
+ updateMarkPrices(...markPrices: ({
21
+ marketKey: MarketKey;
22
+ } & MarkPriceData)[]): void;
23
+ getMarkPriceData(marketKey: MarketKey): MarkPriceData;
24
+ getMarkPrice(marketKey: MarketKey): BN;
25
+ onUpdate(callback: (markPriceLookup: MarkPriceLookup) => void): Subscription;
26
+ destroy(): void;
27
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MarkPriceCache = void 0;
4
+ const sdk_1 = require("@drift-labs/sdk");
5
+ const rxjs_1 = require("rxjs");
6
+ class MarkPriceCache {
7
+ constructor() {
8
+ this._store = {};
9
+ this.updatesSubject$ = new rxjs_1.Subject();
10
+ }
11
+ get store() {
12
+ return { ...this._store };
13
+ }
14
+ updateMarkPrices(...markPrices) {
15
+ const updatedMarkPrices = {};
16
+ markPrices.forEach(({ marketKey, markPrice, bestBid, bestAsk, lastUpdateSlot }) => {
17
+ const currentMarkPriceState = this._store[marketKey];
18
+ if (!currentMarkPriceState ||
19
+ currentMarkPriceState.lastUpdateSlot < lastUpdateSlot) {
20
+ updatedMarkPrices[marketKey] = {
21
+ markPrice,
22
+ bestBid,
23
+ bestAsk,
24
+ lastUpdateSlot,
25
+ };
26
+ }
27
+ });
28
+ this._store = { ...this._store, ...updatedMarkPrices };
29
+ if (Object.keys(updatedMarkPrices).length > 0) {
30
+ this.updatesSubject$.next(updatedMarkPrices);
31
+ }
32
+ }
33
+ getMarkPriceData(marketKey) {
34
+ const storeData = this._store[marketKey];
35
+ if (!storeData) {
36
+ return {
37
+ markPrice: sdk_1.ZERO,
38
+ bestBid: sdk_1.ZERO,
39
+ bestAsk: sdk_1.ZERO,
40
+ lastUpdateSlot: 0,
41
+ };
42
+ }
43
+ return storeData;
44
+ }
45
+ getMarkPrice(marketKey) {
46
+ return this.getMarkPriceData(marketKey).markPrice;
47
+ }
48
+ onUpdate(callback) {
49
+ const subscription = this.updatesSubject$.subscribe((markPriceLookup) => {
50
+ callback(markPriceLookup);
51
+ });
52
+ return subscription;
53
+ }
54
+ destroy() {
55
+ this.updatesSubject$.complete();
56
+ }
57
+ }
58
+ exports.MarkPriceCache = MarkPriceCache;
59
+ //# sourceMappingURL=MarkPriceCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkPriceCache.js","sourceRoot":"","sources":["../../../../src/drift/Drift/stores/MarkPriceCache.ts"],"names":[],"mappings":";;;AAAA,yCAA2C;AAC3C,+BAA6C;AAY7C,MAAa,cAAc;IAI1B;QAHQ,WAAM,GAAoB,EAAE,CAAC;QAC7B,oBAAe,GAAG,IAAI,cAAO,EAAmB,CAAC;IAE1C,CAAC;IAEhB,IAAI,KAAK;QACR,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,gBAAgB,CACtB,GAAG,UAEiB;QAEpB,MAAM,iBAAiB,GAAoB,EAAE,CAAC;QAE9C,UAAU,CAAC,OAAO,CACjB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;YAC9D,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAErD,IACC,CAAC,qBAAqB;gBACtB,qBAAqB,CAAC,cAAc,GAAG,cAAc,EACpD,CAAC;gBACF,iBAAiB,CAAC,SAAS,CAAC,GAAG;oBAC9B,SAAS;oBACT,OAAO;oBACP,OAAO;oBACP,cAAc;iBACd,CAAC;YACH,CAAC;QACF,CAAC,CACD,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;QAEvD,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9C,CAAC;IACF,CAAC;IAEM,gBAAgB,CAAC,SAAoB;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO;gBACN,SAAS,EAAE,UAAI;gBACf,OAAO,EAAE,UAAI;gBACb,OAAO,EAAE,UAAI;gBACb,cAAc,EAAE,CAAC;aACjB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;IAEM,YAAY,CAAC,SAAoB;QACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAEM,QAAQ,CACd,QAAoD;QAEpD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,eAAe,EAAE,EAAE;YACvE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACrB,CAAC;IAEM,OAAO;QACb,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;CACD;AAzED,wCAyEC","sourcesContent":["import { BN, ZERO } from '@drift-labs/sdk';\nimport { Subject, Subscription } from 'rxjs';\nimport { MarketKey } from '../../../types';\n\nexport type MarkPriceData = {\n\tmarkPrice: BN;\n\tbestBid: BN;\n\tbestAsk: BN;\n\tlastUpdateSlot: number;\n};\n\nexport type MarkPriceLookup = Record<MarketKey, MarkPriceData>;\n\nexport class MarkPriceCache {\n\tprivate _store: MarkPriceLookup = {};\n\tprivate updatesSubject$ = new Subject<MarkPriceLookup>();\n\n\tconstructor() {}\n\n\tget store() {\n\t\treturn { ...this._store };\n\t}\n\n\tpublic updateMarkPrices(\n\t\t...markPrices: ({\n\t\t\tmarketKey: MarketKey;\n\t\t} & MarkPriceData)[]\n\t) {\n\t\tconst updatedMarkPrices: MarkPriceLookup = {};\n\n\t\tmarkPrices.forEach(\n\t\t\t({ marketKey, markPrice, bestBid, bestAsk, lastUpdateSlot }) => {\n\t\t\t\tconst currentMarkPriceState = this._store[marketKey];\n\n\t\t\t\tif (\n\t\t\t\t\t!currentMarkPriceState ||\n\t\t\t\t\tcurrentMarkPriceState.lastUpdateSlot < lastUpdateSlot\n\t\t\t\t) {\n\t\t\t\t\tupdatedMarkPrices[marketKey] = {\n\t\t\t\t\t\tmarkPrice,\n\t\t\t\t\t\tbestBid,\n\t\t\t\t\t\tbestAsk,\n\t\t\t\t\t\tlastUpdateSlot,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis._store = { ...this._store, ...updatedMarkPrices };\n\n\t\tif (Object.keys(updatedMarkPrices).length > 0) {\n\t\t\tthis.updatesSubject$.next(updatedMarkPrices);\n\t\t}\n\t}\n\n\tpublic getMarkPriceData(marketKey: MarketKey): MarkPriceData {\n\t\tconst storeData = this._store[marketKey];\n\t\tif (!storeData) {\n\t\t\treturn {\n\t\t\t\tmarkPrice: ZERO,\n\t\t\t\tbestBid: ZERO,\n\t\t\t\tbestAsk: ZERO,\n\t\t\t\tlastUpdateSlot: 0,\n\t\t\t};\n\t\t}\n\n\t\treturn storeData;\n\t}\n\n\tpublic getMarkPrice(marketKey: MarketKey): BN {\n\t\treturn this.getMarkPriceData(marketKey).markPrice;\n\t}\n\n\tpublic onUpdate(\n\t\tcallback: (markPriceLookup: MarkPriceLookup) => void\n\t): Subscription {\n\t\tconst subscription = this.updatesSubject$.subscribe((markPriceLookup) => {\n\t\t\tcallback(markPriceLookup);\n\t\t});\n\n\t\treturn subscription;\n\t}\n\n\tpublic destroy(): void {\n\t\tthis.updatesSubject$.complete();\n\t}\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import { BN, OraclePriceData } from '@drift-labs/sdk';
2
+ import { Subscription } from 'rxjs';
3
+ import { MarketKey } from '../../../types';
4
+ export type OraclePriceLookup = Record<MarketKey, OraclePriceData>;
5
+ export declare class OraclePriceCache {
6
+ private _store;
7
+ private updatesSubject$;
8
+ constructor();
9
+ get store(): {
10
+ [x: string & {
11
+ __TYPE__: "MarketKey";
12
+ }]: OraclePriceData;
13
+ };
14
+ updateOraclePrices(...oraclePrices: (OraclePriceData & {
15
+ marketKey: MarketKey;
16
+ })[]): void;
17
+ getOraclePriceData(marketKey: MarketKey): OraclePriceData;
18
+ getOraclePrice(marketKey: MarketKey): BN;
19
+ onUpdate(callback: (oraclePriceLookup: OraclePriceLookup) => void): Subscription;
20
+ destroy(): void;
21
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OraclePriceCache = void 0;
4
+ const sdk_1 = require("@drift-labs/sdk");
5
+ const rxjs_1 = require("rxjs");
6
+ class OraclePriceCache {
7
+ constructor() {
8
+ this._store = {};
9
+ this.updatesSubject$ = new rxjs_1.Subject();
10
+ }
11
+ get store() {
12
+ return { ...this._store };
13
+ }
14
+ updateOraclePrices(...oraclePrices) {
15
+ const updatedOraclePrices = {};
16
+ oraclePrices.forEach(({ marketKey, ...oraclePriceData }) => {
17
+ const prevOraclePriceState = this._store[marketKey];
18
+ if (!(prevOraclePriceState === null || prevOraclePriceState === void 0 ? void 0 : prevOraclePriceState.slot) ||
19
+ prevOraclePriceState.slot.lt(oraclePriceData.slot)) {
20
+ updatedOraclePrices[marketKey] = oraclePriceData;
21
+ }
22
+ });
23
+ this._store = { ...this._store, ...updatedOraclePrices };
24
+ if (Object.keys(updatedOraclePrices).length > 0) {
25
+ this.updatesSubject$.next(updatedOraclePrices);
26
+ }
27
+ }
28
+ getOraclePriceData(marketKey) {
29
+ const storeData = this._store[marketKey];
30
+ if (!storeData) {
31
+ return {
32
+ price: sdk_1.ZERO,
33
+ slot: sdk_1.ZERO,
34
+ confidence: sdk_1.ZERO,
35
+ hasSufficientNumberOfDataPoints: false,
36
+ twap: sdk_1.ZERO,
37
+ twapConfidence: sdk_1.ZERO,
38
+ maxPrice: sdk_1.ZERO,
39
+ };
40
+ }
41
+ return storeData;
42
+ }
43
+ getOraclePrice(marketKey) {
44
+ return this.getOraclePriceData(marketKey).price;
45
+ }
46
+ onUpdate(callback) {
47
+ const subscription = this.updatesSubject$.subscribe((oraclePriceLookup) => {
48
+ callback(oraclePriceLookup);
49
+ });
50
+ return subscription;
51
+ }
52
+ destroy() {
53
+ this.updatesSubject$.complete();
54
+ }
55
+ }
56
+ exports.OraclePriceCache = OraclePriceCache;
57
+ //# sourceMappingURL=OraclePriceCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OraclePriceCache.js","sourceRoot":"","sources":["../../../../src/drift/Drift/stores/OraclePriceCache.ts"],"names":[],"mappings":";;;AAAA,yCAA4D;AAC5D,+BAA6C;AAK7C,MAAa,gBAAgB;IAI5B;QAHQ,WAAM,GAAsB,EAAE,CAAC;QAC/B,oBAAe,GAAG,IAAI,cAAO,EAAqB,CAAC;IAE5C,CAAC;IAEhB,IAAI,KAAK;QACR,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,kBAAkB,CACxB,GAAG,YAA4D;QAE/D,MAAM,mBAAmB,GAAsB,EAAE,CAAC;QAElD,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,EAAE,EAAE;YAC1D,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEpD,IACC,CAAC,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,IAAI,CAAA;gBAC3B,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EACjD,CAAC;gBACF,mBAAmB,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC;YAClD,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAEzD,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IAEM,kBAAkB,CAAC,SAAoB;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO;gBACN,KAAK,EAAE,UAAI;gBACX,IAAI,EAAE,UAAI;gBACV,UAAU,EAAE,UAAI;gBAChB,+BAA+B,EAAE,KAAK;gBACtC,IAAI,EAAE,UAAI;gBACV,cAAc,EAAE,UAAI;gBACpB,QAAQ,EAAE,UAAI;aACd,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;IAEM,cAAc,CAAC,SAAoB;QACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;IAEM,QAAQ,CACd,QAAwD;QAExD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,iBAAiB,EAAE,EAAE;YACzE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACrB,CAAC;IAEM,OAAO;QACb,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;CACD;AAnED,4CAmEC","sourcesContent":["import { BN, OraclePriceData, ZERO } from '@drift-labs/sdk';\nimport { Subject, Subscription } from 'rxjs';\nimport { MarketKey } from '../../../types';\n\nexport type OraclePriceLookup = Record<MarketKey, OraclePriceData>;\n\nexport class OraclePriceCache {\n\tprivate _store: OraclePriceLookup = {};\n\tprivate updatesSubject$ = new Subject<OraclePriceLookup>();\n\n\tconstructor() {}\n\n\tget store() {\n\t\treturn { ...this._store };\n\t}\n\n\tpublic updateOraclePrices(\n\t\t...oraclePrices: (OraclePriceData & { marketKey: MarketKey })[]\n\t) {\n\t\tconst updatedOraclePrices: OraclePriceLookup = {};\n\n\t\toraclePrices.forEach(({ marketKey, ...oraclePriceData }) => {\n\t\t\tconst prevOraclePriceState = this._store[marketKey];\n\n\t\t\tif (\n\t\t\t\t!prevOraclePriceState?.slot ||\n\t\t\t\tprevOraclePriceState.slot.lt(oraclePriceData.slot)\n\t\t\t) {\n\t\t\t\tupdatedOraclePrices[marketKey] = oraclePriceData;\n\t\t\t}\n\t\t});\n\n\t\tthis._store = { ...this._store, ...updatedOraclePrices };\n\n\t\tif (Object.keys(updatedOraclePrices).length > 0) {\n\t\t\tthis.updatesSubject$.next(updatedOraclePrices);\n\t\t}\n\t}\n\n\tpublic getOraclePriceData(marketKey: MarketKey): OraclePriceData {\n\t\tconst storeData = this._store[marketKey];\n\t\tif (!storeData) {\n\t\t\treturn {\n\t\t\t\tprice: ZERO,\n\t\t\t\tslot: ZERO,\n\t\t\t\tconfidence: ZERO,\n\t\t\t\thasSufficientNumberOfDataPoints: false,\n\t\t\t\ttwap: ZERO,\n\t\t\t\ttwapConfidence: ZERO,\n\t\t\t\tmaxPrice: ZERO,\n\t\t\t};\n\t\t}\n\n\t\treturn storeData;\n\t}\n\n\tpublic getOraclePrice(marketKey: MarketKey): BN {\n\t\treturn this.getOraclePriceData(marketKey).price;\n\t}\n\n\tpublic onUpdate(\n\t\tcallback: (oraclePriceLookup: OraclePriceLookup) => void\n\t): Subscription {\n\t\tconst subscription = this.updatesSubject$.subscribe((oraclePriceLookup) => {\n\t\t\tcallback(oraclePriceLookup);\n\t\t});\n\n\t\treturn subscription;\n\t}\n\n\tpublic destroy(): void {\n\t\tthis.updatesSubject$.complete();\n\t}\n}\n"]}
@@ -0,0 +1,49 @@
1
+ import { DriftClient, PublicKey, User } from '@drift-labs/sdk';
2
+ import { Subscription } from 'rxjs';
3
+ import { SpotBalanceInfo } from '../../base/details/user/balances';
4
+ import { AccountMarginInfo } from '../../base/details/user/marginInfo';
5
+ import { PerpPositionInfo } from '../../base/details/user/positions';
6
+ import { UISerializableOrder } from '../../../serializableTypes';
7
+ import { OraclePriceCache } from './OraclePriceCache';
8
+ import { MarkPriceCache } from './MarkPriceCache';
9
+ export type EnhancedAccountData = {
10
+ authority: PublicKey;
11
+ pubKey: PublicKey;
12
+ subAccountId: number;
13
+ name: string;
14
+ userClient: User;
15
+ marginInfo: AccountMarginInfo;
16
+ openOrders: UISerializableOrder[];
17
+ openPerpPositions: PerpPositionInfo[];
18
+ marginEnabled: boolean;
19
+ delegate?: PublicKey;
20
+ isDelegatedTo?: boolean;
21
+ spotBalances: SpotBalanceInfo[];
22
+ poolId: number;
23
+ };
24
+ /**
25
+ * A key for a user account. Combines the subAccountId and the authority.
26
+ */
27
+ export type UserAccountKey = `${number}_${string}`;
28
+ export type UserAccountLookup = Record<UserAccountKey, EnhancedAccountData>;
29
+ export declare class UserAccountCache {
30
+ private _store;
31
+ private updatesSubject$;
32
+ private driftClient;
33
+ private oraclePriceStore;
34
+ private markPriceStore;
35
+ private subscriptions;
36
+ constructor(driftClient: DriftClient, oraclePriceStore: OraclePriceCache, markPriceStore: MarkPriceCache);
37
+ get store(): {
38
+ [x: `${number}_${string}`]: EnhancedAccountData;
39
+ };
40
+ get allUsers(): EnhancedAccountData[];
41
+ static getUserAccountKey(subAccountId: number, authority: PublicKey | string): UserAccountKey;
42
+ private processAccountData;
43
+ updateUserAccount(user: User): void;
44
+ private reprocessAllUsers;
45
+ reset(): void;
46
+ destroy(): void;
47
+ getUser(subAccountId: number, authority: PublicKey | string): EnhancedAccountData | undefined;
48
+ onUpdate(callback: (userAccount: EnhancedAccountData) => void): Subscription;
49
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserAccountCache = void 0;
4
+ const sdk_1 = require("@drift-labs/sdk");
5
+ const rxjs_1 = require("rxjs");
6
+ const balances_1 = require("../../base/details/user/balances");
7
+ const marginInfo_1 = require("../../base/details/user/marginInfo");
8
+ const positions_1 = require("../../base/details/user/positions");
9
+ const types_1 = require("../../../types");
10
+ const orders_1 = require("../../base/details/user/orders");
11
+ const utils_1 = require("../../../utils");
12
+ class UserAccountCache {
13
+ constructor(driftClient, oraclePriceStore, markPriceStore) {
14
+ this._store = {};
15
+ this.updatesSubject$ = new rxjs_1.Subject();
16
+ this.subscriptions = [];
17
+ this.driftClient = driftClient;
18
+ this.oraclePriceStore = oraclePriceStore;
19
+ this.markPriceStore = markPriceStore;
20
+ // Subscribe to price store updates to re-process all users
21
+ this.subscriptions.push(this.oraclePriceStore.onUpdate(() => {
22
+ this.reprocessAllUsers();
23
+ }));
24
+ this.subscriptions.push(this.markPriceStore.onUpdate(() => {
25
+ this.reprocessAllUsers();
26
+ }));
27
+ }
28
+ get store() {
29
+ return { ...this._store };
30
+ }
31
+ get allUsers() {
32
+ return Object.values(this._store);
33
+ }
34
+ static getUserAccountKey(subAccountId, authority) {
35
+ return `${subAccountId}_${authority.toString()}`;
36
+ }
37
+ processAccountData(user) {
38
+ const userAccount = user.getUserAccount();
39
+ const positionsInfo = userAccount.perpPositions
40
+ .filter((position) => !position.baseAssetAmount.eq(sdk_1.ZERO) ||
41
+ !position.quoteAssetAmount.eq(sdk_1.ZERO))
42
+ .map((position) => {
43
+ const marketId = types_1.MarketId.createPerpMarket(position.marketIndex);
44
+ const oraclePrice = this.oraclePriceStore.getOraclePrice(marketId.key);
45
+ const markPrice = this.markPriceStore.getMarkPrice(marketId.key);
46
+ return (0, positions_1.getPositionInfo)(this.driftClient, user, position, oraclePrice, markPrice);
47
+ });
48
+ const spotBalances = userAccount.spotPositions
49
+ .filter((spotPosition) => !spotPosition.scaledBalance.eq(sdk_1.ZERO))
50
+ .map((spotPosition) => {
51
+ const marketId = types_1.MarketId.createSpotMarket(spotPosition.marketIndex);
52
+ const oraclePrice = this.oraclePriceStore.getOraclePrice(marketId.key);
53
+ return (0, balances_1.getSpotBalanceInfo)(this.driftClient, user, spotPosition.marketIndex, oraclePrice);
54
+ });
55
+ const marginInfo = (0, marginInfo_1.getAccountMarginInfo)(this.driftClient, user, this.oraclePriceStore.getOraclePrice.bind(this.oraclePriceStore));
56
+ const openOrders = userAccount.orders
57
+ .filter((order) => !order.baseAssetAmount.isZero())
58
+ .filter((order) => !utils_1.ENUM_UTILS.match(order.status, sdk_1.OrderStatus.CANCELED) &&
59
+ !utils_1.ENUM_UTILS.match(order.status, sdk_1.OrderStatus.FILLED))
60
+ .map((order) => (0, orders_1.getOrderDetails)(order));
61
+ return {
62
+ authority: user.getUserAccount().authority,
63
+ pubKey: user.getUserAccountPublicKey(),
64
+ subAccountId: userAccount.subAccountId,
65
+ name: (0, sdk_1.decodeName)(userAccount.name),
66
+ userClient: user,
67
+ marginInfo,
68
+ openOrders,
69
+ openPerpPositions: positionsInfo,
70
+ spotBalances,
71
+ marginEnabled: userAccount.isMarginTradingEnabled,
72
+ poolId: userAccount.poolId,
73
+ };
74
+ }
75
+ updateUserAccount(user) {
76
+ const accountData = this.processAccountData(user);
77
+ this._store[UserAccountCache.getUserAccountKey(accountData.subAccountId, accountData.authority)] = accountData;
78
+ this.updatesSubject$.next(accountData);
79
+ }
80
+ reprocessAllUsers() {
81
+ Object.values(this._store).forEach((accountData) => {
82
+ this.updateUserAccount(accountData.userClient);
83
+ });
84
+ }
85
+ reset() {
86
+ this._store = {};
87
+ }
88
+ destroy() {
89
+ this.reset();
90
+ this.subscriptions.forEach((subscription) => {
91
+ subscription.unsubscribe();
92
+ });
93
+ this.subscriptions = [];
94
+ this.updatesSubject$.complete();
95
+ }
96
+ getUser(subAccountId, authority) {
97
+ return this._store[UserAccountCache.getUserAccountKey(subAccountId, authority)];
98
+ }
99
+ onUpdate(callback) {
100
+ const subscription = this.updatesSubject$.subscribe((userAccount) => {
101
+ callback(userAccount);
102
+ });
103
+ return subscription;
104
+ }
105
+ }
106
+ exports.UserAccountCache = UserAccountCache;
107
+ //# sourceMappingURL=UserAccountCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserAccountCache.js","sourceRoot":"","sources":["../../../../src/drift/Drift/stores/UserAccountCache.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tdecodeName,\n\tDriftClient,\n\tOrderStatus,\n\tPublicKey,\n\tUser,\n\tZERO,\n} from '@drift-labs/sdk';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n\tgetSpotBalanceInfo,\n\tSpotBalanceInfo,\n} from '../../base/details/user/balances';\nimport {\n\tAccountMarginInfo,\n\tgetAccountMarginInfo,\n} from '../../base/details/user/marginInfo';\nimport {\n\tgetPositionInfo,\n\tPerpPositionInfo,\n} from '../../base/details/user/positions';\nimport { UISerializableOrder } from '../../../serializableTypes';\nimport { MarketId } from '../../../types';\nimport { OraclePriceCache } from './OraclePriceCache';\nimport { MarkPriceCache } from './MarkPriceCache';\nimport { getOrderDetails } from '../../base/details/user/orders';\nimport { ENUM_UTILS } from '../../../utils';\n\nexport type EnhancedAccountData = {\n\tauthority: PublicKey;\n\tpubKey: PublicKey;\n\tsubAccountId: number;\n\tname: string;\n\tuserClient: User;\n\tmarginInfo: AccountMarginInfo;\n\topenOrders: UISerializableOrder[];\n\topenPerpPositions: PerpPositionInfo[];\n\tmarginEnabled: boolean;\n\tdelegate?: PublicKey;\n\tisDelegatedTo?: boolean;\n\tspotBalances: SpotBalanceInfo[];\n\tpoolId: number;\n};\n\n/**\n * A key for a user account. Combines the subAccountId and the authority.\n */\nexport type UserAccountKey = `${number}_${string}`;\n\nexport type UserAccountLookup = Record<UserAccountKey, EnhancedAccountData>; // we use UserAccountKey because this store can store multiple accounts with the same subAccountId, but from different authorities\n\nexport class UserAccountCache {\n\tprivate _store: UserAccountLookup = {};\n\tprivate updatesSubject$ = new Subject<EnhancedAccountData>();\n\tprivate driftClient: DriftClient;\n\tprivate oraclePriceStore: OraclePriceCache;\n\tprivate markPriceStore: MarkPriceCache;\n\tprivate subscriptions: Subscription[] = [];\n\n\tconstructor(\n\t\tdriftClient: DriftClient,\n\t\toraclePriceStore: OraclePriceCache,\n\t\tmarkPriceStore: MarkPriceCache\n\t) {\n\t\tthis.driftClient = driftClient;\n\t\tthis.oraclePriceStore = oraclePriceStore;\n\t\tthis.markPriceStore = markPriceStore;\n\n\t\t// Subscribe to price store updates to re-process all users\n\t\tthis.subscriptions.push(\n\t\t\tthis.oraclePriceStore.onUpdate(() => {\n\t\t\t\tthis.reprocessAllUsers();\n\t\t\t})\n\t\t);\n\n\t\tthis.subscriptions.push(\n\t\t\tthis.markPriceStore.onUpdate(() => {\n\t\t\t\tthis.reprocessAllUsers();\n\t\t\t})\n\t\t);\n\t}\n\n\tget store() {\n\t\treturn { ...this._store };\n\t}\n\n\tget allUsers() {\n\t\treturn Object.values(this._store);\n\t}\n\n\tstatic getUserAccountKey(\n\t\tsubAccountId: number,\n\t\tauthority: PublicKey | string\n\t): UserAccountKey {\n\t\treturn `${subAccountId}_${authority.toString()}`;\n\t}\n\n\tprivate processAccountData(user: User): EnhancedAccountData {\n\t\tconst userAccount = user.getUserAccount();\n\t\tconst positionsInfo = userAccount.perpPositions\n\t\t\t.filter(\n\t\t\t\t(position) =>\n\t\t\t\t\t!position.baseAssetAmount.eq(ZERO) ||\n\t\t\t\t\t!position.quoteAssetAmount.eq(ZERO)\n\t\t\t)\n\t\t\t.map((position) => {\n\t\t\t\tconst marketId = MarketId.createPerpMarket(position.marketIndex);\n\t\t\t\tconst oraclePrice = this.oraclePriceStore.getOraclePrice(marketId.key);\n\t\t\t\tconst markPrice = this.markPriceStore.getMarkPrice(marketId.key);\n\t\t\t\treturn getPositionInfo(\n\t\t\t\t\tthis.driftClient,\n\t\t\t\t\tuser,\n\t\t\t\t\tposition,\n\t\t\t\t\toraclePrice,\n\t\t\t\t\tmarkPrice\n\t\t\t\t);\n\t\t\t});\n\t\tconst spotBalances = userAccount.spotPositions\n\t\t\t.filter((spotPosition) => !spotPosition.scaledBalance.eq(ZERO))\n\t\t\t.map((spotPosition) => {\n\t\t\t\tconst marketId = MarketId.createSpotMarket(spotPosition.marketIndex);\n\t\t\t\tconst oraclePrice = this.oraclePriceStore.getOraclePrice(marketId.key);\n\t\t\t\treturn getSpotBalanceInfo(\n\t\t\t\t\tthis.driftClient,\n\t\t\t\t\tuser,\n\t\t\t\t\tspotPosition.marketIndex,\n\t\t\t\t\toraclePrice\n\t\t\t\t);\n\t\t\t});\n\t\tconst marginInfo = getAccountMarginInfo(\n\t\t\tthis.driftClient,\n\t\t\tuser,\n\t\t\tthis.oraclePriceStore.getOraclePrice.bind(this.oraclePriceStore)\n\t\t);\n\t\tconst openOrders = userAccount.orders\n\t\t\t.filter((order) => !order.baseAssetAmount.isZero())\n\t\t\t.filter(\n\t\t\t\t(order) =>\n\t\t\t\t\t!ENUM_UTILS.match(order.status, OrderStatus.CANCELED) &&\n\t\t\t\t\t!ENUM_UTILS.match(order.status, OrderStatus.FILLED)\n\t\t\t)\n\t\t\t.map((order) => getOrderDetails(order));\n\n\t\treturn {\n\t\t\tauthority: user.getUserAccount().authority,\n\t\t\tpubKey: user.getUserAccountPublicKey(),\n\t\t\tsubAccountId: userAccount.subAccountId,\n\t\t\tname: decodeName(userAccount.name),\n\t\t\tuserClient: user,\n\t\t\tmarginInfo,\n\t\t\topenOrders,\n\t\t\topenPerpPositions: positionsInfo,\n\t\t\tspotBalances,\n\t\t\tmarginEnabled: userAccount.isMarginTradingEnabled,\n\t\t\tpoolId: userAccount.poolId,\n\t\t};\n\t}\n\n\tpublic updateUserAccount(user: User) {\n\t\tconst accountData = this.processAccountData(user);\n\n\t\tthis._store[\n\t\t\tUserAccountCache.getUserAccountKey(\n\t\t\t\taccountData.subAccountId,\n\t\t\t\taccountData.authority\n\t\t\t)\n\t\t] = accountData;\n\t\tthis.updatesSubject$.next(accountData);\n\t}\n\n\tprivate reprocessAllUsers(): void {\n\t\tObject.values(this._store).forEach((accountData) => {\n\t\t\tthis.updateUserAccount(accountData.userClient);\n\t\t});\n\t}\n\n\tpublic reset(): void {\n\t\tthis._store = {};\n\t}\n\n\tpublic destroy(): void {\n\t\tthis.reset();\n\t\tthis.subscriptions.forEach((subscription) => {\n\t\t\tsubscription.unsubscribe();\n\t\t});\n\t\tthis.subscriptions = [];\n\t\tthis.updatesSubject$.complete();\n\t}\n\n\tpublic getUser(\n\t\tsubAccountId: number,\n\t\tauthority: PublicKey | string\n\t): EnhancedAccountData | undefined {\n\t\treturn this._store[\n\t\t\tUserAccountCache.getUserAccountKey(subAccountId, authority)\n\t\t];\n\t}\n\n\tpublic onUpdate(callback: (userAccount: EnhancedAccountData) => void) {\n\t\tconst subscription = this.updatesSubject$.subscribe((userAccount) => {\n\t\t\tcallback(userAccount);\n\t\t});\n\n\t\treturn subscription;\n\t}\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export * from './OraclePriceCache';
2
+ export * from './MarkPriceCache';
3
+ export * from './UserAccountCache';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./OraclePriceCache"), exports);
18
+ __exportStar(require("./MarkPriceCache"), exports);
19
+ __exportStar(require("./UserAccountCache"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/drift/Drift/stores/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,mDAAiC;AACjC,qDAAmC","sourcesContent":["export * from './OraclePriceCache';\nexport * from './MarkPriceCache';\nexport * from './UserAccountCache';\n"]}
@@ -0,0 +1,4 @@
1
+ export * from './user';
2
+ export * from './trade';
3
+ export * from './perp';
4
+ export * from './spot';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./user"), exports);
18
+ __exportStar(require("./trade"), exports);
19
+ __exportStar(require("./perp"), exports);
20
+ __exportStar(require("./spot"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/drift/base/actions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,0CAAwB;AACxB,yCAAuB;AACvB,yCAAuB","sourcesContent":["export * from './user';\nexport * from './trade';\nexport * from './perp';\nexport * from './spot';\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './settleFunding';
2
+ export * from './settlePnl';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./settleFunding"), exports);
18
+ __exportStar(require("./settlePnl"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/drift/base/actions/perp/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,8CAA4B","sourcesContent":["export * from './settleFunding';\nexport * from './settlePnl';\n"]}
@@ -0,0 +1,25 @@
1
+ import { DriftClient, User } from '@drift-labs/sdk';
2
+ import { Transaction, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
3
+ interface SettleFundingParams {
4
+ driftClient: DriftClient;
5
+ user: User;
6
+ }
7
+ /**
8
+ * Creates transaction instructions for settling funding payments.
9
+ *
10
+ * @param driftClient - The Drift client instance for interacting with the protocol
11
+ * @param user - The user account that will settle funding payments
12
+ *
13
+ * @returns Promise resolving to an array of transaction instructions for settling funding
14
+ */
15
+ export declare const createSettleFundingIx: ({ driftClient, user, }: SettleFundingParams) => Promise<TransactionInstruction[]>;
16
+ /**
17
+ * Creates a complete transaction for settling funding payments.
18
+ *
19
+ * @param driftClient - The Drift client instance for interacting with the protocol
20
+ * @param user - The user account that will settle funding payments
21
+ *
22
+ * @returns Promise resolving to a built transaction ready for signing (Transaction or VersionedTransaction)
23
+ */
24
+ export declare const createSettleFundingTxn: ({ driftClient, user, }: SettleFundingParams) => Promise<Transaction | VersionedTransaction>;
25
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSettleFundingTxn = exports.createSettleFundingIx = void 0;
4
+ /**
5
+ * Creates transaction instructions for settling funding payments.
6
+ *
7
+ * @param driftClient - The Drift client instance for interacting with the protocol
8
+ * @param user - The user account that will settle funding payments
9
+ *
10
+ * @returns Promise resolving to an array of transaction instructions for settling funding
11
+ */
12
+ const createSettleFundingIx = async ({ driftClient, user, }) => {
13
+ const userAccountPublicKey = user.getUserAccountPublicKey();
14
+ const settleFundingIx = await driftClient.getSettleFundingPaymentIx(userAccountPublicKey);
15
+ return [settleFundingIx];
16
+ };
17
+ exports.createSettleFundingIx = createSettleFundingIx;
18
+ /**
19
+ * Creates a complete transaction for settling funding payments.
20
+ *
21
+ * @param driftClient - The Drift client instance for interacting with the protocol
22
+ * @param user - The user account that will settle funding payments
23
+ *
24
+ * @returns Promise resolving to a built transaction ready for signing (Transaction or VersionedTransaction)
25
+ */
26
+ const createSettleFundingTxn = async ({ driftClient, user, }) => {
27
+ const settleFundingIxs = await (0, exports.createSettleFundingIx)({
28
+ driftClient,
29
+ user,
30
+ });
31
+ const settleFundingTxn = await driftClient.txHandler.buildTransaction({
32
+ instructions: settleFundingIxs,
33
+ txVersion: 0,
34
+ connection: driftClient.connection,
35
+ preFlightCommitment: 'confirmed',
36
+ fetchAllMarketLookupTableAccounts: driftClient.fetchAllLookupTableAccounts.bind(driftClient),
37
+ });
38
+ return settleFundingTxn;
39
+ };
40
+ exports.createSettleFundingTxn = createSettleFundingTxn;
41
+ //# sourceMappingURL=settleFunding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settleFunding.js","sourceRoot":"","sources":["../../../../../src/drift/base/actions/perp/settleFunding.ts"],"names":[],"mappings":";;;AAYA;;;;;;;GAOG;AACI,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAC3C,WAAW,EACX,IAAI,GACiB,EAAqC,EAAE;IAC5D,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAE5D,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,yBAAyB,CAClE,oBAAoB,CACpB,CAAC;IAEF,OAAO,CAAC,eAAe,CAAC,CAAC;AAC1B,CAAC,CAAC;AAXW,QAAA,qBAAqB,yBAWhC;AAEF;;;;;;;GAOG;AACI,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC5C,WAAW,EACX,IAAI,GACiB,EAA+C,EAAE;IACtE,MAAM,gBAAgB,GAAG,MAAM,IAAA,6BAAqB,EAAC;QACpD,WAAW;QACX,IAAI;KACJ,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACrE,YAAY,EAAE,gBAAgB;QAC9B,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,mBAAmB,EAAE,WAAW;QAChC,iCAAiC,EAChC,WAAW,CAAC,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC;KAC1D,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC;AACzB,CAAC,CAAC;AAnBW,QAAA,sBAAsB,0BAmBjC","sourcesContent":["import { DriftClient, User } from '@drift-labs/sdk';\nimport {\n\tTransaction,\n\tTransactionInstruction,\n\tVersionedTransaction,\n} from '@solana/web3.js';\n\ninterface SettleFundingParams {\n\tdriftClient: DriftClient;\n\tuser: User;\n}\n\n/**\n * Creates transaction instructions for settling funding payments.\n *\n * @param driftClient - The Drift client instance for interacting with the protocol\n * @param user - The user account that will settle funding payments\n *\n * @returns Promise resolving to an array of transaction instructions for settling funding\n */\nexport const createSettleFundingIx = async ({\n\tdriftClient,\n\tuser,\n}: SettleFundingParams): Promise<TransactionInstruction[]> => {\n\tconst userAccountPublicKey = user.getUserAccountPublicKey();\n\n\tconst settleFundingIx = await driftClient.getSettleFundingPaymentIx(\n\t\tuserAccountPublicKey\n\t);\n\n\treturn [settleFundingIx];\n};\n\n/**\n * Creates a complete transaction for settling funding payments.\n *\n * @param driftClient - The Drift client instance for interacting with the protocol\n * @param user - The user account that will settle funding payments\n *\n * @returns Promise resolving to a built transaction ready for signing (Transaction or VersionedTransaction)\n */\nexport const createSettleFundingTxn = async ({\n\tdriftClient,\n\tuser,\n}: SettleFundingParams): Promise<Transaction | VersionedTransaction> => {\n\tconst settleFundingIxs = await createSettleFundingIx({\n\t\tdriftClient,\n\t\tuser,\n\t});\n\n\tconst settleFundingTxn = await driftClient.txHandler.buildTransaction({\n\t\tinstructions: settleFundingIxs,\n\t\ttxVersion: 0,\n\t\tconnection: driftClient.connection,\n\t\tpreFlightCommitment: 'confirmed',\n\t\tfetchAllMarketLookupTableAccounts:\n\t\t\tdriftClient.fetchAllLookupTableAccounts.bind(driftClient),\n\t});\n\n\treturn settleFundingTxn;\n};\n"]}
@@ -0,0 +1,35 @@
1
+ import { DriftClient, User, SettlePnlMode, TxParams } from '@drift-labs/sdk';
2
+ import { Transaction, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
3
+ interface SettlePnlParams {
4
+ driftClient: DriftClient;
5
+ user: User;
6
+ marketIndexes: number[];
7
+ mode?: typeof SettlePnlMode.TRY_SETTLE | typeof SettlePnlMode.MUST_SETTLE;
8
+ }
9
+ /**
10
+ * Creates transaction instructions for settling PnL for multiple markets.
11
+ *
12
+ * @param driftClient - The Drift client instance for interacting with the protocol
13
+ * @param user - The user account that will settle PnL
14
+ * @param marketIndexes - Array of perp market indexes to settle PnL for
15
+ * @param mode - Settlement mode (defaults to TRY_SETTLE)
16
+ *
17
+ * @returns Promise resolving to an array of transaction instructions for settling PnL
18
+ */
19
+ export declare const createSettlePnlIx: ({ driftClient, user, marketIndexes, mode, }: SettlePnlParams) => Promise<TransactionInstruction[]>;
20
+ interface CreateSettlePnlTxnParams extends SettlePnlParams {
21
+ txParams?: TxParams;
22
+ }
23
+ /**
24
+ * Creates a complete transaction for settling PnL for multiple markets.
25
+ *
26
+ * @param driftClient - The Drift client instance for interacting with the protocol
27
+ * @param user - The user account that will settle PnL
28
+ * @param marketIndexes - Array of perp market indexes to settle PnL for
29
+ * @param mode - Settlement mode (defaults to TRY_SETTLE)
30
+ * @param txParams - Transaction parameters
31
+ *
32
+ * @returns Promise resolving to a built transaction ready for signing (Transaction or VersionedTransaction)
33
+ */
34
+ export declare const createSettlePnlTxn: ({ driftClient, user, marketIndexes, mode, txParams, }: CreateSettlePnlTxnParams) => Promise<Transaction | VersionedTransaction>;
35
+ export {};
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSettlePnlTxn = exports.createSettlePnlIx = void 0;
4
+ const sdk_1 = require("@drift-labs/sdk");
5
+ /**
6
+ * Creates transaction instructions for settling PnL for multiple markets.
7
+ *
8
+ * @param driftClient - The Drift client instance for interacting with the protocol
9
+ * @param user - The user account that will settle PnL
10
+ * @param marketIndexes - Array of perp market indexes to settle PnL for
11
+ * @param mode - Settlement mode (defaults to TRY_SETTLE)
12
+ *
13
+ * @returns Promise resolving to an array of transaction instructions for settling PnL
14
+ */
15
+ const createSettlePnlIx = async ({ driftClient, user, marketIndexes, mode = sdk_1.SettlePnlMode.TRY_SETTLE, }) => {
16
+ const userAccountPublicKey = user.getUserAccountPublicKey();
17
+ const userAccount = user.getUserAccount();
18
+ const settlePnlIx = await driftClient.settleMultiplePNLsIx(userAccountPublicKey, userAccount, marketIndexes, mode);
19
+ return [settlePnlIx];
20
+ };
21
+ exports.createSettlePnlIx = createSettlePnlIx;
22
+ /**
23
+ * Creates a complete transaction for settling PnL for multiple markets.
24
+ *
25
+ * @param driftClient - The Drift client instance for interacting with the protocol
26
+ * @param user - The user account that will settle PnL
27
+ * @param marketIndexes - Array of perp market indexes to settle PnL for
28
+ * @param mode - Settlement mode (defaults to TRY_SETTLE)
29
+ * @param txParams - Transaction parameters
30
+ *
31
+ * @returns Promise resolving to a built transaction ready for signing (Transaction or VersionedTransaction)
32
+ */
33
+ const createSettlePnlTxn = async ({ driftClient, user, marketIndexes, mode = sdk_1.SettlePnlMode.TRY_SETTLE, txParams, }) => {
34
+ const settlePnlIxs = await (0, exports.createSettlePnlIx)({
35
+ driftClient,
36
+ user,
37
+ marketIndexes,
38
+ mode,
39
+ });
40
+ const settlePnlTxn = await driftClient.buildTransaction(settlePnlIxs, txParams);
41
+ return settlePnlTxn;
42
+ };
43
+ exports.createSettlePnlTxn = createSettlePnlTxn;
44
+ //# sourceMappingURL=settlePnl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlePnl.js","sourceRoot":"","sources":["../../../../../src/drift/base/actions/perp/settlePnl.ts"],"names":[],"mappings":";;;AAAA,yCAA6E;AAc7E;;;;;;;;;GASG;AACI,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACvC,WAAW,EACX,IAAI,EACJ,aAAa,EACb,IAAI,GAAG,mBAAa,CAAC,UAAU,GACd,EAAqC,EAAE;IACxD,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAE1C,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,oBAAoB,CACzD,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,IAAI,CACJ,CAAC;IAEF,OAAO,CAAC,WAAW,CAAC,CAAC;AACtB,CAAC,CAAC;AAjBW,QAAA,iBAAiB,qBAiB5B;AAMF;;;;;;;;;;GAUG;AACI,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACxC,WAAW,EACX,IAAI,EACJ,aAAa,EACb,IAAI,GAAG,mBAAa,CAAC,UAAU,EAC/B,QAAQ,GACkB,EAA+C,EAAE;IAC3E,MAAM,YAAY,GAAG,MAAM,IAAA,yBAAiB,EAAC;QAC5C,WAAW;QACX,IAAI;QACJ,aAAa;QACb,IAAI;KACJ,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,gBAAgB,CACtD,YAAY,EACZ,QAAQ,CACR,CAAC;IAEF,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AApBW,QAAA,kBAAkB,sBAoB7B","sourcesContent":["import { DriftClient, User, SettlePnlMode, TxParams } from '@drift-labs/sdk';\nimport {\n\tTransaction,\n\tTransactionInstruction,\n\tVersionedTransaction,\n} from '@solana/web3.js';\n\ninterface SettlePnlParams {\n\tdriftClient: DriftClient;\n\tuser: User;\n\tmarketIndexes: number[];\n\tmode?: typeof SettlePnlMode.TRY_SETTLE | typeof SettlePnlMode.MUST_SETTLE;\n}\n\n/**\n * Creates transaction instructions for settling PnL for multiple markets.\n *\n * @param driftClient - The Drift client instance for interacting with the protocol\n * @param user - The user account that will settle PnL\n * @param marketIndexes - Array of perp market indexes to settle PnL for\n * @param mode - Settlement mode (defaults to TRY_SETTLE)\n *\n * @returns Promise resolving to an array of transaction instructions for settling PnL\n */\nexport const createSettlePnlIx = async ({\n\tdriftClient,\n\tuser,\n\tmarketIndexes,\n\tmode = SettlePnlMode.TRY_SETTLE,\n}: SettlePnlParams): Promise<TransactionInstruction[]> => {\n\tconst userAccountPublicKey = user.getUserAccountPublicKey();\n\tconst userAccount = user.getUserAccount();\n\n\tconst settlePnlIx = await driftClient.settleMultiplePNLsIx(\n\t\tuserAccountPublicKey,\n\t\tuserAccount,\n\t\tmarketIndexes,\n\t\tmode\n\t);\n\n\treturn [settlePnlIx];\n};\n\ninterface CreateSettlePnlTxnParams extends SettlePnlParams {\n\ttxParams?: TxParams;\n}\n\n/**\n * Creates a complete transaction for settling PnL for multiple markets.\n *\n * @param driftClient - The Drift client instance for interacting with the protocol\n * @param user - The user account that will settle PnL\n * @param marketIndexes - Array of perp market indexes to settle PnL for\n * @param mode - Settlement mode (defaults to TRY_SETTLE)\n * @param txParams - Transaction parameters\n *\n * @returns Promise resolving to a built transaction ready for signing (Transaction or VersionedTransaction)\n */\nexport const createSettlePnlTxn = async ({\n\tdriftClient,\n\tuser,\n\tmarketIndexes,\n\tmode = SettlePnlMode.TRY_SETTLE,\n\ttxParams,\n}: CreateSettlePnlTxnParams): Promise<Transaction | VersionedTransaction> => {\n\tconst settlePnlIxs = await createSettlePnlIx({\n\t\tdriftClient,\n\t\tuser,\n\t\tmarketIndexes,\n\t\tmode,\n\t});\n\n\tconst settlePnlTxn = await driftClient.buildTransaction(\n\t\tsettlePnlIxs,\n\t\ttxParams\n\t);\n\n\treturn settlePnlTxn;\n};\n"]}
@@ -0,0 +1 @@
1
+ export declare const createBorrowIx: () => Promise<void>;