@agg-build/ui 4.26.0 → 4.27.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 (552) hide show
  1. package/dist/event-trading-state.utils-B3my25Re.mjs +789 -0
  2. package/dist/event-trading-state.utils-s4DEc4iA.js +921 -0
  3. package/dist/events.js +23 -17650
  4. package/dist/events.mjs +3 -50
  5. package/dist/index.js +811 -47144
  6. package/dist/index.mjs +584 -1204
  7. package/dist/list-D8v2SmY1.js +6989 -0
  8. package/dist/list-DD7roCVl.mjs +6838 -0
  9. package/dist/manage-betdex-account-modal-21ZVLsz0.js +2390 -0
  10. package/dist/manage-betdex-account-modal-D2vKHird.mjs +2294 -0
  11. package/dist/modals-BReGwJzz.mjs +2993 -0
  12. package/dist/modals-CSexQO1C.js +3077 -0
  13. package/dist/modals.js +24 -11810
  14. package/dist/modals.mjs +3 -49
  15. package/dist/pages-CMlCYngA.mjs +7846 -0
  16. package/dist/pages-xvAzj6c2.js +7955 -0
  17. package/dist/pages.js +25 -42383
  18. package/dist/pages.mjs +3 -57
  19. package/dist/primitives-CqxNeV7H.js +9930 -0
  20. package/dist/primitives-Dz5aF8ma.mjs +8928 -0
  21. package/dist/primitives.js +102 -11079
  22. package/dist/primitives.mjs +1 -204
  23. package/dist/trading-CDkNdjGx.mjs +7086 -0
  24. package/dist/trading-CXsZFd3l.js +7217 -0
  25. package/dist/trading.js +39 -18215
  26. package/dist/trading.mjs +3 -68
  27. package/dist/types/agg-provider.d.mts +1 -1
  28. package/dist/types/agg-provider.d.ts +1 -1
  29. package/dist/types/auth/connect-button-view/index.d.mts +4 -5
  30. package/dist/types/auth/connect-button-view/index.d.ts +4 -5
  31. package/dist/types/deposit/components/DepositQRCode.d.mts +2 -2
  32. package/dist/types/deposit/components/DepositQRCode.d.ts +2 -2
  33. package/dist/types/deposit/index.d.mts +4 -4
  34. package/dist/types/deposit/index.d.ts +4 -4
  35. package/dist/types/deposit/steps/card-deposit.d.mts +1 -1
  36. package/dist/types/deposit/steps/card-deposit.d.ts +1 -1
  37. package/dist/types/deposit/steps/card-payment-pending.d.mts +1 -1
  38. package/dist/types/deposit/steps/card-payment-pending.d.ts +1 -1
  39. package/dist/types/deposit/steps/card-provider.d.mts +1 -1
  40. package/dist/types/deposit/steps/card-provider.d.ts +1 -1
  41. package/dist/types/deposit/steps/card-purchase-success.d.mts +1 -1
  42. package/dist/types/deposit/steps/card-purchase-success.d.ts +1 -1
  43. package/dist/types/deposit/steps/card-widget.d.mts +1 -1
  44. package/dist/types/deposit/steps/card-widget.d.ts +1 -1
  45. package/dist/types/deposit/steps/crypto-transfer.d.mts +1 -1
  46. package/dist/types/deposit/steps/crypto-transfer.d.ts +1 -1
  47. package/dist/types/deposit/steps/deposit-method.d.mts +2 -1
  48. package/dist/types/deposit/steps/deposit-method.d.ts +2 -1
  49. package/dist/types/deposit/steps/venue-selection.d.mts +1 -1
  50. package/dist/types/deposit/steps/venue-selection.d.ts +1 -1
  51. package/dist/types/deposit/steps/wallet-form.d.mts +1 -1
  52. package/dist/types/deposit/steps/wallet-form.d.ts +1 -1
  53. package/dist/types/deposit/steps/wallet-processing.d.mts +1 -1
  54. package/dist/types/deposit/steps/wallet-processing.d.ts +1 -1
  55. package/dist/types/deposit/steps/wallet-success.d.mts +1 -1
  56. package/dist/types/deposit/steps/wallet-success.d.ts +1 -1
  57. package/dist/types/events/item/event-list-item.utils.d.mts +1 -1
  58. package/dist/types/events/item/event-list-item.utils.d.ts +1 -1
  59. package/dist/types/events/item/index.d.mts +8 -8
  60. package/dist/types/events/item/index.d.ts +8 -8
  61. package/dist/types/events/item-details/event-list-item-details-market-selector.d.mts +1 -1
  62. package/dist/types/events/item-details/event-list-item-details-market-selector.d.ts +1 -1
  63. package/dist/types/events/item-details/event-markets-chart.d.mts +1 -1
  64. package/dist/types/events/item-details/event-markets-chart.d.ts +1 -1
  65. package/dist/types/events/item-details/event-markets-chart.utils.d.mts +1 -1
  66. package/dist/types/events/item-details/event-markets-chart.utils.d.ts +1 -1
  67. package/dist/types/events/item-details/index.d.mts +4 -4
  68. package/dist/types/events/item-details/index.d.ts +4 -4
  69. package/dist/types/events/item-details/settlement-summary.d.mts +4 -4
  70. package/dist/types/events/item-details/settlement-summary.d.ts +4 -4
  71. package/dist/types/events/list/category-sidebar.d.mts +4 -4
  72. package/dist/types/events/list/category-sidebar.d.ts +4 -4
  73. package/dist/types/events/list/event-list-tabs.d.mts +4 -8
  74. package/dist/types/events/list/event-list-tabs.d.ts +4 -8
  75. package/dist/types/events/list/event-list-venue-strip.d.mts +4 -11
  76. package/dist/types/events/list/event-list-venue-strip.d.ts +4 -11
  77. package/dist/types/events/list/index.d.mts +4 -4
  78. package/dist/types/events/list/index.d.ts +4 -4
  79. package/dist/types/events/market-details/index.d.mts +8 -8
  80. package/dist/types/events/market-details/index.d.ts +8 -8
  81. package/dist/types/events/market-details/market-details-graph-panel.d.mts +4 -14
  82. package/dist/types/events/market-details/market-details-graph-panel.d.ts +4 -14
  83. package/dist/types/events/market-details/market-details-outcome-button.d.mts +4 -4
  84. package/dist/types/events/market-details/market-details-outcome-button.d.ts +4 -4
  85. package/dist/types/events/market-details/orderbook-aggregation.d.mts +3 -1
  86. package/dist/types/events/market-details/orderbook-aggregation.d.ts +3 -1
  87. package/dist/types/events/market-details/use-visible-market-streams.d.mts +1 -1
  88. package/dist/types/events/market-details/use-visible-market-streams.d.ts +1 -1
  89. package/dist/types/events/orderbook/index.d.mts +4 -4
  90. package/dist/types/events/orderbook/index.d.ts +4 -4
  91. package/dist/types/events/orderbook/orderbook-with-states.d.mts +4 -4
  92. package/dist/types/events/orderbook/orderbook-with-states.d.ts +4 -4
  93. package/dist/types/events/shared/chart-source-caption.d.mts +1 -1
  94. package/dist/types/events/shared/chart-source-caption.d.ts +1 -1
  95. package/dist/types/events/shared/sports-live-score.d.mts +4 -4
  96. package/dist/types/events/shared/sports-live-score.d.ts +4 -4
  97. package/dist/types/events/shared/use-chart-orderbook.d.mts +3 -3
  98. package/dist/types/events/shared/use-chart-orderbook.d.ts +3 -3
  99. package/dist/types/geo-block-banner/index.d.mts +4 -4
  100. package/dist/types/geo-block-banner/index.d.ts +4 -4
  101. package/dist/types/geo-block-modal/index.d.mts +4 -4
  102. package/dist/types/geo-block-modal/index.d.ts +4 -4
  103. package/dist/types/kyc/shared-kyc-modal.d.mts +4 -4
  104. package/dist/types/kyc/shared-kyc-modal.d.ts +4 -4
  105. package/dist/types/notifications/agg-notification-events-provider.d.mts +1 -1
  106. package/dist/types/notifications/agg-notification-events-provider.d.ts +1 -1
  107. package/dist/types/notifications/agg-toast-provider.d.mts +1 -1
  108. package/dist/types/notifications/agg-toast-provider.d.ts +1 -1
  109. package/dist/types/onboarding/index.d.mts +4 -4
  110. package/dist/types/onboarding/index.d.ts +4 -4
  111. package/dist/types/onboarding/steps/connect-accounts.d.mts +4 -4
  112. package/dist/types/onboarding/steps/connect-accounts.d.ts +4 -4
  113. package/dist/types/onboarding/steps/connect-kalshi-modal.d.mts +4 -4
  114. package/dist/types/onboarding/steps/connect-kalshi-modal.d.ts +4 -4
  115. package/dist/types/onboarding/steps/connect-novig-modal.d.mts +1 -1
  116. package/dist/types/onboarding/steps/connect-novig-modal.d.ts +1 -1
  117. package/dist/types/onboarding/steps/connect-onchain-modal.d.mts +4 -4
  118. package/dist/types/onboarding/steps/connect-onchain-modal.d.ts +4 -4
  119. package/dist/types/onboarding/steps/connect-prophetx-modal.d.mts +1 -1
  120. package/dist/types/onboarding/steps/connect-prophetx-modal.d.ts +1 -1
  121. package/dist/types/onboarding/steps/how-it-works.d.mts +4 -4
  122. package/dist/types/onboarding/steps/how-it-works.d.ts +4 -4
  123. package/dist/types/onboarding/steps/profile-setup.d.mts +4 -4
  124. package/dist/types/onboarding/steps/profile-setup.d.ts +4 -4
  125. package/dist/types/pages/event-market/event-market.shared.d.mts +4 -4
  126. package/dist/types/pages/event-market/event-market.shared.d.ts +4 -4
  127. package/dist/types/pages/event-market/event-market.types.d.mts +2 -0
  128. package/dist/types/pages/event-market/event-market.types.d.ts +2 -0
  129. package/dist/types/pages/event-market/event-open-orders.d.mts +8 -27
  130. package/dist/types/pages/event-market/event-open-orders.d.ts +8 -27
  131. package/dist/types/pages/event-market/index.d.mts +6 -6
  132. package/dist/types/pages/event-market/index.d.ts +6 -6
  133. package/dist/types/pages/event-market/sports-event-market-page.d.mts +6 -6
  134. package/dist/types/pages/event-market/sports-event-market-page.d.ts +6 -6
  135. package/dist/types/pages/event-market/sports-line-rail.d.mts +2 -1
  136. package/dist/types/pages/event-market/sports-line-rail.d.ts +2 -1
  137. package/dist/types/pages/event-market/sports-market-card.d.mts +4 -4
  138. package/dist/types/pages/event-market/sports-market-card.d.ts +4 -4
  139. package/dist/types/pages/event-market/sports-markets.d.mts +4 -4
  140. package/dist/types/pages/event-market/sports-markets.d.ts +4 -4
  141. package/dist/types/pages/home/index.d.mts +6 -6
  142. package/dist/types/pages/home/index.d.ts +6 -6
  143. package/dist/types/pages/leaderboard/components/leaderboard-header-row.d.mts +1 -1
  144. package/dist/types/pages/leaderboard/components/leaderboard-header-row.d.ts +1 -1
  145. package/dist/types/pages/leaderboard/components/leaderboard-row.d.mts +1 -1
  146. package/dist/types/pages/leaderboard/components/leaderboard-row.d.ts +1 -1
  147. package/dist/types/pages/leaderboard/components/leaderboard-skeleton.d.mts +1 -1
  148. package/dist/types/pages/leaderboard/components/leaderboard-skeleton.d.ts +1 -1
  149. package/dist/types/pages/leaderboard/components/segmented-control.d.mts +1 -1
  150. package/dist/types/pages/leaderboard/components/segmented-control.d.ts +1 -1
  151. package/dist/types/pages/leaderboard/index.d.mts +1 -1
  152. package/dist/types/pages/leaderboard/index.d.ts +1 -1
  153. package/dist/types/pages/user-profile/components/activity-row.d.mts +4 -4
  154. package/dist/types/pages/user-profile/components/activity-row.d.ts +4 -4
  155. package/dist/types/pages/user-profile/components/available-balance-card.d.mts +4 -4
  156. package/dist/types/pages/user-profile/components/available-balance-card.d.ts +4 -4
  157. package/dist/types/pages/user-profile/components/balance-display.d.mts +4 -4
  158. package/dist/types/pages/user-profile/components/balance-display.d.ts +4 -4
  159. package/dist/types/pages/user-profile/components/balances-card.d.mts +4 -4
  160. package/dist/types/pages/user-profile/components/balances-card.d.ts +4 -4
  161. package/dist/types/pages/user-profile/components/betdex-account-activity.d.mts +1 -1
  162. package/dist/types/pages/user-profile/components/betdex-account-activity.d.ts +1 -1
  163. package/dist/types/pages/user-profile/components/betdex-account-card.d.mts +1 -1
  164. package/dist/types/pages/user-profile/components/betdex-account-card.d.ts +1 -1
  165. package/dist/types/pages/user-profile/components/betdex-account-transfers.d.mts +1 -1
  166. package/dist/types/pages/user-profile/components/betdex-account-transfers.d.ts +1 -1
  167. package/dist/types/pages/user-profile/components/betdex-wallet-deposit.d.mts +1 -1
  168. package/dist/types/pages/user-profile/components/betdex-wallet-deposit.d.ts +1 -1
  169. package/dist/types/pages/user-profile/components/claim-activity-breakdown-modal.d.mts +1 -1
  170. package/dist/types/pages/user-profile/components/claim-activity-breakdown-modal.d.ts +1 -1
  171. package/dist/types/pages/user-profile/components/empty-state.d.mts +4 -4
  172. package/dist/types/pages/user-profile/components/empty-state.d.ts +4 -4
  173. package/dist/types/pages/user-profile/components/manage-balances-modal.d.mts +4 -4
  174. package/dist/types/pages/user-profile/components/manage-balances-modal.d.ts +4 -4
  175. package/dist/types/pages/user-profile/components/open-order-row.d.mts +4 -4
  176. package/dist/types/pages/user-profile/components/open-order-row.d.ts +4 -4
  177. package/dist/types/pages/user-profile/components/position-row.d.mts +4 -4
  178. package/dist/types/pages/user-profile/components/position-row.d.ts +4 -4
  179. package/dist/types/pages/user-profile/components/positions-activity.d.mts +4 -4
  180. package/dist/types/pages/user-profile/components/positions-activity.d.ts +4 -4
  181. package/dist/types/pages/user-profile/components/positions-value-card.d.mts +4 -4
  182. package/dist/types/pages/user-profile/components/positions-value-card.d.ts +4 -4
  183. package/dist/types/pages/user-profile/components/user-info-card.d.mts +4 -4
  184. package/dist/types/pages/user-profile/components/user-info-card.d.ts +4 -4
  185. package/dist/types/pages/user-profile/index.d.mts +6 -6
  186. package/dist/types/pages/user-profile/index.d.ts +6 -6
  187. package/dist/types/paper-trading/paper-onboarding-modal.d.mts +4 -14
  188. package/dist/types/paper-trading/paper-onboarding-modal.d.ts +4 -14
  189. package/dist/types/paper-trading/paper-trading-badge.d.mts +4 -16
  190. package/dist/types/paper-trading/paper-trading-badge.d.ts +4 -16
  191. package/dist/types/paper-trading/paper-trading-onboarding.d.mts +4 -12
  192. package/dist/types/paper-trading/paper-trading-onboarding.d.ts +4 -12
  193. package/dist/types/primitives/agg-logo/agg-logo.utils.d.mts +1 -1
  194. package/dist/types/primitives/agg-logo/agg-logo.utils.d.ts +1 -1
  195. package/dist/types/primitives/agg-logo/index.d.mts +4 -5
  196. package/dist/types/primitives/agg-logo/index.d.ts +4 -5
  197. package/dist/types/primitives/autocomplete-select/index.d.mts +4 -5
  198. package/dist/types/primitives/autocomplete-select/index.d.ts +4 -5
  199. package/dist/types/primitives/badge/index.d.mts +1 -1
  200. package/dist/types/primitives/badge/index.d.ts +1 -1
  201. package/dist/types/primitives/button/button.types.d.mts +2 -2
  202. package/dist/types/primitives/button/button.types.d.ts +2 -2
  203. package/dist/types/primitives/button/index.d.mts +4 -5
  204. package/dist/types/primitives/button/index.d.ts +4 -5
  205. package/dist/types/primitives/calendar/index.d.mts +4 -4
  206. package/dist/types/primitives/calendar/index.d.ts +4 -4
  207. package/dist/types/primitives/card/index.d.mts +4 -5
  208. package/dist/types/primitives/card/index.d.ts +4 -5
  209. package/dist/types/primitives/chart/chart-type-switch.d.mts +4 -5
  210. package/dist/types/primitives/chart/chart-type-switch.d.ts +4 -5
  211. package/dist/types/primitives/chart/index.d.mts +4 -5
  212. package/dist/types/primitives/chart/index.d.ts +4 -5
  213. package/dist/types/primitives/chart/probability-chart.d.mts +2 -2
  214. package/dist/types/primitives/chart/probability-chart.d.ts +2 -2
  215. package/dist/types/primitives/chart/probability-live-tail.d.mts +1 -1
  216. package/dist/types/primitives/chart/probability-live-tail.d.ts +1 -1
  217. package/dist/types/primitives/conditional-wrapper.d.mts +6 -7
  218. package/dist/types/primitives/conditional-wrapper.d.ts +6 -7
  219. package/dist/types/primitives/copy-button/index.d.mts +4 -5
  220. package/dist/types/primitives/copy-button/index.d.ts +4 -5
  221. package/dist/types/primitives/currency-input/index.d.mts +4 -5
  222. package/dist/types/primitives/currency-input/index.d.ts +4 -5
  223. package/dist/types/primitives/footer/agg-build-logo.d.mts +12 -15
  224. package/dist/types/primitives/footer/agg-build-logo.d.ts +12 -15
  225. package/dist/types/primitives/footer/index.d.mts +4 -6
  226. package/dist/types/primitives/footer/index.d.ts +4 -6
  227. package/dist/types/primitives/header/index.d.mts +4 -6
  228. package/dist/types/primitives/header/index.d.ts +4 -6
  229. package/dist/types/primitives/icon/index.d.mts +4 -5
  230. package/dist/types/primitives/icon/index.d.ts +4 -5
  231. package/dist/types/primitives/icon/registry.d.mts +180 -351
  232. package/dist/types/primitives/icon/registry.d.ts +180 -351
  233. package/dist/types/primitives/icon/svg/activity-chart.d.mts +4 -4
  234. package/dist/types/primitives/icon/svg/activity-chart.d.ts +4 -4
  235. package/dist/types/primitives/icon/svg/activity.d.mts +4 -4
  236. package/dist/types/primitives/icon/svg/activity.d.ts +4 -4
  237. package/dist/types/primitives/icon/svg/apple.d.mts +4 -4
  238. package/dist/types/primitives/icon/svg/apple.d.ts +4 -4
  239. package/dist/types/primitives/icon/svg/apps.d.mts +4 -4
  240. package/dist/types/primitives/icon/svg/apps.d.ts +4 -4
  241. package/dist/types/primitives/icon/svg/arbitrum.d.mts +4 -4
  242. package/dist/types/primitives/icon/svg/arbitrum.d.ts +4 -4
  243. package/dist/types/primitives/icon/svg/arrow-right.d.mts +4 -4
  244. package/dist/types/primitives/icon/svg/arrow-right.d.ts +4 -4
  245. package/dist/types/primitives/icon/svg/arrow-trend-up.d.mts +4 -4
  246. package/dist/types/primitives/icon/svg/arrow-trend-up.d.ts +4 -4
  247. package/dist/types/primitives/icon/svg/arrows-to-dot.d.mts +4 -4
  248. package/dist/types/primitives/icon/svg/arrows-to-dot.d.ts +4 -4
  249. package/dist/types/primitives/icon/svg/badge-check-thin.d.mts +4 -4
  250. package/dist/types/primitives/icon/svg/badge-check-thin.d.ts +4 -4
  251. package/dist/types/primitives/icon/svg/bank.d.mts +4 -4
  252. package/dist/types/primitives/icon/svg/bank.d.ts +4 -4
  253. package/dist/types/primitives/icon/svg/base.d.mts +4 -4
  254. package/dist/types/primitives/icon/svg/base.d.ts +4 -4
  255. package/dist/types/primitives/icon/svg/best-prices.d.mts +4 -4
  256. package/dist/types/primitives/icon/svg/best-prices.d.ts +4 -4
  257. package/dist/types/primitives/icon/svg/bnb.d.mts +4 -4
  258. package/dist/types/primitives/icon/svg/bnb.d.ts +4 -4
  259. package/dist/types/primitives/icon/svg/bolt.d.mts +4 -4
  260. package/dist/types/primitives/icon/svg/bolt.d.ts +4 -4
  261. package/dist/types/primitives/icon/svg/calendar.d.mts +1 -1
  262. package/dist/types/primitives/icon/svg/calendar.d.ts +1 -1
  263. package/dist/types/primitives/icon/svg/chart-candlestick.d.mts +4 -4
  264. package/dist/types/primitives/icon/svg/chart-candlestick.d.ts +4 -4
  265. package/dist/types/primitives/icon/svg/chart-line.d.mts +4 -4
  266. package/dist/types/primitives/icon/svg/chart-line.d.ts +4 -4
  267. package/dist/types/primitives/icon/svg/check-badge.d.mts +4 -4
  268. package/dist/types/primitives/icon/svg/check-badge.d.ts +4 -4
  269. package/dist/types/primitives/icon/svg/check-circle.d.mts +4 -4
  270. package/dist/types/primitives/icon/svg/check-circle.d.ts +4 -4
  271. package/dist/types/primitives/icon/svg/chevron-down-thin.d.mts +4 -5
  272. package/dist/types/primitives/icon/svg/chevron-down-thin.d.ts +4 -5
  273. package/dist/types/primitives/icon/svg/chevron-down.d.mts +4 -4
  274. package/dist/types/primitives/icon/svg/chevron-down.d.ts +4 -4
  275. package/dist/types/primitives/icon/svg/chevron-left.d.mts +4 -4
  276. package/dist/types/primitives/icon/svg/chevron-left.d.ts +4 -4
  277. package/dist/types/primitives/icon/svg/chevron-right.d.mts +4 -4
  278. package/dist/types/primitives/icon/svg/chevron-right.d.ts +4 -4
  279. package/dist/types/primitives/icon/svg/chevron-up.d.mts +4 -4
  280. package/dist/types/primitives/icon/svg/chevron-up.d.ts +4 -4
  281. package/dist/types/primitives/icon/svg/circle-overlap.d.mts +4 -4
  282. package/dist/types/primitives/icon/svg/circle-overlap.d.ts +4 -4
  283. package/dist/types/primitives/icon/svg/circle-xmark.d.mts +4 -4
  284. package/dist/types/primitives/icon/svg/circle-xmark.d.ts +4 -4
  285. package/dist/types/primitives/icon/svg/close.d.mts +4 -4
  286. package/dist/types/primitives/icon/svg/close.d.ts +4 -4
  287. package/dist/types/primitives/icon/svg/copy.d.mts +4 -4
  288. package/dist/types/primitives/icon/svg/copy.d.ts +4 -4
  289. package/dist/types/primitives/icon/svg/create-account.d.mts +4 -4
  290. package/dist/types/primitives/icon/svg/create-account.d.ts +4 -4
  291. package/dist/types/primitives/icon/svg/credit-card.d.mts +4 -4
  292. package/dist/types/primitives/icon/svg/credit-card.d.ts +4 -4
  293. package/dist/types/primitives/icon/svg/cross-circle.d.mts +4 -4
  294. package/dist/types/primitives/icon/svg/cross-circle.d.ts +4 -4
  295. package/dist/types/primitives/icon/svg/disconnect.d.mts +4 -4
  296. package/dist/types/primitives/icon/svg/disconnect.d.ts +4 -4
  297. package/dist/types/primitives/icon/svg/discord.d.mts +4 -4
  298. package/dist/types/primitives/icon/svg/discord.d.ts +4 -4
  299. package/dist/types/primitives/icon/svg/document.d.mts +4 -4
  300. package/dist/types/primitives/icon/svg/document.d.ts +4 -4
  301. package/dist/types/primitives/icon/svg/dots-horizontal.d.mts +4 -4
  302. package/dist/types/primitives/icon/svg/dots-horizontal.d.ts +4 -4
  303. package/dist/types/primitives/icon/svg/download.d.mts +4 -4
  304. package/dist/types/primitives/icon/svg/download.d.ts +4 -4
  305. package/dist/types/primitives/icon/svg/email.d.mts +4 -4
  306. package/dist/types/primitives/icon/svg/email.d.ts +4 -4
  307. package/dist/types/primitives/icon/svg/error-filled.d.mts +4 -4
  308. package/dist/types/primitives/icon/svg/error-filled.d.ts +4 -4
  309. package/dist/types/primitives/icon/svg/ethereum.d.mts +4 -4
  310. package/dist/types/primitives/icon/svg/ethereum.d.ts +4 -4
  311. package/dist/types/primitives/icon/svg/external-link.d.mts +4 -4
  312. package/dist/types/primitives/icon/svg/external-link.d.ts +4 -4
  313. package/dist/types/primitives/icon/svg/gift-bonus.d.mts +4 -4
  314. package/dist/types/primitives/icon/svg/gift-bonus.d.ts +4 -4
  315. package/dist/types/primitives/icon/svg/google.d.mts +4 -4
  316. package/dist/types/primitives/icon/svg/google.d.ts +4 -4
  317. package/dist/types/primitives/icon/svg/hourglass-start.d.mts +4 -4
  318. package/dist/types/primitives/icon/svg/hourglass-start.d.ts +4 -4
  319. package/dist/types/primitives/icon/svg/image.d.mts +4 -4
  320. package/dist/types/primitives/icon/svg/image.d.ts +4 -4
  321. package/dist/types/primitives/icon/svg/info.d.mts +4 -4
  322. package/dist/types/primitives/icon/svg/info.d.ts +4 -4
  323. package/dist/types/primitives/icon/svg/internet-security.d.mts +4 -4
  324. package/dist/types/primitives/icon/svg/internet-security.d.ts +4 -4
  325. package/dist/types/primitives/icon/svg/link-accounts.d.mts +4 -4
  326. package/dist/types/primitives/icon/svg/link-accounts.d.ts +4 -4
  327. package/dist/types/primitives/icon/svg/lock.d.mts +4 -4
  328. package/dist/types/primitives/icon/svg/lock.d.ts +4 -4
  329. package/dist/types/primitives/icon/svg/minus.d.mts +1 -1
  330. package/dist/types/primitives/icon/svg/minus.d.ts +1 -1
  331. package/dist/types/primitives/icon/svg/paper-buying-power.d.mts +4 -10
  332. package/dist/types/primitives/icon/svg/paper-buying-power.d.ts +4 -10
  333. package/dist/types/primitives/icon/svg/paper-earnings.d.mts +4 -10
  334. package/dist/types/primitives/icon/svg/paper-earnings.d.ts +4 -10
  335. package/dist/types/primitives/icon/svg/paper-mode.d.mts +4 -4
  336. package/dist/types/primitives/icon/svg/paper-mode.d.ts +4 -4
  337. package/dist/types/primitives/icon/svg/paper-onboarding-funds.d.mts +4 -11
  338. package/dist/types/primitives/icon/svg/paper-onboarding-funds.d.ts +4 -11
  339. package/dist/types/primitives/icon/svg/paper-onboarding-markets.d.mts +4 -11
  340. package/dist/types/primitives/icon/svg/paper-onboarding-markets.d.ts +4 -11
  341. package/dist/types/primitives/icon/svg/paper-onboarding-performance.d.mts +4 -11
  342. package/dist/types/primitives/icon/svg/paper-onboarding-performance.d.ts +4 -11
  343. package/dist/types/primitives/icon/svg/paper-plane.d.mts +4 -4
  344. package/dist/types/primitives/icon/svg/paper-plane.d.ts +4 -4
  345. package/dist/types/primitives/icon/svg/pencil.d.mts +4 -4
  346. package/dist/types/primitives/icon/svg/pencil.d.ts +4 -4
  347. package/dist/types/primitives/icon/svg/play-square.d.mts +4 -4
  348. package/dist/types/primitives/icon/svg/play-square.d.ts +4 -4
  349. package/dist/types/primitives/icon/svg/plus.d.mts +1 -1
  350. package/dist/types/primitives/icon/svg/plus.d.ts +1 -1
  351. package/dist/types/primitives/icon/svg/polygon.d.mts +4 -4
  352. package/dist/types/primitives/icon/svg/polygon.d.ts +4 -4
  353. package/dist/types/primitives/icon/svg/profile-about-tab.d.mts +4 -5
  354. package/dist/types/primitives/icon/svg/profile-about-tab.d.ts +4 -5
  355. package/dist/types/primitives/icon/svg/profile-accounts-wallets-tab.d.mts +4 -5
  356. package/dist/types/primitives/icon/svg/profile-accounts-wallets-tab.d.ts +4 -5
  357. package/dist/types/primitives/icon/svg/profile.d.mts +4 -4
  358. package/dist/types/primitives/icon/svg/profile.d.ts +4 -4
  359. package/dist/types/primitives/icon/svg/quotes-warning.d.mts +4 -5
  360. package/dist/types/primitives/icon/svg/quotes-warning.d.ts +4 -5
  361. package/dist/types/primitives/icon/svg/recenter.d.mts +4 -4
  362. package/dist/types/primitives/icon/svg/recenter.d.ts +4 -4
  363. package/dist/types/primitives/icon/svg/revenue-alt.d.mts +4 -4
  364. package/dist/types/primitives/icon/svg/revenue-alt.d.ts +4 -4
  365. package/dist/types/primitives/icon/svg/search.d.mts +4 -4
  366. package/dist/types/primitives/icon/svg/search.d.ts +4 -4
  367. package/dist/types/primitives/icon/svg/shield-trust.d.mts +4 -4
  368. package/dist/types/primitives/icon/svg/shield-trust.d.ts +4 -4
  369. package/dist/types/primitives/icon/svg/solana.d.mts +4 -4
  370. package/dist/types/primitives/icon/svg/solana.d.ts +4 -4
  371. package/dist/types/primitives/icon/svg/sort-end-date.d.mts +4 -4
  372. package/dist/types/primitives/icon/svg/sort-end-date.d.ts +4 -4
  373. package/dist/types/primitives/icon/svg/sort-top-arbitrage.d.mts +4 -4
  374. package/dist/types/primitives/icon/svg/sort-top-arbitrage.d.ts +4 -4
  375. package/dist/types/primitives/icon/svg/sort-volume-24hr.d.mts +4 -4
  376. package/dist/types/primitives/icon/svg/sort-volume-24hr.d.ts +4 -4
  377. package/dist/types/primitives/icon/svg/sort-volume.d.mts +4 -4
  378. package/dist/types/primitives/icon/svg/sort-volume.d.ts +4 -4
  379. package/dist/types/primitives/icon/svg/sparkles-filled.d.mts +4 -4
  380. package/dist/types/primitives/icon/svg/sparkles-filled.d.ts +4 -4
  381. package/dist/types/primitives/icon/svg/spinner.d.mts +4 -4
  382. package/dist/types/primitives/icon/svg/spinner.d.ts +4 -4
  383. package/dist/types/primitives/icon/svg/stay-in-control.d.mts +4 -4
  384. package/dist/types/primitives/icon/svg/stay-in-control.d.ts +4 -4
  385. package/dist/types/primitives/icon/svg/success-check.d.mts +4 -4
  386. package/dist/types/primitives/icon/svg/success-check.d.ts +4 -4
  387. package/dist/types/primitives/icon/svg/telegram.d.mts +4 -4
  388. package/dist/types/primitives/icon/svg/telegram.d.ts +4 -4
  389. package/dist/types/primitives/icon/svg/triangle-down.d.mts +4 -4
  390. package/dist/types/primitives/icon/svg/triangle-down.d.ts +4 -4
  391. package/dist/types/primitives/icon/svg/triangle-up-filled.d.mts +4 -4
  392. package/dist/types/primitives/icon/svg/triangle-up-filled.d.ts +4 -4
  393. package/dist/types/primitives/icon/svg/triangle-up.d.mts +4 -4
  394. package/dist/types/primitives/icon/svg/triangle-up.d.ts +4 -4
  395. package/dist/types/primitives/icon/svg/twitter.d.mts +4 -4
  396. package/dist/types/primitives/icon/svg/twitter.d.ts +4 -4
  397. package/dist/types/primitives/icon/svg/upload.d.mts +4 -4
  398. package/dist/types/primitives/icon/svg/upload.d.ts +4 -4
  399. package/dist/types/primitives/icon/svg/usdc.d.mts +4 -4
  400. package/dist/types/primitives/icon/svg/usdc.d.ts +4 -4
  401. package/dist/types/primitives/icon/svg/user-trust.d.mts +4 -4
  402. package/dist/types/primitives/icon/svg/user-trust.d.ts +4 -4
  403. package/dist/types/primitives/icon/svg/wallet-avatar.d.mts +1 -1
  404. package/dist/types/primitives/icon/svg/wallet-avatar.d.ts +1 -1
  405. package/dist/types/primitives/icon/svg/wallet-filled.d.mts +4 -4
  406. package/dist/types/primitives/icon/svg/wallet-filled.d.ts +4 -4
  407. package/dist/types/primitives/icon/svg/wallet.d.mts +4 -4
  408. package/dist/types/primitives/icon/svg/wallet.d.ts +4 -4
  409. package/dist/types/primitives/icon/svg/warning-filled.d.mts +4 -4
  410. package/dist/types/primitives/icon/svg/warning-filled.d.ts +4 -4
  411. package/dist/types/primitives/icon/svg/warning.d.mts +4 -4
  412. package/dist/types/primitives/icon/svg/warning.d.ts +4 -4
  413. package/dist/types/primitives/inline-alert/index.d.mts +4 -5
  414. package/dist/types/primitives/inline-alert/index.d.ts +4 -5
  415. package/dist/types/primitives/loading-icon/index.d.mts +4 -5
  416. package/dist/types/primitives/loading-icon/index.d.ts +4 -5
  417. package/dist/types/primitives/modal/index.d.mts +12 -9
  418. package/dist/types/primitives/modal/index.d.ts +12 -9
  419. package/dist/types/primitives/number-value.d.mts +4 -4
  420. package/dist/types/primitives/number-value.d.ts +4 -4
  421. package/dist/types/primitives/remote-image/index.d.mts +4 -5
  422. package/dist/types/primitives/remote-image/index.d.ts +4 -5
  423. package/dist/types/primitives/search/index.d.mts +4 -5
  424. package/dist/types/primitives/search/index.d.ts +4 -5
  425. package/dist/types/primitives/search/search-empty-icon.d.mts +4 -4
  426. package/dist/types/primitives/search/search-empty-icon.d.ts +4 -4
  427. package/dist/types/primitives/select/index.d.mts +4 -5
  428. package/dist/types/primitives/select/index.d.ts +4 -5
  429. package/dist/types/primitives/skeleton/index.d.mts +4 -5
  430. package/dist/types/primitives/skeleton/index.d.ts +4 -5
  431. package/dist/types/primitives/skeleton/skeleton-block.d.mts +4 -4
  432. package/dist/types/primitives/skeleton/skeleton-block.d.ts +4 -4
  433. package/dist/types/primitives/skeleton/views/event-list-item-details-skeleton-view.d.mts +4 -4
  434. package/dist/types/primitives/skeleton/views/event-list-item-details-skeleton-view.d.ts +4 -4
  435. package/dist/types/primitives/skeleton/views/event-list-item-skeleton-view.d.mts +4 -10
  436. package/dist/types/primitives/skeleton/views/event-list-item-skeleton-view.d.ts +4 -10
  437. package/dist/types/primitives/skeleton/views/event-list-skeleton-view.d.mts +4 -4
  438. package/dist/types/primitives/skeleton/views/event-list-skeleton-view.d.ts +4 -4
  439. package/dist/types/primitives/skeleton/views/market-details-skeleton-view.d.mts +5 -5
  440. package/dist/types/primitives/skeleton/views/market-details-skeleton-view.d.ts +5 -5
  441. package/dist/types/primitives/skeleton/views/place-order-skeleton-view.d.mts +8 -8
  442. package/dist/types/primitives/skeleton/views/place-order-skeleton-view.d.ts +8 -8
  443. package/dist/types/primitives/skeleton/views/search-skeleton-view.d.mts +4 -4
  444. package/dist/types/primitives/skeleton/views/search-skeleton-view.d.ts +4 -4
  445. package/dist/types/primitives/skeleton/views/settlement-skeleton-view.d.mts +4 -4
  446. package/dist/types/primitives/skeleton/views/settlement-skeleton-view.d.ts +4 -4
  447. package/dist/types/primitives/skeleton/views/user-profile-overview-skeleton-view.d.mts +4 -4
  448. package/dist/types/primitives/skeleton/views/user-profile-overview-skeleton-view.d.ts +4 -4
  449. package/dist/types/primitives/skeleton/views/user-profile-positions-activity-skeleton-view.d.mts +4 -4
  450. package/dist/types/primitives/skeleton/views/user-profile-positions-activity-skeleton-view.d.ts +4 -4
  451. package/dist/types/primitives/state-message/index.d.mts +4 -5
  452. package/dist/types/primitives/state-message/index.d.ts +4 -5
  453. package/dist/types/primitives/switch-button/index.d.mts +4 -5
  454. package/dist/types/primitives/switch-button/index.d.ts +4 -5
  455. package/dist/types/primitives/tabs/index.d.mts +4 -5
  456. package/dist/types/primitives/tabs/index.d.ts +4 -5
  457. package/dist/types/primitives/toast/index.d.mts +1 -1
  458. package/dist/types/primitives/toast/index.d.ts +1 -1
  459. package/dist/types/primitives/tooltip/index.d.mts +4 -5
  460. package/dist/types/primitives/tooltip/index.d.ts +4 -5
  461. package/dist/types/primitives/typography/index.d.mts +4 -5
  462. package/dist/types/primitives/typography/index.d.ts +4 -5
  463. package/dist/types/primitives/typography/typography.types.d.mts +1 -1
  464. package/dist/types/primitives/typography/typography.types.d.ts +1 -1
  465. package/dist/types/primitives/venue-logo/index.d.mts +4 -5
  466. package/dist/types/primitives/venue-logo/index.d.ts +4 -5
  467. package/dist/types/primitives/venue-logo/svg/default-venue.d.mts +1 -1
  468. package/dist/types/primitives/venue-logo/svg/default-venue.d.ts +1 -1
  469. package/dist/types/primitives/venue-logo/svg/logo-betdex.d.mts +1 -1
  470. package/dist/types/primitives/venue-logo/svg/logo-betdex.d.ts +1 -1
  471. package/dist/types/primitives/venue-logo/svg/logo-hyperliquid.d.mts +4 -4
  472. package/dist/types/primitives/venue-logo/svg/logo-hyperliquid.d.ts +4 -4
  473. package/dist/types/primitives/venue-logo/svg/logo-kalshi.d.mts +4 -4
  474. package/dist/types/primitives/venue-logo/svg/logo-kalshi.d.ts +4 -4
  475. package/dist/types/primitives/venue-logo/svg/logo-limitless.d.mts +4 -4
  476. package/dist/types/primitives/venue-logo/svg/logo-limitless.d.ts +4 -4
  477. package/dist/types/primitives/venue-logo/svg/logo-myriad.d.mts +4 -4
  478. package/dist/types/primitives/venue-logo/svg/logo-myriad.d.ts +4 -4
  479. package/dist/types/primitives/venue-logo/svg/logo-novig.d.mts +4 -23
  480. package/dist/types/primitives/venue-logo/svg/logo-novig.d.ts +4 -23
  481. package/dist/types/primitives/venue-logo/svg/logo-opinion.d.mts +4 -4
  482. package/dist/types/primitives/venue-logo/svg/logo-opinion.d.ts +4 -4
  483. package/dist/types/primitives/venue-logo/svg/logo-polymarket.d.mts +4 -4
  484. package/dist/types/primitives/venue-logo/svg/logo-polymarket.d.ts +4 -4
  485. package/dist/types/primitives/venue-logo/svg/logo-pred.d.mts +4 -5
  486. package/dist/types/primitives/venue-logo/svg/logo-pred.d.ts +4 -5
  487. package/dist/types/primitives/venue-logo/svg/logo-predict.d.mts +4 -4
  488. package/dist/types/primitives/venue-logo/svg/logo-predict.d.ts +4 -4
  489. package/dist/types/primitives/venue-logo/svg/logo-probable.d.mts +4 -4
  490. package/dist/types/primitives/venue-logo/svg/logo-probable.d.ts +4 -4
  491. package/dist/types/primitives/venue-logo/svg/logo-prophetx.d.mts +4 -26
  492. package/dist/types/primitives/venue-logo/svg/logo-prophetx.d.ts +4 -26
  493. package/dist/types/primitives/venue-logo/svg/logo-tiprun.d.mts +4 -5
  494. package/dist/types/primitives/venue-logo/svg/logo-tiprun.d.ts +4 -5
  495. package/dist/types/primitives/venue-logo/venue-logo.constants.d.mts +1 -1
  496. package/dist/types/primitives/venue-logo/venue-logo.constants.d.ts +1 -1
  497. package/dist/types/profile/index.d.mts +4 -4
  498. package/dist/types/profile/index.d.ts +4 -4
  499. package/dist/types/profile/tabs/about-tab.d.mts +4 -4
  500. package/dist/types/profile/tabs/about-tab.d.ts +4 -4
  501. package/dist/types/profile/tabs/accounts-wallets-tab.d.mts +4 -4
  502. package/dist/types/profile/tabs/accounts-wallets-tab.d.ts +4 -4
  503. package/dist/types/profile/tabs/trading-access-tab.d.mts +4 -4
  504. package/dist/types/profile/tabs/trading-access-tab.d.ts +4 -4
  505. package/dist/types/shared/default-avatar.d.mts +4 -4
  506. package/dist/types/shared/default-avatar.d.ts +4 -4
  507. package/dist/types/shared/open-orders.d.mts +1 -1
  508. package/dist/types/shared/open-orders.d.ts +1 -1
  509. package/dist/types/shared/react-inert.d.mts +1 -0
  510. package/dist/types/shared/react-inert.d.ts +1 -0
  511. package/dist/types/shared/transfer-fee-summary.d.mts +1 -1
  512. package/dist/types/shared/transfer-fee-summary.d.ts +1 -1
  513. package/dist/types/trading/fund-kalshi-modal.d.mts +4 -4
  514. package/dist/types/trading/fund-kalshi-modal.d.ts +4 -4
  515. package/dist/types/trading/manage-betdex-account-modal.d.mts +1 -1
  516. package/dist/types/trading/manage-betdex-account-modal.d.ts +1 -1
  517. package/dist/types/trading/place-order/index.d.mts +4 -4
  518. package/dist/types/trading/place-order/index.d.ts +4 -4
  519. package/dist/types/trading/place-order/index.place-order.execution-view.d.mts +6 -6
  520. package/dist/types/trading/place-order/index.place-order.execution-view.d.ts +6 -6
  521. package/dist/types/trading/place-order/index.place-order.failure.d.mts +4 -4
  522. package/dist/types/trading/place-order/index.place-order.failure.d.ts +4 -4
  523. package/dist/types/trading/place-order/index.place-order.success.d.mts +4 -4
  524. package/dist/types/trading/place-order/index.place-order.success.d.ts +4 -4
  525. package/dist/types/trading/settlement/index.d.mts +4 -4
  526. package/dist/types/trading/settlement/index.d.ts +4 -4
  527. package/dist/types/trading/settlement/settlement-details.d.mts +4 -4
  528. package/dist/types/trading/settlement/settlement-details.d.ts +4 -4
  529. package/dist/types/trading/settlement/settlement-text-renderer.d.mts +4 -4
  530. package/dist/types/trading/settlement/settlement-text-renderer.d.ts +4 -4
  531. package/dist/types/withdraw/index.d.mts +4 -4
  532. package/dist/types/withdraw/index.d.ts +4 -4
  533. package/dist/types/withdraw/steps/withdraw-amount.d.mts +1 -1
  534. package/dist/types/withdraw/steps/withdraw-amount.d.ts +1 -1
  535. package/dist/types/withdraw/steps/withdraw-method.d.mts +1 -1
  536. package/dist/types/withdraw/steps/withdraw-method.d.ts +1 -1
  537. package/dist/types/withdraw/steps/withdraw-provider.d.mts +1 -1
  538. package/dist/types/withdraw/steps/withdraw-provider.d.ts +1 -1
  539. package/dist/types/withdraw/steps/withdraw-success.d.mts +2 -2
  540. package/dist/types/withdraw/steps/withdraw-success.d.ts +2 -2
  541. package/package.json +9 -8
  542. package/dist/chunk-4X7OLBO6.mjs +0 -3551
  543. package/dist/chunk-7ORC3TUJ.mjs +0 -2883
  544. package/dist/chunk-JH4B3ZHQ.mjs +0 -1
  545. package/dist/chunk-KN7JN7F5.mjs +0 -8303
  546. package/dist/chunk-MDCFCGA3.mjs +0 -2377
  547. package/dist/chunk-PHT5VLGB.mjs +0 -5789
  548. package/dist/chunk-W2LCFCW3.mjs +0 -2879
  549. package/dist/chunk-WOCZ4TVT.mjs +0 -1645
  550. package/dist/chunk-XZVGHKMW.mjs +0 -11426
  551. package/dist/chunk-YYGS6S7N.mjs +0 -5180
  552. package/dist/event-market-Q2LBJJ5E.mjs +0 -21
@@ -1,1645 +0,0 @@
1
- "use client";
2
- import {
3
- Card,
4
- DEFAULT_VENUE_COLOR,
5
- Skeleton,
6
- VenueLogo,
7
- __spreadProps,
8
- __spreadValues,
9
- cn,
10
- fallbackLineColors,
11
- formatMarketProbabilityPercent,
12
- formatUsd,
13
- getVenueSummary,
14
- normalizeProbability,
15
- normalizeVenueMarketCluster,
16
- resolveOutcomeTitle,
17
- resolveResolvedOutcomeLabel,
18
- resolveVenueLineColor,
19
- selectPrimaryVenueMarket,
20
- skeletonViews,
21
- sortOutcomes
22
- } from "./chunk-XZVGHKMW.mjs";
23
-
24
- // src/trading/trading-context/index.tsx
25
- import { useEventTradingContext } from "@agg-build/hooks";
26
-
27
- // src/events/orderbook/orderbook.utils.ts
28
- import { hasShape, safeParse } from "@agg-build/sdk";
29
- var isOrderBookLevel = (v) => hasShape(v, {
30
- price: (p) => typeof p === "number" && p >= 0 && p <= 1,
31
- size: (s) => typeof s === "number" && s >= 0
32
- });
33
- var isOrderBookRow = (v) => hasShape(v, {
34
- id: (x) => typeof x === "string",
35
- venue: (x) => typeof x === "string" && x.length > 0,
36
- price: (p) => typeof p === "number" && p >= 0 && p <= 1,
37
- size: (s) => typeof s === "number" && s >= 0,
38
- total: (t) => typeof t === "number" && t >= 0,
39
- tone: (x) => x === "positive" || x === "negative"
40
- });
41
- var formatProbabilityCents = (value, formatPrice) => {
42
- if (value == null) return "-";
43
- if (formatPrice) return formatPrice(value);
44
- const cents = (value * 100).toFixed(1).replace(/\.0$/, "");
45
- return `${cents}\xA2`;
46
- };
47
- var resolveOrderBookRows = ({
48
- data,
49
- side
50
- }) => {
51
- if (!(data == null ? void 0 : data.length)) return [];
52
- const tone = side === "asks" ? "negative" : "positive";
53
- const rows = data.flatMap((result) => {
54
- var _a;
55
- return ((_a = result.orderbook[side]) != null ? _a : []).flatMap(
56
- (level, index) => {
57
- const parsedLevel = safeParse(level, isOrderBookLevel);
58
- if (!parsedLevel.success) return [];
59
- const parsedRow = safeParse(
60
- {
61
- id: `${result.market.id}-${side}-${index}-${parsedLevel.data.price}`,
62
- venue: result.market.venue,
63
- price: parsedLevel.data.price,
64
- size: parsedLevel.data.size,
65
- total: parsedLevel.data.price * parsedLevel.data.size,
66
- tone
67
- },
68
- isOrderBookRow
69
- );
70
- if (!parsedRow.success) return [];
71
- return [parsedRow.data];
72
- }
73
- );
74
- });
75
- const sortedRows = [...rows].sort((left, right) => {
76
- if (side === "asks") return left.price - right.price;
77
- return right.price - left.price;
78
- });
79
- const maxTotal = sortedRows.reduce((currentMax, row) => Math.max(currentMax, row.total), 0) || 1;
80
- return sortedRows.map((row) => __spreadProps(__spreadValues({}, row), {
81
- barScale: row.total / maxTotal
82
- }));
83
- };
84
- var resolveUnifiedOrderBookEntries = ({
85
- askRows,
86
- bidRows,
87
- midPrice,
88
- spread
89
- }) => {
90
- const asksDescending = [...askRows].reverse();
91
- const askCumulativeDepths = new Array(asksDescending.length);
92
- let cumulative = 0;
93
- for (let i = asksDescending.length - 1; i >= 0; i--) {
94
- cumulative += asksDescending[i].total;
95
- askCumulativeDepths[i] = cumulative;
96
- }
97
- const bidCumulativeDepths = new Array(bidRows.length);
98
- cumulative = 0;
99
- for (let i = 0; i < bidRows.length; i++) {
100
- cumulative += bidRows[i].total;
101
- bidCumulativeDepths[i] = cumulative;
102
- }
103
- const maxAskCumulative = askCumulativeDepths.length > 0 ? askCumulativeDepths[0] : 0;
104
- const maxBidCumulative = bidCumulativeDepths.length > 0 ? bidCumulativeDepths[bidCumulativeDepths.length - 1] : 0;
105
- const askMax = maxAskCumulative || 1;
106
- const bidMax = maxBidCumulative || 1;
107
- const askEntries = asksDescending.map((row, index) => ({
108
- kind: "ask",
109
- row,
110
- cumulativeDepth: askCumulativeDepths[index],
111
- unifiedBarScale: askCumulativeDepths[index] / askMax
112
- }));
113
- const bidEntries = bidRows.map((row, index) => ({
114
- kind: "bid",
115
- row,
116
- cumulativeDepth: bidCumulativeDepths[index],
117
- unifiedBarScale: bidCumulativeDepths[index] / bidMax
118
- }));
119
- const spreadEntry = { kind: "spread", midPrice, spread };
120
- return [...askEntries, spreadEntry, ...bidEntries];
121
- };
122
-
123
- // src/trading/utils.ts
124
- import { resolveAggUiLabels } from "@agg-build/hooks";
125
- import dayjs from "dayjs";
126
- var defaultLabels = resolveAggUiLabels("en-US");
127
- var defaultSettlementSectionLabel = defaultLabels.trading.settlementSection;
128
- var defaultTradingDisclaimer = defaultLabels.trading.disclaimer;
129
- var getTradingDateLabel = (value) => {
130
- const parsedValue = dayjs(value);
131
- if (!parsedValue.isValid()) {
132
- return typeof value === "string" ? value : "";
133
- }
134
- return parsedValue.format("MMM D, YYYY");
135
- };
136
- var getTradingVenueLabel = (venue, label) => {
137
- var _a;
138
- if (label) return label;
139
- if (!venue) return "Unknown";
140
- return (_a = defaultLabels.venues[venue]) != null ? _a : venue;
141
- };
142
- var getTradingValueLabel = ({
143
- amount,
144
- minimumFractionDigits = 0,
145
- maximumFractionDigits = 2
146
- }) => {
147
- return amount.toLocaleString("en-US", {
148
- style: "currency",
149
- currency: "USD",
150
- minimumFractionDigits,
151
- maximumFractionDigits
152
- });
153
- };
154
- var getTradingPriceLabel = (value) => {
155
- return `${Math.round(value * 100)}\xA2`;
156
- };
157
- var getTradingAveragePriceLabel = (value) => {
158
- return defaultLabels.trading.averagePrice(value);
159
- };
160
- var getTradingBalanceLabel = (value) => {
161
- return defaultLabels.trading.balance(formatUsd(value));
162
- };
163
- var getTradingSharesLabel = (value) => {
164
- return defaultLabels.trading.shares(value);
165
- };
166
- var getTradingSlippageLabel = (value) => {
167
- return defaultLabels.trading.slippage(value);
168
- };
169
-
170
- // src/trading/settlement/index.tsx
171
- import {
172
- useLabels
173
- } from "@agg-build/hooks";
174
- import { useEffect, useMemo, useState } from "react";
175
-
176
- // src/trading/settlement/settlement-text-renderer.tsx
177
- import { Fragment } from "react";
178
-
179
- // src/trading/settlement/settlement-text.utils.ts
180
- var stripHtmlFragments = (text) => {
181
- return text.replace(/<\s*p\s*>/gi, "").replace(/<\s*\/\s*p\s*>/gi, "\n\n").replace(/<\s*br\s*\/?\s*>/gi, "\n").replace(/\r\n/g, "\n");
182
- };
183
- var isListLine = (line) => /^\s*[-*]\s+/.test(line);
184
- var stripBullet = (line) => line.replace(/^\s*[-*]\s+/, "").trim();
185
- var parseSettlementBlocks = (input) => {
186
- const normalized = stripHtmlFragments(input).trim();
187
- if (!normalized) return [];
188
- const paragraphs = normalized.split(/\n{2,}/);
189
- const blocks = [];
190
- for (const rawParagraph of paragraphs) {
191
- const lines = rawParagraph.split("\n").map((line) => line.replace(/\s+$/, "")).filter((line) => line.trim().length > 0);
192
- if (lines.length === 0) continue;
193
- if (lines.every(isListLine)) {
194
- blocks.push({ kind: "list", items: lines.map(stripBullet) });
195
- continue;
196
- }
197
- blocks.push({ kind: "paragraph", lines: lines.map((line) => line.trim()) });
198
- }
199
- return blocks;
200
- };
201
- var normalizeSettlementForCompare = (input) => {
202
- return stripHtmlFragments(input).replace(/\s+/g, " ").trim().toLowerCase();
203
- };
204
- var dedupeSettlementSources = (sources) => {
205
- const order = ["eventDescription", "marketDescription", "primaryRules"];
206
- const result = [];
207
- for (const key of order) {
208
- const value = sources[key];
209
- if (typeof value !== "string") continue;
210
- const trimmed = value.trim();
211
- if (!trimmed) continue;
212
- const fingerprint = normalizeSettlementForCompare(trimmed);
213
- if (!fingerprint) continue;
214
- if (result.some((block) => block.fingerprint.includes(fingerprint))) continue;
215
- for (let i = result.length - 1; i >= 0; i -= 1) {
216
- if (fingerprint.includes(result[i].fingerprint)) result.splice(i, 1);
217
- }
218
- result.push({ key, content: trimmed, fingerprint });
219
- }
220
- return result.map(({ key, content }) => ({ key, content }));
221
- };
222
-
223
- // src/trading/settlement/settlement-text-renderer.tsx
224
- import { jsx, jsxs } from "react/jsx-runtime";
225
- var inlineTokenRegex = new RegExp(
226
- [
227
- /\[([^\]\n]+)\]\(([^)\s]+)\)/.source,
228
- // 1=link text, 2=link href
229
- /\*\*([^*\n]+?)\*\*/.source,
230
- // 3=bold inner
231
- /`([^`\n]+?)`/.source,
232
- // 4=code inner
233
- /(https?:\/\/[^\s<>"'`]+)/.source
234
- // 5=bare url
235
- ].join("|"),
236
- "g"
237
- );
238
- var trailingUrlPunctuationRegex = /[.,;:!?)\]]+$/;
239
- var isLinkMatch = (match) => match[1] !== void 0 && match[2] !== void 0;
240
- var linkClassName = "agg-settlement-text-link text-agg-primary underline hover:opacity-80";
241
- var renderInlineSegment = (text, baseKey) => {
242
- const nodes = [];
243
- let lastIndex = 0;
244
- let segmentIndex = 0;
245
- inlineTokenRegex.lastIndex = 0;
246
- let match;
247
- while ((match = inlineTokenRegex.exec(text)) !== null) {
248
- let matchEnd = match.index + match[0].length;
249
- let bareUrl = match[5];
250
- if (bareUrl !== void 0) {
251
- const trailing = trailingUrlPunctuationRegex.exec(bareUrl);
252
- if (trailing) {
253
- const trimmed = bareUrl.slice(0, bareUrl.length - trailing[0].length);
254
- if (trimmed.length > "https://".length) {
255
- bareUrl = trimmed;
256
- matchEnd -= trailing[0].length;
257
- inlineTokenRegex.lastIndex = matchEnd;
258
- }
259
- }
260
- }
261
- if (match.index > lastIndex) {
262
- nodes.push(
263
- /* @__PURE__ */ jsx(Fragment, { children: text.slice(lastIndex, match.index) }, `${baseKey}-text-${segmentIndex++}`)
264
- );
265
- }
266
- if (isLinkMatch(match)) {
267
- nodes.push(
268
- /* @__PURE__ */ jsx(
269
- "a",
270
- {
271
- href: match[2],
272
- target: "_blank",
273
- rel: "noopener noreferrer",
274
- className: linkClassName,
275
- children: match[1]
276
- },
277
- `${baseKey}-link-${segmentIndex++}`
278
- )
279
- );
280
- } else if (match[3] !== void 0) {
281
- nodes.push(
282
- /* @__PURE__ */ jsx(
283
- "strong",
284
- {
285
- className: "agg-settlement-text-bold font-agg-bold",
286
- children: match[3]
287
- },
288
- `${baseKey}-bold-${segmentIndex++}`
289
- )
290
- );
291
- } else if (match[4] !== void 0) {
292
- nodes.push(
293
- /* @__PURE__ */ jsx(
294
- "code",
295
- {
296
- className: "agg-settlement-text-code rounded-agg-sm bg-agg-secondary-hover px-1 py-0.5 font-mono text-[0.875em]",
297
- children: match[4]
298
- },
299
- `${baseKey}-code-${segmentIndex++}`
300
- )
301
- );
302
- } else if (bareUrl !== void 0) {
303
- nodes.push(
304
- /* @__PURE__ */ jsx(
305
- "a",
306
- {
307
- href: bareUrl,
308
- target: "_blank",
309
- rel: "noopener noreferrer",
310
- className: linkClassName,
311
- children: bareUrl
312
- },
313
- `${baseKey}-url-${segmentIndex++}`
314
- )
315
- );
316
- }
317
- lastIndex = matchEnd;
318
- }
319
- if (lastIndex < text.length) {
320
- nodes.push(
321
- /* @__PURE__ */ jsx(Fragment, { children: text.slice(lastIndex) }, `${baseKey}-text-${segmentIndex++}`)
322
- );
323
- }
324
- return nodes;
325
- };
326
- var renderBlock = (block, blockIndex) => {
327
- if (block.kind === "list") {
328
- return /* @__PURE__ */ jsx(
329
- "ul",
330
- {
331
- className: "agg-settlement-text-list list-disc pl-5 text-agg-sm leading-agg-5 text-agg-foreground",
332
- children: block.items.map((item, itemIndex) => /* @__PURE__ */ jsx(
333
- "li",
334
- {
335
- className: "agg-settlement-text-list-item",
336
- children: renderInlineSegment(item, `block-${blockIndex}-item-${itemIndex}`)
337
- },
338
- `block-${blockIndex}-item-${itemIndex}`
339
- ))
340
- },
341
- `block-${blockIndex}`
342
- );
343
- }
344
- return /* @__PURE__ */ jsx(
345
- "p",
346
- {
347
- className: "agg-settlement-text-paragraph text-agg-sm leading-agg-5 text-agg-foreground break-words [overflow-wrap:anywhere]",
348
- children: block.lines.map((line, lineIndex) => /* @__PURE__ */ jsxs(Fragment, { children: [
349
- lineIndex > 0 ? /* @__PURE__ */ jsx("br", {}) : null,
350
- renderInlineSegment(line, `block-${blockIndex}-line-${lineIndex}`)
351
- ] }, `block-${blockIndex}-line-${lineIndex}`))
352
- },
353
- `block-${blockIndex}`
354
- );
355
- };
356
- var SettlementTextRenderer = ({
357
- content,
358
- className
359
- }) => {
360
- const blocks = parseSettlementBlocks(content);
361
- if (blocks.length === 0) return null;
362
- return /* @__PURE__ */ jsx("div", { className: cn("agg-settlement-text flex flex-col gap-2", className), children: blocks.map((block, blockIndex) => renderBlock(block, blockIndex)) });
363
- };
364
- SettlementTextRenderer.displayName = "SettlementTextRenderer";
365
-
366
- // src/trading/settlement/index.tsx
367
- import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
368
- var SETTLEMENT_SECTION_ID = "agg-settlement-section";
369
- var getSettlementDifferenceId = (sectionId, canonicalKey) => {
370
- return `${sectionId}-difference-${canonicalKey}`;
371
- };
372
- var dateOnlyRegex = /^(\d{4})-(\d{2})-(\d{2})$/;
373
- var isoTimestampWithTimezoneRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d{1,9})?)?(?:Z|[+-]\d{2}:?\d{2})$/i;
374
- var normalizeDifferenceText = (value) => {
375
- return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
376
- };
377
- var resolveCanonicalDifferenceKey = (difference) => {
378
- const normalizedType = normalizeDifferenceText(difference.type);
379
- const combined = normalizeDifferenceText(`${difference.type} ${difference.title}`);
380
- if (combined.includes("start_date") || combined.includes("open_date")) return "start_date";
381
- if (combined.includes("end_date") || combined.includes("close_date") || combined.includes("closing_date") || combined.includes("expiration_date") || combined.includes("expiry_date")) {
382
- return "end_date";
383
- }
384
- if (combined.includes("resolution_timing") || combined.includes("resolution_date") || combined.includes("resolution_deadline") || combined.includes("settlement_date") || combined.includes("settlement_deadline") || combined.includes("settlement_timing")) {
385
- return "resolution_timing";
386
- }
387
- return normalizedType || "other";
388
- };
389
- var parseSettlementDateMs = (value) => {
390
- const trimmed = value.trim();
391
- const dateOnlyMatch = dateOnlyRegex.exec(trimmed);
392
- if (dateOnlyMatch) {
393
- const [, year, month, day] = dateOnlyMatch;
394
- return Date.UTC(Number(year), Number(month) - 1, Number(day));
395
- }
396
- if (!isoTimestampWithTimezoneRegex.test(trimmed)) return null;
397
- const ms = Date.parse(trimmed);
398
- return Number.isNaN(ms) ? null : ms;
399
- };
400
- var isDateLikeDifference = (canonicalKey) => {
401
- return canonicalKey === "resolution_timing" || canonicalKey === "start_date" || canonicalKey === "end_date";
402
- };
403
- var hasEqualValuesAcrossVenues = (difference) => {
404
- const values = Object.values(difference.perVenue);
405
- if (values.length < 2) return false;
406
- const timestamps = values.map(parseSettlementDateMs);
407
- if (timestamps.every((timestamp) => timestamp !== null)) {
408
- return new Set(timestamps).size === 1;
409
- }
410
- return new Set(values.map(normalizeSettlementForCompare)).size === 1;
411
- };
412
- var resolveDifferenceSeverity = (difference, canonicalKey) => {
413
- var _a;
414
- const combined = normalizeDifferenceText(
415
- `${difference.type} ${difference.title} ${(_a = difference.summary) != null ? _a : ""}`
416
- );
417
- if (isDateLikeDifference(canonicalKey)) return "critical";
418
- if (canonicalKey === "scope" || canonicalKey === "threshold" || canonicalKey === "edge_cases") {
419
- return "critical";
420
- }
421
- if (combined.includes("conflict") || combined.includes("void") || combined.includes("cancel") || combined.includes("postpone") || combined.includes("recount") || combined.includes("overtime") || combined.includes("extra_time")) {
422
- return "critical";
423
- }
424
- return "informational";
425
- };
426
- var mergePerVenueValues = (current, next) => {
427
- return Object.entries(next).reduce(
428
- (merged, [venue, value]) => {
429
- if (merged[venue] === void 0) merged[venue] = value;
430
- return merged;
431
- },
432
- __spreadValues({}, current)
433
- );
434
- };
435
- var prepareSettlementDifferences = (differences) => {
436
- const byCanonicalKey = /* @__PURE__ */ new Map();
437
- for (const [originalIndex, rawDifference] of (differences != null ? differences : []).entries()) {
438
- const title = rawDifference.title.trim();
439
- const perVenue = Object.fromEntries(
440
- Object.entries(rawDifference.perVenue).map(([venue, value]) => [venue.trim(), value.trim()]).filter(([venue, value]) => venue.length > 0 && value.length > 0)
441
- );
442
- if (!title || Object.keys(perVenue).length === 0) continue;
443
- const difference = __spreadProps(__spreadValues({}, rawDifference), { title, perVenue });
444
- const canonicalKey = resolveCanonicalDifferenceKey(difference);
445
- if (hasEqualValuesAcrossVenues(difference)) continue;
446
- const existing = byCanonicalKey.get(canonicalKey);
447
- if (existing) {
448
- byCanonicalKey.set(canonicalKey, __spreadProps(__spreadValues({}, existing), {
449
- perVenue: mergePerVenueValues(existing.perVenue, difference.perVenue)
450
- }));
451
- continue;
452
- }
453
- byCanonicalKey.set(canonicalKey, __spreadProps(__spreadValues({}, difference), {
454
- canonicalKey,
455
- severity: resolveDifferenceSeverity(difference, canonicalKey),
456
- originalIndex
457
- }));
458
- }
459
- return Array.from(byCanonicalKey.values()).filter((difference) => !hasEqualValuesAcrossVenues(difference)).sort((left, right) => {
460
- const severityDelta = Number(right.severity === "critical") - Number(left.severity === "critical");
461
- if (severityDelta !== 0) return severityDelta;
462
- return left.originalIndex - right.originalIndex;
463
- });
464
- };
465
- var formatVenueFallbackLabel = (venue) => {
466
- return venue.split(/[-_\s]+/).filter(Boolean).map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`).join(" ");
467
- };
468
- var resolveSettlementVenueLabel = (venue, labels) => {
469
- var _a;
470
- return (_a = labels.venues[venue]) != null ? _a : formatVenueFallbackLabel(venue);
471
- };
472
- var resolveDifferenceVenueKeys = (difference, settlementVenues) => {
473
- const allVenues = [...settlementVenues != null ? settlementVenues : [], ...Object.keys(difference.perVenue)];
474
- return Array.from(new Set(allVenues.filter((venue) => venue.trim().length > 0)));
475
- };
476
- var resolveDifferenceIconClassName = (canonicalKey) => {
477
- if (canonicalKey.includes("source") || canonicalKey.includes("url")) return "fi-rr-world";
478
- if (canonicalKey === "resolution_timing" || canonicalKey.includes("timing")) {
479
- return "fi-rr-clock";
480
- }
481
- if (canonicalKey === "start_date" || canonicalKey.includes("start"))
482
- return "fi-rr-calendar-clock";
483
- if (canonicalKey === "end_date" || canonicalKey.includes("end")) return "fi-rr-calendar-clock";
484
- if (canonicalKey.includes("cancel") || canonicalKey.includes("void") || canonicalKey.includes("postpone")) {
485
- return "fi-rr-ban";
486
- }
487
- if (canonicalKey === "edge_cases" || canonicalKey.includes("edge")) {
488
- return "fi-rr-triangle-warning";
489
- }
490
- if (canonicalKey === "scope") return "fi-rr-layers";
491
- if (canonicalKey === "threshold") return "fi-rr-tachometer-alt-fastest";
492
- if (canonicalKey.includes("wording")) return "fi-rr-document";
493
- return "fi-rr-info";
494
- };
495
- var buildSettlementVenueRules = ({
496
- marketBlock,
497
- primaryRulesBlock,
498
- settlementVenues,
499
- settlementVenueRules
500
- }) => {
501
- var _a, _b;
502
- if (settlementVenueRules) {
503
- const rulesByVenue = /* @__PURE__ */ new Map();
504
- for (const rule of settlementVenueRules) {
505
- const venue2 = rule.venue.trim();
506
- const content2 = rule.content.trim();
507
- if (!venue2 || !content2) continue;
508
- const venueRules = (_a = rulesByVenue.get(venue2)) != null ? _a : [];
509
- if (!venueRules.includes(content2)) venueRules.push(content2);
510
- rulesByVenue.set(venue2, venueRules);
511
- }
512
- if (rulesByVenue.size > 0) {
513
- for (const venue2 of settlementVenues != null ? settlementVenues : []) {
514
- const trimmedVenue = venue2.trim();
515
- if (trimmedVenue && !rulesByVenue.has(trimmedVenue)) rulesByVenue.set(trimmedVenue, []);
516
- }
517
- }
518
- return Array.from(rulesByVenue, ([venue2, contents]) => ({
519
- venue: venue2,
520
- content: contents.join("\n\n")
521
- }));
522
- }
523
- const content = [marketBlock == null ? void 0 : marketBlock.content, primaryRulesBlock == null ? void 0 : primaryRulesBlock.content].filter((value) => typeof value === "string" && value.trim().length > 0).join("\n\n");
524
- const venue = (_b = settlementVenues == null ? void 0 : settlementVenues.find((candidate) => candidate.trim().length > 0)) == null ? void 0 : _b.trim();
525
- return content && venue ? [{ venue, content }] : [];
526
- };
527
- var repeatsQuestion = (content, question) => {
528
- const normalizedQuestion = normalizeSettlementForCompare(question != null ? question : "");
529
- if (!normalizedQuestion) return false;
530
- return normalizeSettlementForCompare(content) === normalizedQuestion;
531
- };
532
- var isDuplicatedByVenueRules = (content, venueRules) => {
533
- const normalizedContent = normalizeSettlementForCompare(content);
534
- if (!normalizedContent) return false;
535
- return venueRules.some((rule) => {
536
- const normalizedRule = normalizeSettlementForCompare(rule.content);
537
- return normalizedRule.includes(normalizedContent);
538
- });
539
- };
540
- var SettlementVenueRules = ({
541
- rules,
542
- labels
543
- }) => {
544
- return /* @__PURE__ */ jsxs2("div", { className: "agg-settlement-venue-rules flex w-full flex-col items-start gap-4", children: [
545
- /* @__PURE__ */ jsx2("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.trading.settlementFullRulesTitle }),
546
- /* @__PURE__ */ jsx2("div", { className: "flex w-full flex-col items-start gap-4", children: rules.map((rule) => {
547
- const venueLabel = resolveSettlementVenueLabel(rule.venue, labels);
548
- return /* @__PURE__ */ jsxs2("details", { className: "w-full", children: [
549
- /* @__PURE__ */ jsxs2("summary", { className: "group/agg-settlement-rule flex w-fit cursor-pointer list-none items-center gap-2 text-agg-sm font-agg-normal leading-agg-5 text-agg-foreground transition-colors marker:hidden", children: [
550
- /* @__PURE__ */ jsx2(
551
- VenueLogo,
552
- {
553
- venue: rule.venue,
554
- size: "small",
555
- className: "size-4",
556
- ariaLabel: venueLabel
557
- }
558
- ),
559
- /* @__PURE__ */ jsx2("span", { className: "text-agg-foreground group-hover/agg-settlement-rule:text-agg-muted-foreground transition-colors", children: venueLabel }),
560
- /* @__PURE__ */ jsx2(
561
- "i",
562
- {
563
- className: cn(
564
- "fi fi-rr-angle-small-down text-[14px]!",
565
- "group-open/agg-settlement-rule:rotate-180",
566
- "size-3.5! shrink-0 text-agg-foreground group-hover/agg-settlement-rule:text-agg-muted-foreground transition-[colors,transform]"
567
- ),
568
- style: { fontSize: 14 },
569
- "aria-hidden": "true"
570
- }
571
- )
572
- ] }),
573
- /* @__PURE__ */ jsx2("div", { className: "mt-3 pl-6", children: rule.content ? /* @__PURE__ */ jsx2(SettlementTextRenderer, { content: rule.content }) : /* @__PURE__ */ jsx2("p", { className: "text-agg-sm font-agg-normal leading-agg-5 text-agg-muted-foreground", children: labels.trading.settlementValueUnavailable }) })
574
- ] }, rule.venue);
575
- }) })
576
- ] });
577
- };
578
- var Settlement = ({
579
- className,
580
- id = SETTLEMENT_SECTION_ID,
581
- sectionLabel = defaultSettlementSectionLabel,
582
- question,
583
- eventDescription,
584
- marketDescription,
585
- primaryRules,
586
- settlementDiff,
587
- settlementVenues,
588
- settlementVenueRules,
589
- isLoading = false
590
- }) => {
591
- var _a, _b, _c, _d, _e;
592
- const labels = useLabels();
593
- const blocks = useMemo(
594
- () => dedupeSettlementSources({
595
- eventDescription,
596
- marketDescription,
597
- primaryRules
598
- }),
599
- [eventDescription, marketDescription, primaryRules]
600
- );
601
- const isSingleVenueCluster = settlementVenues !== void 0 && settlementVenues.length < 2;
602
- const settlementDifferences = useMemo(
603
- () => isSingleVenueCluster ? [] : prepareSettlementDifferences(settlementDiff == null ? void 0 : settlementDiff.differences),
604
- [isSingleVenueCluster, settlementDiff == null ? void 0 : settlementDiff.differences]
605
- );
606
- const eventBlock = (_a = blocks.find((block) => block.key === "eventDescription")) != null ? _a : null;
607
- const marketBlock = (_b = blocks.find((block) => block.key === "marketDescription")) != null ? _b : null;
608
- const primaryRulesBlock = (_c = blocks.find((block) => block.key === "primaryRules")) != null ? _c : null;
609
- const venueRuleBlocks = useMemo(
610
- () => buildSettlementVenueRules({
611
- marketBlock,
612
- primaryRulesBlock,
613
- settlementVenues,
614
- settlementVenueRules
615
- }),
616
- [marketBlock, primaryRulesBlock, settlementVenues, settlementVenueRules]
617
- );
618
- const hasSettlementDifferences = settlementDifferences.length > 0;
619
- const hasVenueSettlementRules = venueRuleBlocks.length > 0;
620
- const standaloneEventBlock = eventBlock && !isDuplicatedByVenueRules(eventBlock.content, venueRuleBlocks) && !repeatsQuestion(eventBlock.content, question) ? eventBlock : null;
621
- const standaloneMarketBlock = hasVenueSettlementRules ? null : marketBlock;
622
- const standalonePrimaryRulesBlock = hasVenueSettlementRules ? null : primaryRulesBlock;
623
- const hasStandaloneSettlementText = hasVenueSettlementRules ? standaloneEventBlock !== null : blocks.length > 0;
624
- const hasSettlementContent = hasSettlementDifferences || hasVenueSettlementRules || hasStandaloneSettlementText;
625
- const defaultOpenDifferenceKey = (_e = (_d = settlementDifferences[0]) == null ? void 0 : _d.canonicalKey) != null ? _e : null;
626
- const [openDifferenceKeys, setOpenDifferenceKeys] = useState(
627
- () => defaultOpenDifferenceKey ? [defaultOpenDifferenceKey] : []
628
- );
629
- useEffect(() => {
630
- setOpenDifferenceKeys(defaultOpenDifferenceKey ? [defaultOpenDifferenceKey] : []);
631
- }, [defaultOpenDifferenceKey]);
632
- const handleToggleDifference = (canonicalKey) => {
633
- setOpenDifferenceKeys(
634
- (currentKeys) => currentKeys.includes(canonicalKey) ? currentKeys.filter((currentKey) => currentKey !== canonicalKey) : [...currentKeys, canonicalKey]
635
- );
636
- };
637
- if (isLoading) {
638
- return /* @__PURE__ */ jsx2(
639
- Skeleton,
640
- {
641
- ariaLabel: labels.trading.settlementLoading,
642
- className,
643
- view: skeletonViews.settlement
644
- }
645
- );
646
- }
647
- if (!hasSettlementContent) return null;
648
- const resolvedSectionLabel = sectionLabel === defaultSettlementSectionLabel ? labels.trading.settlementSection : sectionLabel;
649
- return /* @__PURE__ */ jsxs2(
650
- Card,
651
- {
652
- id,
653
- className: cn(
654
- "group/agg-settlement-card",
655
- "flex w-full flex-col items-start gap-4 rounded-agg-xl border border-agg-separator bg-agg-secondary p-5 shadow-none hover:shadow-none sm:gap-5",
656
- className
657
- ),
658
- children: [
659
- /* @__PURE__ */ jsxs2("div", { className: "agg-settlement-header flex w-full flex-col items-start gap-1 text-agg-muted-foreground sm:flex-row sm:items-center sm:justify-between sm:gap-4", children: [
660
- /* @__PURE__ */ jsx2("p", { className: "shrink-0 text-agg-xs font-agg-bold leading-agg-4 uppercase", children: resolvedSectionLabel }),
661
- question ? /* @__PURE__ */ jsx2("p", { className: "agg-settlement-question min-w-0 text-agg-sm font-agg-normal leading-agg-5 sm:max-w-[314px] sm:truncate", children: question }) : null
662
- ] }),
663
- /* @__PURE__ */ jsxs2("div", { className: "agg-settlement-sections flex w-full flex-col items-start gap-5", children: [
664
- hasStandaloneSettlementText ? /* @__PURE__ */ jsxs2("div", { className: "w-full", children: [
665
- standaloneEventBlock || standaloneMarketBlock ? /* @__PURE__ */ jsxs2(
666
- "div",
667
- {
668
- className: "agg-settlement-section agg-settlement-section-description",
669
- "data-source": "description",
670
- children: [
671
- standaloneEventBlock ? /* @__PURE__ */ jsx2("div", { "data-source": "eventDescription", children: /* @__PURE__ */ jsx2(SettlementTextRenderer, { content: standaloneEventBlock.content }) }) : null,
672
- standaloneEventBlock && standaloneMarketBlock ? /* @__PURE__ */ jsx2("hr", { className: "agg-settlement-divider my-4 border-0 border-t border-agg-separator" }) : null,
673
- standaloneMarketBlock ? /* @__PURE__ */ jsx2("div", { "data-source": "marketDescription", children: /* @__PURE__ */ jsx2(SettlementTextRenderer, { content: standaloneMarketBlock.content }) }) : null
674
- ]
675
- }
676
- ) : null,
677
- standalonePrimaryRulesBlock ? /* @__PURE__ */ jsxs2(
678
- "div",
679
- {
680
- className: "agg-settlement-section agg-settlement-section-primaryRules",
681
- "data-source": "primaryRules",
682
- children: [
683
- /* @__PURE__ */ jsx2("p", { className: "agg-settlement-section-label text-agg-xs font-agg-bold leading-agg-4 uppercase text-agg-muted-foreground mb-2", children: labels.trading.settlementPrimaryRulesLabel }),
684
- /* @__PURE__ */ jsx2(SettlementTextRenderer, { content: standalonePrimaryRulesBlock.content })
685
- ]
686
- }
687
- ) : null
688
- ] }) : null,
689
- hasSettlementDifferences ? /* @__PURE__ */ jsxs2("div", { className: "agg-settlement-differences flex w-full flex-col items-start gap-5", children: [
690
- /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2", children: [
691
- /* @__PURE__ */ jsx2("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.trading.settlementDifferencesTitle }),
692
- /* @__PURE__ */ jsx2("span", { className: "flex size-4 shrink-0 items-center justify-center rounded-agg-full bg-agg-primary text-[10px] font-agg-bold leading-[14px] text-agg-on-primary", children: settlementDifferences.length })
693
- ] }),
694
- /* @__PURE__ */ jsx2("div", { className: "flex w-full flex-col items-start gap-5", children: settlementDifferences.map((difference) => {
695
- const venueKeys = resolveDifferenceVenueKeys(difference, settlementVenues);
696
- const isExpanded = openDifferenceKeys.includes(difference.canonicalKey) && venueKeys.length > 0;
697
- return /* @__PURE__ */ jsxs2(
698
- "div",
699
- {
700
- id: getSettlementDifferenceId(id, difference.canonicalKey),
701
- className: "agg-settlement-difference flex w-full flex-col items-start gap-2 rounded-agg-lg",
702
- children: [
703
- /* @__PURE__ */ jsxs2(
704
- "button",
705
- {
706
- type: "button",
707
- className: "flex w-full cursor-pointer items-center gap-2 text-left group/agg-settlement-difference",
708
- "aria-expanded": isExpanded,
709
- onClick: () => handleToggleDifference(difference.canonicalKey),
710
- children: [
711
- /* @__PURE__ */ jsx2(
712
- "i",
713
- {
714
- className: cn(
715
- "fi",
716
- resolveDifferenceIconClassName(difference.canonicalKey),
717
- "inline-flex size-4! shrink-0 items-center justify-center text-[16px] leading-none text-agg-muted-foreground"
718
- ),
719
- "aria-hidden": "true"
720
- }
721
- ),
722
- /* @__PURE__ */ jsx2("p", { className: "min-w-0 text-agg-sm font-agg-normal leading-agg-5 text-agg-foreground group-hover/agg-settlement-difference:text-agg-muted-foreground transition-colors break-words [overflow-wrap:anywhere]", children: difference.title }),
723
- /* @__PURE__ */ jsx2(
724
- "i",
725
- {
726
- className: cn(
727
- "fi fi-rr-angle-small-down text-[14px]!",
728
- isExpanded && "rotate-180",
729
- "size-3.5! shrink-0 text-agg-foreground group-hover/agg-settlement-difference:text-agg-muted-foreground transition-[colors,transform]"
730
- ),
731
- style: { fontSize: 14 },
732
- "aria-hidden": "true"
733
- }
734
- )
735
- ]
736
- }
737
- ),
738
- isExpanded ? /* @__PURE__ */ jsx2("dl", { className: "flex w-full flex-col items-start gap-1 px-6", children: venueKeys.map((venue) => {
739
- var _a2;
740
- const venueValue = (_a2 = difference.perVenue[venue]) != null ? _a2 : labels.trading.settlementValueUnavailable;
741
- const venueLabel = resolveSettlementVenueLabel(venue, labels);
742
- return /* @__PURE__ */ jsxs2("div", { className: "flex w-full items-start gap-2", children: [
743
- /* @__PURE__ */ jsx2(
744
- VenueLogo,
745
- {
746
- venue,
747
- size: "small",
748
- className: "mt-0.5 size-4",
749
- ariaLabel: venueLabel
750
- }
751
- ),
752
- /* @__PURE__ */ jsx2("dt", { className: "w-[88px] shrink-0 text-agg-sm font-agg-normal leading-agg-5 text-agg-foreground", children: venueLabel }),
753
- /* @__PURE__ */ jsx2("dd", { className: "min-w-0 flex-1 text-agg-sm font-agg-normal leading-agg-5 text-agg-muted-foreground break-words [overflow-wrap:anywhere]", children: venueValue })
754
- ] }, venue);
755
- }) }) : null
756
- ]
757
- },
758
- difference.canonicalKey
759
- );
760
- }) })
761
- ] }) : null,
762
- hasVenueSettlementRules ? /* @__PURE__ */ jsxs2(Fragment2, { children: [
763
- hasSettlementDifferences || hasStandaloneSettlementText ? /* @__PURE__ */ jsx2("div", { className: "h-px w-full bg-agg-separator" }) : null,
764
- /* @__PURE__ */ jsx2(SettlementVenueRules, { rules: venueRuleBlocks, labels })
765
- ] }) : null
766
- ] })
767
- ]
768
- }
769
- );
770
- };
771
- Settlement.displayName = "Settlement";
772
-
773
- // src/events/item-details/event-list-item-details.utils.ts
774
- import dayjs2 from "dayjs";
775
- var compareOutcomeSelectorLabels = (leftLabel, rightLabel) => {
776
- const leftSemanticLabel = toSemanticLabel(leftLabel);
777
- const rightSemanticLabel = toSemanticLabel(rightLabel);
778
- const binaryOrderByLabel = /* @__PURE__ */ new Map([
779
- ["yes", 0],
780
- ["no", 1]
781
- ]);
782
- const leftBinaryOrder = binaryOrderByLabel.get(leftSemanticLabel);
783
- const rightBinaryOrder = binaryOrderByLabel.get(rightSemanticLabel);
784
- if (leftBinaryOrder != null && rightBinaryOrder != null) {
785
- return leftBinaryOrder - rightBinaryOrder;
786
- }
787
- const leftDate = isDateLikeLabel(leftLabel) ? dayjs2(leftLabel).valueOf() : null;
788
- const rightDate = isDateLikeLabel(rightLabel) ? dayjs2(rightLabel).valueOf() : null;
789
- if (leftDate != null && rightDate != null && leftDate !== rightDate) {
790
- return leftDate - rightDate;
791
- }
792
- const parseNumericLabelValue = (value) => {
793
- const matchedValue = value.replace(/,/g, "").match(/-?\d+(\.\d+)?/);
794
- if (!matchedValue) return null;
795
- const parsedValue = Number(matchedValue[0]);
796
- return Number.isFinite(parsedValue) ? parsedValue : null;
797
- };
798
- const leftNumericValue = parseNumericLabelValue(leftLabel);
799
- const rightNumericValue = parseNumericLabelValue(rightLabel);
800
- if (leftNumericValue != null && rightNumericValue != null && leftNumericValue !== rightNumericValue) {
801
- return leftNumericValue - rightNumericValue;
802
- }
803
- return leftLabel.localeCompare(rightLabel, void 0, {
804
- numeric: true,
805
- sensitivity: "base"
806
- });
807
- };
808
- var sortOutcomeSelectorOutcomes = (outcomes) => {
809
- return [...outcomes].sort(
810
- (leftOutcome, rightOutcome) => compareOutcomeSelectorLabels(
811
- resolveOutcomeTitle(leftOutcome),
812
- resolveOutcomeTitle(rightOutcome)
813
- )
814
- );
815
- };
816
- var normalizeLabel = (value) => {
817
- return value.trim().toLowerCase().replace(/[_-]+/g, " ").replace(/[^\p{L}\p{N}\s]/gu, " ").replace(/\s+/g, " ");
818
- };
819
- var positiveOutcomeKeys = /* @__PURE__ */ new Set(["yes", "y", "true", "up", "buy", "long"]);
820
- var negativeOutcomeKeys = /* @__PURE__ */ new Set(["no", "n", "false", "down", "sell", "short"]);
821
- var toSemanticLabel = (value) => {
822
- const normalizedValue = normalizeLabel(value);
823
- if (positiveOutcomeKeys.has(normalizedValue)) return "yes";
824
- if (negativeOutcomeKeys.has(normalizedValue)) return "no";
825
- return normalizedValue;
826
- };
827
- var isDateLikeLabel = (value) => {
828
- if (!value.trim()) return false;
829
- return dayjs2(value).isValid();
830
- };
831
- var CHART_RANGE_PRIORITY = ["1H", "6H", "1D", "1W", "1M", "ALL"];
832
- var RANGE_SECONDS_BY_TIME_RANGE = {
833
- "1H": 60 * 60,
834
- "6H": 6 * 60 * 60,
835
- "1D": 24 * 60 * 60,
836
- "1W": 7 * 24 * 60 * 60,
837
- "1M": 30 * 24 * 60 * 60,
838
- ALL: 6 * 30 * 24 * 60 * 60
839
- };
840
- var toUnixTimestamp = (value) => {
841
- if (!value) return null;
842
- const parsedValue = dayjs2(value);
843
- if (!parsedValue.isValid()) return null;
844
- return parsedValue.unix();
845
- };
846
- var isResolvedMarketStatus = (status) => {
847
- if (!status) return false;
848
- const normalizedStatus = status.trim().toLowerCase();
849
- return normalizedStatus.includes("resolved") || normalizedStatus.includes("closed") || normalizedStatus.includes("settled") || normalizedStatus.includes("final");
850
- };
851
- var resolveInitialEventDetailsChartRange = ({
852
- chartData,
853
- event,
854
- fallbackRange,
855
- nowSec = dayjs2().unix(),
856
- selectedMarket
857
- }) => {
858
- var _a;
859
- const scopedMarkets = selectedMarket ? [selectedMarket] : event.venueMarkets;
860
- const resolveHistoryStart = (startDate, creationDate) => {
861
- const start = toUnixTimestamp(startDate);
862
- if (start != null && start <= nowSec) return start;
863
- const created = toUnixTimestamp(creationDate);
864
- if (created != null && created <= nowSec) return created;
865
- return null;
866
- };
867
- const preferredEventStart = resolveHistoryStart(event.startDate, event.creationDate);
868
- const marketStartCandidates = scopedMarkets.map((market) => resolveHistoryStart(market.startDate, market.creationDate)).filter((value) => value != null);
869
- const metadataStarts = [preferredEventStart, ...marketStartCandidates].filter(
870
- (value) => value != null
871
- );
872
- const metadataEnds = [
873
- toUnixTimestamp(event.endDate),
874
- ...scopedMarkets.flatMap((market) => [
875
- toUnixTimestamp(market.endDate),
876
- toUnixTimestamp(market.resolutionDate)
877
- ])
878
- ].filter((value) => value != null);
879
- const historyTimestamps = chartData == null ? [] : Object.values(chartData.venues).flatMap((venueData) => [
880
- ...venueData.candles.map((candle) => candle.time),
881
- ...venueData.liveCandle ? [venueData.liveCandle.time] : []
882
- ]);
883
- const startCandidates = [...metadataStarts, ...historyTimestamps];
884
- if (startCandidates.length === 0) {
885
- return fallbackRange != null ? fallbackRange : null;
886
- }
887
- const marketResolved = [event.status, ...scopedMarkets.map((market) => market.status)].some(
888
- isResolvedMarketStatus
889
- );
890
- const isUsingSharedOverlapStart = scopedMarkets.length > 1 && marketStartCandidates.length === scopedMarkets.length;
891
- const startTs = isUsingSharedOverlapStart ? Math.max(...marketStartCandidates) : Math.min(...startCandidates);
892
- const endTs = Math.max(
893
- ...marketResolved && metadataEnds.length > 0 ? [nowSec, ...metadataEnds, ...historyTimestamps] : [nowSec, ...historyTimestamps]
894
- );
895
- const spanSeconds = Math.max(0, endTs - startTs);
896
- if (spanSeconds <= 0) {
897
- return fallbackRange != null ? fallbackRange : null;
898
- }
899
- if (!marketResolved && spanSeconds > RANGE_SECONDS_BY_TIME_RANGE["1M"]) {
900
- return "1M";
901
- }
902
- const requiredSeconds = spanSeconds * (isUsingSharedOverlapStart ? 1 : marketResolved ? 1.05 : 1.2);
903
- const matchingRange = CHART_RANGE_PRIORITY.find((range) => {
904
- return RANGE_SECONDS_BY_TIME_RANGE[range] >= requiredSeconds;
905
- });
906
- return (_a = matchingRange != null ? matchingRange : fallbackRange) != null ? _a : "ALL";
907
- };
908
- var matchOutcomeByLabel = (outcome, selectedOutcomeLabel) => {
909
- const normalizedSelectedLabel = normalizeLabel(selectedOutcomeLabel);
910
- const semanticSelectedLabel = toSemanticLabel(selectedOutcomeLabel);
911
- const candidates = [resolveOutcomeTitle(outcome), outcome.label, outcome.title].filter(
912
- (candidate) => typeof candidate === "string" && Boolean(candidate.trim())
913
- ).map(normalizeLabel);
914
- return candidates.some((candidate) => {
915
- return candidate === normalizedSelectedLabel || toSemanticLabel(candidate) === semanticSelectedLabel;
916
- });
917
- };
918
- var resolveOutcomesByVenue = (venueMarkets, selectedOutcomeLabel) => {
919
- return venueMarkets.map((market) => {
920
- const matchedOutcome = sortOutcomes(market.venueMarketOutcomes).find((outcome) => {
921
- return matchOutcomeByLabel(outcome, selectedOutcomeLabel);
922
- });
923
- if (!matchedOutcome) return null;
924
- return {
925
- venue: market.venue,
926
- market,
927
- outcome: matchedOutcome
928
- };
929
- }).filter((item) => item != null);
930
- };
931
- var resolveSeriesColor = (venue, index, isDarkTheme = false) => {
932
- var _a;
933
- const colorFromVenue = resolveVenueLineColor(venue, isDarkTheme);
934
- if (colorFromVenue) return colorFromVenue;
935
- return (_a = fallbackLineColors[index % fallbackLineColors.length]) != null ? _a : DEFAULT_VENUE_COLOR;
936
- };
937
- var toChartDisplayValue = (value, transformProbability) => {
938
- if (value == null || !Number.isFinite(value)) return void 0;
939
- return transformProbability(value) * 100;
940
- };
941
- var marketChartCandleToLineChartPoint = (candle, transformProbability) => {
942
- var _a, _b, _c, _d;
943
- const open = (_a = toChartDisplayValue(candle.open, transformProbability)) != null ? _a : 0;
944
- const high = (_b = toChartDisplayValue(candle.high, transformProbability)) != null ? _b : open;
945
- const low = (_c = toChartDisplayValue(candle.low, transformProbability)) != null ? _c : open;
946
- const close = (_d = toChartDisplayValue(candle.close, transformProbability)) != null ? _d : open;
947
- const average = toChartDisplayValue(
948
- candle.source === "rest" ? candle.mean : void 0,
949
- transformProbability
950
- );
951
- return {
952
- time: candle.time,
953
- value: average != null ? average : close,
954
- open,
955
- high,
956
- low,
957
- close
958
- };
959
- };
960
- var marketChartCandleToScaledCandlePoint = (candle, transformProbability) => {
961
- var _a, _b, _c, _d;
962
- const point = marketChartCandleToLineChartPoint(candle, transformProbability);
963
- return {
964
- time: point.time,
965
- open: (_a = point.open) != null ? _a : point.value,
966
- high: (_b = point.high) != null ? _b : point.value,
967
- low: (_c = point.low) != null ? _c : point.value,
968
- close: (_d = point.close) != null ? _d : point.value,
969
- v: candle.volume
970
- };
971
- };
972
- var venueCandlesToLinePoints = (venueData, transformProbability) => {
973
- const candles = venueData.liveCandle && !venueData.candles.some((candle) => {
974
- var _a;
975
- return candle.time === ((_a = venueData.liveCandle) == null ? void 0 : _a.time);
976
- }) ? [...venueData.candles, venueData.liveCandle] : venueData.liveCandle ? venueData.candles.map(
977
- (candle) => {
978
- var _a;
979
- return candle.time === ((_a = venueData.liveCandle) == null ? void 0 : _a.time) ? venueData.liveCandle : candle;
980
- }
981
- ) : venueData.candles;
982
- return candles.map((candle) => marketChartCandleToLineChartPoint(candle, transformProbability));
983
- };
984
- var resolveAggregatedCandleSource = (candles) => {
985
- if (candles.some((candle) => candle.source === "trade")) return "trade";
986
- if (candles.some((candle) => candle.source === "ws")) return "ws";
987
- return "rest";
988
- };
989
- var aggregateMarketChartCandles = (candles) => {
990
- const candlesByTime = /* @__PURE__ */ new Map();
991
- candles.forEach((candle) => {
992
- var _a;
993
- const existingCandles = (_a = candlesByTime.get(candle.time)) != null ? _a : [];
994
- existingCandles.push(candle);
995
- candlesByTime.set(candle.time, existingCandles);
996
- });
997
- return [...candlesByTime.entries()].sort((left, right) => left[0] - right[0]).map(([time, timeCandles]) => {
998
- var _a, _b, _c, _d;
999
- const open = (_a = resolveAverageProbability(timeCandles.map((candle) => candle.open))) != null ? _a : 0;
1000
- const high = (_b = resolveAverageProbability(timeCandles.map((candle) => candle.high))) != null ? _b : open;
1001
- const low = (_c = resolveAverageProbability(timeCandles.map((candle) => candle.low))) != null ? _c : open;
1002
- const close = (_d = resolveAverageProbability(timeCandles.map((candle) => candle.close))) != null ? _d : open;
1003
- const volumeValues = timeCandles.map((candle) => candle.volume).filter((value) => value != null);
1004
- return {
1005
- time,
1006
- open,
1007
- high,
1008
- low,
1009
- close,
1010
- volume: volumeValues.length > 0 ? volumeValues.reduce((sum, value) => sum + value, 0) : null,
1011
- source: resolveAggregatedCandleSource(timeCandles)
1012
- };
1013
- });
1014
- };
1015
- var resolveChartVenueEntries = ({
1016
- chartData,
1017
- selectedVenue
1018
- }) => {
1019
- if (!chartData) return [];
1020
- const venueEntries = Object.entries(chartData.venues);
1021
- if (!selectedVenue) return venueEntries;
1022
- return venueEntries.filter(([venue]) => venue === selectedVenue);
1023
- };
1024
- var resolveMarketChartDisplaySeries = ({
1025
- chartData,
1026
- selectedVenue,
1027
- transformProbability
1028
- }) => {
1029
- const venueEntries = resolveChartVenueEntries({ chartData, selectedVenue });
1030
- if (venueEntries.length === 0) return [];
1031
- if (selectedVenue) {
1032
- return venueEntries.map(([venue, venueData]) => ({
1033
- venue,
1034
- points: venueCandlesToLinePoints(venueData, transformProbability)
1035
- })).filter((item) => item.points.length > 0);
1036
- }
1037
- const aggregatedCandles = aggregateMarketChartCandles(
1038
- venueEntries.flatMap(([, venueData]) => {
1039
- const closed = venueData.candles;
1040
- if (!venueData.liveCandle) return closed;
1041
- const hasOverlap = closed.some((candle) => {
1042
- var _a;
1043
- return candle.time === ((_a = venueData.liveCandle) == null ? void 0 : _a.time);
1044
- });
1045
- return hasOverlap ? closed.map(
1046
- (candle) => {
1047
- var _a;
1048
- return candle.time === ((_a = venueData.liveCandle) == null ? void 0 : _a.time) ? venueData.liveCandle : candle;
1049
- }
1050
- ) : [...closed, venueData.liveCandle];
1051
- })
1052
- );
1053
- if (aggregatedCandles.length === 0) return [];
1054
- return [
1055
- {
1056
- venue: "aggregate",
1057
- points: aggregatedCandles.map(
1058
- (candle) => marketChartCandleToLineChartPoint(candle, transformProbability)
1059
- )
1060
- }
1061
- ];
1062
- };
1063
- var resolveAverageProbability = (values) => {
1064
- const validValues = values.filter((value) => value != null);
1065
- if (validValues.length === 0) return void 0;
1066
- return validValues.reduce((sum, value) => sum + value, 0) / validValues.length;
1067
- };
1068
- var resolveMarketChartLiveState = ({
1069
- chartData,
1070
- selectedVenue,
1071
- transformProbability
1072
- }) => {
1073
- var _a, _b;
1074
- if (!chartData) {
1075
- return {
1076
- liveCandle: null,
1077
- lineValue: void 0,
1078
- live: false
1079
- };
1080
- }
1081
- const venueEntries = selectedVenue ? Object.entries(chartData.venues).filter(([venue]) => venue === selectedVenue) : Object.entries(chartData.venues);
1082
- if (venueEntries.length === 0) {
1083
- return {
1084
- liveCandle: null,
1085
- lineValue: void 0,
1086
- live: false
1087
- };
1088
- }
1089
- if (selectedVenue) {
1090
- const selectedVenueData = (_a = venueEntries[0]) == null ? void 0 : _a[1];
1091
- const lineValue2 = (selectedVenueData == null ? void 0 : selectedVenueData.lineValue) != null ? toChartDisplayValue(selectedVenueData.lineValue, transformProbability) : void 0;
1092
- return {
1093
- liveCandle: (selectedVenueData == null ? void 0 : selectedVenueData.liveCandle) ? marketChartCandleToScaledCandlePoint(selectedVenueData.liveCandle, transformProbability) : null,
1094
- lineValue: lineValue2,
1095
- live: (selectedVenueData == null ? void 0 : selectedVenueData.liveCandle) != null
1096
- };
1097
- }
1098
- const liveCandles = aggregateMarketChartCandles(
1099
- venueEntries.flatMap(([, venueData]) => venueData.liveCandle ? [venueData.liveCandle] : [])
1100
- );
1101
- const aggregatedLiveCandle = (_b = liveCandles[liveCandles.length - 1]) != null ? _b : null;
1102
- const primaryLineValue = resolveAverageProbability(
1103
- venueEntries.map(([, venueData]) => venueData.lineValue)
1104
- );
1105
- const lineValue = primaryLineValue != null ? toChartDisplayValue(primaryLineValue, transformProbability) : void 0;
1106
- return {
1107
- liveCandle: aggregatedLiveCandle ? marketChartCandleToScaledCandlePoint(aggregatedLiveCandle, transformProbability) : null,
1108
- lineValue,
1109
- live: aggregatedLiveCandle != null
1110
- };
1111
- };
1112
-
1113
- // src/events/market-details/market-details.utils.ts
1114
- import { safeParse as safeParse2 } from "@agg-build/sdk";
1115
- import dayjs3 from "dayjs";
1116
- var VALID_TABS = /* @__PURE__ */ new Set(["order-book", "graph", "other"]);
1117
- var isMarketDetailsTab = (v) => typeof v === "string" && VALID_TABS.has(v);
1118
- var normalizeLabel2 = (value) => {
1119
- return value.trim().toLowerCase();
1120
- };
1121
- var hasBinaryLabels = (labels) => {
1122
- const normalizedLabels = labels.map(normalizeLabel2);
1123
- return normalizedLabels.includes("yes") && normalizedLabels.includes("no");
1124
- };
1125
- var resolveInitialTab = (defaultTab) => {
1126
- const parsedTab = safeParse2(defaultTab, isMarketDetailsTab);
1127
- if (parsedTab.success) return parsedTab.data;
1128
- return "order-book";
1129
- };
1130
- var resolveMarketFromVenueMarkets = (venueMarkets, marketId) => {
1131
- var _a, _b, _c, _d, _e, _f;
1132
- if (!venueMarkets || venueMarkets.length === 0) return void 0;
1133
- if (!marketId) {
1134
- const normalizedVenueMarkets = normalizeVenueMarketCluster(venueMarkets);
1135
- const primary = selectPrimaryVenueMarket(normalizedVenueMarkets);
1136
- const totalVolume2 = normalizedVenueMarkets.reduce((sum, vm) => {
1137
- return sum + (typeof vm.volume === "number" ? vm.volume : 0);
1138
- }, 0);
1139
- return {
1140
- id: (_c = (_b = primary == null ? void 0 : primary.id) != null ? _b : (_a = normalizedVenueMarkets[0]) == null ? void 0 : _a.id) != null ? _c : venueMarkets[0].id,
1141
- venueMarkets: normalizedVenueMarkets,
1142
- volume: totalVolume2 || (primary == null ? void 0 : primary.volume),
1143
- status: primary == null ? void 0 : primary.status,
1144
- startDate: primary == null ? void 0 : primary.startDate,
1145
- endDate: primary == null ? void 0 : primary.endDate,
1146
- creationDate: primary == null ? void 0 : primary.creationDate,
1147
- question: (_f = (_e = primary == null ? void 0 : primary.question) != null ? _e : (_d = normalizedVenueMarkets[0]) == null ? void 0 : _d.question) != null ? _f : venueMarkets[0].question
1148
- };
1149
- }
1150
- const matchedVenueMarket = normalizeVenueMarketCluster(venueMarkets).find(
1151
- (vm) => vm.id === marketId || vm.externalIdentifier === marketId
1152
- );
1153
- if (!matchedVenueMarket) return void 0;
1154
- const siblingVenueMarkets = normalizeVenueMarketCluster(venueMarkets, matchedVenueMarket.id);
1155
- const totalVolume = siblingVenueMarkets.reduce((sum, vm) => {
1156
- return sum + (typeof vm.volume === "number" ? vm.volume : 0);
1157
- }, 0);
1158
- return {
1159
- id: matchedVenueMarket.id,
1160
- venueMarkets: siblingVenueMarkets,
1161
- volume: totalVolume || matchedVenueMarket.volume,
1162
- status: matchedVenueMarket.status,
1163
- startDate: matchedVenueMarket.startDate,
1164
- endDate: matchedVenueMarket.endDate,
1165
- creationDate: matchedVenueMarket.creationDate,
1166
- question: matchedVenueMarket.question
1167
- };
1168
- };
1169
- var resolveDisplayOutcomeLabels = (labels) => {
1170
- if (!hasBinaryLabels(labels)) return labels;
1171
- return ["Yes", "No"].filter(
1172
- (label) => labels.some((value) => normalizeLabel2(value) === normalizeLabel2(label))
1173
- );
1174
- };
1175
- var TRAILING_LINE_VALUE_PATTERN = /^(.*?)(\s+[+-]?\d+(?:\.\d+)?)$/;
1176
- var resolveLineOutcomeDisplayParts = (label, title) => {
1177
- var _a, _b;
1178
- const sourceText = (title == null ? void 0 : title.trim()) || label.trim();
1179
- const match = TRAILING_LINE_VALUE_PATTERN.exec(sourceText);
1180
- if (!match) {
1181
- return {
1182
- title: (title == null ? void 0 : title.trim()) || null,
1183
- lineLabel: null
1184
- };
1185
- }
1186
- const baseTitle = ((_a = match[1]) == null ? void 0 : _a.trim()) || null;
1187
- const lineLabel = ((_b = match[2]) == null ? void 0 : _b.trim()) || null;
1188
- return {
1189
- title: baseTitle,
1190
- lineLabel
1191
- };
1192
- };
1193
- var formatScopedLineValue = (value) => {
1194
- return Number.isInteger(value) ? String(value) : value.toFixed(1);
1195
- };
1196
- var resolveScopedMarketLineLabel = ({
1197
- outcomeIndex,
1198
- scopedMarket
1199
- }) => {
1200
- var _a;
1201
- const lineValue = scopedMarket == null ? void 0 : scopedMarket.lineValue;
1202
- if (lineValue == null) return null;
1203
- const sportsMarketType = normalizeLabel2((_a = scopedMarket == null ? void 0 : scopedMarket.sportsMarketType) != null ? _a : "");
1204
- if (sportsMarketType === "spread") {
1205
- const directionalLineValue = outcomeIndex === 0 ? lineValue : lineValue * -1;
1206
- const prefix = directionalLineValue > 0 ? "+" : "";
1207
- return `${prefix}${formatScopedLineValue(directionalLineValue)}`;
1208
- }
1209
- return formatScopedLineValue(lineValue);
1210
- };
1211
- var resolveMarketDetailsOutcomeLabels = (venueMarkets) => {
1212
- var _a;
1213
- const primaryMarket = selectPrimaryVenueMarket(venueMarkets);
1214
- const labels = /* @__PURE__ */ new Map();
1215
- const upsertOutcome = (outcome) => {
1216
- var _a2;
1217
- const label = outcome.label.trim();
1218
- if (!label) return;
1219
- const key = normalizeLabel2(label);
1220
- const title = outcome.title ? (_a2 = outcome.title) == null ? void 0 : _a2.trim() : null;
1221
- const existing = labels.get(key);
1222
- if (!existing) {
1223
- labels.set(key, { label, title });
1224
- return;
1225
- }
1226
- if (existing.title == null && title != null) {
1227
- labels.set(key, __spreadProps(__spreadValues({}, existing), { title }));
1228
- }
1229
- };
1230
- ((_a = primaryMarket == null ? void 0 : primaryMarket.venueMarketOutcomes) != null ? _a : []).forEach(upsertOutcome);
1231
- venueMarkets.forEach((market) => sortOutcomes(market.venueMarketOutcomes).forEach(upsertOutcome));
1232
- return [...labels.values()];
1233
- };
1234
- var resolveInitialOutcomeLabel = (labels, defaultOutcomeLabel) => {
1235
- var _a;
1236
- if (labels.length === 0) return void 0;
1237
- if (defaultOutcomeLabel) {
1238
- const matchedLabel = labels.find(
1239
- (label) => normalizeLabel2(label) === normalizeLabel2(defaultOutcomeLabel)
1240
- );
1241
- if (matchedLabel) return matchedLabel;
1242
- }
1243
- if (hasBinaryLabels(labels)) {
1244
- return (_a = labels.find((label) => normalizeLabel2(label) === "yes")) != null ? _a : labels[0];
1245
- }
1246
- return labels[0];
1247
- };
1248
- var resolveScopedSelectedOutcome = ({
1249
- venueMarkets,
1250
- selectedOutcomeId,
1251
- defaultOutcomeLabel,
1252
- suppressFallbackWhenSelectedOutcomeOutOfScope
1253
- }) => {
1254
- var _a, _b;
1255
- if (selectedOutcomeId) {
1256
- const matchingOutcome = venueMarkets.flatMap((market) => market.venueMarketOutcomes).find((outcome) => outcome.id === selectedOutcomeId);
1257
- if (matchingOutcome) {
1258
- return {
1259
- outcomeId: matchingOutcome.id,
1260
- outcomeLabel: matchingOutcome.label
1261
- };
1262
- }
1263
- }
1264
- if (suppressFallbackWhenSelectedOutcomeOutOfScope) {
1265
- return {
1266
- outcomeId: null,
1267
- outcomeLabel: void 0
1268
- };
1269
- }
1270
- const outcomeLabels = resolveDisplayOutcomeLabels(
1271
- resolveMarketDetailsOutcomeLabels(venueMarkets).map((outcome) => outcome.label)
1272
- );
1273
- const outcomeLabel = resolveInitialOutcomeLabel(outcomeLabels, defaultOutcomeLabel);
1274
- const outcomeId = outcomeLabel ? (_b = (_a = resolveOutcomesByVenue(venueMarkets, outcomeLabel)[0]) == null ? void 0 : _a.outcome.id) != null ? _b : null : null;
1275
- return {
1276
- outcomeId,
1277
- outcomeLabel
1278
- };
1279
- };
1280
- var resolveAverageProbabilityByLabel = (venueMarkets, labels) => {
1281
- return new Map(
1282
- labels.map((label) => {
1283
- const matchingOutcomes = resolveOutcomesByVenue(venueMarkets, label);
1284
- const probabilities = matchingOutcomes.map((item) => normalizeProbability(item.outcome.price)).filter((value) => value != null);
1285
- if (!probabilities.length) {
1286
- return [label, void 0];
1287
- }
1288
- const averageProbability = probabilities.reduce((sum, value) => sum + value, 0) / probabilities.length;
1289
- return [label, averageProbability];
1290
- })
1291
- );
1292
- };
1293
- var formatProbabilityPercent = (value, formatPercent) => {
1294
- return formatMarketProbabilityPercent(value, formatPercent);
1295
- };
1296
- var resolveOutcomeTone = (label, index) => {
1297
- const normalizedLabel = normalizeLabel2(label);
1298
- if (normalizedLabel === "yes" || normalizedLabel === "up" || normalizedLabel === "buy") {
1299
- return "positive";
1300
- }
1301
- if (normalizedLabel === "no" || normalizedLabel === "down" || normalizedLabel === "sell") {
1302
- return "negative";
1303
- }
1304
- return index === 0 ? "positive" : "negative";
1305
- };
1306
- var resolveHeaderOutcomeItems = (venueMarkets, scopedMarket, variant) => {
1307
- const outcomes = resolveMarketDetailsOutcomeLabels(venueMarkets);
1308
- const labels = resolveDisplayOutcomeLabels(outcomes.map((outcome) => outcome.label));
1309
- const probabilityByLabel = resolveAverageProbabilityByLabel(venueMarkets, labels);
1310
- return labels.map((label, index) => {
1311
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
1312
- const scopedOutcome = (_a = scopedMarket == null ? void 0 : scopedMarket.venueMarketOutcomes) == null ? void 0 : _a.find(
1313
- (outcome) => normalizeLabel2(outcome.label) === normalizeLabel2(label)
1314
- );
1315
- const scopedTitle = ((_b = scopedOutcome == null ? void 0 : scopedOutcome.title) == null ? void 0 : _b.trim()) || null;
1316
- const fallbackTitle = (_d = (_c = outcomes.find((outcome) => normalizeLabel2(outcome.label) === normalizeLabel2(label))) == null ? void 0 : _c.title) != null ? _d : null;
1317
- const resolvedTitle = scopedOutcome ? scopedTitle : fallbackTitle;
1318
- const lineDisplayParts = variant === "line" ? resolveLineOutcomeDisplayParts(label, resolvedTitle) : { title: resolvedTitle, lineLabel: null };
1319
- const fallbackLineLabel = variant === "line" ? resolveScopedMarketLineLabel({
1320
- outcomeIndex: index,
1321
- scopedMarket
1322
- }) : null;
1323
- const sportsMarketType = normalizeLabel2((_e = scopedMarket == null ? void 0 : scopedMarket.sportsMarketType) != null ? _e : "");
1324
- const fallbackOutcomeByVenue = resolveOutcomesByVenue(venueMarkets, label)[0];
1325
- const outcomeId = (_g = (_f = scopedOutcome == null ? void 0 : scopedOutcome.id) != null ? _f : fallbackOutcomeByVenue == null ? void 0 : fallbackOutcomeByVenue.outcome.id) != null ? _g : "";
1326
- const venue = (_k = (_j = (_h = scopedMarket == null ? void 0 : scopedMarket.venue) != null ? _h : fallbackOutcomeByVenue == null ? void 0 : fallbackOutcomeByVenue.venue) != null ? _j : (_i = venueMarkets[0]) == null ? void 0 : _i.venue) != null ? _k : "polymarket";
1327
- return {
1328
- title: lineDisplayParts.title,
1329
- id: outcomeId,
1330
- venue,
1331
- label,
1332
- lineLabel: sportsMarketType === "total" ? fallbackLineLabel != null ? fallbackLineLabel : lineDisplayParts.lineLabel : (_l = lineDisplayParts.lineLabel) != null ? _l : fallbackLineLabel,
1333
- probability: probabilityByLabel.get(label),
1334
- tone: resolveOutcomeTone(label, index),
1335
- variant
1336
- };
1337
- });
1338
- };
1339
- var resolveSubtitle = ({
1340
- venueMarkets,
1341
- volume,
1342
- formatCompactCurrency,
1343
- labels
1344
- }) => {
1345
- const { venueCount } = getVenueSummary(venueMarkets);
1346
- const parts = [
1347
- `${venueCount} ${venueCount === 1 ? labels.marketDetails.meta.venueSingular : labels.marketDetails.meta.venuePlural}`
1348
- ];
1349
- if (typeof volume === "number" && volume > 0) {
1350
- parts.push(`${formatCompactCurrency(volume)} ${labels.marketDetails.meta.volumeSuffix}`);
1351
- }
1352
- return parts.join(" \xB7 ");
1353
- };
1354
- var resolveOtherTabRows = (market, labels) => {
1355
- var _a;
1356
- const rows = [];
1357
- rows.push({
1358
- label: labels.marketDetails.meta.status,
1359
- value: (_a = market.status) != null ? _a : labels.marketDetails.meta.unknown
1360
- });
1361
- if (market.creationDate) {
1362
- rows.push({
1363
- label: labels.marketDetails.meta.created,
1364
- value: dayjs3(market.creationDate).format("MMM D, YYYY")
1365
- });
1366
- }
1367
- if (market.startDate) {
1368
- rows.push({
1369
- label: labels.marketDetails.meta.opens,
1370
- value: dayjs3(market.startDate).format("MMM D, YYYY")
1371
- });
1372
- }
1373
- if (market.endDate) {
1374
- rows.push({
1375
- label: labels.marketDetails.meta.closes,
1376
- value: dayjs3(market.endDate).format("MMM D, YYYY")
1377
- });
1378
- }
1379
- if (rows.length === 1) {
1380
- rows.push({
1381
- label: labels.marketDetails.meta.markets,
1382
- value: `${market.venueMarkets.length}`
1383
- });
1384
- }
1385
- return rows;
1386
- };
1387
- var buildMarketDetailsModel = ({
1388
- venueMarkets,
1389
- marketId,
1390
- title,
1391
- image,
1392
- formatCompactCurrency,
1393
- labels
1394
- }) => {
1395
- var _a, _b, _c, _d;
1396
- const market = resolveMarketFromVenueMarkets(venueMarkets, marketId);
1397
- if (!market) return void 0;
1398
- const primaryVenueMarket = selectPrimaryVenueMarket(market.venueMarkets);
1399
- if (!primaryVenueMarket) return void 0;
1400
- const scopedVenueMarket = (_a = market.venueMarkets.find((venueMarket) => venueMarket.id === market.id)) != null ? _a : primaryVenueMarket;
1401
- const resolvedTitle = (title == null ? void 0 : title.trim()) || scopedVenueMarket.question || market.question || primaryVenueMarket.question;
1402
- const resolvedImage = (_c = (_b = typeof image === "string" && image.trim() ? image : void 0) != null ? _b : typeof scopedVenueMarket.image === "string" && scopedVenueMarket.image.trim() ? scopedVenueMarket.image : void 0) != null ? _c : typeof primaryVenueMarket.image === "string" && primaryVenueMarket.image.trim() ? primaryVenueMarket.image : void 0;
1403
- const resolvedVolume = typeof market.volume === "number" ? market.volume : (_d = primaryVenueMarket.volume) != null ? _d : void 0;
1404
- const subtitle = resolveSubtitle({
1405
- venueMarkets: market.venueMarkets,
1406
- volume: resolvedVolume,
1407
- formatCompactCurrency,
1408
- labels
1409
- });
1410
- const outcomeLabels = resolveDisplayOutcomeLabels(
1411
- resolveMarketDetailsOutcomeLabels(market.venueMarkets).map((outcome) => outcome.label)
1412
- );
1413
- const probabilityByLabel = resolveAverageProbabilityByLabel(market.venueMarkets, outcomeLabels);
1414
- return {
1415
- market,
1416
- primaryVenueMarket,
1417
- title: resolvedTitle,
1418
- image: resolvedImage,
1419
- subtitle,
1420
- outcomeLabels,
1421
- probabilityByLabel
1422
- };
1423
- };
1424
-
1425
- // src/events/shared/display-reference-price.ts
1426
- var getDisplayReferencePrice = ({
1427
- bestMidpoint,
1428
- fallbackPrice
1429
- }) => {
1430
- var _a;
1431
- return (_a = bestMidpoint != null ? bestMidpoint : fallbackPrice) != null ? _a : void 0;
1432
- };
1433
-
1434
- // src/events/shared/select-outcome-price.ts
1435
- var selectOutcomePrice = ({
1436
- outcomeId,
1437
- selection,
1438
- bestPrices,
1439
- bestMidpointsByOutcomeId,
1440
- livePrices,
1441
- fallbackPrice
1442
- }) => {
1443
- var _a, _b;
1444
- if (!outcomeId) return void 0;
1445
- if (selection === "buy") {
1446
- const bestAsk = (_a = bestPrices == null ? void 0 : bestPrices.get(outcomeId)) == null ? void 0 : _a.bestAsk;
1447
- if (bestAsk != null) return bestAsk;
1448
- } else if (selection === "sell") {
1449
- const bestBid = (_b = bestPrices == null ? void 0 : bestPrices.get(outcomeId)) == null ? void 0 : _b.bestBid;
1450
- if (bestBid != null) return bestBid;
1451
- }
1452
- const livePrice = livePrices == null ? void 0 : livePrices.get(outcomeId);
1453
- if (livePrice != null) return livePrice;
1454
- const midpointPrice = bestMidpointsByOutcomeId == null ? void 0 : bestMidpointsByOutcomeId.get(outcomeId);
1455
- if (midpointPrice != null) return midpointPrice;
1456
- return fallbackPrice != null ? fallbackPrice : void 0;
1457
- };
1458
-
1459
- // src/events/shared/display-outcome-price.ts
1460
- var normalizeOutcomeLabel = (label) => {
1461
- return typeof label === "string" ? label.trim().toLowerCase() : "";
1462
- };
1463
- var getDisplayOutcomePrice = ({
1464
- outcomeId,
1465
- outcomeLabel,
1466
- selection,
1467
- bestPrices,
1468
- bestMidpoint,
1469
- bestMidpointsByOutcomeId,
1470
- livePrices,
1471
- fallbackPrice
1472
- }) => {
1473
- var _a;
1474
- if (selection && outcomeId) {
1475
- return selectOutcomePrice({
1476
- outcomeId,
1477
- selection,
1478
- bestPrices,
1479
- bestMidpointsByOutcomeId,
1480
- livePrices,
1481
- fallbackPrice
1482
- });
1483
- }
1484
- const livePrice = outcomeId ? livePrices == null ? void 0 : livePrices.get(outcomeId) : void 0;
1485
- if (livePrice != null) return livePrice;
1486
- const bestOutcomePrice = outcomeId ? bestMidpointsByOutcomeId == null ? void 0 : bestMidpointsByOutcomeId.get(outcomeId) : void 0;
1487
- const resolvedFallbackPrice = (_a = bestOutcomePrice != null ? bestOutcomePrice : fallbackPrice) != null ? _a : void 0;
1488
- if (normalizeOutcomeLabel(outcomeLabel) === "yes") {
1489
- return getDisplayReferencePrice({
1490
- bestMidpoint,
1491
- fallbackPrice: resolvedFallbackPrice
1492
- });
1493
- }
1494
- return resolvedFallbackPrice;
1495
- };
1496
-
1497
- // src/events/shared/event-trading-state.utils.ts
1498
- import dayjs4 from "dayjs";
1499
- var formatTradingStateDate = (value) => {
1500
- if (!dayjs4(value).isValid()) return value;
1501
- return dayjs4(value).format("MMM D, YYYY");
1502
- };
1503
- var resolveTradingStateTimestampLabel = (labels, state) => {
1504
- if (state.kind === "resolved" && state.resolvesAt) {
1505
- return labels.eventMarketPage.resolvedAt(formatTradingStateDate(state.resolvesAt));
1506
- }
1507
- if (state.kind === "closed" && state.endsAt) {
1508
- return labels.eventMarketPage.closedAt(formatTradingStateDate(state.endsAt));
1509
- }
1510
- if (state.kind === "unopened" && state.startsAt) {
1511
- return labels.eventMarketPage.opensAt(formatTradingStateDate(state.startsAt));
1512
- }
1513
- return null;
1514
- };
1515
- var resolveTradingStatePresentation = (labels, state) => {
1516
- var _a;
1517
- const timestampLabel = resolveTradingStateTimestampLabel(labels, state);
1518
- const resolvedOutcomeLabel = resolveResolvedOutcomeLabel({
1519
- market: (_a = state.market) != null ? _a : null,
1520
- outcome: state.winningOutcome
1521
- });
1522
- const winningOutcomeLabel = resolvedOutcomeLabel ? labels.eventMarketPage.winningOutcome(resolvedOutcomeLabel) : null;
1523
- if (state.kind === "resolved") {
1524
- return {
1525
- badgeLabel: labels.eventMarketPage.tradingResolvedBadge,
1526
- title: labels.eventMarketPage.tradingResolvedTitle,
1527
- description: labels.eventMarketPage.tradingResolvedDescription,
1528
- iconName: "check-circle",
1529
- timestampLabel,
1530
- winningOutcomeLabel
1531
- };
1532
- }
1533
- if (state.kind === "paused") {
1534
- return {
1535
- badgeLabel: labels.eventMarketPage.tradingPausedBadge,
1536
- title: labels.eventMarketPage.tradingPausedTitle,
1537
- description: labels.eventMarketPage.tradingPausedDescription,
1538
- iconName: "warning-filled",
1539
- timestampLabel,
1540
- winningOutcomeLabel
1541
- };
1542
- }
1543
- if (state.kind === "unopened") {
1544
- return {
1545
- badgeLabel: labels.eventMarketPage.tradingUnopenedBadge,
1546
- title: labels.eventMarketPage.tradingUnopenedTitle,
1547
- description: labels.eventMarketPage.tradingUnopenedDescription,
1548
- iconName: "info",
1549
- timestampLabel,
1550
- winningOutcomeLabel
1551
- };
1552
- }
1553
- if (state.kind === "closed") {
1554
- return {
1555
- badgeLabel: labels.eventMarketPage.tradingClosedBadge,
1556
- title: labels.eventMarketPage.tradingClosedTitle,
1557
- description: labels.eventMarketPage.tradingClosedDescription,
1558
- iconName: "warning-filled",
1559
- timestampLabel,
1560
- winningOutcomeLabel
1561
- };
1562
- }
1563
- return {
1564
- badgeLabel: labels.eventMarketPage.tradingUnavailableBadge,
1565
- title: labels.eventMarketPage.tradingUnavailableTitle,
1566
- description: labels.eventMarketPage.tradingUnavailableDescription,
1567
- iconName: "info",
1568
- timestampLabel,
1569
- winningOutcomeLabel
1570
- };
1571
- };
1572
- var resolveTradingStateBadgeClassName = (kind) => {
1573
- if (kind === "resolved") {
1574
- return "border-agg-success/20 bg-agg-success/10 text-agg-success";
1575
- }
1576
- if (kind === "unopened") {
1577
- return "border-agg-primary/15 bg-agg-primary/5 text-agg-primary";
1578
- }
1579
- if (kind === "paused") {
1580
- return "border-agg-warning/20 bg-agg-warning/10 text-agg-warning";
1581
- }
1582
- if (kind === "closed") {
1583
- return "border-agg-warning/20 bg-agg-warning/10 text-agg-warning";
1584
- }
1585
- return "border-agg-separator bg-agg-secondary text-agg-muted-foreground";
1586
- };
1587
- var ORDER_ELIGIBILITY_LABEL_MAP = {
1588
- no_event_selected: (labels) => labels.trading.orderDisabledNoEvent,
1589
- no_market_selected: (labels) => labels.trading.orderDisabledNoMarket,
1590
- no_outcome_selected: (labels) => labels.trading.orderDisabledNoOutcome,
1591
- event_resolved: (labels) => labels.trading.orderDisabledEventResolved,
1592
- event_closed: (labels) => labels.trading.orderDisabledEventClosed,
1593
- event_paused: (labels) => labels.trading.orderDisabledEventPaused,
1594
- event_unopened: (labels) => labels.trading.orderDisabledEventUnopened,
1595
- event_unavailable: (labels) => labels.trading.orderDisabledEventUnavailable,
1596
- market_resolved: (labels) => labels.trading.orderDisabledMarketResolved,
1597
- market_closed: (labels) => labels.trading.orderDisabledMarketClosed,
1598
- market_paused: (labels) => labels.trading.orderDisabledMarketPaused,
1599
- market_unopened: (labels) => labels.trading.orderDisabledMarketUnopened,
1600
- market_unavailable: (labels) => labels.trading.orderDisabledMarketUnavailable
1601
- };
1602
- var resolveOrderEligibilityMessage = (labels, reason) => {
1603
- if (reason === "eligible") return null;
1604
- return ORDER_ELIGIBILITY_LABEL_MAP[reason](labels);
1605
- };
1606
-
1607
- export {
1608
- useEventTradingContext,
1609
- sortOutcomeSelectorOutcomes,
1610
- resolveInitialEventDetailsChartRange,
1611
- resolveOutcomesByVenue,
1612
- resolveSeriesColor,
1613
- resolveMarketChartDisplaySeries,
1614
- resolveMarketChartLiveState,
1615
- formatProbabilityCents,
1616
- resolveOrderBookRows,
1617
- resolveUnifiedOrderBookEntries,
1618
- resolveInitialTab,
1619
- resolveMarketFromVenueMarkets,
1620
- resolveInitialOutcomeLabel,
1621
- resolveScopedSelectedOutcome,
1622
- formatProbabilityPercent,
1623
- resolveHeaderOutcomeItems,
1624
- resolveOtherTabRows,
1625
- buildMarketDetailsModel,
1626
- getDisplayOutcomePrice,
1627
- defaultSettlementSectionLabel,
1628
- defaultTradingDisclaimer,
1629
- getTradingDateLabel,
1630
- getTradingVenueLabel,
1631
- getTradingValueLabel,
1632
- getTradingPriceLabel,
1633
- getTradingAveragePriceLabel,
1634
- getTradingBalanceLabel,
1635
- getTradingSharesLabel,
1636
- getTradingSlippageLabel,
1637
- SETTLEMENT_SECTION_ID,
1638
- getSettlementDifferenceId,
1639
- prepareSettlementDifferences,
1640
- resolveDifferenceIconClassName,
1641
- Settlement,
1642
- resolveTradingStatePresentation,
1643
- resolveTradingStateBadgeClassName,
1644
- resolveOrderEligibilityMessage
1645
- };