@microcosmmoney/portal-react 3.12.8 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/dist/index.d.ts +22 -0
  2. package/dist/index.js +48 -1
  3. package/dist/main-portal/components/auctions/AuctionsPage.d.ts +1 -0
  4. package/dist/main-portal/components/auctions/AuctionsPage.js +218 -0
  5. package/dist/main-portal/components/data/asset-stats.d.ts +1 -0
  6. package/dist/main-portal/components/data/asset-stats.js +33 -0
  7. package/dist/main-portal/components/data/charts/MCCSupplyChart.d.ts +7 -0
  8. package/dist/main-portal/components/data/charts/MCCSupplyChart.js +27 -0
  9. package/dist/main-portal/components/data/charts/MiningTrendChart.d.ts +7 -0
  10. package/dist/main-portal/components/data/charts/MiningTrendChart.js +39 -0
  11. package/dist/main-portal/components/data/charts/PriceChart.d.ts +5 -0
  12. package/dist/main-portal/components/data/charts/PriceChart.js +99 -0
  13. package/dist/main-portal/components/data/charts/TeamWalletChart.d.ts +7 -0
  14. package/dist/main-portal/components/data/charts/TeamWalletChart.js +33 -0
  15. package/dist/main-portal/components/data/charts/TerritoryProgressChart.d.ts +7 -0
  16. package/dist/main-portal/components/data/charts/TerritoryProgressChart.js +35 -0
  17. package/dist/main-portal/components/data/charts/UserLevelPieChart.d.ts +7 -0
  18. package/dist/main-portal/components/data/charts/UserLevelPieChart.js +34 -0
  19. package/dist/main-portal/components/data/charts/index.d.ts +5 -0
  20. package/dist/main-portal/components/data/charts/index.js +14 -0
  21. package/dist/main-portal/components/data/data-hero.d.ts +1 -0
  22. package/dist/main-portal/components/data/data-hero.js +81 -0
  23. package/dist/main-portal/components/data/mining-history-stats.d.ts +1 -0
  24. package/dist/main-portal/components/data/mining-history-stats.js +44 -0
  25. package/dist/main-portal/components/data/team-wallet-stats.d.ts +1 -0
  26. package/dist/main-portal/components/data/team-wallet-stats.js +34 -0
  27. package/dist/main-portal/components/data/territory-stats.d.ts +1 -0
  28. package/dist/main-portal/components/data/territory-stats.js +48 -0
  29. package/dist/main-portal/components/data/user-level-stats.d.ts +1 -0
  30. package/dist/main-portal/components/data/user-level-stats.js +36 -0
  31. package/dist/main-portal/components/fragment/FragmentPage.d.ts +1 -0
  32. package/dist/main-portal/components/fragment/FragmentPage.js +13 -0
  33. package/dist/main-portal/components/income/ManagerIncomePage.d.ts +1 -0
  34. package/dist/main-portal/components/income/ManagerIncomePage.js +147 -0
  35. package/dist/main-portal/components/layout/AppSidebar.d.ts +3 -0
  36. package/dist/main-portal/components/layout/AppSidebar.js +88 -0
  37. package/dist/main-portal/components/layout/DashboardHeader.d.ts +1 -0
  38. package/dist/main-portal/components/layout/DashboardHeader.js +121 -0
  39. package/dist/main-portal/components/layout/LocaleSwitcher.d.ts +1 -0
  40. package/dist/main-portal/components/layout/LocaleSwitcher.js +30 -0
  41. package/dist/main-portal/components/layout/MainFooter.d.ts +2 -0
  42. package/dist/main-portal/components/layout/MainFooter.js +50 -0
  43. package/dist/main-portal/components/layout/ShadcnNavbar.d.ts +1 -0
  44. package/dist/main-portal/components/layout/ShadcnNavbar.js +155 -0
  45. package/dist/main-portal/components/layout/TerminalSidebar.d.ts +1 -0
  46. package/dist/main-portal/components/layout/TerminalSidebar.js +110 -0
  47. package/dist/main-portal/components/lending/LendingPage.d.ts +1 -0
  48. package/dist/main-portal/components/lending/LendingPage.js +20 -0
  49. package/dist/main-portal/components/mcd/MCDPage.d.ts +1 -0
  50. package/dist/main-portal/components/mcd/MCDPage.js +125 -0
  51. package/dist/main-portal/components/messages/MessagesPage.d.ts +1 -0
  52. package/dist/main-portal/components/messages/MessagesPage.js +13 -0
  53. package/dist/main-portal/components/mining/MiningDistributionHistory.d.ts +11 -0
  54. package/dist/main-portal/components/mining/MiningDistributionHistory.js +84 -0
  55. package/dist/main-portal/components/mining/MiningModal.d.ts +12 -0
  56. package/dist/main-portal/components/mining/MiningModal.js +302 -0
  57. package/dist/main-portal/components/mining/MiningPage.d.ts +1 -0
  58. package/dist/main-portal/components/mining/MiningPage.js +237 -0
  59. package/dist/main-portal/components/mining/index.d.ts +1 -0
  60. package/dist/main-portal/components/mining/index.js +6 -0
  61. package/dist/main-portal/components/notifications/NotificationsPage.d.ts +1 -0
  62. package/dist/main-portal/components/notifications/NotificationsPage.js +13 -0
  63. package/dist/main-portal/components/organization/OrganizationPage.d.ts +1 -0
  64. package/dist/main-portal/components/organization/OrganizationPage.js +235 -0
  65. package/dist/main-portal/components/organization/connection-line.d.ts +12 -0
  66. package/dist/main-portal/components/organization/connection-line.js +38 -0
  67. package/dist/main-portal/components/organization/diagram-node.d.ts +17 -0
  68. package/dist/main-portal/components/organization/diagram-node.js +105 -0
  69. package/dist/main-portal/components/organization/system-panel.d.ts +11 -0
  70. package/dist/main-portal/components/organization/system-panel.js +72 -0
  71. package/dist/main-portal/components/profile/EmailChangeCard.d.ts +1 -0
  72. package/dist/main-portal/components/profile/EmailChangeCard.js +58 -0
  73. package/dist/main-portal/components/profile/ProfilePage.d.ts +1 -0
  74. package/dist/main-portal/components/profile/ProfilePage.js +263 -0
  75. package/dist/main-portal/components/profile/TwoFactorSettings.d.ts +1 -0
  76. package/dist/main-portal/components/profile/TwoFactorSettings.js +99 -0
  77. package/dist/main-portal/components/providers/ClientProviders.d.ts +6 -0
  78. package/dist/main-portal/components/providers/ClientProviders.js +17 -0
  79. package/dist/main-portal/components/providers/SolanaWalletProvider.d.ts +7 -0
  80. package/dist/main-portal/components/providers/SolanaWalletProvider.js +17 -0
  81. package/dist/main-portal/components/providers/theme-provider.d.ts +5 -0
  82. package/dist/main-portal/components/providers/theme-provider.js +10 -0
  83. package/dist/main-portal/components/queue/QueueStatusPage.d.ts +1 -0
  84. package/dist/main-portal/components/queue/QueueStatusPage.js +245 -0
  85. package/dist/main-portal/components/reincarnation/ReincarnationPage.d.ts +1 -0
  86. package/dist/main-portal/components/reincarnation/ReincarnationPage.js +87 -0
  87. package/dist/main-portal/components/resources/mcc-stats-section.d.ts +1 -0
  88. package/dist/main-portal/components/resources/mcc-stats-section.js +199 -0
  89. package/dist/main-portal/components/resources/mcd-stats-section.d.ts +1 -0
  90. package/dist/main-portal/components/resources/mcd-stats-section.js +76 -0
  91. package/dist/main-portal/components/resources/minting-entry-section.d.ts +1 -0
  92. package/dist/main-portal/components/resources/minting-entry-section.js +70 -0
  93. package/dist/main-portal/components/resources/public-mining-modal.d.ts +7 -0
  94. package/dist/main-portal/components/resources/public-mining-modal.js +239 -0
  95. package/dist/main-portal/components/resources/recycle-pool-section.d.ts +1 -0
  96. package/dist/main-portal/components/resources/recycle-pool-section.js +82 -0
  97. package/dist/main-portal/components/resources/registration-prompt.d.ts +8 -0
  98. package/dist/main-portal/components/resources/registration-prompt.js +13 -0
  99. package/dist/main-portal/components/rewards/RewardsPage.d.ts +1 -0
  100. package/dist/main-portal/components/rewards/RewardsPage.js +149 -0
  101. package/dist/main-portal/components/security/domain-verification-bar.d.ts +1 -0
  102. package/dist/main-portal/components/security/domain-verification-bar.js +32 -0
  103. package/dist/main-portal/components/stations/StationDetailPage.d.ts +5 -0
  104. package/dist/main-portal/components/stations/StationDetailPage.js +232 -0
  105. package/dist/main-portal/components/stations/StationIncomeChart.d.ts +11 -0
  106. package/dist/main-portal/components/stations/StationIncomeChart.js +57 -0
  107. package/dist/main-portal/components/stations/StationKPIHistory.d.ts +1 -0
  108. package/dist/main-portal/components/stations/StationKPIHistory.js +7 -0
  109. package/dist/main-portal/components/stations/StationListPage.d.ts +1 -0
  110. package/dist/main-portal/components/stations/StationListPage.js +341 -0
  111. package/dist/main-portal/components/stations/StationMemberRanking.d.ts +13 -0
  112. package/dist/main-portal/components/stations/StationMemberRanking.js +64 -0
  113. package/dist/main-portal/components/stations/StationSummaryCards.d.ts +13 -0
  114. package/dist/main-portal/components/stations/StationSummaryCards.js +30 -0
  115. package/dist/main-portal/components/stations/StationsPage.d.ts +1 -0
  116. package/dist/main-portal/components/stations/StationsPage.js +239 -0
  117. package/dist/main-portal/components/territory/TerritoryNFTBrowser.d.ts +1 -0
  118. package/dist/main-portal/components/territory/TerritoryNFTBrowser.js +147 -0
  119. package/dist/main-portal/components/ui/accordion.d.ts +7 -0
  120. package/dist/main-portal/components/ui/accordion.js +57 -0
  121. package/dist/main-portal/components/ui/alert-dialog.d.ts +14 -0
  122. package/dist/main-portal/components/ui/alert-dialog.js +85 -0
  123. package/dist/main-portal/components/ui/alert.d.ts +9 -0
  124. package/dist/main-portal/components/ui/alert.js +28 -0
  125. package/dist/main-portal/components/ui/aspect-ratio.d.ts +3 -0
  126. package/dist/main-portal/components/ui/aspect-ratio.js +43 -0
  127. package/dist/main-portal/components/ui/avatar.d.ts +6 -0
  128. package/dist/main-portal/components/ui/avatar.js +52 -0
  129. package/dist/main-portal/components/ui/badge.d.ts +9 -0
  130. package/dist/main-portal/components/ui/badge.js +26 -0
  131. package/dist/main-portal/components/ui/breadcrumb.d.ts +11 -0
  132. package/dist/main-portal/components/ui/breadcrumb.js +35 -0
  133. package/dist/main-portal/components/ui/button-group.d.ts +11 -0
  134. package/dist/main-portal/components/ui/button-group.js +34 -0
  135. package/dist/main-portal/components/ui/button.d.ts +10 -0
  136. package/dist/main-portal/components/ui/button.js +35 -0
  137. package/dist/main-portal/components/ui/calendar.d.ts +8 -0
  138. package/dist/main-portal/components/ui/calendar.js +111 -0
  139. package/dist/main-portal/components/ui/card.d.ts +17 -0
  140. package/dist/main-portal/components/ui/card.js +41 -0
  141. package/dist/main-portal/components/ui/carousel.d.ts +19 -0
  142. package/dist/main-portal/components/ui/carousel.js +134 -0
  143. package/dist/main-portal/components/ui/chart.d.ts +40 -0
  144. package/dist/main-portal/components/ui/chart.js +168 -0
  145. package/dist/main-portal/components/ui/checkbox.d.ts +4 -0
  146. package/dist/main-portal/components/ui/checkbox.js +45 -0
  147. package/dist/main-portal/components/ui/collapsible.d.ts +5 -0
  148. package/dist/main-portal/components/ui/collapsible.js +51 -0
  149. package/dist/main-portal/components/ui/command.d.ts +18 -0
  150. package/dist/main-portal/components/ui/command.js +45 -0
  151. package/dist/main-portal/components/ui/context-menu.d.ts +25 -0
  152. package/dist/main-portal/components/ui/context-menu.js +101 -0
  153. package/dist/main-portal/components/ui/dialog.d.ts +15 -0
  154. package/dist/main-portal/components/ui/dialog.js +81 -0
  155. package/dist/main-portal/components/ui/drawer.d.ts +13 -0
  156. package/dist/main-portal/components/ui/drawer.js +47 -0
  157. package/dist/main-portal/components/ui/dropdown-menu.d.ts +25 -0
  158. package/dist/main-portal/components/ui/dropdown-menu.js +101 -0
  159. package/dist/main-portal/components/ui/empty.d.ts +11 -0
  160. package/dist/main-portal/components/ui/empty.js +41 -0
  161. package/dist/main-portal/components/ui/field.d.ts +24 -0
  162. package/dist/main-portal/components/ui/field.js +85 -0
  163. package/dist/main-portal/components/ui/form.d.ts +24 -0
  164. package/dist/main-portal/components/ui/form.js +103 -0
  165. package/dist/main-portal/components/ui/hover-avatar.d.ts +10 -0
  166. package/dist/main-portal/components/ui/hover-avatar.js +70 -0
  167. package/dist/main-portal/components/ui/hover-card.d.ts +6 -0
  168. package/dist/main-portal/components/ui/hover-card.js +52 -0
  169. package/dist/main-portal/components/ui/input-group.d.ts +15 -0
  170. package/dist/main-portal/components/ui/input-group.js +65 -0
  171. package/dist/main-portal/components/ui/input-otp.d.ts +11 -0
  172. package/dist/main-portal/components/ui/input-otp.js +60 -0
  173. package/dist/main-portal/components/ui/input.d.ts +3 -0
  174. package/dist/main-portal/components/ui/input.js +8 -0
  175. package/dist/main-portal/components/ui/item.d.ts +23 -0
  176. package/dist/main-portal/components/ui/item.js +77 -0
  177. package/dist/main-portal/components/ui/kbd.d.ts +3 -0
  178. package/dist/main-portal/components/ui/kbd.js +13 -0
  179. package/dist/main-portal/components/ui/label.d.ts +4 -0
  180. package/dist/main-portal/components/ui/label.js +44 -0
  181. package/dist/main-portal/components/ui/menubar.d.ts +26 -0
  182. package/dist/main-portal/components/ui/menubar.js +105 -0
  183. package/dist/main-portal/components/ui/navigation-menu.d.ts +14 -0
  184. package/dist/main-portal/components/ui/navigation-menu.js +75 -0
  185. package/dist/main-portal/components/ui/pagination.d.ts +13 -0
  186. package/dist/main-portal/components/ui/pagination.js +37 -0
  187. package/dist/main-portal/components/ui/popover.d.ts +7 -0
  188. package/dist/main-portal/components/ui/popover.js +56 -0
  189. package/dist/main-portal/components/ui/progress.d.ts +4 -0
  190. package/dist/main-portal/components/ui/progress.js +44 -0
  191. package/dist/main-portal/components/ui/radio-group.d.ts +5 -0
  192. package/dist/main-portal/components/ui/radio-group.js +49 -0
  193. package/dist/main-portal/components/ui/resizable.d.ts +8 -0
  194. package/dist/main-portal/components/ui/resizable.js +53 -0
  195. package/dist/main-portal/components/ui/scroll-area.d.ts +5 -0
  196. package/dist/main-portal/components/ui/scroll-area.js +50 -0
  197. package/dist/main-portal/components/ui/select.d.ts +15 -0
  198. package/dist/main-portal/components/ui/select.js +83 -0
  199. package/dist/main-portal/components/ui/separator.d.ts +4 -0
  200. package/dist/main-portal/components/ui/separator.js +44 -0
  201. package/dist/main-portal/components/ui/sheet.d.ts +13 -0
  202. package/dist/main-portal/components/ui/sheet.js +83 -0
  203. package/dist/main-portal/components/ui/sidebar.d.ts +69 -0
  204. package/dist/main-portal/components/ui/sidebar.js +258 -0
  205. package/dist/main-portal/components/ui/skeleton.d.ts +2 -0
  206. package/dist/main-portal/components/ui/skeleton.js +9 -0
  207. package/dist/main-portal/components/ui/slider.d.ts +4 -0
  208. package/dist/main-portal/components/ui/slider.js +50 -0
  209. package/dist/main-portal/components/ui/sonner.d.ts +3 -0
  210. package/dist/main-portal/components/ui/sonner.js +17 -0
  211. package/dist/main-portal/components/ui/spinner.d.ts +2 -0
  212. package/dist/main-portal/components/ui/spinner.js +10 -0
  213. package/dist/main-portal/components/ui/switch.d.ts +4 -0
  214. package/dist/main-portal/components/ui/switch.js +44 -0
  215. package/dist/main-portal/components/ui/table.d.ts +10 -0
  216. package/dist/main-portal/components/ui/table.js +38 -0
  217. package/dist/main-portal/components/ui/tabs.d.ts +7 -0
  218. package/dist/main-portal/components/ui/tabs.js +53 -0
  219. package/dist/main-portal/components/ui/terminal.d.ts +49 -0
  220. package/dist/main-portal/components/ui/terminal.js +56 -0
  221. package/dist/main-portal/components/ui/textarea.d.ts +3 -0
  222. package/dist/main-portal/components/ui/textarea.js +8 -0
  223. package/dist/main-portal/components/ui/time-remaining.d.ts +54 -0
  224. package/dist/main-portal/components/ui/time-remaining.js +223 -0
  225. package/dist/main-portal/components/ui/toast.d.ts +15 -0
  226. package/dist/main-portal/components/ui/toast.js +77 -0
  227. package/dist/main-portal/components/ui/toaster.d.ts +1 -0
  228. package/dist/main-portal/components/ui/toaster.js +14 -0
  229. package/dist/main-portal/components/ui/toggle-group.d.ts +7 -0
  230. package/dist/main-portal/components/ui/toggle-group.js +58 -0
  231. package/dist/main-portal/components/ui/toggle.d.ts +9 -0
  232. package/dist/main-portal/components/ui/toggle.js +64 -0
  233. package/dist/main-portal/components/ui/tooltip.d.ts +7 -0
  234. package/dist/main-portal/components/ui/tooltip.js +56 -0
  235. package/dist/main-portal/components/ui/use-mobile.d.ts +1 -0
  236. package/dist/main-portal/components/ui/use-mobile.js +53 -0
  237. package/dist/main-portal/components/voting/VotingPage.d.ts +1 -0
  238. package/dist/main-portal/components/voting/VotingPage.js +14 -0
  239. package/dist/main-portal/components/wallet/MCCHistory.d.ts +9 -0
  240. package/dist/main-portal/components/wallet/MCCHistory.js +100 -0
  241. package/dist/main-portal/components/wallet/WalletManagement.d.ts +5 -0
  242. package/dist/main-portal/components/wallet/WalletManagement.js +144 -0
  243. package/dist/main-portal/components/wallet/WalletPage.d.ts +1 -0
  244. package/dist/main-portal/components/wallet/WalletPage.js +130 -0
  245. package/dist/main-portal/config/menu-config.d.ts +22 -0
  246. package/dist/main-portal/config/menu-config.js +167 -0
  247. package/dist/main-portal/contexts/MCCPriceContext.d.ts +38 -0
  248. package/dist/main-portal/contexts/MCCPriceContext.js +70 -0
  249. package/dist/main-portal/contexts/WalletContext.d.ts +48 -0
  250. package/dist/main-portal/contexts/WalletContext.js +94 -0
  251. package/dist/main-portal/hooks/index.d.ts +4 -0
  252. package/dist/main-portal/hooks/index.js +11 -0
  253. package/dist/main-portal/hooks/use-breakpoint.d.ts +45 -0
  254. package/dist/main-portal/hooks/use-breakpoint.js +91 -0
  255. package/dist/main-portal/hooks/use-mobile.d.ts +1 -0
  256. package/dist/main-portal/hooks/use-mobile.js +55 -0
  257. package/dist/main-portal/hooks/use-toast.d.ts +44 -0
  258. package/dist/main-portal/hooks/use-toast.js +164 -0
  259. package/dist/main-portal/hooks/useAuth.d.ts +30 -0
  260. package/dist/main-portal/hooks/useAuth.js +135 -0
  261. package/dist/main-portal/hooks/useMCC.d.ts +26 -0
  262. package/dist/main-portal/hooks/useMCC.js +148 -0
  263. package/dist/main-portal/hooks/useMCD.d.ts +17 -0
  264. package/dist/main-portal/hooks/useMCD.js +114 -0
  265. package/dist/main-portal/hooks/useMarketData.d.ts +9 -0
  266. package/dist/main-portal/hooks/useMarketData.js +32 -0
  267. package/dist/main-portal/hooks/useMultiWalletBalance.d.ts +31 -0
  268. package/dist/main-portal/hooks/useMultiWalletBalance.js +65 -0
  269. package/dist/main-portal/hooks/usePriceHistory.d.ts +9 -0
  270. package/dist/main-portal/hooks/usePriceHistory.js +36 -0
  271. package/dist/main-portal/hooks/useSolanaBalance.d.ts +21 -0
  272. package/dist/main-portal/hooks/useSolanaBalance.js +58 -0
  273. package/dist/main-portal/hooks/useSpeechRecognition.d.ts +6 -0
  274. package/dist/main-portal/hooks/useSpeechRecognition.js +82 -0
  275. package/dist/main-portal/hooks/useStats.d.ts +131 -0
  276. package/dist/main-portal/hooks/useStats.js +161 -0
  277. package/dist/main-portal/hooks/useStrategies.d.ts +134 -0
  278. package/dist/main-portal/hooks/useStrategies.js +28 -0
  279. package/dist/main-portal/hooks/useUserRank.d.ts +16 -0
  280. package/dist/main-portal/hooks/useUserRank.js +61 -0
  281. package/dist/main-portal/hooks/useWalletTokenBalances.d.ts +29 -0
  282. package/dist/main-portal/hooks/useWalletTokenBalances.js +106 -0
  283. package/dist/main-portal/i18n/navigation.d.ts +341 -0
  284. package/dist/main-portal/i18n/navigation.js +7 -0
  285. package/dist/main-portal/i18n/request.d.ts +2 -0
  286. package/dist/main-portal/i18n/request.js +47 -0
  287. package/dist/main-portal/i18n/routing.d.ts +18 -0
  288. package/dist/main-portal/i18n/routing.js +10 -0
  289. package/dist/main-portal/lib/ai-chat-config.d.ts +8 -0
  290. package/dist/main-portal/lib/ai-chat-config.js +144 -0
  291. package/dist/main-portal/lib/analytics/hooks.d.ts +139 -0
  292. package/dist/main-portal/lib/analytics/hooks.js +277 -0
  293. package/dist/main-portal/lib/analytics/index.d.ts +2 -0
  294. package/dist/main-portal/lib/analytics/index.js +19 -0
  295. package/dist/main-portal/lib/analytics/types.d.ts +611 -0
  296. package/dist/main-portal/lib/analytics/types.js +2 -0
  297. package/dist/main-portal/lib/api/account.d.ts +39 -0
  298. package/dist/main-portal/lib/api/account.js +86 -0
  299. package/dist/main-portal/lib/api/admin.d.ts +78 -0
  300. package/dist/main-portal/lib/api/admin.js +195 -0
  301. package/dist/main-portal/lib/api/analytics.d.ts +217 -0
  302. package/dist/main-portal/lib/api/analytics.js +55 -0
  303. package/dist/main-portal/lib/api/blockchain.d.ts +178 -0
  304. package/dist/main-portal/lib/api/blockchain.js +302 -0
  305. package/dist/main-portal/lib/api/core.d.ts +3 -0
  306. package/dist/main-portal/lib/api/core.js +47 -0
  307. package/dist/main-portal/lib/api/dexscreener.d.ts +126 -0
  308. package/dist/main-portal/lib/api/dexscreener.js +139 -0
  309. package/dist/main-portal/lib/api/geckoterminal.d.ts +10 -0
  310. package/dist/main-portal/lib/api/geckoterminal.js +43 -0
  311. package/dist/main-portal/lib/api/index.d.ts +16 -0
  312. package/dist/main-portal/lib/api/index.js +230 -0
  313. package/dist/main-portal/lib/api/mcc-holders.d.ts +130 -0
  314. package/dist/main-portal/lib/api/mcc-holders.js +47 -0
  315. package/dist/main-portal/lib/api/org-service-proxy.d.ts +7 -0
  316. package/dist/main-portal/lib/api/org-service-proxy.js +55 -0
  317. package/dist/main-portal/lib/api/services/ai.d.ts +139 -0
  318. package/dist/main-portal/lib/api/services/ai.js +214 -0
  319. package/dist/main-portal/lib/api/services/finance.d.ts +37 -0
  320. package/dist/main-portal/lib/api/services/finance.js +144 -0
  321. package/dist/main-portal/lib/api/services/index.d.ts +5 -0
  322. package/dist/main-portal/lib/api/services/index.js +21 -0
  323. package/dist/main-portal/lib/api/services/mining.d.ts +68 -0
  324. package/dist/main-portal/lib/api/services/mining.js +76 -0
  325. package/dist/main-portal/lib/api/services/organization.d.ts +161 -0
  326. package/dist/main-portal/lib/api/services/organization.js +139 -0
  327. package/dist/main-portal/lib/api/services/user.d.ts +90 -0
  328. package/dist/main-portal/lib/api/services/user.js +78 -0
  329. package/dist/main-portal/lib/api/services.d.ts +1 -0
  330. package/dist/main-portal/lib/api/services.js +17 -0
  331. package/dist/main-portal/lib/api/strategies.d.ts +101 -0
  332. package/dist/main-portal/lib/api/strategies.js +87 -0
  333. package/dist/main-portal/lib/api-service.d.ts +1 -0
  334. package/dist/main-portal/lib/api-service.js +18 -0
  335. package/dist/main-portal/lib/auth-service.d.ts +65 -0
  336. package/dist/main-portal/lib/auth-service.js +382 -0
  337. package/dist/main-portal/lib/config/mainstream-tokens.d.ts +13 -0
  338. package/dist/main-portal/lib/config/mainstream-tokens.js +88 -0
  339. package/dist/main-portal/lib/docs-data.d.ts +36 -0
  340. package/dist/main-portal/lib/docs-data.js +108 -0
  341. package/dist/main-portal/lib/exchanges/config.d.ts +34 -0
  342. package/dist/main-portal/lib/exchanges/config.js +185 -0
  343. package/dist/main-portal/lib/exchanges/hooks/index.d.ts +5 -0
  344. package/dist/main-portal/lib/exchanges/hooks/index.js +10 -0
  345. package/dist/main-portal/lib/exchanges/hooks/useBinanceData.d.ts +15 -0
  346. package/dist/main-portal/lib/exchanges/hooks/useBinanceData.js +216 -0
  347. package/dist/main-portal/lib/exchanges/hooks/useBinanceDialogs.d.ts +32 -0
  348. package/dist/main-portal/lib/exchanges/hooks/useBinanceDialogs.js +395 -0
  349. package/dist/main-portal/lib/exchanges/hooks/useUserExchanges.d.ts +15 -0
  350. package/dist/main-portal/lib/exchanges/hooks/useUserExchanges.js +51 -0
  351. package/dist/main-portal/lib/exchanges/index.d.ts +4 -0
  352. package/dist/main-portal/lib/exchanges/index.js +21 -0
  353. package/dist/main-portal/lib/exchanges/types.d.ts +102 -0
  354. package/dist/main-portal/lib/exchanges/types.js +2 -0
  355. package/dist/main-portal/lib/exchanges/utils.d.ts +1 -0
  356. package/dist/main-portal/lib/exchanges/utils.js +10 -0
  357. package/dist/main-portal/lib/gcp-secrets.d.ts +7 -0
  358. package/dist/main-portal/lib/gcp-secrets.js +45 -0
  359. package/dist/main-portal/lib/mockWallet.d.ts +130 -0
  360. package/dist/main-portal/lib/mockWallet.js +284 -0
  361. package/dist/main-portal/lib/oauth-config.d.ts +12 -0
  362. package/dist/main-portal/lib/oauth-config.js +48 -0
  363. package/dist/main-portal/lib/order-id-generator.d.ts +19 -0
  364. package/dist/main-portal/lib/order-id-generator.js +97 -0
  365. package/dist/main-portal/lib/solana/reincarnation-client.d.ts +28 -0
  366. package/dist/main-portal/lib/solana/reincarnation-client.js +39 -0
  367. package/dist/main-portal/lib/solana/solana-pay.d.ts +31 -0
  368. package/dist/main-portal/lib/solana/solana-pay.js +85 -0
  369. package/dist/main-portal/lib/strategy/defaults.d.ts +2 -0
  370. package/dist/main-portal/lib/strategy/defaults.js +58 -0
  371. package/dist/main-portal/lib/strategy/index.d.ts +3 -0
  372. package/dist/main-portal/lib/strategy/index.js +20 -0
  373. package/dist/main-portal/lib/strategy/tooltips.d.ts +1 -0
  374. package/dist/main-portal/lib/strategy/tooltips.js +50 -0
  375. package/dist/main-portal/lib/strategy/types.d.ts +74 -0
  376. package/dist/main-portal/lib/strategy/types.js +2 -0
  377. package/dist/main-portal/lib/types/ai.types.d.ts +111 -0
  378. package/dist/main-portal/lib/types/ai.types.js +2 -0
  379. package/dist/main-portal/lib/types/api.d.ts +5 -0
  380. package/dist/main-portal/lib/types/api.js +21 -0
  381. package/dist/main-portal/lib/types/common.types.d.ts +168 -0
  382. package/dist/main-portal/lib/types/common.types.js +24 -0
  383. package/dist/main-portal/lib/types/finance.types.d.ts +267 -0
  384. package/dist/main-portal/lib/types/finance.types.js +2 -0
  385. package/dist/main-portal/lib/types/protocol.types.d.ts +216 -0
  386. package/dist/main-portal/lib/types/protocol.types.js +2 -0
  387. package/dist/main-portal/lib/types/user.types.d.ts +243 -0
  388. package/dist/main-portal/lib/types/user.types.js +12 -0
  389. package/dist/main-portal/lib/utils/territoryId.d.ts +75 -0
  390. package/dist/main-portal/lib/utils/territoryId.js +241 -0
  391. package/dist/main-portal/lib/utils.d.ts +4 -0
  392. package/dist/main-portal/lib/utils.js +24 -0
  393. package/dist/main-portal/lib/wallet-auth/api.d.ts +13 -0
  394. package/dist/main-portal/lib/wallet-auth/api.js +132 -0
  395. package/dist/main-portal/lib/wallet-auth/types.d.ts +87 -0
  396. package/dist/main-portal/lib/wallet-auth/types.js +58 -0
  397. package/package.json +55 -5
@@ -0,0 +1,101 @@
1
+ export declare const getStrategies: () => Promise<any>;
2
+ export declare const getStrategyDetails: (strategyId: string) => Promise<any>;
3
+ export declare const startStrategy: (strategyId: string) => Promise<any>;
4
+ export declare const stopStrategy: (strategyId: string) => Promise<any>;
5
+ export declare const createStrategy: (strategyParams: Record<string, unknown>) => Promise<any>;
6
+ export declare const deleteStrategy: (strategyId: string) => Promise<any>;
7
+ export declare const updateStrategy: (strategyId: string, params: Record<string, unknown>) => Promise<any>;
8
+ export declare const getEnergyOrders: (strategyId: string, includeHistory?: boolean) => Promise<any>;
9
+ export declare const getEnergyHistory: (strategyId: string, page?: number, pageSize?: number) => Promise<any>;
10
+ export declare const batchPreviewStrategies: (filters: {
11
+ symbol?: string;
12
+ status?: "active" | "inactive";
13
+ }) => Promise<any>;
14
+ export declare const batchUpdateStrategies: (strategyIds: string[], paramPath: string, paramValue: unknown, filters?: Record<string, unknown>) => Promise<any>;
15
+ export declare const getBatchHistory: (limit?: number) => Promise<any>;
16
+ export interface ParamTemplate {
17
+ id: number;
18
+ name: string;
19
+ description?: string;
20
+ params: Array<{
21
+ path: string;
22
+ value: unknown;
23
+ }>;
24
+ use_count: number;
25
+ last_used_at?: string;
26
+ created_by_email?: string;
27
+ created_at?: string;
28
+ updated_at?: string;
29
+ }
30
+ export declare const getTemplates: () => Promise<any>;
31
+ export declare const getTemplate: (templateId: number) => Promise<any>;
32
+ export declare const createTemplate: (data: {
33
+ name: string;
34
+ description?: string;
35
+ params: Array<{
36
+ path: string;
37
+ value: unknown;
38
+ }>;
39
+ }) => Promise<any>;
40
+ export declare const updateTemplate: (templateId: number, data: Partial<{
41
+ name: string;
42
+ description: string;
43
+ params: Array<{
44
+ path: string;
45
+ value: unknown;
46
+ }>;
47
+ }>) => Promise<any>;
48
+ export declare const deleteTemplate: (templateId: number) => Promise<any>;
49
+ export interface GroupCondition {
50
+ field: 'symbol' | 'status' | 'created_at' | 'uid';
51
+ operator: '=' | 'in' | 'not_in' | '>=' | '<=' | 'between';
52
+ value: unknown;
53
+ }
54
+ export interface GroupRules {
55
+ conditions: GroupCondition[];
56
+ logic: 'AND' | 'OR';
57
+ }
58
+ export interface StrategyGroup {
59
+ id: number;
60
+ name: string;
61
+ description?: string;
62
+ group_type: 'auto' | 'manual' | 'hybrid';
63
+ auto_rules?: GroupRules;
64
+ strategy_count: number;
65
+ pending_review: number;
66
+ created_by_email?: string;
67
+ created_at?: string;
68
+ updated_at?: string;
69
+ }
70
+ export declare const getGroups: () => Promise<any>;
71
+ export declare const getGroup: (groupId: number) => Promise<any>;
72
+ export declare const createGroup: (data: {
73
+ name: string;
74
+ description?: string;
75
+ group_type: string;
76
+ auto_rules?: GroupRules;
77
+ }) => Promise<any>;
78
+ export declare const updateGroup: (groupId: number, data: Partial<{
79
+ name: string;
80
+ description: string;
81
+ auto_rules: GroupRules;
82
+ }>) => Promise<any>;
83
+ export declare const deleteGroup: (groupId: number) => Promise<any>;
84
+ export declare const getGroupStrategies: (groupId: number, page?: number, pageSize?: number, needsReview?: boolean) => Promise<any>;
85
+ export declare const addStrategiesToGroup: (groupId: number, strategyIds: string[]) => Promise<any>;
86
+ export declare const removeStrategiesFromGroup: (groupId: number, strategyIds: string[]) => Promise<any>;
87
+ export declare const reviewGroupStrategies: (groupId: number, strategyIds: string[], action: "approve" | "reject") => Promise<any>;
88
+ export declare const refreshGroup: (groupId: number) => Promise<any>;
89
+ export declare const previewGroupRules: (rules: GroupRules) => Promise<any>;
90
+ export interface DistributeParams {
91
+ template_id?: number;
92
+ params?: Array<{
93
+ path: string;
94
+ value: unknown;
95
+ }>;
96
+ target_type: 'group' | 'manual';
97
+ group_id?: number;
98
+ strategy_ids?: string[];
99
+ }
100
+ export declare const distributeParams: (data: DistributeParams) => Promise<any>;
101
+ export declare const getDistributeHistory: (limit?: number) => Promise<any>;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDistributeHistory = exports.distributeParams = exports.previewGroupRules = exports.refreshGroup = exports.reviewGroupStrategies = exports.removeStrategiesFromGroup = exports.addStrategiesToGroup = exports.getGroupStrategies = exports.deleteGroup = exports.updateGroup = exports.createGroup = exports.getGroup = exports.getGroups = exports.deleteTemplate = exports.updateTemplate = exports.createTemplate = exports.getTemplate = exports.getTemplates = exports.getBatchHistory = exports.batchUpdateStrategies = exports.batchPreviewStrategies = exports.getEnergyHistory = exports.getEnergyOrders = exports.updateStrategy = exports.deleteStrategy = exports.createStrategy = exports.stopStrategy = exports.startStrategy = exports.getStrategyDetails = exports.getStrategies = void 0;
4
+ // AI-generated · AI-managed · AI-maintained
5
+ const core_1 = require("./core");
6
+ const getStrategies = () => (0, core_1.fetchApi)('/strategies');
7
+ exports.getStrategies = getStrategies;
8
+ const getStrategyDetails = (strategyId) => (0, core_1.fetchApi)(`/strategies/${strategyId}`);
9
+ exports.getStrategyDetails = getStrategyDetails;
10
+ const startStrategy = (strategyId) => (0, core_1.fetchApi)(`/strategies/${strategyId}/start`, { method: 'POST' });
11
+ exports.startStrategy = startStrategy;
12
+ const stopStrategy = (strategyId) => (0, core_1.fetchApi)(`/strategies/${strategyId}/stop`, { method: 'POST' });
13
+ exports.stopStrategy = stopStrategy;
14
+ const createStrategy = (strategyParams) => (0, core_1.fetchApi)('/strategies', {
15
+ method: 'POST',
16
+ body: JSON.stringify(strategyParams)
17
+ });
18
+ exports.createStrategy = createStrategy;
19
+ const deleteStrategy = (strategyId) => (0, core_1.fetchApi)(`/strategies/${strategyId}`, { method: 'DELETE' });
20
+ exports.deleteStrategy = deleteStrategy;
21
+ const updateStrategy = (strategyId, params) => (0, core_1.fetchApi)(`/strategies/${strategyId}`, {
22
+ method: 'PUT',
23
+ body: JSON.stringify(params)
24
+ });
25
+ exports.updateStrategy = updateStrategy;
26
+ const getEnergyOrders = (strategyId, includeHistory = false) => (0, core_1.fetchApi)(`/strategies/${strategyId}/energy-orders${includeHistory ? '?include_history=true' : ''}`);
27
+ exports.getEnergyOrders = getEnergyOrders;
28
+ const getEnergyHistory = (strategyId, page = 1, pageSize = 50) => (0, core_1.fetchApi)(`/strategies/${strategyId}/energy-history?page=${page}&page_size=${pageSize}`);
29
+ exports.getEnergyHistory = getEnergyHistory;
30
+ const batchPreviewStrategies = (filters) => (0, core_1.fetchApi)('/strategies/batch/preview', {
31
+ method: 'POST',
32
+ body: JSON.stringify({ filters })
33
+ });
34
+ exports.batchPreviewStrategies = batchPreviewStrategies;
35
+ const batchUpdateStrategies = (strategyIds, paramPath, paramValue, filters) => (0, core_1.fetchApi)('/strategies/batch/update', {
36
+ method: 'POST',
37
+ body: JSON.stringify({
38
+ strategy_ids: strategyIds,
39
+ param_path: paramPath,
40
+ param_value: paramValue,
41
+ filters: filters || {}
42
+ })
43
+ });
44
+ exports.batchUpdateStrategies = batchUpdateStrategies;
45
+ const getBatchHistory = (limit = 20) => (0, core_1.fetchApi)(`/strategies/batch/history?limit=${limit}`);
46
+ exports.getBatchHistory = getBatchHistory;
47
+ const getTemplates = () => (0, core_1.fetchApi)('/strategies/templates');
48
+ exports.getTemplates = getTemplates;
49
+ const getTemplate = (templateId) => (0, core_1.fetchApi)(`/strategies/templates/${templateId}`);
50
+ exports.getTemplate = getTemplate;
51
+ const createTemplate = (data) => (0, core_1.fetchApi)('/strategies/templates', { method: 'POST', body: JSON.stringify(data) });
52
+ exports.createTemplate = createTemplate;
53
+ const updateTemplate = (templateId, data) => (0, core_1.fetchApi)(`/strategies/templates/${templateId}`, { method: 'PUT', body: JSON.stringify(data) });
54
+ exports.updateTemplate = updateTemplate;
55
+ const deleteTemplate = (templateId) => (0, core_1.fetchApi)(`/strategies/templates/${templateId}`, { method: 'DELETE' });
56
+ exports.deleteTemplate = deleteTemplate;
57
+ const getGroups = () => (0, core_1.fetchApi)('/strategies/groups');
58
+ exports.getGroups = getGroups;
59
+ const getGroup = (groupId) => (0, core_1.fetchApi)(`/strategies/groups/${groupId}`);
60
+ exports.getGroup = getGroup;
61
+ const createGroup = (data) => (0, core_1.fetchApi)('/strategies/groups', { method: 'POST', body: JSON.stringify(data) });
62
+ exports.createGroup = createGroup;
63
+ const updateGroup = (groupId, data) => (0, core_1.fetchApi)(`/strategies/groups/${groupId}`, { method: 'PUT', body: JSON.stringify(data) });
64
+ exports.updateGroup = updateGroup;
65
+ const deleteGroup = (groupId) => (0, core_1.fetchApi)(`/strategies/groups/${groupId}`, { method: 'DELETE' });
66
+ exports.deleteGroup = deleteGroup;
67
+ const getGroupStrategies = (groupId, page = 1, pageSize = 50, needsReview) => {
68
+ let url = `/strategies/groups/${groupId}/strategies?page=${page}&page_size=${pageSize}`;
69
+ if (needsReview !== undefined)
70
+ url += `&needs_review=${needsReview}`;
71
+ return (0, core_1.fetchApi)(url);
72
+ };
73
+ exports.getGroupStrategies = getGroupStrategies;
74
+ const addStrategiesToGroup = (groupId, strategyIds) => (0, core_1.fetchApi)(`/strategies/groups/${groupId}/strategies`, { method: 'POST', body: JSON.stringify({ strategy_ids: strategyIds }) });
75
+ exports.addStrategiesToGroup = addStrategiesToGroup;
76
+ const removeStrategiesFromGroup = (groupId, strategyIds) => (0, core_1.fetchApi)(`/strategies/groups/${groupId}/strategies`, { method: 'DELETE', body: JSON.stringify({ strategy_ids: strategyIds }) });
77
+ exports.removeStrategiesFromGroup = removeStrategiesFromGroup;
78
+ const reviewGroupStrategies = (groupId, strategyIds, action) => (0, core_1.fetchApi)(`/strategies/groups/${groupId}/review`, { method: 'POST', body: JSON.stringify({ strategy_ids: strategyIds, action }) });
79
+ exports.reviewGroupStrategies = reviewGroupStrategies;
80
+ const refreshGroup = (groupId) => (0, core_1.fetchApi)(`/strategies/groups/${groupId}/refresh`, { method: 'POST' });
81
+ exports.refreshGroup = refreshGroup;
82
+ const previewGroupRules = (rules) => (0, core_1.fetchApi)('/strategies/groups/preview', { method: 'POST', body: JSON.stringify({ rules }) });
83
+ exports.previewGroupRules = previewGroupRules;
84
+ const distributeParams = (data) => (0, core_1.fetchApi)('/strategies/distribute', { method: 'POST', body: JSON.stringify(data) });
85
+ exports.distributeParams = distributeParams;
86
+ const getDistributeHistory = (limit = 50) => (0, core_1.fetchApi)(`/strategies/distribute/history?limit=${limit}`);
87
+ exports.getDistributeHistory = getDistributeHistory;
@@ -0,0 +1 @@
1
+ export * from './api';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // AI-generated · AI-managed · AI-maintained
18
+ __exportStar(require("./api"), exports);
@@ -0,0 +1,65 @@
1
+ export declare const AUTH_FLAG_KEY = "mc_auth_flag";
2
+ export declare const getSessionToken: () => string | null;
3
+ export declare const setSessionToken: (token: string) => void;
4
+ export declare const getNativeUid: () => string | null;
5
+ export declare const setAuthFlag: () => void;
6
+ export declare const clearAuthFlag: () => void;
7
+ export declare const isAuthenticatedSync: () => boolean;
8
+ export declare const clearTokenCache: () => void;
9
+ export declare const getCurrentUserToken: () => Promise<string | null>;
10
+ export interface LoginResult {
11
+ uid?: string;
12
+ email?: string;
13
+ emailVerified?: boolean;
14
+ verificationRequired?: boolean;
15
+ loginToken?: string;
16
+ verificationMethods?: string[];
17
+ emailHint?: string;
18
+ }
19
+ export declare const signInWithEmail: (email: string, password: string) => Promise<LoginResult>;
20
+ export declare const verifyLogin: (loginToken: string, totpCode?: string, emailCode?: string, backupCode?: string) => Promise<LoginResult>;
21
+ export declare const resendLoginCode: (loginToken: string) => Promise<void>;
22
+ export declare const signUpWithEmail: (email: string, password: string) => Promise<{
23
+ uid: any;
24
+ email: string;
25
+ emailVerified: boolean;
26
+ }>;
27
+ export declare const logOut: () => Promise<void>;
28
+ export interface NativeUser {
29
+ uid: string;
30
+ }
31
+ export declare const onAuthChange: (callback: (user: NativeUser | null) => void) => () => void;
32
+ export declare const handleAuthFailure: (status: number) => Promise<void>;
33
+ export declare const guardAuthResponse: (response: Response) => Response;
34
+ export declare const checkEmailVerified: () => Promise<boolean>;
35
+ export declare const getCurrentUser: () => Promise<{
36
+ uid: any;
37
+ email: any;
38
+ displayName: null;
39
+ emailVerified: any;
40
+ } | null>;
41
+ export declare const sendPasswordResetEmail: (email?: string) => Promise<void>;
42
+ export declare const resendVerificationEmail: () => Promise<void>;
43
+ export declare const requestEmailChange: (newEmail: string, password: string) => Promise<void>;
44
+ export declare const verifyEmailChange: (newEmail: string, code: string) => Promise<{
45
+ email: string;
46
+ email_verified: boolean;
47
+ }>;
48
+ export declare const setup2FA: () => Promise<{
49
+ secret: string;
50
+ qr_code: string;
51
+ uri: string;
52
+ }>;
53
+ export declare const verifyAndEnable2FA: (code: string) => Promise<{
54
+ backup_codes: string[];
55
+ message: string;
56
+ }>;
57
+ export declare const disable2FA: (password: string) => Promise<void>;
58
+ export declare const get2FAStatus: () => Promise<{
59
+ totp_enabled: boolean;
60
+ has_backup_codes: boolean;
61
+ setup_at: string | null;
62
+ }>;
63
+ export declare const isNativeAuth: () => boolean;
64
+ export declare const sendEmailVerification: () => Promise<void>;
65
+ export declare const getEmailVerificationStatus: () => boolean;
@@ -0,0 +1,382 @@
1
+ "use strict";
2
+ // AI-generated · AI-managed · AI-maintained
3
+ // Native Auth — Argon2id + Session Token (Firebase 已于 2026-03-16 清理)
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.getEmailVerificationStatus = exports.sendEmailVerification = exports.isNativeAuth = exports.get2FAStatus = exports.disable2FA = exports.verifyAndEnable2FA = exports.setup2FA = exports.verifyEmailChange = exports.requestEmailChange = exports.resendVerificationEmail = exports.sendPasswordResetEmail = exports.getCurrentUser = exports.checkEmailVerified = exports.guardAuthResponse = exports.handleAuthFailure = exports.onAuthChange = exports.logOut = exports.signUpWithEmail = exports.resendLoginCode = exports.verifyLogin = exports.signInWithEmail = exports.getCurrentUserToken = exports.clearTokenCache = exports.isAuthenticatedSync = exports.clearAuthFlag = exports.setAuthFlag = exports.getNativeUid = exports.setSessionToken = exports.getSessionToken = exports.AUTH_FLAG_KEY = void 0;
6
+ const SESSION_TOKEN_KEY = 'mc_session_token';
7
+ const NATIVE_UID_KEY = 'mc_native_uid';
8
+ exports.AUTH_FLAG_KEY = 'mc_auth_flag';
9
+ // ── Session Storage ──
10
+ const getSessionToken = () => {
11
+ try {
12
+ return sessionStorage.getItem(SESSION_TOKEN_KEY);
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ };
18
+ exports.getSessionToken = getSessionToken;
19
+ const setSessionToken = (token) => {
20
+ try {
21
+ sessionStorage.setItem(SESSION_TOKEN_KEY, token);
22
+ }
23
+ catch { }
24
+ };
25
+ exports.setSessionToken = setSessionToken;
26
+ const clearSessionToken = () => {
27
+ try {
28
+ sessionStorage.removeItem(SESSION_TOKEN_KEY);
29
+ }
30
+ catch { }
31
+ try {
32
+ sessionStorage.removeItem(NATIVE_UID_KEY);
33
+ }
34
+ catch { }
35
+ };
36
+ const getNativeUid = () => {
37
+ try {
38
+ return sessionStorage.getItem(NATIVE_UID_KEY);
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ };
44
+ exports.getNativeUid = getNativeUid;
45
+ const setNativeUid = (uid) => {
46
+ try {
47
+ sessionStorage.setItem(NATIVE_UID_KEY, uid);
48
+ }
49
+ catch { }
50
+ };
51
+ // ── Auth Flag ──
52
+ const setAuthFlag = () => {
53
+ try {
54
+ sessionStorage.setItem(exports.AUTH_FLAG_KEY, '1');
55
+ }
56
+ catch { }
57
+ };
58
+ exports.setAuthFlag = setAuthFlag;
59
+ const clearAuthFlag = () => {
60
+ try {
61
+ sessionStorage.removeItem(exports.AUTH_FLAG_KEY);
62
+ }
63
+ catch { }
64
+ try {
65
+ localStorage.removeItem(exports.AUTH_FLAG_KEY);
66
+ }
67
+ catch { }
68
+ };
69
+ exports.clearAuthFlag = clearAuthFlag;
70
+ const isAuthenticatedSync = () => {
71
+ return !!(0, exports.getSessionToken)();
72
+ };
73
+ exports.isAuthenticatedSync = isAuthenticatedSync;
74
+ // ── Token ──
75
+ const clearTokenCache = () => {
76
+ clearSessionToken();
77
+ try {
78
+ sessionStorage.removeItem('mc_user_info');
79
+ }
80
+ catch { }
81
+ };
82
+ exports.clearTokenCache = clearTokenCache;
83
+ const getCurrentUserToken = async () => {
84
+ return (0, exports.getSessionToken)();
85
+ };
86
+ exports.getCurrentUserToken = getCurrentUserToken;
87
+ const signInWithEmail = async (email, password) => {
88
+ const response = await fetch('/api/auth/native/login', {
89
+ method: 'POST',
90
+ headers: { 'Content-Type': 'application/json' },
91
+ body: JSON.stringify({ email, password }),
92
+ });
93
+ const data = await response.json();
94
+ if (!data.success) {
95
+ if (data.error === 'password_not_set') {
96
+ throw new Error('系统已升级,请通过邮件重置密码后登录。');
97
+ }
98
+ throw new Error(data.error || '登录失败');
99
+ }
100
+ // Multi-step verification required
101
+ if (data.data.verification_required) {
102
+ return {
103
+ verificationRequired: true,
104
+ loginToken: data.data.login_token,
105
+ verificationMethods: data.data.verification_methods,
106
+ emailHint: data.data.email_hint,
107
+ };
108
+ }
109
+ (0, exports.setSessionToken)(data.data.session_token);
110
+ setNativeUid(data.data.uid);
111
+ return { uid: data.data.uid, email, emailVerified: data.data.email_verified };
112
+ };
113
+ exports.signInWithEmail = signInWithEmail;
114
+ const verifyLogin = async (loginToken, totpCode, emailCode, backupCode) => {
115
+ const response = await fetch('/api/auth/native/verify-login', {
116
+ method: 'POST',
117
+ headers: { 'Content-Type': 'application/json' },
118
+ body: JSON.stringify({
119
+ login_token: loginToken,
120
+ totp_code: totpCode || undefined,
121
+ email_code: emailCode || undefined,
122
+ backup_code: backupCode || undefined,
123
+ }),
124
+ });
125
+ const data = await response.json();
126
+ if (!data.success) {
127
+ throw new Error(data.error || '验证失败');
128
+ }
129
+ // Still need more verification
130
+ if (data.data.verification_required) {
131
+ return {
132
+ verificationRequired: true,
133
+ loginToken,
134
+ verificationMethods: [],
135
+ };
136
+ }
137
+ (0, exports.setSessionToken)(data.data.session_token);
138
+ setNativeUid(data.data.uid);
139
+ return { uid: data.data.uid, emailVerified: data.data.email_verified };
140
+ };
141
+ exports.verifyLogin = verifyLogin;
142
+ const resendLoginCode = async (loginToken) => {
143
+ const response = await fetch('/api/auth/native/resend-login-code', {
144
+ method: 'POST',
145
+ headers: { 'Content-Type': 'application/json' },
146
+ body: JSON.stringify({ login_token: loginToken }),
147
+ });
148
+ const data = await response.json();
149
+ if (!data.success) {
150
+ throw new Error(data.error || '发送失败');
151
+ }
152
+ };
153
+ exports.resendLoginCode = resendLoginCode;
154
+ const signUpWithEmail = async (email, password) => {
155
+ const response = await fetch('/api/auth/native/register', {
156
+ method: 'POST',
157
+ headers: { 'Content-Type': 'application/json' },
158
+ body: JSON.stringify({ email, password }),
159
+ });
160
+ const data = await response.json();
161
+ if (!data.success) {
162
+ throw new Error(data.error || '注册失败');
163
+ }
164
+ (0, exports.setSessionToken)(data.data.session_token);
165
+ setNativeUid(data.data.uid);
166
+ return { uid: data.data.uid, email, emailVerified: false };
167
+ };
168
+ exports.signUpWithEmail = signUpWithEmail;
169
+ const logOut = async () => {
170
+ try {
171
+ const token = (0, exports.getSessionToken)();
172
+ if (token) {
173
+ fetch('/api/auth/native/logout', {
174
+ method: 'POST',
175
+ headers: { 'Authorization': `Bearer ${token}` },
176
+ }).catch(() => { });
177
+ }
178
+ clearSessionToken();
179
+ (0, exports.clearAuthFlag)();
180
+ }
181
+ catch (error) {
182
+ console.error('Logout error:', error);
183
+ }
184
+ window.location.href = `${getLocalePrefix()}/`;
185
+ };
186
+ exports.logOut = logOut;
187
+ // ── Locale 感知跳转 ──
188
+ const getLocalePrefix = () => {
189
+ if (typeof window === 'undefined')
190
+ return '';
191
+ const match = window.location.pathname.match(/^\/(en|zh|ja|ko)(\/|$)/);
192
+ return match ? `/${match[1]}` : '';
193
+ };
194
+ const onAuthChange = (callback) => {
195
+ const token = (0, exports.getSessionToken)();
196
+ const uid = (0, exports.getNativeUid)() || 'native-user';
197
+ callback(token ? { uid } : null);
198
+ return () => { };
199
+ };
200
+ exports.onAuthChange = onAuthChange;
201
+ // ── 401/403 强制登出 ──
202
+ let isForceLoggingOut = false;
203
+ const handleAuthFailure = async (status) => {
204
+ if (status !== 401 && status !== 403)
205
+ return;
206
+ if (isForceLoggingOut)
207
+ return;
208
+ isForceLoggingOut = true;
209
+ console.warn(`[Auth] 服务端返回 ${status},强制登出`);
210
+ clearSessionToken();
211
+ (0, exports.clearAuthFlag)();
212
+ window.location.href = `${getLocalePrefix()}/login`;
213
+ };
214
+ exports.handleAuthFailure = handleAuthFailure;
215
+ const guardAuthResponse = (response) => {
216
+ if (response.status === 401 || response.status === 403) {
217
+ (0, exports.handleAuthFailure)(response.status);
218
+ }
219
+ return response;
220
+ };
221
+ exports.guardAuthResponse = guardAuthResponse;
222
+ // ── 邮件验证/密码重置 ──
223
+ const checkEmailVerified = async () => {
224
+ const token = (0, exports.getSessionToken)();
225
+ if (!token)
226
+ return false;
227
+ try {
228
+ const resp = await fetch('/api/auth/native/session', {
229
+ headers: { 'Authorization': `Bearer ${token}` },
230
+ });
231
+ const data = await resp.json();
232
+ return data.success ? data.data.email_verified : false;
233
+ }
234
+ catch {
235
+ return false;
236
+ }
237
+ };
238
+ exports.checkEmailVerified = checkEmailVerified;
239
+ const getCurrentUser = async () => {
240
+ const token = (0, exports.getSessionToken)();
241
+ if (!token)
242
+ return null;
243
+ try {
244
+ const resp = await fetch('/api/auth/native/session', {
245
+ headers: { 'Authorization': `Bearer ${token}` },
246
+ });
247
+ const data = await resp.json();
248
+ if (!data.success)
249
+ return null;
250
+ return {
251
+ uid: data.data.uid,
252
+ email: data.data.email,
253
+ displayName: null,
254
+ emailVerified: data.data.email_verified,
255
+ };
256
+ }
257
+ catch {
258
+ return null;
259
+ }
260
+ };
261
+ exports.getCurrentUser = getCurrentUser;
262
+ const sendPasswordResetEmail = async (email) => {
263
+ if (!email)
264
+ throw new Error('请提供邮箱地址');
265
+ const response = await fetch('/api/auth/native/forgot-password', {
266
+ method: 'POST',
267
+ headers: { 'Content-Type': 'application/json' },
268
+ body: JSON.stringify({ email }),
269
+ });
270
+ const data = await response.json();
271
+ if (!data.success) {
272
+ throw new Error(data.error || '发送失败');
273
+ }
274
+ };
275
+ exports.sendPasswordResetEmail = sendPasswordResetEmail;
276
+ const resendVerificationEmail = async () => {
277
+ const token = (0, exports.getSessionToken)();
278
+ if (!token)
279
+ throw new Error('Not authenticated');
280
+ const response = await fetch('/api/auth/native/resend-verification', {
281
+ method: 'POST',
282
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
283
+ });
284
+ const data = await response.json();
285
+ if (!data.success)
286
+ throw new Error(data.error || 'Failed to send verification email');
287
+ };
288
+ exports.resendVerificationEmail = resendVerificationEmail;
289
+ // ── Email Change ──
290
+ const requestEmailChange = async (newEmail, password) => {
291
+ const token = (0, exports.getSessionToken)();
292
+ if (!token)
293
+ throw new Error('Not authenticated');
294
+ const response = await fetch('/api/auth/native/change-email', {
295
+ method: 'POST',
296
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
297
+ body: JSON.stringify({ new_email: newEmail, password }),
298
+ });
299
+ const data = await response.json();
300
+ if (!data.success)
301
+ throw new Error(data.error || 'Failed to send verification code');
302
+ };
303
+ exports.requestEmailChange = requestEmailChange;
304
+ const verifyEmailChange = async (newEmail, code) => {
305
+ const token = (0, exports.getSessionToken)();
306
+ if (!token)
307
+ throw new Error('Not authenticated');
308
+ const response = await fetch('/api/auth/native/verify-change-email', {
309
+ method: 'POST',
310
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
311
+ body: JSON.stringify({ new_email: newEmail, code }),
312
+ });
313
+ const data = await response.json();
314
+ if (!data.success)
315
+ throw new Error(data.error || 'Verification failed');
316
+ return data.data;
317
+ };
318
+ exports.verifyEmailChange = verifyEmailChange;
319
+ // ── 2FA Management ──
320
+ const setup2FA = async () => {
321
+ const token = (0, exports.getSessionToken)();
322
+ if (!token)
323
+ throw new Error('Not authenticated');
324
+ const response = await fetch('/api/auth/native/2fa/setup', {
325
+ method: 'POST',
326
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
327
+ });
328
+ const data = await response.json();
329
+ if (!data.success)
330
+ throw new Error(data.error || 'Failed to setup 2FA');
331
+ return data.data;
332
+ };
333
+ exports.setup2FA = setup2FA;
334
+ const verifyAndEnable2FA = async (code) => {
335
+ const token = (0, exports.getSessionToken)();
336
+ if (!token)
337
+ throw new Error('Not authenticated');
338
+ const response = await fetch('/api/auth/native/2fa/verify-setup', {
339
+ method: 'POST',
340
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
341
+ body: JSON.stringify({ code }),
342
+ });
343
+ const data = await response.json();
344
+ if (!data.success)
345
+ throw new Error(data.error || 'Invalid code');
346
+ return data.data;
347
+ };
348
+ exports.verifyAndEnable2FA = verifyAndEnable2FA;
349
+ const disable2FA = async (password) => {
350
+ const token = (0, exports.getSessionToken)();
351
+ if (!token)
352
+ throw new Error('Not authenticated');
353
+ const response = await fetch('/api/auth/native/2fa/disable', {
354
+ method: 'POST',
355
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
356
+ body: JSON.stringify({ password }),
357
+ });
358
+ const data = await response.json();
359
+ if (!data.success)
360
+ throw new Error(data.error || 'Failed to disable 2FA');
361
+ };
362
+ exports.disable2FA = disable2FA;
363
+ const get2FAStatus = async () => {
364
+ const token = (0, exports.getSessionToken)();
365
+ if (!token)
366
+ throw new Error('Not authenticated');
367
+ const response = await fetch('/api/auth/native/2fa/status', {
368
+ headers: { 'Authorization': `Bearer ${token}` },
369
+ });
370
+ const data = await response.json();
371
+ if (!data.success)
372
+ throw new Error(data.error || 'Failed to get 2FA status');
373
+ return data.data;
374
+ };
375
+ exports.get2FAStatus = get2FAStatus;
376
+ // 兼容旧代码引用
377
+ const isNativeAuth = () => true;
378
+ exports.isNativeAuth = isNativeAuth;
379
+ const sendEmailVerification = async () => { };
380
+ exports.sendEmailVerification = sendEmailVerification;
381
+ const getEmailVerificationStatus = () => false;
382
+ exports.getEmailVerificationStatus = getEmailVerificationStatus;
@@ -0,0 +1,13 @@
1
+ export interface MainstreamToken {
2
+ symbol: string;
3
+ name: string;
4
+ mint: string;
5
+ decimals: number;
6
+ color: string;
7
+ isStablecoin: boolean;
8
+ isNative?: boolean;
9
+ logoURI?: string;
10
+ }
11
+ export declare const MAINSTREAM_TOKENS: MainstreamToken[];
12
+ export declare const TOKEN_BY_MINT: Map<string, MainstreamToken>;
13
+ export declare const TOKEN_BY_SYMBOL: Map<string, MainstreamToken>;