be-components 7.4.8 → 7.5.1

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 (575) hide show
  1. package/lib/commonjs/ApiOverrides/index.js +4 -0
  2. package/lib/commonjs/ApiOverrides/index.js.map +1 -1
  3. package/lib/commonjs/BetRouter/api/index.js +884 -0
  4. package/lib/commonjs/BetRouter/api/index.js.map +1 -0
  5. package/lib/commonjs/BetRouter/api/types.js +2 -0
  6. package/lib/commonjs/BetRouter/api/types.js.map +1 -0
  7. package/lib/commonjs/BetRouter/components/AccountManager.js +592 -0
  8. package/lib/commonjs/BetRouter/components/AccountManager.js.map +1 -0
  9. package/lib/commonjs/BetRouter/components/AdminPortal.js +51 -0
  10. package/lib/commonjs/BetRouter/components/AdminPortal.js.map +1 -0
  11. package/lib/commonjs/BetRouter/components/BuyOpportunities.js +550 -0
  12. package/lib/commonjs/BetRouter/components/BuyOpportunities.js.map +1 -0
  13. package/lib/commonjs/BetRouter/components/BuyOpportunityCard.js +320 -0
  14. package/lib/commonjs/BetRouter/components/BuyOpportunityCard.js.map +1 -0
  15. package/lib/commonjs/BetRouter/components/ContestLiquidity.js +666 -0
  16. package/lib/commonjs/BetRouter/components/ContestLiquidity.js.map +1 -0
  17. package/lib/commonjs/BetRouter/components/ContestSelector.js +193 -0
  18. package/lib/commonjs/BetRouter/components/ContestSelector.js.map +1 -0
  19. package/lib/commonjs/BetRouter/components/MyOpportunities.js +332 -0
  20. package/lib/commonjs/BetRouter/components/MyOpportunities.js.map +1 -0
  21. package/lib/commonjs/BetRouter/components/MyOpportunities.tsx.bak +440 -0
  22. package/lib/commonjs/BetRouter/components/OpportunityDetailModal.js +545 -0
  23. package/lib/commonjs/BetRouter/components/OpportunityDetailModal.js.map +1 -0
  24. package/lib/commonjs/BetRouter/components/OpportunityHistory.js +489 -0
  25. package/lib/commonjs/BetRouter/components/OpportunityHistory.js.map +1 -0
  26. package/lib/commonjs/BetRouter/components/PartnerCredentials.js +229 -0
  27. package/lib/commonjs/BetRouter/components/PartnerCredentials.js.map +1 -0
  28. package/lib/commonjs/BetRouter/components/PlacedOpportunityModal.js +262 -0
  29. package/lib/commonjs/BetRouter/components/PlacedOpportunityModal.js.map +1 -0
  30. package/lib/commonjs/BetRouter/components/admin/AutoFillView.js +380 -0
  31. package/lib/commonjs/BetRouter/components/admin/AutoFillView.js.map +1 -0
  32. package/lib/commonjs/BetRouter/components/admin/ConfigManager.js +814 -0
  33. package/lib/commonjs/BetRouter/components/admin/ConfigManager.js.map +1 -0
  34. package/lib/commonjs/BetRouter/components/admin/JobManager.js +895 -0
  35. package/lib/commonjs/BetRouter/components/admin/JobManager.js.map +1 -0
  36. package/lib/commonjs/BetRouter/components/admin/LeagueContests.js +2844 -0
  37. package/lib/commonjs/BetRouter/components/admin/LeagueContests.js.map +1 -0
  38. package/lib/commonjs/BetRouter/components/admin/LeagueInfo.js +378 -0
  39. package/lib/commonjs/BetRouter/components/admin/LeagueInfo.js.map +1 -0
  40. package/lib/commonjs/BetRouter/components/admin/LeagueParticipants.js +795 -0
  41. package/lib/commonjs/BetRouter/components/admin/LeagueParticipants.js.map +1 -0
  42. package/lib/commonjs/BetRouter/index.js +411 -0
  43. package/lib/commonjs/BetRouter/index.js.map +1 -0
  44. package/lib/commonjs/BetRouter/layouts/DesktopAdminLayout.js +312 -0
  45. package/lib/commonjs/BetRouter/layouts/DesktopAdminLayout.js.map +1 -0
  46. package/lib/commonjs/BetRouter/layouts/DesktopLayout.js +271 -0
  47. package/lib/commonjs/BetRouter/layouts/DesktopLayout.js.map +1 -0
  48. package/lib/commonjs/BetRouter/layouts/MobileAdminLayout.js +435 -0
  49. package/lib/commonjs/BetRouter/layouts/MobileAdminLayout.js.map +1 -0
  50. package/lib/commonjs/BetRouter/layouts/MobileLayout.js +293 -0
  51. package/lib/commonjs/BetRouter/layouts/MobileLayout.js.map +1 -0
  52. package/lib/commonjs/BetRouter/types/ADMIN_PORTAL.md +863 -0
  53. package/lib/commonjs/BetRouter/types/ADMIN_PORTAL_SIMPLIFIED.md +1881 -0
  54. package/lib/commonjs/BetRouter/types/CREDENTIALS_EXAMPLE.md +350 -0
  55. package/lib/commonjs/BetRouter/types/LIQUIDITY_CLIENT_GUIDE.md +399 -0
  56. package/lib/commonjs/BetRouter/types/MARKET_LINKING_WORKFLOW.md +682 -0
  57. package/lib/commonjs/BetRouter/types/MARKET_LINKING_WORKFLOW_V2.md +627 -0
  58. package/lib/commonjs/BetRouter/types/README.md +249 -0
  59. package/lib/commonjs/BetRouter/types/accounts.js +2 -0
  60. package/lib/commonjs/BetRouter/types/accounts.js.map +1 -0
  61. package/lib/commonjs/BetRouter/types/api-contracts.js +776 -0
  62. package/lib/commonjs/BetRouter/types/api-contracts.js.map +1 -0
  63. package/lib/commonjs/BetRouter/types/config.js +2 -0
  64. package/lib/commonjs/BetRouter/types/config.js.map +1 -0
  65. package/lib/commonjs/BetRouter/types/contests.js +2 -0
  66. package/lib/commonjs/BetRouter/types/contests.js.map +1 -0
  67. package/lib/commonjs/BetRouter/types/credentials.js +90 -0
  68. package/lib/commonjs/BetRouter/types/credentials.js.map +1 -0
  69. package/lib/commonjs/BetRouter/types/index.js +149 -0
  70. package/lib/commonjs/BetRouter/types/index.js.map +1 -0
  71. package/lib/commonjs/BetRouter/types/jobs.js +2 -0
  72. package/lib/commonjs/BetRouter/types/jobs.js.map +1 -0
  73. package/lib/commonjs/BetRouter/types/leagues.js +2 -0
  74. package/lib/commonjs/BetRouter/types/leagues.js.map +1 -0
  75. package/lib/commonjs/BetRouter/types/liquidity.js +2 -0
  76. package/lib/commonjs/BetRouter/types/liquidity.js.map +1 -0
  77. package/lib/commonjs/BetRouter/types/markets.js +2 -0
  78. package/lib/commonjs/BetRouter/types/markets.js.map +1 -0
  79. package/lib/commonjs/BetRouter/types/opportunities.js +6 -0
  80. package/lib/commonjs/BetRouter/types/opportunities.js.map +1 -0
  81. package/lib/commonjs/BetRouter/types/orders.js +2 -0
  82. package/lib/commonjs/BetRouter/types/orders.js.map +1 -0
  83. package/lib/commonjs/BetRouter/types/participants.js +2 -0
  84. package/lib/commonjs/BetRouter/types/participants.js.map +1 -0
  85. package/lib/commonjs/BetRouter/types/partners.js +2 -0
  86. package/lib/commonjs/BetRouter/types/partners.js.map +1 -0
  87. package/lib/commonjs/Charts/README.md +310 -0
  88. package/lib/commonjs/Charts/adapters/TradeChartAdapter.js +406 -0
  89. package/lib/commonjs/Charts/adapters/TradeChartAdapter.js.map +1 -0
  90. package/lib/commonjs/Charts/components/BaseLineChart.js +285 -0
  91. package/lib/commonjs/Charts/components/BaseLineChart.js.map +1 -0
  92. package/lib/commonjs/Charts/components/LivePriceChart.js +504 -0
  93. package/lib/commonjs/Charts/components/LivePriceChart.js.map +1 -0
  94. package/lib/commonjs/Charts/index.js +126 -0
  95. package/lib/commonjs/Charts/index.js.map +1 -0
  96. package/lib/commonjs/Charts/themes/chartTheme.js +141 -0
  97. package/lib/commonjs/Charts/themes/chartTheme.js.map +1 -0
  98. package/lib/commonjs/Charts/types.js +2 -0
  99. package/lib/commonjs/Charts/types.js.map +1 -0
  100. package/lib/commonjs/Charts/utils/formatters.js +194 -0
  101. package/lib/commonjs/Charts/utils/formatters.js.map +1 -0
  102. package/lib/commonjs/Components/Dropdown.js +5 -3
  103. package/lib/commonjs/Components/Dropdown.js.map +1 -1
  104. package/lib/commonjs/Components/Icons.js +24 -0
  105. package/lib/commonjs/Components/Icons.js.map +1 -1
  106. package/lib/commonjs/Components/index.js +34 -0
  107. package/lib/commonjs/Components/index.js.map +1 -1
  108. package/lib/commonjs/index.js +28 -0
  109. package/lib/commonjs/index.js.map +1 -1
  110. package/lib/commonjs/types.d.js +16 -0
  111. package/lib/commonjs/types.d.js.map +1 -1
  112. package/lib/module/ApiOverrides/index.js +4 -0
  113. package/lib/module/ApiOverrides/index.js.map +1 -1
  114. package/lib/module/BetRouter/api/index.js +873 -0
  115. package/lib/module/BetRouter/api/index.js.map +1 -0
  116. package/lib/module/BetRouter/api/types.js +2 -0
  117. package/lib/module/BetRouter/api/types.js.map +1 -0
  118. package/lib/module/BetRouter/components/AccountManager.js +584 -0
  119. package/lib/module/BetRouter/components/AccountManager.js.map +1 -0
  120. package/lib/module/BetRouter/components/AdminPortal.js +43 -0
  121. package/lib/module/BetRouter/components/AdminPortal.js.map +1 -0
  122. package/lib/module/BetRouter/components/BuyOpportunities.js +542 -0
  123. package/lib/module/BetRouter/components/BuyOpportunities.js.map +1 -0
  124. package/lib/module/BetRouter/components/BuyOpportunityCard.js +313 -0
  125. package/lib/module/BetRouter/components/BuyOpportunityCard.js.map +1 -0
  126. package/lib/module/BetRouter/components/ContestLiquidity.js +658 -0
  127. package/lib/module/BetRouter/components/ContestLiquidity.js.map +1 -0
  128. package/lib/module/BetRouter/components/ContestSelector.js +185 -0
  129. package/lib/module/BetRouter/components/ContestSelector.js.map +1 -0
  130. package/lib/module/BetRouter/components/MyOpportunities.js +324 -0
  131. package/lib/module/BetRouter/components/MyOpportunities.js.map +1 -0
  132. package/lib/module/BetRouter/components/MyOpportunities.tsx.bak +440 -0
  133. package/lib/module/BetRouter/components/OpportunityDetailModal.js +538 -0
  134. package/lib/module/BetRouter/components/OpportunityDetailModal.js.map +1 -0
  135. package/lib/module/BetRouter/components/OpportunityHistory.js +481 -0
  136. package/lib/module/BetRouter/components/OpportunityHistory.js.map +1 -0
  137. package/lib/module/BetRouter/components/PartnerCredentials.js +222 -0
  138. package/lib/module/BetRouter/components/PartnerCredentials.js.map +1 -0
  139. package/lib/module/BetRouter/components/PlacedOpportunityModal.js +255 -0
  140. package/lib/module/BetRouter/components/PlacedOpportunityModal.js.map +1 -0
  141. package/lib/module/BetRouter/components/admin/AutoFillView.js +372 -0
  142. package/lib/module/BetRouter/components/admin/AutoFillView.js.map +1 -0
  143. package/lib/module/BetRouter/components/admin/ConfigManager.js +806 -0
  144. package/lib/module/BetRouter/components/admin/ConfigManager.js.map +1 -0
  145. package/lib/module/BetRouter/components/admin/JobManager.js +888 -0
  146. package/lib/module/BetRouter/components/admin/JobManager.js.map +1 -0
  147. package/lib/module/BetRouter/components/admin/LeagueContests.js +2836 -0
  148. package/lib/module/BetRouter/components/admin/LeagueContests.js.map +1 -0
  149. package/lib/module/BetRouter/components/admin/LeagueInfo.js +372 -0
  150. package/lib/module/BetRouter/components/admin/LeagueInfo.js.map +1 -0
  151. package/lib/module/BetRouter/components/admin/LeagueParticipants.js +787 -0
  152. package/lib/module/BetRouter/components/admin/LeagueParticipants.js.map +1 -0
  153. package/lib/module/BetRouter/index.js +399 -0
  154. package/lib/module/BetRouter/index.js.map +1 -0
  155. package/lib/module/BetRouter/layouts/DesktopAdminLayout.js +304 -0
  156. package/lib/module/BetRouter/layouts/DesktopAdminLayout.js.map +1 -0
  157. package/lib/module/BetRouter/layouts/DesktopLayout.js +263 -0
  158. package/lib/module/BetRouter/layouts/DesktopLayout.js.map +1 -0
  159. package/lib/module/BetRouter/layouts/MobileAdminLayout.js +427 -0
  160. package/lib/module/BetRouter/layouts/MobileAdminLayout.js.map +1 -0
  161. package/lib/module/BetRouter/layouts/MobileLayout.js +285 -0
  162. package/lib/module/BetRouter/layouts/MobileLayout.js.map +1 -0
  163. package/lib/module/BetRouter/types/ADMIN_PORTAL.md +863 -0
  164. package/lib/module/BetRouter/types/ADMIN_PORTAL_SIMPLIFIED.md +1881 -0
  165. package/lib/module/BetRouter/types/CREDENTIALS_EXAMPLE.md +350 -0
  166. package/lib/module/BetRouter/types/LIQUIDITY_CLIENT_GUIDE.md +399 -0
  167. package/lib/module/BetRouter/types/MARKET_LINKING_WORKFLOW.md +682 -0
  168. package/lib/module/BetRouter/types/MARKET_LINKING_WORKFLOW_V2.md +627 -0
  169. package/lib/module/BetRouter/types/README.md +249 -0
  170. package/lib/module/BetRouter/types/accounts.js +2 -0
  171. package/lib/module/BetRouter/types/accounts.js.map +1 -0
  172. package/lib/module/BetRouter/types/api-contracts.js +770 -0
  173. package/lib/module/BetRouter/types/api-contracts.js.map +1 -0
  174. package/lib/module/BetRouter/types/config.js +2 -0
  175. package/lib/module/BetRouter/types/config.js.map +1 -0
  176. package/lib/module/BetRouter/types/contests.js +2 -0
  177. package/lib/module/BetRouter/types/contests.js.map +1 -0
  178. package/lib/module/BetRouter/types/credentials.js +78 -0
  179. package/lib/module/BetRouter/types/credentials.js.map +1 -0
  180. package/lib/module/BetRouter/types/index.js +17 -0
  181. package/lib/module/BetRouter/types/index.js.map +1 -0
  182. package/lib/module/BetRouter/types/jobs.js +2 -0
  183. package/lib/module/BetRouter/types/jobs.js.map +1 -0
  184. package/lib/module/BetRouter/types/leagues.js +2 -0
  185. package/lib/module/BetRouter/types/leagues.js.map +1 -0
  186. package/lib/module/BetRouter/types/liquidity.js +2 -0
  187. package/lib/module/BetRouter/types/liquidity.js.map +1 -0
  188. package/lib/module/BetRouter/types/markets.js +2 -0
  189. package/lib/module/BetRouter/types/markets.js.map +1 -0
  190. package/lib/module/BetRouter/types/opportunities.js +2 -0
  191. package/lib/module/BetRouter/types/opportunities.js.map +1 -0
  192. package/lib/module/BetRouter/types/orders.js +2 -0
  193. package/lib/module/BetRouter/types/orders.js.map +1 -0
  194. package/lib/module/BetRouter/types/participants.js +2 -0
  195. package/lib/module/BetRouter/types/participants.js.map +1 -0
  196. package/lib/module/BetRouter/types/partners.js +2 -0
  197. package/lib/module/BetRouter/types/partners.js.map +1 -0
  198. package/lib/module/Charts/README.md +310 -0
  199. package/lib/module/Charts/adapters/TradeChartAdapter.js +400 -0
  200. package/lib/module/Charts/adapters/TradeChartAdapter.js.map +1 -0
  201. package/lib/module/Charts/components/BaseLineChart.js +281 -0
  202. package/lib/module/Charts/components/BaseLineChart.js.map +1 -0
  203. package/lib/module/Charts/components/LivePriceChart.js +497 -0
  204. package/lib/module/Charts/components/LivePriceChart.js.map +1 -0
  205. package/lib/module/Charts/index.js +36 -0
  206. package/lib/module/Charts/index.js.map +1 -0
  207. package/lib/module/Charts/themes/chartTheme.js +134 -0
  208. package/lib/module/Charts/themes/chartTheme.js.map +1 -0
  209. package/lib/module/Charts/types.js +2 -0
  210. package/lib/module/Charts/types.js.map +1 -0
  211. package/lib/module/Charts/utils/formatters.js +178 -0
  212. package/lib/module/Charts/utils/formatters.js.map +1 -0
  213. package/lib/module/Components/Dropdown.js +5 -3
  214. package/lib/module/Components/Dropdown.js.map +1 -1
  215. package/lib/module/Components/Icons.js +24 -1
  216. package/lib/module/Components/Icons.js.map +1 -1
  217. package/lib/module/Components/index.js +3 -0
  218. package/lib/module/Components/index.js.map +1 -1
  219. package/lib/module/index.js +5 -1
  220. package/lib/module/index.js.map +1 -1
  221. package/lib/module/types.d.js +16 -0
  222. package/lib/module/types.d.js.map +1 -1
  223. package/lib/typescript/lib/commonjs/ApiOverrides/index.d.ts.map +1 -1
  224. package/lib/typescript/lib/commonjs/BetRouter/api/index.d.ts +109 -0
  225. package/lib/typescript/lib/commonjs/BetRouter/api/index.d.ts.map +1 -0
  226. package/lib/typescript/lib/commonjs/BetRouter/api/types.d.ts +2 -0
  227. package/lib/typescript/lib/commonjs/BetRouter/api/types.d.ts.map +1 -0
  228. package/lib/typescript/lib/commonjs/BetRouter/components/AccountManager.d.ts +16 -0
  229. package/lib/typescript/lib/commonjs/BetRouter/components/AccountManager.d.ts.map +1 -0
  230. package/lib/typescript/lib/commonjs/BetRouter/components/AdminPortal.d.ts +9 -0
  231. package/lib/typescript/lib/commonjs/BetRouter/components/AdminPortal.d.ts.map +1 -0
  232. package/lib/typescript/lib/commonjs/BetRouter/components/BuyOpportunities.d.ts +16 -0
  233. package/lib/typescript/lib/commonjs/BetRouter/components/BuyOpportunities.d.ts.map +1 -0
  234. package/lib/typescript/lib/commonjs/BetRouter/components/BuyOpportunityCard.d.ts +14 -0
  235. package/lib/typescript/lib/commonjs/BetRouter/components/BuyOpportunityCard.d.ts.map +1 -0
  236. package/lib/typescript/lib/commonjs/BetRouter/components/ContestLiquidity.d.ts +11 -0
  237. package/lib/typescript/lib/commonjs/BetRouter/components/ContestLiquidity.d.ts.map +1 -0
  238. package/lib/typescript/lib/commonjs/BetRouter/components/ContestSelector.d.ts +11 -0
  239. package/lib/typescript/lib/commonjs/BetRouter/components/ContestSelector.d.ts.map +1 -0
  240. package/lib/typescript/lib/commonjs/BetRouter/components/MyOpportunities.d.ts +8 -0
  241. package/lib/typescript/lib/commonjs/BetRouter/components/MyOpportunities.d.ts.map +1 -0
  242. package/lib/typescript/lib/commonjs/BetRouter/components/OpportunityDetailModal.d.ts +14 -0
  243. package/lib/typescript/lib/commonjs/BetRouter/components/OpportunityDetailModal.d.ts.map +1 -0
  244. package/lib/typescript/lib/commonjs/BetRouter/components/OpportunityHistory.d.ts +9 -0
  245. package/lib/typescript/lib/commonjs/BetRouter/components/OpportunityHistory.d.ts.map +1 -0
  246. package/lib/typescript/lib/commonjs/BetRouter/components/PartnerCredentials.d.ts +10 -0
  247. package/lib/typescript/lib/commonjs/BetRouter/components/PartnerCredentials.d.ts.map +1 -0
  248. package/lib/typescript/lib/commonjs/BetRouter/components/PlacedOpportunityModal.d.ts +11 -0
  249. package/lib/typescript/lib/commonjs/BetRouter/components/PlacedOpportunityModal.d.ts.map +1 -0
  250. package/lib/typescript/lib/commonjs/BetRouter/components/admin/AutoFillView.d.ts +4 -0
  251. package/lib/typescript/lib/commonjs/BetRouter/components/admin/AutoFillView.d.ts.map +1 -0
  252. package/lib/typescript/lib/commonjs/BetRouter/components/admin/ConfigManager.d.ts +4 -0
  253. package/lib/typescript/lib/commonjs/BetRouter/components/admin/ConfigManager.d.ts.map +1 -0
  254. package/lib/typescript/lib/commonjs/BetRouter/components/admin/JobManager.d.ts +4 -0
  255. package/lib/typescript/lib/commonjs/BetRouter/components/admin/JobManager.d.ts.map +1 -0
  256. package/lib/typescript/lib/commonjs/BetRouter/components/admin/LeagueContests.d.ts +7 -0
  257. package/lib/typescript/lib/commonjs/BetRouter/components/admin/LeagueContests.d.ts.map +1 -0
  258. package/lib/typescript/lib/commonjs/BetRouter/components/admin/LeagueInfo.d.ts +6 -0
  259. package/lib/typescript/lib/commonjs/BetRouter/components/admin/LeagueInfo.d.ts.map +1 -0
  260. package/lib/typescript/lib/commonjs/BetRouter/components/admin/LeagueParticipants.d.ts +6 -0
  261. package/lib/typescript/lib/commonjs/BetRouter/components/admin/LeagueParticipants.d.ts.map +1 -0
  262. package/lib/typescript/lib/commonjs/BetRouter/index.d.ts +8 -0
  263. package/lib/typescript/lib/commonjs/BetRouter/index.d.ts.map +1 -0
  264. package/lib/typescript/lib/commonjs/BetRouter/layouts/DesktopAdminLayout.d.ts +9 -0
  265. package/lib/typescript/lib/commonjs/BetRouter/layouts/DesktopAdminLayout.d.ts.map +1 -0
  266. package/lib/typescript/lib/commonjs/BetRouter/layouts/DesktopLayout.d.ts +20 -0
  267. package/lib/typescript/lib/commonjs/BetRouter/layouts/DesktopLayout.d.ts.map +1 -0
  268. package/lib/typescript/lib/commonjs/BetRouter/layouts/MobileAdminLayout.d.ts +9 -0
  269. package/lib/typescript/lib/commonjs/BetRouter/layouts/MobileAdminLayout.d.ts.map +1 -0
  270. package/lib/typescript/lib/commonjs/BetRouter/layouts/MobileLayout.d.ts +20 -0
  271. package/lib/typescript/lib/commonjs/BetRouter/layouts/MobileLayout.d.ts.map +1 -0
  272. package/lib/typescript/lib/commonjs/BetRouter/types/accounts.d.ts +2 -0
  273. package/lib/typescript/lib/commonjs/BetRouter/types/accounts.d.ts.map +1 -0
  274. package/lib/typescript/lib/commonjs/BetRouter/types/api-contracts.d.ts +743 -0
  275. package/lib/typescript/lib/commonjs/BetRouter/types/api-contracts.d.ts.map +1 -0
  276. package/lib/typescript/lib/commonjs/BetRouter/types/config.d.ts +2 -0
  277. package/lib/typescript/lib/commonjs/BetRouter/types/config.d.ts.map +1 -0
  278. package/lib/typescript/lib/commonjs/BetRouter/types/contests.d.ts +2 -0
  279. package/lib/typescript/lib/commonjs/BetRouter/types/contests.d.ts.map +1 -0
  280. package/lib/typescript/lib/commonjs/BetRouter/types/credentials.d.ts +56 -0
  281. package/lib/typescript/lib/commonjs/BetRouter/types/credentials.d.ts.map +1 -0
  282. package/lib/typescript/lib/commonjs/BetRouter/types/index.d.ts +2 -0
  283. package/lib/typescript/lib/commonjs/BetRouter/types/index.d.ts.map +1 -0
  284. package/lib/typescript/lib/commonjs/BetRouter/types/jobs.d.ts +2 -0
  285. package/lib/typescript/lib/commonjs/BetRouter/types/jobs.d.ts.map +1 -0
  286. package/lib/typescript/lib/commonjs/BetRouter/types/leagues.d.ts +2 -0
  287. package/lib/typescript/lib/commonjs/BetRouter/types/leagues.d.ts.map +1 -0
  288. package/lib/typescript/lib/commonjs/BetRouter/types/liquidity.d.ts +2 -0
  289. package/lib/typescript/lib/commonjs/BetRouter/types/liquidity.d.ts.map +1 -0
  290. package/lib/typescript/lib/commonjs/BetRouter/types/markets.d.ts +2 -0
  291. package/lib/typescript/lib/commonjs/BetRouter/types/markets.d.ts.map +1 -0
  292. package/lib/typescript/lib/commonjs/BetRouter/types/opportunities.d.ts +2 -0
  293. package/lib/typescript/lib/commonjs/BetRouter/types/opportunities.d.ts.map +1 -0
  294. package/lib/typescript/lib/commonjs/BetRouter/types/orders.d.ts +2 -0
  295. package/lib/typescript/lib/commonjs/BetRouter/types/orders.d.ts.map +1 -0
  296. package/lib/typescript/lib/commonjs/BetRouter/types/participants.d.ts +2 -0
  297. package/lib/typescript/lib/commonjs/BetRouter/types/participants.d.ts.map +1 -0
  298. package/lib/typescript/lib/commonjs/BetRouter/types/partners.d.ts +2 -0
  299. package/lib/typescript/lib/commonjs/BetRouter/types/partners.d.ts.map +1 -0
  300. package/lib/typescript/lib/commonjs/Charts/adapters/TradeChartAdapter.d.ts +87 -0
  301. package/lib/typescript/lib/commonjs/Charts/adapters/TradeChartAdapter.d.ts.map +1 -0
  302. package/lib/typescript/lib/commonjs/Charts/components/BaseLineChart.d.ts +31 -0
  303. package/lib/typescript/lib/commonjs/Charts/components/BaseLineChart.d.ts.map +1 -0
  304. package/lib/typescript/lib/commonjs/Charts/components/LivePriceChart.d.ts +45 -0
  305. package/lib/typescript/lib/commonjs/Charts/components/LivePriceChart.d.ts.map +1 -0
  306. package/lib/typescript/lib/commonjs/Charts/index.d.ts +95 -0
  307. package/lib/typescript/lib/commonjs/Charts/index.d.ts.map +1 -0
  308. package/lib/typescript/lib/commonjs/Charts/themes/chartTheme.d.ts +106 -0
  309. package/lib/typescript/lib/commonjs/Charts/themes/chartTheme.d.ts.map +1 -0
  310. package/lib/typescript/lib/commonjs/Charts/types.d.ts +2 -0
  311. package/lib/typescript/lib/commonjs/Charts/types.d.ts.map +1 -0
  312. package/lib/typescript/lib/commonjs/Charts/utils/formatters.d.ts +24 -0
  313. package/lib/typescript/lib/commonjs/Charts/utils/formatters.d.ts.map +1 -0
  314. package/lib/typescript/lib/commonjs/Components/Dropdown.d.ts.map +1 -1
  315. package/lib/typescript/lib/commonjs/Components/Icons.d.ts +5 -0
  316. package/lib/typescript/lib/commonjs/Components/Icons.d.ts.map +1 -1
  317. package/lib/typescript/lib/commonjs/index.d.ts +4 -0
  318. package/lib/typescript/lib/commonjs/index.d.ts.map +1 -1
  319. package/lib/typescript/lib/module/ApiOverrides/index.d.ts.map +1 -1
  320. package/lib/typescript/lib/module/BetRouter/api/index.d.ts +108 -0
  321. package/lib/typescript/lib/module/BetRouter/api/index.d.ts.map +1 -0
  322. package/lib/typescript/lib/module/BetRouter/api/types.d.ts +2 -0
  323. package/lib/typescript/lib/module/BetRouter/api/types.d.ts.map +1 -0
  324. package/lib/typescript/lib/module/BetRouter/components/AccountManager.d.ts +16 -0
  325. package/lib/typescript/lib/module/BetRouter/components/AccountManager.d.ts.map +1 -0
  326. package/lib/typescript/lib/module/BetRouter/components/AdminPortal.d.ts +9 -0
  327. package/lib/typescript/lib/module/BetRouter/components/AdminPortal.d.ts.map +1 -0
  328. package/lib/typescript/lib/module/BetRouter/components/BuyOpportunities.d.ts +16 -0
  329. package/lib/typescript/lib/module/BetRouter/components/BuyOpportunities.d.ts.map +1 -0
  330. package/lib/typescript/lib/module/BetRouter/components/BuyOpportunityCard.d.ts +14 -0
  331. package/lib/typescript/lib/module/BetRouter/components/BuyOpportunityCard.d.ts.map +1 -0
  332. package/lib/typescript/lib/module/BetRouter/components/ContestLiquidity.d.ts +11 -0
  333. package/lib/typescript/lib/module/BetRouter/components/ContestLiquidity.d.ts.map +1 -0
  334. package/lib/typescript/lib/module/BetRouter/components/ContestSelector.d.ts +11 -0
  335. package/lib/typescript/lib/module/BetRouter/components/ContestSelector.d.ts.map +1 -0
  336. package/lib/typescript/lib/module/BetRouter/components/MyOpportunities.d.ts +8 -0
  337. package/lib/typescript/lib/module/BetRouter/components/MyOpportunities.d.ts.map +1 -0
  338. package/lib/typescript/lib/module/BetRouter/components/OpportunityDetailModal.d.ts +15 -0
  339. package/lib/typescript/lib/module/BetRouter/components/OpportunityDetailModal.d.ts.map +1 -0
  340. package/lib/typescript/lib/module/BetRouter/components/OpportunityHistory.d.ts +9 -0
  341. package/lib/typescript/lib/module/BetRouter/components/OpportunityHistory.d.ts.map +1 -0
  342. package/lib/typescript/lib/module/BetRouter/components/PartnerCredentials.d.ts +11 -0
  343. package/lib/typescript/lib/module/BetRouter/components/PartnerCredentials.d.ts.map +1 -0
  344. package/lib/typescript/lib/module/BetRouter/components/PlacedOpportunityModal.d.ts +12 -0
  345. package/lib/typescript/lib/module/BetRouter/components/PlacedOpportunityModal.d.ts.map +1 -0
  346. package/lib/typescript/lib/module/BetRouter/components/admin/AutoFillView.d.ts +4 -0
  347. package/lib/typescript/lib/module/BetRouter/components/admin/AutoFillView.d.ts.map +1 -0
  348. package/lib/typescript/lib/module/BetRouter/components/admin/ConfigManager.d.ts +4 -0
  349. package/lib/typescript/lib/module/BetRouter/components/admin/ConfigManager.d.ts.map +1 -0
  350. package/lib/typescript/lib/module/BetRouter/components/admin/JobManager.d.ts +4 -0
  351. package/lib/typescript/lib/module/BetRouter/components/admin/JobManager.d.ts.map +1 -0
  352. package/lib/typescript/lib/module/BetRouter/components/admin/LeagueContests.d.ts +9 -0
  353. package/lib/typescript/lib/module/BetRouter/components/admin/LeagueContests.d.ts.map +1 -0
  354. package/lib/typescript/lib/module/BetRouter/components/admin/LeagueInfo.d.ts +6 -0
  355. package/lib/typescript/lib/module/BetRouter/components/admin/LeagueInfo.d.ts.map +1 -0
  356. package/lib/typescript/lib/module/BetRouter/components/admin/LeagueParticipants.d.ts +8 -0
  357. package/lib/typescript/lib/module/BetRouter/components/admin/LeagueParticipants.d.ts.map +1 -0
  358. package/lib/typescript/lib/module/BetRouter/index.d.ts +9 -0
  359. package/lib/typescript/lib/module/BetRouter/index.d.ts.map +1 -0
  360. package/lib/typescript/lib/module/BetRouter/layouts/DesktopAdminLayout.d.ts +9 -0
  361. package/lib/typescript/lib/module/BetRouter/layouts/DesktopAdminLayout.d.ts.map +1 -0
  362. package/lib/typescript/lib/module/BetRouter/layouts/DesktopLayout.d.ts +20 -0
  363. package/lib/typescript/lib/module/BetRouter/layouts/DesktopLayout.d.ts.map +1 -0
  364. package/lib/typescript/lib/module/BetRouter/layouts/MobileAdminLayout.d.ts +9 -0
  365. package/lib/typescript/lib/module/BetRouter/layouts/MobileAdminLayout.d.ts.map +1 -0
  366. package/lib/typescript/lib/module/BetRouter/layouts/MobileLayout.d.ts +20 -0
  367. package/lib/typescript/lib/module/BetRouter/layouts/MobileLayout.d.ts.map +1 -0
  368. package/lib/typescript/lib/module/BetRouter/types/accounts.d.ts +2 -0
  369. package/lib/typescript/lib/module/BetRouter/types/accounts.d.ts.map +1 -0
  370. package/lib/typescript/lib/module/BetRouter/types/api-contracts.d.ts +742 -0
  371. package/lib/typescript/lib/module/BetRouter/types/api-contracts.d.ts.map +1 -0
  372. package/lib/typescript/lib/module/BetRouter/types/config.d.ts +2 -0
  373. package/lib/typescript/lib/module/BetRouter/types/config.d.ts.map +1 -0
  374. package/lib/typescript/lib/module/BetRouter/types/contests.d.ts +2 -0
  375. package/lib/typescript/lib/module/BetRouter/types/contests.d.ts.map +1 -0
  376. package/lib/typescript/lib/module/BetRouter/types/credentials.d.ts +55 -0
  377. package/lib/typescript/lib/module/BetRouter/types/credentials.d.ts.map +1 -0
  378. package/lib/typescript/lib/module/BetRouter/types/index.d.ts +14 -0
  379. package/lib/typescript/lib/module/BetRouter/types/index.d.ts.map +1 -0
  380. package/lib/typescript/lib/module/BetRouter/types/jobs.d.ts +2 -0
  381. package/lib/typescript/lib/module/BetRouter/types/jobs.d.ts.map +1 -0
  382. package/lib/typescript/lib/module/BetRouter/types/leagues.d.ts +2 -0
  383. package/lib/typescript/lib/module/BetRouter/types/leagues.d.ts.map +1 -0
  384. package/lib/typescript/lib/module/BetRouter/types/liquidity.d.ts +2 -0
  385. package/lib/typescript/lib/module/BetRouter/types/liquidity.d.ts.map +1 -0
  386. package/lib/typescript/lib/module/BetRouter/types/markets.d.ts +2 -0
  387. package/lib/typescript/lib/module/BetRouter/types/markets.d.ts.map +1 -0
  388. package/lib/typescript/lib/module/BetRouter/types/opportunities.d.ts +2 -0
  389. package/lib/typescript/lib/module/BetRouter/types/opportunities.d.ts.map +1 -0
  390. package/lib/typescript/lib/module/BetRouter/types/orders.d.ts +2 -0
  391. package/lib/typescript/lib/module/BetRouter/types/orders.d.ts.map +1 -0
  392. package/lib/typescript/lib/module/BetRouter/types/participants.d.ts +2 -0
  393. package/lib/typescript/lib/module/BetRouter/types/participants.d.ts.map +1 -0
  394. package/lib/typescript/lib/module/BetRouter/types/partners.d.ts +2 -0
  395. package/lib/typescript/lib/module/BetRouter/types/partners.d.ts.map +1 -0
  396. package/lib/typescript/lib/module/Charts/adapters/TradeChartAdapter.d.ts +81 -0
  397. package/lib/typescript/lib/module/Charts/adapters/TradeChartAdapter.d.ts.map +1 -0
  398. package/lib/typescript/lib/module/Charts/components/BaseLineChart.d.ts +31 -0
  399. package/lib/typescript/lib/module/Charts/components/BaseLineChart.d.ts.map +1 -0
  400. package/lib/typescript/lib/module/Charts/components/LivePriceChart.d.ts +41 -0
  401. package/lib/typescript/lib/module/Charts/components/LivePriceChart.d.ts.map +1 -0
  402. package/lib/typescript/lib/module/Charts/index.d.ts +6 -0
  403. package/lib/typescript/lib/module/Charts/index.d.ts.map +1 -0
  404. package/lib/typescript/lib/module/Charts/themes/chartTheme.d.ts +102 -0
  405. package/lib/typescript/lib/module/Charts/themes/chartTheme.d.ts.map +1 -0
  406. package/lib/typescript/lib/module/Charts/types.d.ts +2 -0
  407. package/lib/typescript/lib/module/Charts/types.d.ts.map +1 -0
  408. package/lib/typescript/lib/module/Charts/utils/formatters.d.ts +14 -0
  409. package/lib/typescript/lib/module/Charts/utils/formatters.d.ts.map +1 -0
  410. package/lib/typescript/lib/module/Components/Dropdown.d.ts.map +1 -1
  411. package/lib/typescript/lib/module/Components/Icons.d.ts +5 -0
  412. package/lib/typescript/lib/module/Components/Icons.d.ts.map +1 -1
  413. package/lib/typescript/lib/module/Components/index.d.ts +1 -0
  414. package/lib/typescript/lib/module/Components/index.d.ts.map +1 -1
  415. package/lib/typescript/lib/module/index.d.ts +3 -1
  416. package/lib/typescript/lib/module/index.d.ts.map +1 -1
  417. package/lib/typescript/src/ApiOverrides/index.d.ts.map +1 -1
  418. package/lib/typescript/src/BetRouter/api/index.d.ts +115 -0
  419. package/lib/typescript/src/BetRouter/api/index.d.ts.map +1 -0
  420. package/lib/typescript/src/BetRouter/api/types.d.ts +2 -0
  421. package/lib/typescript/src/BetRouter/api/types.d.ts.map +1 -0
  422. package/lib/typescript/src/BetRouter/components/AccountManager.d.ts +18 -0
  423. package/lib/typescript/src/BetRouter/components/AccountManager.d.ts.map +1 -0
  424. package/lib/typescript/src/BetRouter/components/AdminPortal.d.ts +15 -0
  425. package/lib/typescript/src/BetRouter/components/AdminPortal.d.ts.map +1 -0
  426. package/lib/typescript/src/BetRouter/components/BuyOpportunities.d.ts +24 -0
  427. package/lib/typescript/src/BetRouter/components/BuyOpportunities.d.ts.map +1 -0
  428. package/lib/typescript/src/BetRouter/components/BuyOpportunityCard.d.ts +19 -0
  429. package/lib/typescript/src/BetRouter/components/BuyOpportunityCard.d.ts.map +1 -0
  430. package/lib/typescript/src/BetRouter/components/ContestLiquidity.d.ts +15 -0
  431. package/lib/typescript/src/BetRouter/components/ContestLiquidity.d.ts.map +1 -0
  432. package/lib/typescript/src/BetRouter/components/ContestSelector.d.ts +13 -0
  433. package/lib/typescript/src/BetRouter/components/ContestSelector.d.ts.map +1 -0
  434. package/lib/typescript/src/BetRouter/components/MyOpportunities.d.ts +16 -0
  435. package/lib/typescript/src/BetRouter/components/MyOpportunities.d.ts.map +1 -0
  436. package/lib/typescript/src/BetRouter/components/OpportunityDetailModal.d.ts +21 -0
  437. package/lib/typescript/src/BetRouter/components/OpportunityDetailModal.d.ts.map +1 -0
  438. package/lib/typescript/src/BetRouter/components/OpportunityHistory.d.ts +20 -0
  439. package/lib/typescript/src/BetRouter/components/OpportunityHistory.d.ts.map +1 -0
  440. package/lib/typescript/src/BetRouter/components/PartnerCredentials.d.ts +12 -0
  441. package/lib/typescript/src/BetRouter/components/PartnerCredentials.d.ts.map +1 -0
  442. package/lib/typescript/src/BetRouter/components/PlacedOpportunityModal.d.ts +18 -0
  443. package/lib/typescript/src/BetRouter/components/PlacedOpportunityModal.d.ts.map +1 -0
  444. package/lib/typescript/src/BetRouter/components/admin/AutoFillView.d.ts +4 -0
  445. package/lib/typescript/src/BetRouter/components/admin/AutoFillView.d.ts.map +1 -0
  446. package/lib/typescript/src/BetRouter/components/admin/ConfigManager.d.ts +4 -0
  447. package/lib/typescript/src/BetRouter/components/admin/ConfigManager.d.ts.map +1 -0
  448. package/lib/typescript/src/BetRouter/components/admin/JobManager.d.ts +4 -0
  449. package/lib/typescript/src/BetRouter/components/admin/JobManager.d.ts.map +1 -0
  450. package/lib/typescript/src/BetRouter/components/admin/LeagueContests.d.ts +9 -0
  451. package/lib/typescript/src/BetRouter/components/admin/LeagueContests.d.ts.map +1 -0
  452. package/lib/typescript/src/BetRouter/components/admin/LeagueInfo.d.ts +8 -0
  453. package/lib/typescript/src/BetRouter/components/admin/LeagueInfo.d.ts.map +1 -0
  454. package/lib/typescript/src/BetRouter/components/admin/LeagueParticipants.d.ts +8 -0
  455. package/lib/typescript/src/BetRouter/components/admin/LeagueParticipants.d.ts.map +1 -0
  456. package/lib/typescript/src/BetRouter/index.d.ts +16 -0
  457. package/lib/typescript/src/BetRouter/index.d.ts.map +1 -0
  458. package/lib/typescript/src/BetRouter/layouts/DesktopAdminLayout.d.ts +15 -0
  459. package/lib/typescript/src/BetRouter/layouts/DesktopAdminLayout.d.ts.map +1 -0
  460. package/lib/typescript/src/BetRouter/layouts/DesktopLayout.d.ts +44 -0
  461. package/lib/typescript/src/BetRouter/layouts/DesktopLayout.d.ts.map +1 -0
  462. package/lib/typescript/src/BetRouter/layouts/MobileAdminLayout.d.ts +15 -0
  463. package/lib/typescript/src/BetRouter/layouts/MobileAdminLayout.d.ts.map +1 -0
  464. package/lib/typescript/src/BetRouter/layouts/MobileLayout.d.ts +44 -0
  465. package/lib/typescript/src/BetRouter/layouts/MobileLayout.d.ts.map +1 -0
  466. package/lib/typescript/src/BetRouter/types/accounts.d.ts +19 -0
  467. package/lib/typescript/src/BetRouter/types/accounts.d.ts.map +1 -0
  468. package/lib/typescript/src/BetRouter/types/api-contracts.d.ts +1071 -0
  469. package/lib/typescript/src/BetRouter/types/api-contracts.d.ts.map +1 -0
  470. package/lib/typescript/src/BetRouter/types/config.d.ts +12 -0
  471. package/lib/typescript/src/BetRouter/types/config.d.ts.map +1 -0
  472. package/lib/typescript/src/BetRouter/types/contests.d.ts +34 -0
  473. package/lib/typescript/src/BetRouter/types/contests.d.ts.map +1 -0
  474. package/lib/typescript/src/BetRouter/types/credentials.d.ts +24 -0
  475. package/lib/typescript/src/BetRouter/types/credentials.d.ts.map +1 -0
  476. package/lib/typescript/src/BetRouter/types/index.d.ts +14 -0
  477. package/lib/typescript/src/BetRouter/types/index.d.ts.map +1 -0
  478. package/lib/typescript/src/BetRouter/types/jobs.d.ts +35 -0
  479. package/lib/typescript/src/BetRouter/types/jobs.d.ts.map +1 -0
  480. package/lib/typescript/src/BetRouter/types/leagues.d.ts +26 -0
  481. package/lib/typescript/src/BetRouter/types/leagues.d.ts.map +1 -0
  482. package/lib/typescript/src/BetRouter/types/liquidity.d.ts +14 -0
  483. package/lib/typescript/src/BetRouter/types/liquidity.d.ts.map +1 -0
  484. package/lib/typescript/src/BetRouter/types/markets.d.ts +87 -0
  485. package/lib/typescript/src/BetRouter/types/markets.d.ts.map +1 -0
  486. package/lib/typescript/src/BetRouter/types/opportunities.d.ts +88 -0
  487. package/lib/typescript/src/BetRouter/types/opportunities.d.ts.map +1 -0
  488. package/lib/typescript/src/BetRouter/types/orders.d.ts +34 -0
  489. package/lib/typescript/src/BetRouter/types/orders.d.ts.map +1 -0
  490. package/lib/typescript/src/BetRouter/types/participants.d.ts +33 -0
  491. package/lib/typescript/src/BetRouter/types/participants.d.ts.map +1 -0
  492. package/lib/typescript/src/BetRouter/types/partners.d.ts +11 -0
  493. package/lib/typescript/src/BetRouter/types/partners.d.ts.map +1 -0
  494. package/lib/typescript/src/Charts/adapters/TradeChartAdapter.d.ts +117 -0
  495. package/lib/typescript/src/Charts/adapters/TradeChartAdapter.d.ts.map +1 -0
  496. package/lib/typescript/src/Charts/components/BaseLineChart.d.ts +40 -0
  497. package/lib/typescript/src/Charts/components/BaseLineChart.d.ts.map +1 -0
  498. package/lib/typescript/src/Charts/components/LivePriceChart.d.ts +13 -0
  499. package/lib/typescript/src/Charts/components/LivePriceChart.d.ts.map +1 -0
  500. package/lib/typescript/src/Charts/index.d.ts +28 -0
  501. package/lib/typescript/src/Charts/index.d.ts.map +1 -0
  502. package/lib/typescript/src/Charts/themes/chartTheme.d.ts +78 -0
  503. package/lib/typescript/src/Charts/themes/chartTheme.d.ts.map +1 -0
  504. package/lib/typescript/src/Charts/types.d.ts +155 -0
  505. package/lib/typescript/src/Charts/types.d.ts.map +1 -0
  506. package/lib/typescript/src/Charts/utils/formatters.d.ts +66 -0
  507. package/lib/typescript/src/Charts/utils/formatters.d.ts.map +1 -0
  508. package/lib/typescript/src/Components/Dropdown.d.ts.map +1 -1
  509. package/lib/typescript/src/Components/Icons.d.ts +1 -0
  510. package/lib/typescript/src/Components/Icons.d.ts.map +1 -1
  511. package/lib/typescript/src/Components/index.d.ts +1 -0
  512. package/lib/typescript/src/Components/index.d.ts.map +1 -1
  513. package/lib/typescript/src/index.d.ts +4 -1
  514. package/lib/typescript/src/index.d.ts.map +1 -1
  515. package/package.json +4 -2
  516. package/src/ApiOverrides/index.ts +4 -0
  517. package/src/BetRouter/api/index.ts +854 -0
  518. package/src/BetRouter/api/types.ts +0 -0
  519. package/src/BetRouter/components/AccountManager.tsx +533 -0
  520. package/src/BetRouter/components/AdminPortal.tsx +44 -0
  521. package/src/BetRouter/components/BuyOpportunities.tsx +491 -0
  522. package/src/BetRouter/components/BuyOpportunityCard.tsx +331 -0
  523. package/src/BetRouter/components/ContestLiquidity.tsx +613 -0
  524. package/src/BetRouter/components/ContestSelector.tsx +179 -0
  525. package/src/BetRouter/components/MyOpportunities.tsx +279 -0
  526. package/src/BetRouter/components/MyOpportunities.tsx.bak +440 -0
  527. package/src/BetRouter/components/OpportunityDetailModal.tsx +360 -0
  528. package/src/BetRouter/components/OpportunityHistory.tsx +408 -0
  529. package/src/BetRouter/components/PartnerCredentials.tsx +212 -0
  530. package/src/BetRouter/components/PlacedOpportunityModal.tsx +192 -0
  531. package/src/BetRouter/components/admin/AutoFillView.tsx +275 -0
  532. package/src/BetRouter/components/admin/ConfigManager.tsx +596 -0
  533. package/src/BetRouter/components/admin/JobManager.tsx +758 -0
  534. package/src/BetRouter/components/admin/LeagueContests.tsx +2443 -0
  535. package/src/BetRouter/components/admin/LeagueInfo.tsx +253 -0
  536. package/src/BetRouter/components/admin/LeagueParticipants.tsx +662 -0
  537. package/src/BetRouter/index.tsx +453 -0
  538. package/src/BetRouter/layouts/DesktopAdminLayout.tsx +348 -0
  539. package/src/BetRouter/layouts/DesktopLayout.tsx +292 -0
  540. package/src/BetRouter/layouts/MobileAdminLayout.tsx +387 -0
  541. package/src/BetRouter/layouts/MobileLayout.tsx +325 -0
  542. package/src/BetRouter/types/ADMIN_PORTAL.md +863 -0
  543. package/src/BetRouter/types/ADMIN_PORTAL_SIMPLIFIED.md +1881 -0
  544. package/src/BetRouter/types/CREDENTIALS_EXAMPLE.md +350 -0
  545. package/src/BetRouter/types/LIQUIDITY_CLIENT_GUIDE.md +399 -0
  546. package/src/BetRouter/types/MARKET_LINKING_WORKFLOW.md +682 -0
  547. package/src/BetRouter/types/MARKET_LINKING_WORKFLOW_V2.md +627 -0
  548. package/src/BetRouter/types/README.md +249 -0
  549. package/src/BetRouter/types/accounts.ts +21 -0
  550. package/src/BetRouter/types/api-contracts.ts +1164 -0
  551. package/src/BetRouter/types/config.ts +12 -0
  552. package/src/BetRouter/types/contests.ts +37 -0
  553. package/src/BetRouter/types/credentials.ts +99 -0
  554. package/src/BetRouter/types/index.ts +16 -0
  555. package/src/BetRouter/types/jobs.ts +37 -0
  556. package/src/BetRouter/types/leagues.ts +29 -0
  557. package/src/BetRouter/types/liquidity.ts +15 -0
  558. package/src/BetRouter/types/markets.ts +94 -0
  559. package/src/BetRouter/types/opportunities.ts +107 -0
  560. package/src/BetRouter/types/orders.ts +51 -0
  561. package/src/BetRouter/types/participants.ts +34 -0
  562. package/src/BetRouter/types/partners.ts +10 -0
  563. package/src/Charts/README.md +310 -0
  564. package/src/Charts/adapters/TradeChartAdapter.ts +471 -0
  565. package/src/Charts/components/BaseLineChart.tsx +293 -0
  566. package/src/Charts/components/LivePriceChart.tsx +521 -0
  567. package/src/Charts/index.tsx +62 -0
  568. package/src/Charts/themes/chartTheme.ts +113 -0
  569. package/src/Charts/types.ts +160 -0
  570. package/src/Charts/utils/formatters.ts +182 -0
  571. package/src/Components/Dropdown.tsx +6 -3
  572. package/src/Components/Icons.tsx +12 -0
  573. package/src/Components/index.tsx +4 -0
  574. package/src/index.tsx +6 -0
  575. package/src/types.d.ts +410 -2
@@ -0,0 +1,2844 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _Themed = require("../../../Components/Themed");
9
+ var _reactNative = require("react-native");
10
+ var _useColors = require("../../../constants/useColors");
11
+ var _api = require("../../api");
12
+ var _Components = require("../../../Components");
13
+ var _Pagination = _interopRequireDefault(require("../../../Components/Pagination"));
14
+ var _Switch = _interopRequireDefault(require("../../../Components/Switch"));
15
+ var _momentMini = _interopRequireDefault(require("moment-mini"));
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
+ const RAW_CONTESTS_PER_PAGE = 10;
19
+ const PARTICIPANTS_PER_PAGE = 10;
20
+ const LeagueContests = ({
21
+ league,
22
+ initialContestId
23
+ }) => {
24
+ const Colors = (0, _useColors.useColors)();
25
+ const [contestData, setContestData] = (0, _react.useState)({
26
+ contests: [],
27
+ partnerContests: [],
28
+ partners: [],
29
+ participants: [],
30
+ selectedContest: null,
31
+ loading: true,
32
+ loadingMarkets: false,
33
+ loadingModal: false,
34
+ searchValue: '',
35
+ currentTab: 'partners',
36
+ linkStatusFilter: 'all',
37
+ dateFilter: 'all',
38
+ customDateFrom: '',
39
+ customDateTo: '',
40
+ showLinkModal: false,
41
+ selectedPartner: null,
42
+ availableRawContests: [],
43
+ selectedRawIds: [],
44
+ rawSearchValue: '',
45
+ rawPage: 0,
46
+ showAutoLinkModal: false,
47
+ autoLinkResults: null,
48
+ showAutoLinkResults: false,
49
+ showMarketAutoLinkModal: false,
50
+ allRouterMarkets: [],
51
+ selectedMarketIds: [],
52
+ showManageMarketsModal: false,
53
+ marketContests: [],
54
+ partnerMarkets: [],
55
+ showLinkMarketsModal: false,
56
+ selectedMarketContest: null,
57
+ availableRawMarkets: [],
58
+ alreadyLinkedRawMarkets: [],
59
+ showAddVariableModal: false,
60
+ newVariableValue: '',
61
+ showInspectModal: false,
62
+ inspectPartnerMarkets: [],
63
+ marketSides: [],
64
+ marketVariables: [],
65
+ showManualLinkModal: false,
66
+ selectedRawMarket: null,
67
+ linkingData: null,
68
+ manualLinkForm: {
69
+ sideParticipants: [],
70
+ timeframe_id: '',
71
+ variable: '',
72
+ variable_type: 'spread'
73
+ },
74
+ participantSearchValue: '',
75
+ participantPage: 0,
76
+ selectedSideIndex: 0
77
+ });
78
+ (0, _react.useEffect)(() => {
79
+ loadContestData();
80
+ }, [league.router_league_id]);
81
+
82
+ // Auto-select contest when data loads
83
+ (0, _react.useEffect)(() => {
84
+ if (initialContestId && contestData.contests.length > 0 && !contestData.selectedContest) {
85
+ const contest = contestData.contests.find(c => c.router_contest_id === initialContestId);
86
+ if (contest) {
87
+ console.log('Auto-selecting contest:', contest);
88
+ setContestData(prev => ({
89
+ ...prev,
90
+ selectedContest: contest
91
+ }));
92
+ }
93
+ }
94
+ }, [initialContestId, contestData.contests]);
95
+ const loadContestData = async () => {
96
+ setContestData(prev => ({
97
+ ...prev,
98
+ loading: true
99
+ }));
100
+ try {
101
+ const [contestsRes, partnerContestsRes, partnersRes, participantsRes, sidesRes, variablesRes] = await Promise.all([_api.BetRouterApi.BetRouter.ContestApi.getOpenContests(league.router_league_id, 'open'), _api.BetRouterApi.BetRouter.ContestApi.getPartnerContests(), _api.BetRouterApi.BetRouter.PartnerApi.getPartners(), _api.BetRouterApi.BetRouter.ParticipantApi.getRouterParticipants(league.router_league_id),
102
+ // Load market sides and variables once - they're small and global
103
+ _api.BetRouterApi.BetRouter.MarketApi.getMarketSides(), _api.BetRouterApi.BetRouter.MarketApi.getMarketVariables()]);
104
+ setContestData(prev => ({
105
+ ...prev,
106
+ contests: contestsRes.router_contests || [],
107
+ partnerContests: Array.isArray(partnerContestsRes) ? partnerContestsRes : [],
108
+ partners: Array.isArray(partnersRes) ? partnersRes : [],
109
+ participants: Array.isArray(participantsRes) ? participantsRes : [],
110
+ marketSides: Array.isArray(sidesRes) ? sidesRes : [],
111
+ marketVariables: Array.isArray(variablesRes) ? variablesRes : [],
112
+ loading: false
113
+ }));
114
+ } catch (error) {
115
+ console.error('Failed to load contest data:', error);
116
+ setContestData(prev => ({
117
+ ...prev,
118
+ loading: false
119
+ }));
120
+ }
121
+ };
122
+ const loadRawContests = async partner => {
123
+ try {
124
+ setContestData(prev => ({
125
+ ...prev,
126
+ loading: true
127
+ }));
128
+ const result = await _api.BetRouterApi.BetRouter.ContestApi.loadRawContests(partner.partner_id, league.router_league_id);
129
+ alert(`Loaded ${result.count} raw contests from ${partner.name}`);
130
+ await loadContestData(); // Reload to get updated data
131
+ } catch (error) {
132
+ console.error('Error loading raw contests:', error);
133
+ alert('Error loading raw contests: ' + error.message);
134
+ } finally {
135
+ setContestData(prev => ({
136
+ ...prev,
137
+ loading: false
138
+ }));
139
+ }
140
+ };
141
+ const openLinkModal = async (contest, partner) => {
142
+ try {
143
+ setContestData(prev => ({
144
+ ...prev,
145
+ loading: true
146
+ }));
147
+ const data = await _api.BetRouterApi.BetRouter.ContestApi.getAvailableRawContests(contest.router_contest_id, partner.partner_id);
148
+ setContestData(prev => ({
149
+ ...prev,
150
+ availableRawContests: data.raw_contests || [],
151
+ showLinkModal: true,
152
+ selectedPartner: partner,
153
+ selectedContest: contest,
154
+ selectedRawIds: [],
155
+ rawSearchValue: '',
156
+ rawPage: 0,
157
+ loading: false
158
+ }));
159
+ } catch (error) {
160
+ console.error('Error loading raw contests:', error);
161
+ setContestData(prev => ({
162
+ ...prev,
163
+ loading: false
164
+ }));
165
+ }
166
+ };
167
+ const linkSelectedContests = async () => {
168
+ if (!contestData.selectedContest || contestData.selectedRawIds.length === 0) return;
169
+ try {
170
+ setContestData(prev => ({
171
+ ...prev,
172
+ loading: true
173
+ }));
174
+ await _api.BetRouterApi.BetRouter.ContestApi.linkContest(contestData.selectedRawIds, contestData.selectedContest.router_contest_id);
175
+ alert(`Linked ${contestData.selectedRawIds.length} raw contests`);
176
+ setContestData(prev => ({
177
+ ...prev,
178
+ showLinkModal: false
179
+ }));
180
+ await loadContestData(); // Reload to get updated data
181
+ } catch (error) {
182
+ console.error('Error linking contests:', error);
183
+ alert('Error linking contests: ' + error.message);
184
+ } finally {
185
+ setContestData(prev => ({
186
+ ...prev,
187
+ loading: false
188
+ }));
189
+ }
190
+ };
191
+ const toggleRawContestSelection = rawContestId => {
192
+ setContestData(prev => ({
193
+ ...prev,
194
+ selectedRawIds: prev.selectedRawIds.includes(rawContestId) ? prev.selectedRawIds.filter(id => id !== rawContestId) : [...prev.selectedRawIds, rawContestId]
195
+ }));
196
+ };
197
+ const getUniquePartnerCountForContest = contestId => {
198
+ const contestPartners = contestData.partnerContests.filter(pc => pc.router_contest_id === contestId);
199
+ const uniquePartnerIds = new Set(contestPartners.map(pc => pc.partner_id));
200
+ return uniquePartnerIds.size;
201
+ };
202
+ const isPartnerLinked = (contestId, partnerId) => {
203
+ return contestData.partnerContests.some(pc => pc.router_contest_id === contestId && pc.partner_id === partnerId);
204
+ };
205
+
206
+ // Calculate link status for a contest
207
+ const getContestLinkStatus = contest => {
208
+ const linkedPartnerCount = getUniquePartnerCountForContest(contest.router_contest_id);
209
+ const totalPartners = contestData.partners.length;
210
+ if (linkedPartnerCount === 0) return 'none';
211
+ if (linkedPartnerCount === totalPartners) return 'complete';
212
+ return 'partial';
213
+ };
214
+
215
+ // Get contests by link status
216
+ const getContestsByStatus = status => {
217
+ if (status === 'all') return contestData.contests;
218
+ return contestData.contests.filter(contest => getContestLinkStatus(contest) === status);
219
+ };
220
+ const getLinkedExternalIds = (contestId, partnerId) => {
221
+ return contestData.partnerContests.filter(pc => pc.router_contest_id === contestId && pc.partner_id === partnerId).map(pc => pc.external_id);
222
+ };
223
+ const openManageMarketsModal = async contest => {
224
+ try {
225
+ setContestData(prev => ({
226
+ ...prev,
227
+ loadingModal: true
228
+ }));
229
+ const data = await _api.BetRouterApi.BetRouter.MarketApi.getAvailableToSupport(contest.router_contest_id);
230
+ setContestData(prev => ({
231
+ ...prev,
232
+ allRouterMarkets: data.all_router_markets || [],
233
+ marketContests: data.market_contests || [],
234
+ showManageMarketsModal: true,
235
+ loadingModal: false
236
+ }));
237
+ } catch (error) {
238
+ console.error('Error loading available markets:', error);
239
+ alert('Error loading markets: ' + error.message);
240
+ setContestData(prev => ({
241
+ ...prev,
242
+ loadingModal: false
243
+ }));
244
+ }
245
+ };
246
+ const toggleMarketSupport = async routerMarketId => {
247
+ if (!contestData.selectedContest) return;
248
+ const isSupported = contestData.marketContests.some(mc => mc.router_market_id === routerMarketId);
249
+ try {
250
+ setContestData(prev => ({
251
+ ...prev,
252
+ loadingModal: true
253
+ }));
254
+ if (isSupported) {
255
+ // Remove it
256
+ const marketContest = contestData.marketContests.find(mc => mc.router_market_id === routerMarketId);
257
+ if (marketContest) {
258
+ await _api.BetRouterApi.BetRouter.MarketApi.removeSupportedMarket(marketContest.market_contest_id);
259
+ }
260
+ } else {
261
+ // Add it
262
+ await _api.BetRouterApi.BetRouter.MarketApi.addSupportedMarket(contestData.selectedContest.router_contest_id, routerMarketId);
263
+ }
264
+
265
+ // Reload the data
266
+ const data = await _api.BetRouterApi.BetRouter.MarketApi.getAvailableToSupport(contestData.selectedContest.router_contest_id);
267
+ setContestData(prev => ({
268
+ ...prev,
269
+ marketContests: data.market_contests || [],
270
+ loadingModal: false
271
+ }));
272
+ } catch (error) {
273
+ console.error('Error toggling market support:', error);
274
+ alert('Error updating market: ' + error.message);
275
+ setContestData(prev => ({
276
+ ...prev,
277
+ loadingModal: false
278
+ }));
279
+ }
280
+ };
281
+ const loadSupportedMarkets = async contest => {
282
+ try {
283
+ setContestData(prev => ({
284
+ ...prev,
285
+ loadingMarkets: true
286
+ }));
287
+ const data = await _api.BetRouterApi.BetRouter.MarketApi.getSupportedMarkets(contest.router_contest_id);
288
+
289
+ // Also load all router markets so we can display market info
290
+ const allMarketsData = await _api.BetRouterApi.BetRouter.MarketApi.getAvailableToSupport(contest.router_contest_id);
291
+ setContestData(prev => ({
292
+ ...prev,
293
+ marketContests: data.market_contests || [],
294
+ allRouterMarkets: allMarketsData.all_router_markets || [],
295
+ loadingMarkets: false
296
+ }));
297
+ } catch (error) {
298
+ console.error('Error loading supported markets:', error);
299
+ setContestData(prev => ({
300
+ ...prev,
301
+ loadingMarkets: false
302
+ }));
303
+ }
304
+ };
305
+ const removeSupportedMarket = async (marketContestId, contest) => {
306
+ try {
307
+ setContestData(prev => ({
308
+ ...prev,
309
+ loadingMarkets: true
310
+ }));
311
+ await _api.BetRouterApi.BetRouter.MarketApi.removeSupportedMarket(marketContestId);
312
+ await loadSupportedMarkets(contest);
313
+ } catch (error) {
314
+ console.error('Error removing supported market:', error);
315
+ alert('Error removing market: ' + error.message);
316
+ setContestData(prev => ({
317
+ ...prev,
318
+ loadingMarkets: false
319
+ }));
320
+ }
321
+ };
322
+ const loadPartnerMarketsForContest = async contest => {
323
+ try {
324
+ // Use contest-scoped endpoint to get only data for this specific contest
325
+ const contestData = await _api.BetRouterApi.BetRouter.ContestApi.getContest(contest.router_contest_id);
326
+ setContestData(prev => ({
327
+ ...prev,
328
+ partnerMarkets: contestData.partner_markets || []
329
+ // marketSides and marketVariables are global, load them once
330
+ // We'll fetch these only when needed or load them globally once
331
+ }));
332
+ } catch (error) {
333
+ console.error('Error loading partner markets for contest:', error);
334
+ }
335
+ };
336
+
337
+ // Helper to get participant name from partner_participant_id
338
+ // This now uses linkingData which is loaded on-demand in the manual link modal
339
+ const getParticipantName = partner_participant_id => {
340
+ if (!contestData.linkingData?.participants) return null;
341
+ const participant = contestData.linkingData.participants.find(p => p.partner_participant_id === partner_participant_id);
342
+ return participant?.name || null;
343
+ };
344
+ const openManualLinkModal = async rawMarket => {
345
+ if (!contestData.selectedContest || !contestData.selectedMarketContest || !contestData.selectedPartner) return;
346
+ try {
347
+ setContestData(prev => ({
348
+ ...prev,
349
+ loadingModal: true
350
+ }));
351
+ const data = await _api.BetRouterApi.BetRouter.MarketApi.getMarketLinkingData(contestData.selectedContest.router_contest_id, contestData.selectedMarketContest.router_market_id, contestData.selectedPartner.partner_id);
352
+ const routerMarket = contestData.allRouterMarkets.find(m => m.router_market_id === contestData.selectedMarketContest?.router_market_id);
353
+
354
+ // Set default values
355
+ const defaultTimeframe = data.timeframes?.[0]?.timeframe_id || '';
356
+ const defaultVariableType = routerMarket?.default_variable_type || 'spread';
357
+
358
+ // Initialize sideParticipants with empty entries for each side
359
+ const sideParticipants = data.market_sides.map(side => ({
360
+ market_side_id: side.market_side_id,
361
+ partner_participant_id: '',
362
+ price_key: ''
363
+ }));
364
+ setContestData(prev => ({
365
+ ...prev,
366
+ showManualLinkModal: true,
367
+ selectedRawMarket: rawMarket,
368
+ linkingData: data,
369
+ manualLinkForm: {
370
+ sideParticipants: sideParticipants,
371
+ timeframe_id: defaultTimeframe,
372
+ variable: '',
373
+ variable_type: defaultVariableType
374
+ },
375
+ participantSearchValue: '',
376
+ participantPage: 0,
377
+ selectedSideIndex: 0,
378
+ loadingModal: false
379
+ }));
380
+ } catch (error) {
381
+ console.error('Error loading linking data:', error);
382
+ alert('Error loading linking data: ' + error.message);
383
+ setContestData(prev => ({
384
+ ...prev,
385
+ loadingModal: false
386
+ }));
387
+ }
388
+ };
389
+ const submitManualLink = async () => {
390
+ if (!contestData.selectedRawMarket || !contestData.selectedMarketContest) return;
391
+ const routerMarket = contestData.allRouterMarkets.find(m => m.router_market_id === contestData.selectedMarketContest?.router_market_id);
392
+
393
+ // Validate required fields - at least one side must have a participant
394
+ const sidesWithParticipants = contestData.manualLinkForm.sideParticipants.filter(sp => sp.partner_participant_id);
395
+ if (sidesWithParticipants.length === 0) {
396
+ alert('Please select at least one participant');
397
+ return;
398
+ }
399
+ if (routerMarket?.variable_required && !contestData.manualLinkForm.variable) {
400
+ alert('Please enter a variable value');
401
+ return;
402
+ }
403
+ try {
404
+ setContestData(prev => ({
405
+ ...prev,
406
+ loadingModal: true
407
+ }));
408
+ const baseVariable = contestData.manualLinkForm.variable ? parseFloat(contestData.manualLinkForm.variable) : 0;
409
+ const isSpread = contestData.manualLinkForm.variable_type === 'spread';
410
+
411
+ // Create a link for each side that has a participant selected
412
+ const linkPromises = sidesWithParticipants.map(sideParticipant => {
413
+ // Find the side info to determine if we need to flip the variable
414
+ const side = contestData.linkingData.market_sides.find(s => s.market_side_id === sideParticipant.market_side_id);
415
+
416
+ // For spreads, flip the sign for away side (home keeps the value as entered)
417
+ let variableValue = baseVariable;
418
+ if (isSpread && side?.side_key.toLowerCase() === 'away') {
419
+ variableValue = baseVariable * -1;
420
+ }
421
+ return _api.BetRouterApi.BetRouter.MarketApi.linkMarket(contestData.selectedRawMarket.raw_market_id, contestData.selectedMarketContest.router_market_id, sideParticipant.market_side_id, sideParticipant.partner_participant_id, contestData.manualLinkForm.timeframe_id, variableValue, contestData.manualLinkForm.variable_type, sideParticipant.price_key || undefined);
422
+ });
423
+ await Promise.all(linkPromises);
424
+
425
+ // Reload data
426
+ if (contestData.selectedContest) {
427
+ await Promise.all([loadPartnerMarketsForContest(contestData.selectedContest), openLinkMarketsModal(contestData.selectedMarketContest, contestData.selectedPartner)]);
428
+ }
429
+ setContestData(prev => ({
430
+ ...prev,
431
+ showManualLinkModal: false,
432
+ selectedRawMarket: null,
433
+ linkingData: null,
434
+ loadingModal: false
435
+ }));
436
+ alert(`Successfully linked ${sidesWithParticipants.length} market side${sidesWithParticipants.length !== 1 ? 's' : ''}!`);
437
+ } catch (error) {
438
+ console.error('Error linking market:', error);
439
+ alert('Error linking market: ' + error.message);
440
+ setContestData(prev => ({
441
+ ...prev,
442
+ loadingModal: false
443
+ }));
444
+ }
445
+ };
446
+ const openLinkMarketsModal = async (marketContest, partner) => {
447
+ if (!contestData.selectedContest) return;
448
+ try {
449
+ setContestData(prev => ({
450
+ ...prev,
451
+ loadingModal: true
452
+ }));
453
+ const data = await _api.BetRouterApi.BetRouter.MarketApi.getAvailableRawMarkets(contestData.selectedContest.router_contest_id, marketContest.router_market_id, partner.partner_id);
454
+ setContestData(prev => ({
455
+ ...prev,
456
+ availableRawMarkets: data.raw_markets || [],
457
+ alreadyLinkedRawMarkets: data.already_linked || [],
458
+ showLinkMarketsModal: true,
459
+ selectedMarketContest: marketContest,
460
+ selectedPartner: partner,
461
+ loadingModal: false
462
+ }));
463
+ } catch (error) {
464
+ console.error('Error loading raw markets:', error);
465
+ alert('Error loading markets: ' + error.message);
466
+ setContestData(prev => ({
467
+ ...prev,
468
+ loadingModal: false
469
+ }));
470
+ }
471
+ };
472
+ const openAddVariableModal = (marketContest, partner) => {
473
+ setContestData(prev => ({
474
+ ...prev,
475
+ showAddVariableModal: true,
476
+ selectedMarketContest: marketContest,
477
+ selectedPartner: partner,
478
+ newVariableValue: ''
479
+ }));
480
+ };
481
+ const addVariable = async () => {
482
+ if (!contestData.selectedContest || !contestData.selectedMarketContest || !contestData.selectedPartner) return;
483
+ const variableValue = parseFloat(contestData.newVariableValue);
484
+ if (isNaN(variableValue)) {
485
+ alert('Please enter a valid number');
486
+ return;
487
+ }
488
+ try {
489
+ setContestData(prev => ({
490
+ ...prev,
491
+ loadingModal: true
492
+ }));
493
+ const result = await _api.BetRouterApi.BetRouter.MarketApi.addVariable(contestData.selectedContest.router_contest_id, contestData.selectedMarketContest.router_market_id, contestData.selectedPartner.partner_id, variableValue);
494
+
495
+ // Reload partner markets to show the new links
496
+ if (contestData.selectedContest) {
497
+ await loadPartnerMarketsForContest(contestData.selectedContest);
498
+ }
499
+ setContestData(prev => ({
500
+ ...prev,
501
+ showAddVariableModal: false,
502
+ newVariableValue: '',
503
+ loadingModal: false
504
+ }));
505
+ alert(`Successfully added variable ${variableValue}. Created ${result.count} partner market${result.count !== 1 ? 's' : ''}.`);
506
+ } catch (error) {
507
+ console.error('Error adding variable:', error);
508
+ alert('Error adding variable: ' + error.message);
509
+ setContestData(prev => ({
510
+ ...prev,
511
+ loadingModal: false
512
+ }));
513
+ }
514
+ };
515
+ const inspectPartnerMarkets = (marketContest, partner) => {
516
+ if (!contestData.selectedContest) return;
517
+
518
+ //const routerMarket = contestData.allRouterMarkets.find(m => m.router_market_id === marketContest.router_market_id);
519
+
520
+ // Filter partner markets for this specific market and partner
521
+ // No need to filter by router_contest_id - data is already scoped to this contest
522
+ const relevantPartnerMarkets = contestData.partnerMarkets.filter(pm => pm.router_market_id === marketContest.router_market_id && pm.partner_id === partner.partner_id);
523
+ setContestData(prev => ({
524
+ ...prev,
525
+ showInspectModal: true,
526
+ inspectPartnerMarkets: relevantPartnerMarkets,
527
+ selectedMarketContest: marketContest,
528
+ selectedPartner: partner
529
+ }));
530
+ };
531
+
532
+ // Apply search, link status, and date filters, then sort by scheduled_datetime
533
+ const filteredContests = contestData.contests.filter(c => {
534
+ // Search filter
535
+ const matchesSearch = c.contest_label.toLowerCase().includes(contestData.searchValue.toLowerCase());
536
+ // Link status filter
537
+ const matchesStatus = contestData.linkStatusFilter === 'all' || getContestLinkStatus(c) === contestData.linkStatusFilter;
538
+
539
+ // Date filter
540
+ let matchesDate = true;
541
+ if (contestData.dateFilter !== 'all') {
542
+ const contestDate = (0, _momentMini.default)(c.scheduled_datetime);
543
+ const now = (0, _momentMini.default)();
544
+ const todayStart = (0, _momentMini.default)().startOf('day');
545
+ const todayEnd = (0, _momentMini.default)().endOf('day');
546
+ if (contestData.dateFilter === 'upcoming') {
547
+ matchesDate = contestDate.isAfter(now);
548
+ } else if (contestData.dateFilter === 'today') {
549
+ matchesDate = contestDate.isBetween(todayStart, todayEnd, undefined, '[]');
550
+ } else if (contestData.dateFilter === 'past') {
551
+ matchesDate = contestDate.isBefore(now);
552
+ }
553
+ }
554
+ return matchesSearch && matchesStatus && matchesDate;
555
+ }).sort((a, b) => {
556
+ // Sort by scheduled_datetime ascending (earliest first)
557
+ return (0, _momentMini.default)(a.scheduled_datetime).valueOf() - (0, _momentMini.default)(b.scheduled_datetime).valueOf();
558
+ });
559
+ const filteredRawContests = contestData.availableRawContests.filter(c => c.pretty_title.toLowerCase().includes(contestData.rawSearchValue.toLowerCase()));
560
+ const totalRawPages = Math.ceil(filteredRawContests.length / RAW_CONTESTS_PER_PAGE);
561
+ const paginatedRawContests = filteredRawContests.slice(contestData.rawPage * RAW_CONTESTS_PER_PAGE, (contestData.rawPage + 1) * RAW_CONTESTS_PER_PAGE);
562
+ if (contestData.loading) {
563
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
564
+ transparent: true,
565
+ style: {
566
+ padding: 40,
567
+ alignItems: 'center'
568
+ }
569
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
570
+ size: "large",
571
+ color: Colors.text.h1
572
+ }));
573
+ }
574
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Themed.View, {
575
+ transparent: true,
576
+ style: {
577
+ flex: 1
578
+ }
579
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
580
+ transparent: true,
581
+ style: {
582
+ marginBottom: 24
583
+ }
584
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
585
+ theme: "h1",
586
+ size: 24
587
+ }, "Contests"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
588
+ theme: "description",
589
+ size: 14,
590
+ style: {
591
+ marginTop: 8
592
+ }
593
+ }, league.name, " - Manage contests and partner mappings")), /*#__PURE__*/_react.default.createElement(_Themed.View, {
594
+ type: "body",
595
+ style: {
596
+ padding: 16,
597
+ marginBottom: 16,
598
+ borderRadius: 8,
599
+ borderWidth: 1,
600
+ borderColor: Colors.borders.light
601
+ }
602
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
603
+ type: "header",
604
+ style: {
605
+ padding: 16,
606
+ marginBottom: 12
607
+ }
608
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
609
+ theme: "h2",
610
+ size: 16
611
+ }, "Load Raw Contests from Partners"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
612
+ theme: "description",
613
+ size: 12,
614
+ style: {
615
+ marginTop: 4
616
+ }
617
+ }, "Fetch contests from each partner's API")), /*#__PURE__*/_react.default.createElement(_Themed.View, {
618
+ transparent: true,
619
+ style: {
620
+ paddingHorizontal: 16,
621
+ paddingBottom: 16
622
+ }
623
+ }, contestData.partners.map(partner => /*#__PURE__*/_react.default.createElement(_Themed.View, {
624
+ key: partner.partner_id,
625
+ transparent: true,
626
+ style: {
627
+ flexDirection: 'row',
628
+ alignItems: 'center',
629
+ marginBottom: 8,
630
+ padding: 12,
631
+ backgroundColor: Colors.views.header,
632
+ borderRadius: 6
633
+ }
634
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
635
+ theme: "h2",
636
+ size: 13,
637
+ style: {
638
+ flex: 1
639
+ }
640
+ }, partner.name), /*#__PURE__*/_react.default.createElement(_Themed.Button, {
641
+ type: "action",
642
+ title: "Load Contests",
643
+ onPress: () => loadRawContests(partner),
644
+ style: {
645
+ paddingHorizontal: 15,
646
+ paddingVertical: 8
647
+ }
648
+ }))))), /*#__PURE__*/_react.default.createElement(_Themed.View, {
649
+ transparent: true,
650
+ style: {
651
+ flexDirection: 'row',
652
+ gap: 12,
653
+ marginBottom: 16
654
+ }
655
+ }, (() => {
656
+ const allCount = contestData.contests.length;
657
+ const completeCount = getContestsByStatus('complete').length;
658
+ const partialCount = getContestsByStatus('partial').length;
659
+ const noneCount = getContestsByStatus('none').length;
660
+ const stats = [{
661
+ status: 'all',
662
+ label: 'All Contests',
663
+ count: allCount,
664
+ color: Colors.text.h1
665
+ }, {
666
+ status: 'complete',
667
+ label: 'Fully Linked',
668
+ count: completeCount,
669
+ color: Colors.text.success
670
+ }, {
671
+ status: 'partial',
672
+ label: 'Partially Linked',
673
+ count: partialCount,
674
+ color: Colors.text.warning
675
+ }, {
676
+ status: 'none',
677
+ label: 'Not Linked',
678
+ count: noneCount,
679
+ color: Colors.text.error
680
+ }];
681
+ return stats.map(stat => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
682
+ key: stat.status,
683
+ onPress: () => setContestData(prev => ({
684
+ ...prev,
685
+ linkStatusFilter: stat.status
686
+ })),
687
+ style: {
688
+ flex: 1,
689
+ padding: 16,
690
+ backgroundColor: Colors.views.header,
691
+ borderRadius: 8,
692
+ borderWidth: 2,
693
+ borderColor: contestData.linkStatusFilter === stat.status ? stat.color : Colors.borders.light
694
+ }
695
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
696
+ theme: "description",
697
+ size: 11,
698
+ style: {
699
+ marginBottom: 4
700
+ }
701
+ }, stat.label.toUpperCase()), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
702
+ size: 28,
703
+ style: {
704
+ color: stat.color,
705
+ fontWeight: '600'
706
+ }
707
+ }, stat.count)));
708
+ })()), /*#__PURE__*/_react.default.createElement(_Themed.View, {
709
+ type: "body",
710
+ style: {
711
+ flex: 1,
712
+ borderRadius: 8,
713
+ borderWidth: 1,
714
+ borderColor: Colors.borders.light,
715
+ overflow: 'hidden'
716
+ }
717
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
718
+ type: "header",
719
+ style: {
720
+ padding: 16
721
+ }
722
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
723
+ transparent: true,
724
+ style: {
725
+ flexDirection: 'row',
726
+ justifyContent: 'space-between',
727
+ alignItems: 'center'
728
+ }
729
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
730
+ transparent: true
731
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
732
+ theme: "h2",
733
+ size: 16
734
+ }, "Router Contests"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
735
+ theme: "description",
736
+ size: 12,
737
+ style: {
738
+ marginTop: 4
739
+ }
740
+ }, filteredContests.length, " contest", filteredContests.length !== 1 ? 's' : '', contestData.linkStatusFilter !== 'all' && ` (${contestData.linkStatusFilter})`)), /*#__PURE__*/_react.default.createElement(_Themed.View, {
741
+ transparent: true,
742
+ style: {
743
+ flexDirection: 'row',
744
+ gap: 8
745
+ }
746
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
747
+ type: "action",
748
+ title: "\uD83D\uDD17 Auto-Link Contests",
749
+ onPress: () => setContestData(prev => ({
750
+ ...prev,
751
+ showAutoLinkModal: true
752
+ })),
753
+ style: {
754
+ paddingHorizontal: 15,
755
+ paddingVertical: 8
756
+ }
757
+ }), /*#__PURE__*/_react.default.createElement(_Themed.Button, {
758
+ type: "action",
759
+ title: "\uD83D\uDD17 Auto-Link Markets",
760
+ onPress: async () => {
761
+ try {
762
+ setContestData(prev => ({
763
+ ...prev,
764
+ loading: true
765
+ }));
766
+ const markets = await _api.BetRouterApi.BetRouter.MarketApi.getRouterMarkets();
767
+ setContestData(prev => ({
768
+ ...prev,
769
+ allRouterMarkets: Array.isArray(markets) ? markets : [],
770
+ showMarketAutoLinkModal: true,
771
+ loading: false
772
+ }));
773
+ } catch (error) {
774
+ console.error('Error loading router markets:', error);
775
+ alert('Error loading markets: ' + error.message);
776
+ setContestData(prev => ({
777
+ ...prev,
778
+ loading: false
779
+ }));
780
+ }
781
+ },
782
+ style: {
783
+ paddingHorizontal: 15,
784
+ paddingVertical: 8
785
+ }
786
+ }))), /*#__PURE__*/_react.default.createElement(_Themed.View, {
787
+ transparent: true,
788
+ style: {
789
+ marginTop: 12
790
+ }
791
+ }, /*#__PURE__*/_react.default.createElement(_Components.SearchBox, {
792
+ placeholder: "Search contests...",
793
+ onChange: text => setContestData(prev => ({
794
+ ...prev,
795
+ searchValue: text
796
+ })),
797
+ hide_search_button: true
798
+ })), /*#__PURE__*/_react.default.createElement(_Themed.View, {
799
+ transparent: true,
800
+ style: {
801
+ marginTop: 12
802
+ }
803
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
804
+ theme: "description",
805
+ size: 11,
806
+ style: {
807
+ marginBottom: 6,
808
+ textTransform: 'uppercase'
809
+ }
810
+ }, "Filter by Date"), /*#__PURE__*/_react.default.createElement(_Themed.View, {
811
+ transparent: true,
812
+ style: {
813
+ flexDirection: 'row',
814
+ gap: 8,
815
+ flexWrap: 'wrap'
816
+ }
817
+ }, [{
818
+ value: 'all',
819
+ label: 'All'
820
+ }, {
821
+ value: 'today',
822
+ label: 'Today'
823
+ }, {
824
+ value: 'upcoming',
825
+ label: 'Upcoming'
826
+ }, {
827
+ value: 'past',
828
+ label: 'Past'
829
+ }].map(filter => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
830
+ key: filter.value,
831
+ onPress: () => setContestData(prev => ({
832
+ ...prev,
833
+ dateFilter: filter.value
834
+ })),
835
+ style: {
836
+ paddingHorizontal: 14,
837
+ paddingVertical: 7,
838
+ borderRadius: 6,
839
+ borderWidth: 1,
840
+ borderColor: contestData.dateFilter === filter.value ? Colors.text.success : Colors.borders.light,
841
+ backgroundColor: contestData.dateFilter === filter.value ? Colors.views.body : 'transparent'
842
+ }
843
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
844
+ theme: contestData.dateFilter === filter.value ? 'h2' : 'description',
845
+ size: 12
846
+ }, filter.label)))))), /*#__PURE__*/_react.default.createElement(_reactNative.FlatList, {
847
+ data: filteredContests,
848
+ keyExtractor: item => item.router_contest_id,
849
+ renderItem: ({
850
+ item: contest
851
+ }) => {
852
+ const partnerCount = getUniquePartnerCountForContest(contest.router_contest_id);
853
+ const isExpanded = contestData.selectedContest?.router_contest_id === contest.router_contest_id;
854
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
855
+ transparent: true,
856
+ style: {
857
+ borderBottomWidth: 1,
858
+ borderBottomColor: Colors.borders.light
859
+ }
860
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
861
+ onPress: () => {
862
+ if (isExpanded) {
863
+ setContestData(prev => ({
864
+ ...prev,
865
+ selectedContest: null
866
+ }));
867
+ } else {
868
+ setContestData(prev => ({
869
+ ...prev,
870
+ selectedContest: contest
871
+ }));
872
+ // Load supported markets and partner markets when expanding
873
+ loadSupportedMarkets(contest);
874
+ loadPartnerMarketsForContest(contest);
875
+ }
876
+ },
877
+ style: {
878
+ padding: 16,
879
+ backgroundColor: isExpanded ? Colors.views.header : 'transparent',
880
+ flexDirection: 'row',
881
+ alignItems: 'center'
882
+ }
883
+ }, /*#__PURE__*/_react.default.createElement(_Components.Icons.ChevronIcon, {
884
+ direction: isExpanded ? 'down' : 'right',
885
+ size: 8,
886
+ color: Colors.text.h1
887
+ }), /*#__PURE__*/_react.default.createElement(_Themed.View, {
888
+ transparent: true,
889
+ style: {
890
+ flex: 1,
891
+ marginLeft: 12
892
+ }
893
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
894
+ theme: "h2",
895
+ size: 14
896
+ }, contest.contest_label), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
897
+ theme: "description",
898
+ size: 11,
899
+ style: {
900
+ marginTop: 2
901
+ }
902
+ }, (0, _momentMini.default)(contest.scheduled_datetime).format('ddd, MMM D, YYYY [at] h:mm A'), " \u2022 ", partnerCount, " partner", partnerCount !== 1 ? 's' : '')), /*#__PURE__*/_react.default.createElement(_Themed.View, {
903
+ transparent: true,
904
+ style: {
905
+ flexDirection: 'row',
906
+ alignItems: 'center',
907
+ gap: 8
908
+ }
909
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
910
+ theme: "description",
911
+ size: 12
912
+ }, "Auto-fill:"), /*#__PURE__*/_react.default.createElement(_Switch.default, {
913
+ value: contest.auto_fill ?? false,
914
+ switch_type: "on_off",
915
+ size: 14,
916
+ onChange: async value => {
917
+ try {
918
+ await _api.BetRouterApi.BetRouter.ContestApi.updateRouterContest(contest.router_contest_id, {
919
+ auto_fill: value
920
+ });
921
+ setContestData(prev => ({
922
+ ...prev,
923
+ contests: prev.contests.map(c => c.router_contest_id === contest.router_contest_id ? {
924
+ ...c,
925
+ auto_fill: value
926
+ } : c)
927
+ }));
928
+ } catch (error) {
929
+ console.error('Failed to update auto_fill:', error);
930
+ alert('Failed to update auto-fill setting');
931
+ }
932
+ }
933
+ }))), isExpanded && /*#__PURE__*/_react.default.createElement(_Themed.View, {
934
+ transparent: true,
935
+ style: {
936
+ paddingTop: 0
937
+ }
938
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
939
+ transparent: true,
940
+ style: {
941
+ flexDirection: 'row',
942
+ borderBottomWidth: 1,
943
+ borderBottomColor: Colors.borders.light,
944
+ paddingHorizontal: 16
945
+ }
946
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
947
+ onPress: () => setContestData(prev => ({
948
+ ...prev,
949
+ currentTab: 'partners'
950
+ })),
951
+ style: {
952
+ paddingVertical: 12,
953
+ paddingHorizontal: 16,
954
+ borderBottomWidth: contestData.currentTab === 'partners' ? 2 : 0,
955
+ borderBottomColor: Colors.text.action
956
+ }
957
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
958
+ theme: contestData.currentTab === 'partners' ? 'h2' : 'description',
959
+ size: 13,
960
+ style: {
961
+ color: contestData.currentTab === 'partners' ? Colors.text.action : Colors.text.description
962
+ }
963
+ }, "Partner Links")), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
964
+ onPress: () => {
965
+ setContestData(prev => ({
966
+ ...prev,
967
+ currentTab: 'markets'
968
+ }));
969
+ loadSupportedMarkets(contest);
970
+ loadPartnerMarketsForContest(contest);
971
+ },
972
+ style: {
973
+ paddingVertical: 12,
974
+ paddingHorizontal: 16,
975
+ borderBottomWidth: contestData.currentTab === 'markets' ? 2 : 0,
976
+ borderBottomColor: Colors.text.action
977
+ }
978
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
979
+ theme: contestData.currentTab === 'markets' ? 'h2' : 'description',
980
+ size: 13,
981
+ style: {
982
+ color: contestData.currentTab === 'markets' ? Colors.text.action : Colors.text.description
983
+ }
984
+ }, "Markets"))), /*#__PURE__*/_react.default.createElement(_Themed.View, {
985
+ transparent: true,
986
+ style: {
987
+ padding: 16
988
+ }
989
+ }, contestData.currentTab === 'partners' ?
990
+ /*#__PURE__*/
991
+ // Partners tab
992
+ _react.default.createElement(_react.default.Fragment, null, contestData.partners.map(partner => {
993
+ const linked = isPartnerLinked(contest.router_contest_id, partner.partner_id);
994
+ const externalIds = getLinkedExternalIds(contest.router_contest_id, partner.partner_id);
995
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
996
+ key: partner.partner_id,
997
+ transparent: true,
998
+ style: {
999
+ padding: 12,
1000
+ marginBottom: 8,
1001
+ backgroundColor: Colors.views.header,
1002
+ borderRadius: 6,
1003
+ flexDirection: 'row',
1004
+ alignItems: 'center'
1005
+ }
1006
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1007
+ transparent: true,
1008
+ style: {
1009
+ flex: 1
1010
+ }
1011
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1012
+ transparent: true,
1013
+ style: {
1014
+ flexDirection: 'row',
1015
+ alignItems: 'center',
1016
+ gap: 8
1017
+ }
1018
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1019
+ theme: "h2",
1020
+ size: 13
1021
+ }, partner.name), linked ? /*#__PURE__*/_react.default.createElement(_Components.Icons.CheckCirlceIcon, {
1022
+ color: Colors.text.success,
1023
+ size: 14
1024
+ }) : /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1025
+ theme: "description",
1026
+ size: 11
1027
+ }, "Not Linked")), linked && externalIds.length > 0 && /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1028
+ theme: "description",
1029
+ size: 11,
1030
+ style: {
1031
+ marginTop: 4
1032
+ }
1033
+ }, "External IDs: ", externalIds.join(', '))), /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1034
+ type: "action",
1035
+ title: linked ? 'Manage Links' : 'Link',
1036
+ onPress: () => openLinkModal(contest, partner),
1037
+ style: {
1038
+ paddingHorizontal: 12,
1039
+ paddingVertical: 6
1040
+ }
1041
+ }));
1042
+ })) :
1043
+ /*#__PURE__*/
1044
+ // Markets tab
1045
+ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1046
+ type: "action",
1047
+ title: "Manage Markets",
1048
+ onPress: () => openManageMarketsModal(contest),
1049
+ style: {
1050
+ marginBottom: 16
1051
+ }
1052
+ }), contestData.loadingMarkets ? /*#__PURE__*/_react.default.createElement(_Themed.View, {
1053
+ transparent: true,
1054
+ style: {
1055
+ padding: 40,
1056
+ alignItems: 'center'
1057
+ }
1058
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
1059
+ size: "small",
1060
+ color: Colors.text.h1
1061
+ }), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1062
+ theme: "description",
1063
+ size: 12,
1064
+ style: {
1065
+ marginTop: 8
1066
+ }
1067
+ }, "Loading markets...")) : contestData.marketContests.length === 0 ? /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1068
+ theme: "description",
1069
+ size: 12,
1070
+ style: {
1071
+ textAlign: 'center',
1072
+ padding: 20,
1073
+ opacity: 0.6
1074
+ }
1075
+ }, "No supported markets yet. Add a market above to get started.") : contestData.marketContests.map(marketContest => {
1076
+ const routerMarket = contestData.allRouterMarkets.find(rm => rm.router_market_id === marketContest.router_market_id);
1077
+ if (!routerMarket) return null;
1078
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
1079
+ key: marketContest.market_contest_id,
1080
+ transparent: true,
1081
+ style: {
1082
+ marginBottom: 16,
1083
+ padding: 15,
1084
+ backgroundColor: Colors.views.header,
1085
+ borderRadius: 8,
1086
+ borderWidth: 1,
1087
+ borderColor: Colors.borders.light
1088
+ }
1089
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1090
+ transparent: true,
1091
+ style: {
1092
+ flexDirection: 'row',
1093
+ alignItems: 'center',
1094
+ marginBottom: 10
1095
+ }
1096
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1097
+ theme: "h2",
1098
+ size: 14,
1099
+ style: {
1100
+ flex: 1
1101
+ }
1102
+ }, routerMarket.market_label), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1103
+ transparent: true,
1104
+ style: {
1105
+ flexDirection: 'row',
1106
+ alignItems: 'center',
1107
+ gap: 12,
1108
+ marginRight: 12
1109
+ }
1110
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1111
+ theme: "description",
1112
+ size: 11
1113
+ }, "Auto-fill:"), /*#__PURE__*/_react.default.createElement(_Switch.default, {
1114
+ value: marketContest.auto_fill ?? false,
1115
+ switch_type: "on_off",
1116
+ size: 12,
1117
+ onChange: async value => {
1118
+ try {
1119
+ await _api.BetRouterApi.BetRouter.MarketApi.updateMarketContest(marketContest.market_contest_id, {
1120
+ auto_fill: value
1121
+ });
1122
+ setContestData(prev => ({
1123
+ ...prev,
1124
+ marketContests: prev.marketContests.map(mc => mc.market_contest_id === marketContest.market_contest_id ? {
1125
+ ...mc,
1126
+ auto_fill: value
1127
+ } : mc)
1128
+ }));
1129
+ } catch (error) {
1130
+ console.error('Failed to update market auto_fill:', error);
1131
+ alert('Failed to update auto-fill setting');
1132
+ }
1133
+ }
1134
+ })), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
1135
+ onPress: () => removeSupportedMarket(marketContest.market_contest_id, contest)
1136
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1137
+ theme: "description",
1138
+ size: 12,
1139
+ style: {
1140
+ color: Colors.text.warning
1141
+ }
1142
+ }, "Remove"))), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1143
+ theme: "description",
1144
+ size: 11,
1145
+ style: {
1146
+ marginBottom: 12
1147
+ }
1148
+ }, routerMarket.market_description), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1149
+ transparent: true,
1150
+ style: {
1151
+ paddingTop: 8,
1152
+ borderTopWidth: 1,
1153
+ borderTopColor: Colors.borders.light
1154
+ }
1155
+ }, contestData.partners.map(partner => {
1156
+ // No need to filter by router_contest_id - data is already scoped to this contest
1157
+ const partnerMarketsForThis = contestData.partnerMarkets.filter(pm => pm.router_market_id === routerMarket.router_market_id && pm.partner_id === partner.partner_id);
1158
+ const isLinked = partnerMarketsForThis.length > 0;
1159
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
1160
+ key: partner.partner_id,
1161
+ transparent: true,
1162
+ style: {
1163
+ flexDirection: 'row',
1164
+ alignItems: 'center',
1165
+ padding: 10,
1166
+ marginTop: 8
1167
+ }
1168
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1169
+ transparent: true,
1170
+ style: {
1171
+ flex: 1,
1172
+ flexDirection: 'row',
1173
+ alignItems: 'center',
1174
+ gap: 10
1175
+ }
1176
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1177
+ theme: "description",
1178
+ size: 12
1179
+ }, partner.name, ":"), isLinked ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Components.Icons.CheckCirlceIcon, {
1180
+ color: Colors.text.success,
1181
+ size: 14
1182
+ }), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1183
+ theme: "description",
1184
+ size: 11
1185
+ }, "(", partnerMarketsForThis.length, " linked)")) : /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1186
+ theme: "description",
1187
+ size: 11
1188
+ }, "\u274C Not Linked")), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1189
+ transparent: true,
1190
+ style: {
1191
+ flexDirection: 'row',
1192
+ gap: 8
1193
+ }
1194
+ }, isLinked && /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1195
+ type: "close",
1196
+ title: "Inspect",
1197
+ onPress: () => inspectPartnerMarkets(marketContest, partner),
1198
+ style: {
1199
+ paddingHorizontal: 12,
1200
+ paddingVertical: 6
1201
+ }
1202
+ }), /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1203
+ type: "action",
1204
+ title: !isLinked ? 'Link Markets' : routerMarket.variable_required ? '+ Add Variable' : '+ Add More',
1205
+ onPress: () => {
1206
+ if (!isLinked || !routerMarket.variable_required) {
1207
+ openLinkMarketsModal(marketContest, partner);
1208
+ } else {
1209
+ openAddVariableModal(marketContest, partner);
1210
+ }
1211
+ },
1212
+ style: {
1213
+ paddingHorizontal: 12,
1214
+ paddingVertical: 6
1215
+ }
1216
+ })));
1217
+ })));
1218
+ })))));
1219
+ }
1220
+ })), contestData.showLinkModal && /*#__PURE__*/_react.default.createElement(_Themed.View, {
1221
+ style: {
1222
+ position: 'absolute',
1223
+ top: 0,
1224
+ left: 0,
1225
+ right: 0,
1226
+ bottom: 0,
1227
+ backgroundColor: 'rgba(0,0,0,0.5)',
1228
+ justifyContent: 'center',
1229
+ alignItems: 'center',
1230
+ padding: 20
1231
+ }
1232
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1233
+ float: true,
1234
+ style: {
1235
+ width: '90%',
1236
+ maxWidth: 600,
1237
+ maxHeight: '80%',
1238
+ borderRadius: 8,
1239
+ overflow: 'hidden',
1240
+ flexDirection: 'column'
1241
+ }
1242
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1243
+ type: "header",
1244
+ style: {
1245
+ padding: 16,
1246
+ flexDirection: 'row',
1247
+ justifyContent: 'space-between',
1248
+ alignItems: 'center'
1249
+ }
1250
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1251
+ transparent: true
1252
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1253
+ theme: "h1",
1254
+ size: 18
1255
+ }, "Link Raw Contests"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1256
+ theme: "description",
1257
+ size: 12,
1258
+ style: {
1259
+ marginTop: 4
1260
+ }
1261
+ }, contestData.selectedPartner?.name, " \u2192 ", contestData.selectedContest?.contest_label)), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
1262
+ onPress: () => setContestData(prev => ({
1263
+ ...prev,
1264
+ showLinkModal: false
1265
+ }))
1266
+ }, /*#__PURE__*/_react.default.createElement(_Components.Icons.CloseIcon, {
1267
+ size: 24,
1268
+ color: Colors.text.h1
1269
+ }))), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1270
+ transparent: true,
1271
+ style: {
1272
+ padding: 16,
1273
+ paddingTop: 0
1274
+ }
1275
+ }, /*#__PURE__*/_react.default.createElement(_Components.SearchBox, {
1276
+ placeholder: "Search raw contests...",
1277
+ onChange: text => setContestData(prev => ({
1278
+ ...prev,
1279
+ rawSearchValue: text,
1280
+ rawPage: 0
1281
+ })),
1282
+ hide_search_button: true
1283
+ })), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1284
+ transparent: true,
1285
+ style: {
1286
+ paddingHorizontal: 16,
1287
+ paddingBottom: 8
1288
+ }
1289
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1290
+ theme: "description",
1291
+ size: 12
1292
+ }, "Showing ", paginatedRawContests.length, " of ", filteredRawContests.length, " contest", filteredRawContests.length !== 1 ? 's' : '')), /*#__PURE__*/_react.default.createElement(_reactNative.FlatList, {
1293
+ data: paginatedRawContests,
1294
+ keyExtractor: item => item.raw_contest_id,
1295
+ renderItem: ({
1296
+ item: rawContest
1297
+ }) => {
1298
+ const isSelected = contestData.selectedRawIds.includes(rawContest.raw_contest_id);
1299
+ return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
1300
+ onPress: () => toggleRawContestSelection(rawContest.raw_contest_id),
1301
+ style: {
1302
+ padding: 12,
1303
+ backgroundColor: isSelected ? Colors.views.header : Colors.views.body,
1304
+ borderBottomWidth: 1,
1305
+ borderBottomColor: Colors.borders.light,
1306
+ flexDirection: 'row',
1307
+ alignItems: 'center'
1308
+ }
1309
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1310
+ transparent: true,
1311
+ style: {
1312
+ width: 24,
1313
+ height: 24,
1314
+ marginRight: 12
1315
+ }
1316
+ }, isSelected && /*#__PURE__*/_react.default.createElement(_Components.Icons.CheckIcon, {
1317
+ color: Colors.text.success,
1318
+ size: 20
1319
+ })), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1320
+ transparent: true,
1321
+ style: {
1322
+ flex: 1
1323
+ }
1324
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1325
+ theme: "h2",
1326
+ size: 13
1327
+ }, rawContest.pretty_title), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1328
+ theme: "description",
1329
+ size: 11,
1330
+ style: {
1331
+ marginTop: 2
1332
+ }
1333
+ }, new Date(rawContest.scheduled_datetime).toLocaleString(), " \u2022 ", rawContest.external_id)));
1334
+ }
1335
+ }), totalRawPages > 1 && /*#__PURE__*/_react.default.createElement(_Themed.View, {
1336
+ transparent: true,
1337
+ style: {
1338
+ padding: 16,
1339
+ paddingTop: 8
1340
+ }
1341
+ }, /*#__PURE__*/_react.default.createElement(_Pagination.default, {
1342
+ offset: contestData.rawPage,
1343
+ pages: totalRawPages,
1344
+ onNext: () => setContestData(prev => ({
1345
+ ...prev,
1346
+ rawPage: prev.rawPage + 1
1347
+ })),
1348
+ onPrevious: () => setContestData(prev => ({
1349
+ ...prev,
1350
+ rawPage: prev.rawPage - 1
1351
+ }))
1352
+ })), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1353
+ type: "footer",
1354
+ style: {
1355
+ padding: 16,
1356
+ flexDirection: 'row',
1357
+ justifyContent: 'flex-end',
1358
+ gap: 10
1359
+ }
1360
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1361
+ type: "close",
1362
+ title: "Cancel",
1363
+ onPress: () => setContestData(prev => ({
1364
+ ...prev,
1365
+ showLinkModal: false
1366
+ }))
1367
+ }), /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1368
+ type: "action",
1369
+ title: `Link ${contestData.selectedRawIds.length} Contest${contestData.selectedRawIds.length !== 1 ? 's' : ''}`,
1370
+ onPress: linkSelectedContests,
1371
+ disabled: contestData.selectedRawIds.length === 0
1372
+ }))))), contestData.showAutoLinkModal && /*#__PURE__*/_react.default.createElement(_Themed.View, {
1373
+ style: {
1374
+ position: 'fixed',
1375
+ top: 0,
1376
+ left: 0,
1377
+ right: 0,
1378
+ bottom: 0,
1379
+ backgroundColor: Colors.views.blur,
1380
+ justifyContent: 'center',
1381
+ alignItems: 'center',
1382
+ padding: 20,
1383
+ zIndex: 1000
1384
+ }
1385
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1386
+ float: true,
1387
+ style: {
1388
+ maxWidth: 500,
1389
+ width: '100%',
1390
+ borderRadius: 8,
1391
+ overflow: 'hidden'
1392
+ }
1393
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1394
+ type: "header",
1395
+ style: {
1396
+ padding: 20
1397
+ }
1398
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1399
+ theme: "h1",
1400
+ size: 18
1401
+ }, "Auto-Link Contests"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1402
+ theme: "description",
1403
+ size: 14,
1404
+ style: {
1405
+ marginTop: 5
1406
+ }
1407
+ }, "Select partner to automatically match and link contests")), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1408
+ type: "body",
1409
+ style: {
1410
+ padding: 20
1411
+ }
1412
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1413
+ theme: "description",
1414
+ size: 12,
1415
+ style: {
1416
+ marginBottom: 15
1417
+ }
1418
+ }, "This will attempt to automatically match contests based on scheduled time and participants."), contestData.partners.map(partner => {
1419
+ const linkedCount = contestData.partnerContests.filter(pc => pc.partner_id === partner.partner_id).length;
1420
+ const totalCount = contestData.contests.length;
1421
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
1422
+ key: partner.partner_id,
1423
+ transparent: true,
1424
+ style: {
1425
+ flexDirection: 'row',
1426
+ alignItems: 'center',
1427
+ padding: 15,
1428
+ marginBottom: 10,
1429
+ backgroundColor: Colors.views.header,
1430
+ borderRadius: 8
1431
+ }
1432
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1433
+ transparent: true,
1434
+ style: {
1435
+ flex: 1
1436
+ }
1437
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1438
+ theme: "h2",
1439
+ size: 14
1440
+ }, partner.name), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1441
+ theme: "description",
1442
+ size: 11,
1443
+ style: {
1444
+ marginTop: 3
1445
+ }
1446
+ }, linkedCount, "/", totalCount, " contests linked")), /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1447
+ type: "action",
1448
+ title: "Auto-Link",
1449
+ onPress: async () => {
1450
+ try {
1451
+ setContestData(prev => ({
1452
+ ...prev,
1453
+ loading: true
1454
+ }));
1455
+ const result = await _api.BetRouterApi.BetRouter.AutoLinkingApi.autoLinkContests(league.router_league_id, partner.partner_id);
1456
+ setContestData(prev => ({
1457
+ ...prev,
1458
+ autoLinkResults: result,
1459
+ showAutoLinkModal: false,
1460
+ showAutoLinkResults: true
1461
+ }));
1462
+
1463
+ // Reload partner contests
1464
+ const allPartnerContests = await _api.BetRouterApi.BetRouter.ContestApi.getPartnerContests();
1465
+ setContestData(prev => ({
1466
+ ...prev,
1467
+ partnerContests: Array.isArray(allPartnerContests) ? allPartnerContests : [],
1468
+ loading: false
1469
+ }));
1470
+ } catch (error) {
1471
+ console.error('Error auto-linking contests:', error);
1472
+ alert('Error auto-linking contests: ' + error.message);
1473
+ setContestData(prev => ({
1474
+ ...prev,
1475
+ loading: false
1476
+ }));
1477
+ }
1478
+ },
1479
+ style: {
1480
+ paddingHorizontal: 15,
1481
+ paddingVertical: 8
1482
+ }
1483
+ }));
1484
+ })), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1485
+ type: "footer",
1486
+ style: {
1487
+ padding: 15
1488
+ }
1489
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1490
+ type: "close",
1491
+ title: "Cancel",
1492
+ onPress: () => setContestData(prev => ({
1493
+ ...prev,
1494
+ showAutoLinkModal: false
1495
+ }))
1496
+ })))), contestData.showAutoLinkResults && contestData.autoLinkResults && /*#__PURE__*/_react.default.createElement(_Themed.View, {
1497
+ style: {
1498
+ position: 'fixed',
1499
+ top: 0,
1500
+ left: 0,
1501
+ right: 0,
1502
+ bottom: 0,
1503
+ backgroundColor: Colors.views.blur,
1504
+ justifyContent: 'center',
1505
+ alignItems: 'center',
1506
+ padding: 20,
1507
+ zIndex: 1000
1508
+ }
1509
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1510
+ float: true,
1511
+ style: {
1512
+ maxWidth: 600,
1513
+ width: '100%',
1514
+ maxHeight: '90%',
1515
+ borderRadius: 8,
1516
+ overflow: 'hidden'
1517
+ }
1518
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1519
+ type: "header",
1520
+ style: {
1521
+ padding: 20
1522
+ }
1523
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1524
+ theme: "h1",
1525
+ size: 18
1526
+ }, "Auto-Link Results"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1527
+ theme: "description",
1528
+ size: 14,
1529
+ style: {
1530
+ marginTop: 5
1531
+ }
1532
+ }, contestData.autoLinkResults.partner_name, " \u2022 ", league.name)), /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
1533
+ style: {
1534
+ flex: 1
1535
+ }
1536
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1537
+ transparent: true,
1538
+ style: {
1539
+ padding: 20
1540
+ }
1541
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1542
+ type: "body",
1543
+ style: {
1544
+ padding: 16,
1545
+ borderRadius: 8,
1546
+ marginBottom: 16
1547
+ }
1548
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1549
+ theme: "h2",
1550
+ size: 16,
1551
+ style: {
1552
+ marginBottom: 12
1553
+ }
1554
+ }, "Summary"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1555
+ theme: "description",
1556
+ size: 13,
1557
+ style: {
1558
+ marginBottom: 6
1559
+ }
1560
+ }, "Successfully linked: ", contestData.autoLinkResults.matched_count, "/", contestData.autoLinkResults.total_router_entities, " contests"), contestData.autoLinkResults.failed_count > 0 && /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1561
+ theme: "description",
1562
+ size: 13,
1563
+ style: {
1564
+ color: Colors.text.warning
1565
+ }
1566
+ }, "Failed: ", contestData.autoLinkResults.failed_count, " contests")), contestData.autoLinkResults.results.filter(r => !r.success).length > 0 && /*#__PURE__*/_react.default.createElement(_Themed.View, {
1567
+ type: "body",
1568
+ style: {
1569
+ padding: 16,
1570
+ borderRadius: 8
1571
+ }
1572
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1573
+ theme: "h2",
1574
+ size: 16,
1575
+ style: {
1576
+ marginBottom: 12
1577
+ }
1578
+ }, "Failed Matches"), contestData.autoLinkResults.results.filter(r => !r.success).map((result, index) => /*#__PURE__*/_react.default.createElement(_Themed.View, {
1579
+ key: index,
1580
+ transparent: true,
1581
+ style: {
1582
+ padding: 12,
1583
+ marginBottom: 8,
1584
+ backgroundColor: Colors.views.header,
1585
+ borderRadius: 6
1586
+ }
1587
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1588
+ theme: "h2",
1589
+ size: 13
1590
+ }, result.router_entity_label), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1591
+ theme: "description",
1592
+ size: 11,
1593
+ style: {
1594
+ marginTop: 4,
1595
+ color: Colors.text.warning
1596
+ }
1597
+ }, result.error || 'No matches found')))))), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1598
+ type: "footer",
1599
+ style: {
1600
+ padding: 15
1601
+ }
1602
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1603
+ type: "action",
1604
+ title: "Done",
1605
+ onPress: () => setContestData(prev => ({
1606
+ ...prev,
1607
+ showAutoLinkResults: false,
1608
+ autoLinkResults: null
1609
+ }))
1610
+ })))), contestData.showMarketAutoLinkModal && /*#__PURE__*/_react.default.createElement(_Themed.View, {
1611
+ style: {
1612
+ position: 'fixed',
1613
+ top: 0,
1614
+ left: 0,
1615
+ right: 0,
1616
+ bottom: 0,
1617
+ backgroundColor: Colors.views.blur,
1618
+ justifyContent: 'center',
1619
+ alignItems: 'center',
1620
+ padding: 20,
1621
+ zIndex: 1000
1622
+ }
1623
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1624
+ float: true,
1625
+ style: {
1626
+ maxWidth: 700,
1627
+ width: '100%',
1628
+ maxHeight: '90%',
1629
+ borderRadius: 8,
1630
+ overflow: 'hidden'
1631
+ }
1632
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1633
+ type: "header",
1634
+ style: {
1635
+ padding: 20
1636
+ }
1637
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1638
+ theme: "h1",
1639
+ size: 18
1640
+ }, "Auto-Link Markets"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1641
+ theme: "description",
1642
+ size: 14,
1643
+ style: {
1644
+ marginTop: 5
1645
+ }
1646
+ }, "Select markets and partner to auto-link")), /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
1647
+ style: {
1648
+ flex: 1
1649
+ }
1650
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1651
+ transparent: true,
1652
+ style: {
1653
+ padding: 20
1654
+ }
1655
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1656
+ theme: "h2",
1657
+ size: 14,
1658
+ style: {
1659
+ marginBottom: 10
1660
+ }
1661
+ }, "Select Markets:"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1662
+ theme: "description",
1663
+ size: 12,
1664
+ style: {
1665
+ marginBottom: 15
1666
+ }
1667
+ }, "Choose which markets to auto-link for the selected partner"), contestData.allRouterMarkets.filter(m => m.status === 'active').map(market => {
1668
+ const isSelected = contestData.selectedMarketIds.includes(market.router_market_id);
1669
+ return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
1670
+ key: market.router_market_id,
1671
+ style: {
1672
+ padding: 12,
1673
+ marginBottom: 8,
1674
+ backgroundColor: isSelected ? Colors.text.action : Colors.views.header,
1675
+ borderRadius: 6,
1676
+ borderWidth: isSelected ? 2 : 1,
1677
+ borderColor: isSelected ? Colors.text.action : Colors.borders.light
1678
+ },
1679
+ onPress: () => {
1680
+ setContestData(prev => ({
1681
+ ...prev,
1682
+ selectedMarketIds: isSelected ? prev.selectedMarketIds.filter(id => id !== market.router_market_id) : [...prev.selectedMarketIds, market.router_market_id]
1683
+ }));
1684
+ }
1685
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1686
+ transparent: true,
1687
+ style: {
1688
+ flexDirection: 'row',
1689
+ alignItems: 'center',
1690
+ gap: 10
1691
+ }
1692
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1693
+ style: {
1694
+ width: 20,
1695
+ height: 20,
1696
+ borderRadius: 4,
1697
+ borderWidth: 2,
1698
+ borderColor: isSelected ? Colors.text.success : Colors.borders.light,
1699
+ backgroundColor: isSelected ? Colors.text.success : 'transparent',
1700
+ justifyContent: 'center',
1701
+ alignItems: 'center'
1702
+ }
1703
+ }, isSelected && /*#__PURE__*/_react.default.createElement(_Components.Icons.CheckIcon, {
1704
+ color: Colors.text.white,
1705
+ size: 12
1706
+ })), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1707
+ transparent: true,
1708
+ style: {
1709
+ flex: 1
1710
+ }
1711
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1712
+ theme: "h2",
1713
+ size: 13
1714
+ }, market.market_label), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1715
+ theme: "description",
1716
+ size: 11,
1717
+ style: {
1718
+ marginTop: 2
1719
+ }
1720
+ }, market.market_description))));
1721
+ }), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1722
+ theme: "h2",
1723
+ size: 14,
1724
+ style: {
1725
+ marginTop: 20,
1726
+ marginBottom: 10
1727
+ }
1728
+ }, "Select Partner:"), contestData.partners.map(partner => /*#__PURE__*/_react.default.createElement(_Themed.View, {
1729
+ key: partner.partner_id,
1730
+ transparent: true,
1731
+ style: {
1732
+ marginBottom: 10,
1733
+ padding: 15,
1734
+ backgroundColor: Colors.views.header,
1735
+ borderRadius: 8,
1736
+ flexDirection: 'row',
1737
+ alignItems: 'center',
1738
+ justifyContent: 'space-between'
1739
+ }
1740
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1741
+ theme: "h2",
1742
+ size: 14
1743
+ }, partner.name), /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1744
+ type: "action",
1745
+ title: "Auto-Link",
1746
+ onPress: async () => {
1747
+ if (contestData.selectedMarketIds.length === 0) {
1748
+ alert('Please select at least one market');
1749
+ return;
1750
+ }
1751
+ try {
1752
+ setContestData(prev => ({
1753
+ ...prev,
1754
+ loading: true
1755
+ }));
1756
+ const results = [];
1757
+
1758
+ // Call auto-link for each selected market
1759
+ for (const marketId of contestData.selectedMarketIds) {
1760
+ const result = await _api.BetRouterApi.BetRouter.AutoLinkingApi.autoLinkMarkets(league.router_league_id, marketId, partner.partner_id);
1761
+ results.push(result);
1762
+ }
1763
+
1764
+ // Combine results
1765
+ const combinedResults = {
1766
+ entity_type: 'market',
1767
+ partner_name: partner.name,
1768
+ total_router_entities: results.reduce((sum, r) => sum + r.total_router_entities, 0),
1769
+ matched_count: results.reduce((sum, r) => sum + r.matched_count, 0),
1770
+ created_count: results.reduce((sum, r) => sum + (r.created_count || 0), 0),
1771
+ updated_count: results.reduce((sum, r) => sum + (r.updated_count || 0), 0),
1772
+ failed_count: results.reduce((sum, r) => sum + r.failed_count, 0),
1773
+ results: results.flatMap(r => r.results)
1774
+ };
1775
+ setContestData(prev => ({
1776
+ ...prev,
1777
+ autoLinkResults: combinedResults,
1778
+ showMarketAutoLinkModal: false,
1779
+ showAutoLinkResults: true,
1780
+ selectedMarketIds: [],
1781
+ loading: false
1782
+ }));
1783
+ } catch (error) {
1784
+ console.error('Error auto-linking markets:', error);
1785
+ alert('Error auto-linking markets: ' + error.message);
1786
+ setContestData(prev => ({
1787
+ ...prev,
1788
+ loading: false
1789
+ }));
1790
+ }
1791
+ },
1792
+ style: {
1793
+ paddingHorizontal: 15,
1794
+ paddingVertical: 8
1795
+ }
1796
+ }))))), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1797
+ type: "footer",
1798
+ style: {
1799
+ padding: 15
1800
+ }
1801
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1802
+ type: "close",
1803
+ title: "Cancel",
1804
+ onPress: () => setContestData(prev => ({
1805
+ ...prev,
1806
+ showMarketAutoLinkModal: false,
1807
+ selectedMarketIds: []
1808
+ }))
1809
+ })))), contestData.showManageMarketsModal && contestData.selectedContest && /*#__PURE__*/_react.default.createElement(_Themed.View, {
1810
+ style: {
1811
+ position: 'fixed',
1812
+ top: 0,
1813
+ left: 0,
1814
+ right: 0,
1815
+ bottom: 0,
1816
+ backgroundColor: Colors.views.blur,
1817
+ justifyContent: 'center',
1818
+ alignItems: 'center',
1819
+ padding: 20,
1820
+ zIndex: 1000
1821
+ }
1822
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1823
+ float: true,
1824
+ style: {
1825
+ maxWidth: 600,
1826
+ width: '100%',
1827
+ maxHeight: '80%',
1828
+ borderRadius: 8,
1829
+ overflow: 'hidden'
1830
+ }
1831
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1832
+ type: "header",
1833
+ style: {
1834
+ padding: 20
1835
+ }
1836
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1837
+ theme: "h1",
1838
+ size: 18
1839
+ }, "Manage Markets"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1840
+ theme: "description",
1841
+ size: 14,
1842
+ style: {
1843
+ marginTop: 5
1844
+ }
1845
+ }, "Select which markets are supported for \"", contestData.selectedContest.contest_label, "\"")), /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
1846
+ style: {
1847
+ flex: 1
1848
+ }
1849
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1850
+ transparent: true,
1851
+ style: {
1852
+ padding: 20
1853
+ }
1854
+ }, contestData.allRouterMarkets.length === 0 ? /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1855
+ theme: "description",
1856
+ size: 13,
1857
+ style: {
1858
+ textAlign: 'center',
1859
+ padding: 20
1860
+ }
1861
+ }, "No markets available") : contestData.allRouterMarkets.map(market => {
1862
+ const isSupported = contestData.marketContests.some(mc => mc.router_market_id === market.router_market_id);
1863
+ return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
1864
+ key: market.router_market_id,
1865
+ style: {
1866
+ padding: 15,
1867
+ marginBottom: 10,
1868
+ backgroundColor: isSupported ? Colors.text.action : Colors.views.header,
1869
+ borderRadius: 8,
1870
+ borderWidth: isSupported ? 2 : 1,
1871
+ borderColor: isSupported ? Colors.text.success : Colors.borders.light
1872
+ },
1873
+ onPress: () => toggleMarketSupport(market.router_market_id)
1874
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1875
+ transparent: true,
1876
+ style: {
1877
+ flexDirection: 'row',
1878
+ alignItems: 'center'
1879
+ }
1880
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1881
+ transparent: true,
1882
+ style: {
1883
+ marginRight: 10
1884
+ }
1885
+ }, isSupported ? /*#__PURE__*/_react.default.createElement(_Components.Icons.CheckCirlceIcon, {
1886
+ color: Colors.text.success,
1887
+ size: 20
1888
+ }) : /*#__PURE__*/_react.default.createElement(_Themed.View, {
1889
+ style: {
1890
+ width: 20,
1891
+ height: 20,
1892
+ borderWidth: 2,
1893
+ borderColor: Colors.borders.light,
1894
+ borderRadius: 4
1895
+ }
1896
+ })), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1897
+ transparent: true,
1898
+ style: {
1899
+ flex: 1
1900
+ }
1901
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1902
+ theme: "h2",
1903
+ size: 14
1904
+ }, market.market_label), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1905
+ theme: "description",
1906
+ size: 12,
1907
+ style: {
1908
+ marginTop: 3
1909
+ }
1910
+ }, market.market_description), isSupported && /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1911
+ theme: "description",
1912
+ size: 12,
1913
+ style: {
1914
+ marginTop: 3,
1915
+ color: Colors.text.success
1916
+ }
1917
+ }, "\u2713 Currently Active"))));
1918
+ }))), /*#__PURE__*/_react.default.createElement(_Themed.View, {
1919
+ type: "footer",
1920
+ style: {
1921
+ padding: 15
1922
+ }
1923
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
1924
+ type: "action",
1925
+ title: "Done",
1926
+ onPress: () => setContestData(prev => ({
1927
+ ...prev,
1928
+ showManageMarketsModal: false
1929
+ }))
1930
+ })))), contestData.showLinkMarketsModal && contestData.selectedMarketContest && contestData.selectedPartner && /*#__PURE__*/_react.default.createElement(_Themed.View, {
1931
+ style: {
1932
+ position: 'fixed',
1933
+ top: 0,
1934
+ left: 0,
1935
+ right: 0,
1936
+ bottom: 0,
1937
+ backgroundColor: Colors.views.blur,
1938
+ justifyContent: 'center',
1939
+ alignItems: 'center',
1940
+ padding: 20,
1941
+ zIndex: 1000
1942
+ }
1943
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1944
+ float: true,
1945
+ style: {
1946
+ width: '90%',
1947
+ maxWidth: 600,
1948
+ maxHeight: '80%',
1949
+ borderRadius: 8,
1950
+ overflow: 'hidden',
1951
+ flexDirection: 'column'
1952
+ }
1953
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1954
+ type: "header",
1955
+ style: {
1956
+ padding: 16,
1957
+ flexDirection: 'row',
1958
+ justifyContent: 'space-between',
1959
+ alignItems: 'center'
1960
+ }
1961
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
1962
+ transparent: true
1963
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1964
+ theme: "h1",
1965
+ size: 18
1966
+ }, "Link Raw Markets"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1967
+ theme: "description",
1968
+ size: 12,
1969
+ style: {
1970
+ marginTop: 4
1971
+ }
1972
+ }, contestData.selectedPartner.name, " \u2192 ", contestData.allRouterMarkets.find(m => m.router_market_id === contestData.selectedMarketContest?.router_market_id)?.market_label)), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
1973
+ onPress: () => setContestData(prev => ({
1974
+ ...prev,
1975
+ showLinkMarketsModal: false
1976
+ }))
1977
+ }, /*#__PURE__*/_react.default.createElement(_Components.Icons.CloseIcon, {
1978
+ size: 24,
1979
+ color: Colors.text.h1
1980
+ }))), contestData.alreadyLinkedRawMarkets.length > 0 && /*#__PURE__*/_react.default.createElement(_Themed.View, {
1981
+ transparent: true,
1982
+ style: {
1983
+ padding: 16,
1984
+ paddingTop: 0
1985
+ }
1986
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
1987
+ theme: "h2",
1988
+ size: 13,
1989
+ style: {
1990
+ marginBottom: 8
1991
+ }
1992
+ }, "Already Linked:"), contestData.alreadyLinkedRawMarkets.map(raw => /*#__PURE__*/_react.default.createElement(_Themed.View, {
1993
+ key: raw.raw_market_id,
1994
+ transparent: true,
1995
+ style: {
1996
+ padding: 8,
1997
+ marginBottom: 4,
1998
+ backgroundColor: Colors.views.header,
1999
+ borderRadius: 4
2000
+ }
2001
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2002
+ theme: "description",
2003
+ size: 12
2004
+ }, raw.pretty_title, " (", raw.external_id, ")")))), /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
2005
+ style: {
2006
+ flex: 1
2007
+ }
2008
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2009
+ transparent: true,
2010
+ style: {
2011
+ padding: 16
2012
+ }
2013
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2014
+ theme: "h2",
2015
+ size: 13,
2016
+ style: {
2017
+ marginBottom: 8
2018
+ }
2019
+ }, "Available Raw Markets:"), contestData.availableRawMarkets.length === 0 ? /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2020
+ theme: "description",
2021
+ size: 12,
2022
+ style: {
2023
+ textAlign: 'center',
2024
+ padding: 20,
2025
+ opacity: 0.6
2026
+ }
2027
+ }, "No available raw markets to link") : contestData.availableRawMarkets.map(rawMarket => /*#__PURE__*/_react.default.createElement(_Themed.View, {
2028
+ key: rawMarket.raw_market_id,
2029
+ transparent: true,
2030
+ style: {
2031
+ padding: 12,
2032
+ marginBottom: 8,
2033
+ backgroundColor: Colors.views.header,
2034
+ borderRadius: 6,
2035
+ borderWidth: 1,
2036
+ borderColor: Colors.borders.light
2037
+ }
2038
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2039
+ transparent: true,
2040
+ style: {
2041
+ flexDirection: 'row',
2042
+ justifyContent: 'space-between',
2043
+ alignItems: 'center'
2044
+ }
2045
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2046
+ transparent: true,
2047
+ style: {
2048
+ flex: 1
2049
+ }
2050
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2051
+ theme: "h2",
2052
+ size: 13
2053
+ }, rawMarket.pretty_title), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2054
+ theme: "description",
2055
+ size: 11,
2056
+ style: {
2057
+ marginTop: 2
2058
+ }
2059
+ }, "External ID: ", rawMarket.external_id)), /*#__PURE__*/_react.default.createElement(_Themed.Button, {
2060
+ type: "action",
2061
+ title: "Link",
2062
+ onPress: () => openManualLinkModal(rawMarket),
2063
+ style: {
2064
+ paddingHorizontal: 12,
2065
+ paddingVertical: 6
2066
+ }
2067
+ })))))), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2068
+ type: "footer",
2069
+ style: {
2070
+ padding: 16
2071
+ }
2072
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
2073
+ type: "close",
2074
+ title: "Close",
2075
+ onPress: () => setContestData(prev => ({
2076
+ ...prev,
2077
+ showLinkMarketsModal: false
2078
+ }))
2079
+ })))), contestData.showAddVariableModal && contestData.selectedMarketContest && contestData.selectedPartner && /*#__PURE__*/_react.default.createElement(_Themed.View, {
2080
+ style: {
2081
+ position: 'fixed',
2082
+ top: 0,
2083
+ left: 0,
2084
+ right: 0,
2085
+ bottom: 0,
2086
+ backgroundColor: Colors.views.blur,
2087
+ justifyContent: 'center',
2088
+ alignItems: 'center',
2089
+ padding: 20,
2090
+ zIndex: 1000
2091
+ }
2092
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2093
+ float: true,
2094
+ style: {
2095
+ maxWidth: 500,
2096
+ width: '100%',
2097
+ borderRadius: 8,
2098
+ overflow: 'hidden'
2099
+ }
2100
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2101
+ type: "header",
2102
+ style: {
2103
+ padding: 20
2104
+ }
2105
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2106
+ theme: "h1",
2107
+ size: 18
2108
+ }, "Add Variable"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2109
+ theme: "description",
2110
+ size: 14,
2111
+ style: {
2112
+ marginTop: 5
2113
+ }
2114
+ }, contestData.selectedPartner.name, " \u2022 ", contestData.allRouterMarkets.find(m => m.router_market_id === contestData.selectedMarketContest?.router_market_id)?.market_label)), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2115
+ type: "body",
2116
+ style: {
2117
+ padding: 20
2118
+ }
2119
+ }, (() => {
2120
+ const routerMarket = contestData.allRouterMarkets.find(m => m.router_market_id === contestData.selectedMarketContest?.router_market_id);
2121
+ const variableType = routerMarket?.default_variable_type || 'spread';
2122
+
2123
+ // Try to find home participant from existing partner markets
2124
+ const homeSide = contestData.marketSides.find(s => s.router_market_id === routerMarket?.router_market_id && s.side_key === 'home');
2125
+ const existingHomeMarket = contestData.inspectPartnerMarkets.length > 0 ? contestData.inspectPartnerMarkets.find(pm => pm.market_side_id === homeSide?.market_side_id) : contestData.partnerMarkets.find(pm => pm.router_market_id === routerMarket?.router_market_id && pm.market_side_id === homeSide?.market_side_id && pm.router_contest_id === contestData.selectedContest?.router_contest_id);
2126
+ const homeParticipantId = existingHomeMarket?.partner_participant_id;
2127
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2128
+ theme: "description",
2129
+ size: 13,
2130
+ style: {
2131
+ marginBottom: 15
2132
+ }
2133
+ }, variableType === 'spread' ? 'Enter the spread value from the HOME team\'s perspective. For example, if the home team is favored by 7 points, enter -7. This creates home -7 and away +7.' : 'Enter the total value (e.g., 220.5 for over/under 220.5). This will automatically create both over and under sides.'), homeParticipantId && (() => {
2134
+ const participantName = getParticipantName(homeParticipantId);
2135
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
2136
+ transparent: true,
2137
+ style: {
2138
+ padding: 10,
2139
+ backgroundColor: Colors.views.header,
2140
+ borderRadius: 6,
2141
+ marginBottom: 12
2142
+ }
2143
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2144
+ theme: "description",
2145
+ size: 11,
2146
+ style: {
2147
+ marginBottom: 4
2148
+ }
2149
+ }, "Home Team:"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2150
+ theme: "h2",
2151
+ size: 12
2152
+ }, participantName || homeParticipantId), participantName && /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2153
+ theme: "description",
2154
+ size: 10,
2155
+ style: {
2156
+ marginTop: 2
2157
+ }
2158
+ }, "ID: ", homeParticipantId));
2159
+ })(), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2160
+ theme: "h2",
2161
+ size: 13,
2162
+ style: {
2163
+ marginBottom: 8
2164
+ }
2165
+ }, variableType === 'spread' ? 'Home Team Spread:' : 'Total Value:'), /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, {
2166
+ style: {
2167
+ padding: 12,
2168
+ borderWidth: 1,
2169
+ borderColor: Colors.borders.light,
2170
+ borderRadius: 6,
2171
+ backgroundColor: Colors.views.header,
2172
+ color: Colors.text.h1,
2173
+ fontSize: 14
2174
+ },
2175
+ value: contestData.newVariableValue,
2176
+ onChangeText: text => setContestData(prev => ({
2177
+ ...prev,
2178
+ newVariableValue: text
2179
+ })),
2180
+ placeholder: variableType === 'spread' ? 'e.g., -7 or +3.5' : 'e.g., 220.5',
2181
+ placeholderTextColor: Colors.text.description,
2182
+ keyboardType: "numeric"
2183
+ }), variableType === 'spread' && contestData.newVariableValue && !isNaN(parseFloat(contestData.newVariableValue)) && /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2184
+ theme: "description",
2185
+ size: 11,
2186
+ style: {
2187
+ marginTop: 8,
2188
+ fontStyle: 'italic'
2189
+ }
2190
+ }, "Will create: Home ", contestData.newVariableValue, " / Away ", parseFloat(contestData.newVariableValue) * -1), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2191
+ theme: "description",
2192
+ size: 11,
2193
+ style: {
2194
+ marginTop: 10,
2195
+ fontStyle: 'italic'
2196
+ }
2197
+ }, "This will create partner markets for all raw markets from ", contestData.selectedPartner.name, " that match this contest."));
2198
+ })()), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2199
+ type: "footer",
2200
+ style: {
2201
+ padding: 15,
2202
+ flexDirection: 'row',
2203
+ gap: 10,
2204
+ justifyContent: 'flex-end'
2205
+ }
2206
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
2207
+ type: "close",
2208
+ title: "Cancel",
2209
+ onPress: () => setContestData(prev => ({
2210
+ ...prev,
2211
+ showAddVariableModal: false,
2212
+ newVariableValue: ''
2213
+ }))
2214
+ }), /*#__PURE__*/_react.default.createElement(_Themed.Button, {
2215
+ type: "action",
2216
+ title: "Add Variable",
2217
+ onPress: addVariable,
2218
+ disabled: !contestData.newVariableValue || isNaN(parseFloat(contestData.newVariableValue))
2219
+ })))), contestData.showInspectModal && contestData.selectedMarketContest && contestData.selectedPartner && /*#__PURE__*/_react.default.createElement(_Themed.View, {
2220
+ style: {
2221
+ position: 'fixed',
2222
+ top: 0,
2223
+ left: 0,
2224
+ right: 0,
2225
+ bottom: 0,
2226
+ backgroundColor: Colors.views.blur,
2227
+ justifyContent: 'center',
2228
+ alignItems: 'center',
2229
+ padding: 20,
2230
+ zIndex: 1000
2231
+ }
2232
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2233
+ float: true,
2234
+ style: {
2235
+ width: '90%',
2236
+ maxWidth: 800,
2237
+ maxHeight: '85%',
2238
+ borderRadius: 8,
2239
+ overflow: 'hidden',
2240
+ flexDirection: 'column'
2241
+ }
2242
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2243
+ type: "header",
2244
+ style: {
2245
+ padding: 16,
2246
+ flexDirection: 'row',
2247
+ justifyContent: 'space-between',
2248
+ alignItems: 'center'
2249
+ }
2250
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2251
+ transparent: true
2252
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2253
+ theme: "h1",
2254
+ size: 18
2255
+ }, "Partner Markets"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2256
+ theme: "description",
2257
+ size: 12,
2258
+ style: {
2259
+ marginTop: 4
2260
+ }
2261
+ }, contestData.selectedPartner.name, " \u2022 ", contestData.allRouterMarkets.find(m => m.router_market_id === contestData.selectedMarketContest?.router_market_id)?.market_label)), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
2262
+ onPress: () => setContestData(prev => ({
2263
+ ...prev,
2264
+ showInspectModal: false
2265
+ }))
2266
+ }, /*#__PURE__*/_react.default.createElement(_Components.Icons.CloseIcon, {
2267
+ size: 24,
2268
+ color: Colors.text.h1
2269
+ }))), /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
2270
+ style: {
2271
+ flex: 1
2272
+ }
2273
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2274
+ transparent: true,
2275
+ style: {
2276
+ padding: 16
2277
+ }
2278
+ }, contestData.inspectPartnerMarkets.length === 0 ? /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2279
+ theme: "description",
2280
+ size: 13,
2281
+ style: {
2282
+ textAlign: 'center',
2283
+ padding: 20
2284
+ }
2285
+ }, "No partner markets found") : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2286
+ theme: "h2",
2287
+ size: 14,
2288
+ style: {
2289
+ marginBottom: 12
2290
+ }
2291
+ }, contestData.inspectPartnerMarkets.length, " Partner Market", contestData.inspectPartnerMarkets.length !== 1 ? 's' : ''), contestData.inspectPartnerMarkets.map((pm, index) => {
2292
+ // Find enriched data
2293
+ const side = contestData.marketSides.find(s => s.market_side_id === pm.market_side_id);
2294
+ const variable = contestData.marketVariables.find(v => v.router_market_variable_id === pm.router_market_variable_id);
2295
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
2296
+ key: pm.partner_market_id,
2297
+ transparent: true,
2298
+ style: {
2299
+ padding: 14,
2300
+ marginBottom: 10,
2301
+ backgroundColor: Colors.views.header,
2302
+ borderRadius: 8,
2303
+ borderWidth: 1,
2304
+ borderColor: Colors.borders.light
2305
+ }
2306
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2307
+ transparent: true,
2308
+ style: {
2309
+ flexDirection: 'row',
2310
+ justifyContent: 'space-between',
2311
+ marginBottom: 8
2312
+ }
2313
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2314
+ theme: "h2",
2315
+ size: 13
2316
+ }, side ? `${side.side_key}` : `Partner Market #${index + 1}`, variable ? ` (${variable.variable > 0 ? '+' : ''}${variable.variable})` : ''), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2317
+ theme: "description",
2318
+ size: 11
2319
+ }, "ID: ", pm.partner_market_id.slice(0, 8), "...")), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2320
+ transparent: true,
2321
+ style: {
2322
+ gap: 6
2323
+ }
2324
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2325
+ transparent: true,
2326
+ style: {
2327
+ flexDirection: 'row'
2328
+ }
2329
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2330
+ theme: "description",
2331
+ size: 12,
2332
+ style: {
2333
+ width: 160
2334
+ }
2335
+ }, "External ID:"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2336
+ theme: "h2",
2337
+ size: 12,
2338
+ style: {
2339
+ flex: 1
2340
+ }
2341
+ }, pm.external_id)), side && /*#__PURE__*/_react.default.createElement(_Themed.View, {
2342
+ transparent: true,
2343
+ style: {
2344
+ flexDirection: 'row'
2345
+ }
2346
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2347
+ theme: "description",
2348
+ size: 12,
2349
+ style: {
2350
+ width: 160
2351
+ }
2352
+ }, "Side:"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2353
+ theme: "h2",
2354
+ size: 12,
2355
+ style: {
2356
+ flex: 1
2357
+ }
2358
+ }, side.side_key, " (", side.side_type, ")")), variable && /*#__PURE__*/_react.default.createElement(_Themed.View, {
2359
+ transparent: true,
2360
+ style: {
2361
+ flexDirection: 'row'
2362
+ }
2363
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2364
+ theme: "description",
2365
+ size: 12,
2366
+ style: {
2367
+ width: 160
2368
+ }
2369
+ }, "Variable:"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2370
+ theme: "h2",
2371
+ size: 12,
2372
+ style: {
2373
+ flex: 1
2374
+ }
2375
+ }, variable.variable, " (", variable.variable_type, ")")), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2376
+ transparent: true,
2377
+ style: {
2378
+ flexDirection: 'row'
2379
+ }
2380
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2381
+ theme: "description",
2382
+ size: 12,
2383
+ style: {
2384
+ width: 160
2385
+ }
2386
+ }, "Raw Market ID:"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2387
+ theme: "h2",
2388
+ size: 12,
2389
+ style: {
2390
+ flex: 1
2391
+ }
2392
+ }, pm.raw_market_id)), pm.partner_participant_id && (() => {
2393
+ const participantName = getParticipantName(pm.partner_participant_id);
2394
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
2395
+ transparent: true,
2396
+ style: {
2397
+ flexDirection: 'row'
2398
+ }
2399
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2400
+ theme: "description",
2401
+ size: 12,
2402
+ style: {
2403
+ width: 160
2404
+ }
2405
+ }, "Participant:"), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2406
+ transparent: true,
2407
+ style: {
2408
+ flex: 1
2409
+ }
2410
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2411
+ theme: "h2",
2412
+ size: 12
2413
+ }, participantName || pm.partner_participant_id), participantName && /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2414
+ theme: "description",
2415
+ size: 10,
2416
+ style: {
2417
+ marginTop: 2
2418
+ }
2419
+ }, "ID: ", pm.partner_participant_id)));
2420
+ })(), pm.timeframe_id && /*#__PURE__*/_react.default.createElement(_Themed.View, {
2421
+ transparent: true,
2422
+ style: {
2423
+ flexDirection: 'row'
2424
+ }
2425
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2426
+ theme: "description",
2427
+ size: 12,
2428
+ style: {
2429
+ width: 160
2430
+ }
2431
+ }, "Timeframe ID:"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2432
+ theme: "h2",
2433
+ size: 12,
2434
+ style: {
2435
+ flex: 1
2436
+ }
2437
+ }, pm.timeframe_id)), pm.price_key && /*#__PURE__*/_react.default.createElement(_Themed.View, {
2438
+ transparent: true,
2439
+ style: {
2440
+ flexDirection: 'row'
2441
+ }
2442
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2443
+ theme: "description",
2444
+ size: 12,
2445
+ style: {
2446
+ width: 160
2447
+ }
2448
+ }, "Price Key:"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2449
+ theme: "h2",
2450
+ size: 12,
2451
+ style: {
2452
+ flex: 1
2453
+ }
2454
+ }, pm.price_key))));
2455
+ })))), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2456
+ type: "footer",
2457
+ style: {
2458
+ padding: 16
2459
+ }
2460
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
2461
+ type: "close",
2462
+ title: "Close",
2463
+ onPress: () => setContestData(prev => ({
2464
+ ...prev,
2465
+ showInspectModal: false
2466
+ }))
2467
+ })))), contestData.showManualLinkModal && contestData.selectedRawMarket && contestData.linkingData && /*#__PURE__*/_react.default.createElement(_Themed.View, {
2468
+ style: {
2469
+ position: 'fixed',
2470
+ top: 0,
2471
+ left: 0,
2472
+ right: 0,
2473
+ bottom: 0,
2474
+ backgroundColor: Colors.views.blur,
2475
+ justifyContent: 'center',
2476
+ alignItems: 'center',
2477
+ padding: 20,
2478
+ zIndex: 1000
2479
+ }
2480
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2481
+ float: true,
2482
+ style: {
2483
+ width: '90%',
2484
+ maxWidth: 600,
2485
+ maxHeight: '85%',
2486
+ borderRadius: 8,
2487
+ overflow: 'hidden',
2488
+ flexDirection: 'column'
2489
+ }
2490
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2491
+ type: "header",
2492
+ style: {
2493
+ padding: 16,
2494
+ flexDirection: 'row',
2495
+ justifyContent: 'space-between',
2496
+ alignItems: 'center'
2497
+ }
2498
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2499
+ transparent: true
2500
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2501
+ theme: "h1",
2502
+ size: 18
2503
+ }, "Link Market"), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2504
+ theme: "description",
2505
+ size: 12,
2506
+ style: {
2507
+ marginTop: 4
2508
+ }
2509
+ }, contestData.selectedRawMarket.pretty_title)), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
2510
+ onPress: () => setContestData(prev => ({
2511
+ ...prev,
2512
+ showManualLinkModal: false
2513
+ }))
2514
+ }, /*#__PURE__*/_react.default.createElement(_Components.Icons.CloseIcon, {
2515
+ size: 24,
2516
+ color: Colors.text.h1
2517
+ }))), contestData.loadingModal ? /*#__PURE__*/_react.default.createElement(_Themed.View, {
2518
+ transparent: true,
2519
+ style: {
2520
+ padding: 40,
2521
+ alignItems: 'center'
2522
+ }
2523
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
2524
+ size: "large",
2525
+ color: Colors.text.h1
2526
+ })) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
2527
+ style: {
2528
+ flex: 1
2529
+ }
2530
+ }, /*#__PURE__*/_react.default.createElement(_Themed.View, {
2531
+ transparent: true,
2532
+ style: {
2533
+ padding: 16
2534
+ }
2535
+ }, (() => {
2536
+ const routerMarket = contestData.allRouterMarkets.find(m => m.router_market_id === contestData.selectedMarketContest?.router_market_id);
2537
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, routerMarket?.variable_required && /*#__PURE__*/_react.default.createElement(_Themed.View, {
2538
+ transparent: true,
2539
+ style: {
2540
+ marginBottom: 20
2541
+ }
2542
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2543
+ theme: "h2",
2544
+ size: 13,
2545
+ style: {
2546
+ marginBottom: 8
2547
+ }
2548
+ }, routerMarket.default_variable_type === 'spread' ? 'Spread' : 'Total', " Value: ", /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2549
+ theme: "error",
2550
+ size: 13
2551
+ }, "*")), /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, {
2552
+ value: contestData.manualLinkForm.variable,
2553
+ onChangeText: text => setContestData(prev => ({
2554
+ ...prev,
2555
+ manualLinkForm: {
2556
+ ...prev.manualLinkForm,
2557
+ variable: text
2558
+ }
2559
+ })),
2560
+ placeholder: routerMarket.default_variable_type === 'spread' ? 'e.g., -7 or +3.5' : 'e.g., 220.5',
2561
+ keyboardType: "numeric",
2562
+ style: {
2563
+ padding: 12,
2564
+ borderWidth: 1,
2565
+ borderColor: Colors.borders.light,
2566
+ borderRadius: 6,
2567
+ backgroundColor: Colors.views.header,
2568
+ color: Colors.text.h1,
2569
+ fontSize: 14
2570
+ }
2571
+ })), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2572
+ transparent: true,
2573
+ style: {
2574
+ marginBottom: 20
2575
+ }
2576
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2577
+ theme: "h2",
2578
+ size: 13,
2579
+ style: {
2580
+ marginBottom: 8
2581
+ }
2582
+ }, "Select Side: ", /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2583
+ theme: "error",
2584
+ size: 13
2585
+ }, "*")), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2586
+ transparent: true,
2587
+ style: {
2588
+ flexDirection: 'row',
2589
+ gap: 8
2590
+ }
2591
+ }, contestData.linkingData.market_sides.map((side, index) => {
2592
+ const sideParticipant = contestData.manualLinkForm.sideParticipants[index];
2593
+ const hasParticipant = !!sideParticipant?.partner_participant_id;
2594
+ const isSelected = contestData.selectedSideIndex === index;
2595
+ return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
2596
+ key: side.market_side_id,
2597
+ onPress: () => setContestData(prev => ({
2598
+ ...prev,
2599
+ selectedSideIndex: index,
2600
+ participantSearchValue: '',
2601
+ participantPage: 0
2602
+ })),
2603
+ style: {
2604
+ flex: 1,
2605
+ padding: 12,
2606
+ backgroundColor: Colors.views.header,
2607
+ borderRadius: 6,
2608
+ borderWidth: 2,
2609
+ borderColor: isSelected ? Colors.text.success : Colors.borders.light,
2610
+ flexDirection: 'row',
2611
+ alignItems: 'center',
2612
+ justifyContent: 'center',
2613
+ gap: 6
2614
+ }
2615
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2616
+ size: 14,
2617
+ style: {
2618
+ color: isSelected ? Colors.text.success : Colors.text.h1,
2619
+ fontWeight: isSelected ? '600' : '400'
2620
+ }
2621
+ }, side.side_key), hasParticipant && /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2622
+ size: 14,
2623
+ style: {
2624
+ color: Colors.text.success
2625
+ }
2626
+ }, "\u2713"));
2627
+ }))), (() => {
2628
+ const selectedSide = contestData.linkingData.market_sides[contestData.selectedSideIndex];
2629
+ const sideParticipant = contestData.manualLinkForm.sideParticipants[contestData.selectedSideIndex];
2630
+ const contestLeagueId = contestData.selectedContest?.router_league_id;
2631
+
2632
+ // Filter and paginate participants
2633
+ const searchFiltered = contestData.linkingData.participants.filter(p => {
2634
+ const searchLower = contestData.participantSearchValue.toLowerCase();
2635
+ return p.name.toLowerCase().includes(searchLower) || p.raw_name.toLowerCase().includes(searchLower) || p.external_id.toLowerCase().includes(searchLower);
2636
+ });
2637
+ const leagueFiltered = searchFiltered.filter(p => {
2638
+ const routerParticipant = contestData.participants.find(rp => rp.participant_id === p.router_participant_id);
2639
+ return routerParticipant?.router_league_id === contestLeagueId;
2640
+ });
2641
+ const totalPages = Math.ceil(leagueFiltered.length / PARTICIPANTS_PER_PAGE);
2642
+ const startIdx = contestData.participantPage * PARTICIPANTS_PER_PAGE;
2643
+ const endIdx = startIdx + PARTICIPANTS_PER_PAGE;
2644
+ const paginatedParticipants = leagueFiltered.slice(startIdx, endIdx);
2645
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
2646
+ transparent: true,
2647
+ style: {
2648
+ marginBottom: 20
2649
+ }
2650
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2651
+ theme: "h2",
2652
+ size: 13,
2653
+ style: {
2654
+ marginBottom: 8
2655
+ }
2656
+ }, "Participant for ", selectedSide?.side_key, ": ", /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2657
+ theme: "error",
2658
+ size: 13
2659
+ }, "*")), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2660
+ theme: "description",
2661
+ size: 11,
2662
+ style: {
2663
+ marginBottom: 12
2664
+ }
2665
+ }, leagueFiltered.length, " participants available"), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2666
+ transparent: true,
2667
+ style: {
2668
+ marginBottom: 12
2669
+ }
2670
+ }, /*#__PURE__*/_react.default.createElement(_Components.SearchBox, {
2671
+ placeholder: "Search participants...",
2672
+ onChange: text => setContestData(prev => ({
2673
+ ...prev,
2674
+ participantSearchValue: text,
2675
+ participantPage: 0
2676
+ })),
2677
+ hide_search_button: true
2678
+ })), paginatedParticipants.length === 0 ? /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2679
+ theme: "description",
2680
+ size: 12,
2681
+ style: {
2682
+ textAlign: 'center',
2683
+ padding: 20,
2684
+ opacity: 0.6
2685
+ }
2686
+ }, contestData.participantSearchValue ? 'No participants match your search' : 'No participants available for this league') : paginatedParticipants.map(participant => {
2687
+ const isSelected = sideParticipant?.partner_participant_id === participant.partner_participant_id;
2688
+ return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
2689
+ key: participant.partner_participant_id,
2690
+ onPress: () => {
2691
+ setContestData(prev => ({
2692
+ ...prev,
2693
+ manualLinkForm: {
2694
+ ...prev.manualLinkForm,
2695
+ sideParticipants: prev.manualLinkForm.sideParticipants.map((sp, idx) => idx === prev.selectedSideIndex ? {
2696
+ ...sp,
2697
+ partner_participant_id: participant.partner_participant_id
2698
+ } : sp)
2699
+ }
2700
+ }));
2701
+ },
2702
+ style: {
2703
+ padding: 12,
2704
+ marginBottom: 6,
2705
+ backgroundColor: Colors.views.header,
2706
+ borderRadius: 6,
2707
+ borderWidth: 1,
2708
+ borderColor: isSelected ? Colors.text.success : Colors.borders.light
2709
+ }
2710
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2711
+ size: 13,
2712
+ style: {
2713
+ color: isSelected ? Colors.text.success : Colors.text.h1,
2714
+ fontWeight: isSelected ? '600' : '400'
2715
+ }
2716
+ }, participant.name), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2717
+ theme: "description",
2718
+ size: 11,
2719
+ style: {
2720
+ marginTop: 2
2721
+ }
2722
+ }, participant.raw_name, " \u2022 External ID: ", participant.external_id));
2723
+ }), totalPages > 1 && /*#__PURE__*/_react.default.createElement(_Themed.View, {
2724
+ transparent: true,
2725
+ style: {
2726
+ marginTop: 12
2727
+ }
2728
+ }, /*#__PURE__*/_react.default.createElement(_Pagination.default, {
2729
+ offset: contestData.participantPage,
2730
+ pages: totalPages,
2731
+ onSelectPage: page => setContestData(prev => ({
2732
+ ...prev,
2733
+ participantPage: page
2734
+ }))
2735
+ })));
2736
+ })(), contestData.linkingData.timeframes.length > 0 && /*#__PURE__*/_react.default.createElement(_Themed.View, {
2737
+ transparent: true,
2738
+ style: {
2739
+ marginBottom: 20
2740
+ }
2741
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2742
+ theme: "h2",
2743
+ size: 13,
2744
+ style: {
2745
+ marginBottom: 8
2746
+ }
2747
+ }, "Timeframe:"), contestData.linkingData.timeframes.map(timeframe => {
2748
+ const isSelected = contestData.manualLinkForm.timeframe_id === timeframe.timeframe_id;
2749
+ return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
2750
+ key: timeframe.timeframe_id,
2751
+ onPress: () => setContestData(prev => ({
2752
+ ...prev,
2753
+ manualLinkForm: {
2754
+ ...prev.manualLinkForm,
2755
+ timeframe_id: timeframe.timeframe_id
2756
+ }
2757
+ })),
2758
+ style: {
2759
+ padding: 12,
2760
+ marginBottom: 6,
2761
+ backgroundColor: Colors.views.header,
2762
+ borderRadius: 6,
2763
+ borderWidth: 1,
2764
+ borderColor: isSelected ? Colors.text.success : Colors.borders.light
2765
+ }
2766
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2767
+ size: 13,
2768
+ style: {
2769
+ color: isSelected ? Colors.text.success : Colors.text.h1,
2770
+ fontWeight: isSelected ? '600' : '400'
2771
+ }
2772
+ }, timeframe.label));
2773
+ })), (() => {
2774
+ const selectedSide = contestData.linkingData.market_sides[contestData.selectedSideIndex];
2775
+ const sideParticipant = contestData.manualLinkForm.sideParticipants[contestData.selectedSideIndex];
2776
+ return /*#__PURE__*/_react.default.createElement(_Themed.View, {
2777
+ transparent: true,
2778
+ style: {
2779
+ marginBottom: 20
2780
+ }
2781
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2782
+ theme: "h2",
2783
+ size: 13,
2784
+ style: {
2785
+ marginBottom: 8
2786
+ }
2787
+ }, "Price Key for ", selectedSide?.side_key, " (optional):"), /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, {
2788
+ value: sideParticipant?.price_key || '',
2789
+ onChangeText: text => setContestData(prev => ({
2790
+ ...prev,
2791
+ manualLinkForm: {
2792
+ ...prev.manualLinkForm,
2793
+ sideParticipants: prev.manualLinkForm.sideParticipants.map((sp, idx) => idx === prev.selectedSideIndex ? {
2794
+ ...sp,
2795
+ price_key: text
2796
+ } : sp)
2797
+ }
2798
+ })),
2799
+ placeholder: "e.g., yes or no (for Kalshi)",
2800
+ style: {
2801
+ padding: 12,
2802
+ borderWidth: 1,
2803
+ borderColor: Colors.borders.light,
2804
+ borderRadius: 6,
2805
+ backgroundColor: Colors.views.header,
2806
+ color: Colors.text.h1,
2807
+ fontSize: 14
2808
+ }
2809
+ }), /*#__PURE__*/_react.default.createElement(_Themed.Text, {
2810
+ theme: "description",
2811
+ size: 11,
2812
+ style: {
2813
+ marginTop: 4
2814
+ }
2815
+ }, "Used by some partners to indicate which price to use for this side"));
2816
+ })());
2817
+ })())), /*#__PURE__*/_react.default.createElement(_Themed.View, {
2818
+ type: "footer",
2819
+ style: {
2820
+ padding: 16,
2821
+ flexDirection: 'row',
2822
+ gap: 12
2823
+ }
2824
+ }, /*#__PURE__*/_react.default.createElement(_Themed.Button, {
2825
+ type: "close",
2826
+ title: "Cancel",
2827
+ onPress: () => setContestData(prev => ({
2828
+ ...prev,
2829
+ showManualLinkModal: false
2830
+ })),
2831
+ style: {
2832
+ flex: 1
2833
+ }
2834
+ }), /*#__PURE__*/_react.default.createElement(_Themed.Button, {
2835
+ type: "action",
2836
+ title: "Link Market",
2837
+ onPress: submitManualLink,
2838
+ style: {
2839
+ flex: 1
2840
+ }
2841
+ }))))));
2842
+ };
2843
+ var _default = exports.default = LeagueContests;
2844
+ //# sourceMappingURL=LeagueContests.js.map