@symmio/trading-react 1.1.0 → 3.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 (543) hide show
  1. package/dist/account-layer/index.d.ts +1 -0
  2. package/dist/account-layer/index.d.ts.map +1 -1
  3. package/dist/account-layer/index.js +26 -25
  4. package/dist/account-layer/use-deallocate-and-initiate-withdraw.d.ts +53 -0
  5. package/dist/account-layer/use-deallocate-and-initiate-withdraw.d.ts.map +1 -0
  6. package/dist/account-layer/use-deallocate-and-initiate-withdraw.js +49 -0
  7. package/dist/account-layer/use-deallocate-and-initiate-withdraw.js.map +1 -0
  8. package/dist/account-layer/use-deposit-and-allocate.d.ts +4 -2
  9. package/dist/account-layer/use-deposit-and-allocate.d.ts.map +1 -1
  10. package/dist/account-layer/use-deposit-and-allocate.js +17 -15
  11. package/dist/account-layer/use-deposit-and-allocate.js.map +1 -1
  12. package/dist/account-layer/use-edit-account-name.d.ts.map +1 -1
  13. package/dist/account-layer/use-edit-account-name.js +14 -14
  14. package/dist/account-layer/use-edit-account-name.js.map +1 -1
  15. package/dist/account-layer/use-virtual-accounts-addresses-of-sub-account.d.ts +1 -1
  16. package/dist/account-layer/use-virtual-accounts-addresses-of-sub-account.js.map +1 -1
  17. package/dist/candles/index.d.ts +5 -0
  18. package/dist/candles/index.d.ts.map +1 -0
  19. package/dist/candles/index.js +5 -0
  20. package/dist/candles/use-binance-candle-source.d.ts +27 -0
  21. package/dist/candles/use-binance-candle-source.d.ts.map +1 -0
  22. package/dist/candles/use-binance-candle-source.js +24 -0
  23. package/dist/candles/use-binance-candle-source.js.map +1 -0
  24. package/dist/candles/use-candle-stream.d.ts +65 -0
  25. package/dist/candles/use-candle-stream.d.ts.map +1 -0
  26. package/dist/candles/use-candle-stream.js +44 -0
  27. package/dist/candles/use-candle-stream.js.map +1 -0
  28. package/dist/candles/use-candles.d.ts +40 -0
  29. package/dist/candles/use-candles.d.ts.map +1 -0
  30. package/dist/candles/use-candles.js +22 -0
  31. package/dist/candles/use-candles.js.map +1 -0
  32. package/dist/candles/use-tradingview-datafeed.d.ts +31 -0
  33. package/dist/candles/use-tradingview-datafeed.d.ts.map +1 -0
  34. package/dist/candles/use-tradingview-datafeed.js +21 -0
  35. package/dist/candles/use-tradingview-datafeed.js.map +1 -0
  36. package/dist/index.d.ts +125 -21
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +201 -113
  39. package/dist/instant-layer/index.d.ts +4 -0
  40. package/dist/instant-layer/index.d.ts.map +1 -1
  41. package/dist/instant-layer/index.js +10 -6
  42. package/dist/instant-layer/use-instant-close-auto.d.ts.map +1 -1
  43. package/dist/instant-layer/use-instant-close-auto.js +12 -11
  44. package/dist/instant-layer/use-instant-close-auto.js.map +1 -1
  45. package/dist/instant-layer/use-instant-close-bulk-auto.d.ts.map +1 -1
  46. package/dist/instant-layer/use-instant-close-bulk-auto.js +12 -11
  47. package/dist/instant-layer/use-instant-close-bulk-auto.js.map +1 -1
  48. package/dist/instant-layer/use-instant-close-bulk.d.ts.map +1 -1
  49. package/dist/instant-layer/use-instant-close-bulk.js +12 -11
  50. package/dist/instant-layer/use-instant-close-bulk.js.map +1 -1
  51. package/dist/instant-layer/use-instant-close.d.ts.map +1 -1
  52. package/dist/instant-layer/use-instant-close.js +12 -11
  53. package/dist/instant-layer/use-instant-close.js.map +1 -1
  54. package/dist/instant-layer/use-instant-open-auto.d.ts.map +1 -1
  55. package/dist/instant-layer/use-instant-open-auto.js +12 -11
  56. package/dist/instant-layer/use-instant-open-auto.js.map +1 -1
  57. package/dist/instant-layer/use-instant-open-fees.d.ts +43 -0
  58. package/dist/instant-layer/use-instant-open-fees.d.ts.map +1 -0
  59. package/dist/instant-layer/use-instant-open-fees.js +111 -0
  60. package/dist/instant-layer/use-instant-open-fees.js.map +1 -0
  61. package/dist/instant-layer/use-instant-open-with-tpsl.d.ts.map +1 -1
  62. package/dist/instant-layer/use-instant-open-with-tpsl.js +34 -31
  63. package/dist/instant-layer/use-instant-open-with-tpsl.js.map +1 -1
  64. package/dist/instant-layer/use-instant-open.d.ts +23 -18
  65. package/dist/instant-layer/use-instant-open.d.ts.map +1 -1
  66. package/dist/instant-layer/use-instant-open.js +12 -11
  67. package/dist/instant-layer/use-instant-open.js.map +1 -1
  68. package/dist/instant-layer/use-instant-opens.d.ts +6 -6
  69. package/dist/instant-layer/use-instant-opens.d.ts.map +1 -1
  70. package/dist/instant-layer/use-instant-opens.js.map +1 -1
  71. package/dist/instant-layer/use-instant-trade-required-selectors.d.ts +25 -0
  72. package/dist/instant-layer/use-instant-trade-required-selectors.d.ts.map +1 -0
  73. package/dist/instant-layer/use-instant-trade-required-selectors.js +13 -0
  74. package/dist/instant-layer/use-instant-trade-required-selectors.js.map +1 -0
  75. package/dist/instant-layer/use-limit-close-auto.d.ts +30 -0
  76. package/dist/instant-layer/use-limit-close-auto.d.ts.map +1 -0
  77. package/dist/instant-layer/use-limit-close-auto.js +33 -0
  78. package/dist/instant-layer/use-limit-close-auto.js.map +1 -0
  79. package/dist/instant-layer/use-limit-open-auto.d.ts +30 -0
  80. package/dist/instant-layer/use-limit-open-auto.d.ts.map +1 -0
  81. package/dist/instant-layer/use-limit-open-auto.js +33 -0
  82. package/dist/instant-layer/use-limit-open-auto.js.map +1 -0
  83. package/dist/inventory/index.d.ts +3 -0
  84. package/dist/inventory/index.d.ts.map +1 -0
  85. package/dist/inventory/index.js +3 -0
  86. package/dist/inventory/use-inventory-tvl-history.d.ts +27 -0
  87. package/dist/inventory/use-inventory-tvl-history.d.ts.map +1 -0
  88. package/dist/inventory/use-inventory-tvl-history.js +28 -0
  89. package/dist/inventory/use-inventory-tvl-history.js.map +1 -0
  90. package/dist/inventory/use-inventory-tvl.d.ts +23 -0
  91. package/dist/inventory/use-inventory-tvl.d.ts.map +1 -0
  92. package/dist/inventory/use-inventory-tvl.js +27 -0
  93. package/dist/inventory/use-inventory-tvl.js.map +1 -0
  94. package/dist/margin/index.d.ts +1 -0
  95. package/dist/margin/index.d.ts.map +1 -1
  96. package/dist/margin/use-account-margin-risk.d.ts +68 -0
  97. package/dist/margin/use-account-margin-risk.d.ts.map +1 -0
  98. package/dist/margin/use-account-margin-risk.js +31 -0
  99. package/dist/margin/use-account-margin-risk.js.map +1 -0
  100. package/dist/margin/use-available-instant-open-margin.d.ts +27 -7
  101. package/dist/margin/use-available-instant-open-margin.d.ts.map +1 -1
  102. package/dist/margin/use-available-instant-open-margin.js +117 -46
  103. package/dist/margin/use-available-instant-open-margin.js.map +1 -1
  104. package/dist/market-info/use-market-info.d.ts +13 -13
  105. package/dist/market-info/use-market-info.d.ts.map +1 -1
  106. package/dist/market-info/use-market-info.js.map +1 -1
  107. package/dist/markets/use-markets.d.ts +14 -8
  108. package/dist/markets/use-markets.d.ts.map +1 -1
  109. package/dist/markets/use-markets.js.map +1 -1
  110. package/dist/muon/index.d.ts +2 -0
  111. package/dist/muon/index.d.ts.map +1 -1
  112. package/dist/muon/use-force-close-price-sig.d.ts +34 -0
  113. package/dist/muon/use-force-close-price-sig.d.ts.map +1 -0
  114. package/dist/muon/use-force-close-price-sig.js +31 -0
  115. package/dist/muon/use-force-close-price-sig.js.map +1 -0
  116. package/dist/muon/use-send-quote-upnl-sig.d.ts +30 -0
  117. package/dist/muon/use-send-quote-upnl-sig.d.ts.map +1 -0
  118. package/dist/muon/use-send-quote-upnl-sig.js +28 -0
  119. package/dist/muon/use-send-quote-upnl-sig.js.map +1 -0
  120. package/dist/notifications/use-search-notifications.d.ts +12 -12
  121. package/dist/notifications/use-search-notifications.d.ts.map +1 -1
  122. package/dist/notifications/use-search-notifications.js.map +1 -1
  123. package/dist/notional-cap/use-notional-cap-by-symbol-id.d.ts +7 -7
  124. package/dist/notional-cap/use-notional-cap-by-symbol-id.d.ts.map +1 -1
  125. package/dist/notional-cap/use-notional-cap-by-symbol-id.js.map +1 -1
  126. package/dist/orderbook/index.d.ts +5 -0
  127. package/dist/orderbook/index.d.ts.map +1 -0
  128. package/dist/orderbook/index.js +5 -0
  129. package/dist/orderbook/use-binance-orderbook-source.d.ts +28 -0
  130. package/dist/orderbook/use-binance-orderbook-source.d.ts.map +1 -0
  131. package/dist/orderbook/use-binance-orderbook-source.js +26 -0
  132. package/dist/orderbook/use-binance-orderbook-source.js.map +1 -0
  133. package/dist/orderbook/use-live-orderbook.d.ts +104 -0
  134. package/dist/orderbook/use-live-orderbook.d.ts.map +1 -0
  135. package/dist/orderbook/use-live-orderbook.js +77 -0
  136. package/dist/orderbook/use-live-orderbook.js.map +1 -0
  137. package/dist/orderbook/use-orderbook-stream.d.ts +73 -0
  138. package/dist/orderbook/use-orderbook-stream.d.ts.map +1 -0
  139. package/dist/orderbook/use-orderbook-stream.js +49 -0
  140. package/dist/orderbook/use-orderbook-stream.js.map +1 -0
  141. package/dist/orderbook/use-orderbook.d.ts +35 -0
  142. package/dist/orderbook/use-orderbook.d.ts.map +1 -0
  143. package/dist/orderbook/use-orderbook.js +22 -0
  144. package/dist/orderbook/use-orderbook.js.map +1 -0
  145. package/dist/pools/index.d.ts +30 -0
  146. package/dist/pools/index.d.ts.map +1 -0
  147. package/dist/pools/index.js +30 -0
  148. package/dist/pools/use-add-market.d.ts +57 -0
  149. package/dist/pools/use-add-market.d.ts.map +1 -0
  150. package/dist/pools/use-add-market.js +30 -0
  151. package/dist/pools/use-add-market.js.map +1 -0
  152. package/dist/pools/use-authenticate-listing.d.ts +45 -0
  153. package/dist/pools/use-authenticate-listing.d.ts.map +1 -0
  154. package/dist/pools/use-authenticate-listing.js +30 -0
  155. package/dist/pools/use-authenticate-listing.js.map +1 -0
  156. package/dist/pools/use-cancel-withdraw.d.ts +47 -0
  157. package/dist/pools/use-cancel-withdraw.d.ts.map +1 -0
  158. package/dist/pools/use-cancel-withdraw.js +30 -0
  159. package/dist/pools/use-cancel-withdraw.js.map +1 -0
  160. package/dist/pools/use-claim-history.d.ts +25 -0
  161. package/dist/pools/use-claim-history.d.ts.map +1 -0
  162. package/dist/pools/use-claim-history.js +27 -0
  163. package/dist/pools/use-claim-history.js.map +1 -0
  164. package/dist/pools/use-claim-profit.d.ts +53 -0
  165. package/dist/pools/use-claim-profit.d.ts.map +1 -0
  166. package/dist/pools/use-claim-profit.js +30 -0
  167. package/dist/pools/use-claim-profit.js.map +1 -0
  168. package/dist/pools/use-deposit-address.d.ts +43 -0
  169. package/dist/pools/use-deposit-address.d.ts.map +1 -0
  170. package/dist/pools/use-deposit-address.js +28 -0
  171. package/dist/pools/use-deposit-address.js.map +1 -0
  172. package/dist/pools/use-listing-config.d.ts +28 -0
  173. package/dist/pools/use-listing-config.d.ts.map +1 -0
  174. package/dist/pools/use-listing-config.js +27 -0
  175. package/dist/pools/use-listing-config.js.map +1 -0
  176. package/dist/pools/use-listing-market-config-projection.d.ts +66 -0
  177. package/dist/pools/use-listing-market-config-projection.d.ts.map +1 -0
  178. package/dist/pools/use-listing-market-config-projection.js +57 -0
  179. package/dist/pools/use-listing-market-config-projection.js.map +1 -0
  180. package/dist/pools/use-listing-market-config.d.ts +49 -0
  181. package/dist/pools/use-listing-market-config.d.ts.map +1 -0
  182. package/dist/pools/use-listing-market-config.js +28 -0
  183. package/dist/pools/use-listing-market-config.js.map +1 -0
  184. package/dist/pools/use-listing-market-detail.d.ts +29 -0
  185. package/dist/pools/use-listing-market-detail.d.ts.map +1 -0
  186. package/dist/pools/use-listing-market-detail.js +27 -0
  187. package/dist/pools/use-listing-market-detail.js.map +1 -0
  188. package/dist/pools/use-listing-markets.d.ts +32 -0
  189. package/dist/pools/use-listing-markets.d.ts.map +1 -0
  190. package/dist/pools/use-listing-markets.js +27 -0
  191. package/dist/pools/use-listing-markets.js.map +1 -0
  192. package/dist/pools/use-listing-status.d.ts +29 -0
  193. package/dist/pools/use-listing-status.d.ts.map +1 -0
  194. package/dist/pools/use-listing-status.js +28 -0
  195. package/dist/pools/use-listing-status.js.map +1 -0
  196. package/dist/pools/use-pool-quotes.d.ts +26 -0
  197. package/dist/pools/use-pool-quotes.d.ts.map +1 -0
  198. package/dist/pools/use-pool-quotes.js +27 -0
  199. package/dist/pools/use-pool-quotes.js.map +1 -0
  200. package/dist/pools/use-pool-reward-chart.d.ts +32 -0
  201. package/dist/pools/use-pool-reward-chart.d.ts.map +1 -0
  202. package/dist/pools/use-pool-reward-chart.js +28 -0
  203. package/dist/pools/use-pool-reward-chart.js.map +1 -0
  204. package/dist/pools/use-pool-total-reward.d.ts +27 -0
  205. package/dist/pools/use-pool-total-reward.d.ts.map +1 -0
  206. package/dist/pools/use-pool-total-reward.js +28 -0
  207. package/dist/pools/use-pool-total-reward.js.map +1 -0
  208. package/dist/pools/use-pool-trade-history.d.ts +26 -0
  209. package/dist/pools/use-pool-trade-history.d.ts.map +1 -0
  210. package/dist/pools/use-pool-trade-history.js +27 -0
  211. package/dist/pools/use-pool-trade-history.js.map +1 -0
  212. package/dist/pools/use-pool-transactions.d.ts +23 -0
  213. package/dist/pools/use-pool-transactions.d.ts.map +1 -0
  214. package/dist/pools/use-pool-transactions.js +27 -0
  215. package/dist/pools/use-pool-transactions.js.map +1 -0
  216. package/dist/pools/use-refund-market.d.ts +51 -0
  217. package/dist/pools/use-refund-market.d.ts.map +1 -0
  218. package/dist/pools/use-refund-market.js +30 -0
  219. package/dist/pools/use-refund-market.js.map +1 -0
  220. package/dist/pools/use-retry-listing-info.d.ts +23 -0
  221. package/dist/pools/use-retry-listing-info.d.ts.map +1 -0
  222. package/dist/pools/use-retry-listing-info.js +27 -0
  223. package/dist/pools/use-retry-listing-info.js.map +1 -0
  224. package/dist/pools/use-retry-listing.d.ts +46 -0
  225. package/dist/pools/use-retry-listing.d.ts.map +1 -0
  226. package/dist/pools/use-retry-listing.js +30 -0
  227. package/dist/pools/use-retry-listing.js.map +1 -0
  228. package/dist/pools/use-supports-listing-service.d.ts +21 -0
  229. package/dist/pools/use-supports-listing-service.d.ts.map +1 -0
  230. package/dist/pools/use-supports-listing-service.js +13 -0
  231. package/dist/pools/use-supports-listing-service.js.map +1 -0
  232. package/dist/pools/use-update-listing-market-config.d.ts +60 -0
  233. package/dist/pools/use-update-listing-market-config.d.ts.map +1 -0
  234. package/dist/pools/use-update-listing-market-config.js +30 -0
  235. package/dist/pools/use-update-listing-market-config.js.map +1 -0
  236. package/dist/pools/use-user-listing-markets.d.ts +40 -0
  237. package/dist/pools/use-user-listing-markets.d.ts.map +1 -0
  238. package/dist/pools/use-user-listing-markets.js +28 -0
  239. package/dist/pools/use-user-listing-markets.js.map +1 -0
  240. package/dist/pools/use-user-profit.d.ts +39 -0
  241. package/dist/pools/use-user-profit.d.ts.map +1 -0
  242. package/dist/pools/use-user-profit.js +28 -0
  243. package/dist/pools/use-user-profit.js.map +1 -0
  244. package/dist/pools/use-user-reward-chart.d.ts +28 -0
  245. package/dist/pools/use-user-reward-chart.d.ts.map +1 -0
  246. package/dist/pools/use-user-reward-chart.js +28 -0
  247. package/dist/pools/use-user-reward-chart.js.map +1 -0
  248. package/dist/pools/use-user-total-reward.d.ts +30 -0
  249. package/dist/pools/use-user-total-reward.d.ts.map +1 -0
  250. package/dist/pools/use-user-total-reward.js +28 -0
  251. package/dist/pools/use-user-total-reward.js.map +1 -0
  252. package/dist/pools/use-user-transactions.d.ts +24 -0
  253. package/dist/pools/use-user-transactions.d.ts.map +1 -0
  254. package/dist/pools/use-user-transactions.js +27 -0
  255. package/dist/pools/use-user-transactions.js.map +1 -0
  256. package/dist/pools/use-weekly-listing-limit.d.ts +28 -0
  257. package/dist/pools/use-weekly-listing-limit.d.ts.map +1 -0
  258. package/dist/pools/use-weekly-listing-limit.js +28 -0
  259. package/dist/pools/use-weekly-listing-limit.js.map +1 -0
  260. package/dist/pools/use-withdraw-lp.d.ts +52 -0
  261. package/dist/pools/use-withdraw-lp.d.ts.map +1 -0
  262. package/dist/pools/use-withdraw-lp.js +30 -0
  263. package/dist/pools/use-withdraw-lp.js.map +1 -0
  264. package/dist/price-service/index.d.ts +8 -0
  265. package/dist/price-service/index.d.ts.map +1 -1
  266. package/dist/price-service/index.js +17 -9
  267. package/dist/price-service/use-binance-health.d.ts +16 -0
  268. package/dist/price-service/use-binance-health.d.ts.map +1 -0
  269. package/dist/price-service/use-binance-health.js +27 -0
  270. package/dist/price-service/use-binance-health.js.map +1 -0
  271. package/dist/price-service/use-binance-premium-index.d.ts +24 -0
  272. package/dist/price-service/use-binance-premium-index.d.ts.map +1 -0
  273. package/dist/price-service/use-binance-premium-index.js +27 -0
  274. package/dist/price-service/use-binance-premium-index.js.map +1 -0
  275. package/dist/price-service/use-binance-prices.d.ts +54 -0
  276. package/dist/price-service/use-binance-prices.d.ts.map +1 -0
  277. package/dist/price-service/use-binance-prices.js +57 -0
  278. package/dist/price-service/use-binance-prices.js.map +1 -0
  279. package/dist/price-service/use-binance-symbols-info.d.ts +18 -0
  280. package/dist/price-service/use-binance-symbols-info.d.ts.map +1 -0
  281. package/dist/price-service/use-binance-symbols-info.js +27 -0
  282. package/dist/price-service/use-binance-symbols-info.js.map +1 -0
  283. package/dist/price-service/use-enigma-price-by-market-id.d.ts +7 -1
  284. package/dist/price-service/use-enigma-price-by-market-id.d.ts.map +1 -1
  285. package/dist/price-service/use-enigma-price-by-market-id.js +1 -1
  286. package/dist/price-service/use-enigma-price-by-market-id.js.map +1 -1
  287. package/dist/price-service/use-mark-prices.d.ts +25 -0
  288. package/dist/price-service/use-mark-prices.d.ts.map +1 -0
  289. package/dist/price-service/use-mark-prices.js +27 -0
  290. package/dist/price-service/use-mark-prices.js.map +1 -0
  291. package/dist/price-service/use-price-by-market-id.d.ts +53 -0
  292. package/dist/price-service/use-price-by-market-id.d.ts.map +1 -0
  293. package/dist/price-service/use-price-by-market-id.js +33 -0
  294. package/dist/price-service/use-price-by-market-id.js.map +1 -0
  295. package/dist/price-service/use-price-by-name.d.ts +48 -0
  296. package/dist/price-service/use-price-by-name.d.ts.map +1 -0
  297. package/dist/price-service/use-price-by-name.js +23 -0
  298. package/dist/price-service/use-price-by-name.js.map +1 -0
  299. package/dist/price-service/use-prices.d.ts +87 -0
  300. package/dist/price-service/use-prices.d.ts.map +1 -0
  301. package/dist/price-service/use-prices.js +77 -0
  302. package/dist/price-service/use-prices.js.map +1 -0
  303. package/dist/provider/symmio-provider.d.ts +8 -2
  304. package/dist/provider/symmio-provider.d.ts.map +1 -1
  305. package/dist/provider/symmio-provider.js +19 -19
  306. package/dist/provider/symmio-provider.js.map +1 -1
  307. package/dist/quotes/confirm-hold.d.ts +121 -0
  308. package/dist/quotes/confirm-hold.d.ts.map +1 -0
  309. package/dist/quotes/confirm-hold.js +59 -0
  310. package/dist/quotes/confirm-hold.js.map +1 -0
  311. package/dist/quotes/index.d.ts +14 -0
  312. package/dist/quotes/index.d.ts.map +1 -1
  313. package/dist/quotes/use-account-upnl.d.ts +66 -0
  314. package/dist/quotes/use-account-upnl.d.ts.map +1 -0
  315. package/dist/quotes/use-account-upnl.js +73 -0
  316. package/dist/quotes/use-account-upnl.js.map +1 -0
  317. package/dist/quotes/use-close-quote-group.d.ts +126 -0
  318. package/dist/quotes/use-close-quote-group.d.ts.map +1 -0
  319. package/dist/quotes/use-close-quote-group.js +172 -0
  320. package/dist/quotes/use-close-quote-group.js.map +1 -0
  321. package/dist/quotes/use-cool-downs-of-ma.d.ts +26 -0
  322. package/dist/quotes/use-cool-downs-of-ma.d.ts.map +1 -0
  323. package/dist/quotes/use-cool-downs-of-ma.js +27 -0
  324. package/dist/quotes/use-cool-downs-of-ma.js.map +1 -0
  325. package/dist/quotes/use-force-cancel-close-request.d.ts +27 -0
  326. package/dist/quotes/use-force-cancel-close-request.d.ts.map +1 -0
  327. package/dist/quotes/use-force-cancel-close-request.js +41 -0
  328. package/dist/quotes/use-force-cancel-close-request.js.map +1 -0
  329. package/dist/quotes/use-force-cancel-quote.d.ts +26 -0
  330. package/dist/quotes/use-force-cancel-quote.d.ts.map +1 -0
  331. package/dist/quotes/use-force-cancel-quote.js +42 -0
  332. package/dist/quotes/use-force-cancel-quote.js.map +1 -0
  333. package/dist/quotes/use-force-close-eligibility.d.ts +30 -0
  334. package/dist/quotes/use-force-close-eligibility.d.ts.map +1 -0
  335. package/dist/quotes/use-force-close-eligibility.js +39 -0
  336. package/dist/quotes/use-force-close-eligibility.js.map +1 -0
  337. package/dist/quotes/use-force-close-params.d.ts +22 -0
  338. package/dist/quotes/use-force-close-params.d.ts.map +1 -0
  339. package/dist/quotes/use-force-close-params.js +27 -0
  340. package/dist/quotes/use-force-close-params.js.map +1 -0
  341. package/dist/quotes/use-force-close.d.ts +30 -0
  342. package/dist/quotes/use-force-close.d.ts.map +1 -0
  343. package/dist/quotes/use-force-close.js +38 -0
  344. package/dist/quotes/use-force-close.js.map +1 -0
  345. package/dist/quotes/use-grouped-quotes.d.ts +50 -10
  346. package/dist/quotes/use-grouped-quotes.d.ts.map +1 -1
  347. package/dist/quotes/use-grouped-quotes.js +40 -14
  348. package/dist/quotes/use-grouped-quotes.js.map +1 -1
  349. package/dist/quotes/use-grouping-isolation.d.ts +35 -0
  350. package/dist/quotes/use-grouping-isolation.d.ts.map +1 -0
  351. package/dist/quotes/use-grouping-isolation.js +39 -0
  352. package/dist/quotes/use-grouping-isolation.js.map +1 -0
  353. package/dist/quotes/use-limit-orders.d.ts +62 -0
  354. package/dist/quotes/use-limit-orders.d.ts.map +1 -0
  355. package/dist/quotes/use-limit-orders.js +82 -0
  356. package/dist/quotes/use-limit-orders.js.map +1 -0
  357. package/dist/quotes/use-managed-quotes.d.ts.map +1 -1
  358. package/dist/quotes/use-managed-quotes.js +198 -166
  359. package/dist/quotes/use-managed-quotes.js.map +1 -1
  360. package/dist/quotes/use-party-a-open-positions.d.ts +26 -6
  361. package/dist/quotes/use-party-a-open-positions.d.ts.map +1 -1
  362. package/dist/quotes/use-party-a-open-positions.js +32 -12
  363. package/dist/quotes/use-party-a-open-positions.js.map +1 -1
  364. package/dist/quotes/use-quote-funding.d.ts +2 -2
  365. package/dist/quotes/use-quote-funding.js.map +1 -1
  366. package/dist/quotes/use-quote-group-funding-history.d.ts +70 -0
  367. package/dist/quotes/use-quote-group-funding-history.d.ts.map +1 -0
  368. package/dist/quotes/use-quote-group-funding-history.js +38 -0
  369. package/dist/quotes/use-quote-group-funding-history.js.map +1 -0
  370. package/dist/quotes/use-quote-group-funding.d.ts +67 -0
  371. package/dist/quotes/use-quote-group-funding.d.ts.map +1 -0
  372. package/dist/quotes/use-quote-group-funding.js +26 -0
  373. package/dist/quotes/use-quote-group-funding.js.map +1 -0
  374. package/dist/quotes/use-quote-group-margin-risk.d.ts +111 -0
  375. package/dist/quotes/use-quote-group-margin-risk.d.ts.map +1 -0
  376. package/dist/quotes/use-quote-group-margin-risk.js +63 -0
  377. package/dist/quotes/use-quote-group-margin-risk.js.map +1 -0
  378. package/dist/quotes/use-quote-upnl-and-pnl.d.ts +4 -3
  379. package/dist/quotes/use-quote-upnl-and-pnl.d.ts.map +1 -1
  380. package/dist/quotes/use-quote-upnl-and-pnl.js +2 -1
  381. package/dist/quotes/use-quote-upnl-and-pnl.js.map +1 -1
  382. package/dist/quotes/use-quotes-funding.d.ts +46 -10
  383. package/dist/quotes/use-quotes-funding.d.ts.map +1 -1
  384. package/dist/quotes/use-quotes-funding.js +44 -42
  385. package/dist/quotes/use-quotes-funding.js.map +1 -1
  386. package/dist/quotes/use-request-to-cancel-close-request.d.ts +27 -0
  387. package/dist/quotes/use-request-to-cancel-close-request.d.ts.map +1 -0
  388. package/dist/quotes/use-request-to-cancel-close-request.js +41 -0
  389. package/dist/quotes/use-request-to-cancel-close-request.js.map +1 -0
  390. package/dist/quotes/use-request-to-cancel-quote.d.ts +32 -0
  391. package/dist/quotes/use-request-to-cancel-quote.d.ts.map +1 -0
  392. package/dist/quotes/use-request-to-cancel-quote.js +42 -0
  393. package/dist/quotes/use-request-to-cancel-quote.js.map +1 -0
  394. package/dist/rasa-solver/index.d.ts +7 -0
  395. package/dist/rasa-solver/index.d.ts.map +1 -0
  396. package/dist/rasa-solver/use-error-message.d.ts +14 -0
  397. package/dist/rasa-solver/use-error-message.d.ts.map +1 -0
  398. package/dist/rasa-solver/use-error-message.js +27 -0
  399. package/dist/rasa-solver/use-error-message.js.map +1 -0
  400. package/dist/rasa-solver/use-party-a-upnl.d.ts +14 -0
  401. package/dist/rasa-solver/use-party-a-upnl.d.ts.map +1 -0
  402. package/dist/rasa-solver/use-party-a-upnl.js +27 -0
  403. package/dist/rasa-solver/use-party-a-upnl.js.map +1 -0
  404. package/dist/rasa-solver/use-solver-balance-info.d.ts +14 -0
  405. package/dist/rasa-solver/use-solver-balance-info.d.ts.map +1 -0
  406. package/dist/rasa-solver/use-solver-balance-info.js +27 -0
  407. package/dist/rasa-solver/use-solver-balance-info.js.map +1 -0
  408. package/dist/rasa-solver/use-solver-open-interest.d.ts +14 -0
  409. package/dist/rasa-solver/use-solver-open-interest.d.ts.map +1 -0
  410. package/dist/rasa-solver/use-solver-open-interest.js +27 -0
  411. package/dist/rasa-solver/use-solver-open-interest.js.map +1 -0
  412. package/dist/rasa-solver/use-solver-price-range.d.ts +14 -0
  413. package/dist/rasa-solver/use-solver-price-range.d.ts.map +1 -0
  414. package/dist/rasa-solver/use-solver-price-range.js +27 -0
  415. package/dist/rasa-solver/use-solver-price-range.js.map +1 -0
  416. package/dist/rasa-solver/use-solver-readiness.d.ts +13 -0
  417. package/dist/rasa-solver/use-solver-readiness.d.ts.map +1 -0
  418. package/dist/rasa-solver/use-solver-readiness.js +27 -0
  419. package/dist/rasa-solver/use-solver-readiness.js.map +1 -0
  420. package/dist/revenue-records/index.d.ts +2 -0
  421. package/dist/revenue-records/index.d.ts.map +1 -0
  422. package/dist/revenue-records/use-revenue-records.d.ts +25 -0
  423. package/dist/revenue-records/use-revenue-records.d.ts.map +1 -0
  424. package/dist/revenue-records/use-revenue-records.js +27 -0
  425. package/dist/revenue-records/use-revenue-records.js.map +1 -0
  426. package/dist/solvers/index.d.ts +3 -0
  427. package/dist/solvers/index.d.ts.map +1 -0
  428. package/dist/solvers/use-solver-capabilities.d.ts +31 -0
  429. package/dist/solvers/use-solver-capabilities.d.ts.map +1 -0
  430. package/dist/solvers/use-solver-capabilities.js +30 -0
  431. package/dist/solvers/use-solver-capabilities.js.map +1 -0
  432. package/dist/solvers/use-solver-revenue.d.ts +28 -0
  433. package/dist/solvers/use-solver-revenue.d.ts.map +1 -0
  434. package/dist/solvers/use-solver-revenue.js +27 -0
  435. package/dist/solvers/use-solver-revenue.js.map +1 -0
  436. package/dist/symbols/index.d.ts +2 -0
  437. package/dist/symbols/index.d.ts.map +1 -0
  438. package/dist/symbols/use-symbols.d.ts +25 -0
  439. package/dist/symbols/use-symbols.d.ts.map +1 -0
  440. package/dist/symbols/use-symbols.js +27 -0
  441. package/dist/symbols/use-symbols.js.map +1 -0
  442. package/dist/tpsl/apply-tpsl-search-snapshot.d.ts +33 -0
  443. package/dist/tpsl/apply-tpsl-search-snapshot.d.ts.map +1 -0
  444. package/dist/tpsl/apply-tpsl-search-snapshot.js +51 -0
  445. package/dist/tpsl/apply-tpsl-search-snapshot.js.map +1 -0
  446. package/dist/tpsl/await-tpsl-confirmation.d.ts +77 -0
  447. package/dist/tpsl/await-tpsl-confirmation.d.ts.map +1 -0
  448. package/dist/tpsl/await-tpsl-confirmation.js +42 -0
  449. package/dist/tpsl/await-tpsl-confirmation.js.map +1 -0
  450. package/dist/tpsl/index.d.ts +11 -0
  451. package/dist/tpsl/index.d.ts.map +1 -1
  452. package/dist/tpsl/invalidate-tpsl.d.ts +23 -0
  453. package/dist/tpsl/invalidate-tpsl.d.ts.map +1 -0
  454. package/dist/tpsl/invalidate-tpsl.js +14 -0
  455. package/dist/tpsl/invalidate-tpsl.js.map +1 -0
  456. package/dist/tpsl/match-tpsl-notification.d.ts +27 -0
  457. package/dist/tpsl/match-tpsl-notification.d.ts.map +1 -0
  458. package/dist/tpsl/match-tpsl-notification.js +22 -0
  459. package/dist/tpsl/match-tpsl-notification.js.map +1 -0
  460. package/dist/tpsl/run-with-concurrency.d.ts +20 -0
  461. package/dist/tpsl/run-with-concurrency.d.ts.map +1 -0
  462. package/dist/tpsl/run-with-concurrency.js +15 -0
  463. package/dist/tpsl/run-with-concurrency.js.map +1 -0
  464. package/dist/tpsl/settled-side.d.ts +31 -0
  465. package/dist/tpsl/settled-side.d.ts.map +1 -0
  466. package/dist/tpsl/settled-side.js +21 -0
  467. package/dist/tpsl/settled-side.js.map +1 -0
  468. package/dist/tpsl/tpsl-fallback-poll.d.ts +74 -0
  469. package/dist/tpsl/tpsl-fallback-poll.d.ts.map +1 -0
  470. package/dist/tpsl/tpsl-fallback-poll.js +101 -0
  471. package/dist/tpsl/tpsl-fallback-poll.js.map +1 -0
  472. package/dist/tpsl/tpsl-store.d.ts +98 -2
  473. package/dist/tpsl/tpsl-store.d.ts.map +1 -1
  474. package/dist/tpsl/tpsl-store.js +111 -63
  475. package/dist/tpsl/tpsl-store.js.map +1 -1
  476. package/dist/tpsl/use-delete-quote-group-tpsl.d.ts +165 -0
  477. package/dist/tpsl/use-delete-quote-group-tpsl.d.ts.map +1 -0
  478. package/dist/tpsl/use-delete-quote-group-tpsl.js +247 -0
  479. package/dist/tpsl/use-delete-quote-group-tpsl.js.map +1 -0
  480. package/dist/tpsl/use-delete-quote-tpsl.d.ts.map +1 -1
  481. package/dist/tpsl/use-delete-quote-tpsl.js +11 -10
  482. package/dist/tpsl/use-delete-quote-tpsl.js.map +1 -1
  483. package/dist/tpsl/use-quote-group-tpsl-editor.d.ts +66 -0
  484. package/dist/tpsl/use-quote-group-tpsl-editor.d.ts.map +1 -0
  485. package/dist/tpsl/use-quote-group-tpsl-editor.js +78 -0
  486. package/dist/tpsl/use-quote-group-tpsl-editor.js.map +1 -0
  487. package/dist/tpsl/use-quote-group-tpsl.d.ts +74 -0
  488. package/dist/tpsl/use-quote-group-tpsl.d.ts.map +1 -0
  489. package/dist/tpsl/use-quote-group-tpsl.js +67 -0
  490. package/dist/tpsl/use-quote-group-tpsl.js.map +1 -0
  491. package/dist/tpsl/use-quote-tpsl.d.ts +18 -2
  492. package/dist/tpsl/use-quote-tpsl.d.ts.map +1 -1
  493. package/dist/tpsl/use-quote-tpsl.js +32 -24
  494. package/dist/tpsl/use-quote-tpsl.js.map +1 -1
  495. package/dist/tpsl/use-search-tpsl-orders.d.ts +30 -0
  496. package/dist/tpsl/use-search-tpsl-orders.d.ts.map +1 -0
  497. package/dist/tpsl/use-search-tpsl-orders.js +27 -0
  498. package/dist/tpsl/use-search-tpsl-orders.js.map +1 -0
  499. package/dist/tpsl/use-set-quote-group-tpsl.d.ts +234 -0
  500. package/dist/tpsl/use-set-quote-group-tpsl.d.ts.map +1 -0
  501. package/dist/tpsl/use-set-quote-group-tpsl.js +358 -0
  502. package/dist/tpsl/use-set-quote-group-tpsl.js.map +1 -0
  503. package/dist/tpsl/use-set-quote-tpsl.d.ts +4 -4
  504. package/dist/tpsl/use-set-quote-tpsl.d.ts.map +1 -1
  505. package/dist/tpsl/use-set-quote-tpsl.js +15 -12
  506. package/dist/tpsl/use-set-quote-tpsl.js.map +1 -1
  507. package/dist/tpsl/use-tpsl-supported.d.ts +22 -0
  508. package/dist/tpsl/use-tpsl-supported.d.ts.map +1 -0
  509. package/dist/tpsl/use-tpsl-supported.js +16 -0
  510. package/dist/tpsl/use-tpsl-supported.js.map +1 -0
  511. package/dist/tpsl/use-watch-tpsl-accounts.d.ts +33 -0
  512. package/dist/tpsl/use-watch-tpsl-accounts.d.ts.map +1 -0
  513. package/dist/tpsl/use-watch-tpsl-accounts.js +44 -0
  514. package/dist/tpsl/use-watch-tpsl-accounts.js.map +1 -0
  515. package/dist/trade-volume/index.d.ts +2 -0
  516. package/dist/trade-volume/index.d.ts.map +1 -0
  517. package/dist/trade-volume/use-trade-volume.d.ts +26 -0
  518. package/dist/trade-volume/use-trade-volume.d.ts.map +1 -0
  519. package/dist/trade-volume/use-trade-volume.js +27 -0
  520. package/dist/trade-volume/use-trade-volume.js.map +1 -0
  521. package/dist/utils/index.d.ts +1 -0
  522. package/dist/utils/index.d.ts.map +1 -1
  523. package/dist/utils/invalidate-account-balances.d.ts +36 -0
  524. package/dist/utils/invalidate-account-balances.d.ts.map +1 -0
  525. package/dist/utils/invalidate-account-balances.js +10 -0
  526. package/dist/utils/invalidate-account-balances.js.map +1 -0
  527. package/dist/websocket/use-notifications.d.ts +3 -1
  528. package/dist/websocket/use-notifications.d.ts.map +1 -1
  529. package/dist/websocket/use-notifications.js +22 -20
  530. package/dist/websocket/use-notifications.js.map +1 -1
  531. package/dist/withdraw/index.d.ts +1 -0
  532. package/dist/withdraw/index.d.ts.map +1 -1
  533. package/dist/withdraw/use-initiate-withdraw.d.ts +1 -1
  534. package/dist/withdraw/use-initiate-withdraw.js.map +1 -1
  535. package/dist/withdraw/use-request-cancel-withdraw.d.ts +4 -2
  536. package/dist/withdraw/use-request-cancel-withdraw.d.ts.map +1 -1
  537. package/dist/withdraw/use-request-cancel-withdraw.js +15 -13
  538. package/dist/withdraw/use-request-cancel-withdraw.js.map +1 -1
  539. package/dist/withdraw/use-withdraw.d.ts +67 -0
  540. package/dist/withdraw/use-withdraw.d.ts.map +1 -0
  541. package/dist/withdraw/use-withdraw.js +49 -0
  542. package/dist/withdraw/use-withdraw.js.map +1 -0
  543. package/package.json +18 -2
@@ -1,4 +1,4 @@
1
- import { PositionType, ConfigParameter } from '@symmio/trading-core';
1
+ import { PositionType, ConfigParameter, SolverId } from '@symmio/trading-core';
2
2
  import { Address } from 'viem';
3
3
  import { SymmioRequestError } from '../errors/symmio-request-error.js';
4
4
  /** Parameters for {@link useAvailableInstantOpenMargin}. */
@@ -13,6 +13,12 @@ export interface UseAvailableInstantOpenMarginParameters extends ConfigParameter
13
13
  positionType: PositionType;
14
14
  /** Slippage percent, e.g. `5`. */
15
15
  slippage: number;
16
+ /**
17
+ * Solver whose markets and price provider value the cross-margin uPnL.
18
+ * Defaults to the chain's default solver. The margin **model** is not chosen
19
+ * here — it follows the sub-account's isolation type.
20
+ */
21
+ solverId?: SolverId;
16
22
  /** Optional chain override; defaults to the connected chain. */
17
23
  chainId?: number;
18
24
  }
@@ -30,17 +36,31 @@ export interface UseAvailableInstantOpenMarginReturnType {
30
36
  refetch: () => Promise<void>;
31
37
  }
32
38
  /**
33
- * Maximum initial margin an instant open can spend for `account` on a market,
34
- * shaved for fees and — SHORT only — a worst-case slippage fill. Composes
35
- * {@link useAccountBalanceOf} + {@link useFeeForUser} and feeds them to
36
- * `calculateAvailableInstantOpenMargin`. Wire the result to the trade form's
37
- * `Max` chip and gate submit on it.
39
+ * Maximum initial margin an instant open can spend for `account` on a market —
40
+ * **the** margin hook. The margin model follows the sub-account's isolation
41
+ * type:
42
+ *
43
+ * - **VA isolations** (`POSITION` / `MARKET` / `MARKET_DIRECTION`): the
44
+ * sub-account's available balance shaved for fees and — SHORT only — a
45
+ * worst-case slippage fill (`calculateAvailableInstantOpenMargin` over
46
+ * {@link useAccountBalanceOf} + {@link useFeeForUser}).
47
+ * - **`CUSTOM` (cross-margin)** — trades execute on the sub-account directly:
48
+ * `calculateAvailableForOrder` over the live `balanceInfoOfPartyA` snapshot
49
+ * and the account's SDK-computed uPnL ({@link useAccountUpnl} — Σ
50
+ * per-position uPnL against live mark prices), clamped at zero. **On the
51
+ * Rasa solver only**, 90% of it is spendable — a 10% buffer stays reserved
52
+ * (see `RASA_SPENDABLE_BPS`); other cross-margin solvers spend 100%.
53
+ *
54
+ * Every read is live: balances refetch on on-chain settle notifications and
55
+ * the cross-margin uPnL streams off the price socket, so the `Max` chip tracks
56
+ * trades and the market without manual refreshes. Wire the result to the trade
57
+ * form's `Max` chip and gate submit on it.
38
58
  *
39
59
  * @example
40
60
  * ```tsx
41
61
  * const { availableMargin, availableMarginWei } = useAvailableInstantOpenMargin({
42
62
  * account: subAccount,
43
- * symbolId: market.symbol_id,
63
+ * symbolId: market.symbolId,
44
64
  * leverage,
45
65
  * positionType,
46
66
  * slippage,
@@ -1 +1 @@
1
- {"version":3,"file":"use-available-instant-open-margin.d.ts","sourceRoot":"","sources":["../../src/margin/use-available-instant-open-margin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuC,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE/G,OAAO,EAA4B,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAQzE,4DAA4D;AAC5D,MAAM,WAAW,uCAAwC,SAAQ,eAAe;IAC9E,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,YAAY,EAAE,YAAY,CAAC;IAC3B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4DAA4D;AAC5D,MAAM,WAAW,uCAAuC;IACtD,iFAAiF;IACjF,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,sHAAsH;IACtH,eAAe,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACjC,qFAAqF;IACrF,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,uCAAuC,GAClD,uCAAuC,CAwCzC"}
1
+ {"version":3,"file":"use-available-instant-open-margin.d.ts","sourceRoot":"","sources":["../../src/margin/use-available-instant-open-margin.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,YAAY,EAEZ,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAA4B,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAI9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAqBzE,4DAA4D;AAC5D,MAAM,WAAW,uCAAwC,SAAQ,eAAe;IAC9E,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,YAAY,EAAE,YAAY,CAAC;IAC3B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4DAA4D;AAC5D,MAAM,WAAW,uCAAuC;IACtD,iFAAiF;IACjF,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,sHAAsH;IACtH,eAAe,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACjC,qFAAqF;IACrF,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,uCAAuC,GAClD,uCAAuC,CAuHzC"}
@@ -1,66 +1,137 @@
1
1
  "use client";
2
- import { useAccountBalanceOf as e } from "../account-layer/use-account-balance-of.js";
3
- import { useFeeForUser as t } from "../fees/use-fee-for-user.js";
4
- import { calculateAvailableInstantOpenMargin as n } from "@symmio/trading-core";
5
- import { useCallback as r, useMemo as i } from "react";
6
- import { formatUnits as a, zeroAddress as o } from "viem";
2
+ import { useSymmioConfig as e } from "../provider/use-symmio-config.js";
3
+ import { useAccountBalanceInfo as t } from "../account-layer/use-account-balance-info.js";
4
+ import { useAccountBalanceOf as n } from "../account-layer/use-account-balance-of.js";
5
+ import { useSubAccount as r } from "../account-layer/use-sub-account.js";
6
+ import { useFeeForUser as i } from "../fees/use-fee-for-user.js";
7
+ import { useAccountUpnl as a } from "../quotes/use-account-upnl.js";
8
+ import { SubAccountIsolationType as o, calculateAvailableForOrder as s, calculateAvailableInstantOpenMargin as c } from "@symmio/trading-core";
9
+ import { useCallback as l, useMemo as u } from "react";
10
+ import { formatUnits as d, zeroAddress as f } from "viem";
7
11
  //#region src/margin/use-available-instant-open-margin.ts
8
- function s(e) {
12
+ function p(e) {
9
13
  return BigInt(Math.round(e * 0x2386f26fc10000));
10
14
  }
11
- function c(c) {
12
- let { account: l, symbolId: u, leverage: d, positionType: f, slippage: p, chainId: m, config: h } = c, g = e({
13
- account: l,
14
- chainId: m,
15
- config: h,
15
+ var m = 9000n;
16
+ function h(h) {
17
+ let { account: g, symbolId: _, leverage: v, positionType: y, slippage: b, solverId: x, chainId: S, config: C } = h, w = e(h).getSolver({
18
+ chainId: S,
19
+ solverId: x
20
+ }).id === "rasa", T = r({
21
+ account: g ?? f,
22
+ chainId: S,
23
+ config: C,
24
+ query: {
25
+ enabled: !!g,
26
+ staleTime: Infinity
27
+ }
28
+ }), E = g === void 0 ? void 0 : T.data?.isolationType, D = E !== void 0, O = E === o.CUSTOM, k = n({
29
+ account: g,
30
+ chainId: S,
31
+ config: C,
32
+ live: !0,
33
+ query: { enabled: D && !O }
34
+ }), A = i({
35
+ user: g ?? f,
36
+ symbolId: _ ?? 0,
37
+ chainId: S,
38
+ config: C,
39
+ query: { enabled: D && !O && !!(g && _ !== void 0) }
40
+ }), j = t({
41
+ account: g,
42
+ chainId: S,
43
+ config: C,
44
+ live: !0,
45
+ query: { enabled: O && !!g }
46
+ }), M = a({
47
+ account: g,
48
+ chainId: S,
49
+ solverId: x,
50
+ config: C,
51
+ enabled: O,
16
52
  live: !0
17
- }), _ = t({
18
- user: l ?? o,
19
- symbolId: u ?? 0,
20
- chainId: m,
21
- config: h,
22
- query: { enabled: !!(l && u !== void 0) }
23
- }), { data: v, isLoading: y, error: b, refetch: x } = g, { data: S, isLoading: C, error: w, refetch: T } = _, E = r(async () => {
24
- await Promise.all([x(), T()]);
25
- }, [x, T]);
26
- return i(() => {
27
- let e = y || C, t = b ?? w ?? null;
28
- if (v === void 0 || S === void 0) return {
53
+ }), { data: N, isLoading: P, error: F, refetch: I } = k, { data: L, isLoading: R, error: z, refetch: B } = A, { data: V, isLoading: H, error: U, refetch: W } = j, { upnl: G, isLoading: K, refetch: q } = M, J = l(async () => {
54
+ if (O) {
55
+ await Promise.all([W(), q()]);
56
+ return;
57
+ }
58
+ await Promise.all([I(), B()]);
59
+ }, [
60
+ O,
61
+ I,
62
+ B,
63
+ W,
64
+ q
65
+ ]);
66
+ return u(() => {
67
+ let e = !!g && !D;
68
+ if (O) {
69
+ let e = H || K, t = U ?? null;
70
+ if (V === void 0 || G === void 0) return {
71
+ availableMarginWei: void 0,
72
+ availableMargin: "0",
73
+ isLoading: e,
74
+ error: t,
75
+ refetch: J
76
+ };
77
+ let n = s({
78
+ balanceInfo: V,
79
+ upnl: G
80
+ }), r = n > 0n ? n : 0n, i = w ? r * m / 10000n : r;
81
+ return {
82
+ availableMarginWei: i,
83
+ availableMargin: d(i, 18),
84
+ isLoading: e,
85
+ error: t,
86
+ refetch: J
87
+ };
88
+ }
89
+ let t = e || P || R, n = F ?? z ?? null;
90
+ if (!D || N === void 0 || L === void 0) return {
29
91
  availableMarginWei: void 0,
30
92
  availableMargin: "0",
31
- isLoading: e,
32
- error: t,
33
- refetch: E
93
+ isLoading: t,
94
+ error: n,
95
+ refetch: J
34
96
  };
35
- let r = n({
36
- balance: v,
37
- openFee: S.openFee,
38
- closeFee: S.closeFee,
39
- slippageFractionWei: s(p),
40
- leverage: d,
41
- positionType: f
97
+ let r = c({
98
+ balance: N,
99
+ openFee: L.openFee,
100
+ closeFee: L.closeFee,
101
+ slippageFractionWei: p(b),
102
+ leverage: v,
103
+ positionType: y
42
104
  });
43
105
  return {
44
106
  availableMarginWei: r,
45
- availableMargin: a(r, 18),
46
- isLoading: e,
47
- error: t,
48
- refetch: E
107
+ availableMargin: d(r, 18),
108
+ isLoading: t,
109
+ error: n,
110
+ refetch: J
49
111
  };
50
112
  }, [
113
+ g,
114
+ D,
115
+ O,
116
+ w,
117
+ N,
118
+ P,
119
+ F,
120
+ L,
121
+ R,
122
+ z,
123
+ V,
124
+ H,
125
+ U,
126
+ G,
127
+ K,
128
+ b,
51
129
  v,
52
130
  y,
53
- b,
54
- S,
55
- C,
56
- w,
57
- p,
58
- d,
59
- f,
60
- E
131
+ J
61
132
  ]);
62
133
  }
63
134
  //#endregion
64
- export { c as useAvailableInstantOpenMargin };
135
+ export { h as useAvailableInstantOpenMargin };
65
136
 
66
137
  //# sourceMappingURL=use-available-instant-open-margin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-available-instant-open-margin.js","names":[],"sources":["../../src/margin/use-available-instant-open-margin.ts"],"sourcesContent":["\"use client\";\n\nimport { calculateAvailableInstantOpenMargin, PositionType, type ConfigParameter } from \"@symmio/trading-core\";\nimport { useCallback, useMemo } from \"react\";\nimport { formatUnits, zeroAddress, type Address } from \"viem\";\nimport { useAccountBalanceOf } from \"../account-layer/use-account-balance-of\";\nimport type { SymmioRequestError } from \"../errors/symmio-request-error\";\nimport { useFeeForUser } from \"../fees/use-fee-for-user\";\n\n/** Convert a slippage percent (e.g. `5`) to an 18-decimal fraction (`5e16`). */\nfunction slippagePercentToFractionWei(slippage: number): bigint {\n return BigInt(Math.round(slippage * 1e16));\n}\n\n/** Parameters for {@link useAvailableInstantOpenMargin}. */\nexport interface UseAvailableInstantOpenMarginParameters extends ConfigParameter {\n /** SubAccount to spend margin from. The hook is idle until it is set. */\n account?: Address;\n /** Market symbol id, for the fee lookup. Idle until it is set. */\n symbolId?: bigint | number;\n /** Requested leverage (integer ≥ 1). */\n leverage: number;\n /** LONG skips the slippage cap; SHORT applies it. */\n positionType: PositionType;\n /** Slippage percent, e.g. `5`. */\n slippage: number;\n /** Optional chain override; defaults to the connected chain. */\n chainId?: number;\n}\n\n/** Return type of {@link useAvailableInstantOpenMargin}. */\nexport interface UseAvailableInstantOpenMarginReturnType {\n /** Spendable margin in 18-decimal wei; `undefined` until balance + fees load. */\n availableMarginWei: bigint | undefined;\n /** {@link UseAvailableInstantOpenMarginReturnType.availableMarginWei} as a decimal string; `\"0\"` when unavailable. */\n availableMargin: string;\n /** `true` while the underlying balance / fee reads are loading. */\n isLoading: boolean;\n /** First error from the balance / fee reads, if any. */\n error: SymmioRequestError | null;\n /** Refetch the underlying balance + fee reads (e.g. after an open/close settles). */\n refetch: () => Promise<void>;\n}\n\n/**\n * Maximum initial margin an instant open can spend for `account` on a market,\n * shaved for fees and — SHORT only — a worst-case slippage fill. Composes\n * {@link useAccountBalanceOf} + {@link useFeeForUser} and feeds them to\n * `calculateAvailableInstantOpenMargin`. Wire the result to the trade form's\n * `Max` chip and gate submit on it.\n *\n * @example\n * ```tsx\n * const { availableMargin, availableMarginWei } = useAvailableInstantOpenMargin({\n * account: subAccount,\n * symbolId: market.symbol_id,\n * leverage,\n * positionType,\n * slippage,\n * });\n * ```\n */\nexport function useAvailableInstantOpenMargin(\n parameters: UseAvailableInstantOpenMarginParameters,\n): UseAvailableInstantOpenMarginReturnType {\n const { account, symbolId, leverage, positionType, slippage, chainId, config } = parameters;\n\n // `live` keeps the shaved margin fresh: the balance refetches when an\n // open/close settles on-chain, so the Max chip drops without a manual refresh.\n const balanceQuery = useAccountBalanceOf({ account, chainId, config, live: true });\n const feeQuery = useFeeForUser({\n user: account ?? zeroAddress,\n symbolId: symbolId ?? 0,\n chainId,\n config,\n query: { enabled: Boolean(account && symbolId !== undefined) },\n });\n\n const { data: balance, isLoading: balanceLoading, error: balanceError, refetch: refetchBalance } = balanceQuery;\n const { data: fees, isLoading: feeLoading, error: feeError, refetch: refetchFees } = feeQuery;\n\n const refetch = useCallback(async () => {\n await Promise.all([refetchBalance(), refetchFees()]);\n }, [refetchBalance, refetchFees]);\n\n return useMemo<UseAvailableInstantOpenMarginReturnType>(() => {\n const isLoading = balanceLoading || feeLoading;\n const error = balanceError ?? feeError ?? null;\n\n if (balance === undefined || fees === undefined) {\n return { availableMarginWei: undefined, availableMargin: \"0\", isLoading, error, refetch };\n }\n\n const availableMarginWei = calculateAvailableInstantOpenMargin({\n balance,\n openFee: fees.openFee,\n closeFee: fees.closeFee,\n slippageFractionWei: slippagePercentToFractionWei(slippage),\n leverage,\n positionType,\n });\n\n return { availableMarginWei, availableMargin: formatUnits(availableMarginWei, 18), isLoading, error, refetch };\n }, [balance, balanceLoading, balanceError, fees, feeLoading, feeError, slippage, leverage, positionType, refetch]);\n}\n"],"mappings":";;;;;;;AAUA,SAAS,EAA6B,GAA0B;CAC9D,OAAO,OAAO,KAAK,MAAM,IAAW,gBAAI,CAAC;AAC3C;AAkDA,SAAgB,EACd,GACyC;CACzC,IAAM,EAAE,YAAS,aAAU,aAAU,iBAAc,aAAU,YAAS,cAAW,GAI3E,IAAe,EAAoB;EAAE;EAAS;EAAS;EAAQ,MAAM;CAAK,CAAC,GAC3E,IAAW,EAAc;EAC7B,MAAM,KAAW;EACjB,UAAU,KAAY;EACtB;EACA;EACA,OAAO,EAAE,SAAS,GAAQ,KAAW,MAAa,KAAA,GAAW;CAC/D,CAAC,GAEK,EAAE,MAAM,GAAS,WAAW,GAAgB,OAAO,GAAc,SAAS,MAAmB,GAC7F,EAAE,MAAM,GAAM,WAAW,GAAY,OAAO,GAAU,SAAS,MAAgB,GAE/E,IAAU,EAAY,YAAY;EACtC,MAAM,QAAQ,IAAI,CAAC,EAAe,GAAG,EAAY,CAAC,CAAC;CACrD,GAAG,CAAC,GAAgB,CAAW,CAAC;CAEhC,OAAO,QAAuD;EAC5D,IAAM,IAAY,KAAkB,GAC9B,IAAQ,KAAgB,KAAY;EAE1C,IAAI,MAAY,KAAA,KAAa,MAAS,KAAA,GACpC,OAAO;GAAE,oBAAoB,KAAA;GAAW,iBAAiB;GAAK;GAAW;GAAO;EAAQ;EAG1F,IAAM,IAAqB,EAAoC;GAC7D;GACA,SAAS,EAAK;GACd,UAAU,EAAK;GACf,qBAAqB,EAA6B,CAAQ;GAC1D;GACA;EACF,CAAC;EAED,OAAO;GAAE;GAAoB,iBAAiB,EAAY,GAAoB,EAAE;GAAG;GAAW;GAAO;EAAQ;CAC/G,GAAG;EAAC;EAAS;EAAgB;EAAc;EAAM;EAAY;EAAU;EAAU;EAAU;EAAc;CAAO,CAAC;AACnH"}
1
+ {"version":3,"file":"use-available-instant-open-margin.js","names":[],"sources":["../../src/margin/use-available-instant-open-margin.ts"],"sourcesContent":["\"use client\";\n\nimport {\n calculateAvailableForOrder,\n calculateAvailableInstantOpenMargin,\n PositionType,\n SubAccountIsolationType,\n type ConfigParameter,\n type SolverId,\n} from \"@symmio/trading-core\";\nimport { useCallback, useMemo } from \"react\";\nimport { formatUnits, zeroAddress, type Address } from \"viem\";\nimport { useAccountBalanceInfo } from \"../account-layer/use-account-balance-info\";\nimport { useAccountBalanceOf } from \"../account-layer/use-account-balance-of\";\nimport { useSubAccount } from \"../account-layer/use-sub-account\";\nimport type { SymmioRequestError } from \"../errors/symmio-request-error\";\nimport { useFeeForUser } from \"../fees/use-fee-for-user\";\nimport { useSymmioConfig } from \"../provider/use-symmio-config\";\nimport { useAccountUpnl } from \"../quotes/use-account-upnl\";\n\n/** Convert a slippage percent (e.g. `5`) to an 18-decimal fraction (`5e16`). */\nfunction slippagePercentToFractionWei(slippage: number): bigint {\n return BigInt(Math.round(slippage * 1e16));\n}\n\n/**\n * **Rasa-specific policy**: the fraction of a cross-margin account's\n * `availableForOrder` a new open may spend, in basis points (90%). The\n * remaining 10% stays as a safety buffer so a fill at a slightly worse price\n * or a fee charge cannot tip the account straight into deficiency.\n *\n * Applied only when the resolved solver is Rasa — a future cross-margin solver\n * spends 100% unless its vendor mandates its own buffer.\n */\nconst RASA_SPENDABLE_BPS = 9_000n;\n\n/** Parameters for {@link useAvailableInstantOpenMargin}. */\nexport interface UseAvailableInstantOpenMarginParameters extends ConfigParameter {\n /** SubAccount to spend margin from. The hook is idle until it is set. */\n account?: Address;\n /** Market symbol id, for the fee lookup. Idle until it is set. */\n symbolId?: bigint | number;\n /** Requested leverage (integer ≥ 1). */\n leverage: number;\n /** LONG skips the slippage cap; SHORT applies it. */\n positionType: PositionType;\n /** Slippage percent, e.g. `5`. */\n slippage: number;\n /**\n * Solver whose markets and price provider value the cross-margin uPnL.\n * Defaults to the chain's default solver. The margin **model** is not chosen\n * here — it follows the sub-account's isolation type.\n */\n solverId?: SolverId;\n /** Optional chain override; defaults to the connected chain. */\n chainId?: number;\n}\n\n/** Return type of {@link useAvailableInstantOpenMargin}. */\nexport interface UseAvailableInstantOpenMarginReturnType {\n /** Spendable margin in 18-decimal wei; `undefined` until balance + fees load. */\n availableMarginWei: bigint | undefined;\n /** {@link UseAvailableInstantOpenMarginReturnType.availableMarginWei} as a decimal string; `\"0\"` when unavailable. */\n availableMargin: string;\n /** `true` while the underlying balance / fee reads are loading. */\n isLoading: boolean;\n /** First error from the balance / fee reads, if any. */\n error: SymmioRequestError | null;\n /** Refetch the underlying balance + fee reads (e.g. after an open/close settles). */\n refetch: () => Promise<void>;\n}\n\n/**\n * Maximum initial margin an instant open can spend for `account` on a market —\n * **the** margin hook. The margin model follows the sub-account's isolation\n * type:\n *\n * - **VA isolations** (`POSITION` / `MARKET` / `MARKET_DIRECTION`): the\n * sub-account's available balance shaved for fees and — SHORT only — a\n * worst-case slippage fill (`calculateAvailableInstantOpenMargin` over\n * {@link useAccountBalanceOf} + {@link useFeeForUser}).\n * - **`CUSTOM` (cross-margin)** — trades execute on the sub-account directly:\n * `calculateAvailableForOrder` over the live `balanceInfoOfPartyA` snapshot\n * and the account's SDK-computed uPnL ({@link useAccountUpnl} — Σ\n * per-position uPnL against live mark prices), clamped at zero. **On the\n * Rasa solver only**, 90% of it is spendable — a 10% buffer stays reserved\n * (see `RASA_SPENDABLE_BPS`); other cross-margin solvers spend 100%.\n *\n * Every read is live: balances refetch on on-chain settle notifications and\n * the cross-margin uPnL streams off the price socket, so the `Max` chip tracks\n * trades and the market without manual refreshes. Wire the result to the trade\n * form's `Max` chip and gate submit on it.\n *\n * @example\n * ```tsx\n * const { availableMargin, availableMarginWei } = useAvailableInstantOpenMargin({\n * account: subAccount,\n * symbolId: market.symbolId,\n * leverage,\n * positionType,\n * slippage,\n * });\n * ```\n */\nexport function useAvailableInstantOpenMargin(\n parameters: UseAvailableInstantOpenMarginParameters,\n): UseAvailableInstantOpenMarginReturnType {\n const { account, symbolId, leverage, positionType, slippage, solverId, chainId, config } = parameters;\n\n // The 10% spend buffer is a RASA policy, not a cross-margin-model rule —\n // resolved by solver id so a future cross-margin solver is unaffected.\n const resolvedConfig = useSymmioConfig(parameters);\n const isRasaSolver = resolvedConfig.getSolver({ chainId, solverId }).id === \"rasa\";\n\n // The margin model follows the sub-account's isolation: `CUSTOM` trades on\n // the sub-account directly (cross-margin); the VA isolations spend the\n // sub-account's available balance. Isolation is fixed at creation, so this\n // read caches indefinitely.\n const subAccountQuery = useSubAccount({\n account: account ?? zeroAddress,\n chainId,\n config,\n query: { enabled: Boolean(account), staleTime: Infinity },\n });\n const isolationType = account !== undefined ? subAccountQuery.data?.isolationType : undefined;\n const isolationKnown = isolationType !== undefined;\n const isCrossMargin = isolationType === SubAccountIsolationType.CUSTOM;\n\n // `live` keeps the margin fresh: balances refetch when an open/close settles\n // on-chain, so the Max chip drops without a manual refresh.\n const balanceQuery = useAccountBalanceOf({\n account,\n chainId,\n config,\n live: true,\n query: { enabled: isolationKnown && !isCrossMargin },\n });\n const feeQuery = useFeeForUser({\n user: account ?? zeroAddress,\n symbolId: symbolId ?? 0,\n chainId,\n config,\n query: { enabled: isolationKnown && !isCrossMargin && Boolean(account && symbolId !== undefined) },\n });\n const balanceInfoQuery = useAccountBalanceInfo({\n account,\n chainId,\n config,\n live: true,\n query: { enabled: isCrossMargin && Boolean(account) },\n });\n const accountUpnl = useAccountUpnl({ account, chainId, solverId, config, enabled: isCrossMargin, live: true });\n const { data: balance, isLoading: balanceLoading, error: balanceError, refetch: refetchBalance } = balanceQuery;\n const { data: fees, isLoading: feeLoading, error: feeError, refetch: refetchFees } = feeQuery;\n const {\n data: balanceInfo,\n isLoading: balanceInfoLoading,\n error: balanceInfoError,\n refetch: refetchBalanceInfo,\n } = balanceInfoQuery;\n const { upnl, isLoading: upnlLoading, refetch: refetchUpnl } = accountUpnl;\n\n const refetch = useCallback(async () => {\n if (isCrossMargin) {\n await Promise.all([refetchBalanceInfo(), refetchUpnl()]);\n return;\n }\n await Promise.all([refetchBalance(), refetchFees()]);\n }, [isCrossMargin, refetchBalance, refetchFees, refetchBalanceInfo, refetchUpnl]);\n\n return useMemo<UseAvailableInstantOpenMarginReturnType>(() => {\n const isolationLoading = Boolean(account) && !isolationKnown;\n\n if (isCrossMargin) {\n const isLoading = balanceInfoLoading || upnlLoading;\n const error = balanceInfoError ?? null;\n\n if (balanceInfo === undefined || upnl === undefined) {\n return { availableMarginWei: undefined, availableMargin: \"0\", isLoading, error, refetch };\n }\n const available = calculateAvailableForOrder({ balanceInfo, upnl });\n const clamped = available > 0n ? available : 0n;\n // Rasa-only 10% spend buffer — see RASA_SPENDABLE_BPS.\n const availableMarginWei = isRasaSolver ? (clamped * RASA_SPENDABLE_BPS) / 10_000n : clamped;\n return { availableMarginWei, availableMargin: formatUnits(availableMarginWei, 18), isLoading, error, refetch };\n }\n\n const isLoading = isolationLoading || balanceLoading || feeLoading;\n const error = balanceError ?? feeError ?? null;\n\n if (!isolationKnown || balance === undefined || fees === undefined) {\n return { availableMarginWei: undefined, availableMargin: \"0\", isLoading, error, refetch };\n }\n\n const availableMarginWei = calculateAvailableInstantOpenMargin({\n balance,\n openFee: fees.openFee,\n closeFee: fees.closeFee,\n slippageFractionWei: slippagePercentToFractionWei(slippage),\n leverage,\n positionType,\n });\n\n return { availableMarginWei, availableMargin: formatUnits(availableMarginWei, 18), isLoading, error, refetch };\n }, [\n account,\n isolationKnown,\n isCrossMargin,\n isRasaSolver,\n balance,\n balanceLoading,\n balanceError,\n fees,\n feeLoading,\n feeError,\n balanceInfo,\n balanceInfoLoading,\n balanceInfoError,\n upnl,\n upnlLoading,\n slippage,\n leverage,\n positionType,\n refetch,\n ]);\n}\n"],"mappings":";;;;;;;;;;;AAqBA,SAAS,EAA6B,GAA0B;CAC9D,OAAO,OAAO,KAAK,MAAM,IAAW,gBAAI,CAAC;AAC3C;AAWA,IAAM,IAAqB;AAsE3B,SAAgB,EACd,GACyC;CACzC,IAAM,EAAE,YAAS,aAAU,aAAU,iBAAc,aAAU,aAAU,YAAS,cAAW,GAKrF,IADiB,EAAgB,CAClB,EAAe,UAAU;EAAE;EAAS;CAAS,CAAC,EAAE,OAAO,QAMtE,IAAkB,EAAc;EACpC,SAAS,KAAW;EACpB;EACA;EACA,OAAO;GAAE,SAAS,EAAQ;GAAU,WAAW;EAAS;CAC1D,CAAC,GACK,IAAgB,MAAY,KAAA,IAAkD,KAAA,IAAtC,EAAgB,MAAM,eAC9D,IAAiB,MAAkB,KAAA,GACnC,IAAgB,MAAkB,EAAwB,QAI1D,IAAe,EAAoB;EACvC;EACA;EACA;EACA,MAAM;EACN,OAAO,EAAE,SAAS,KAAkB,CAAC,EAAc;CACrD,CAAC,GACK,IAAW,EAAc;EAC7B,MAAM,KAAW;EACjB,UAAU,KAAY;EACtB;EACA;EACA,OAAO,EAAE,SAAS,KAAkB,CAAC,KAAiB,GAAQ,KAAW,MAAa,KAAA,GAAW;CACnG,CAAC,GACK,IAAmB,EAAsB;EAC7C;EACA;EACA;EACA,MAAM;EACN,OAAO,EAAE,SAAS,KAAiB,EAAQ,EAAS;CACtD,CAAC,GACK,IAAc,EAAe;EAAE;EAAS;EAAS;EAAU;EAAQ,SAAS;EAAe,MAAM;CAAK,CAAC,GACvG,EAAE,MAAM,GAAS,WAAW,GAAgB,OAAO,GAAc,SAAS,MAAmB,GAC7F,EAAE,MAAM,GAAM,WAAW,GAAY,OAAO,GAAU,SAAS,MAAgB,GAC/E,EACJ,MAAM,GACN,WAAW,GACX,OAAO,GACP,SAAS,MACP,GACE,EAAE,SAAM,WAAW,GAAa,SAAS,MAAgB,GAEzD,IAAU,EAAY,YAAY;EACtC,IAAI,GAAe;GACjB,MAAM,QAAQ,IAAI,CAAC,EAAmB,GAAG,EAAY,CAAC,CAAC;GACvD;EACF;EACA,MAAM,QAAQ,IAAI,CAAC,EAAe,GAAG,EAAY,CAAC,CAAC;CACrD,GAAG;EAAC;EAAe;EAAgB;EAAa;EAAoB;CAAW,CAAC;CAEhF,OAAO,QAAuD;EAC5D,IAAM,IAAmB,EAAQ,KAAY,CAAC;EAE9C,IAAI,GAAe;GACjB,IAAM,IAAY,KAAsB,GAClC,IAAQ,KAAoB;GAElC,IAAI,MAAgB,KAAA,KAAa,MAAS,KAAA,GACxC,OAAO;IAAE,oBAAoB,KAAA;IAAW,iBAAiB;IAAK;IAAW;IAAO;GAAQ;GAE1F,IAAM,IAAY,EAA2B;IAAE;IAAa;GAAK,CAAC,GAC5D,IAAU,IAAY,KAAK,IAAY,IAEvC,IAAqB,IAAgB,IAAU,IAAsB,SAAU;GACrF,OAAO;IAAE;IAAoB,iBAAiB,EAAY,GAAoB,EAAE;IAAG;IAAW;IAAO;GAAQ;EAC/G;EAEA,IAAM,IAAY,KAAoB,KAAkB,GAClD,IAAQ,KAAgB,KAAY;EAE1C,IAAI,CAAC,KAAkB,MAAY,KAAA,KAAa,MAAS,KAAA,GACvD,OAAO;GAAE,oBAAoB,KAAA;GAAW,iBAAiB;GAAK;GAAW;GAAO;EAAQ;EAG1F,IAAM,IAAqB,EAAoC;GAC7D;GACA,SAAS,EAAK;GACd,UAAU,EAAK;GACf,qBAAqB,EAA6B,CAAQ;GAC1D;GACA;EACF,CAAC;EAED,OAAO;GAAE;GAAoB,iBAAiB,EAAY,GAAoB,EAAE;GAAG;GAAW;GAAO;EAAQ;CAC/G,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;AACH"}
@@ -1,28 +1,28 @@
1
- import { ConfigParameter, GetMarketInfoOptions, GetMarketInfoReturnType } from '@symmio/trading-core';
1
+ import { ConfigParameter, GetMarketInfoOptions, GetMarketInfoReturnType, SymmioSolverKind } from '@symmio/trading-core';
2
2
  import { UseQueryResult } from '@tanstack/react-query';
3
3
  import { SymmioRequestError } from '../errors/symmio-request-error.js';
4
4
  /**
5
5
  * Parameters for {@link useMarketInfo}: the core query options plus an optional
6
- * `config`.
6
+ * `config`. Generic over the solver kind `K` — a literal `solverId` narrows the
7
+ * returned market-info type.
7
8
  */
8
- export type UseMarketInfoParameters = GetMarketInfoOptions & ConfigParameter;
9
- /** Return type of {@link useMarketInfo}. */
10
- export type UseMarketInfoReturnType = UseQueryResult<GetMarketInfoReturnType, SymmioRequestError>;
9
+ export type UseMarketInfoParameters<K extends SymmioSolverKind = SymmioSolverKind> = GetMarketInfoOptions<K> & ConfigParameter;
10
+ /** Return type of {@link useMarketInfo}, generic over the solver kind `K`. */
11
+ export type UseMarketInfoReturnType<K extends SymmioSolverKind = SymmioSolverKind> = UseQueryResult<GetMarketInfoReturnType<K>, SymmioRequestError>;
11
12
  /**
12
- * Read per-market 24h volume from the active chain's solver in one call.
13
- * Surfaces the rolling 24-hour trading volume and cumulative lifetime value for
14
- * every market, plus the aggregate totals across all markets.
13
+ * Read per-market info from the active chain's solver in one call. The shape
14
+ * diverges by solver — **Enigma** returns 24h volume + lifetime value plus
15
+ * aggregate totals; **Rasa** returns price / 24h change / volume / notional cap.
16
+ * Narrow on `data.kind`, or pass a literal `solverId` to narrow the type.
15
17
  *
16
18
  * Does not poll by default; pass `query.refetchInterval` to opt into polling.
17
- * Errors are normalized to {@link SymmioRequestError} so `error.kind` is always
18
- * a documented value.
19
+ * Errors are normalized to {@link SymmioRequestError}.
19
20
  *
20
21
  * @example
21
22
  * ```tsx
22
23
  * const { data } = useMarketInfo();
23
- * const btc = data?.markets.find((m) => m.symbol === "BTCUSDT");
24
- * console.log(btc?.tradingVolume, data?.totalValue24h);
24
+ * if (data?.kind === "enigma") console.log(data.totalValue24h);
25
25
  * ```
26
26
  */
27
- export declare function useMarketInfo(parameters?: UseMarketInfoParameters): UseMarketInfoReturnType;
27
+ export declare function useMarketInfo<K extends SymmioSolverKind = SymmioSolverKind>(parameters?: UseMarketInfoParameters<K>): UseMarketInfoReturnType<K>;
28
28
  //# sourceMappingURL=use-market-info.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-market-info.d.ts","sourceRoot":"","sources":["../../src/market-info/use-market-info.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIzE;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,GAAG,eAAe,CAAC;AAE7E,4CAA4C;AAC5C,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;AAElG;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,UAAU,GAAE,uBAA4B,GAAG,uBAAuB,CAkB/F"}
1
+ {"version":3,"file":"use-market-info.d.ts","sourceRoot":"","sources":["../../src/market-info/use-market-info.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIzE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAC1G,eAAe,CAAC;AAElB,8EAA8E;AAC9E,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI,cAAc,CACjG,uBAAuB,CAAC,CAAC,CAAC,EAC1B,kBAAkB,CACnB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EACzE,UAAU,GAAE,uBAAuB,CAAC,CAAC,CAAM,GAC1C,uBAAuB,CAAC,CAAC,CAAC,CAkB5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-market-info.js","names":[],"sources":["../../src/market-info/use-market-info.ts"],"sourcesContent":["\"use client\";\n\nimport {\n getMarketInfoQueryOptions,\n type ConfigParameter,\n type GetMarketInfoOptions,\n type GetMarketInfoReturnType,\n} from \"@symmio/trading-core\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { normalizeSymmError } from \"../errors/normalize-symm-error\";\nimport type { SymmioRequestError } from \"../errors/symmio-request-error\";\nimport { useSymmioChainId } from \"../provider/use-symmio-chain-id\";\nimport { useSymmioConfig } from \"../provider/use-symmio-config\";\n\n/**\n * Parameters for {@link useMarketInfo}: the core query options plus an optional\n * `config`.\n */\nexport type UseMarketInfoParameters = GetMarketInfoOptions & ConfigParameter;\n\n/** Return type of {@link useMarketInfo}. */\nexport type UseMarketInfoReturnType = UseQueryResult<GetMarketInfoReturnType, SymmioRequestError>;\n\n/**\n * Read per-market 24h volume from the active chain's solver in one call.\n * Surfaces the rolling 24-hour trading volume and cumulative lifetime value for\n * every market, plus the aggregate totals across all markets.\n *\n * Does not poll by default; pass `query.refetchInterval` to opt into polling.\n * Errors are normalized to {@link SymmioRequestError} so `error.kind` is always\n * a documented value.\n *\n * @example\n * ```tsx\n * const { data } = useMarketInfo();\n * const btc = data?.markets.find((m) => m.symbol === \"BTCUSDT\");\n * console.log(btc?.tradingVolume, data?.totalValue24h);\n * ```\n */\nexport function useMarketInfo(parameters: UseMarketInfoParameters = {}): UseMarketInfoReturnType {\n const config = useSymmioConfig(parameters);\n const chainId = useSymmioChainId();\n const options = getMarketInfoQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n });\n\n return useQuery({\n ...options,\n queryFn: async () => {\n try {\n return await options.queryFn();\n } catch (err) {\n throw normalizeSymmError(err);\n }\n },\n }) as UseMarketInfoReturnType;\n}\n"],"mappings":";;;;;;;AAuCA,SAAgB,EAAc,IAAsC,CAAC,GAA4B;CAC/F,IAAM,IAAS,EAAgB,CAAU,GACnC,IAAU,EAAiB,GAC3B,IAAU,EAA0B,GAAQ;EAChD,GAAG;EACH,SAAS,EAAW,WAAW;CACjC,CAAC;CAED,OAAO,EAAS;EACd,GAAG;EACH,SAAS,YAAY;GACnB,IAAI;IACF,OAAO,MAAM,EAAQ,QAAQ;GAC/B,SAAS,GAAK;IACZ,MAAM,EAAmB,CAAG;GAC9B;EACF;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"use-market-info.js","names":[],"sources":["../../src/market-info/use-market-info.ts"],"sourcesContent":["\"use client\";\n\nimport {\n getMarketInfoQueryOptions,\n type ConfigParameter,\n type GetMarketInfoOptions,\n type GetMarketInfoReturnType,\n type SymmioSolverKind,\n} from \"@symmio/trading-core\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { normalizeSymmError } from \"../errors/normalize-symm-error\";\nimport type { SymmioRequestError } from \"../errors/symmio-request-error\";\nimport { useSymmioChainId } from \"../provider/use-symmio-chain-id\";\nimport { useSymmioConfig } from \"../provider/use-symmio-config\";\n\n/**\n * Parameters for {@link useMarketInfo}: the core query options plus an optional\n * `config`. Generic over the solver kind `K` — a literal `solverId` narrows the\n * returned market-info type.\n */\nexport type UseMarketInfoParameters<K extends SymmioSolverKind = SymmioSolverKind> = GetMarketInfoOptions<K> &\n ConfigParameter;\n\n/** Return type of {@link useMarketInfo}, generic over the solver kind `K`. */\nexport type UseMarketInfoReturnType<K extends SymmioSolverKind = SymmioSolverKind> = UseQueryResult<\n GetMarketInfoReturnType<K>,\n SymmioRequestError\n>;\n\n/**\n * Read per-market info from the active chain's solver in one call. The shape\n * diverges by solver — **Enigma** returns 24h volume + lifetime value plus\n * aggregate totals; **Rasa** returns price / 24h change / volume / notional cap.\n * Narrow on `data.kind`, or pass a literal `solverId` to narrow the type.\n *\n * Does not poll by default; pass `query.refetchInterval` to opt into polling.\n * Errors are normalized to {@link SymmioRequestError}.\n *\n * @example\n * ```tsx\n * const { data } = useMarketInfo();\n * if (data?.kind === \"enigma\") console.log(data.totalValue24h);\n * ```\n */\nexport function useMarketInfo<K extends SymmioSolverKind = SymmioSolverKind>(\n parameters: UseMarketInfoParameters<K> = {},\n): UseMarketInfoReturnType<K> {\n const config = useSymmioConfig(parameters);\n const chainId = useSymmioChainId();\n const options = getMarketInfoQueryOptions<K>(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n });\n\n return useQuery({\n ...options,\n queryFn: async () => {\n try {\n return await options.queryFn();\n } catch (err) {\n throw normalizeSymmError(err);\n }\n },\n }) as UseMarketInfoReturnType<K>;\n}\n"],"mappings":";;;;;;;AA4CA,SAAgB,EACd,IAAyC,CAAC,GACd;CAC5B,IAAM,IAAS,EAAgB,CAAU,GACnC,IAAU,EAAiB,GAC3B,IAAU,EAA6B,GAAQ;EACnD,GAAG;EACH,SAAS,EAAW,WAAW;CACjC,CAAC;CAED,OAAO,EAAS;EACd,GAAG;EACH,SAAS,YAAY;GACnB,IAAI;IACF,OAAO,MAAM,EAAQ,QAAQ;GAC/B,SAAS,GAAK;IACZ,MAAM,EAAmB,CAAG;GAC9B;EACF;CACF,CAAC;AACH"}
@@ -1,15 +1,21 @@
1
- import { ConfigParameter, GetMarketsOptions, SymbolContractSymbol } from '@symmio/trading-core';
1
+ import { ConfigParameter, GetMarketsData, GetMarketsOptions, SymmioSolverKind } from '@symmio/trading-core';
2
2
  import { UseQueryResult } from '@tanstack/react-query';
3
3
  import { SymmioRequestError } from '../errors/symmio-request-error.js';
4
4
  /**
5
- * Parameters for {@link useMarkets}: the core query options (chain id, TanStack
6
- * `query` overrides) plus an optional `config`.
5
+ * Parameters for {@link useMarkets}: the core query options (chain id, solver
6
+ * kind, TanStack `query` overrides) plus an optional `config`. Generic over the
7
+ * solver kind `K` — a literal `solverId` narrows the returned market type.
7
8
  */
8
- export type UseMarketsParameters = GetMarketsOptions & ConfigParameter;
9
- /** Return type of {@link useMarkets}. */
10
- export type UseMarketsReturnType = UseQueryResult<SymbolContractSymbol[], SymmioRequestError>;
9
+ export type UseMarketsParameters<K extends SymmioSolverKind = SymmioSolverKind> = GetMarketsOptions<K> & ConfigParameter;
10
+ /** Return type of {@link useMarkets}, generic over the solver kind `K`. */
11
+ export type UseMarketsReturnType<K extends SymmioSolverKind = SymmioSolverKind> = UseQueryResult<GetMarketsData<K>, SymmioRequestError>;
11
12
  /**
12
- * Fetch all tradable markets (contract symbols) from the chain's solver.
13
+ * Fetch all tradable markets (contract symbols) from the chain's solver,
14
+ * normalized to the SDK `Market` shape.
15
+ *
16
+ * Pass a literal `solverId` to narrow the returned market type to that solver
17
+ * (`useMarkets({ solverId: "rasa" })` → `RasaMarket[]`); omit it to get the
18
+ * `Market` union and narrow on `kind` at the use site.
13
19
  *
14
20
  * Returns react-query's full {@link UseQueryResult}. Errors are normalized to
15
21
  * {@link SymmioRequestError} so `error.kind` is always a documented value.
@@ -22,5 +28,5 @@ export type UseMarketsReturnType = UseQueryResult<SymbolContractSymbol[], Symmio
22
28
  * return <MarketList items={markets ?? []} />;
23
29
  * ```
24
30
  */
25
- export declare function useMarkets(parameters?: UseMarketsParameters): UseMarketsReturnType;
31
+ export declare function useMarkets<K extends SymmioSolverKind = SymmioSolverKind>(parameters?: UseMarketsParameters<K>): UseMarketsReturnType<K>;
26
32
  //# sourceMappingURL=use-markets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-markets.d.ts","sourceRoot":"","sources":["../../src/markets/use-markets.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIzE;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAEvE,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,oBAAoB,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAE9F;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,UAAU,GAAE,oBAAyB,GAAG,oBAAoB,CAkBtF"}
1
+ {"version":3,"file":"use-markets.d.ts","sourceRoot":"","sources":["../../src/markets/use-markets.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIzE;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI,iBAAiB,CAAC,CAAC,CAAC,GACpG,eAAe,CAAC;AAElB,2EAA2E;AAC3E,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI,cAAc,CAC9F,cAAc,CAAC,CAAC,CAAC,EACjB,kBAAkB,CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EACtE,UAAU,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACvC,oBAAoB,CAAC,CAAC,CAAC,CAkBzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-markets.js","names":[],"sources":["../../src/markets/use-markets.ts"],"sourcesContent":["\"use client\";\n\nimport {\n getMarketsQueryOptions,\n type ConfigParameter,\n type GetMarketsOptions,\n type SymbolContractSymbol,\n} from \"@symmio/trading-core\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { normalizeSymmError } from \"../errors/normalize-symm-error\";\nimport type { SymmioRequestError } from \"../errors/symmio-request-error\";\nimport { useSymmioChainId } from \"../provider/use-symmio-chain-id\";\nimport { useSymmioConfig } from \"../provider/use-symmio-config\";\n\n/**\n * Parameters for {@link useMarkets}: the core query options (chain id, TanStack\n * `query` overrides) plus an optional `config`.\n */\nexport type UseMarketsParameters = GetMarketsOptions & ConfigParameter;\n\n/** Return type of {@link useMarkets}. */\nexport type UseMarketsReturnType = UseQueryResult<SymbolContractSymbol[], SymmioRequestError>;\n\n/**\n * Fetch all tradable markets (contract symbols) from the chain's solver.\n *\n * Returns react-query's full {@link UseQueryResult}. Errors are normalized to\n * {@link SymmioRequestError} so `error.kind` is always a documented value.\n *\n * @example\n * ```tsx\n * const { data: markets, isLoading, error } = useMarkets();\n * if (isLoading) return <Spinner />;\n * if (error) return <ErrorView kind={error.kind} message={error.message} />;\n * return <MarketList items={markets ?? []} />;\n * ```\n */\nexport function useMarkets(parameters: UseMarketsParameters = {}): UseMarketsReturnType {\n const config = useSymmioConfig(parameters);\n const chainId = useSymmioChainId();\n const options = getMarketsQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n });\n\n return useQuery({\n ...options,\n queryFn: async () => {\n try {\n return await options.queryFn();\n } catch (err) {\n throw normalizeSymmError(err);\n }\n },\n }) as UseMarketsReturnType;\n}\n"],"mappings":";;;;;;;AAqCA,SAAgB,EAAW,IAAmC,CAAC,GAAyB;CACtF,IAAM,IAAS,EAAgB,CAAU,GACnC,IAAU,EAAiB,GAC3B,IAAU,EAAuB,GAAQ;EAC7C,GAAG;EACH,SAAS,EAAW,WAAW;CACjC,CAAC;CAED,OAAO,EAAS;EACd,GAAG;EACH,SAAS,YAAY;GACnB,IAAI;IACF,OAAO,MAAM,EAAQ,QAAQ;GAC/B,SAAS,GAAK;IACZ,MAAM,EAAmB,CAAG;GAC9B;EACF;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"use-markets.js","names":[],"sources":["../../src/markets/use-markets.ts"],"sourcesContent":["\"use client\";\n\nimport {\n getMarketsQueryOptions,\n type ConfigParameter,\n type GetMarketsData,\n type GetMarketsOptions,\n type SymmioSolverKind,\n} from \"@symmio/trading-core\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { normalizeSymmError } from \"../errors/normalize-symm-error\";\nimport type { SymmioRequestError } from \"../errors/symmio-request-error\";\nimport { useSymmioChainId } from \"../provider/use-symmio-chain-id\";\nimport { useSymmioConfig } from \"../provider/use-symmio-config\";\n\n/**\n * Parameters for {@link useMarkets}: the core query options (chain id, solver\n * kind, TanStack `query` overrides) plus an optional `config`. Generic over the\n * solver kind `K` — a literal `solverId` narrows the returned market type.\n */\nexport type UseMarketsParameters<K extends SymmioSolverKind = SymmioSolverKind> = GetMarketsOptions<K> &\n ConfigParameter;\n\n/** Return type of {@link useMarkets}, generic over the solver kind `K`. */\nexport type UseMarketsReturnType<K extends SymmioSolverKind = SymmioSolverKind> = UseQueryResult<\n GetMarketsData<K>,\n SymmioRequestError\n>;\n\n/**\n * Fetch all tradable markets (contract symbols) from the chain's solver,\n * normalized to the SDK `Market` shape.\n *\n * Pass a literal `solverId` to narrow the returned market type to that solver\n * (`useMarkets({ solverId: \"rasa\" })` → `RasaMarket[]`); omit it to get the\n * `Market` union and narrow on `kind` at the use site.\n *\n * Returns react-query's full {@link UseQueryResult}. Errors are normalized to\n * {@link SymmioRequestError} so `error.kind` is always a documented value.\n *\n * @example\n * ```tsx\n * const { data: markets, isLoading, error } = useMarkets();\n * if (isLoading) return <Spinner />;\n * if (error) return <ErrorView kind={error.kind} message={error.message} />;\n * return <MarketList items={markets ?? []} />;\n * ```\n */\nexport function useMarkets<K extends SymmioSolverKind = SymmioSolverKind>(\n parameters: UseMarketsParameters<K> = {},\n): UseMarketsReturnType<K> {\n const config = useSymmioConfig(parameters);\n const chainId = useSymmioChainId();\n const options = getMarketsQueryOptions<K>(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n });\n\n return useQuery({\n ...options,\n queryFn: async () => {\n try {\n return await options.queryFn();\n } catch (err) {\n throw normalizeSymmError(err);\n }\n },\n }) as UseMarketsReturnType<K>;\n}\n"],"mappings":";;;;;;;AAgDA,SAAgB,EACd,IAAsC,CAAC,GACd;CACzB,IAAM,IAAS,EAAgB,CAAU,GACnC,IAAU,EAAiB,GAC3B,IAAU,EAA0B,GAAQ;EAChD,GAAG;EACH,SAAS,EAAW,WAAW;CACjC,CAAC;CAED,OAAO,EAAS;EACd,GAAG;EACH,SAAS,YAAY;GACnB,IAAI;IACF,OAAO,MAAM,EAAQ,QAAQ;GAC/B,SAAS,GAAK;IACZ,MAAM,EAAmB,CAAG;GAC9B;EACF;CACF,CAAC;AACH"}
@@ -1,4 +1,5 @@
1
1
  export * from './use-deallocate-upnl-sig.js';
2
+ export * from './use-force-close-price-sig.js';
2
3
  export * from './use-muon-party-a-overview.js';
3
4
  export * from './use-muon-price.js';
4
5
  export * from './use-muon-price-range.js';
@@ -8,4 +9,5 @@ export * from './use-muon-upnl-a.js';
8
9
  export * from './use-muon-upnl-a-with-symbol-price.js';
9
10
  export * from './use-muon-upnl-b.js';
10
11
  export * from './use-muon-upnl-with-symbol-price.js';
12
+ export * from './use-send-quote-upnl-sig.js';
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/muon/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/muon/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { ConfigParameter, GetForceClosePriceSigParameters, GetForceClosePriceSigReturnType } from '@symmio/trading-core';
2
+ import { UseMutationResult } from '@tanstack/react-query';
3
+ import { SymmioRequestError } from '../errors/symmio-request-error.js';
4
+ /**
5
+ * Parameters for {@link useForceClosePriceSig}: an optional `config` override.
6
+ * The window bounds, both parties, and the symbol id are passed as the mutation
7
+ * `variables`.
8
+ */
9
+ export type UseForceClosePriceSigParameters = ConfigParameter;
10
+ /** Return type of {@link useForceClosePriceSig}. */
11
+ export type UseForceClosePriceSigReturnType = UseMutationResult<GetForceClosePriceSigReturnType, SymmioRequestError, GetForceClosePriceSigParameters>;
12
+ /**
13
+ * Fetch a fresh Muon `priceRange` attestation, on demand, assembled into the
14
+ * contract-ready `HighLowPriceSig` that `forceClosePosition` verifies.
15
+ *
16
+ * Modeled as a **mutation** rather than a query: the signature is timestamped
17
+ * and short-lived, so it must be fetched at submit time, not eagerly on mount.
18
+ * Force-close is a majors-only flow. For the raw, un-assembled attestation use
19
+ * {@link useMuonPriceRange} instead.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * const { mutateAsync } = useForceClosePriceSig();
24
+ * const sig = await mutateAsync({
25
+ * partyA,
26
+ * partyB: solverAddress,
27
+ * symbolId: 1n,
28
+ * t0: windowStart,
29
+ * t1: windowEnd,
30
+ * });
31
+ * ```
32
+ */
33
+ export declare function useForceClosePriceSig(parameters?: UseForceClosePriceSigParameters): UseForceClosePriceSigReturnType;
34
+ //# sourceMappingURL=use-force-close-price-sig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-force-close-price-sig.d.ts","sourceRoot":"","sources":["../../src/muon/use-force-close-price-sig.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,+BAA+B,EACpC,KAAK,+BAA+B,EACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIzE;;;;GAIG;AACH,MAAM,MAAM,+BAA+B,GAAG,eAAe,CAAC;AAE9D,oDAAoD;AACpD,MAAM,MAAM,+BAA+B,GAAG,iBAAiB,CAC7D,+BAA+B,EAC/B,kBAAkB,EAClB,+BAA+B,CAChC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,GAAE,+BAAoC,GAC/C,+BAA+B,CAqBjC"}
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import { useSymmioChainId as e } from "../provider/use-symmio-chain-id.js";
3
+ import { useSymmioConfig as t } from "../provider/use-symmio-config.js";
4
+ import { normalizeSymmError as n } from "../errors/normalize-symm-error.js";
5
+ import { getForceClosePriceSig as r } from "@symmio/trading-core";
6
+ import { useMutation as i } from "@tanstack/react-query";
7
+ //#region src/muon/use-force-close-price-sig.ts
8
+ function a(a = {}) {
9
+ let o = t(a), s = e();
10
+ return i({
11
+ mutationKey: ["getForceClosePriceSig"],
12
+ mutationFn: async (e) => {
13
+ try {
14
+ return await r(o, {
15
+ t0: e.t0,
16
+ t1: e.t1,
17
+ partyA: e.partyA,
18
+ partyB: e.partyB,
19
+ symbolId: e.symbolId,
20
+ chainId: e.chainId ?? s
21
+ });
22
+ } catch (e) {
23
+ throw n(e);
24
+ }
25
+ }
26
+ });
27
+ }
28
+ //#endregion
29
+ export { a as useForceClosePriceSig };
30
+
31
+ //# sourceMappingURL=use-force-close-price-sig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-force-close-price-sig.js","names":[],"sources":["../../src/muon/use-force-close-price-sig.ts"],"sourcesContent":["\"use client\";\n\nimport {\n getForceClosePriceSig,\n type ConfigParameter,\n type GetForceClosePriceSigParameters,\n type GetForceClosePriceSigReturnType,\n} from \"@symmio/trading-core\";\nimport { useMutation, type UseMutationResult } from \"@tanstack/react-query\";\nimport { normalizeSymmError } from \"../errors/normalize-symm-error\";\nimport type { SymmioRequestError } from \"../errors/symmio-request-error\";\nimport { useSymmioChainId } from \"../provider/use-symmio-chain-id\";\nimport { useSymmioConfig } from \"../provider/use-symmio-config\";\n\n/**\n * Parameters for {@link useForceClosePriceSig}: an optional `config` override.\n * The window bounds, both parties, and the symbol id are passed as the mutation\n * `variables`.\n */\nexport type UseForceClosePriceSigParameters = ConfigParameter;\n\n/** Return type of {@link useForceClosePriceSig}. */\nexport type UseForceClosePriceSigReturnType = UseMutationResult<\n GetForceClosePriceSigReturnType,\n SymmioRequestError,\n GetForceClosePriceSigParameters\n>;\n\n/**\n * Fetch a fresh Muon `priceRange` attestation, on demand, assembled into the\n * contract-ready `HighLowPriceSig` that `forceClosePosition` verifies.\n *\n * Modeled as a **mutation** rather than a query: the signature is timestamped\n * and short-lived, so it must be fetched at submit time, not eagerly on mount.\n * Force-close is a majors-only flow. For the raw, un-assembled attestation use\n * {@link useMuonPriceRange} instead.\n *\n * @example\n * ```tsx\n * const { mutateAsync } = useForceClosePriceSig();\n * const sig = await mutateAsync({\n * partyA,\n * partyB: solverAddress,\n * symbolId: 1n,\n * t0: windowStart,\n * t1: windowEnd,\n * });\n * ```\n */\nexport function useForceClosePriceSig(\n parameters: UseForceClosePriceSigParameters = {},\n): UseForceClosePriceSigReturnType {\n const config = useSymmioConfig(parameters);\n const chainId = useSymmioChainId();\n\n return useMutation<GetForceClosePriceSigReturnType, SymmioRequestError, GetForceClosePriceSigParameters>({\n mutationKey: [\"getForceClosePriceSig\"],\n mutationFn: async (variables) => {\n try {\n return await getForceClosePriceSig(config, {\n t0: variables.t0,\n t1: variables.t1,\n partyA: variables.partyA,\n partyB: variables.partyB,\n symbolId: variables.symbolId,\n chainId: variables.chainId ?? chainId,\n });\n } catch (err) {\n throw normalizeSymmError(err);\n }\n },\n });\n}\n"],"mappings":";;;;;;;AAiDA,SAAgB,EACd,IAA8C,CAAC,GACd;CACjC,IAAM,IAAS,EAAgB,CAAU,GACnC,IAAU,EAAiB;CAEjC,OAAO,EAAkG;EACvG,aAAa,CAAC,uBAAuB;EACrC,YAAY,OAAO,MAAc;GAC/B,IAAI;IACF,OAAO,MAAM,EAAsB,GAAQ;KACzC,IAAI,EAAU;KACd,IAAI,EAAU;KACd,QAAQ,EAAU;KAClB,QAAQ,EAAU;KAClB,UAAU,EAAU;KACpB,SAAS,EAAU,WAAW;IAChC,CAAC;GACH,SAAS,GAAK;IACZ,MAAM,EAAmB,CAAG;GAC9B;EACF;CACF,CAAC;AACH"}
@@ -0,0 +1,30 @@
1
+ import { ConfigParameter, GetSendQuoteUpnlSigParameters, GetSendQuoteUpnlSigReturnType } from '@symmio/trading-core';
2
+ import { UseMutationResult } from '@tanstack/react-query';
3
+ import { SymmioRequestError } from '../errors/symmio-request-error.js';
4
+ /**
5
+ * Parameters for {@link useSendQuoteUpnlSig}: an optional `config` override. The
6
+ * partyA and symbol id are passed as the mutation `variables`.
7
+ */
8
+ export type UseSendQuoteUpnlSigParameters = ConfigParameter;
9
+ /** Return type of {@link useSendQuoteUpnlSig}. */
10
+ export type UseSendQuoteUpnlSigReturnType = UseMutationResult<GetSendQuoteUpnlSigReturnType, SymmioRequestError, GetSendQuoteUpnlSigParameters>;
11
+ /**
12
+ * Fetch a fresh Muon `uPnl_A_withSymbolPrice` attestation, on demand, assembled
13
+ * into the contract-ready `SingleUpnlAndPriceSig` that `sendQuote` takes.
14
+ *
15
+ * Modeled as a **mutation** rather than a query: the signature is timestamped,
16
+ * short-lived, and signed *inside* the quote calldata, so it must be fetched at
17
+ * submit time and never cached across a session. Solvers that enforce Muon
18
+ * verification (Rasa / majors) require it; the lowcap InstantLayer flow signs a
19
+ * placeholder instead, and `useInstantOpen` already fetches this internally for
20
+ * the solvers that need it — reach for this hook only when you drive the quote
21
+ * calldata yourself.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * const { mutateAsync } = useSendQuoteUpnlSig();
26
+ * const upnlSig = await mutateAsync({ partyA: subAccount, symbolId: 1n });
27
+ * ```
28
+ */
29
+ export declare function useSendQuoteUpnlSig(parameters?: UseSendQuoteUpnlSigParameters): UseSendQuoteUpnlSigReturnType;
30
+ //# sourceMappingURL=use-send-quote-upnl-sig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-send-quote-upnl-sig.d.ts","sourceRoot":"","sources":["../../src/muon/use-send-quote-upnl-sig.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIzE;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,CAAC;AAE5D,kDAAkD;AAClD,MAAM,MAAM,6BAA6B,GAAG,iBAAiB,CAC3D,6BAA6B,EAC7B,kBAAkB,EAClB,6BAA6B,CAC9B,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,GAAE,6BAAkC,GAAG,6BAA6B,CAkBjH"}
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { useSymmioChainId as e } from "../provider/use-symmio-chain-id.js";
3
+ import { useSymmioConfig as t } from "../provider/use-symmio-config.js";
4
+ import { normalizeSymmError as n } from "../errors/normalize-symm-error.js";
5
+ import { getSendQuoteUpnlSig as r } from "@symmio/trading-core";
6
+ import { useMutation as i } from "@tanstack/react-query";
7
+ //#region src/muon/use-send-quote-upnl-sig.ts
8
+ function a(a = {}) {
9
+ let o = t(a), s = e();
10
+ return i({
11
+ mutationKey: ["getSendQuoteUpnlSig"],
12
+ mutationFn: async (e) => {
13
+ try {
14
+ return await r(o, {
15
+ partyA: e.partyA,
16
+ symbolId: e.symbolId,
17
+ chainId: e.chainId ?? s
18
+ });
19
+ } catch (e) {
20
+ throw n(e);
21
+ }
22
+ }
23
+ });
24
+ }
25
+ //#endregion
26
+ export { a as useSendQuoteUpnlSig };
27
+
28
+ //# sourceMappingURL=use-send-quote-upnl-sig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-send-quote-upnl-sig.js","names":[],"sources":["../../src/muon/use-send-quote-upnl-sig.ts"],"sourcesContent":["\"use client\";\n\nimport {\n getSendQuoteUpnlSig,\n type ConfigParameter,\n type GetSendQuoteUpnlSigParameters,\n type GetSendQuoteUpnlSigReturnType,\n} from \"@symmio/trading-core\";\nimport { useMutation, type UseMutationResult } from \"@tanstack/react-query\";\nimport { normalizeSymmError } from \"../errors/normalize-symm-error\";\nimport type { SymmioRequestError } from \"../errors/symmio-request-error\";\nimport { useSymmioChainId } from \"../provider/use-symmio-chain-id\";\nimport { useSymmioConfig } from \"../provider/use-symmio-config\";\n\n/**\n * Parameters for {@link useSendQuoteUpnlSig}: an optional `config` override. The\n * partyA and symbol id are passed as the mutation `variables`.\n */\nexport type UseSendQuoteUpnlSigParameters = ConfigParameter;\n\n/** Return type of {@link useSendQuoteUpnlSig}. */\nexport type UseSendQuoteUpnlSigReturnType = UseMutationResult<\n GetSendQuoteUpnlSigReturnType,\n SymmioRequestError,\n GetSendQuoteUpnlSigParameters\n>;\n\n/**\n * Fetch a fresh Muon `uPnl_A_withSymbolPrice` attestation, on demand, assembled\n * into the contract-ready `SingleUpnlAndPriceSig` that `sendQuote` takes.\n *\n * Modeled as a **mutation** rather than a query: the signature is timestamped,\n * short-lived, and signed *inside* the quote calldata, so it must be fetched at\n * submit time and never cached across a session. Solvers that enforce Muon\n * verification (Rasa / majors) require it; the lowcap InstantLayer flow signs a\n * placeholder instead, and `useInstantOpen` already fetches this internally for\n * the solvers that need it — reach for this hook only when you drive the quote\n * calldata yourself.\n *\n * @example\n * ```tsx\n * const { mutateAsync } = useSendQuoteUpnlSig();\n * const upnlSig = await mutateAsync({ partyA: subAccount, symbolId: 1n });\n * ```\n */\nexport function useSendQuoteUpnlSig(parameters: UseSendQuoteUpnlSigParameters = {}): UseSendQuoteUpnlSigReturnType {\n const config = useSymmioConfig(parameters);\n const chainId = useSymmioChainId();\n\n return useMutation<GetSendQuoteUpnlSigReturnType, SymmioRequestError, GetSendQuoteUpnlSigParameters>({\n mutationKey: [\"getSendQuoteUpnlSig\"],\n mutationFn: async (variables) => {\n try {\n return await getSendQuoteUpnlSig(config, {\n partyA: variables.partyA,\n symbolId: variables.symbolId,\n chainId: variables.chainId ?? chainId,\n });\n } catch (err) {\n throw normalizeSymmError(err);\n }\n },\n });\n}\n"],"mappings":";;;;;;;AA6CA,SAAgB,EAAoB,IAA4C,CAAC,GAAkC;CACjH,IAAM,IAAS,EAAgB,CAAU,GACnC,IAAU,EAAiB;CAEjC,OAAO,EAA8F;EACnG,aAAa,CAAC,qBAAqB;EACnC,YAAY,OAAO,MAAc;GAC/B,IAAI;IACF,OAAO,MAAM,EAAoB,GAAQ;KACvC,QAAQ,EAAU;KAClB,UAAU,EAAU;KACpB,SAAS,EAAU,WAAW;IAChC,CAAC;GACH,SAAS,GAAK;IACZ,MAAM,EAAmB,CAAG;GAC9B;EACF;CACF,CAAC;AACH"}