@sudobility/heavymath_ui 0.0.3

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 (201) hide show
  1. package/dist/components/dealer/DealerNFTList.d.ts +6 -0
  2. package/dist/components/dealer/DealerNFTList.d.ts.map +1 -0
  3. package/dist/components/dealer/DealerNFTList.js +46 -0
  4. package/dist/components/dealer/DealerNFTList.js.map +1 -0
  5. package/dist/components/dealer/DealerNFTSelector.d.ts +8 -0
  6. package/dist/components/dealer/DealerNFTSelector.d.ts.map +1 -0
  7. package/dist/components/dealer/DealerNFTSelector.js +10 -0
  8. package/dist/components/dealer/DealerNFTSelector.js.map +1 -0
  9. package/dist/components/dealer/UpcomingGamesWidget.d.ts +8 -0
  10. package/dist/components/dealer/UpcomingGamesWidget.d.ts.map +1 -0
  11. package/dist/components/dealer/UpcomingGamesWidget.js +68 -0
  12. package/dist/components/dealer/UpcomingGamesWidget.js.map +1 -0
  13. package/dist/components/icons/index.d.ts +2 -0
  14. package/dist/components/icons/index.d.ts.map +1 -0
  15. package/dist/components/icons/index.js +2 -0
  16. package/dist/components/icons/index.js.map +1 -0
  17. package/dist/components/market/GameMarketsSection.d.ts +16 -0
  18. package/dist/components/market/GameMarketsSection.d.ts.map +1 -0
  19. package/dist/components/market/GameMarketsSection.js +18 -0
  20. package/dist/components/market/GameMarketsSection.js.map +1 -0
  21. package/dist/components/market/InlineCreateMarketForm.d.ts +17 -0
  22. package/dist/components/market/InlineCreateMarketForm.d.ts.map +1 -0
  23. package/dist/components/market/InlineCreateMarketForm.js +274 -0
  24. package/dist/components/market/InlineCreateMarketForm.js.map +1 -0
  25. package/dist/components/market/LeagueMarketsSection.d.ts +16 -0
  26. package/dist/components/market/LeagueMarketsSection.d.ts.map +1 -0
  27. package/dist/components/market/LeagueMarketsSection.js +15 -0
  28. package/dist/components/market/LeagueMarketsSection.js.map +1 -0
  29. package/dist/components/market/MarketCard.d.ts +8 -0
  30. package/dist/components/market/MarketCard.d.ts.map +1 -0
  31. package/dist/components/market/MarketCard.js +30 -0
  32. package/dist/components/market/MarketCard.js.map +1 -0
  33. package/dist/components/market/MarketList.d.ts +9 -0
  34. package/dist/components/market/MarketList.d.ts.map +1 -0
  35. package/dist/components/market/MarketList.js +17 -0
  36. package/dist/components/market/MarketList.js.map +1 -0
  37. package/dist/components/market/MarketStatusBadge.d.ts +8 -0
  38. package/dist/components/market/MarketStatusBadge.d.ts.map +1 -0
  39. package/dist/components/market/MarketStatusBadge.js +31 -0
  40. package/dist/components/market/MarketStatusBadge.js.map +1 -0
  41. package/dist/components/market/PredictionSlider.d.ts +11 -0
  42. package/dist/components/market/PredictionSlider.d.ts.map +1 -0
  43. package/dist/components/market/PredictionSlider.js +55 -0
  44. package/dist/components/market/PredictionSlider.js.map +1 -0
  45. package/dist/components/market/SportPredictionCard.d.ts +15 -0
  46. package/dist/components/market/SportPredictionCard.d.ts.map +1 -0
  47. package/dist/components/market/SportPredictionCard.js +92 -0
  48. package/dist/components/market/SportPredictionCard.js.map +1 -0
  49. package/dist/components/market/TeamMarketsSection.d.ts +17 -0
  50. package/dist/components/market/TeamMarketsSection.d.ts.map +1 -0
  51. package/dist/components/market/TeamMarketsSection.js +8 -0
  52. package/dist/components/market/TeamMarketsSection.js.map +1 -0
  53. package/dist/components/market/TeamTournamentMarketForm.d.ts +19 -0
  54. package/dist/components/market/TeamTournamentMarketForm.d.ts.map +1 -0
  55. package/dist/components/market/TeamTournamentMarketForm.js +92 -0
  56. package/dist/components/market/TeamTournamentMarketForm.js.map +1 -0
  57. package/dist/components/market/TournamentMarketForm.d.ts +19 -0
  58. package/dist/components/market/TournamentMarketForm.d.ts.map +1 -0
  59. package/dist/components/market/TournamentMarketForm.js +86 -0
  60. package/dist/components/market/TournamentMarketForm.js.map +1 -0
  61. package/dist/components/market/index.d.ts +12 -0
  62. package/dist/components/market/index.d.ts.map +1 -0
  63. package/dist/components/market/index.js +12 -0
  64. package/dist/components/market/index.js.map +1 -0
  65. package/dist/components/sports/SeasonSelector.d.ts +10 -0
  66. package/dist/components/sports/SeasonSelector.d.ts.map +1 -0
  67. package/dist/components/sports/SeasonSelector.js +13 -0
  68. package/dist/components/sports/SeasonSelector.js.map +1 -0
  69. package/dist/components/ui/AnimatedCollapse.d.ts +9 -0
  70. package/dist/components/ui/AnimatedCollapse.d.ts.map +1 -0
  71. package/dist/components/ui/AnimatedCollapse.js +8 -0
  72. package/dist/components/ui/AnimatedCollapse.js.map +1 -0
  73. package/dist/components/ui/FavoriteStar.d.ts +13 -0
  74. package/dist/components/ui/FavoriteStar.d.ts.map +1 -0
  75. package/dist/components/ui/FavoriteStar.js +47 -0
  76. package/dist/components/ui/FavoriteStar.js.map +1 -0
  77. package/dist/components/wallet/ConnectedWalletMenu.d.ts +16 -0
  78. package/dist/components/wallet/ConnectedWalletMenu.d.ts.map +1 -0
  79. package/dist/components/wallet/ConnectedWalletMenu.js +131 -0
  80. package/dist/components/wallet/ConnectedWalletMenu.js.map +1 -0
  81. package/dist/components/wallet/DealerRoute.d.ts +6 -0
  82. package/dist/components/wallet/DealerRoute.d.ts.map +1 -0
  83. package/dist/components/wallet/DealerRoute.js +20 -0
  84. package/dist/components/wallet/DealerRoute.js.map +1 -0
  85. package/dist/components/wallet/ProtectedRoute.d.ts +8 -0
  86. package/dist/components/wallet/ProtectedRoute.d.ts.map +1 -0
  87. package/dist/components/wallet/ProtectedRoute.js +17 -0
  88. package/dist/components/wallet/ProtectedRoute.js.map +1 -0
  89. package/dist/components/wallet/WalletConnectionModal.d.ts +7 -0
  90. package/dist/components/wallet/WalletConnectionModal.d.ts.map +1 -0
  91. package/dist/components/wallet/WalletConnectionModal.js +334 -0
  92. package/dist/components/wallet/WalletConnectionModal.js.map +1 -0
  93. package/dist/config/app.d.ts +24 -0
  94. package/dist/config/app.d.ts.map +1 -0
  95. package/dist/config/app.js +18 -0
  96. package/dist/config/app.js.map +1 -0
  97. package/dist/config/chains.d.ts +1070 -0
  98. package/dist/config/chains.d.ts.map +1 -0
  99. package/dist/config/chains.js +28 -0
  100. package/dist/config/chains.js.map +1 -0
  101. package/dist/config/contracts.d.ts +15 -0
  102. package/dist/config/contracts.d.ts.map +1 -0
  103. package/dist/config/contracts.js +62 -0
  104. package/dist/config/contracts.js.map +1 -0
  105. package/dist/config/sportCodes.d.ts +58 -0
  106. package/dist/config/sportCodes.d.ts.map +1 -0
  107. package/dist/config/sportCodes.js +78 -0
  108. package/dist/config/sportCodes.js.map +1 -0
  109. package/dist/context/IndexerContext.d.ts +34 -0
  110. package/dist/context/IndexerContext.d.ts.map +1 -0
  111. package/dist/context/IndexerContext.js +40 -0
  112. package/dist/context/IndexerContext.js.map +1 -0
  113. package/dist/context/WalletAuthContext.d.ts +26 -0
  114. package/dist/context/WalletAuthContext.d.ts.map +1 -0
  115. package/dist/context/WalletAuthContext.js +148 -0
  116. package/dist/context/WalletAuthContext.js.map +1 -0
  117. package/dist/hooks/index.d.ts +13 -0
  118. package/dist/hooks/index.d.ts.map +1 -0
  119. package/dist/hooks/index.js +13 -0
  120. package/dist/hooks/index.js.map +1 -0
  121. package/dist/hooks/useContractWithToast.d.ts +1348 -0
  122. package/dist/hooks/useContractWithToast.d.ts.map +1 -0
  123. package/dist/hooks/useContractWithToast.js +395 -0
  124. package/dist/hooks/useContractWithToast.js.map +1 -0
  125. package/dist/hooks/useDealerNFT.d.ts +71 -0
  126. package/dist/hooks/useDealerNFT.d.ts.map +1 -0
  127. package/dist/hooks/useDealerNFT.js +127 -0
  128. package/dist/hooks/useDealerNFT.js.map +1 -0
  129. package/dist/hooks/useDealerPermission.d.ts +11 -0
  130. package/dist/hooks/useDealerPermission.d.ts.map +1 -0
  131. package/dist/hooks/useDealerPermission.js +48 -0
  132. package/dist/hooks/useDealerPermission.js.map +1 -0
  133. package/dist/hooks/useFilteredSportsData.d.ts +20 -0
  134. package/dist/hooks/useFilteredSportsData.d.ts.map +1 -0
  135. package/dist/hooks/useFilteredSportsData.js +52 -0
  136. package/dist/hooks/useFilteredSportsData.js.map +1 -0
  137. package/dist/hooks/useGameMarkets.d.ts +23 -0
  138. package/dist/hooks/useGameMarkets.d.ts.map +1 -0
  139. package/dist/hooks/useGameMarkets.js +50 -0
  140. package/dist/hooks/useGameMarkets.js.map +1 -0
  141. package/dist/hooks/useLeagueMarkets.d.ts +11 -0
  142. package/dist/hooks/useLeagueMarkets.d.ts.map +1 -0
  143. package/dist/hooks/useLeagueMarkets.js +38 -0
  144. package/dist/hooks/useLeagueMarkets.js.map +1 -0
  145. package/dist/hooks/useMarketContract.d.ts +219 -0
  146. package/dist/hooks/useMarketContract.d.ts.map +1 -0
  147. package/dist/hooks/useMarketContract.js +790 -0
  148. package/dist/hooks/useMarketContract.js.map +1 -0
  149. package/dist/hooks/useToastActions.d.ts +13 -0
  150. package/dist/hooks/useToastActions.d.ts.map +1 -0
  151. package/dist/hooks/useToastActions.js +40 -0
  152. package/dist/hooks/useToastActions.js.map +1 -0
  153. package/dist/index.d.ts +43 -0
  154. package/dist/index.d.ts.map +1 -0
  155. package/dist/index.js +47 -0
  156. package/dist/index.js.map +1 -0
  157. package/dist/lib/evmClient.d.ts +299 -0
  158. package/dist/lib/evmClient.d.ts.map +1 -0
  159. package/dist/lib/evmClient.js +691 -0
  160. package/dist/lib/evmClient.js.map +1 -0
  161. package/dist/types/auth.d.ts +44 -0
  162. package/dist/types/auth.d.ts.map +1 -0
  163. package/dist/types/auth.js +17 -0
  164. package/dist/types/auth.js.map +1 -0
  165. package/dist/types/dealer.d.ts +59 -0
  166. package/dist/types/dealer.d.ts.map +1 -0
  167. package/dist/types/dealer.js +31 -0
  168. package/dist/types/dealer.js.map +1 -0
  169. package/dist/types/market.d.ts +79 -0
  170. package/dist/types/market.d.ts.map +1 -0
  171. package/dist/types/market.js +47 -0
  172. package/dist/types/market.js.map +1 -0
  173. package/dist/utils/conditionData.d.ts +8 -0
  174. package/dist/utils/conditionData.d.ts.map +1 -0
  175. package/dist/utils/conditionData.js +7 -0
  176. package/dist/utils/conditionData.js.map +1 -0
  177. package/dist/utils/datetime.d.ts +3 -0
  178. package/dist/utils/datetime.d.ts.map +1 -0
  179. package/dist/utils/datetime.js +13 -0
  180. package/dist/utils/datetime.js.map +1 -0
  181. package/dist/utils/format.d.ts +79 -0
  182. package/dist/utils/format.d.ts.map +1 -0
  183. package/dist/utils/format.js +144 -0
  184. package/dist/utils/format.js.map +1 -0
  185. package/dist/utils/marketDisplay.d.ts +28 -0
  186. package/dist/utils/marketDisplay.d.ts.map +1 -0
  187. package/dist/utils/marketDisplay.js +45 -0
  188. package/dist/utils/marketDisplay.js.map +1 -0
  189. package/dist/utils/marketId.d.ts +8 -0
  190. package/dist/utils/marketId.d.ts.map +1 -0
  191. package/dist/utils/marketId.js +12 -0
  192. package/dist/utils/marketId.js.map +1 -0
  193. package/dist/utils/oracleId.d.ts +33 -0
  194. package/dist/utils/oracleId.d.ts.map +1 -0
  195. package/dist/utils/oracleId.js +62 -0
  196. package/dist/utils/oracleId.js.map +1 -0
  197. package/dist/utils/sportsSeason.d.ts +10 -0
  198. package/dist/utils/sportsSeason.d.ts.map +1 -0
  199. package/dist/utils/sportsSeason.js +39 -0
  200. package/dist/utils/sportsSeason.js.map +1 -0
  201. package/package.json +85 -0
@@ -0,0 +1,6 @@
1
+ interface DealerNFTListProps {
2
+ tokenIds: bigint[];
3
+ }
4
+ export declare function DealerNFTList({ tokenIds }: DealerNFTListProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=DealerNFTList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DealerNFTList.d.ts","sourceRoot":"","sources":["../../../src/components/dealer/DealerNFTList.tsx"],"names":[],"mappings":"AAgBA,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CA8D7D"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { useTranslation } from 'react-i18next';
4
+ import { useReadContracts, useChainId } from 'wagmi';
5
+ import { getContractAddress } from '../../config/contracts';
6
+ import { ui } from '@sudobility/design';
7
+ const HAS_PERMISSIONS_ABI = [
8
+ {
9
+ name: 'hasPermissions',
10
+ type: 'function',
11
+ stateMutability: 'view',
12
+ inputs: [{ name: 'tokenId', type: 'uint256' }],
13
+ outputs: [{ name: '', type: 'bool' }],
14
+ },
15
+ ];
16
+ export function DealerNFTList({ tokenIds }) {
17
+ const { t } = useTranslation('dealer');
18
+ const chainId = useChainId();
19
+ const dealerNFTAddress = getContractAddress(chainId, 'dealerNFT');
20
+ const permissionContracts = useMemo(() => {
21
+ if (!dealerNFTAddress || tokenIds.length === 0)
22
+ return [];
23
+ return tokenIds.map(tokenId => ({
24
+ address: dealerNFTAddress,
25
+ abi: HAS_PERMISSIONS_ABI,
26
+ functionName: 'hasPermissions',
27
+ args: [tokenId],
28
+ }));
29
+ }, [dealerNFTAddress, tokenIds]);
30
+ const { data: permissionResults } = useReadContracts({
31
+ contracts: permissionContracts,
32
+ query: {
33
+ enabled: permissionContracts.length > 0,
34
+ },
35
+ });
36
+ return (_jsxs("div", { children: [_jsx("h2", { className: `${ui.text.h3} mb-4`, children: t('dashboard.nfts.title', 'Your Dealer NFTs') }), _jsx("div", { className: 'grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3', children: tokenIds.map((tokenId, index) => {
37
+ const hasPermissions = permissionResults?.[index]?.status === 'success' &&
38
+ permissionResults[index].result === true;
39
+ return (_jsxs("div", { className: 'p-4 rounded-lg border border-border bg-card flex flex-col items-center gap-2', children: [_jsx("p", { className: `${ui.text.h4} text-center`, children: t('dashboard.nfts.tokenId', { id: tokenId.toString() }) }), permissionResults ? (_jsx("span", { className: `inline-block text-xs font-medium px-2 py-0.5 rounded-full ${hasPermissions
40
+ ? 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400'
41
+ : 'bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-400'}`, children: hasPermissions
42
+ ? t('dashboard.nfts.hasPermissions', 'Active')
43
+ : t('dashboard.nfts.noPermissions', 'No Permissions') })) : (_jsx("span", { className: 'inline-block h-4 w-16 bg-muted rounded animate-pulse' }))] }, tokenId.toString()));
44
+ }) })] }));
45
+ }
46
+ //# sourceMappingURL=DealerNFTList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DealerNFTList.js","sourceRoot":"","sources":["../../../src/components/dealer/DealerNFTList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface DealerNFTSelectorProps {
2
+ tokenIds: bigint[];
3
+ selectedTokenId: bigint | undefined;
4
+ onSelect: (tokenId: bigint) => void;
5
+ }
6
+ export declare function DealerNFTSelector({ tokenIds, selectedTokenId, onSelect, }: DealerNFTSelectorProps): import("react/jsx-runtime").JSX.Element | null;
7
+ export {};
8
+ //# sourceMappingURL=DealerNFTSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DealerNFTSelector.d.ts","sourceRoot":"","sources":["../../../src/components/dealer/DealerNFTSelector.tsx"],"names":[],"mappings":"AASA,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,eAAe,EACf,QAAQ,GACT,EAAE,sBAAsB,kDA6BxB"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useTranslation } from 'react-i18next';
3
+ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, } from '@sudobility/components';
4
+ export function DealerNFTSelector({ tokenIds, selectedTokenId, onSelect, }) {
5
+ const { t } = useTranslation('common');
6
+ if (tokenIds.length <= 1)
7
+ return null;
8
+ return (_jsxs("div", { className: 'md:w-44', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('dealer.selectNFT', 'Dealer NFT') }), _jsxs(Select, { value: selectedTokenId !== undefined ? String(selectedTokenId) : undefined, onValueChange: val => onSelect(BigInt(val)), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: tokenIds.map(id => (_jsx(SelectItem, { value: String(id), children: t('dealer.tokenLabel', 'Token #{{id}}', { id: String(id) }) }, String(id)))) })] })] }));
9
+ }
10
+ //# sourceMappingURL=DealerNFTSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DealerNFTSelector.js","sourceRoot":"","sources":["../../../src/components/dealer/DealerNFTSelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,wBAAwB,CAAC;AAQhC,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,eAAe,EACf,QAAQ,GACe;IACvB,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,OAAO,CACL,eAAK,SAAS,EAAC,SAAS,aACtB,gBAAO,SAAS,EAAC,gCAAgC,YAC9C,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,GAC9B,EACR,MAAC,MAAM,IACL,KAAK,EACH,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,EAErE,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,aAE3C,KAAC,aAAa,cACZ,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAClB,KAAC,UAAU,IAAkB,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,YAC3C,CAAC,CAAC,mBAAmB,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAD7C,MAAM,CAAC,EAAE,CAAC,CAEd,CACd,CAAC,GACY,IACT,IACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { IndexerClient } from '@heavymath/indexer_client';
2
+ interface UpcomingGamesWidgetProps {
3
+ indexerClient: IndexerClient;
4
+ dealerAddress: string;
5
+ }
6
+ export declare function UpcomingGamesWidget({ indexerClient, dealerAddress, }: UpcomingGamesWidgetProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=UpcomingGamesWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpcomingGamesWidget.d.ts","sourceRoot":"","sources":["../../../src/components/dealer/UpcomingGamesWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAuC/D,UAAU,wBAAwB;IAChC,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AA4CD,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,aAAa,GACd,EAAE,wBAAwB,2CAwD1B"}
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Link, useParams } from 'react-router-dom';
3
+ import { useTranslation } from 'react-i18next';
4
+ import { useQuery } from '@tanstack/react-query';
5
+ import { isValidSportsOracleId, decodeOracleId } from '../../utils/oracleId';
6
+ import { SPORT_CODES } from '../../config/sportCodes';
7
+ import { CATEGORIES } from '../../types/market';
8
+ import { SoccerBallIcon, BasketballIcon, FootballIcon, BaseballIcon, HockeyIcon, RugbyIcon, RacingIcon, MmaIcon, HandballIcon, VolleyballIcon, } from '../../components/icons';
9
+ const SPORT_ICONS = {
10
+ 1: SoccerBallIcon,
11
+ 2: BasketballIcon,
12
+ 3: FootballIcon,
13
+ 4: BaseballIcon,
14
+ 5: HockeyIcon,
15
+ 6: RugbyIcon,
16
+ 7: RacingIcon,
17
+ 8: MmaIcon,
18
+ 9: HandballIcon,
19
+ 10: VolleyballIcon,
20
+ };
21
+ function useMarketCountsBySport(indexerClient, dealerAddress) {
22
+ return useQuery({
23
+ queryKey: ['dealerMarketCountsBySport', dealerAddress],
24
+ queryFn: async () => {
25
+ const response = await indexerClient.getMarkets({
26
+ dealer: dealerAddress,
27
+ category: CATEGORIES.SPORTS,
28
+ limit: 500,
29
+ });
30
+ const markets = response.data ?? [];
31
+ const counts = new Map();
32
+ for (const market of markets) {
33
+ if (!market.oracleId)
34
+ continue;
35
+ try {
36
+ const hex = market.oracleId;
37
+ if (!isValidSportsOracleId(hex))
38
+ continue;
39
+ const { sportCode } = decodeOracleId(hex);
40
+ counts.set(sportCode, (counts.get(sportCode) ?? 0) + 1);
41
+ }
42
+ catch {
43
+ // Skip invalid oracleIds
44
+ }
45
+ }
46
+ const result = [];
47
+ for (const [slug, code] of Object.entries(SPORT_CODES)) {
48
+ const count = counts.get(code) ?? 0;
49
+ if (count > 0) {
50
+ result.push({ sportCode: code, slug, count });
51
+ }
52
+ }
53
+ result.sort((a, b) => b.count - a.count);
54
+ return result;
55
+ },
56
+ staleTime: 5 * 60 * 1000,
57
+ });
58
+ }
59
+ export function UpcomingGamesWidget({ indexerClient, dealerAddress, }) {
60
+ const { lang } = useParams();
61
+ const { t } = useTranslation('common');
62
+ const { data: sportCounts, isLoading } = useMarketCountsBySport(indexerClient, dealerAddress);
63
+ return (_jsxs("div", { className: 'p-6 rounded-lg border border-border bg-card', children: [_jsx("h3", { className: 'font-semibold mb-4', children: t('dealer.marketsBySport', 'Markets by Sport') }), isLoading ? (_jsx("div", { className: 'space-y-2', children: [1, 2, 3].map(i => (_jsx("div", { className: 'animate-pulse h-8 bg-muted rounded' }, i))) })) : !sportCounts || sportCounts.length === 0 ? (_jsxs("div", { className: 'text-sm text-muted-foreground text-center py-4', children: [_jsx("p", { children: t('dealer.noSportsMarkets', 'No sports markets yet') }), _jsx(Link, { to: `/${lang || 'en'}/sports`, className: 'text-primary hover:underline mt-2 inline-block', children: t('dealer.browseSports', 'Browse sports to create markets') })] })) : (_jsx("div", { className: 'space-y-2', children: sportCounts.map(({ sportCode, slug, count }) => {
64
+ const Icon = SPORT_ICONS[sportCode];
65
+ return (_jsxs(Link, { to: `/${lang || 'en'}/sports/${slug}`, className: 'flex items-center justify-between p-2 rounded-lg hover:bg-muted/50 transition-colors', children: [_jsxs("div", { className: 'flex items-center gap-2', children: [_jsx(Icon, { className: 'w-5 h-5 text-muted-foreground' }), _jsx("span", { className: 'text-sm font-medium', children: t(`nav.${slug}`, slug) })] }), _jsxs("span", { className: 'text-sm text-muted-foreground', children: [count, " ", count === 1 ? 'market' : 'markets'] })] }, sportCode));
66
+ }) }))] }));
67
+ }
68
+ //# sourceMappingURL=UpcomingGamesWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpcomingGamesWidget.js","sourceRoot":"","sources":["../../../src/components/dealer/UpcomingGamesWidget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { MdSportsSoccer as SoccerBallIcon, MdSportsBasketball as BasketballIcon, MdSportsFootball as FootballIcon, MdSportsBaseball as BaseballIcon, MdSportsHockey as HockeyIcon, MdSportsRugby as RugbyIcon, MdSportsMotorsports as RacingIcon, MdSportsMma as MmaIcon, MdSportsHandball as HandballIcon, MdSportsVolleyball as VolleyballIcon, } from 'react-icons/md';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,IAAI,cAAc,EAChC,kBAAkB,IAAI,cAAc,EACpC,gBAAgB,IAAI,YAAY,EAChC,gBAAgB,IAAI,YAAY,EAChC,cAAc,IAAI,UAAU,EAC5B,aAAa,IAAI,SAAS,EAC1B,mBAAmB,IAAI,UAAU,EACjC,WAAW,IAAI,OAAO,EACtB,gBAAgB,IAAI,YAAY,EAChC,kBAAkB,IAAI,cAAc,GACrC,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { MdSportsSoccer as SoccerBallIcon, MdSportsBasketball as BasketballIcon, MdSportsFootball as FootballIcon, MdSportsBaseball as BaseballIcon, MdSportsHockey as HockeyIcon, MdSportsRugby as RugbyIcon, MdSportsMotorsports as RacingIcon, MdSportsMma as MmaIcon, MdSportsHandball as HandballIcon, MdSportsVolleyball as VolleyballIcon, } from 'react-icons/md';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,IAAI,cAAc,EAChC,kBAAkB,IAAI,cAAc,EACpC,gBAAgB,IAAI,YAAY,EAChC,gBAAgB,IAAI,YAAY,EAChC,cAAc,IAAI,UAAU,EAC5B,aAAa,IAAI,SAAS,EAC1B,mBAAmB,IAAI,UAAU,EACjC,WAAW,IAAI,OAAO,EACtB,gBAAgB,IAAI,YAAY,EAChC,kBAAkB,IAAI,cAAc,GACrC,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { SportCode } from '../../config/sportCodes';
2
+ interface GameMarketsSectionProps {
3
+ sportCode: SportCode;
4
+ gameId: number;
5
+ homeTeamName: string;
6
+ awayTeamName: string;
7
+ homeTeamId?: number;
8
+ awayTeamId?: number;
9
+ gameDate: Date;
10
+ leagueName?: string;
11
+ variant?: 'team-sport' | 'individual-sport' | 'race';
12
+ gameStarted?: boolean;
13
+ }
14
+ export declare function GameMarketsSection({ sportCode, gameId, homeTeamName, awayTeamName, homeTeamId, awayTeamId, gameDate, leagueName, variant, gameStarted, }: GameMarketsSectionProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=GameMarketsSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GameMarketsSection.d.ts","sourceRoot":"","sources":["../../../src/components/market/GameMarketsSection.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,UAAU,uBAAuB;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,IAAI,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,GAAG,kBAAkB,GAAG,MAAM,CAAC;IACrD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAsB,EACtB,WAAmB,GACpB,EAAE,uBAAuB,2CA+EzB"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { useTranslation } from 'react-i18next';
4
+ import { useIndexer } from '../../context/IndexerContext';
5
+ import { useGameMarkets } from '../../hooks/useGameMarkets';
6
+ import { MarketCard } from './MarketCard';
7
+ import { InlineCreateMarketForm } from './InlineCreateMarketForm';
8
+ import { variants } from '@sudobility/design';
9
+ export function GameMarketsSection({ sportCode, gameId, homeTeamName, awayTeamName, homeTeamId, awayTeamId, gameDate, leagueName, variant = 'team-sport', gameStarted = false, }) {
10
+ const { t } = useTranslation('common');
11
+ const { indexerClient } = useIndexer();
12
+ const { data: markets, isLoading } = useGameMarkets(indexerClient, sportCode, gameId);
13
+ const [isPolling, setIsPolling] = useState(false);
14
+ const hasMarkets = markets && markets.length > 0;
15
+ const noMarketsText = t('markets.noMarketsForGame', 'No prediction markets for this game yet.');
16
+ return (_jsxs("div", { children: [_jsxs("div", { className: 'flex flex-col sm:flex-row sm:items-center sm:gap-3 mb-4', children: [_jsx("h2", { className: 'text-lg font-semibold', children: t('markets.predictionMarkets', 'Prediction Markets') }), !isLoading && !hasMarkets && !isPolling && (_jsx("span", { className: 'text-sm text-muted-foreground', children: noMarketsText }))] }), isLoading ? (_jsx("div", { className: 'space-y-3', children: Array.from({ length: 2 }).map((_, i) => (_jsx("div", { className: `${variants.loading.skeleton.base()} rounded-lg h-24` }, i))) })) : hasMarkets ? (_jsx("div", { className: 'space-y-3 mb-4', children: markets.map(market => (_jsx(MarketCard, { market: market, showCategory: false }, market.id))) })) : isPolling ? (_jsxs("div", { className: 'flex items-center gap-2 text-sm text-muted-foreground', children: [_jsxs("svg", { className: 'w-4 h-4 animate-spin', viewBox: '0 0 24 24', fill: 'none', children: [_jsx("circle", { className: 'opacity-25', cx: '12', cy: '12', r: '10', stroke: 'currentColor', strokeWidth: '4' }), _jsx("path", { className: 'opacity-75', fill: 'currentColor', d: 'M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z' })] }), t('markets.updatingMarkets', 'Updating prediction markets...')] })) : null, _jsx(InlineCreateMarketForm, { sportCode: sportCode, gameId: gameId, homeTeamName: homeTeamName, awayTeamName: awayTeamName, homeTeamId: homeTeamId, awayTeamId: awayTeamId, gameDate: gameDate, leagueName: leagueName, variant: variant, onPollingChange: setIsPolling, gameStarted: gameStarted })] }));
17
+ }
18
+ //# sourceMappingURL=GameMarketsSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GameMarketsSection.js","sourceRoot":"","sources":["../../../src/components/market/GameMarketsSection.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { SportCode } from '../../config/sportCodes';
2
+ interface InlineCreateMarketFormProps {
3
+ sportCode: SportCode;
4
+ gameId: number;
5
+ homeTeamName: string;
6
+ awayTeamName: string;
7
+ homeTeamId?: number;
8
+ awayTeamId?: number;
9
+ gameDate: Date;
10
+ leagueName?: string;
11
+ variant?: 'team-sport' | 'individual-sport' | 'race';
12
+ onPollingChange?: (polling: boolean) => void;
13
+ gameStarted?: boolean;
14
+ }
15
+ export declare function InlineCreateMarketForm({ sportCode, gameId, homeTeamName, awayTeamName, homeTeamId, awayTeamId, gameDate, leagueName, variant, onPollingChange, gameStarted, }: InlineCreateMarketFormProps): import("react/jsx-runtime").JSX.Element | null;
16
+ export {};
17
+ //# sourceMappingURL=InlineCreateMarketForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineCreateMarketForm.d.ts","sourceRoot":"","sources":["../../../src/components/market/InlineCreateMarketForm.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAKzD,UAAU,2BAA2B;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,IAAI,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,GAAG,kBAAkB,GAAG,MAAM,CAAC;IACrD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAQD,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAsB,EACtB,eAAe,EACf,WAAmB,GACpB,EAAE,2BAA2B,kDAiiB7B"}
@@ -0,0 +1,274 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState, useRef, useEffect } from 'react';
3
+ import { useTranslation } from 'react-i18next';
4
+ import { useQueryClient } from '@tanstack/react-query';
5
+ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, } from '@sudobility/components';
6
+ import { AnimatedCollapse } from '../../components/ui/AnimatedCollapse';
7
+ import { DealerNFTSelector } from '../../components/dealer/DealerNFTSelector';
8
+ import { useAuth } from '../../context/WalletAuthContext';
9
+ import { useIndexer } from '../../context/IndexerContext';
10
+ import { useCreateMarketWithToast } from '../../hooks';
11
+ import { useDealerPermission } from '../../hooks/useDealerPermission';
12
+ import { encodeOracleId } from '../../utils/oracleId';
13
+ import { ConditionType, encodeConditionData, formatConditionDescription, } from '../../utils/conditionData';
14
+ import { ui } from '@sudobility/design';
15
+ import { getNow, toChainDate } from '../../utils/datetime';
16
+ import { CATEGORIES } from '../../types/market';
17
+ const OUTCOME_LABEL_KEYS = {
18
+ win: 'inlineCreateMarket.wins',
19
+ win_or_draw: 'inlineCreateMarket.winsOrDraws',
20
+ draw_or_lose: 'inlineCreateMarket.drawsOrLoses',
21
+ };
22
+ export function InlineCreateMarketForm({ sportCode, gameId, homeTeamName, awayTeamName, homeTeamId, awayTeamId, gameDate, leagueName, variant = 'team-sport', onPollingChange, gameStarted = false, }) {
23
+ const { t } = useTranslation('common');
24
+ const queryClient = useQueryClient();
25
+ const { isDealer, dealerTokenIds } = useAuth();
26
+ const { indexerClient } = useIndexer();
27
+ const createMarket = useCreateMarketWithToast();
28
+ const [selectedTokenId, setSelectedTokenId] = useState(dealerTokenIds?.[0]);
29
+ // Sync when dealerTokenIds loads asynchronously after mount
30
+ useEffect(() => {
31
+ if (selectedTokenId === undefined &&
32
+ dealerTokenIds &&
33
+ dealerTokenIds.length > 0) {
34
+ }
35
+ }, [dealerTokenIds, selectedTokenId]);
36
+ const { hasPermission, isLoading: isPermissionLoading } = useDealerPermission(sportCode, selectedTokenId);
37
+ const [isExpanded, setIsExpanded] = useState(false);
38
+ const [deadline, setDeadline] = useState(() => {
39
+ const d = new Date(gameDate);
40
+ return d.toISOString().slice(0, 16); // datetime-local format
41
+ });
42
+ // Condition type state
43
+ const [marketType, setMarketType] = useState('winloss');
44
+ const [positiveTeamSide, setPositiveTeamSide] = useState('home');
45
+ const [winLossOutcome, setWinLossOutcome] = useState('win');
46
+ const [scoreType, setScoreType] = useState('0');
47
+ const scoreSide = positiveTeamSide === 'home' ? '0' : '1';
48
+ const [scoreOperator, setScoreOperator] = useState('0');
49
+ const [scoreExpectation, setScoreExpectation] = useState('0');
50
+ const now = getNow();
51
+ // User-editable title/description, auto-populated from form state
52
+ const [title, setTitle] = useState('');
53
+ const [description, setDescription] = useState('');
54
+ const [titleTouched, setTitleTouched] = useState(false);
55
+ const [descriptionTouched, setDescriptionTouched] = useState(false);
56
+ // Derive auto title and description from current form state
57
+ const teamName = positiveTeamSide === 'home' ? homeTeamName : awayTeamName;
58
+ const otherTeamName = positiveTeamSide === 'home' ? awayTeamName : homeTeamName;
59
+ const shortDateStr = gameDate.toLocaleDateString(undefined, {
60
+ month: 'short',
61
+ day: 'numeric',
62
+ year: 'numeric',
63
+ });
64
+ const dateStr = gameDate.toLocaleDateString(undefined, {
65
+ year: 'numeric',
66
+ month: 'long',
67
+ day: 'numeric',
68
+ });
69
+ const leagueStr = leagueName ? ` - ${leagueName}` : '';
70
+ const autoTitle = (() => {
71
+ if (variant === 'race')
72
+ return t('inlineCreateMarket.titleOnDate', {
73
+ team: homeTeamName,
74
+ date: shortDateStr,
75
+ });
76
+ if (marketType === 'winloss') {
77
+ const outcome = t(OUTCOME_LABEL_KEYS[winLossOutcome]);
78
+ return t('inlineCreateMarket.titleWinloss', {
79
+ team: teamName,
80
+ outcome,
81
+ other: otherTeamName,
82
+ date: shortDateStr,
83
+ });
84
+ }
85
+ const side = scoreSide === '0' ? homeTeamName : awayTeamName;
86
+ const otherSide = scoreSide === '0' ? awayTeamName : homeTeamName;
87
+ const val = scoreExpectation || '0';
88
+ const isRelative = scoreType === '1';
89
+ const op = Number(scoreOperator);
90
+ const phraseKeys = isRelative
91
+ ? [
92
+ 'inlineCreateMarket.winsByAtLeast',
93
+ 'inlineCreateMarket.winsByMoreThan',
94
+ 'inlineCreateMarket.winsByExactly',
95
+ 'inlineCreateMarket.winsByFewerThan',
96
+ 'inlineCreateMarket.winsByAtMost',
97
+ 'inlineCreateMarket.doesNotWinBy',
98
+ ]
99
+ : [
100
+ 'inlineCreateMarket.scoresAtLeast',
101
+ 'inlineCreateMarket.scoresMoreThan',
102
+ 'inlineCreateMarket.scoresExactly',
103
+ 'inlineCreateMarket.scoresFewerThan',
104
+ 'inlineCreateMarket.scoresAtMost',
105
+ 'inlineCreateMarket.doesNotScore',
106
+ ];
107
+ const phrase = t(phraseKeys[op] ?? phraseKeys[0], { val });
108
+ return t('inlineCreateMarket.titleScore', {
109
+ team: side,
110
+ phrase,
111
+ other: otherSide,
112
+ date: shortDateStr,
113
+ });
114
+ })();
115
+ const autoDescription = (() => {
116
+ if (variant === 'race')
117
+ return t('inlineCreateMarket.descriptionSingle', {
118
+ team: homeTeamName,
119
+ league: leagueStr,
120
+ date: dateStr,
121
+ });
122
+ return t('inlineCreateMarket.descriptionVs', {
123
+ home: homeTeamName,
124
+ away: awayTeamName,
125
+ league: leagueStr,
126
+ date: dateStr,
127
+ });
128
+ })();
129
+ const effectiveTitle = titleTouched && title ? title : autoTitle;
130
+ const effectiveDescription = descriptionTouched && description ? description : autoDescription;
131
+ // Poll indexer after market creation until a new market appears
132
+ const pollRef = useRef(null);
133
+ const pollCountRef = useRef(0);
134
+ const prevMarketCountRef = useRef(0);
135
+ const prevMarketIdsRef = useRef(new Set());
136
+ // Pending oracle config to save when the new market is found
137
+ const pendingOracleConfigRef = useRef(null);
138
+ const startPolling = () => {
139
+ stopPolling();
140
+ pollCountRef.current = 0;
141
+ onPollingChange?.(true);
142
+ // Snapshot current market IDs before polling
143
+ const cached = queryClient.getQueryData([
144
+ 'gameMarkets',
145
+ sportCode,
146
+ gameId,
147
+ ]);
148
+ const cachedArr = Array.isArray(cached) ? cached : [];
149
+ prevMarketCountRef.current = cachedArr.length;
150
+ prevMarketIdsRef.current = new Set(cachedArr.map(m => m.id));
151
+ pollRef.current = setInterval(async () => {
152
+ pollCountRef.current += 1;
153
+ await queryClient.invalidateQueries({
154
+ queryKey: ['gameMarkets', sportCode, gameId],
155
+ });
156
+ const updated = queryClient.getQueryData([
157
+ 'gameMarkets',
158
+ sportCode,
159
+ gameId,
160
+ ]);
161
+ const updatedArr = Array.isArray(updated) ? updated : [];
162
+ const newCount = updatedArr.length;
163
+ if (newCount > prevMarketCountRef.current) {
164
+ // Find the new market ID and save oracle config if needed
165
+ const newMarket = updatedArr.find(m => !prevMarketIdsRef.current.has(m.id));
166
+ if (newMarket && pendingOracleConfigRef.current && indexerClient) {
167
+ try {
168
+ await indexerClient.setMarketOracleConfig(newMarket.id, pendingOracleConfigRef.current);
169
+ }
170
+ catch (e) {
171
+ console.error('Failed to save oracle config:', e);
172
+ }
173
+ pendingOracleConfigRef.current = null;
174
+ }
175
+ stopPolling();
176
+ }
177
+ else if (pollCountRef.current >= 20) {
178
+ pendingOracleConfigRef.current = null;
179
+ stopPolling();
180
+ }
181
+ }, 3000);
182
+ };
183
+ const stopPolling = () => {
184
+ if (pollRef.current) {
185
+ clearInterval(pollRef.current);
186
+ pollRef.current = null;
187
+ onPollingChange?.(false);
188
+ }
189
+ };
190
+ useEffect(() => stopPolling, []);
191
+ if (!isDealer || gameStarted)
192
+ return null;
193
+ const tokenId = selectedTokenId;
194
+ if (tokenId === undefined)
195
+ return null;
196
+ const deadlineDate = new Date(deadline);
197
+ const minDeadlineMs = 24 * 60 * 60 * 1000; // 24 hours
198
+ const isDeadlineValid = deadlineDate.getTime() - now.getTime() >= minDeadlineMs;
199
+ const canSubmit = isDeadlineValid && !createMarket.isPending;
200
+ const handleSubmit = async () => {
201
+ if (!canSubmit)
202
+ return;
203
+ const oracleId = encodeOracleId(sportCode, gameId);
204
+ const chainDeadline = toChainDate(deadlineDate);
205
+ const deadlineBigInt = BigInt(Math.floor(chainDeadline.getTime() / 1000));
206
+ // Build conditionData based on market type
207
+ let conditionData;
208
+ const selectedTeamId = positiveTeamSide === 'home' ? homeTeamId : awayTeamId;
209
+ if (marketType === 'winloss' && selectedTeamId) {
210
+ conditionData = encodeConditionData({
211
+ type: ConditionType.WinLoss,
212
+ positiveTeamId: selectedTeamId,
213
+ });
214
+ }
215
+ else if (marketType === 'matchscore') {
216
+ conditionData = encodeConditionData({
217
+ type: ConditionType.MatchScore,
218
+ scoreType: Number(scoreType),
219
+ team: Number(scoreSide),
220
+ operator: Number(scoreOperator),
221
+ expectation: Number(scoreExpectation),
222
+ });
223
+ }
224
+ await createMarket.mutateAsync({
225
+ tokenId: BigInt(tokenId),
226
+ category: BigInt(CATEGORIES.SPORTS),
227
+ subCategory: BigInt(sportCode),
228
+ deadline: deadlineBigInt,
229
+ description: `${effectiveTitle}\n${effectiveDescription}`,
230
+ oracleId,
231
+ conditionData,
232
+ });
233
+ // Store oracle config to save once the market appears in the indexer
234
+ pendingOracleConfigRef.current = {
235
+ positiveTeamId: selectedTeamId ? String(selectedTeamId) : '',
236
+ positiveTeamName: teamName,
237
+ negativeTeamName: otherTeamName,
238
+ };
239
+ // Start polling for the new market to appear
240
+ startPolling();
241
+ setIsExpanded(false);
242
+ };
243
+ if (!isPermissionLoading && !hasPermission) {
244
+ return (_jsx("div", { className: 'rounded-lg border border-dashed border-amber-500/40 bg-amber-500/5 p-4', children: _jsx("p", { className: 'text-sm text-amber-700 dark:text-amber-400', children: t('dealer.noPermission') }) }));
245
+ }
246
+ return (_jsxs("div", { className: 'rounded-lg border border-dashed border-primary/40 bg-primary/5', children: [_jsxs("button", { onClick: () => setIsExpanded(!isExpanded), className: 'w-full flex items-center justify-between p-4 text-left', children: [_jsxs("div", { className: 'flex items-center gap-2', children: [_jsx("span", { className: 'text-lg font-semibold text-primary', children: "+" }), _jsx("span", { className: 'font-medium', children: t('markets.createMarket', 'Create Market') })] }), _jsx("svg", { className: `w-5 h-5 text-muted-foreground transition-transform ${isExpanded ? 'rotate-180' : ''}`, fill: 'none', stroke: 'currentColor', viewBox: '0 0 24 24', children: _jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M19 9l-7 7-7-7' }) })] }), _jsx(AnimatedCollapse, { open: isExpanded, children: _jsxs("div", { className: 'px-4 pb-4 space-y-3', children: [_jsxs("div", { className: 'flex flex-col md:flex-row md:items-end gap-3', children: [_jsx(DealerNFTSelector, { tokenIds: dealerTokenIds, selectedTokenId: selectedTokenId, onSelect: setSelectedTokenId }), variant === 'team-sport' && (_jsxs("div", { className: 'md:w-44', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('markets.positiveTeam', 'Team') }), _jsxs(Select, { value: positiveTeamSide, onValueChange: val => setPositiveTeamSide(val), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: 'home', children: homeTeamName }), _jsx(SelectItem, { value: 'away', children: awayTeamName })] })] })] })), _jsxs("div", { className: 'md:w-36', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('market.condition.conditionType', 'Type') }), _jsxs(Select, { value: marketType, onValueChange: val => setMarketType(val), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: 'winloss', children: t('market.condition.winLoss', 'Win/Loss') }), _jsx(SelectItem, { value: 'matchscore', children: t('market.condition.matchScore', 'Match Score') })] })] })] }), marketType === 'winloss' && (_jsxs("div", { className: 'md:w-36', children: [_jsx("label", { className: 'block text-xs font-medium mb-1', children: t('market.condition.outcome', 'Outcome') }), _jsxs(Select, { value: winLossOutcome, onValueChange: val => setWinLossOutcome(val), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: 'win', children: t('market.condition.win', 'Win') }), _jsx(SelectItem, { value: 'win_or_draw', children: t('market.condition.winOrDraw', 'Win or Draw') }), _jsx(SelectItem, { value: 'draw_or_lose', children: t('market.condition.drawOrLose', 'Draw or Lose') })] })] })] })), marketType === 'matchscore' && (_jsxs(_Fragment, { children: [_jsxs("div", { className: 'md:w-28', children: [_jsx("label", { className: 'block text-xs font-medium mb-1', children: t('market.condition.scoreType', 'Score Type') }), _jsxs(Select, { value: scoreType, onValueChange: setScoreType, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: '0', children: t('market.condition.absolute', 'Absolute') }), _jsx(SelectItem, { value: '1', children: t('market.condition.relative', 'Relative') })] })] })] }), _jsxs("div", { className: 'md:w-24', children: [_jsx("label", { className: 'block text-xs font-medium mb-1', children: t('market.condition.operator', 'Operator') }), _jsxs(Select, { value: scoreOperator, onValueChange: setScoreOperator, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: '0', children: '>=' }), _jsx(SelectItem, { value: '1', children: '>' }), _jsx(SelectItem, { value: '2', children: "=" }), _jsx(SelectItem, { value: '3', children: '<' }), _jsx(SelectItem, { value: '4', children: '<=' }), _jsx(SelectItem, { value: '5', children: "!=" })] })] })] }), _jsxs("div", { className: 'md:w-20', children: [_jsx("label", { className: 'block text-xs font-medium mb-1', children: t('market.condition.value', 'Value') }), _jsx("input", { type: 'number', value: scoreExpectation, onChange: e => setScoreExpectation(e.target.value), placeholder: '3', className: `w-full px-3 py-2 rounded-lg border border-gray-300 dark:border-gray-600 ${ui.background.surface} text-sm` })] })] })), _jsx("div", { className: 'flex-1' }), _jsxs("div", { className: 'md:w-52', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('markets.deadline', 'Deadline') }), _jsx("input", { type: 'datetime-local', value: deadline, onChange: e => setDeadline(e.target.value), className: `w-full px-3 py-2 rounded-lg border border-gray-300 dark:border-gray-600 ${ui.background.surface} text-sm` }), deadline && !isDeadlineValid && (_jsx("p", { className: 'mt-1 text-xs text-red-500', children: t('markets.deadlineMinimum', 'Deadline must be at least 24 hours from now') }))] })] }), _jsxs("div", { className: 'flex flex-col md:flex-row gap-3', children: [_jsxs("div", { className: 'flex-1 min-w-0', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('markets.title', 'Title') }), _jsx("input", { type: 'text', value: titleTouched ? title : autoTitle, onChange: e => {
247
+ setTitleTouched(true);
248
+ setTitle(e.target.value);
249
+ }, onFocus: () => {
250
+ if (!titleTouched) {
251
+ setTitle(autoTitle);
252
+ setTitleTouched(true);
253
+ }
254
+ }, className: `w-full px-3 py-2 rounded-lg border border-gray-300 dark:border-gray-600 ${ui.background.surface} text-sm` })] }), _jsxs("div", { className: 'flex-1 min-w-0', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('markets.description', 'Description') }), _jsx("input", { type: 'text', value: descriptionTouched ? description : autoDescription, onChange: e => {
255
+ setDescriptionTouched(true);
256
+ setDescription(e.target.value);
257
+ }, onFocus: () => {
258
+ if (!descriptionTouched) {
259
+ setDescription(autoDescription);
260
+ setDescriptionTouched(true);
261
+ }
262
+ }, className: `w-full px-3 py-2 rounded-lg border border-gray-300 dark:border-gray-600 ${ui.background.surface} text-sm` })] })] }), _jsxs("div", { className: 'flex flex-col md:flex-row md:items-center gap-3', children: [_jsx("div", { className: 'flex-1 min-w-0', children: _jsxs("div", { className: `p-2.5 rounded-lg ${ui.background.muted}/50 text-sm`, children: [_jsxs("span", { className: 'text-muted-foreground', children: [t('inlineCreateMarket.condition'), ' '] }), _jsx("span", { className: 'font-medium', children: marketType === 'winloss'
263
+ ? `${positiveTeamSide === 'home' ? homeTeamName : awayTeamName} ${t(OUTCOME_LABEL_KEYS[winLossOutcome])}`
264
+ : formatConditionDescription({
265
+ type: ConditionType.MatchScore,
266
+ scoreType: Number(scoreType),
267
+ team: Number(scoreSide),
268
+ operator: Number(scoreOperator),
269
+ expectation: Number(scoreExpectation),
270
+ }, { home: homeTeamName, away: awayTeamName }) })] }) }), _jsx("button", { onClick: handleSubmit, disabled: !canSubmit, className: 'md:w-auto py-2.5 px-6 rounded-lg bg-primary text-primary-foreground font-medium text-sm disabled:opacity-50 disabled:cursor-not-allowed hover:bg-primary/90 transition-colors whitespace-nowrap flex-shrink-0', children: createMarket.isPending
271
+ ? t('markets.creating', 'Creating...')
272
+ : t('markets.create', 'Create') })] })] }) })] }));
273
+ }
274
+ //# sourceMappingURL=InlineCreateMarketForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineCreateMarketForm.js","sourceRoot":"","sources":["../../../src/components/market/InlineCreateMarketForm.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { SportCode } from '../../config/sportCodes';
2
+ interface TeamOption {
3
+ id: number;
4
+ name: string;
5
+ logo?: string | null;
6
+ }
7
+ interface LeagueMarketsSectionProps {
8
+ sportCode: SportCode;
9
+ leagueId: number;
10
+ season: number;
11
+ leagueName: string;
12
+ teams: TeamOption[];
13
+ }
14
+ export declare function LeagueMarketsSection({ sportCode, leagueId, season, leagueName, teams, }: LeagueMarketsSectionProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=LeagueMarketsSection.d.ts.map