@symmio/trading-core 0.1.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/README.md +2 -2
  2. package/dist/balance-history/get-balance-history/balance-history-filter.d.ts +1 -1
  3. package/dist/balance-history/get-balance-history/get-balance-history.d.ts +3 -3
  4. package/dist/balance-history/get-balance-history/index.d.ts +5 -5
  5. package/dist/balance-history/get-balance-history/query-document.d.ts +2 -2
  6. package/dist/balance-history/get-balance-history/query.d.ts +4 -4
  7. package/dist/balance-history/get-balance-history/to-balance-history-row.d.ts +2 -2
  8. package/dist/balance-history/index.d.ts +1 -1
  9. package/dist/core/chains/actions/get-chain-config.d.ts +1 -1
  10. package/dist/core/chains/actions/list-supported-chains.d.ts +1 -1
  11. package/dist/core/chains/index.d.ts +5 -5
  12. package/dist/core/chains/registry.d.ts +1 -1
  13. package/dist/core/config/config-key.d.ts +1 -1
  14. package/dist/core/config/create-config.d.ts +44 -8
  15. package/dist/core/config/create-config.d.ts.map +1 -1
  16. package/dist/core/config/create-config.js +29 -22
  17. package/dist/core/config/create-config.js.map +1 -1
  18. package/dist/core/config/index.d.ts +1 -1
  19. package/dist/core/config/merge-chain-config.d.ts +2 -2
  20. package/dist/index.d.ts +58 -41
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +142 -127
  23. package/dist/muon/client.d.ts +1 -1
  24. package/dist/muon/deallocate-upnl-sig/get-deallocate-upnl-sig.d.ts +3 -3
  25. package/dist/muon/deallocate-upnl-sig/index.d.ts +2 -2
  26. package/dist/muon/deallocate-upnl-sig/query.d.ts +4 -4
  27. package/dist/muon/index.d.ts +11 -11
  28. package/dist/muon/party-a-overview/get-muon-party-a-overview.d.ts +4 -4
  29. package/dist/muon/party-a-overview/get-muon-party-a-overview.d.ts.map +1 -1
  30. package/dist/muon/party-a-overview/get-muon-party-a-overview.js.map +1 -1
  31. package/dist/muon/party-a-overview/index.d.ts +2 -2
  32. package/dist/muon/party-a-overview/query.d.ts +4 -4
  33. package/dist/muon/price/get-muon-price.d.ts +3 -3
  34. package/dist/muon/price/index.d.ts +2 -2
  35. package/dist/muon/price/query.d.ts +4 -4
  36. package/dist/muon/price-range/get-muon-price-range.d.ts +4 -4
  37. package/dist/muon/price-range/get-muon-price-range.d.ts.map +1 -1
  38. package/dist/muon/price-range/get-muon-price-range.js.map +1 -1
  39. package/dist/muon/price-range/index.d.ts +2 -2
  40. package/dist/muon/price-range/query.d.ts +4 -4
  41. package/dist/muon/settle-upnl/get-muon-settle-upnl.d.ts +4 -4
  42. package/dist/muon/settle-upnl/get-muon-settle-upnl.d.ts.map +1 -1
  43. package/dist/muon/settle-upnl/get-muon-settle-upnl.js.map +1 -1
  44. package/dist/muon/settle-upnl/index.d.ts +2 -2
  45. package/dist/muon/settle-upnl/query.d.ts +4 -4
  46. package/dist/muon/upnl/get-muon-upnl.d.ts +4 -4
  47. package/dist/muon/upnl/get-muon-upnl.d.ts.map +1 -1
  48. package/dist/muon/upnl/get-muon-upnl.js.map +1 -1
  49. package/dist/muon/upnl/index.d.ts +2 -2
  50. package/dist/muon/upnl/query.d.ts +4 -4
  51. package/dist/muon/upnl-a/get-muon-upnl-a.d.ts +4 -4
  52. package/dist/muon/upnl-a/get-muon-upnl-a.d.ts.map +1 -1
  53. package/dist/muon/upnl-a/get-muon-upnl-a.js.map +1 -1
  54. package/dist/muon/upnl-a/index.d.ts +2 -2
  55. package/dist/muon/upnl-a/query.d.ts +4 -4
  56. package/dist/muon/upnl-a-with-symbol-price/get-muon-upnl-a-with-symbol-price.d.ts +4 -4
  57. package/dist/muon/upnl-a-with-symbol-price/get-muon-upnl-a-with-symbol-price.d.ts.map +1 -1
  58. package/dist/muon/upnl-a-with-symbol-price/get-muon-upnl-a-with-symbol-price.js.map +1 -1
  59. package/dist/muon/upnl-a-with-symbol-price/index.d.ts +2 -2
  60. package/dist/muon/upnl-a-with-symbol-price/query.d.ts +4 -4
  61. package/dist/muon/upnl-b/get-muon-upnl-b.d.ts +3 -3
  62. package/dist/muon/upnl-b/index.d.ts +2 -2
  63. package/dist/muon/upnl-b/query.d.ts +4 -4
  64. package/dist/muon/upnl-with-symbol-price/get-muon-upnl-with-symbol-price.d.ts +4 -4
  65. package/dist/muon/upnl-with-symbol-price/get-muon-upnl-with-symbol-price.d.ts.map +1 -1
  66. package/dist/muon/upnl-with-symbol-price/get-muon-upnl-with-symbol-price.js.map +1 -1
  67. package/dist/muon/upnl-with-symbol-price/index.d.ts +2 -2
  68. package/dist/muon/upnl-with-symbol-price/query.d.ts +4 -4
  69. package/dist/notifications/index.d.ts +2 -2
  70. package/dist/notifications/search/index.d.ts +2 -2
  71. package/dist/notifications/search/query.d.ts +4 -4
  72. package/dist/notifications/search/search-notifications.d.ts +3 -3
  73. package/dist/notifications/types.d.ts +1 -1
  74. package/dist/price-service/enigma/health/get-enigma-price-service-health.d.ts +2 -2
  75. package/dist/price-service/enigma/health/index.d.ts +2 -2
  76. package/dist/price-service/enigma/health/query.d.ts +4 -4
  77. package/dist/price-service/enigma/index.d.ts +5 -5
  78. package/dist/price-service/enigma/metadata/get-enigma-price-service-metadata.d.ts +3 -3
  79. package/dist/price-service/enigma/metadata/index.d.ts +2 -2
  80. package/dist/price-service/enigma/metadata/query.d.ts +4 -4
  81. package/dist/price-service/enigma/prices-by-addresses/get-enigma-price-service-prices-by-addresses.d.ts +3 -3
  82. package/dist/price-service/enigma/prices-by-addresses/index.d.ts +2 -2
  83. package/dist/price-service/enigma/prices-by-addresses/query.d.ts +4 -4
  84. package/dist/price-service/enigma/prices-by-names/get-enigma-price-service-prices-by-names.d.ts +3 -3
  85. package/dist/price-service/enigma/prices-by-names/index.d.ts +2 -2
  86. package/dist/price-service/enigma/prices-by-names/query.d.ts +4 -4
  87. package/dist/price-service/enigma/symbols-info/get-enigma-price-service-symbols-info.d.ts +3 -3
  88. package/dist/price-service/enigma/symbols-info/index.d.ts +2 -2
  89. package/dist/price-service/enigma/symbols-info/query.d.ts +4 -4
  90. package/dist/price-service/index.d.ts +1 -1
  91. package/dist/quotes/apply-notification.d.ts +2 -2
  92. package/dist/quotes/fees/index.d.ts +2 -2
  93. package/dist/quotes/fingerprint.d.ts +1 -1
  94. package/dist/quotes/get-quote-events-by-type/get-quote-events-by-type.d.ts +3 -3
  95. package/dist/quotes/get-quote-events-by-type/index.d.ts +4 -4
  96. package/dist/quotes/get-quote-events-by-type/query-document.d.ts +2 -2
  97. package/dist/quotes/get-quote-events-by-type/query.d.ts +5 -5
  98. package/dist/quotes/get-quote-events-by-type/to-quote-event-row.d.ts +2 -2
  99. package/dist/quotes/get-quote-funding/get-quote-funding.d.ts +3 -3
  100. package/dist/quotes/get-quote-funding/index.d.ts +4 -4
  101. package/dist/quotes/get-quote-funding/query-document.d.ts +1 -1
  102. package/dist/quotes/get-quote-funding/query.d.ts +4 -4
  103. package/dist/quotes/get-quote-funding/to-funding-row.d.ts +2 -2
  104. package/dist/quotes/get-quote-history/close-type.d.ts +2 -2
  105. package/dist/quotes/get-quote-history/get-quote-history.d.ts +3 -3
  106. package/dist/quotes/get-quote-history/index.d.ts +5 -5
  107. package/dist/quotes/get-quote-history/query-document.d.ts +2 -2
  108. package/dist/quotes/get-quote-history/query.d.ts +4 -4
  109. package/dist/quotes/get-quote-history/to-history-row.d.ts +2 -2
  110. package/dist/quotes/get-quote-history/types.d.ts +1 -1
  111. package/dist/quotes/get-sub-account-quotes/get-sub-account-quotes.d.ts +3 -3
  112. package/dist/quotes/get-sub-account-quotes/index.d.ts +2 -2
  113. package/dist/quotes/get-sub-account-quotes/query.d.ts +4 -4
  114. package/dist/quotes/grouping/aggregate-metrics.d.ts +2 -2
  115. package/dist/quotes/grouping/group-quotes.d.ts +2 -2
  116. package/dist/quotes/grouping/group-strategy.d.ts +1 -1
  117. package/dist/quotes/grouping/index.d.ts +5 -5
  118. package/dist/quotes/grouping/partition-quotes.d.ts +1 -1
  119. package/dist/quotes/grouping/quote-group.d.ts +3 -3
  120. package/dist/quotes/index.d.ts +16 -16
  121. package/dist/quotes/liquidation/calculate-liquidation-price.d.ts +1 -1
  122. package/dist/quotes/liquidation/index.d.ts +1 -1
  123. package/dist/quotes/open-quantity.d.ts +1 -1
  124. package/dist/quotes/reconcile-quotes.d.ts +5 -5
  125. package/dist/quotes/resolve-quote-accounts.d.ts +3 -3
  126. package/dist/quotes/should-accelerate.d.ts +1 -1
  127. package/dist/quotes/to-unified-quote.d.ts +4 -4
  128. package/dist/quotes/unified-quote.d.ts +3 -3
  129. package/dist/quotes/upnl/calculate-quote-pnl.d.ts +1 -1
  130. package/dist/quotes/upnl/calculate-quote-upnl.d.ts +1 -1
  131. package/dist/quotes/upnl/index.d.ts +3 -3
  132. package/dist/shared/utils/simulate-before-write.d.ts +2 -2
  133. package/dist/solvers/error-codes/get-solver-error-codes.d.ts +2 -2
  134. package/dist/solvers/error-codes/index.d.ts +2 -2
  135. package/dist/solvers/error-codes/query.d.ts +4 -4
  136. package/dist/solvers/estimated-price/get-estimated-price.d.ts +58 -0
  137. package/dist/solvers/estimated-price/get-estimated-price.d.ts.map +1 -0
  138. package/dist/solvers/estimated-price/get-estimated-price.js +30 -0
  139. package/dist/solvers/estimated-price/get-estimated-price.js.map +1 -0
  140. package/dist/solvers/estimated-price/index.d.ts +5 -0
  141. package/dist/solvers/estimated-price/index.d.ts.map +1 -0
  142. package/dist/solvers/estimated-price/price-impact.d.ts +25 -0
  143. package/dist/solvers/estimated-price/price-impact.d.ts.map +1 -0
  144. package/dist/solvers/estimated-price/price-impact.js +9 -0
  145. package/dist/solvers/estimated-price/price-impact.js.map +1 -0
  146. package/dist/solvers/estimated-price/query.d.ts +26 -0
  147. package/dist/solvers/estimated-price/query.d.ts.map +1 -0
  148. package/dist/solvers/estimated-price/query.js +28 -0
  149. package/dist/solvers/estimated-price/query.js.map +1 -0
  150. package/dist/solvers/estimated-price/to-estimated-price.d.ts +9 -0
  151. package/dist/solvers/estimated-price/to-estimated-price.d.ts.map +1 -0
  152. package/dist/solvers/estimated-price/to-estimated-price.js +8 -0
  153. package/dist/solvers/estimated-price/to-estimated-price.js.map +1 -0
  154. package/dist/solvers/funding-info/get-funding-info.d.ts +37 -0
  155. package/dist/solvers/funding-info/get-funding-info.d.ts.map +1 -0
  156. package/dist/solvers/funding-info/get-funding-info.js +24 -0
  157. package/dist/solvers/funding-info/get-funding-info.js.map +1 -0
  158. package/dist/solvers/funding-info/index.d.ts +6 -0
  159. package/dist/solvers/funding-info/index.d.ts.map +1 -0
  160. package/dist/solvers/funding-info/project-funding-rate.d.ts +30 -0
  161. package/dist/solvers/funding-info/project-funding-rate.d.ts.map +1 -0
  162. package/dist/solvers/funding-info/project-funding-rate.js +9 -0
  163. package/dist/solvers/funding-info/project-funding-rate.js.map +1 -0
  164. package/dist/solvers/funding-info/query.d.ts +28 -0
  165. package/dist/solvers/funding-info/query.d.ts.map +1 -0
  166. package/dist/solvers/funding-info/query.js +24 -0
  167. package/dist/solvers/funding-info/query.js.map +1 -0
  168. package/dist/solvers/funding-info/to-funding-info.d.ts +14 -0
  169. package/dist/solvers/funding-info/to-funding-info.d.ts.map +1 -0
  170. package/dist/solvers/funding-info/to-funding-info.js +15 -0
  171. package/dist/solvers/funding-info/to-funding-info.js.map +1 -0
  172. package/dist/solvers/funding-info/types.d.ts +35 -0
  173. package/dist/solvers/funding-info/types.d.ts.map +1 -0
  174. package/dist/solvers/instant-close/get-instant-closes/get-instant-closes.d.ts +3 -3
  175. package/dist/solvers/instant-close/get-instant-closes/index.d.ts +3 -3
  176. package/dist/solvers/instant-close/get-instant-closes/query.d.ts +4 -4
  177. package/dist/solvers/instant-close/get-instant-closes/to-pending-instant-close.d.ts +1 -1
  178. package/dist/solvers/instant-close/index.d.ts +7 -7
  179. package/dist/solvers/instant-close/instant-close/index.d.ts +2 -2
  180. package/dist/solvers/instant-close/instant-close/instant-close.d.ts +3 -3
  181. package/dist/solvers/instant-close/instant-close/query.d.ts +3 -3
  182. package/dist/solvers/instant-close/instant-close-auto/index.d.ts +2 -2
  183. package/dist/solvers/instant-close/instant-close-auto/instant-close-auto.d.ts +3 -3
  184. package/dist/solvers/instant-close/instant-close-auto/query.d.ts +3 -3
  185. package/dist/solvers/instant-close/instant-close-bulk/index.d.ts +2 -2
  186. package/dist/solvers/instant-close/instant-close-bulk/instant-close-bulk.d.ts +3 -3
  187. package/dist/solvers/instant-close/instant-close-bulk/query.d.ts +3 -3
  188. package/dist/solvers/instant-close/instant-close-bulk-auto/index.d.ts +2 -2
  189. package/dist/solvers/instant-close/instant-close-bulk-auto/instant-close-bulk-auto.d.ts +4 -4
  190. package/dist/solvers/instant-close/instant-close-bulk-auto/query.d.ts +3 -3
  191. package/dist/solvers/instant-close/prepare-instant-close-params/index.d.ts +1 -1
  192. package/dist/solvers/instant-close/prepare-instant-close-params/prepare-instant-close-params.d.ts +4 -4
  193. package/dist/solvers/instant-close/shared/close-math.d.ts +1 -1
  194. package/dist/solvers/instant-close/shared/hedger-api.d.ts +3 -3
  195. package/dist/solvers/instant-close/shared/index.d.ts +5 -5
  196. package/dist/solvers/instant-close/shared/quote-constraints.d.ts +1 -1
  197. package/dist/solvers/instant-close/shared/types.d.ts +2 -2
  198. package/dist/solvers/instant-open/get-instant-open-quote-id/get-instant-open-quote-id.d.ts +2 -2
  199. package/dist/solvers/instant-open/get-instant-open-quote-id/index.d.ts +2 -2
  200. package/dist/solvers/instant-open/get-instant-open-quote-id/query.d.ts +4 -4
  201. package/dist/solvers/instant-open/get-instant-opens/get-instant-opens.d.ts +3 -3
  202. package/dist/solvers/instant-open/get-instant-opens/index.d.ts +3 -3
  203. package/dist/solvers/instant-open/get-instant-opens/query.d.ts +4 -4
  204. package/dist/solvers/instant-open/get-instant-opens/to-pending-instant-open.d.ts +2 -2
  205. package/dist/solvers/instant-open/index.d.ts +6 -6
  206. package/dist/solvers/instant-open/instant-open/index.d.ts +2 -2
  207. package/dist/solvers/instant-open/instant-open/instant-open.d.ts +3 -3
  208. package/dist/solvers/instant-open/instant-open/query.d.ts +3 -3
  209. package/dist/solvers/instant-open/instant-open-auto/index.d.ts +2 -2
  210. package/dist/solvers/instant-open/instant-open-auto/instant-open-auto.d.ts +3 -3
  211. package/dist/solvers/instant-open/instant-open-auto/query.d.ts +3 -3
  212. package/dist/solvers/instant-open/prepare-instant-open-params/index.d.ts +2 -2
  213. package/dist/solvers/instant-open/prepare-instant-open-params/prepare-instant-open-params.d.ts +6 -6
  214. package/dist/solvers/instant-open/prepare-instant-open-params/resolvers/index.d.ts +4 -4
  215. package/dist/solvers/instant-open/prepare-instant-open-params/resolvers/resolve-fee-rates.d.ts +3 -3
  216. package/dist/solvers/instant-open/prepare-instant-open-params/resolvers/resolve-locked-params.d.ts +3 -3
  217. package/dist/solvers/instant-open/shared/calldata.d.ts +1 -1
  218. package/dist/solvers/instant-open/shared/eip712.d.ts +2 -2
  219. package/dist/solvers/instant-open/shared/hedger-api.d.ts +3 -3
  220. package/dist/solvers/instant-open/shared/index.d.ts +8 -8
  221. package/dist/solvers/instant-open/shared/operations.d.ts +2 -2
  222. package/dist/solvers/instant-open/shared/quote-constraints.d.ts +3 -3
  223. package/dist/solvers/instant-open/shared/trade-math.d.ts +49 -1
  224. package/dist/solvers/instant-open/shared/trade-math.d.ts.map +1 -1
  225. package/dist/solvers/instant-open/shared/trade-math.js +5 -1
  226. package/dist/solvers/instant-open/shared/trade-math.js.map +1 -1
  227. package/dist/solvers/instant-open/shared/types.d.ts +4 -4
  228. package/dist/solvers/locked-params/get-locked-params.d.ts +3 -3
  229. package/dist/solvers/locked-params/index.d.ts +3 -3
  230. package/dist/solvers/locked-params/query.d.ts +4 -4
  231. package/dist/solvers/market-info/get-market-info.d.ts +32 -0
  232. package/dist/solvers/market-info/get-market-info.d.ts.map +1 -0
  233. package/dist/solvers/market-info/get-market-info.js +23 -0
  234. package/dist/solvers/market-info/get-market-info.js.map +1 -0
  235. package/dist/solvers/market-info/index.d.ts +5 -0
  236. package/dist/solvers/market-info/index.d.ts.map +1 -0
  237. package/dist/solvers/market-info/query.d.ts +29 -0
  238. package/dist/solvers/market-info/query.d.ts.map +1 -0
  239. package/dist/solvers/market-info/query.js +21 -0
  240. package/dist/solvers/market-info/query.js.map +1 -0
  241. package/dist/solvers/market-info/to-market-info.d.ts +13 -0
  242. package/dist/solvers/market-info/to-market-info.d.ts.map +1 -0
  243. package/dist/solvers/market-info/to-market-info.js +28 -0
  244. package/dist/solvers/market-info/to-market-info.js.map +1 -0
  245. package/dist/solvers/market-info/types.d.ts +32 -0
  246. package/dist/solvers/market-info/types.d.ts.map +1 -0
  247. package/dist/solvers/markets/get-markets.d.ts +3 -3
  248. package/dist/solvers/markets/index.d.ts +3 -3
  249. package/dist/solvers/markets/query.d.ts +4 -4
  250. package/dist/solvers/notional-cap/check-notional-cap.d.ts +2 -2
  251. package/dist/solvers/notional-cap/get-notional-cap-all.d.ts +3 -3
  252. package/dist/solvers/notional-cap/get-notional-cap-all.d.ts.map +1 -1
  253. package/dist/solvers/notional-cap/get-notional-cap-all.js +1 -5
  254. package/dist/solvers/notional-cap/get-notional-cap-all.js.map +1 -1
  255. package/dist/solvers/notional-cap/get-notional-cap-by-symbol-id.d.ts +3 -3
  256. package/dist/solvers/notional-cap/get-open-interest-by-symbol-id.d.ts +2 -2
  257. package/dist/solvers/notional-cap/index.d.ts +9 -9
  258. package/dist/solvers/notional-cap/query-all.d.ts +4 -4
  259. package/dist/solvers/notional-cap/query-open-interest.d.ts +4 -4
  260. package/dist/solvers/notional-cap/query.d.ts +4 -4
  261. package/dist/solvers/notional-cap/to-market-notional-cap.d.ts +2 -2
  262. package/dist/solvers/notional-cap/to-market-notional-cap.d.ts.map +1 -1
  263. package/dist/solvers/notional-cap/to-market-notional-cap.js +1 -5
  264. package/dist/solvers/notional-cap/to-market-notional-cap.js.map +1 -1
  265. package/dist/solvers/shared/index.d.ts +1 -1
  266. package/dist/solvers/shared/resolvers/index.d.ts +3 -3
  267. package/dist/solvers/shared/resolvers/resolve-mark-price.d.ts +1 -1
  268. package/dist/solvers/shared/resolvers/resolve-market.d.ts +2 -2
  269. package/dist/solvers/types/generated/enigma-solver.js +16 -4
  270. package/dist/solvers/types/generated/enigma-solver.js.map +1 -1
  271. package/dist/symmio-contracts/abi/index.d.ts +3 -3
  272. package/dist/symmio-contracts/abi/v0.8.5/index.d.ts +3 -3
  273. package/dist/symmio-contracts/account-layer/actions/add-margin.d.ts +2 -2
  274. package/dist/symmio-contracts/account-layer/actions/create-sub-accounts.d.ts +3 -3
  275. package/dist/symmio-contracts/account-layer/actions/delete-sub-account.d.ts +2 -2
  276. package/dist/symmio-contracts/account-layer/actions/deposit-and-allocate-for-account.d.ts +2 -2
  277. package/dist/symmio-contracts/account-layer/actions/deposit-for-account.d.ts +2 -2
  278. package/dist/symmio-contracts/account-layer/actions/edit-account-name.d.ts +2 -2
  279. package/dist/symmio-contracts/account-layer/actions/get-account-balance-info.d.ts +3 -3
  280. package/dist/symmio-contracts/account-layer/actions/get-account-balance-of.d.ts +2 -2
  281. package/dist/symmio-contracts/account-layer/actions/get-sub-account-virtual-nonce.d.ts +2 -2
  282. package/dist/symmio-contracts/account-layer/actions/get-sub-account.d.ts +3 -3
  283. package/dist/symmio-contracts/account-layer/actions/get-sub-accounts-count-of-user.d.ts +2 -2
  284. package/dist/symmio-contracts/account-layer/actions/get-user-sub-accounts-addresses.d.ts +3 -3
  285. package/dist/symmio-contracts/account-layer/actions/get-user-sub-accounts-addresses.js.map +1 -1
  286. package/dist/symmio-contracts/account-layer/actions/get-user-sub-accounts.d.ts +4 -4
  287. package/dist/symmio-contracts/account-layer/actions/get-user-sub-accounts.js.map +1 -1
  288. package/dist/symmio-contracts/account-layer/actions/get-virtual-account.d.ts +3 -3
  289. package/dist/symmio-contracts/account-layer/actions/get-virtual-accounts-addresses-of-sub-account.d.ts +2 -2
  290. package/dist/symmio-contracts/account-layer/actions/predict-next-virtual-account.d.ts +3 -3
  291. package/dist/symmio-contracts/account-layer/actions/remove-margin.d.ts +3 -3
  292. package/dist/symmio-contracts/account-layer/actions/simulate-add-margin.d.ts +4 -4
  293. package/dist/symmio-contracts/account-layer/actions/simulate-create-sub-accounts.d.ts +4 -4
  294. package/dist/symmio-contracts/account-layer/actions/simulate-delete-sub-account.d.ts +4 -4
  295. package/dist/symmio-contracts/account-layer/actions/simulate-deposit-and-allocate-for-account.d.ts +4 -4
  296. package/dist/symmio-contracts/account-layer/actions/simulate-deposit-for-account.d.ts +4 -4
  297. package/dist/symmio-contracts/account-layer/actions/simulate-edit-account-name.d.ts +4 -4
  298. package/dist/symmio-contracts/account-layer/actions/simulate-remove-margin.d.ts +4 -4
  299. package/dist/symmio-contracts/account-layer/index.d.ts +49 -49
  300. package/dist/symmio-contracts/account-layer/query/add-margin.d.ts +2 -2
  301. package/dist/symmio-contracts/account-layer/query/create-sub-accounts.d.ts +2 -2
  302. package/dist/symmio-contracts/account-layer/query/delete-sub-account.d.ts +2 -2
  303. package/dist/symmio-contracts/account-layer/query/deposit-and-allocate-for-account.d.ts +2 -2
  304. package/dist/symmio-contracts/account-layer/query/deposit-for-account.d.ts +2 -2
  305. package/dist/symmio-contracts/account-layer/query/edit-account-name.d.ts +2 -2
  306. package/dist/symmio-contracts/account-layer/query/get-account-balance-info.d.ts +4 -4
  307. package/dist/symmio-contracts/account-layer/query/get-account-balance-of.d.ts +4 -4
  308. package/dist/symmio-contracts/account-layer/query/get-sub-account-virtual-nonce.d.ts +4 -4
  309. package/dist/symmio-contracts/account-layer/query/get-sub-account.d.ts +4 -4
  310. package/dist/symmio-contracts/account-layer/query/get-sub-accounts-count-of-user.d.ts +4 -4
  311. package/dist/symmio-contracts/account-layer/query/get-user-sub-accounts-addresses.d.ts +4 -4
  312. package/dist/symmio-contracts/account-layer/query/get-user-sub-accounts.d.ts +4 -4
  313. package/dist/symmio-contracts/account-layer/query/get-virtual-account.d.ts +4 -4
  314. package/dist/symmio-contracts/account-layer/query/get-virtual-accounts-addresses-of-sub-account.d.ts +4 -4
  315. package/dist/symmio-contracts/account-layer/query/predict-next-virtual-account.d.ts +4 -4
  316. package/dist/symmio-contracts/account-layer/query/remove-margin.d.ts +2 -2
  317. package/dist/symmio-contracts/account-layer/query/simulate-add-margin.d.ts +3 -3
  318. package/dist/symmio-contracts/account-layer/query/simulate-create-sub-accounts.d.ts +3 -3
  319. package/dist/symmio-contracts/account-layer/query/simulate-delete-sub-account.d.ts +3 -3
  320. package/dist/symmio-contracts/account-layer/query/simulate-deposit-and-allocate-for-account.d.ts +3 -3
  321. package/dist/symmio-contracts/account-layer/query/simulate-deposit-for-account.d.ts +3 -3
  322. package/dist/symmio-contracts/account-layer/query/simulate-edit-account-name.d.ts +3 -3
  323. package/dist/symmio-contracts/account-layer/query/simulate-remove-margin.d.ts +3 -3
  324. package/dist/symmio-contracts/collateral/actions/approve-collateral.d.ts +2 -2
  325. package/dist/symmio-contracts/collateral/actions/get-collateral-allowance.d.ts +2 -2
  326. package/dist/symmio-contracts/collateral/actions/get-collateral-balance.d.ts +2 -2
  327. package/dist/symmio-contracts/collateral/actions/simulate-approve-collateral.d.ts +3 -3
  328. package/dist/symmio-contracts/collateral/index.d.ts +8 -8
  329. package/dist/symmio-contracts/collateral/query/approve-collateral.d.ts +2 -2
  330. package/dist/symmio-contracts/collateral/query/get-collateral-allowance.d.ts +4 -4
  331. package/dist/symmio-contracts/collateral/query/get-collateral-balance.d.ts +4 -4
  332. package/dist/symmio-contracts/collateral/query/simulate-approve-collateral.d.ts +3 -3
  333. package/dist/symmio-contracts/instant-layer/actions/get-delegation-expiry.d.ts +2 -2
  334. package/dist/symmio-contracts/instant-layer/actions/get-is-delegation-active.d.ts +2 -2
  335. package/dist/symmio-contracts/instant-layer/actions/grant-delegation.d.ts +3 -3
  336. package/dist/symmio-contracts/instant-layer/actions/simulate-grant-delegation.d.ts +4 -4
  337. package/dist/symmio-contracts/instant-layer/index.d.ts +9 -9
  338. package/dist/symmio-contracts/instant-layer/query/get-delegation-expiry.d.ts +4 -4
  339. package/dist/symmio-contracts/instant-layer/query/get-is-delegation-active.d.ts +4 -4
  340. package/dist/symmio-contracts/instant-layer/query/grant-delegation.d.ts +2 -2
  341. package/dist/symmio-contracts/instant-layer/query/simulate-grant-delegation.d.ts +3 -3
  342. package/dist/symmio-contracts/symmio/actions/allocate.d.ts +2 -2
  343. package/dist/symmio-contracts/symmio/actions/deallocate.d.ts +3 -3
  344. package/dist/symmio-contracts/symmio/actions/finalize-withdraw-request.d.ts +2 -2
  345. package/dist/symmio-contracts/symmio/actions/get-fee-for-user.d.ts +2 -2
  346. package/dist/symmio-contracts/symmio/actions/get-last-withdraw-request-id.d.ts +2 -2
  347. package/dist/symmio-contracts/symmio/actions/get-onchain-contract-markets.d.ts +2 -2
  348. package/dist/symmio-contracts/symmio/actions/get-party-a-open-positions.d.ts +4 -4
  349. package/dist/symmio-contracts/symmio/actions/get-party-a-open-positions.d.ts.map +1 -1
  350. package/dist/symmio-contracts/symmio/actions/get-party-a-open-positions.js.map +1 -1
  351. package/dist/symmio-contracts/symmio/actions/get-party-a-pending-quotes.d.ts +3 -3
  352. package/dist/symmio-contracts/symmio/actions/get-party-a-pending-quotes.d.ts.map +1 -1
  353. package/dist/symmio-contracts/symmio/actions/get-party-a-pending-quotes.js.map +1 -1
  354. package/dist/symmio-contracts/symmio/actions/get-pending-withdraw-requests.d.ts +3 -3
  355. package/dist/symmio-contracts/symmio/actions/get-quote.d.ts +3 -3
  356. package/dist/symmio-contracts/symmio/actions/get-withdraw-requests.d.ts +3 -3
  357. package/dist/symmio-contracts/symmio/actions/get-withdrawable-time.d.ts +2 -2
  358. package/dist/symmio-contracts/symmio/actions/initiate-withdraw.d.ts +3 -3
  359. package/dist/symmio-contracts/symmio/actions/request-cancel-withdraw.d.ts +2 -2
  360. package/dist/symmio-contracts/symmio/actions/simulate-allocate.d.ts +4 -4
  361. package/dist/symmio-contracts/symmio/actions/simulate-deallocate.d.ts +4 -4
  362. package/dist/symmio-contracts/symmio/actions/simulate-finalize-withdraw-request.d.ts +4 -4
  363. package/dist/symmio-contracts/symmio/actions/simulate-initiate-withdraw.d.ts +4 -4
  364. package/dist/symmio-contracts/symmio/actions/simulate-request-cancel-withdraw.d.ts +4 -4
  365. package/dist/symmio-contracts/symmio/index.d.ts +40 -40
  366. package/dist/symmio-contracts/symmio/internal/call-as-sub-account.d.ts +1 -1
  367. package/dist/symmio-contracts/symmio/internal/simulate-call-as-sub-account.d.ts +2 -2
  368. package/dist/symmio-contracts/symmio/parts.d.ts +1 -1
  369. package/dist/symmio-contracts/symmio/query/allocate.d.ts +2 -2
  370. package/dist/symmio-contracts/symmio/query/deallocate.d.ts +2 -2
  371. package/dist/symmio-contracts/symmio/query/finalize-withdraw-request.d.ts +2 -2
  372. package/dist/symmio-contracts/symmio/query/get-fee-for-user.d.ts +4 -4
  373. package/dist/symmio-contracts/symmio/query/get-last-withdraw-request-id.d.ts +4 -4
  374. package/dist/symmio-contracts/symmio/query/get-onchain-contract-markets.d.ts +4 -4
  375. package/dist/symmio-contracts/symmio/query/get-party-a-open-positions.d.ts +4 -4
  376. package/dist/symmio-contracts/symmio/query/get-party-a-pending-quotes.d.ts +4 -4
  377. package/dist/symmio-contracts/symmio/query/get-pending-withdraw-requests.d.ts +4 -4
  378. package/dist/symmio-contracts/symmio/query/get-quote.d.ts +4 -4
  379. package/dist/symmio-contracts/symmio/query/get-withdraw-requests.d.ts +4 -4
  380. package/dist/symmio-contracts/symmio/query/get-withdrawable-time.d.ts +4 -4
  381. package/dist/symmio-contracts/symmio/query/initiate-withdraw.d.ts +2 -2
  382. package/dist/symmio-contracts/symmio/query/request-cancel-withdraw.d.ts +2 -2
  383. package/dist/symmio-contracts/symmio/query/simulate-allocate.d.ts +3 -3
  384. package/dist/symmio-contracts/symmio/query/simulate-deallocate.d.ts +3 -3
  385. package/dist/symmio-contracts/symmio/query/simulate-finalize-withdraw-request.d.ts +3 -3
  386. package/dist/symmio-contracts/symmio/query/simulate-initiate-withdraw.d.ts +3 -3
  387. package/dist/symmio-contracts/symmio/query/simulate-request-cancel-withdraw.d.ts +3 -3
  388. package/dist/symmio-contracts/symmio/types.d.ts +1 -1
  389. package/dist/symmio-contracts/symmio/types.d.ts.map +1 -1
  390. package/dist/symmio-contracts/symmio/types.js.map +1 -1
  391. package/dist/symmio-subgraph/index.d.ts +1 -1
  392. package/dist/symmio-subgraph/query-subgraph/index.d.ts +2 -2
  393. package/dist/symmio-subgraph/query-subgraph/query-subgraph.d.ts +3 -3
  394. package/dist/symmio-subgraph/query-subgraph/query.d.ts +4 -4
  395. package/dist/symmio-subgraph/types/generated/analytics/gql.d.ts +4 -4
  396. package/dist/symmio-subgraph/types/generated/analytics/index.d.ts +1 -1
  397. package/dist/symmio-subgraph/types/generated/events/gql.d.ts +1 -1
  398. package/dist/symmio-subgraph/types/generated/events/index.d.ts +1 -1
  399. package/dist/tpsl/config/get-tpsl-config.d.ts +3 -3
  400. package/dist/tpsl/config/index.d.ts +2 -2
  401. package/dist/tpsl/config/query.d.ts +4 -4
  402. package/dist/tpsl/delete-quote-tpsl/delete-quote-tpsl.d.ts +37 -0
  403. package/dist/tpsl/delete-quote-tpsl/delete-quote-tpsl.d.ts.map +1 -0
  404. package/dist/tpsl/delete-quote-tpsl/delete-quote-tpsl.js +43 -0
  405. package/dist/tpsl/delete-quote-tpsl/delete-quote-tpsl.js.map +1 -0
  406. package/dist/tpsl/delete-quote-tpsl/index.d.ts +3 -0
  407. package/dist/tpsl/delete-quote-tpsl/index.d.ts.map +1 -0
  408. package/dist/tpsl/delete-quote-tpsl/query.d.ts +15 -0
  409. package/dist/tpsl/delete-quote-tpsl/query.d.ts.map +1 -0
  410. package/dist/tpsl/delete-quote-tpsl/query.js +12 -0
  411. package/dist/tpsl/delete-quote-tpsl/query.js.map +1 -0
  412. package/dist/tpsl/get-quote-tpsl/get-quote-tpsl.d.ts +4 -4
  413. package/dist/tpsl/get-quote-tpsl/index.d.ts +2 -2
  414. package/dist/tpsl/get-quote-tpsl/query.d.ts +7 -5
  415. package/dist/tpsl/get-quote-tpsl/query.d.ts.map +1 -1
  416. package/dist/tpsl/get-quote-tpsl/query.js +4 -1
  417. package/dist/tpsl/get-quote-tpsl/query.js.map +1 -1
  418. package/dist/tpsl/index.d.ts +8 -7
  419. package/dist/tpsl/index.d.ts.map +1 -1
  420. package/dist/tpsl/internal/resolve-tpsl-config.d.ts +2 -2
  421. package/dist/tpsl/set-quote-tpsl/build-conditional-order-leg.d.ts +1 -1
  422. package/dist/tpsl/set-quote-tpsl/build-conditional-order-message.d.ts +1 -1
  423. package/dist/tpsl/set-quote-tpsl/index.d.ts +5 -5
  424. package/dist/tpsl/set-quote-tpsl/query.d.ts +3 -3
  425. package/dist/tpsl/set-quote-tpsl/set-quote-tpsl.d.ts +4 -4
  426. package/dist/tpsl/set-quote-tpsl/set-quote-tpsl.js +11 -11
  427. package/dist/tpsl/set-quote-tpsl/sign-tpsl-request.d.ts +2 -2
  428. package/dist/tpsl/signing-spec/delete-query.d.ts +12 -0
  429. package/dist/tpsl/signing-spec/delete-query.d.ts.map +1 -0
  430. package/dist/tpsl/signing-spec/delete-query.js +21 -0
  431. package/dist/tpsl/signing-spec/delete-query.js.map +1 -0
  432. package/dist/tpsl/signing-spec/get-tpsl-delete-signing-spec.d.ts +18 -0
  433. package/dist/tpsl/signing-spec/get-tpsl-delete-signing-spec.d.ts.map +1 -0
  434. package/dist/tpsl/signing-spec/get-tpsl-delete-signing-spec.js +25 -0
  435. package/dist/tpsl/signing-spec/get-tpsl-delete-signing-spec.js.map +1 -0
  436. package/dist/tpsl/signing-spec/get-tpsl-signing-spec.d.ts +3 -3
  437. package/dist/tpsl/signing-spec/index.d.ts +4 -2
  438. package/dist/tpsl/signing-spec/index.d.ts.map +1 -1
  439. package/dist/tpsl/signing-spec/query.d.ts +4 -4
  440. package/dist/tpsl/slippage.d.ts +1 -1
  441. package/dist/tpsl/types/generated/tpsl-handler.js +6 -3
  442. package/dist/tpsl/types/generated/tpsl-handler.js.map +1 -1
  443. package/dist/tpsl/validate-tpsl.d.ts +2 -2
  444. package/dist/transfers/get-transfer-history/get-transfer-history.d.ts +3 -3
  445. package/dist/transfers/get-transfer-history/index.d.ts +4 -4
  446. package/dist/transfers/get-transfer-history/query-document.d.ts +2 -2
  447. package/dist/transfers/get-transfer-history/query.d.ts +4 -4
  448. package/dist/transfers/get-transfer-history/to-transfer-row.d.ts +2 -2
  449. package/dist/transfers/index.d.ts +1 -1
  450. package/dist/websocket/index.d.ts +3 -3
  451. package/dist/websocket/notifications/build-subscribe-message.d.ts +1 -1
  452. package/dist/websocket/notifications/index.d.ts +5 -5
  453. package/dist/websocket/notifications/normalize-notification.d.ts +1 -1
  454. package/dist/websocket/notifications/parse-notification-frame.d.ts +2 -2
  455. package/dist/websocket/notifications/watch-notifications.d.ts +4 -4
  456. package/dist/websocket/prices/index.d.ts +3 -3
  457. package/dist/websocket/prices/parse-price-frame.d.ts +1 -1
  458. package/dist/websocket/prices/watch-enigma-prices.d.ts +5 -5
  459. package/dist/websocket/socket/create-reconnecting-socket.d.ts +2 -2
  460. package/dist/websocket/socket/get-socket-pool.d.ts +2 -2
  461. package/dist/websocket/socket/index.d.ts +4 -4
  462. package/dist/websocket/socket/socket-pool.d.ts +2 -2
  463. package/dist/websocket/tpsl/index.d.ts +3 -3
  464. package/dist/websocket/tpsl/parse-tpsl-frame.d.ts +1 -1
  465. package/dist/websocket/tpsl/types.d.ts +1 -1
  466. package/dist/websocket/tpsl/watch-tpsl-notifications.d.ts +4 -4
  467. package/package.json +11 -9
@@ -36,7 +36,11 @@ function c(e, t, n) {
36
36
  function l(e) {
37
37
  return BigInt(n(e).toFixed(0, t.ROUND_DOWN));
38
38
  }
39
+ function u(t) {
40
+ let { balance: n, openFee: r, closeFee: i, slippageFractionWei: a, leverage: o, positionType: s } = t, c = 10n ** 18n, l = s === e.SHORT ? a >= c ? 0n : c - a : c, u = BigInt(o) * (r + i), d = u >= c ? 0n : c - u;
41
+ return n * l / c * d / c;
42
+ }
39
43
  //#endregion
40
- export { i as MARKET_ORDER_DEADLINE_SECONDS, s as calculateMargin, o as calculateTradeParams, c as computePlatformFee, a as getMarketOrderDeadline, l as toWeiBigInt };
44
+ export { i as MARKET_ORDER_DEADLINE_SECONDS, u as calculateAvailableInstantOpenMargin, s as calculateMargin, o as calculateTradeParams, c as computePlatformFee, a as getMarketOrderDeadline, l as toWeiBigInt };
41
45
 
42
46
  //# sourceMappingURL=trade-math.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trade-math.js","names":[],"sources":["../../../../src/solvers/instant-open/shared/trade-math.ts"],"sourcesContent":["import { parseEther, RoundingMode, toDecimal } from \"@symmio/utils/decimal\";\nimport { PositionType } from \"./types\";\n\n/**\n * Unix-seconds remaining for a MARKET-order deadline (5 minutes).\n */\nexport const MARKET_ORDER_DEADLINE_SECONDS = 300n;\n\n/**\n * Compute a unix-seconds `deadline` for a MARKET order.\n *\n * @param now - Optional override for `Math.floor(Date.now() / 1000)`. Useful for tests.\n */\nexport function getMarketOrderDeadline(now?: bigint): bigint {\n const base = now ?? BigInt(Math.floor(Date.now() / 1000));\n return base + MARKET_ORDER_DEADLINE_SECONDS;\n}\n\n/**\n * Parameters for {@link calculateTradeParams}.\n */\nexport interface CalculateTradeParamsParameters {\n /** Mark price as decimal string (e.g. `\"50123.45\"`). */\n markPrice: string;\n /** Slippage percent (e.g. `5` for 5%). */\n slippage: number;\n /** Position side: `\"LONG\"` or `\"SHORT\"`. */\n positionType: PositionType;\n /** User input as decimal string. Interpreted as collateral when `inputField === \"PRICE\"`. */\n userInput: string;\n /** Input mode. `\"PRICE\"` = userInput is USD collateral; `\"TOKEN\"` = userInput is base token amount. */\n inputField: \"PRICE\" | \"TOKEN\";\n /** Position leverage (integer ≥ 1). */\n leverage: number;\n /** Price precision (decimals). */\n pricePrecision: number;\n /** Quantity precision (decimals). */\n quantityPrecision: number;\n /** Solver locked-param percentages (e.g. `\"0.02\"` for 2%). */\n cvaPercent?: string;\n /** Solver locked-param percentages (e.g. `\"0.01\"` for 1%). */\n lfPercent?: string;\n /** Solver locked-param percentages. */\n partyAmmPercent?: string;\n /** Solver locked-param percentages. */\n partyBmmPercent?: string;\n}\n\n/**\n * Return type of {@link calculateTradeParams}.\n *\n * All values are decimal strings. Convert to 18-decimal `bigint` with\n * `parseEther(...).toFixed(0)` (or {@link toWeiBigInt}) before passing to a\n * contract call.\n */\nexport interface CalculateTradeParamsReturnType {\n /** Open price with slippage applied, trimmed to `pricePrecision`. */\n requestedOpenPrice: string;\n /** Base quantity (no leverage), trimmed to `quantityPrecision`. */\n quantityBasic: string;\n /** Leveraged quantity (`quantityBasic × leverage`), trimmed to `quantityPrecision`. */\n quantity: string;\n /** Base notional (`quantityBasic × requestedOpenPrice`). */\n notionalBasic: string;\n /** Leveraged notional (`notionalBasic × leverage`). */\n notional: string;\n /** CVA locked margin (`notionalBasic × cvaPercent / 100`). */\n cva: string;\n /** LF locked margin (`notionalBasic × lfPercent / 100`). */\n lf: string;\n /** PartyA maintenance margin. */\n partyAmm: string;\n /** PartyB maintenance margin. */\n partyBmm: string;\n}\n\n/**\n * Pure trade-parameters calculator for lowcap MARKET orders.\n *\n * Steps:\n * 1. `requestedOpenPrice = markPrice × (1 ± slippage/100)` trimmed to `pricePrecision`.\n * 2. `quantityBasic = userInput / requestedOpenPrice` (when `inputField === \"PRICE\"`) or\n * `userInput` (when `inputField === \"TOKEN\"`) trimmed to `quantityPrecision`.\n * 3. `notionalBasic = quantityBasic × requestedOpenPrice`.\n * 4. `cva / lf / partyAmm / partyBmm = notionalBasic × percent / 100`.\n * 5. `quantity = quantityBasic × leverage` trimmed to `quantityPrecision`.\n * 6. `notional = notionalBasic × leverage`.\n *\n * @returns `null` when `markPrice` is zero/NaN or `userInput` is invalid.\n */\nexport function calculateTradeParams(\n parameters: CalculateTradeParamsParameters,\n): CalculateTradeParamsReturnType | null {\n const {\n markPrice,\n slippage,\n positionType,\n userInput,\n inputField,\n leverage,\n pricePrecision,\n quantityPrecision,\n cvaPercent,\n lfPercent,\n partyAmmPercent,\n partyBmmPercent,\n } = parameters;\n\n const markPriceDec = toDecimal(markPrice);\n if (markPriceDec.isZero() || markPriceDec.isNaN()) return null;\n const userInputDec = toDecimal(userInput);\n if (userInputDec.isZero() || userInputDec.isNaN()) return null;\n\n const signedSlippage = positionType === PositionType.SHORT ? slippage : -slippage;\n const slippageFactor = toDecimal(100 - signedSlippage).div(100);\n const requestedOpenPrice = markPriceDec.times(slippageFactor).toFixed(pricePrecision, RoundingMode.ROUND_DOWN);\n\n const quantityBasic =\n inputField === \"PRICE\"\n ? userInputDec.div(requestedOpenPrice).toFixed(quantityPrecision, RoundingMode.ROUND_DOWN)\n : userInputDec.toFixed(quantityPrecision, RoundingMode.ROUND_DOWN);\n\n const notionalBasic = toDecimal(quantityBasic).times(requestedOpenPrice).toString();\n const cva = toDecimal(notionalBasic).times(toDecimal(cvaPercent)).div(100).toString();\n const lf = toDecimal(notionalBasic).times(toDecimal(lfPercent)).div(100).toString();\n const partyAmm = toDecimal(notionalBasic).times(toDecimal(partyAmmPercent)).div(100).toString();\n const partyBmm = toDecimal(notionalBasic).times(toDecimal(partyBmmPercent)).div(100).toString();\n\n const quantity = toDecimal(quantityBasic).times(leverage).toFixed(quantityPrecision, RoundingMode.ROUND_DOWN);\n const notional = toDecimal(notionalBasic).times(leverage).toString();\n\n return {\n requestedOpenPrice,\n quantityBasic,\n quantity,\n notionalBasic,\n notional,\n cva,\n lf,\n partyAmm,\n partyBmm,\n };\n}\n\n/**\n * Parameters for {@link calculateMargin}.\n */\nexport interface CalculateMarginParameters {\n /** Position side. */\n positionType: PositionType;\n /** Mark price (decimal string). */\n markPrice: string;\n /** Base quantity from {@link calculateTradeParams}. */\n quantityBasic: string;\n /** CVA from {@link calculateTradeParams}. */\n cva: string;\n /** LF from {@link calculateTradeParams}. */\n lf: string;\n /** PartyA maintenance margin from {@link calculateTradeParams}. */\n partyAmm: string;\n /** Solver locked-param percents (passed when recomputing for SHORT). */\n cvaPercent?: string;\n /** Solver locked-param percents. */\n lfPercent?: string;\n /** Solver locked-param percents. */\n partyAmmPercent?: string;\n /** On-chain platform fee as decimal string (from {@link computePlatformFee}). */\n platformFee: string;\n}\n\n/**\n * Compute the `addMargin` amount for lowcap isolation.\n *\n * - **LONG**: `margin = cva + lf + partyAmm + platformFee`.\n * - **SHORT**: recompute the locked values at `markPrice`,\n * then sum + `platformFee`.\n *\n * @returns Margin as decimal string.\n */\nexport function calculateMargin(parameters: CalculateMarginParameters): string {\n const {\n positionType,\n markPrice,\n quantityBasic,\n cva,\n lf,\n partyAmm,\n cvaPercent,\n lfPercent,\n partyAmmPercent,\n platformFee,\n } = parameters;\n\n if (positionType === PositionType.LONG) {\n return toDecimal(cva).plus(lf).plus(partyAmm).plus(platformFee).toString();\n }\n\n const marginPrice = toDecimal(markPrice);\n const notionalBasicMargin = toDecimal(quantityBasic).times(marginPrice).toString();\n const cvaMargin = toDecimal(notionalBasicMargin).times(toDecimal(cvaPercent)).div(100).toString();\n const lfMargin = toDecimal(notionalBasicMargin).times(toDecimal(lfPercent)).div(100).toString();\n const partyAmmMargin = toDecimal(notionalBasicMargin).times(toDecimal(partyAmmPercent)).div(100).toString();\n\n return toDecimal(cvaMargin).plus(lfMargin).plus(partyAmmMargin).plus(platformFee).toString();\n}\n\n/**\n * On-chain `getFeeForUser` result, in 18-decimal fixed-point.\n */\nexport interface ComputePlatformFeeRates {\n /** Open fee rate as 18-decimal `bigint`. */\n openFee: bigint;\n /** Close fee rate as 18-decimal `bigint`. */\n closeFee: bigint;\n}\n\n/**\n * Compute the total platform fee for an open + close round trip.\n *\n * `(openFee × initialNotional + closeFee × closeNotional) / 1e18`.\n *\n * @param rates - Fee rates from `getFeeForUser`.\n * @param initialNotional - Notional at open, decimal string.\n * @param closeNotional - Notional at close, decimal string.\n * @returns Total fee as decimal string.\n */\nexport function computePlatformFee(\n rates: ComputePlatformFeeRates,\n initialNotional: string,\n closeNotional: string,\n): string {\n const open = toDecimal(rates.openFee.toString()).times(initialNotional);\n const close = toDecimal(rates.closeFee.toString()).times(closeNotional);\n return open.plus(close).div(toDecimal(\"1e18\")).toString();\n}\n\n/**\n * Convert a decimal string to an 18-decimal-fixed-point `bigint`.\n *\n * Wrapper over `parseEther` from `@symmio/utils/decimal` that returns\n * the wei value as `bigint` (truncated, no rounding) suitable for contract calls.\n */\nexport function toWeiBigInt(value: string): bigint {\n return BigInt(parseEther(value).toFixed(0, RoundingMode.ROUND_DOWN));\n}\n"],"mappings":";;;AAMA,IAAa,IAAgC;AAO7C,SAAgB,EAAuB,GAAsB;CAE3D,QADa,KAAO,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC,KAC1C;AAChB;AA0EA,SAAgB,EACd,GACuC;CACvC,IAAM,EACJ,cACA,aACA,iBACA,cACA,eACA,aACA,mBACA,sBACA,eACA,cACA,oBACA,uBACE,GAEE,IAAe,EAAU,CAAS;CACxC,IAAI,EAAa,OAAO,KAAK,EAAa,MAAM,GAAG,OAAO;CAC1D,IAAM,IAAe,EAAU,CAAS;CACxC,IAAI,EAAa,OAAO,KAAK,EAAa,MAAM,GAAG,OAAO;CAG1D,IAAM,IAAiB,EAAU,OADV,MAAiB,EAAa,QAAQ,IAAW,CAAC,EACpB,EAAE,IAAI,GAAG,GACxD,IAAqB,EAAa,MAAM,CAAc,EAAE,QAAQ,GAAgB,EAAa,UAAU,GAEvG,IACJ,MAAe,UACX,EAAa,IAAI,CAAkB,EAAE,QAAQ,GAAmB,EAAa,UAAU,IACvF,EAAa,QAAQ,GAAmB,EAAa,UAAU,GAE/D,IAAgB,EAAU,CAAa,EAAE,MAAM,CAAkB,EAAE,SAAS,GAC5E,IAAM,EAAU,CAAa,EAAE,MAAM,EAAU,CAAU,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GAC9E,IAAK,EAAU,CAAa,EAAE,MAAM,EAAU,CAAS,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GAC5E,IAAW,EAAU,CAAa,EAAE,MAAM,EAAU,CAAe,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GACxF,IAAW,EAAU,CAAa,EAAE,MAAM,EAAU,CAAe,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;CAK9F,OAAO;EACL;EACA;EACA,UANe,EAAU,CAAa,EAAE,MAAM,CAAQ,EAAE,QAAQ,GAAmB,EAAa,UAMhG;EACA;EACA,UAPe,EAAU,CAAa,EAAE,MAAM,CAAQ,EAAE,SAOxD;EACA;EACA;EACA;EACA;CACF;AACF;AAqCA,SAAgB,EAAgB,GAA+C;CAC7E,IAAM,EACJ,iBACA,cACA,kBACA,QACA,OACA,aACA,eACA,cACA,oBACA,mBACE;CAEJ,IAAI,MAAiB,EAAa,MAChC,OAAO,EAAU,CAAG,EAAE,KAAK,CAAE,EAAE,KAAK,CAAQ,EAAE,KAAK,CAAW,EAAE,SAAS;CAG3E,IAAM,IAAc,EAAU,CAAS,GACjC,IAAsB,EAAU,CAAa,EAAE,MAAM,CAAW,EAAE,SAAS,GAC3E,IAAY,EAAU,CAAmB,EAAE,MAAM,EAAU,CAAU,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GAC1F,IAAW,EAAU,CAAmB,EAAE,MAAM,EAAU,CAAS,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GACxF,IAAiB,EAAU,CAAmB,EAAE,MAAM,EAAU,CAAe,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;CAE1G,OAAO,EAAU,CAAS,EAAE,KAAK,CAAQ,EAAE,KAAK,CAAc,EAAE,KAAK,CAAW,EAAE,SAAS;AAC7F;AAsBA,SAAgB,EACd,GACA,GACA,GACQ;CACR,IAAM,IAAO,EAAU,EAAM,QAAQ,SAAS,CAAC,EAAE,MAAM,CAAe,GAChE,IAAQ,EAAU,EAAM,SAAS,SAAS,CAAC,EAAE,MAAM,CAAa;CACtE,OAAO,EAAK,KAAK,CAAK,EAAE,IAAI,EAAU,MAAM,CAAC,EAAE,SAAS;AAC1D;AAQA,SAAgB,EAAY,GAAuB;CACjD,OAAO,OAAO,EAAW,CAAK,EAAE,QAAQ,GAAG,EAAa,UAAU,CAAC;AACrE"}
1
+ {"version":3,"file":"trade-math.js","names":[],"sources":["../../../../src/solvers/instant-open/shared/trade-math.ts"],"sourcesContent":["import { parseEther, RoundingMode, toDecimal } from \"@symmio/utils/decimal\";\nimport { PositionType } from \"./types\";\n\n/**\n * Unix-seconds remaining for a MARKET-order deadline (5 minutes).\n */\nexport const MARKET_ORDER_DEADLINE_SECONDS = 300n;\n\n/**\n * Compute a unix-seconds `deadline` for a MARKET order.\n *\n * @param now - Optional override for `Math.floor(Date.now() / 1000)`. Useful for tests.\n */\nexport function getMarketOrderDeadline(now?: bigint): bigint {\n const base = now ?? BigInt(Math.floor(Date.now() / 1000));\n return base + MARKET_ORDER_DEADLINE_SECONDS;\n}\n\n/**\n * Parameters for {@link calculateTradeParams}.\n */\nexport interface CalculateTradeParamsParameters {\n /** Mark price as decimal string (e.g. `\"50123.45\"`). */\n markPrice: string;\n /** Slippage percent (e.g. `5` for 5%). */\n slippage: number;\n /** Position side: `\"LONG\"` or `\"SHORT\"`. */\n positionType: PositionType;\n /** User input as decimal string. Interpreted as collateral when `inputField === \"PRICE\"`. */\n userInput: string;\n /** Input mode. `\"PRICE\"` = userInput is USD collateral; `\"TOKEN\"` = userInput is base token amount. */\n inputField: \"PRICE\" | \"TOKEN\";\n /** Position leverage (integer ≥ 1). */\n leverage: number;\n /** Price precision (decimals). */\n pricePrecision: number;\n /** Quantity precision (decimals). */\n quantityPrecision: number;\n /** Solver locked-param percentages (e.g. `\"0.02\"` for 2%). */\n cvaPercent?: string;\n /** Solver locked-param percentages (e.g. `\"0.01\"` for 1%). */\n lfPercent?: string;\n /** Solver locked-param percentages. */\n partyAmmPercent?: string;\n /** Solver locked-param percentages. */\n partyBmmPercent?: string;\n}\n\n/**\n * Return type of {@link calculateTradeParams}.\n *\n * All values are decimal strings. Convert to 18-decimal `bigint` with\n * `parseEther(...).toFixed(0)` (or {@link toWeiBigInt}) before passing to a\n * contract call.\n */\nexport interface CalculateTradeParamsReturnType {\n /** Open price with slippage applied, trimmed to `pricePrecision`. */\n requestedOpenPrice: string;\n /** Base quantity (no leverage), trimmed to `quantityPrecision`. */\n quantityBasic: string;\n /** Leveraged quantity (`quantityBasic × leverage`), trimmed to `quantityPrecision`. */\n quantity: string;\n /** Base notional (`quantityBasic × requestedOpenPrice`). */\n notionalBasic: string;\n /** Leveraged notional (`notionalBasic × leverage`). */\n notional: string;\n /** CVA locked margin (`notionalBasic × cvaPercent / 100`). */\n cva: string;\n /** LF locked margin (`notionalBasic × lfPercent / 100`). */\n lf: string;\n /** PartyA maintenance margin. */\n partyAmm: string;\n /** PartyB maintenance margin. */\n partyBmm: string;\n}\n\n/**\n * Pure trade-parameters calculator for lowcap MARKET orders.\n *\n * Steps:\n * 1. `requestedOpenPrice = markPrice × (1 ± slippage/100)` trimmed to `pricePrecision`.\n * 2. `quantityBasic = userInput / requestedOpenPrice` (when `inputField === \"PRICE\"`) or\n * `userInput` (when `inputField === \"TOKEN\"`) trimmed to `quantityPrecision`.\n * 3. `notionalBasic = quantityBasic × requestedOpenPrice`.\n * 4. `cva / lf / partyAmm / partyBmm = notionalBasic × percent / 100`.\n * 5. `quantity = quantityBasic × leverage` trimmed to `quantityPrecision`.\n * 6. `notional = notionalBasic × leverage`.\n *\n * @returns `null` when `markPrice` is zero/NaN or `userInput` is invalid.\n */\nexport function calculateTradeParams(\n parameters: CalculateTradeParamsParameters,\n): CalculateTradeParamsReturnType | null {\n const {\n markPrice,\n slippage,\n positionType,\n userInput,\n inputField,\n leverage,\n pricePrecision,\n quantityPrecision,\n cvaPercent,\n lfPercent,\n partyAmmPercent,\n partyBmmPercent,\n } = parameters;\n\n const markPriceDec = toDecimal(markPrice);\n if (markPriceDec.isZero() || markPriceDec.isNaN()) return null;\n const userInputDec = toDecimal(userInput);\n if (userInputDec.isZero() || userInputDec.isNaN()) return null;\n\n const signedSlippage = positionType === PositionType.SHORT ? slippage : -slippage;\n const slippageFactor = toDecimal(100 - signedSlippage).div(100);\n const requestedOpenPrice = markPriceDec.times(slippageFactor).toFixed(pricePrecision, RoundingMode.ROUND_DOWN);\n\n const quantityBasic =\n inputField === \"PRICE\"\n ? userInputDec.div(requestedOpenPrice).toFixed(quantityPrecision, RoundingMode.ROUND_DOWN)\n : userInputDec.toFixed(quantityPrecision, RoundingMode.ROUND_DOWN);\n\n const notionalBasic = toDecimal(quantityBasic).times(requestedOpenPrice).toString();\n const cva = toDecimal(notionalBasic).times(toDecimal(cvaPercent)).div(100).toString();\n const lf = toDecimal(notionalBasic).times(toDecimal(lfPercent)).div(100).toString();\n const partyAmm = toDecimal(notionalBasic).times(toDecimal(partyAmmPercent)).div(100).toString();\n const partyBmm = toDecimal(notionalBasic).times(toDecimal(partyBmmPercent)).div(100).toString();\n\n const quantity = toDecimal(quantityBasic).times(leverage).toFixed(quantityPrecision, RoundingMode.ROUND_DOWN);\n const notional = toDecimal(notionalBasic).times(leverage).toString();\n\n return {\n requestedOpenPrice,\n quantityBasic,\n quantity,\n notionalBasic,\n notional,\n cva,\n lf,\n partyAmm,\n partyBmm,\n };\n}\n\n/**\n * Parameters for {@link calculateMargin}.\n */\nexport interface CalculateMarginParameters {\n /** Position side. */\n positionType: PositionType;\n /** Mark price (decimal string). */\n markPrice: string;\n /** Base quantity from {@link calculateTradeParams}. */\n quantityBasic: string;\n /** CVA from {@link calculateTradeParams}. */\n cva: string;\n /** LF from {@link calculateTradeParams}. */\n lf: string;\n /** PartyA maintenance margin from {@link calculateTradeParams}. */\n partyAmm: string;\n /** Solver locked-param percents (passed when recomputing for SHORT). */\n cvaPercent?: string;\n /** Solver locked-param percents. */\n lfPercent?: string;\n /** Solver locked-param percents. */\n partyAmmPercent?: string;\n /** On-chain platform fee as decimal string (from {@link computePlatformFee}). */\n platformFee: string;\n}\n\n/**\n * Compute the `addMargin` amount for lowcap isolation.\n *\n * - **LONG**: `margin = cva + lf + partyAmm + platformFee`.\n * - **SHORT**: recompute the locked values at `markPrice`,\n * then sum + `platformFee`.\n *\n * @returns Margin as decimal string.\n */\nexport function calculateMargin(parameters: CalculateMarginParameters): string {\n const {\n positionType,\n markPrice,\n quantityBasic,\n cva,\n lf,\n partyAmm,\n cvaPercent,\n lfPercent,\n partyAmmPercent,\n platformFee,\n } = parameters;\n\n if (positionType === PositionType.LONG) {\n return toDecimal(cva).plus(lf).plus(partyAmm).plus(platformFee).toString();\n }\n\n const marginPrice = toDecimal(markPrice);\n const notionalBasicMargin = toDecimal(quantityBasic).times(marginPrice).toString();\n const cvaMargin = toDecimal(notionalBasicMargin).times(toDecimal(cvaPercent)).div(100).toString();\n const lfMargin = toDecimal(notionalBasicMargin).times(toDecimal(lfPercent)).div(100).toString();\n const partyAmmMargin = toDecimal(notionalBasicMargin).times(toDecimal(partyAmmPercent)).div(100).toString();\n\n return toDecimal(cvaMargin).plus(lfMargin).plus(partyAmmMargin).plus(platformFee).toString();\n}\n\n/**\n * On-chain `getFeeForUser` result, in 18-decimal fixed-point.\n */\nexport interface ComputePlatformFeeRates {\n /** Open fee rate as 18-decimal `bigint`. */\n openFee: bigint;\n /** Close fee rate as 18-decimal `bigint`. */\n closeFee: bigint;\n}\n\n/**\n * Compute the total platform fee for an open + close round trip.\n *\n * `(openFee × initialNotional + closeFee × closeNotional) / 1e18`.\n *\n * @param rates - Fee rates from `getFeeForUser`.\n * @param initialNotional - Notional at open, decimal string.\n * @param closeNotional - Notional at close, decimal string.\n * @returns Total fee as decimal string.\n */\nexport function computePlatformFee(\n rates: ComputePlatformFeeRates,\n initialNotional: string,\n closeNotional: string,\n): string {\n const open = toDecimal(rates.openFee.toString()).times(initialNotional);\n const close = toDecimal(rates.closeFee.toString()).times(closeNotional);\n return open.plus(close).div(toDecimal(\"1e18\")).toString();\n}\n\n/**\n * Convert a decimal string to an 18-decimal-fixed-point `bigint`.\n *\n * Wrapper over `parseEther` from `@symmio/utils/decimal` that returns\n * the wei value as `bigint` (truncated, no rounding) suitable for contract calls.\n */\nexport function toWeiBigInt(value: string): bigint {\n return BigInt(parseEther(value).toFixed(0, RoundingMode.ROUND_DOWN));\n}\n\n/**\n * Inputs for {@link calculateAvailableInstantOpenMargin}. All amounts are\n * 18-decimal wei / fixed-point.\n */\nexport interface CalculateAvailableInstantOpenMarginParameters {\n /** SubAccount available (deallocated) balance from `getAccountBalanceOf`; 1e18-scaled. */\n balance: bigint;\n /** Open fee rate (18-decimal fixed-point) from `getFeeForUser`. */\n openFee: bigint;\n /** Close fee rate (18-decimal fixed-point) from `getFeeForUser`. */\n closeFee: bigint;\n /** Slippage as an 18-decimal fraction (5% → `5n * 10n ** 16n`). */\n slippageFractionWei: bigint;\n /** Requested leverage (integer ≥ 1). */\n leverage: number;\n /** LONG skips the slippage cap; SHORT applies it. */\n positionType: PositionType;\n}\n\n/**\n * Maximum initial margin an instant open can spend. Shaves the raw available\n * balance for fees (both sides, charged on the leveraged notional) and — for\n * SHORT only — a worst-case slippage-fill buffer. Pure `bigint`; clamps to `0n`.\n *\n * ```text\n * available = balance\n * × max(0, 1 − slippageFactor) // SHORT: slippage, LONG: 0\n * × max(0, 1 − leverage × (openFee + closeFee))\n * ```\n *\n * A SHORT sizes quantity off `requestOpenPrice = markPrice × (1 − s)` (below\n * mark), so a worse fill inflates notional by up to `1 / (1 − s)`; capping usable\n * balance at `balance × (1 − s)` covers it. A LONG sets the request above mark,\n * so fills deflate notional and need no cap.\n *\n * @returns spendable margin in 18-decimal wei.\n * @example\n * ```ts\n * const max = calculateAvailableInstantOpenMargin({\n * balance,\n * openFee,\n * closeFee,\n * slippageFractionWei: 5n * 10n ** 16n, // 5%\n * leverage: 10,\n * positionType: PositionType.SHORT,\n * });\n * ```\n */\nexport function calculateAvailableInstantOpenMargin(parameters: CalculateAvailableInstantOpenMarginParameters): bigint {\n const { balance, openFee, closeFee, slippageFractionWei, leverage, positionType } = parameters;\n const ONE_E18 = 10n ** 18n;\n\n const slippageMultiplier =\n positionType === PositionType.SHORT\n ? slippageFractionWei >= ONE_E18\n ? 0n\n : ONE_E18 - slippageFractionWei\n : ONE_E18;\n\n const leverageScaled = BigInt(leverage) * (openFee + closeFee);\n const feeMultiplier = leverageScaled >= ONE_E18 ? 0n : ONE_E18 - leverageScaled;\n\n const afterSlippage = (balance * slippageMultiplier) / ONE_E18;\n return (afterSlippage * feeMultiplier) / ONE_E18;\n}\n"],"mappings":";;;AAMA,IAAa,IAAgC;AAO7C,SAAgB,EAAuB,GAAsB;CAE3D,QADa,KAAO,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC,KAC1C;AAChB;AA0EA,SAAgB,EACd,GACuC;CACvC,IAAM,EACJ,cACA,aACA,iBACA,cACA,eACA,aACA,mBACA,sBACA,eACA,cACA,oBACA,uBACE,GAEE,IAAe,EAAU,CAAS;CACxC,IAAI,EAAa,OAAO,KAAK,EAAa,MAAM,GAAG,OAAO;CAC1D,IAAM,IAAe,EAAU,CAAS;CACxC,IAAI,EAAa,OAAO,KAAK,EAAa,MAAM,GAAG,OAAO;CAG1D,IAAM,IAAiB,EAAU,OADV,MAAiB,EAAa,QAAQ,IAAW,CAAC,EACpB,EAAE,IAAI,GAAG,GACxD,IAAqB,EAAa,MAAM,CAAc,EAAE,QAAQ,GAAgB,EAAa,UAAU,GAEvG,IACJ,MAAe,UACX,EAAa,IAAI,CAAkB,EAAE,QAAQ,GAAmB,EAAa,UAAU,IACvF,EAAa,QAAQ,GAAmB,EAAa,UAAU,GAE/D,IAAgB,EAAU,CAAa,EAAE,MAAM,CAAkB,EAAE,SAAS,GAC5E,IAAM,EAAU,CAAa,EAAE,MAAM,EAAU,CAAU,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GAC9E,IAAK,EAAU,CAAa,EAAE,MAAM,EAAU,CAAS,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GAC5E,IAAW,EAAU,CAAa,EAAE,MAAM,EAAU,CAAe,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GACxF,IAAW,EAAU,CAAa,EAAE,MAAM,EAAU,CAAe,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;CAK9F,OAAO;EACL;EACA;EACA,UANe,EAAU,CAAa,EAAE,MAAM,CAAQ,EAAE,QAAQ,GAAmB,EAAa,UAMhG;EACA;EACA,UAPe,EAAU,CAAa,EAAE,MAAM,CAAQ,EAAE,SAOxD;EACA;EACA;EACA;EACA;CACF;AACF;AAqCA,SAAgB,EAAgB,GAA+C;CAC7E,IAAM,EACJ,iBACA,cACA,kBACA,QACA,OACA,aACA,eACA,cACA,oBACA,mBACE;CAEJ,IAAI,MAAiB,EAAa,MAChC,OAAO,EAAU,CAAG,EAAE,KAAK,CAAE,EAAE,KAAK,CAAQ,EAAE,KAAK,CAAW,EAAE,SAAS;CAG3E,IAAM,IAAc,EAAU,CAAS,GACjC,IAAsB,EAAU,CAAa,EAAE,MAAM,CAAW,EAAE,SAAS,GAC3E,IAAY,EAAU,CAAmB,EAAE,MAAM,EAAU,CAAU,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GAC1F,IAAW,EAAU,CAAmB,EAAE,MAAM,EAAU,CAAS,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GACxF,IAAiB,EAAU,CAAmB,EAAE,MAAM,EAAU,CAAe,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;CAE1G,OAAO,EAAU,CAAS,EAAE,KAAK,CAAQ,EAAE,KAAK,CAAc,EAAE,KAAK,CAAW,EAAE,SAAS;AAC7F;AAsBA,SAAgB,EACd,GACA,GACA,GACQ;CACR,IAAM,IAAO,EAAU,EAAM,QAAQ,SAAS,CAAC,EAAE,MAAM,CAAe,GAChE,IAAQ,EAAU,EAAM,SAAS,SAAS,CAAC,EAAE,MAAM,CAAa;CACtE,OAAO,EAAK,KAAK,CAAK,EAAE,IAAI,EAAU,MAAM,CAAC,EAAE,SAAS;AAC1D;AAQA,SAAgB,EAAY,GAAuB;CACjD,OAAO,OAAO,EAAW,CAAK,EAAE,QAAQ,GAAG,EAAa,UAAU,CAAC;AACrE;AAkDA,SAAgB,EAAoC,GAAmE;CACrH,IAAM,EAAE,YAAS,YAAS,aAAU,wBAAqB,aAAU,oBAAiB,GAC9E,IAAU,OAAO,KAEjB,IACJ,MAAiB,EAAa,QAC1B,KAAuB,IACrB,KACA,IAAU,IACZ,GAEA,IAAiB,OAAO,CAAQ,KAAK,IAAU,IAC/C,IAAgB,KAAkB,IAAU,KAAK,IAAU;CAGjE,OADuB,IAAU,IAAsB,IAC/B,IAAiB;AAC3C"}
@@ -1,6 +1,6 @@
1
1
  import { Address, Hex } from 'viem';
2
- import { InstantLayerAccount } from '../../../symmio-contracts/instant-layer/types';
3
- import { PositionType } from '../../../symmio-contracts/symmio/types';
2
+ import { InstantLayerAccount } from '../../../symmio-contracts/instant-layer/types.js';
3
+ import { PositionType } from '../../../symmio-contracts/symmio/types.js';
4
4
  /**
5
5
  * Re-export the canonical trade-side enum (defined in
6
6
  * `symmio-contracts/symmio/types.ts`) so the instant-open slice has one place
@@ -121,13 +121,13 @@ export interface SignedOperation {
121
121
  * Re-exports the orval-generated `Eip712SignedOperationJSON` shape; `bigint`s
122
122
  * are serialized as decimal strings to survive JSON.
123
123
  */
124
- export type { Eip712SignedOperationJSON as SignedOperationPayload } from '../../types/generated/enigma-solver';
124
+ export type { Eip712SignedOperationJSON as SignedOperationPayload } from '../../types/generated/enigma-solver.js';
125
125
  /**
126
126
  * Wire-format signed-and-signed-operation pair accepted by the hedger API.
127
127
  *
128
128
  * Re-exports the orval-generated `Eip712OperationWithSigJSON`.
129
129
  */
130
- export type { Eip712OperationWithSigJSON as InstantOperationPayload } from '../../types/generated/enigma-solver';
130
+ export type { Eip712OperationWithSigJSON as InstantOperationPayload } from '../../types/generated/enigma-solver.js';
131
131
  /**
132
132
  * Locked-margin breakdown passed to `InstantOpenParameters`.
133
133
  *
@@ -1,6 +1,6 @@
1
- import { Config } from '../../core/config';
2
- import { ChainIdParameter, Compute } from '../../shared/types/properties';
3
- import { ApiLockedParamsBySymbolIdResponse } from '../types/generated/enigma-solver';
1
+ import { Config } from '../../core/config/index.js';
2
+ import { ChainIdParameter, Compute } from '../../shared/types/properties.js';
3
+ import { ApiLockedParamsBySymbolIdResponse } from '../types/generated/enigma-solver.js';
4
4
  /**
5
5
  * Parameters for {@link getLockedParams}.
6
6
  */
@@ -1,4 +1,4 @@
1
- export type { ApiLockedParamsBySymbolIdResponse as SolverLockedParams } from '../types/generated/enigma-solver';
2
- export * from './get-locked-params';
3
- export * from './query';
1
+ export type { ApiLockedParamsBySymbolIdResponse as SolverLockedParams } from '../types/generated/enigma-solver.js';
2
+ export * from './get-locked-params.js';
3
+ export * from './query.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
- import { Config } from '../../core/config';
2
- import { Compute, ConfigKeyParameter } from '../../shared/types/properties';
3
- import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query';
4
- import { GetLockedParamsParameters, GetLockedParamsReturnType } from './get-locked-params';
1
+ import { Config } from '../../core/config/index.js';
2
+ import { Compute, ConfigKeyParameter } from '../../shared/types/properties.js';
3
+ import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query.js';
4
+ import { GetLockedParamsParameters, GetLockedParamsReturnType } from './get-locked-params.js';
5
5
  /** Data resolved by the {@link getLockedParamsQueryOptions} query. */
6
6
  export type GetLockedParamsData = GetLockedParamsReturnType;
7
7
  /**
@@ -0,0 +1,32 @@
1
+ import { Config } from '../../core/config/index.js';
2
+ import { ChainIdParameter, Compute } from '../../shared/types/properties.js';
3
+ import { GetMarketInfoReturnType } from './types.js';
4
+ /**
5
+ * Parameters for {@link getMarketInfo}.
6
+ */
7
+ export type GetMarketInfoParameters = Compute<ChainIdParameter>;
8
+ /**
9
+ * Fetch per-market 24h volume from the chain's solver `/get_market_info`
10
+ * endpoint. Returns the rolling 24-hour trading volume and cumulative lifetime
11
+ * value for every market, plus the aggregate totals across all markets. The
12
+ * solver base URL is resolved from `config` per call, so multiple chains never
13
+ * clobber each other.
14
+ *
15
+ * Amounts are surfaced as plain `number` dollar values exactly as the solver
16
+ * reports them; no decimal scaling is applied.
17
+ *
18
+ * @param config - The SDK config.
19
+ * @param parameters - Optional chain id (defaults to the config's default chain).
20
+ * @returns Normalized {@link GetMarketInfoReturnType} — per-market rows and totals.
21
+ * @throws {SymmApiError} when the API request fails.
22
+ * @throws {SymmError} when the chain is unsupported.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const info = await getMarketInfo(config);
27
+ * const btc = info.markets.find((m) => m.symbol === "BTCUSDT");
28
+ * console.log(btc?.tradingVolume, info.totalValue24h);
29
+ * ```
30
+ */
31
+ export declare function getMarketInfo(config: Config, parameters?: GetMarketInfoParameters): Promise<GetMarketInfoReturnType>;
32
+ //# sourceMappingURL=get-market-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-market-info.d.ts","sourceRoot":"","sources":["../../../src/solvers/market-info/get-market-info.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAG/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,uBAA4B,GACvC,OAAO,CAAC,uBAAuB,CAAC,CAGlC"}
@@ -0,0 +1,23 @@
1
+ import { SymmApiError as e, SymmError as t } from "../../shared/errors/symm-error.js";
2
+ import { getGetMarketInfo as n } from "../types/generated/enigma-solver.js";
3
+ import { toMarketInfo as r } from "./to-market-info.js";
4
+ import { isAxiosError as i } from "axios";
5
+ //#region src/solvers/market-info/get-market-info.ts
6
+ async function a(e, t = {}) {
7
+ let { solver: n } = e.getChainConfig(t.chainId);
8
+ return o(n.url);
9
+ }
10
+ async function o(a) {
11
+ try {
12
+ return r((await n({ baseURL: a })).data);
13
+ } catch (n) {
14
+ throw n instanceof t ? n : i(n) ? e.fromAxios(n, {
15
+ code: "FETCH_MARKET_INFO_FAILED",
16
+ baseURL: a
17
+ }) : new t("api", "FETCH_MARKET_INFO_FAILED", `Failed to fetch market info: ${n instanceof Error ? n.message : String(n)}`, { cause: n instanceof Error ? n : void 0 });
18
+ }
19
+ }
20
+ //#endregion
21
+ export { a as getMarketInfo };
22
+
23
+ //# sourceMappingURL=get-market-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-market-info.js","names":[],"sources":["../../../src/solvers/market-info/get-market-info.ts"],"sourcesContent":["import { isAxiosError } from \"axios\";\nimport type { Config } from \"../../core/config\";\nimport { SymmApiError, SymmError } from \"../../shared/errors/symm-error\";\nimport type { ChainIdParameter, Compute } from \"../../shared/types/properties\";\nimport { getGetMarketInfo } from \"../types/generated/enigma-solver\";\nimport { toMarketInfo } from \"./to-market-info\";\nimport type { GetMarketInfoReturnType } from \"./types\";\n\n/**\n * Parameters for {@link getMarketInfo}.\n */\nexport type GetMarketInfoParameters = Compute<ChainIdParameter>;\n\n/**\n * Fetch per-market 24h volume from the chain's solver `/get_market_info`\n * endpoint. Returns the rolling 24-hour trading volume and cumulative lifetime\n * value for every market, plus the aggregate totals across all markets. The\n * solver base URL is resolved from `config` per call, so multiple chains never\n * clobber each other.\n *\n * Amounts are surfaced as plain `number` dollar values exactly as the solver\n * reports them; no decimal scaling is applied.\n *\n * @param config - The SDK config.\n * @param parameters - Optional chain id (defaults to the config's default chain).\n * @returns Normalized {@link GetMarketInfoReturnType} — per-market rows and totals.\n * @throws {SymmApiError} when the API request fails.\n * @throws {SymmError} when the chain is unsupported.\n *\n * @example\n * ```ts\n * const info = await getMarketInfo(config);\n * const btc = info.markets.find((m) => m.symbol === \"BTCUSDT\");\n * console.log(btc?.tradingVolume, info.totalValue24h);\n * ```\n */\nexport async function getMarketInfo(\n config: Config,\n parameters: GetMarketInfoParameters = {},\n): Promise<GetMarketInfoReturnType> {\n const { solver } = config.getChainConfig(parameters.chainId);\n return fetchMarketInfo(solver.url);\n}\n\n/**\n * Call the solver's `/get_market_info` endpoint with a per-call base URL and map\n * the flat response into the SDK's normalized totals + per-market rows.\n *\n * @internal\n */\nasync function fetchMarketInfo(baseURL: string): Promise<GetMarketInfoReturnType> {\n try {\n const response = await getGetMarketInfo({ baseURL });\n return toMarketInfo(response.data);\n } catch (err) {\n if (err instanceof SymmError) throw err;\n\n if (isAxiosError(err)) {\n throw SymmApiError.fromAxios(err, { code: \"FETCH_MARKET_INFO_FAILED\", baseURL });\n }\n\n throw new SymmError(\n \"api\",\n \"FETCH_MARKET_INFO_FAILED\",\n `Failed to fetch market info: ${err instanceof Error ? err.message : String(err)}`,\n { cause: err instanceof Error ? err : undefined },\n );\n }\n}\n"],"mappings":";;;;;AAoCA,eAAsB,EACpB,GACA,IAAsC,CAAC,GACL;CAClC,IAAM,EAAE,cAAW,EAAO,eAAe,EAAW,OAAO;CAC3D,OAAO,EAAgB,EAAO,GAAG;AACnC;AAQA,eAAe,EAAgB,GAAmD;CAChF,IAAI;EAEF,OAAO,GAAa,MADG,EAAiB,EAAE,WAAQ,CAAC,GACtB,IAAI;CACnC,SAAS,GAAK;EAOZ,MANI,aAAe,IAAiB,IAEhC,EAAa,CAAG,IACZ,EAAa,UAAU,GAAK;GAAE,MAAM;GAA4B;EAAQ,CAAC,IAG3E,IAAI,EACR,OACA,4BACA,gCAAgC,aAAe,QAAQ,EAAI,UAAU,OAAO,CAAG,KAC/E,EAAE,OAAO,aAAe,QAAQ,IAAM,KAAA,EAAU,CAClD;CACF;AACF"}
@@ -0,0 +1,5 @@
1
+ export * from './get-market-info.js';
2
+ export * from './query.js';
3
+ export * from './to-market-info.js';
4
+ export * from './types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/solvers/market-info/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { Config } from '../../core/config/index.js';
2
+ import { Compute, ConfigKeyParameter } from '../../shared/types/properties.js';
3
+ import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query.js';
4
+ import { GetMarketInfoParameters } from './get-market-info.js';
5
+ import { GetMarketInfoReturnType } from './types.js';
6
+ /** Data resolved by the {@link getMarketInfoQueryOptions} query. */
7
+ export type GetMarketInfoData = GetMarketInfoReturnType;
8
+ /** Build the TanStack Query key for {@link getMarketInfoQueryOptions}. */
9
+ export declare function getMarketInfoQueryKey(options?: Compute<GetMarketInfoParameters & ConfigKeyParameter>): readonly ["getMarketInfo", Record<string, unknown>];
10
+ /** Query-key type produced by {@link getMarketInfoQueryKey}. */
11
+ export type GetMarketInfoQueryKey = ReturnType<typeof getMarketInfoQueryKey>;
12
+ /** Options accepted by {@link getMarketInfoQueryOptions}. */
13
+ export type GetMarketInfoOptions = Compute<GetMarketInfoParameters & QueryParameter<GetMarketInfoData, Error, GetMarketInfoData, GetMarketInfoQueryKey>>;
14
+ /** TanStack Query options returned by {@link getMarketInfoQueryOptions}. */
15
+ export type GetMarketInfoQueryOptions = SymmioQueryOptions<GetMarketInfoData, Error, GetMarketInfoData, GetMarketInfoQueryKey>;
16
+ /**
17
+ * Build TanStack Query options for {@link getMarketInfo}.
18
+ *
19
+ * @param config - The SDK config.
20
+ * @param options - Query parameters (optional `chainId`) and TanStack overrides.
21
+ * @returns Options to pass to `useQuery` / `queryClient.fetchQuery`.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * useQuery(getMarketInfoQueryOptions(config, {}));
26
+ * ```
27
+ */
28
+ export declare function getMarketInfoQueryOptions(config: Config, options?: GetMarketInfoOptions): GetMarketInfoQueryOptions;
29
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/solvers/market-info/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnF,OAAO,EAAiB,KAAK,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEvD,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AAExD,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,OAAO,CAAC,uBAAuB,GAAG,kBAAkB,CAAM,uDAExG;AAED,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE7E,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,OAAO,CACxC,uBAAuB,GAAG,cAAc,CAAC,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,CAC7G,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,CACxD,iBAAiB,EACjB,KAAK,EACL,iBAAiB,EACjB,qBAAqB,CACtB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,oBAAyB,GACjC,yBAAyB,CAU3B"}
@@ -0,0 +1,21 @@
1
+ import { filterQueryOptions as e } from "../../shared/utils/query.js";
2
+ import { getMarketInfo as t } from "./get-market-info.js";
3
+ //#region src/solvers/market-info/query.ts
4
+ function n(t = {}) {
5
+ return ["getMarketInfo", e(t)];
6
+ }
7
+ function r(e, r = {}) {
8
+ return {
9
+ ...r.query,
10
+ queryKey: n({
11
+ ...r,
12
+ configKey: e.getChainConfigKey(r.chainId)
13
+ }),
14
+ enabled: r.query?.enabled ?? !0,
15
+ queryFn: () => t(e, { chainId: r.chainId })
16
+ };
17
+ }
18
+ //#endregion
19
+ export { n as getMarketInfoQueryKey, r as getMarketInfoQueryOptions };
20
+
21
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","names":[],"sources":["../../../src/solvers/market-info/query.ts"],"sourcesContent":["import type { Config } from \"../../core/config\";\nimport type { Compute, ConfigKeyParameter } from \"../../shared/types/properties\";\nimport type { QueryParameter, SymmioQueryOptions } from \"../../shared/types/query\";\nimport { filterQueryOptions } from \"../../shared/utils/query\";\nimport { getMarketInfo, type GetMarketInfoParameters } from \"./get-market-info\";\nimport type { GetMarketInfoReturnType } from \"./types\";\n\n/** Data resolved by the {@link getMarketInfoQueryOptions} query. */\nexport type GetMarketInfoData = GetMarketInfoReturnType;\n\n/** Build the TanStack Query key for {@link getMarketInfoQueryOptions}. */\nexport function getMarketInfoQueryKey(options: Compute<GetMarketInfoParameters & ConfigKeyParameter> = {}) {\n return [\"getMarketInfo\", filterQueryOptions(options)] as const;\n}\n\n/** Query-key type produced by {@link getMarketInfoQueryKey}. */\nexport type GetMarketInfoQueryKey = ReturnType<typeof getMarketInfoQueryKey>;\n\n/** Options accepted by {@link getMarketInfoQueryOptions}. */\nexport type GetMarketInfoOptions = Compute<\n GetMarketInfoParameters & QueryParameter<GetMarketInfoData, Error, GetMarketInfoData, GetMarketInfoQueryKey>\n>;\n\n/** TanStack Query options returned by {@link getMarketInfoQueryOptions}. */\nexport type GetMarketInfoQueryOptions = SymmioQueryOptions<\n GetMarketInfoData,\n Error,\n GetMarketInfoData,\n GetMarketInfoQueryKey\n>;\n\n/**\n * Build TanStack Query options for {@link getMarketInfo}.\n *\n * @param config - The SDK config.\n * @param options - Query parameters (optional `chainId`) and TanStack overrides.\n * @returns Options to pass to `useQuery` / `queryClient.fetchQuery`.\n *\n * @example\n * ```ts\n * useQuery(getMarketInfoQueryOptions(config, {}));\n * ```\n */\nexport function getMarketInfoQueryOptions(\n config: Config,\n options: GetMarketInfoOptions = {},\n): GetMarketInfoQueryOptions {\n return {\n ...options.query,\n queryKey: getMarketInfoQueryKey({\n ...options,\n configKey: config.getChainConfigKey(options.chainId),\n }),\n enabled: options.query?.enabled ?? true,\n queryFn: () => getMarketInfo(config, { chainId: options.chainId }),\n };\n}\n"],"mappings":";;;AAWA,SAAgB,EAAsB,IAAiE,CAAC,GAAG;CACzG,OAAO,CAAC,iBAAiB,EAAmB,CAAO,CAAC;AACtD;AA8BA,SAAgB,EACd,GACA,IAAgC,CAAC,GACN;CAC3B,OAAO;EACL,GAAG,EAAQ;EACX,UAAU,EAAsB;GAC9B,GAAG;GACH,WAAW,EAAO,kBAAkB,EAAQ,OAAO;EACrD,CAAC;EACD,SAAS,EAAQ,OAAO,WAAW;EACnC,eAAe,EAAc,GAAQ,EAAE,SAAS,EAAQ,QAAQ,CAAC;CACnE;AACF"}
@@ -0,0 +1,13 @@
1
+ import { GetGetMarketInfo200 } from '../types/generated/enigma-solver.js';
2
+ import { GetMarketInfoReturnType } from './types.js';
3
+ /**
4
+ * Map the generated `GetGetMarketInfo200` bag into the SDK's
5
+ * {@link GetMarketInfoReturnType}, splitting the top-level aggregate totals from
6
+ * the per-market volume rows. Keys in {@link AGGREGATE_KEYS} become the totals;
7
+ * every other object-valued key becomes a {@link MarketVolume}. Missing numeric
8
+ * fields default to `0`.
9
+ *
10
+ * @param raw - The raw `/get_market_info` response object.
11
+ */
12
+ export declare function toMarketInfo(raw: GetGetMarketInfo200): GetMarketInfoReturnType;
13
+ //# sourceMappingURL=to-market-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-market-info.d.ts","sourceRoot":"","sources":["../../../src/solvers/market-info/to-market-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,uBAAuB,EAAgB,MAAM,SAAS,CAAC;AAoBrE;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,uBAAuB,CAiB9E"}
@@ -0,0 +1,28 @@
1
+ //#region src/solvers/market-info/to-market-info.ts
2
+ var e = new Set(["total_value_24h", "total_lifetime_value"]);
3
+ function t(e) {
4
+ if (e == null) return 0;
5
+ let t = typeof e == "number" ? e : Number(e);
6
+ return Number.isFinite(t) ? t : 0;
7
+ }
8
+ function n(n) {
9
+ let r = [];
10
+ for (let [i, a] of Object.entries(n)) {
11
+ if (e.has(i) || typeof a != "object" || !a) continue;
12
+ let n = a;
13
+ r.push({
14
+ symbol: i,
15
+ tradingVolume: t(n.trading_volume),
16
+ lifetimeValue: t(n.lifetime_value)
17
+ });
18
+ }
19
+ return {
20
+ markets: r,
21
+ totalValue24h: t(n.total_value_24h),
22
+ totalLifetimeValue: t(n.total_lifetime_value)
23
+ };
24
+ }
25
+ //#endregion
26
+ export { n as toMarketInfo };
27
+
28
+ //# sourceMappingURL=to-market-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-market-info.js","names":[],"sources":["../../../src/solvers/market-info/to-market-info.ts"],"sourcesContent":["import type { GetGetMarketInfo200 } from \"../types/generated/enigma-solver\";\nimport type { GetMarketInfoReturnType, MarketVolume } from \"./types\";\n\n/**\n * Top-level aggregate keys in the `/get_market_info` bag. Every other key is a\n * market name whose value is a `{ trading_volume, lifetime_value }` object.\n */\nconst AGGREGATE_KEYS = new Set<string>([\"total_value_24h\", \"total_lifetime_value\"]);\n\n/**\n * Coerce an optional numeric solver field to a finite `number`, defaulting to\n * `0`. The volume fields are declared as an untyped bag in the OpenAPI spec but\n * the running solver may serve them as numbers or decimal strings, so we accept\n * both and parse strings via `Number`.\n */\nfunction toNumber(value: unknown): number {\n if (value === undefined || value === null) return 0;\n const parsed = typeof value === \"number\" ? value : Number(value);\n return Number.isFinite(parsed) ? parsed : 0;\n}\n\n/**\n * Map the generated `GetGetMarketInfo200` bag into the SDK's\n * {@link GetMarketInfoReturnType}, splitting the top-level aggregate totals from\n * the per-market volume rows. Keys in {@link AGGREGATE_KEYS} become the totals;\n * every other object-valued key becomes a {@link MarketVolume}. Missing numeric\n * fields default to `0`.\n *\n * @param raw - The raw `/get_market_info` response object.\n */\nexport function toMarketInfo(raw: GetGetMarketInfo200): GetMarketInfoReturnType {\n const markets: MarketVolume[] = [];\n for (const [key, value] of Object.entries(raw)) {\n if (AGGREGATE_KEYS.has(key)) continue;\n if (typeof value !== \"object\" || value === null) continue;\n const entry = value as Record<string, unknown>;\n markets.push({\n symbol: key,\n tradingVolume: toNumber(entry.trading_volume),\n lifetimeValue: toNumber(entry.lifetime_value),\n });\n }\n return {\n markets,\n totalValue24h: toNumber(raw.total_value_24h),\n totalLifetimeValue: toNumber(raw.total_lifetime_value),\n };\n}\n"],"mappings":";AAOA,IAAM,IAAiB,IAAI,IAAY,CAAC,mBAAmB,sBAAsB,CAAC;AAQlF,SAAS,EAAS,GAAwB;CACxC,IAAI,KAAiC,MAAM,OAAO;CAClD,IAAM,IAAS,OAAO,KAAU,WAAW,IAAQ,OAAO,CAAK;CAC/D,OAAO,OAAO,SAAS,CAAM,IAAI,IAAS;AAC5C;AAWA,SAAgB,EAAa,GAAmD;CAC9E,IAAM,IAA0B,CAAC;CACjC,KAAK,IAAM,CAAC,GAAK,MAAU,OAAO,QAAQ,CAAG,GAAG;EAE9C,IADI,EAAe,IAAI,CAAG,KACtB,OAAO,KAAU,aAAY,GAAgB;EACjD,IAAM,IAAQ;EACd,EAAQ,KAAK;GACX,QAAQ;GACR,eAAe,EAAS,EAAM,cAAc;GAC5C,eAAe,EAAS,EAAM,cAAc;EAC9C,CAAC;CACH;CACA,OAAO;EACL;EACA,eAAe,EAAS,EAAI,eAAe;EAC3C,oBAAoB,EAAS,EAAI,oBAAoB;CACvD;AACF"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * 24h volume figures for one solver market, normalized from the generated
3
+ * `/get_market_info` response.
4
+ *
5
+ * Every numeric field is a plain JavaScript `number` in the **dollar units the
6
+ * solver already reports** — no decimal scaling. `1234` here means $1,234.
7
+ */
8
+ export interface MarketVolume {
9
+ /** Market ticker and solver map key (e.g. `"BTCUSDT"`). */
10
+ symbol: string;
11
+ /** Rolling 24-hour trading volume for the market (dollars). */
12
+ tradingVolume: number;
13
+ /** Cumulative lifetime traded value for the market (dollars). */
14
+ lifetimeValue: number;
15
+ }
16
+ /**
17
+ * Return type of {@link getMarketInfo}: aggregate totals plus one
18
+ * {@link MarketVolume} row per market.
19
+ *
20
+ * The solver serves per-market entries and the top-level aggregates in a single
21
+ * flat object; the SDK splits them so the per-market rows and the totals are
22
+ * addressable independently.
23
+ */
24
+ export interface GetMarketInfoReturnType {
25
+ /** Per-market volume rows, keyed out of the flat solver object. */
26
+ markets: MarketVolume[];
27
+ /** Σ 24-hour traded value across every market (dollars). */
28
+ totalValue24h: number;
29
+ /** Σ lifetime traded value across every market (dollars). */
30
+ totalLifetimeValue: number;
31
+ }
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/solvers/market-info/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
@@ -1,6 +1,6 @@
1
- import { Config } from '../../core/config';
2
- import { ChainIdParameter, Compute } from '../../shared/types/properties';
3
- import { SymbolContractSymbol } from '../types/generated/enigma-solver';
1
+ import { Config } from '../../core/config/index.js';
2
+ import { ChainIdParameter, Compute } from '../../shared/types/properties.js';
3
+ import { SymbolContractSymbol } from '../types/generated/enigma-solver.js';
4
4
  /**
5
5
  * Parameters for {@link getMarkets}.
6
6
  */
@@ -1,4 +1,4 @@
1
- export type { SymbolContractSymbol } from '../types/generated/enigma-solver';
2
- export * from './get-markets';
3
- export * from './query';
1
+ export type { SymbolContractSymbol } from '../types/generated/enigma-solver.js';
2
+ export * from './get-markets.js';
3
+ export * from './query.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
- import { Config } from '../../core/config';
2
- import { Compute, ConfigKeyParameter } from '../../shared/types/properties';
3
- import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query';
4
- import { GetMarketsParameters, GetMarketsReturnType } from './get-markets';
1
+ import { Config } from '../../core/config/index.js';
2
+ import { Compute, ConfigKeyParameter } from '../../shared/types/properties.js';
3
+ import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query.js';
4
+ import { GetMarketsParameters, GetMarketsReturnType } from './get-markets.js';
5
5
  /** Data resolved by the {@link getMarketsQueryOptions} query. */
6
6
  export type GetMarketsData = GetMarketsReturnType;
7
7
  /**
@@ -1,5 +1,5 @@
1
- import { PositionType } from '../../symmio-contracts/symmio/types';
2
- import { MarketNotionalCap } from './types';
1
+ import { PositionType } from '../../symmio-contracts/symmio/types.js';
2
+ import { MarketNotionalCap } from './types.js';
3
3
  /**
4
4
  * Inputs to {@link checkNotionalCap}. `notional` is a decimal-string dollar
5
5
  * value (e.g. `"125.5"`), matching the `markPrice × quantity` shape used by
@@ -1,6 +1,6 @@
1
- import { Config } from '../../core/config';
2
- import { ChainIdParameter, Compute } from '../../shared/types/properties';
3
- import { MarketNotionalCap } from './types';
1
+ import { Config } from '../../core/config/index.js';
2
+ import { ChainIdParameter, Compute } from '../../shared/types/properties.js';
3
+ import { MarketNotionalCap } from './types.js';
4
4
  /**
5
5
  * Parameters for {@link getNotionalCapAll}.
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"get-notional-cap-all.d.ts","sourceRoot":"","sources":["../../../src/solvers/notional-cap/get-notional-cap-all.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAG/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEpE,oFAAoF;AACpF,MAAM,WAAW,2BAA2B;IAC1C,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AASD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,2BAAgC,GAC3C,OAAO,CAAC,2BAA2B,CAAC,CAwBtC"}
1
+ {"version":3,"file":"get-notional-cap-all.d.ts","sourceRoot":"","sources":["../../../src/solvers/notional-cap/get-notional-cap-all.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAG/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEpE,oFAAoF;AACpF,MAAM,WAAW,2BAA2B;IAC1C,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,2BAAgC,GAC3C,OAAO,CAAC,2BAA2B,CAAC,CAwBtC"}
@@ -2,12 +2,8 @@ import { SymmApiError as e, SymmError as t } from "../../shared/errors/symm-erro
2
2
  import { getNotionalCap as n } from "../types/generated/enigma-solver.js";
3
3
  import { toMarketNotionalCap as r } from "./to-market-notional-cap.js";
4
4
  import { isAxiosError as i } from "axios";
5
+ import { toFiniteNumber as a } from "@symmio/utils/number";
5
6
  //#region src/solvers/notional-cap/get-notional-cap-all.ts
6
- function a(e) {
7
- if (e == null) return 0;
8
- let t = typeof e == "number" ? e : Number(e);
9
- return Number.isFinite(t) ? t : 0;
10
- }
11
7
  async function o(o, s = {}) {
12
8
  let { solver: c } = o.getChainConfig(s.chainId);
13
9
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"get-notional-cap-all.js","names":[],"sources":["../../../src/solvers/notional-cap/get-notional-cap-all.ts"],"sourcesContent":["import { isAxiosError } from \"axios\";\nimport type { Config } from \"../../core/config\";\nimport { SymmApiError, SymmError } from \"../../shared/errors/symm-error\";\nimport type { ChainIdParameter, Compute } from \"../../shared/types/properties\";\nimport { getNotionalCap } from \"../types/generated/enigma-solver\";\nimport { toMarketNotionalCap } from \"./to-market-notional-cap\";\nimport type { MarketNotionalCap } from \"./types\";\n\n/**\n * Parameters for {@link getNotionalCapAll}.\n */\nexport type GetNotionalCapAllParameters = Compute<ChainIdParameter>;\n\n/** Return type of {@link getNotionalCapAll}: aggregate totals + per-symbol rows. */\nexport interface GetNotionalCapAllReturnType {\n /** Number of symbols the solver returned. */\n count: number;\n /** Σ `openInterest` across every market (dollars). */\n totalOpenInterest: number;\n /** Σ `used` across every market (dollars). */\n totalUsed: number;\n /** Per-symbol rows, decoded with the same mapper as {@link getNotionalCapBySymbolId}. */\n symbols: MarketNotionalCap[];\n}\n\n/** Coerce an optional numeric solver field (declared `number` but served as string) to `number`. */\nfunction toNumber(value: number | string | undefined | null): number {\n if (value === undefined || value === null) return 0;\n const parsed = typeof value === \"number\" ? value : Number(value);\n return Number.isFinite(parsed) ? parsed : 0;\n}\n\n/**\n * Fetch every market's notional cap in one call (`/notional_cap`). Surfaces the\n * aggregate `totalOpenInterest` / `totalUsed` and the per-symbol rows decoded\n * via {@link toMarketNotionalCap} — the same mapper the single-symbol read uses.\n *\n * Dollar amounts are returned as plain `number` values exactly as the solver\n * reports them; no decimal scaling. HTTP / transport failures throw\n * {@link SymmApiError}.\n *\n * @example\n * ```ts\n * const all = await getNotionalCapAll(config, {});\n * console.log(all.totalOpenInterest, all.symbols.length);\n * ```\n */\nexport async function getNotionalCapAll(\n config: Config,\n parameters: GetNotionalCapAllParameters = {},\n): Promise<GetNotionalCapAllReturnType> {\n const { solver } = config.getChainConfig(parameters.chainId);\n try {\n const response = await getNotionalCap(undefined, { baseURL: solver.url });\n const r = response.data as Record<string, unknown>;\n const rawSymbols = Array.isArray(r.symbols) ? (r.symbols as Parameters<typeof toMarketNotionalCap>[0][]) : [];\n return {\n count: toNumber(r.count as number | string | undefined),\n totalOpenInterest: toNumber(r.total_open_interest as number | string | undefined),\n totalUsed: toNumber(r.total_used as number | string | undefined),\n symbols: rawSymbols.map(toMarketNotionalCap),\n };\n } catch (err) {\n if (err instanceof SymmError) throw err;\n if (isAxiosError(err)) {\n throw SymmApiError.fromAxios(err, { code: \"FETCH_NOTIONAL_CAP_ALL_FAILED\", baseURL: solver.url });\n }\n throw new SymmError(\n \"api\",\n \"FETCH_NOTIONAL_CAP_ALL_FAILED\",\n `Failed to fetch notional caps: ${err instanceof Error ? err.message : String(err)}`,\n { cause: err instanceof Error ? err : undefined },\n );\n }\n}\n"],"mappings":";;;;;AA0BA,SAAS,EAAS,GAAmD;CACnE,IAAI,KAAiC,MAAM,OAAO;CAClD,IAAM,IAAS,OAAO,KAAU,WAAW,IAAQ,OAAO,CAAK;CAC/D,OAAO,OAAO,SAAS,CAAM,IAAI,IAAS;AAC5C;AAiBA,eAAsB,EACpB,GACA,IAA0C,CAAC,GACL;CACtC,IAAM,EAAE,cAAW,EAAO,eAAe,EAAW,OAAO;CAC3D,IAAI;EAEF,IAAM,KAAI,MADa,EAAe,KAAA,GAAW,EAAE,SAAS,EAAO,IAAI,CAAC,GACrD,MACb,IAAa,MAAM,QAAQ,EAAE,OAAO,IAAK,EAAE,UAA0D,CAAC;EAC5G,OAAO;GACL,OAAO,EAAS,EAAE,KAAoC;GACtD,mBAAmB,EAAS,EAAE,mBAAkD;GAChF,WAAW,EAAS,EAAE,UAAyC;GAC/D,SAAS,EAAW,IAAI,CAAmB;EAC7C;CACF,SAAS,GAAK;EAKZ,MAJI,aAAe,IAAiB,IAChC,EAAa,CAAG,IACZ,EAAa,UAAU,GAAK;GAAE,MAAM;GAAiC,SAAS,EAAO;EAAI,CAAC,IAE5F,IAAI,EACR,OACA,iCACA,kCAAkC,aAAe,QAAQ,EAAI,UAAU,OAAO,CAAG,KACjF,EAAE,OAAO,aAAe,QAAQ,IAAM,KAAA,EAAU,CAClD;CACF;AACF"}
1
+ {"version":3,"file":"get-notional-cap-all.js","names":[],"sources":["../../../src/solvers/notional-cap/get-notional-cap-all.ts"],"sourcesContent":["import { toFiniteNumber } from \"@symmio/utils/number\";\nimport { isAxiosError } from \"axios\";\nimport type { Config } from \"../../core/config\";\nimport { SymmApiError, SymmError } from \"../../shared/errors/symm-error\";\nimport type { ChainIdParameter, Compute } from \"../../shared/types/properties\";\nimport { getNotionalCap } from \"../types/generated/enigma-solver\";\nimport { toMarketNotionalCap } from \"./to-market-notional-cap\";\nimport type { MarketNotionalCap } from \"./types\";\n\n/**\n * Parameters for {@link getNotionalCapAll}.\n */\nexport type GetNotionalCapAllParameters = Compute<ChainIdParameter>;\n\n/** Return type of {@link getNotionalCapAll}: aggregate totals + per-symbol rows. */\nexport interface GetNotionalCapAllReturnType {\n /** Number of symbols the solver returned. */\n count: number;\n /** Σ `openInterest` across every market (dollars). */\n totalOpenInterest: number;\n /** Σ `used` across every market (dollars). */\n totalUsed: number;\n /** Per-symbol rows, decoded with the same mapper as {@link getNotionalCapBySymbolId}. */\n symbols: MarketNotionalCap[];\n}\n\n/**\n * Fetch every market's notional cap in one call (`/notional_cap`). Surfaces the\n * aggregate `totalOpenInterest` / `totalUsed` and the per-symbol rows decoded\n * via {@link toMarketNotionalCap} — the same mapper the single-symbol read uses.\n *\n * Dollar amounts are returned as plain `number` values exactly as the solver\n * reports them; no decimal scaling. HTTP / transport failures throw\n * {@link SymmApiError}.\n *\n * @example\n * ```ts\n * const all = await getNotionalCapAll(config, {});\n * console.log(all.totalOpenInterest, all.symbols.length);\n * ```\n */\nexport async function getNotionalCapAll(\n config: Config,\n parameters: GetNotionalCapAllParameters = {},\n): Promise<GetNotionalCapAllReturnType> {\n const { solver } = config.getChainConfig(parameters.chainId);\n try {\n const response = await getNotionalCap(undefined, { baseURL: solver.url });\n const r = response.data as Record<string, unknown>;\n const rawSymbols = Array.isArray(r.symbols) ? (r.symbols as Parameters<typeof toMarketNotionalCap>[0][]) : [];\n return {\n count: toFiniteNumber(r.count as number | string | undefined),\n totalOpenInterest: toFiniteNumber(r.total_open_interest as number | string | undefined),\n totalUsed: toFiniteNumber(r.total_used as number | string | undefined),\n symbols: rawSymbols.map(toMarketNotionalCap),\n };\n } catch (err) {\n if (err instanceof SymmError) throw err;\n if (isAxiosError(err)) {\n throw SymmApiError.fromAxios(err, { code: \"FETCH_NOTIONAL_CAP_ALL_FAILED\", baseURL: solver.url });\n }\n throw new SymmError(\n \"api\",\n \"FETCH_NOTIONAL_CAP_ALL_FAILED\",\n `Failed to fetch notional caps: ${err instanceof Error ? err.message : String(err)}`,\n { cause: err instanceof Error ? err : undefined },\n );\n }\n}\n"],"mappings":";;;;;;AAyCA,eAAsB,EACpB,GACA,IAA0C,CAAC,GACL;CACtC,IAAM,EAAE,cAAW,EAAO,eAAe,EAAW,OAAO;CAC3D,IAAI;EAEF,IAAM,KAAI,MADa,EAAe,KAAA,GAAW,EAAE,SAAS,EAAO,IAAI,CAAC,GACrD,MACb,IAAa,MAAM,QAAQ,EAAE,OAAO,IAAK,EAAE,UAA0D,CAAC;EAC5G,OAAO;GACL,OAAO,EAAe,EAAE,KAAoC;GAC5D,mBAAmB,EAAe,EAAE,mBAAkD;GACtF,WAAW,EAAe,EAAE,UAAyC;GACrE,SAAS,EAAW,IAAI,CAAmB;EAC7C;CACF,SAAS,GAAK;EAKZ,MAJI,aAAe,IAAiB,IAChC,EAAa,CAAG,IACZ,EAAa,UAAU,GAAK;GAAE,MAAM;GAAiC,SAAS,EAAO;EAAI,CAAC,IAE5F,IAAI,EACR,OACA,iCACA,kCAAkC,aAAe,QAAQ,EAAI,UAAU,OAAO,CAAG,KACjF,EAAE,OAAO,aAAe,QAAQ,IAAM,KAAA,EAAU,CAClD;CACF;AACF"}
@@ -1,6 +1,6 @@
1
- import { Config } from '../../core/config';
2
- import { ChainIdParameter, Compute } from '../../shared/types/properties';
3
- import { MarketNotionalCap } from './types';
1
+ import { Config } from '../../core/config/index.js';
2
+ import { ChainIdParameter, Compute } from '../../shared/types/properties.js';
3
+ import { MarketNotionalCap } from './types.js';
4
4
  /**
5
5
  * Parameters for {@link getNotionalCapBySymbolId}.
6
6
  */
@@ -1,5 +1,5 @@
1
- import { Config } from '../../core/config';
2
- import { ChainIdParameter, Compute } from '../../shared/types/properties';
1
+ import { Config } from '../../core/config/index.js';
2
+ import { ChainIdParameter, Compute } from '../../shared/types/properties.js';
3
3
  /**
4
4
  * Parameters for {@link getOpenInterestBySymbolId}.
5
5
  */
@@ -1,10 +1,10 @@
1
- export * from './check-notional-cap';
2
- export * from './get-notional-cap-all';
3
- export * from './get-notional-cap-by-symbol-id';
4
- export * from './get-open-interest-by-symbol-id';
5
- export * from './query';
6
- export * from './query-all';
7
- export * from './query-open-interest';
8
- export * from './to-market-notional-cap';
9
- export * from './types';
1
+ export * from './check-notional-cap.js';
2
+ export * from './get-notional-cap-all.js';
3
+ export * from './get-notional-cap-by-symbol-id.js';
4
+ export * from './get-open-interest-by-symbol-id.js';
5
+ export * from './query.js';
6
+ export * from './query-all.js';
7
+ export * from './query-open-interest.js';
8
+ export * from './to-market-notional-cap.js';
9
+ export * from './types.js';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
- import { Config } from '../../core/config';
2
- import { Compute, ConfigKeyParameter } from '../../shared/types/properties';
3
- import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query';
4
- import { GetNotionalCapAllParameters, GetNotionalCapAllReturnType } from './get-notional-cap-all';
1
+ import { Config } from '../../core/config/index.js';
2
+ import { Compute, ConfigKeyParameter } from '../../shared/types/properties.js';
3
+ import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query.js';
4
+ import { GetNotionalCapAllParameters, GetNotionalCapAllReturnType } from './get-notional-cap-all.js';
5
5
  /** Data resolved by the {@link getNotionalCapAllQueryOptions} query. */
6
6
  export type GetNotionalCapAllData = GetNotionalCapAllReturnType;
7
7
  /** Build the TanStack Query key for {@link getNotionalCapAllQueryOptions}. */
@@ -1,7 +1,7 @@
1
- import { Config } from '../../core/config';
2
- import { Compute, ConfigKeyParameter } from '../../shared/types/properties';
3
- import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query';
4
- import { GetOpenInterestBySymbolIdParameters, GetOpenInterestBySymbolIdReturnType } from './get-open-interest-by-symbol-id';
1
+ import { Config } from '../../core/config/index.js';
2
+ import { Compute, ConfigKeyParameter } from '../../shared/types/properties.js';
3
+ import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query.js';
4
+ import { GetOpenInterestBySymbolIdParameters, GetOpenInterestBySymbolIdReturnType } from './get-open-interest-by-symbol-id.js';
5
5
  /** Data resolved by the {@link getOpenInterestBySymbolIdQueryOptions} query. */
6
6
  export type GetOpenInterestBySymbolIdData = GetOpenInterestBySymbolIdReturnType;
7
7
  /** Build the TanStack Query key for {@link getOpenInterestBySymbolIdQueryOptions}. */
@@ -1,7 +1,7 @@
1
- import { Config } from '../../core/config';
2
- import { Compute, ConfigKeyParameter } from '../../shared/types/properties';
3
- import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query';
4
- import { GetNotionalCapBySymbolIdParameters, GetNotionalCapBySymbolIdReturnType } from './get-notional-cap-by-symbol-id';
1
+ import { Config } from '../../core/config/index.js';
2
+ import { Compute, ConfigKeyParameter } from '../../shared/types/properties.js';
3
+ import { QueryParameter, SymmioQueryOptions } from '../../shared/types/query.js';
4
+ import { GetNotionalCapBySymbolIdParameters, GetNotionalCapBySymbolIdReturnType } from './get-notional-cap-by-symbol-id.js';
5
5
  /** Data resolved by the {@link getNotionalCapBySymbolIdQueryOptions} query. */
6
6
  export type GetNotionalCapBySymbolIdData = GetNotionalCapBySymbolIdReturnType;
7
7
  /**
@@ -1,5 +1,5 @@
1
- import { ApiNotionalCapBySymbolResponse } from '../types/generated/enigma-solver';
2
- import { MarketNotionalCap } from './types';
1
+ import { ApiNotionalCapBySymbolResponse } from '../types/generated/enigma-solver.js';
2
+ import { MarketNotionalCap } from './types.js';
3
3
  /**
4
4
  * Map the generated `ApiNotionalCapBySymbolResponse` into the SDK's
5
5
  * {@link MarketNotionalCap}. Missing numeric fields default to `0`; the
@@ -1 +1 @@
1
- {"version":3,"file":"to-market-notional-cap.d.ts","sourceRoot":"","sources":["../../../src/solvers/notional-cap/to-market-notional-cap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAcjD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,8BAA8B,GAAG,iBAAiB,CAe1F"}
1
+ {"version":3,"file":"to-market-notional-cap.d.ts","sourceRoot":"","sources":["../../../src/solvers/notional-cap/to-market-notional-cap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,8BAA8B,GAAG,iBAAiB,CAe1F"}
@@ -1,9 +1,5 @@
1
+ import { toFiniteNumber as e } from "@symmio/utils/number";
1
2
  //#region src/solvers/notional-cap/to-market-notional-cap.ts
2
- function e(e) {
3
- if (e == null) return 0;
4
- let t = typeof e == "number" ? e : Number(e);
5
- return Number.isFinite(t) ? t : 0;
6
- }
7
3
  function t(t) {
8
4
  let n = t;
9
5
  return {