@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":"redisClient.js","sourceRoot":"","sources":["../../src/clients/redisClient.ts"],"names":[],"mappings":"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","sourcesContent":["import { sleep, COMMON_UTILS } from '..';\nimport Redis, { Cluster, RedisOptions } from 'ioredis';\n\nconst BULK_WRITE_CHUNK_SIZE = 500;\nconst BULK_READ_CHUNK_SIZE = 1000;\nconst CHUNK_SLEEP_TIME = 100;\n\nexport enum RedisClientPrefix {\n\tEXCHANGE = '',\n\tUSER_MAP = 'usermap-server:',\n\tDLOB = 'dlob:',\n\tDLOB_HELIUS = 'dlob-helius:',\n}\n\nfunction isWrite() {\n\treturn function (\n\t\t_target: unknown,\n\t\tpropertyKey: string,\n\t\tdescriptor: PropertyDescriptor\n\t) {\n\t\tconst method = descriptor.value;\n\n\t\tconst methodName = propertyKey;\n\n\t\tdescriptor.value = function (...args) {\n\t\t\tif (process.env.DISABLE_CACHE_WRITE) {\n\t\t\t\tconsole.log(`DISABLE_CACHE_WRITE=true :: Skipping ${methodName}`);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Run the decorated method and return the value\n\t\t\tconst returnValue = method.apply(this, args);\n\n\t\t\treturn returnValue;\n\t\t};\n\t};\n}\n\nfunction isRead(\n\t_target: any,\n\t_propertyKey: string,\n\tdescriptor: PropertyDescriptor\n) {\n\treturn descriptor;\n}\n\nconst getTlsConfiguration = () => {\n\tif (\n\t\tprocess.env.RUNNING_LOCAL === 'true' &&\n\t\tprocess.env.LOCAL_CACHE === 'true'\n\t) {\n\t\tconsole.log('Redis: Running LOCAL with LOCAL cache');\n\t\treturn undefined;\n\t}\n\tif (process.env.RUNNING_LOCAL === 'true') {\n\t\tconsole.log('Redis: Running LOCAL with REMOTE cache');\n\t\treturn {\n\t\t\tcheckServerIdentity: () => {\n\t\t\t\treturn undefined;\n\t\t\t},\n\t\t};\n\t}\n\tconsole.log('Redis: Making a tls connection');\n\treturn {};\n};\n\nconst getNatMap = () => {\n\tif (\n\t\tprocess.env.RUNNING_LOCAL === 'true' &&\n\t\tprocess.env.LOCAL_CACHE === 'false'\n\t) {\n\t\tconsole.log('Redis: Getting NATMAP for remote connection');\n\t\tconst natMap = process.env?.NAT_MAP\n\t\t\t? JSON.parse(process.env.NAT_MAP)\n\t\t\t: false;\n\t\tconsole.log(`NATMAP: ${process.env.NAT_MAP}`);\n\t\tif (!natMap) {\n\t\t\tthrow new Error(\n\t\t\t\t'NATMAP not found. When running the openElasticacheTunnel script copy the output into your terminal'\n\t\t\t);\n\t\t}\n\n\t\treturn natMap;\n\t}\n\n\treturn {};\n};\n\nexport const getRedisClusterClient = (\n\thost: string,\n\tport: string,\n\tprefix: string,\n\topts?: RedisOptions\n): Cluster => {\n\tif (host && port) {\n\t\tconsole.log(`Connecting to configured cluster redis:: ${host}:${port}`);\n\n\t\tconst redisClient = new Redis.Cluster(\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\thost,\n\t\t\t\t\tport: parseInt(port, 10),\n\t\t\t\t},\n\t\t\t],\n\t\t\t{\n\t\t\t\tkeyPrefix: prefix,\n\t\t\t\tnatMap: getNatMap(),\n\t\t\t\tclusterRetryStrategy: (times) => {\n\t\t\t\t\tconst delay = Math.min(times * 1000, 10000);\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`Reconnecting to Redis in ${delay}ms... (retries: ${times})`\n\t\t\t\t\t);\n\t\t\t\t\treturn delay;\n\t\t\t\t},\n\t\t\t\tdnsLookup: (address, callback) => callback(null, address),\n\t\t\t\tredisOptions: {\n\t\t\t\t\treconnectOnError: (err) => {\n\t\t\t\t\t\tconst targetError = 'ECONNREFUSED';\n\t\t\t\t\t\tif (err.message.includes(targetError)) {\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`Redis error: ${targetError}. Attempting to reconnect...`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t},\n\t\t\t\t\tmaxRetriesPerRequest: null,\n\t\t\t\t\ttls: getTlsConfiguration(),\n\t\t\t\t},\n\t\t\t\t...(opts ?? {}),\n\t\t\t}\n\t\t);\n\n\t\tredisClient.on('connect', () => {\n\t\t\tconsole.log('Connected to Redis.');\n\t\t});\n\n\t\tredisClient.on('error', (err) => {\n\t\t\tconsole.error('Redis error:', err);\n\t\t});\n\n\t\tredisClient.on('reconnecting', () => {\n\t\t\tconsole.log('Reconnecting to Redis...');\n\t\t});\n\n\t\treturn redisClient;\n\t}\n\n\tthrow Error('Missing redis client configuration');\n};\n\nexport const getRedisClient = (\n\thost: string,\n\tport: string,\n\tprefix: string,\n\topts?: RedisOptions\n): Redis => {\n\tif (host && port) {\n\t\tconsole.log(`Connecting to configured redis:: ${host}:${port}`);\n\n\t\tconst redisClient = new Redis({\n\t\t\thost,\n\t\t\tport: parseInt(port, 10),\n\t\t\tkeyPrefix: prefix,\n\t\t\tretryStrategy: (times) => {\n\t\t\t\tconst delay = Math.min(times * 1000, 10000);\n\t\t\t\tconsole.log(\n\t\t\t\t\t`Reconnecting to Redis in ${delay}ms... (retries: ${times})`\n\t\t\t\t);\n\t\t\t\treturn delay;\n\t\t\t},\n\t\t\treconnectOnError: (err) => {\n\t\t\t\tconst targetError = 'ECONNREFUSED';\n\t\t\t\tif (err.message.includes(targetError)) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`Redis error: ${targetError}. Attempting to reconnect...`\n\t\t\t\t\t);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tmaxRetriesPerRequest: null,\n\t\t\ttls: getTlsConfiguration(),\n\t\t\t...(opts ?? {}),\n\t\t});\n\n\t\tredisClient.on('connect', () => {\n\t\t\tconsole.log('Connected to Redis.');\n\t\t});\n\n\t\tredisClient.on('error', (err) => {\n\t\t\tconsole.error('Redis error:', err);\n\t\t});\n\n\t\tredisClient.on('reconnecting', () => {\n\t\t\tconsole.log('Reconnecting to Redis...');\n\t\t});\n\n\t\treturn redisClient;\n\t}\n\n\tthrow Error('Missing redis client configuration');\n};\n\n/**\n * Wrapper around the redis client.\n *\n * You can hover over the underlying redis client methods for explanations of the methods, but will also include links to DOCS for some important concepts below:\n *\n * zRange, zRangeByScore etc.:\n * - All of the \"z\" methods are methods that use sorted sets.\n * - Sorted sets are explained here : https://redis.io/docs/data-types/sorted-sets/\n */\nexport class RedisClient {\n\tprivate client: Redis | Cluster;\n\tprivate prefix: RedisClientPrefix;\n\n\tconnectionPromise: Promise<void>;\n\n\tconstructor({\n\t\thost = process.env.ELASTICACHE_HOST ?? 'localhost',\n\t\tport = process.env.ELASTICACHE_PORT ?? '6379',\n\t\tprefix = RedisClientPrefix.EXCHANGE,\n\t\topts,\n\t\tcluster = process.env.LOCAL_CACHE === 'true' &&\n\t\t\tprocess.env.RUNNING_LOCAL === 'true',\n\t}: {\n\t\thost?: string;\n\t\tport?: string;\n\t\tprefix?: RedisClientPrefix;\n\t\topts?: RedisOptions;\n\t\tcluster?: boolean;\n\t}) {\n\t\tthis.prefix = prefix;\n\t\tif (cluster) {\n\t\t\tthis.client = getRedisClusterClient(host, port, prefix, opts);\n\t\t\treturn;\n\t\t}\n\t\tthis.client = getRedisClient(host, port, prefix, opts);\n\t}\n\n\t/**\n\t * Should avoid using this unless necessary.\n\t * @returns\n\t */\n\tpublic forceGetClient() {\n\t\treturn this.client;\n\t}\n\n\tpublic getPrefix() {\n\t\treturn this.prefix;\n\t}\n\n\tpublic get connected() {\n\t\treturn this?.client?.status === 'ready';\n\t}\n\n\tasync connect() {\n\t\tif (process.env.CI_TEST) return;\n\t\tif (this.connected) return;\n\n\t\tawait sleep(100);\n\n\t\tif (this.client.status === 'connecting') {\n\t\t\treturn this.connectionPromise;\n\t\t}\n\t\tif (this.client.status === 'connect') {\n\t\t\treturn this.connectionPromise;\n\t\t}\n\t\tif (this.client.status === 'ready') {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.client.on('error', (error) =>\n\t\t\tconsole.log(`'Redis Client Error :: ', ${error?.message}`)\n\t\t);\n\n\t\ttry {\n\t\t\tawait this.client.connect();\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tdisconnect() {\n\t\tif (process.env.CI_TEST) return;\n\t\tthis.client.disconnect();\n\t}\n\n\tprivate assertConnected() {\n\t\tif (!this.connected) {\n\t\t\tthrow 'Redis client not connected';\n\t\t}\n\t}\n\n\t/**\n\t * IMPORTANT NOTE: non-expiring keys will not be cleared up by the eviction policy, so they must be cleared manually\n\t * @param key\n\t * @param value\n\t */\n\t@isWrite()\n\tasync set(key: string, value) {\n\t\tthis.assertConnected();\n\t\tthis.client.set(key, JSON.stringify(value));\n\t}\n\n\t@isWrite()\n\tasync setRaw(key: string, value) {\n\t\tthis.assertConnected();\n\t\tthis.client.set(key, value);\n\t}\n\n\t/**\n\t * IMPORTANT NOTE: non-expiring keys will not be cleared up by the eviction policy, so they must be cleared manually\n\t * @param key\n\t * @param value\n\t */\n\t@isWrite()\n\tasync mset(values: [string, any][]) {\n\t\tthis.assertConnected();\n\n\t\tif (values.length === 0) return;\n\n\t\tconst chunkedValues = COMMON_UTILS.chunks(values, BULK_WRITE_CHUNK_SIZE);\n\n\t\tfor (const valuesChunk of chunkedValues) {\n\t\t\tfor (const [key, val] of valuesChunk) {\n\t\t\t\tawait this.client.set(key, JSON.stringify(val));\n\t\t\t}\n\n\t\t\tif (chunkedValues.length > 0) {\n\t\t\t\tawait sleep(CHUNK_SLEEP_TIME);\n\t\t\t}\n\t\t}\n\t}\n\n\t@isWrite()\n\tasync setExpiring(key: string, value, expirySeconds: number) {\n\t\tthis.assertConnected();\n\t\tconst resp = await this.client.setex(\n\t\t\tkey,\n\t\t\texpirySeconds,\n\t\t\tJSON.stringify(value)\n\t\t);\n\t\treturn resp;\n\t}\n\n\t@isRead\n\tasync msetExpiring(values: [string, any][], expirySeconds: number) {\n\t\tif (!values) return;\n\t\tif (values.length === 0) return;\n\n\t\tthis.assertConnected();\n\n\t\tconst chunkedValues = COMMON_UTILS.chunks(values, BULK_WRITE_CHUNK_SIZE);\n\n\t\tfor (const valuesChunk of chunkedValues) {\n\t\t\tfor (const [key, val] of valuesChunk) {\n\t\t\t\tthis.client.setex(key, expirySeconds, JSON.stringify(val));\n\t\t\t}\n\n\t\t\tif (chunkedValues.length > 0) {\n\t\t\t\tawait sleep(CHUNK_SLEEP_TIME);\n\t\t\t}\n\t\t}\n\t}\n\n\t@isWrite()\n\tasync expireKey(key: string, expirySeconds: number) {\n\t\tthis.assertConnected();\n\n\t\tconst resp = await this.client.expire(key, expirySeconds);\n\t\treturn resp;\n\t}\n\n\t@isRead\n\tasync get<T = string | number | Record<string, unknown> | undefined>(\n\t\tkey: string\n\t): Promise<T> {\n\t\tthis.assertConnected();\n\n\t\tconst value = await this.client.get(key);\n\n\t\tif (value) {\n\t\t\treturn JSON.parse(value);\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\t@isRead\n\tasync getRaw(key: string) {\n\t\tthis.assertConnected();\n\n\t\tconst resp = await this.client.get(key);\n\n\t\treturn resp;\n\t}\n\n\t@isRead\n\tasync mget(keys: string[]) {\n\t\tthis.assertConnected();\n\n\t\tif (keys.length === 0) return [];\n\n\t\tconst chunkedValues = COMMON_UTILS.chunks(keys, BULK_READ_CHUNK_SIZE);\n\t\tconst rawValues = [];\n\n\t\tconst chunkPromises = chunkedValues.map(async (valuesChunk, index) => {\n\t\t\tconst chunkResults = await Promise.all(\n\t\t\t\tvaluesChunk.map((key) => this.client.get(key))\n\t\t\t);\n\n\t\t\tif (index < chunkedValues.length - 1) {\n\t\t\t\tawait sleep(20);\n\t\t\t}\n\n\t\t\treturn chunkResults;\n\t\t});\n\n\t\tconst allChunks = await Promise.all(chunkPromises);\n\n\t\tfor (const chunk of allChunks) {\n\t\t\trawValues.push(...chunk);\n\t\t}\n\n\t\tconst parsedValues = rawValues.map((value) => {\n\t\t\tif (value) {\n\t\t\t\treturn JSON.parse(value);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t});\n\n\t\treturn parsedValues;\n\t}\n\n\t@isRead\n\tasync smembers(key: string) {\n\t\tconst resp = await this.client.smembers(key);\n\t\treturn resp;\n\t}\n\n\t@isRead\n\tasync zRange(key: string, min: number, max: number) {\n\t\tconst resp = await this.client.zrange(key, min, max);\n\n\t\treturn resp;\n\t}\n\t@isRead\n\tasync zRevRange(\n\t\tkey: string,\n\t\tstart: number,\n\t\tstop: number,\n\t\twithScores?: 'WITHSCORES'\n\t) {\n\t\tconst resp = withScores\n\t\t\t? this.client.zrevrange(key, start, stop, withScores)\n\t\t\t: this.client.zrevrange(key, start, stop);\n\n\t\treturn resp;\n\t}\n\t@isRead\n\tasync zRangeByScore(key: string, min: number | string, max: number | string) {\n\t\tconst resp = await this.client.zrangebyscore(key, min, max);\n\t\treturn resp;\n\t}\n\t@isRead\n\tasync zRevRangeByScore(\n\t\tkey: string,\n\t\tmax: number | string,\n\t\tmin: number | string\n\t) {\n\t\tconst resp = await this.client.zrevrangebyscore(key, max, min);\n\t\treturn resp;\n\t}\n\t@isRead\n\tasync zRank(key: string, member: string) {\n\t\tconst resp = await this.client.zrank(key, member);\n\t\treturn resp;\n\t}\n\t@isRead\n\tasync zRevRank(key: string, member: string) {\n\t\tconst resp = await this.client.zrevrank(key, member);\n\t\treturn resp;\n\t}\n\t@isWrite()\n\tasync zRem(key: string, member: string | number | Buffer) {\n\t\tconst resp = await this.client.zrem(key, member);\n\t\treturn resp;\n\t}\n\t@isWrite()\n\tasync zRemRange(key: string, start: number, stop: number) {\n\t\tconst resp = await this.client.zremrangebyrank(key, start, stop);\n\t\treturn resp;\n\t}\n\t@isWrite()\n\tasync zRemRangeByScore(key: string, start: number, stop: number) {\n\t\tconst resp = await this.client.zremrangebyscore(key, start, stop);\n\t\treturn resp;\n\t}\n\t@isRead\n\tasync zCount(key: string, start: number, stop: number) {\n\t\tconst resp = await this.client.zcount(key, start, stop);\n\t\treturn resp;\n\t}\n\t@isRead\n\tasync zCard(key: string) {\n\t\tconst resp = await this.client.zcard(key);\n\t\treturn resp;\n\t}\n\t@isWrite()\n\tasync zAdd(key: string, ...scoreMembers: (string | number | Buffer)[]) {\n\t\tconst resp = await this.client.zadd(key, ...scoreMembers);\n\t\treturn resp;\n\t}\n\t@isWrite()\n\tasync lPush(key: string, ...elements: (string | number | Buffer)[]) {\n\t\tconst resp = await this.client.lpush(key, ...elements);\n\t\treturn resp;\n\t}\n\t@isWrite()\n\tasync rPush(key: string, ...elements: (string | number | Buffer)[]) {\n\t\tconst resp = await this.client.rpush(key, ...elements);\n\t\treturn resp;\n\t}\n\t@isWrite()\n\tasync lTrim(key: string, start: number, stop: number) {\n\t\tconst resp = await this.client.ltrim(key, start, stop);\n\t\treturn resp;\n\t}\n\t@isWrite()\n\tasync lRem(key: string, count: number, element: string | number | Buffer) {\n\t\tconst resp = await this.client.lrem(key, count, element);\n\t\treturn resp;\n\t}\n\t@isWrite()\n\tasync lSet(key: string, index: number, element: string | number | Buffer) {\n\t\tconst resp = await this.client.lset(key, index, element);\n\t\treturn resp;\n\t}\n\t@isRead\n\tasync lRange(key: string, start: number, stop: number) {\n\t\tconst resp = await this.client.lrange(key, start, stop);\n\t\treturn resp;\n\t}\n\t@isRead\n\tasync lLen(key: string) {\n\t\tconst resp = await this.client.llen(key);\n\t\treturn resp;\n\t}\n\t@isRead\n\tasync lIndex(key: string, index: number) {\n\t\tconst resp = await this.client.lindex(key, index);\n\t\treturn resp;\n\t}\n\t@isWrite()\n\tasync publish(key: string, value) {\n\t\tconst resp = await this.client.publish(key, JSON.stringify(value));\n\t\treturn resp;\n\t}\n\n\tasync subscribe(key: string) {\n\t\tconst resp = await this.client.subscribe(key);\n\t\treturn resp;\n\t}\n\n\tasync unsubscribe(key: string) {\n\t\tconst resp = await this.client.unsubscribe(key);\n\t\treturn resp;\n\t}\n\n\t/**\n\t * Clears the entire cache of the current DB (not the other DBs in the redis instance)\n\t */\n\t@isRead\n\tasync flush() {\n\t\tthis.assertConnected();\n\t\treturn this.client.flushdb();\n\t}\n\n\t@isRead\n\tasync delete(...keys: string[]) {\n\t\tthis.assertConnected();\n\n\t\tconst chunkedValues = COMMON_UTILS.chunks(keys, BULK_WRITE_CHUNK_SIZE);\n\n\t\tlet count = 0;\n\t\tfor (const valuesChunk of chunkedValues) {\n\t\t\tfor (const key of valuesChunk) {\n\t\t\t\tawait this.client.del(key);\n\t\t\t\tcount++;\n\t\t\t}\n\n\t\t\tif (chunkedValues.length > 0) {\n\t\t\t\tawait sleep(20);\n\t\t\t}\n\t\t}\n\n\t\treturn count;\n\t}\n}\n"]}
@@ -0,0 +1,57 @@
1
+ /// <reference types="node" />
2
+ import { AccountInfo, Connection, PublicKey } from '@solana/web3.js';
3
+ import { DriftClient, MarketType, OrderType } from '@drift-labs/sdk';
4
+ import { Observable, Subscriber } from 'rxjs';
5
+ export type SwiftServerOrderProcessResponse = {
6
+ error?: string;
7
+ message: string;
8
+ };
9
+ type ClientResponse<T = void> = Promise<{
10
+ success: boolean;
11
+ body?: T;
12
+ message?: string;
13
+ status?: number;
14
+ }>;
15
+ type BaseSwiftOrderEvent = {
16
+ hash: string;
17
+ };
18
+ export interface SwiftOrderSentEvent extends BaseSwiftOrderEvent {
19
+ type: 'sent';
20
+ }
21
+ export interface SwiftOrderErroredEvent extends BaseSwiftOrderEvent {
22
+ type: 'errored' | 'expired';
23
+ message?: string;
24
+ status?: number;
25
+ }
26
+ export interface SwiftOrderConfirmedEvent extends BaseSwiftOrderEvent {
27
+ type: 'confirmed';
28
+ orderId: string;
29
+ }
30
+ export type SwiftOrderEvent = SwiftOrderErroredEvent | SwiftOrderConfirmedEvent | SwiftOrderSentEvent;
31
+ export declare class SwiftClient {
32
+ private static baseUrl;
33
+ private static swiftClientConsumer?;
34
+ static supportedOrderTypes: OrderType[];
35
+ static init(baseUrl: string, swiftClientConsumer?: string): void;
36
+ private static get;
37
+ private static post;
38
+ static sendSwiftOrder(marketIndex: number, marketType: MarketType, message: string, signature: Buffer, takerPubkey: PublicKey, signingAuthority?: PublicKey): ClientResponse<{
39
+ hash: string;
40
+ }>;
41
+ static confirmSwiftOrderWS(connection: Connection, client: DriftClient, signedMsgUserOrdersAccount: PublicKey, signedMsgOrderUuid: Uint8Array, confirmDuration: number): Promise<number | undefined>;
42
+ static findOrderInSignedMsgUserOrdersAccount(client: DriftClient, ordersAccount: AccountInfo<Buffer>, signedMsgOrderUuid: Uint8Array): import("@drift-labs/sdk").SignedMsgOrderId;
43
+ static confirmSwiftOrder(hash: string, confirmDuration: number): Promise<ClientResponse<{
44
+ orderId: string;
45
+ status: 'confirmed';
46
+ } | {
47
+ status: 'expired';
48
+ }>>;
49
+ static handleSwiftOrderSubscriber(subscriber: Subscriber<SwiftOrderEvent>, marketIndex: number, marketType: MarketType, message: string, signature: Buffer, takerPubkey: PublicKey, confirmDuration: number, signingAuthority?: PublicKey): Promise<void>;
50
+ static handleSwiftOrderSubscriberWS(subscriber: Subscriber<SwiftOrderEvent>, connection: Connection, client: DriftClient, marketIndex: number, marketType: MarketType, message: string, signature: Buffer, takerPubkey: PublicKey, signedMsgUserOrdersAccountPubkey: PublicKey, signedMsgOrderUuid: Uint8Array, confirmDuration: number, signingAuthority?: PublicKey): Promise<void>;
51
+ static sendAndConfirmSwiftOrder(marketIndex: number, marketType: MarketType, message: string, signature: Buffer, takerPubkey: PublicKey, confirmDuration: number, signingAuthority: PublicKey): Observable<SwiftOrderEvent>;
52
+ static sendAndConfirmSwiftOrderWS(connection: Connection, client: DriftClient, marketIndex: number, marketType: MarketType, message: string, signature: Buffer, takerPubkey: PublicKey, signedMsgUserOrdersAccountPubkey: PublicKey, signedMsgOrderUuid: Uint8Array, confirmDuration: number, signingAuthority: PublicKey): Observable<SwiftOrderEvent>;
53
+ static isSwiftServerHealthy(): Promise<boolean>;
54
+ private static getSwiftHeaders;
55
+ static isSupportedOrderType(orderType: OrderType): boolean;
56
+ }
57
+ export {};
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwiftClient = void 0;
4
+ const sdk_1 = require("@drift-labs/sdk");
5
+ const rxjs_1 = require("rxjs");
6
+ const logger_1 = require("../utils/logger");
7
+ class SwiftClient {
8
+ static init(baseUrl, swiftClientConsumer) {
9
+ this.baseUrl = baseUrl;
10
+ this.swiftClientConsumer = swiftClientConsumer;
11
+ }
12
+ static get(url) {
13
+ if (!this.baseUrl) {
14
+ throw new Error('SwiftClient not initialized');
15
+ }
16
+ return new Promise((res) => {
17
+ const headers = new Headers({
18
+ ...this.getSwiftHeaders(),
19
+ });
20
+ fetch(`${this.baseUrl}${url}`, {
21
+ headers,
22
+ })
23
+ .then(async (response) => {
24
+ if (!response.ok) {
25
+ res({
26
+ success: false,
27
+ body: await response.text(),
28
+ status: response.status,
29
+ });
30
+ return;
31
+ }
32
+ res({
33
+ success: true,
34
+ body: await response.text(),
35
+ status: response.status,
36
+ });
37
+ })
38
+ .catch((err) => {
39
+ res({ success: false, body: err, status: 0 });
40
+ });
41
+ });
42
+ }
43
+ static post(url, bodyObject) {
44
+ if (!this.baseUrl) {
45
+ throw new Error('SwiftClient not initialized');
46
+ }
47
+ const requestOptions = {
48
+ method: 'POST',
49
+ headers: { ...this.getSwiftHeaders() },
50
+ body: JSON.stringify(bodyObject),
51
+ };
52
+ return new Promise((res) => {
53
+ const postRequest = new Request(`${this.baseUrl}${url}`, requestOptions);
54
+ fetch(postRequest)
55
+ .then(async (response) => {
56
+ let resBody = null;
57
+ try {
58
+ resBody =
59
+ (await response.json());
60
+ }
61
+ catch (err) {
62
+ (0, logger_1.allEnvDlog)('swiftClient', 'Error reading response body', err);
63
+ }
64
+ res({
65
+ success: response.ok,
66
+ body: resBody,
67
+ status: response.status,
68
+ });
69
+ })
70
+ .catch((err) => {
71
+ res({ success: false, body: err, status: 0 });
72
+ });
73
+ });
74
+ }
75
+ static async sendSwiftOrder(marketIndex, marketType, message, signature, takerPubkey, signingAuthority) {
76
+ var _a, _b;
77
+ const requestPayload = {
78
+ market_index: marketIndex,
79
+ market_type: (0, sdk_1.isVariant)(marketType, 'perp') ? 'perp' : 'spot',
80
+ message,
81
+ signature: signature.toString('base64'),
82
+ signing_authority: (_a = signingAuthority === null || signingAuthority === void 0 ? void 0 : signingAuthority.toBase58()) !== null && _a !== void 0 ? _a : '',
83
+ taker_authority: takerPubkey.toBase58(),
84
+ };
85
+ const response = await this.post('/orders', requestPayload);
86
+ if (response.status !== 200) {
87
+ console.error(`Non-200 status code received for sent Swift order: ${response.status}`);
88
+ (0, logger_1.allEnvDlog)('swiftClient', 'full non-200 response body', response.body);
89
+ return {
90
+ message: ((_b = response.body) === null || _b === void 0 ? void 0 : _b.message) ||
91
+ `HTTP ${response.status}: Error from Swift server`,
92
+ status: response.status,
93
+ success: false,
94
+ };
95
+ }
96
+ return {
97
+ message: `Successfully sent Swift order`,
98
+ body: {
99
+ hash: (0, sdk_1.digestSignature)(Uint8Array.from(signature)),
100
+ },
101
+ success: true,
102
+ status: 200,
103
+ };
104
+ }
105
+ static async confirmSwiftOrderWS(connection, client, signedMsgUserOrdersAccount, signedMsgOrderUuid, confirmDuration) {
106
+ return new Promise((resolve, reject) => {
107
+ const timeout = setTimeout(() => {
108
+ reject(new Error('Order not found'));
109
+ }, confirmDuration);
110
+ connection
111
+ .getAccountInfo(signedMsgUserOrdersAccount, 'confirmed')
112
+ .then((accountInfo) => {
113
+ const order = this.findOrderInSignedMsgUserOrdersAccount(client, accountInfo, signedMsgOrderUuid);
114
+ if (order) {
115
+ (0, logger_1.allEnvDlog)('swiftClient', 'confirmed in initial fetch orderID\n', order.orderId);
116
+ clearTimeout(timeout);
117
+ resolve(order.orderId);
118
+ }
119
+ });
120
+ const subId = connection.onAccountChange(signedMsgUserOrdersAccount, (accountInfo) => {
121
+ const order = this.findOrderInSignedMsgUserOrdersAccount(client, accountInfo, signedMsgOrderUuid);
122
+ if (order) {
123
+ (0, logger_1.allEnvDlog)('swiftClient', 'confirmed in onAccountChange orderID\n', order.orderId);
124
+ connection.removeAccountChangeListener(subId);
125
+ clearTimeout(timeout);
126
+ resolve(order.orderId);
127
+ }
128
+ }, 'confirmed');
129
+ });
130
+ }
131
+ static findOrderInSignedMsgUserOrdersAccount(client, ordersAccount, signedMsgOrderUuid) {
132
+ const accountDecoder = client.program.account.signedMsgUserOrders.coder.accounts.decodeUnchecked.bind(client.program.account.signedMsgUserOrders.coder.accounts);
133
+ const decodedAccount = accountDecoder('SignedMsgUserOrders', ordersAccount.data);
134
+ (0, logger_1.allEnvDlog)('swiftClient findOrder', 'decodedAccount\n', decodedAccount, signedMsgOrderUuid.toString());
135
+ const order = decodedAccount.signedMsgOrderData.find((order) => order.uuid.toString() === signedMsgOrderUuid.toString());
136
+ (0, logger_1.allEnvDlog)('swiftClient findOrder', 'order\n', order);
137
+ return order;
138
+ }
139
+ static async confirmSwiftOrder(hash, confirmDuration) {
140
+ const expireTime = Date.now() + confirmDuration;
141
+ while (Date.now() < expireTime) {
142
+ const confirmResponse = await this.get(`/confirmation/hash-status?hash=${encodeURIComponent(hash)}`);
143
+ if (confirmResponse.status === 200) {
144
+ console.log('Confirmed hash: ', hash);
145
+ return {
146
+ success: true,
147
+ status: 200,
148
+ message: 'Confirmed hash: ' + hash,
149
+ body: {
150
+ orderId: confirmResponse.body,
151
+ status: 'confirmed',
152
+ },
153
+ };
154
+ }
155
+ else if (confirmResponse.status >= 500 ||
156
+ confirmResponse.status < 200) {
157
+ break;
158
+ }
159
+ await new Promise((resolve) => setTimeout(resolve, 1000));
160
+ }
161
+ console.error('Failed to confirm hash: ', hash);
162
+ return {
163
+ success: false,
164
+ status: 408,
165
+ message: 'Failed to confirm hash: ' + hash,
166
+ body: {
167
+ status: 'expired',
168
+ },
169
+ };
170
+ }
171
+ static async handleSwiftOrderSubscriber(subscriber, marketIndex, marketType, message, signature, takerPubkey, confirmDuration, signingAuthority) {
172
+ // First send the order
173
+ const sendResponse = await this.sendSwiftOrder(marketIndex, marketType, message, signature, takerPubkey, signingAuthority);
174
+ if (!sendResponse.success) {
175
+ subscriber.next({
176
+ type: 'errored',
177
+ hash: '',
178
+ message: sendResponse.message,
179
+ status: sendResponse.status,
180
+ });
181
+ subscriber.error();
182
+ return;
183
+ }
184
+ else {
185
+ subscriber.next({
186
+ type: 'sent',
187
+ hash: sendResponse.body.hash,
188
+ });
189
+ }
190
+ const hash = sendResponse.body.hash;
191
+ // Then confirm it
192
+ const confirmResponse = await this.confirmSwiftOrder(hash, confirmDuration);
193
+ if (!confirmResponse.success) {
194
+ subscriber.next({
195
+ type: confirmResponse.body.status,
196
+ hash,
197
+ message: confirmResponse.message,
198
+ status: confirmResponse.status,
199
+ });
200
+ subscriber.error();
201
+ }
202
+ if (confirmResponse.body.status === 'confirmed') {
203
+ subscriber.next({
204
+ type: 'confirmed',
205
+ orderId: confirmResponse.body.orderId,
206
+ hash,
207
+ });
208
+ subscriber.complete();
209
+ }
210
+ }
211
+ static async handleSwiftOrderSubscriberWS(subscriber, connection, client, marketIndex, marketType, message, signature, takerPubkey, signedMsgUserOrdersAccountPubkey, signedMsgOrderUuid, confirmDuration, signingAuthority) {
212
+ // First send the order
213
+ const sendResponse = await this.sendSwiftOrder(marketIndex, marketType, message, signature, takerPubkey, signingAuthority);
214
+ (0, logger_1.allEnvDlog)('swiftClient', 'sendResponse\n', sendResponse);
215
+ if (!sendResponse.success) {
216
+ subscriber.next({
217
+ type: 'errored',
218
+ hash: '',
219
+ message: 'Error from swift node: ' + sendResponse.message,
220
+ status: sendResponse.status,
221
+ });
222
+ subscriber.error();
223
+ return;
224
+ }
225
+ else {
226
+ subscriber.next({
227
+ type: 'sent',
228
+ hash: sendResponse.body.hash,
229
+ });
230
+ }
231
+ const hash = sendResponse.body.hash;
232
+ // Then confirm it
233
+ const orderID = await this.confirmSwiftOrderWS(connection, client, signedMsgUserOrdersAccountPubkey, signedMsgOrderUuid, confirmDuration).catch((err) => {
234
+ (0, logger_1.allEnvDlog)('swiftClient', 'confirmSwiftOrderWS error', err);
235
+ subscriber.next({
236
+ type: 'expired',
237
+ hash,
238
+ message: 'Order failed to confirm',
239
+ status: 408,
240
+ });
241
+ subscriber.error();
242
+ });
243
+ if (!orderID) {
244
+ subscriber.next({
245
+ type: 'expired',
246
+ hash,
247
+ message: 'Order failed to confirm',
248
+ status: 408,
249
+ });
250
+ subscriber.error();
251
+ }
252
+ else {
253
+ subscriber.next({
254
+ type: 'confirmed',
255
+ orderId: orderID.toString(),
256
+ hash,
257
+ });
258
+ subscriber.complete();
259
+ }
260
+ }
261
+ static sendAndConfirmSwiftOrder(marketIndex, marketType, message, signature, takerPubkey, confirmDuration, signingAuthority) {
262
+ return new rxjs_1.Observable((subscriber) => {
263
+ this.handleSwiftOrderSubscriber(subscriber, marketIndex, marketType, message, signature, takerPubkey, confirmDuration, signingAuthority);
264
+ });
265
+ }
266
+ static sendAndConfirmSwiftOrderWS(connection, client, marketIndex, marketType, message, signature, takerPubkey, signedMsgUserOrdersAccountPubkey, signedMsgOrderUuid, confirmDuration, signingAuthority) {
267
+ return new rxjs_1.Observable((subscriber) => {
268
+ this.handleSwiftOrderSubscriberWS(subscriber, connection, client, marketIndex, marketType, message, signature, takerPubkey, signedMsgUserOrdersAccountPubkey, signedMsgOrderUuid, confirmDuration, signingAuthority);
269
+ });
270
+ }
271
+ static async isSwiftServerHealthy() {
272
+ const response = await this.get('/health');
273
+ return response.status === 200;
274
+ }
275
+ static getSwiftHeaders() {
276
+ var _a;
277
+ return {
278
+ 'Content-Type': 'application/json',
279
+ 'X-Swift-Client-Consumer': (_a = this.swiftClientConsumer) !== null && _a !== void 0 ? _a : 'default',
280
+ };
281
+ }
282
+ static isSupportedOrderType(orderType) {
283
+ return this.supportedOrderTypes.includes(orderType);
284
+ }
285
+ }
286
+ exports.SwiftClient = SwiftClient;
287
+ SwiftClient.baseUrl = '';
288
+ SwiftClient.supportedOrderTypes = [sdk_1.OrderType.MARKET, sdk_1.OrderType.LIMIT];
289
+ //# sourceMappingURL=swiftClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swiftClient.js","sourceRoot":"","sources":["../../src/clients/swiftClient.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccountInfo, Connection, PublicKey } from '@solana/web3.js';\nimport {\n\tDriftClient,\n\tMarketType,\n\tOrderType,\n\tSignedMsgUserOrdersAccount,\n\tdigestSignature,\n\tisVariant,\n} from '@drift-labs/sdk';\nimport { Observable, Subscriber } from 'rxjs';\nimport { allEnvDlog } from '../utils/logger';\nexport type SwiftServerOrderProcessResponse = {\n\terror?: string;\n\tmessage: string;\n};\n\ntype ClientResponse<T = void> = Promise<{\n\tsuccess: boolean;\n\tbody?: T;\n\tmessage?: string;\n\tstatus?: number;\n}>;\n\ntype BaseSwiftOrderEvent = {\n\thash: string;\n};\n\nexport interface SwiftOrderSentEvent extends BaseSwiftOrderEvent {\n\ttype: 'sent';\n}\n\nexport interface SwiftOrderErroredEvent extends BaseSwiftOrderEvent {\n\ttype: 'errored' | 'expired';\n\tmessage?: string;\n\tstatus?: number;\n}\n\nexport interface SwiftOrderConfirmedEvent extends BaseSwiftOrderEvent {\n\ttype: 'confirmed';\n\torderId: string;\n}\n\nexport type SwiftOrderEvent =\n\t| SwiftOrderErroredEvent\n\t| SwiftOrderConfirmedEvent\n\t| SwiftOrderSentEvent;\n\nexport class SwiftClient {\n\tprivate static baseUrl = '';\n\tprivate static swiftClientConsumer?: string;\n\n\tstatic supportedOrderTypes: OrderType[] = [OrderType.MARKET, OrderType.LIMIT];\n\n\tpublic static init(baseUrl: string, swiftClientConsumer?: string) {\n\t\tthis.baseUrl = baseUrl;\n\t\tthis.swiftClientConsumer = swiftClientConsumer;\n\t}\n\n\tprivate static get(url: string) {\n\t\tif (!this.baseUrl) {\n\t\t\tthrow new Error('SwiftClient not initialized');\n\t\t}\n\n\t\treturn new Promise<{ success: boolean; body: string; status: number }>(\n\t\t\t(res) => {\n\t\t\t\tconst headers = new Headers({\n\t\t\t\t\t...this.getSwiftHeaders(),\n\t\t\t\t});\n\n\t\t\t\tfetch(`${this.baseUrl}${url}`, {\n\t\t\t\t\theaders,\n\t\t\t\t})\n\t\t\t\t\t.then(async (response) => {\n\t\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\t\tres({\n\t\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\t\tbody: await response.text(),\n\t\t\t\t\t\t\t\tstatus: response.status,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tres({\n\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\tbody: await response.text(),\n\t\t\t\t\t\t\tstatus: response.status,\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\tres({ success: false, body: err, status: 0 });\n\t\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\tprivate static post(url: string, bodyObject: any) {\n\t\tif (!this.baseUrl) {\n\t\t\tthrow new Error('SwiftClient not initialized');\n\t\t}\n\n\t\tconst requestOptions = {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { ...this.getSwiftHeaders() },\n\t\t\tbody: JSON.stringify(bodyObject),\n\t\t};\n\n\t\treturn new Promise<{\n\t\t\tsuccess: boolean;\n\t\t\tbody: SwiftServerOrderProcessResponse;\n\t\t\tstatus: number;\n\t\t}>((res) => {\n\t\t\tconst postRequest = new Request(`${this.baseUrl}${url}`, requestOptions);\n\n\t\t\tfetch(postRequest)\n\t\t\t\t.then(async (response) => {\n\t\t\t\t\tlet resBody: SwiftServerOrderProcessResponse | null = null;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresBody =\n\t\t\t\t\t\t\t(await response.json()) as SwiftServerOrderProcessResponse;\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tallEnvDlog('swiftClient', 'Error reading response body', err);\n\t\t\t\t\t}\n\t\t\t\t\tres({\n\t\t\t\t\t\tsuccess: response.ok,\n\t\t\t\t\t\tbody: resBody,\n\t\t\t\t\t\tstatus: response.status,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tres({ success: false, body: err, status: 0 });\n\t\t\t\t});\n\t\t});\n\t}\n\n\tstatic async sendSwiftOrder(\n\t\tmarketIndex: number,\n\t\tmarketType: MarketType,\n\t\tmessage: string,\n\t\tsignature: Buffer,\n\t\ttakerPubkey: PublicKey,\n\t\tsigningAuthority?: PublicKey\n\t): ClientResponse<{\n\t\thash: string;\n\t}> {\n\t\tconst requestPayload = {\n\t\t\tmarket_index: marketIndex,\n\t\t\tmarket_type: isVariant(marketType, 'perp') ? 'perp' : 'spot',\n\t\t\tmessage,\n\t\t\tsignature: signature.toString('base64'),\n\t\t\tsigning_authority: signingAuthority?.toBase58() ?? '',\n\t\t\ttaker_authority: takerPubkey.toBase58(),\n\t\t};\n\n\t\tconst response = await this.post('/orders', requestPayload);\n\n\t\tif (response.status !== 200) {\n\t\t\tconsole.error(\n\t\t\t\t`Non-200 status code received for sent Swift order: ${response.status}`\n\t\t\t);\n\t\t\tallEnvDlog('swiftClient', 'full non-200 response body', response.body);\n\t\t\treturn {\n\t\t\t\tmessage:\n\t\t\t\t\tresponse.body?.message ||\n\t\t\t\t\t`HTTP ${response.status}: Error from Swift server`,\n\t\t\t\tstatus: response.status,\n\t\t\t\tsuccess: false,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tmessage: `Successfully sent Swift order`,\n\t\t\tbody: {\n\t\t\t\thash: digestSignature(Uint8Array.from(signature)),\n\t\t\t},\n\t\t\tsuccess: true,\n\t\t\tstatus: 200,\n\t\t};\n\t}\n\n\tstatic async confirmSwiftOrderWS(\n\t\tconnection: Connection,\n\t\tclient: DriftClient,\n\t\tsignedMsgUserOrdersAccount: PublicKey,\n\t\tsignedMsgOrderUuid: Uint8Array,\n\t\tconfirmDuration: number\n\t): Promise<number | undefined> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\treject(new Error('Order not found'));\n\t\t\t}, confirmDuration);\n\n\t\t\tconnection\n\t\t\t\t.getAccountInfo(signedMsgUserOrdersAccount, 'confirmed')\n\t\t\t\t.then((accountInfo) => {\n\t\t\t\t\tconst order = this.findOrderInSignedMsgUserOrdersAccount(\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\taccountInfo,\n\t\t\t\t\t\tsignedMsgOrderUuid\n\t\t\t\t\t);\n\n\t\t\t\t\tif (order) {\n\t\t\t\t\t\tallEnvDlog(\n\t\t\t\t\t\t\t'swiftClient',\n\t\t\t\t\t\t\t'confirmed in initial fetch orderID\\n',\n\t\t\t\t\t\t\torder.orderId\n\t\t\t\t\t\t);\n\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\tresolve(order.orderId);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tconst subId = connection.onAccountChange(\n\t\t\t\tsignedMsgUserOrdersAccount,\n\t\t\t\t(accountInfo) => {\n\t\t\t\t\tconst order = this.findOrderInSignedMsgUserOrdersAccount(\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\taccountInfo,\n\t\t\t\t\t\tsignedMsgOrderUuid\n\t\t\t\t\t);\n\t\t\t\t\tif (order) {\n\t\t\t\t\t\tallEnvDlog(\n\t\t\t\t\t\t\t'swiftClient',\n\t\t\t\t\t\t\t'confirmed in onAccountChange orderID\\n',\n\t\t\t\t\t\t\torder.orderId\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconnection.removeAccountChangeListener(subId);\n\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\tresolve(order.orderId);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'confirmed'\n\t\t\t);\n\t\t});\n\t}\n\n\tstatic findOrderInSignedMsgUserOrdersAccount(\n\t\tclient: DriftClient,\n\t\tordersAccount: AccountInfo<Buffer>,\n\t\tsignedMsgOrderUuid: Uint8Array\n\t) {\n\t\tconst accountDecoder =\n\t\t\tclient.program.account.signedMsgUserOrders.coder.accounts.decodeUnchecked.bind(\n\t\t\t\tclient.program.account.signedMsgUserOrders.coder.accounts\n\t\t\t);\n\t\tconst decodedAccount = accountDecoder(\n\t\t\t'SignedMsgUserOrders',\n\t\t\tordersAccount.data\n\t\t) as SignedMsgUserOrdersAccount;\n\t\tallEnvDlog(\n\t\t\t'swiftClient findOrder',\n\t\t\t'decodedAccount\\n',\n\t\t\tdecodedAccount,\n\t\t\tsignedMsgOrderUuid.toString()\n\t\t);\n\t\tconst order = decodedAccount.signedMsgOrderData.find(\n\t\t\t(order) => order.uuid.toString() === signedMsgOrderUuid.toString()\n\t\t);\n\t\tallEnvDlog('swiftClient findOrder', 'order\\n', order);\n\t\treturn order;\n\t}\n\n\tstatic async confirmSwiftOrder(\n\t\thash: string,\n\t\tconfirmDuration: number\n\t): Promise<\n\t\tClientResponse<\n\t\t\t| {\n\t\t\t\t\torderId: string;\n\t\t\t\t\tstatus: 'confirmed';\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\tstatus: 'expired';\n\t\t\t }\n\t\t>\n\t> {\n\t\tconst expireTime = Date.now() + confirmDuration;\n\n\t\twhile (Date.now() < expireTime) {\n\t\t\tconst confirmResponse = await this.get(\n\t\t\t\t`/confirmation/hash-status?hash=${encodeURIComponent(hash)}`\n\t\t\t);\n\n\t\t\tif (confirmResponse.status === 200) {\n\t\t\t\tconsole.log('Confirmed hash: ', hash);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\tmessage: 'Confirmed hash: ' + hash,\n\t\t\t\t\tbody: {\n\t\t\t\t\t\torderId: confirmResponse.body,\n\t\t\t\t\t\tstatus: 'confirmed',\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} else if (\n\t\t\t\tconfirmResponse.status >= 500 ||\n\t\t\t\tconfirmResponse.status < 200\n\t\t\t) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 1000));\n\t\t}\n\n\t\tconsole.error('Failed to confirm hash: ', hash);\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\tstatus: 408,\n\t\t\tmessage: 'Failed to confirm hash: ' + hash,\n\t\t\tbody: {\n\t\t\t\tstatus: 'expired',\n\t\t\t},\n\t\t};\n\t}\n\n\tstatic async handleSwiftOrderSubscriber(\n\t\tsubscriber: Subscriber<SwiftOrderEvent>,\n\t\tmarketIndex: number,\n\t\tmarketType: MarketType,\n\t\tmessage: string,\n\t\tsignature: Buffer,\n\t\ttakerPubkey: PublicKey,\n\t\tconfirmDuration: number,\n\t\tsigningAuthority?: PublicKey\n\t) {\n\t\t// First send the order\n\t\tconst sendResponse = await this.sendSwiftOrder(\n\t\t\tmarketIndex,\n\t\t\tmarketType,\n\t\t\tmessage,\n\t\t\tsignature,\n\t\t\ttakerPubkey,\n\t\t\tsigningAuthority\n\t\t);\n\n\t\tif (!sendResponse.success) {\n\t\t\tsubscriber.next({\n\t\t\t\ttype: 'errored',\n\t\t\t\thash: '',\n\t\t\t\tmessage: sendResponse.message,\n\t\t\t\tstatus: sendResponse.status,\n\t\t\t});\n\t\t\tsubscriber.error();\n\t\t\treturn;\n\t\t} else {\n\t\t\tsubscriber.next({\n\t\t\t\ttype: 'sent',\n\t\t\t\thash: sendResponse.body.hash,\n\t\t\t});\n\t\t}\n\n\t\tconst hash = sendResponse.body.hash;\n\n\t\t// Then confirm it\n\t\tconst confirmResponse = await this.confirmSwiftOrder(hash, confirmDuration);\n\n\t\tif (!confirmResponse.success) {\n\t\t\tsubscriber.next({\n\t\t\t\ttype: confirmResponse.body.status as 'expired',\n\t\t\t\thash,\n\t\t\t\tmessage: confirmResponse.message,\n\t\t\t\tstatus: confirmResponse.status,\n\t\t\t});\n\t\t\tsubscriber.error();\n\t\t}\n\t\tif (confirmResponse.body.status === 'confirmed') {\n\t\t\tsubscriber.next({\n\t\t\t\ttype: 'confirmed',\n\t\t\t\torderId: confirmResponse.body.orderId,\n\t\t\t\thash,\n\t\t\t});\n\t\t\tsubscriber.complete();\n\t\t}\n\t}\n\tstatic async handleSwiftOrderSubscriberWS(\n\t\tsubscriber: Subscriber<SwiftOrderEvent>,\n\t\tconnection: Connection,\n\t\tclient: DriftClient,\n\t\tmarketIndex: number,\n\t\tmarketType: MarketType,\n\t\tmessage: string,\n\t\tsignature: Buffer,\n\t\ttakerPubkey: PublicKey,\n\t\tsignedMsgUserOrdersAccountPubkey: PublicKey,\n\t\tsignedMsgOrderUuid: Uint8Array,\n\t\tconfirmDuration: number,\n\t\tsigningAuthority?: PublicKey\n\t) {\n\t\t// First send the order\n\t\tconst sendResponse = await this.sendSwiftOrder(\n\t\t\tmarketIndex,\n\t\t\tmarketType,\n\t\t\tmessage,\n\t\t\tsignature,\n\t\t\ttakerPubkey,\n\t\t\tsigningAuthority\n\t\t);\n\t\tallEnvDlog('swiftClient', 'sendResponse\\n', sendResponse);\n\n\t\tif (!sendResponse.success) {\n\t\t\tsubscriber.next({\n\t\t\t\ttype: 'errored',\n\t\t\t\thash: '',\n\t\t\t\tmessage: 'Error from swift node: ' + sendResponse.message,\n\t\t\t\tstatus: sendResponse.status,\n\t\t\t});\n\t\t\tsubscriber.error();\n\t\t\treturn;\n\t\t} else {\n\t\t\tsubscriber.next({\n\t\t\t\ttype: 'sent',\n\t\t\t\thash: sendResponse.body.hash,\n\t\t\t});\n\t\t}\n\n\t\tconst hash = sendResponse.body.hash;\n\n\t\t// Then confirm it\n\t\tconst orderID = await this.confirmSwiftOrderWS(\n\t\t\tconnection,\n\t\t\tclient,\n\t\t\tsignedMsgUserOrdersAccountPubkey,\n\t\t\tsignedMsgOrderUuid,\n\t\t\tconfirmDuration\n\t\t).catch((err) => {\n\t\t\tallEnvDlog('swiftClient', 'confirmSwiftOrderWS error', err);\n\t\t\tsubscriber.next({\n\t\t\t\ttype: 'expired',\n\t\t\t\thash,\n\t\t\t\tmessage: 'Order failed to confirm',\n\t\t\t\tstatus: 408,\n\t\t\t});\n\t\t\tsubscriber.error();\n\t\t});\n\n\t\tif (!orderID) {\n\t\t\tsubscriber.next({\n\t\t\t\ttype: 'expired',\n\t\t\t\thash,\n\t\t\t\tmessage: 'Order failed to confirm',\n\t\t\t\tstatus: 408,\n\t\t\t});\n\t\t\tsubscriber.error();\n\t\t} else {\n\t\t\tsubscriber.next({\n\t\t\t\ttype: 'confirmed',\n\t\t\t\torderId: orderID.toString(),\n\t\t\t\thash,\n\t\t\t});\n\t\t\tsubscriber.complete();\n\t\t}\n\t}\n\n\tpublic static sendAndConfirmSwiftOrder(\n\t\tmarketIndex: number,\n\t\tmarketType: MarketType,\n\t\tmessage: string,\n\t\tsignature: Buffer,\n\t\ttakerPubkey: PublicKey,\n\t\tconfirmDuration: number,\n\t\tsigningAuthority: PublicKey\n\t): Observable<SwiftOrderEvent> {\n\t\treturn new Observable<SwiftOrderEvent>((subscriber) => {\n\t\t\tthis.handleSwiftOrderSubscriber(\n\t\t\t\tsubscriber,\n\t\t\t\tmarketIndex,\n\t\t\t\tmarketType,\n\t\t\t\tmessage,\n\t\t\t\tsignature,\n\t\t\t\ttakerPubkey,\n\t\t\t\tconfirmDuration,\n\t\t\t\tsigningAuthority\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic static sendAndConfirmSwiftOrderWS(\n\t\tconnection: Connection,\n\t\tclient: DriftClient,\n\t\tmarketIndex: number,\n\t\tmarketType: MarketType,\n\t\tmessage: string,\n\t\tsignature: Buffer,\n\t\ttakerPubkey: PublicKey,\n\t\tsignedMsgUserOrdersAccountPubkey: PublicKey,\n\t\tsignedMsgOrderUuid: Uint8Array,\n\t\tconfirmDuration: number,\n\t\tsigningAuthority: PublicKey\n\t): Observable<SwiftOrderEvent> {\n\t\treturn new Observable<SwiftOrderEvent>((subscriber) => {\n\t\t\tthis.handleSwiftOrderSubscriberWS(\n\t\t\t\tsubscriber,\n\t\t\t\tconnection,\n\t\t\t\tclient,\n\t\t\t\tmarketIndex,\n\t\t\t\tmarketType,\n\t\t\t\tmessage,\n\t\t\t\tsignature,\n\t\t\t\ttakerPubkey,\n\t\t\t\tsignedMsgUserOrdersAccountPubkey,\n\t\t\t\tsignedMsgOrderUuid,\n\t\t\t\tconfirmDuration,\n\t\t\t\tsigningAuthority\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic static async isSwiftServerHealthy(): Promise<boolean> {\n\t\tconst response = await this.get('/health');\n\t\treturn response.status === 200;\n\t}\n\n\tprivate static getSwiftHeaders(): Record<string, string> {\n\t\treturn {\n\t\t\t'Content-Type': 'application/json',\n\t\t\t'X-Swift-Client-Consumer': this.swiftClientConsumer ?? 'default',\n\t\t};\n\t}\n\n\tpublic static isSupportedOrderType(orderType: OrderType) {\n\t\treturn this.supportedOrderTypes.includes(orderType);\n\t}\n}\n"]}
@@ -0,0 +1,63 @@
1
+ import { DriftClient, PerpMarketConfig, SpotMarketConfig } from '@drift-labs/sdk';
2
+ import { CandleType, JsonTrade } from '../types';
3
+ import { UIEnv } from '../types/UIEnv';
4
+ type TVBar = {
5
+ /** Bar time.
6
+ * Amount of **milliseconds** since Unix epoch start in **UTC** timezone.
7
+ * `time` for daily, weekly, and monthly bars is expected to be a trading day (not session start day) at 00:00 UTC.
8
+ * The library adjusts time according to `session` from {@link LibrarySymbolInfo}.
9
+ */
10
+ time: number;
11
+ /** Opening price */
12
+ open: number;
13
+ /** High price */
14
+ high: number;
15
+ /** Low price */
16
+ low: number;
17
+ /** Closing price */
18
+ close: number;
19
+ /** Trading Volume */
20
+ volume?: number;
21
+ };
22
+ interface TvAppTradeDataManager {
23
+ getFilledOrdersData(startDate: number, endDate: number): Promise<JsonTrade[]>;
24
+ getCurrentSubAccountAddress(): string | null;
25
+ }
26
+ export declare class DriftTvFeed {
27
+ private env;
28
+ private candleType;
29
+ private candleClient;
30
+ private driftClient;
31
+ private onResetCache;
32
+ private perpMarketConfigs;
33
+ private spotMarketConfigs;
34
+ private tvAppTradeDataManager;
35
+ constructor(env: UIEnv, candleType: CandleType, driftClient: DriftClient, perpMarketConfigs: PerpMarketConfig[], spotMarketConfigs: SpotMarketConfig[], tvAppTradeDataManager?: TvAppTradeDataManager);
36
+ resetCache(): void;
37
+ private searchMarkets;
38
+ onReady(callback: any): void;
39
+ searchSymbols(userInput: string, _exchange: string, _symbolType: string, onResult: any): void;
40
+ resolveSymbol(symbolName: string, onResolve: any, onError: any): void;
41
+ /**
42
+ * TradingView sometimes asks for a FROM timestamp halfway between two candles, this isn't compatible with the new candles API so we round these down the nearest candle - which should be the exact same candle!!
43
+ * @param timestamp
44
+ * @param resolution
45
+ * @returns
46
+ */
47
+ private roundFromTimestampToExactCandleTs;
48
+ private formatTVRequestedRange;
49
+ getMarks(_symbolInfo: any, startDate: any, endDate: any, onDataCallback: any, _resolution: any): Promise<void>;
50
+ getBars(symbolInfo: {
51
+ name: string;
52
+ ticker?: string;
53
+ }, resolution: string, periodParams: {
54
+ countBack: number;
55
+ from: number;
56
+ to: number;
57
+ }, onResult: (bars: TVBar[], meta?: {
58
+ noData: boolean;
59
+ }) => void, _onError: any): Promise<void>;
60
+ subscribeBars(symbolInfo: any, resolution: any, onTick: any, subscriberGuid: string, onResetCache: any): Promise<void>;
61
+ unsubscribeBars(listenerGuid: string): void;
62
+ }
63
+ export {};