@sudobility/heavymath_indexer_client 0.0.3 → 0.0.19
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.
- package/README.md +44 -341
- package/dist/business/index.js.map +1 -1
- package/dist/business/indexer-service.d.ts +14 -13
- package/dist/business/indexer-service.d.ts.map +1 -1
- package/dist/business/indexer-service.js +10 -0
- package/dist/business/indexer-service.js.map +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useDealers.d.ts +8 -8
- package/dist/hooks/useDealers.d.ts.map +1 -1
- package/dist/hooks/useDealers.js.map +1 -1
- package/dist/hooks/useFavorites.d.ts +1 -1
- package/dist/hooks/useFavorites.d.ts.map +1 -1
- package/dist/hooks/useFavorites.js.map +1 -1
- package/dist/hooks/useMarkets.d.ts +9 -9
- package/dist/hooks/useMarkets.d.ts.map +1 -1
- package/dist/hooks/useMarkets.js.map +1 -1
- package/dist/hooks/useOracle.d.ts +6 -6
- package/dist/hooks/useOracle.d.ts.map +1 -1
- package/dist/hooks/useOracle.js.map +1 -1
- package/dist/hooks/usePredictions.d.ts +8 -8
- package/dist/hooks/usePredictions.d.ts.map +1 -1
- package/dist/hooks/usePredictions.js.map +1 -1
- package/dist/hooks/useSSE.js.map +1 -1
- package/dist/hooks/useStats.d.ts +3 -3
- package/dist/hooks/useStats.d.ts.map +1 -1
- package/dist/hooks/useStats.js.map +1 -1
- package/dist/hooks/useWithdrawals.d.ts +5 -5
- package/dist/hooks/useWithdrawals.d.ts.map +1 -1
- package/dist/hooks/useWithdrawals.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/network/IndexerClient.d.ts +16 -16
- package/dist/network/IndexerClient.d.ts.map +1 -1
- package/dist/network/IndexerClient.js +3 -2
- package/dist/network/IndexerClient.js.map +1 -1
- package/dist/network/index.js.map +1 -1
- package/dist/stores/favorites-store.js.map +1 -1
- package/dist/stores/index.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +15 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDealers.js","sourceRoot":"","sources":["../../src/hooks/useDealers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDealers.js","sourceRoot":"","sources":["../../src/hooks/useDealers.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * React hooks for dealer NFT operations\n * Uses React Query for caching and data fetching\n */\n\nimport { useQuery, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport type {\n DealerNftData,\n DealerPermissionData,\n MarketData,\n PaginatedResponse,\n ApiResponse,\n DealerFilters,\n} from '../types';\nimport { IndexerClient } from '../network/IndexerClient';\n\n/**\n * Get all dealer NFTs with optional filtering\n * GET /api/dealers\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useDealers(client, { owner: '0x123...' });\n * ```\n */\nexport function useDealers(\n client: IndexerClient,\n filters?: DealerFilters,\n options?: Omit<UseQueryOptions<PaginatedResponse<DealerNftData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<DealerNftData>> {\n return useQuery({\n queryKey: ['heavymath', 'dealers', filters],\n queryFn: async () => {\n return await client.getDealers(filters);\n },\n staleTime: 5 * 60 * 1000, // 5 minutes - NFT ownership doesn't change often\n retry: false,\n ...options,\n });\n}\n\n/**\n * Check if wallet is a dealer (owns dealer NFTs)\n * Convenience hook for checking dealer status\n *\n * @example\n * ```tsx\n * const { data: isDealer, isLoading } = useIsDealer(client, '0x123...');\n * ```\n */\nexport function useIsDealer(\n client: IndexerClient,\n walletAddress: string | undefined,\n options?: Omit<UseQueryOptions<boolean>, 'queryKey' | 'queryFn'>\n): UseQueryResult<boolean> {\n return useQuery({\n queryKey: ['heavymath', 'is-dealer', walletAddress],\n queryFn: async () => {\n if (!walletAddress) return false;\n const result = await client.getDealers({ owner: walletAddress });\n return (result.data?.length ?? 0) > 0;\n },\n enabled: !!walletAddress,\n staleTime: 5 * 60 * 1000,\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get dealer NFTs owned by a wallet\n * Convenience hook for getting user's dealer NFTs\n *\n * @example\n * ```tsx\n * const { data: nfts, isLoading } = useDealerNFTs(client, '0x123...');\n * ```\n */\nexport function useDealerNFTs(\n client: IndexerClient,\n walletAddress: string | undefined,\n options?: Omit<UseQueryOptions<DealerNftData[]>, 'queryKey' | 'queryFn'>\n): UseQueryResult<DealerNftData[]> {\n return useQuery({\n queryKey: ['heavymath', 'dealer-nfts', walletAddress],\n queryFn: async () => {\n if (!walletAddress) return [];\n const result = await client.getDealers({ owner: walletAddress });\n return result.data ?? [];\n },\n enabled: !!walletAddress,\n staleTime: 5 * 60 * 1000,\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get a specific dealer NFT by ID\n * GET /api/dealers/:id\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useDealer(client, '1-1');\n * ```\n */\nexport function useDealer(\n client: IndexerClient,\n dealerId: string | undefined,\n options?: Omit<UseQueryOptions<ApiResponse<DealerNftData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<DealerNftData>> {\n return useQuery({\n queryKey: ['heavymath', 'dealer', dealerId],\n queryFn: async () => {\n if (!dealerId) throw new Error('Dealer ID is required');\n return await client.getDealer(dealerId);\n },\n enabled: !!dealerId,\n staleTime: 5 * 60 * 1000,\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get permissions for a specific dealer NFT\n * GET /api/dealers/:id/permissions\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useDealerPermissions(client, '1-1');\n * ```\n */\nexport function useDealerPermissions(\n client: IndexerClient,\n dealerId: string | undefined,\n options?: Omit<UseQueryOptions<ApiResponse<DealerPermissionData[]>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<DealerPermissionData[]>> {\n return useQuery({\n queryKey: ['heavymath', 'dealer-permissions', dealerId],\n queryFn: async () => {\n if (!dealerId) throw new Error('Dealer ID is required');\n return await client.getDealerPermissions(dealerId);\n },\n enabled: !!dealerId,\n staleTime: 10 * 60 * 1000, // 10 minutes - permissions rarely change\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get all markets created by a specific dealer NFT\n * GET /api/dealers/:id/markets\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useDealerMarkets(client, '1-1');\n * ```\n */\nexport function useDealerMarkets(\n client: IndexerClient,\n dealerId: string | undefined,\n options?: Omit<UseQueryOptions<ApiResponse<MarketData[]>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<MarketData[]>> {\n return useQuery({\n queryKey: ['heavymath', 'dealer-markets', dealerId],\n queryFn: async () => {\n if (!dealerId) throw new Error('Dealer ID is required');\n return await client.getDealerMarkets(dealerId);\n },\n enabled: !!dealerId,\n staleTime: 2 * 60 * 1000, // 2 minutes\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get complete dealer dashboard (NFTs + all markets)\n * Convenience hook that combines NFTs and their markets\n *\n * @example\n * ```tsx\n * const { nfts, markets, isLoading } = useDealerDashboard(client, '0x123...');\n * ```\n */\nexport function useDealerDashboard(\n client: IndexerClient,\n walletAddress: string | undefined\n): {\n nfts: UseQueryResult<DealerNftData[]>;\n markets: UseQueryResult<MarketData[]>;\n isLoading: boolean;\n isError: boolean;\n} {\n const nfts = useDealerNFTs(client, walletAddress);\n\n const markets = useQuery({\n queryKey: ['heavymath', 'dealer-dashboard-markets', walletAddress],\n queryFn: async () => {\n if (!nfts.data || nfts.data.length === 0) return [];\n\n const marketPromises = nfts.data.map(nft => client.getDealerMarkets(nft.id));\n const marketResults = await Promise.all(marketPromises);\n\n // Flatten markets and remove duplicates\n const marketsMap = new Map<string, MarketData>();\n marketResults.forEach(result => {\n if (result.data) {\n result.data.forEach(market => marketsMap.set(market.id, market));\n }\n });\n\n return Array.from(marketsMap.values());\n },\n enabled: !!walletAddress && !!nfts.data && nfts.data.length > 0,\n staleTime: 2 * 60 * 1000,\n retry: false,\n });\n\n return {\n nfts,\n markets,\n isLoading: nfts.isLoading || markets.isLoading,\n isError: nfts.isError || markets.isError,\n };\n}\n"]}
|
|
@@ -27,5 +27,5 @@ export declare function useIsFavorite(client: IndexerClient, walletAddress: stri
|
|
|
27
27
|
isLoading: boolean;
|
|
28
28
|
toggleFavorite: () => Promise<void>;
|
|
29
29
|
};
|
|
30
|
-
export declare function useFavoritesStoreHook(): import("
|
|
30
|
+
export declare function useFavoritesStoreHook(): import("..").FavoritesState;
|
|
31
31
|
//# sourceMappingURL=useFavorites.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFavorites.d.ts","sourceRoot":"","sources":["../../src/hooks/useFavorites.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,eAAe,EACf,cAAc,EACd,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAwBzD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,sBAAsB,EAChC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC7F;IACD,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7D,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,iBAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;IAC9F,cAAc,EAAE,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACpE,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAyIA;AAcD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;eAnKnF,kBAAkB,EAAE;WACxB,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;eACjD,OAAO;aACT,OAAO;WACT,KAAK,GAAG,IAAI;iBACN,iBAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC;oBAC7E,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;aAC1D,MAAM,IAAI;EA+JpB;AAeD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,IAAI,EAAE,qBAAqB,GAC1B;IACD,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC,CA2BA;AAYD,wBAAgB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"useFavorites.d.ts","sourceRoot":"","sources":["../../src/hooks/useFavorites.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,eAAe,EACf,cAAc,EACd,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAwBzD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,sBAAsB,EAChC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC7F;IACD,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7D,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,iBAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;IAC9F,cAAc,EAAE,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACpE,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAyIA;AAcD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;eAnKnF,kBAAkB,EAAE;WACxB,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;eACjD,OAAO;aACT,OAAO;WACT,KAAK,GAAG,IAAI;iBACN,iBAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC;oBAC7E,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;aAC1D,MAAM,IAAI;EA+JpB;AAeD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,IAAI,EAAE,qBAAqB,GAC1B;IACD,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC,CA2BA;AAYD,wBAAgB,qBAAqB,gCAEpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFavorites.js","sourceRoot":"","sources":["../../src/hooks/useFavorites.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useFavorites.js","sourceRoot":"","sources":["../../src/hooks/useFavorites.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * React hooks for wallet favorites operations\n * Uses Zustand for local persistence and React Query for API sync\n */\n\nimport { useCallback, useEffect } from 'react';\nimport {\n useQuery,\n useMutation,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n UseMutationResult,\n} from '@tanstack/react-query';\nimport type {\n WalletFavoriteData,\n PaginatedResponse,\n ApiResponse,\n WalletFavoritesFilters,\n CreateFavoriteRequest,\n} from '../types';\nimport { IndexerClient } from '../network/IndexerClient';\nimport { useFavoritesStore } from '../stores/favorites-store';\n\n/**\n * Hook for managing wallet favorites\n * Uses Zustand for local persistence with optimistic updates\n *\n * @example\n * ```tsx\n * const { favorites, isLoading, addFavorite, removeFavorite, refresh } = useFavorites(\n * client,\n * '0x123...'\n * );\n *\n * // Add a favorite (optimistic update)\n * await addFavorite({ category: 'sports', subcategory: 'soccer', type: 'team', id: 'team-123' });\n *\n * // Remove a favorite (optimistic update)\n * await removeFavorite(favoriteId);\n *\n * // Manually refresh from server\n * refresh();\n * ```\n */\nexport function useFavorites(\n client: IndexerClient,\n walletAddress: string | undefined,\n filters?: WalletFavoritesFilters,\n options?: Omit<UseQueryOptions<PaginatedResponse<WalletFavoriteData>>, 'queryKey' | 'queryFn'>\n): {\n favorites: WalletFavoriteData[];\n query: UseQueryResult<PaginatedResponse<WalletFavoriteData>>;\n isLoading: boolean;\n isError: boolean;\n error: Error | null;\n addFavorite: UseMutationResult<ApiResponse<WalletFavoriteData>, Error, CreateFavoriteRequest>;\n removeFavorite: UseMutationResult<ApiResponse<void>, Error, number>;\n refresh: () => void;\n} {\n const queryClient = useQueryClient();\n const queryKey = ['heavymath', 'favorites', walletAddress, filters];\n\n // Zustand store actions\n const {\n getFavorites,\n setFavorites,\n addFavoriteOptimistic,\n updateFavoriteFromServer,\n removeFavoriteOptimistic,\n rollbackAdd,\n rollbackRemove,\n findFavorite,\n needsRefresh,\n } = useFavoritesStore();\n\n // Get favorites from store (for optimistic UI)\n const storedFavorites = walletAddress ? getFavorites(walletAddress) : [];\n\n // Filter stored favorites if filters are provided\n const filteredFavorites = storedFavorites.filter(fav => {\n if (filters?.category && fav.category !== filters.category) return false;\n if (filters?.subcategory && fav.subcategory !== filters.subcategory) return false;\n if (filters?.type && fav.type !== filters.type) return false;\n return true;\n });\n\n // Query for fetching favorites from server\n const query = useQuery({\n queryKey,\n queryFn: async () => {\n if (!walletAddress) {\n return {\n success: true,\n data: [],\n pagination: {\n totalCount: 0,\n pageSize: filters?.limit ?? 50,\n hasNextPage: false,\n hasPreviousPage: false,\n },\n timestamp: new Date().toISOString(),\n } as PaginatedResponse<WalletFavoriteData>;\n }\n const response = await client.getFavorites(walletAddress, filters);\n // Update store with server data (without filters to get all favorites)\n if (!filters) {\n setFavorites(walletAddress, response.data ?? []);\n }\n return response;\n },\n staleTime: 2 * 60 * 1000, // 2 minutes\n retry: false,\n // Only fetch if store needs refresh or no data\n enabled: walletAddress ? needsRefresh(walletAddress) || storedFavorites.length === 0 : false,\n ...options,\n });\n\n // Sync store when query succeeds (for filtered queries)\n useEffect(() => {\n if (query.data?.data && walletAddress && !filters) {\n setFavorites(walletAddress, query.data.data);\n }\n }, [query.data, walletAddress, filters, setFavorites]);\n\n // Refresh function - invalidates query and forces refetch\n const refresh = useCallback(() => {\n if (walletAddress) {\n // Clear the lastFetched to force refresh\n queryClient.invalidateQueries({ queryKey });\n }\n }, [queryClient, queryKey, walletAddress]);\n\n // Mutation for adding a favorite with optimistic update\n const addFavorite = useMutation({\n mutationFn: async (favorite: CreateFavoriteRequest) => {\n if (!walletAddress) {\n throw new Error('Wallet address is required to add favorites');\n }\n return await client.addFavorite(walletAddress, favorite);\n },\n onMutate: async (favorite: CreateFavoriteRequest) => {\n if (!walletAddress) return;\n // Optimistic update\n addFavoriteOptimistic(walletAddress, favorite);\n return { favorite };\n },\n onSuccess: (response, _favorite) => {\n if (!walletAddress || !response.data) return;\n // Update with server response (real ID)\n updateFavoriteFromServer(walletAddress, response.data);\n },\n onError: (_error, favorite) => {\n if (!walletAddress) return;\n // Rollback optimistic update\n rollbackAdd(walletAddress, favorite.id);\n },\n });\n\n // Mutation for removing a favorite with optimistic update\n const removeFavorite = useMutation({\n mutationFn: async (favoriteId: number) => {\n if (!walletAddress) {\n throw new Error('Wallet address is required to remove favorites');\n }\n return await client.removeFavorite(walletAddress, favoriteId);\n },\n onMutate: async (favoriteId: number) => {\n if (!walletAddress) return;\n // Save favorite for potential rollback\n const favorite = findFavorite(\n walletAddress,\n storedFavorites.find(f => f.id === favoriteId)?.itemId ?? ''\n );\n // Optimistic update\n removeFavoriteOptimistic(walletAddress, favoriteId);\n return { favorite };\n },\n onError: (_error, _favoriteId, context) => {\n if (!walletAddress || !context?.favorite) return;\n // Rollback optimistic update\n rollbackRemove(walletAddress, context.favorite);\n },\n });\n\n return {\n // Use filtered favorites from store for immediate UI updates\n favorites: filteredFavorites,\n query,\n isLoading: query.isLoading && storedFavorites.length === 0,\n isError: query.isError,\n error: query.error,\n addFavorite,\n removeFavorite,\n refresh,\n };\n}\n\n/**\n * Get favorites for a specific category\n *\n * @example\n * ```tsx\n * const { favorites, addFavorite, removeFavorite } = useCategoryFavorites(\n * client,\n * '0x123...',\n * 'sports'\n * );\n * ```\n */\nexport function useCategoryFavorites(\n client: IndexerClient,\n walletAddress: string | undefined,\n category: string,\n options?: Omit<UseQueryOptions<PaginatedResponse<WalletFavoriteData>>, 'queryKey' | 'queryFn'>\n) {\n return useFavorites(client, walletAddress, { category }, options);\n}\n\n/**\n * Check if an item is favorited\n * Uses Zustand store for immediate response\n *\n * @example\n * ```tsx\n * const { isFavorite, toggleFavorite } = useIsFavorite(\n * client,\n * '0x123...',\n * { category: 'sports', subcategory: 'soccer', type: 'team', id: 'team-123' }\n * );\n * ```\n */\nexport function useIsFavorite(\n client: IndexerClient,\n walletAddress: string | undefined,\n item: CreateFavoriteRequest\n): {\n isFavorite: boolean;\n favoriteId: number | undefined;\n isLoading: boolean;\n toggleFavorite: () => Promise<void>;\n} {\n const { isFavorite: checkIsFavorite, findFavorite } = useFavoritesStore();\n\n // Use store directly for immediate response\n const isFavorited = walletAddress ? checkIsFavorite(walletAddress, item.id) : false;\n const existingFavorite = walletAddress ? findFavorite(walletAddress, item.id) : undefined;\n\n const { addFavorite, removeFavorite, isLoading } = useFavorites(client, walletAddress, {\n category: item.category,\n subcategory: item.subcategory,\n type: item.type,\n });\n\n const toggleFavorite = useCallback(async () => {\n if (existingFavorite) {\n await removeFavorite.mutateAsync(existingFavorite.id);\n } else {\n await addFavorite.mutateAsync(item);\n }\n }, [existingFavorite, addFavorite, removeFavorite, item]);\n\n return {\n isFavorite: isFavorited,\n favoriteId: existingFavorite?.id,\n isLoading: isLoading || addFavorite.isPending || removeFavorite.isPending,\n toggleFavorite,\n };\n}\n\n/**\n * Hook to access the favorites store directly\n * Useful for reading favorites without API calls\n *\n * @example\n * ```tsx\n * const { getFavorites, isFavorite, clearAll } = useFavoritesStoreHook();\n * const favorites = getFavorites('0x123...');\n * ```\n */\nexport function useFavoritesStoreHook() {\n return useFavoritesStore();\n}\n"]}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
|
|
2
|
-
import type {
|
|
2
|
+
import type { MarketData, PredictionData, MarketStateHistoryData, PaginatedResponse, ApiResponse, MarketFilters } from '../types';
|
|
3
3
|
import { IndexerClient } from '../network/IndexerClient';
|
|
4
|
-
export declare function useMarkets(client: IndexerClient, filters?: MarketFilters, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
5
|
-
export declare function useActiveMarkets(client: IndexerClient, limit?: number, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
6
|
-
export declare function useMarket(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<
|
|
7
|
-
export declare function useMarketPredictions(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<
|
|
8
|
-
export declare function useMarketHistory(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<
|
|
4
|
+
export declare function useMarkets(client: IndexerClient, filters?: MarketFilters, options?: Omit<UseQueryOptions<PaginatedResponse<MarketData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<MarketData>>;
|
|
5
|
+
export declare function useActiveMarkets(client: IndexerClient, limit?: number, options?: Omit<UseQueryOptions<PaginatedResponse<MarketData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<MarketData>>;
|
|
6
|
+
export declare function useMarket(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<MarketData>>, 'queryKey' | 'queryFn'>): UseQueryResult<ApiResponse<MarketData>>;
|
|
7
|
+
export declare function useMarketPredictions(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<PredictionData[]>>, 'queryKey' | 'queryFn'>): UseQueryResult<ApiResponse<PredictionData[]>>;
|
|
8
|
+
export declare function useMarketHistory(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<MarketStateHistoryData[]>>, 'queryKey' | 'queryFn'>): UseQueryResult<ApiResponse<MarketStateHistoryData[]>>;
|
|
9
9
|
export declare function useMarketDetails(client: IndexerClient, marketId: string | undefined): {
|
|
10
|
-
market: UseQueryResult<ApiResponse<
|
|
11
|
-
predictions: UseQueryResult<ApiResponse<
|
|
12
|
-
history: UseQueryResult<ApiResponse<
|
|
10
|
+
market: UseQueryResult<ApiResponse<MarketData>>;
|
|
11
|
+
predictions: UseQueryResult<ApiResponse<PredictionData[]>>;
|
|
12
|
+
history: UseQueryResult<ApiResponse<MarketStateHistoryData[]>>;
|
|
13
13
|
isLoading: boolean;
|
|
14
14
|
isError: boolean;
|
|
15
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMarkets.d.ts","sourceRoot":"","sources":["../../src/hooks/useMarkets.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"useMarkets.d.ts","sourceRoot":"","sources":["../../src/hooks/useMarkets.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAmBzD,wBAAgB,UAAU,CACxB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GACrF,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAU/C;AAgBD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,KAAK,GAAE,MAAW,EAClB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GACrF,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAS/C;AAgBD,wBAAgB,SAAS,CACvB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC/E,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAYzC;AAgBD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GACrF,cAAc,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAY/C;AAgBD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC7F,cAAc,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAYvD;AAeD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B;IACD,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAC/D,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB,CAYA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMarkets.js","sourceRoot":"","sources":["../../src/hooks/useMarkets.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAmC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"useMarkets.js","sourceRoot":"","sources":["../../src/hooks/useMarkets.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * React hooks for market operations\n * Uses React Query for caching and data fetching\n */\n\nimport { useQuery, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport type {\n MarketData,\n PredictionData,\n MarketStateHistoryData,\n PaginatedResponse,\n ApiResponse,\n MarketFilters,\n} from '../types';\nimport { IndexerClient } from '../network/IndexerClient';\n\n/**\n * Get all markets with optional filtering.\n * GET /api/markets\n *\n * @param client - IndexerClient instance (from useIndexer() context)\n * @param filters - Optional market filters (status, dealer, category, limit, offset)\n * @param options - Additional React Query options (excluding queryKey and queryFn)\n * @returns React Query result with paginated market data\n *\n * @example\n * ```tsx\n * const { data, isLoading, error } = useMarkets(\n * client,\n * { status: 'Active', limit: 10 }\n * );\n * ```\n */\nexport function useMarkets(\n client: IndexerClient,\n filters?: MarketFilters,\n options?: Omit<UseQueryOptions<PaginatedResponse<MarketData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<MarketData>> {\n return useQuery({\n queryKey: ['heavymath', 'markets', filters],\n queryFn: async () => {\n return await client.getMarkets(filters);\n },\n staleTime: 2 * 60 * 1000, // 2 minutes\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get active markets only.\n * Convenience hook for the most common use case.\n *\n * @param client - IndexerClient instance\n * @param limit - Maximum number of markets to return (default: 50)\n * @param options - Additional React Query options\n * @returns React Query result with paginated active market data\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useActiveMarkets(client, 20);\n * ```\n */\nexport function useActiveMarkets(\n client: IndexerClient,\n limit: number = 50,\n options?: Omit<UseQueryOptions<PaginatedResponse<MarketData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<MarketData>> {\n return useMarkets(\n client,\n {\n status: 'Active',\n limit,\n },\n options\n );\n}\n\n/**\n * Get a specific market by ID.\n * GET /api/markets/:id\n *\n * @param client - IndexerClient instance\n * @param marketId - The chain-prefixed market ID, or undefined to disable the query\n * @param options - Additional React Query options\n * @returns React Query result with the market data\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useMarket(client, '1-market-123');\n * ```\n */\nexport function useMarket(\n client: IndexerClient,\n marketId: string | undefined,\n options?: Omit<UseQueryOptions<ApiResponse<MarketData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<MarketData>> {\n return useQuery({\n queryKey: ['heavymath', 'market', marketId],\n queryFn: async () => {\n if (!marketId) throw new Error('Market ID is required');\n return await client.getMarket(marketId);\n },\n enabled: !!marketId,\n staleTime: 2 * 60 * 1000,\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get all predictions for a specific market.\n * GET /api/markets/:id/predictions\n *\n * @param client - IndexerClient instance\n * @param marketId - The chain-prefixed market ID, or undefined to disable the query\n * @param options - Additional React Query options\n * @returns React Query result with the market's predictions\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useMarketPredictions(client, '1-market-123');\n * ```\n */\nexport function useMarketPredictions(\n client: IndexerClient,\n marketId: string | undefined,\n options?: Omit<UseQueryOptions<ApiResponse<PredictionData[]>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<PredictionData[]>> {\n return useQuery({\n queryKey: ['heavymath', 'market-predictions', marketId],\n queryFn: async () => {\n if (!marketId) throw new Error('Market ID is required');\n return await client.getMarketPredictions(marketId);\n },\n enabled: !!marketId,\n staleTime: 1 * 60 * 1000, // 1 minute - predictions update frequently\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get state transition history for a market.\n * GET /api/markets/:id/history\n *\n * @param client - IndexerClient instance\n * @param marketId - The chain-prefixed market ID, or undefined to disable the query\n * @param options - Additional React Query options\n * @returns React Query result with the market's state history entries\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useMarketHistory(client, '1-market-123');\n * ```\n */\nexport function useMarketHistory(\n client: IndexerClient,\n marketId: string | undefined,\n options?: Omit<UseQueryOptions<ApiResponse<MarketStateHistoryData[]>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<MarketStateHistoryData[]>> {\n return useQuery({\n queryKey: ['heavymath', 'market-history', marketId],\n queryFn: async () => {\n if (!marketId) throw new Error('Market ID is required');\n return await client.getMarketHistory(marketId);\n },\n enabled: !!marketId,\n staleTime: 5 * 60 * 1000, // 5 minutes - history doesn't change often\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get complete market details (market + predictions + history).\n * Convenience hook that combines multiple parallel requests.\n *\n * @param client - IndexerClient instance\n * @param marketId - The chain-prefixed market ID, or undefined to disable all queries\n * @returns An object containing separate query results for market, predictions, and history, plus aggregate isLoading and isError flags\n *\n * @example\n * ```tsx\n * const { market, predictions, history, isLoading } = useMarketDetails(client, '1-market-123');\n * ```\n */\nexport function useMarketDetails(\n client: IndexerClient,\n marketId: string | undefined\n): {\n market: UseQueryResult<ApiResponse<MarketData>>;\n predictions: UseQueryResult<ApiResponse<PredictionData[]>>;\n history: UseQueryResult<ApiResponse<MarketStateHistoryData[]>>;\n isLoading: boolean;\n isError: boolean;\n} {\n const market = useMarket(client, marketId);\n const predictions = useMarketPredictions(client, marketId);\n const history = useMarketHistory(client, marketId);\n\n return {\n market,\n predictions,\n history,\n isLoading: market.isLoading || predictions.isLoading || history.isLoading,\n isError: market.isError || predictions.isError || history.isError,\n };\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
|
|
2
|
-
import type {
|
|
2
|
+
import type { OracleRequestData, PaginatedResponse, ApiResponse, OracleFilters } from '../types';
|
|
3
3
|
import { IndexerClient } from '../network/IndexerClient';
|
|
4
|
-
export declare function useOracleRequests(client: IndexerClient, filters?: OracleFilters, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
5
|
-
export declare function useOracleRequest(client: IndexerClient, requestId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<
|
|
6
|
-
export declare function useMarketOracle(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
7
|
-
export declare function useTimedOutOracleRequests(client: IndexerClient, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
8
|
-
export declare function usePendingOracleRequests(client: IndexerClient, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
4
|
+
export declare function useOracleRequests(client: IndexerClient, filters?: OracleFilters, options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OracleRequestData>>;
|
|
5
|
+
export declare function useOracleRequest(client: IndexerClient, requestId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>): UseQueryResult<ApiResponse<OracleRequestData>>;
|
|
6
|
+
export declare function useMarketOracle(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OracleRequestData>>;
|
|
7
|
+
export declare function useTimedOutOracleRequests(client: IndexerClient, options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OracleRequestData>>;
|
|
8
|
+
export declare function usePendingOracleRequests(client: IndexerClient, options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OracleRequestData>>;
|
|
9
9
|
//# sourceMappingURL=useOracle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOracle.d.ts","sourceRoot":"","sources":["../../src/hooks/useOracle.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"useOracle.d.ts","sourceRoot":"","sources":["../../src/hooks/useOracle.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAWzD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC5F,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAUtD;AAWD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GACtF,cAAc,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAYhD;AAWD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC5F,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAWtD;AAWD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC5F,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAQtD;AAWD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC5F,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAQtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOracle.js","sourceRoot":"","sources":["../../src/hooks/useOracle.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAmC,MAAM,uBAAuB,CAAC;AAalF,MAAM,UAAU,iBAAiB,CAC/B,MAAqB,EACrB,OAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"useOracle.js","sourceRoot":"","sources":["../../src/hooks/useOracle.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAmC,MAAM,uBAAuB,CAAC;AAalF,MAAM,UAAU,iBAAiB,CAC/B,MAAqB,EACrB,OAAuB,EACvB,OAA6F;IAE7F,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,OAAO,CAAC;QACnD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACxB,KAAK,EAAE,KAAK;QACZ,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,gBAAgB,CAC9B,MAAqB,EACrB,SAA6B,EAC7B,OAAuF;IAEvF,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC;QACpD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC1D,OAAO,MAAM,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,SAAS;QACpB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACxB,KAAK,EAAE,KAAK;QACZ,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,eAAe,CAC7B,MAAqB,EACrB,QAA4B,EAC5B,OAA6F;IAE7F,OAAO,iBAAiB,CACtB,MAAM,EACN;QACE,MAAM,EAAE,QAAQ;KACjB,EACD;QACE,GAAG,OAAO;QACV,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;KAClD,CACF,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,yBAAyB,CACvC,MAAqB,EACrB,OAA6F;IAE7F,OAAO,iBAAiB,CACtB,MAAM,EACN;QACE,QAAQ,EAAE,IAAI;KACf,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,wBAAwB,CACtC,MAAqB,EACrB,OAA6F;IAE7F,OAAO,iBAAiB,CACtB,MAAM,EACN;QACE,QAAQ,EAAE,KAAK;KAChB,EACD,OAAO,CACR,CAAC;AACJ,CAAC","sourcesContent":["/**\n * React hooks for oracle request operations\n * Uses React Query for caching and data fetching\n */\n\nimport { useQuery, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport type { OracleRequestData, PaginatedResponse, ApiResponse, OracleFilters } from '../types';\nimport { IndexerClient } from '../network/IndexerClient';\n\n/**\n * Get oracle requests with optional filtering\n * GET /api/oracle/requests\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useOracleRequests(client, { market: '1-market-123' });\n * ```\n */\nexport function useOracleRequests(\n client: IndexerClient,\n filters?: OracleFilters,\n options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<OracleRequestData>> {\n return useQuery({\n queryKey: ['heavymath', 'oracle-requests', filters],\n queryFn: async () => {\n return await client.getOracleRequests(filters);\n },\n staleTime: 1 * 60 * 1000, // 1 minute\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get a specific oracle request by ID\n * GET /api/oracle/requests/:id\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useOracleRequest(client, '1-market-123-request-0');\n * ```\n */\nexport function useOracleRequest(\n client: IndexerClient,\n requestId: string | undefined,\n options?: Omit<UseQueryOptions<ApiResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<OracleRequestData>> {\n return useQuery({\n queryKey: ['heavymath', 'oracle-request', requestId],\n queryFn: async () => {\n if (!requestId) throw new Error('Request ID is required');\n return await client.getOracleRequest(requestId);\n },\n enabled: !!requestId,\n staleTime: 2 * 60 * 1000,\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get oracle request for a specific market\n * Convenience hook for market's oracle request\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useMarketOracle(client, '1-market-123');\n * ```\n */\nexport function useMarketOracle(\n client: IndexerClient,\n marketId: string | undefined,\n options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<OracleRequestData>> {\n return useOracleRequests(\n client,\n {\n market: marketId,\n },\n {\n ...options,\n enabled: !!marketId && (options?.enabled ?? true),\n }\n );\n}\n\n/**\n * Get timed out oracle requests\n * Convenience hook for monitoring stale oracle requests\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useTimedOutOracleRequests(client);\n * ```\n */\nexport function useTimedOutOracleRequests(\n client: IndexerClient,\n options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<OracleRequestData>> {\n return useOracleRequests(\n client,\n {\n timedOut: true,\n },\n options\n );\n}\n\n/**\n * Get pending oracle requests (not responded yet)\n * Convenience hook for monitoring active oracle requests\n *\n * @example\n * ```tsx\n * const { data, isLoading } = usePendingOracleRequests(client);\n * ```\n */\nexport function usePendingOracleRequests(\n client: IndexerClient,\n options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<OracleRequestData>> {\n return useOracleRequests(\n client,\n {\n timedOut: false,\n },\n options\n );\n}\n"]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
|
|
2
|
-
import type {
|
|
2
|
+
import type { PredictionData, PaginatedResponse, ApiResponse, PredictionFilters } from '../types';
|
|
3
3
|
import { IndexerClient } from '../network/IndexerClient';
|
|
4
|
-
export declare function usePredictions(client: IndexerClient, filters?: PredictionFilters, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
5
|
-
export declare function useUserPredictions(client: IndexerClient, walletAddress: string | undefined, filters?: Omit<PredictionFilters, 'user'>, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
6
|
-
export declare function useActiveBets(client: IndexerClient, walletAddress: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
7
|
-
export declare function usePastBets(client: IndexerClient, walletAddress: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
8
|
-
export declare function usePrediction(client: IndexerClient, predictionId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<
|
|
4
|
+
export declare function usePredictions(client: IndexerClient, filters?: PredictionFilters, options?: Omit<UseQueryOptions<PaginatedResponse<PredictionData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<PredictionData>>;
|
|
5
|
+
export declare function useUserPredictions(client: IndexerClient, walletAddress: string | undefined, filters?: Omit<PredictionFilters, 'user'>, options?: Omit<UseQueryOptions<PaginatedResponse<PredictionData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<PredictionData>>;
|
|
6
|
+
export declare function useActiveBets(client: IndexerClient, walletAddress: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<PredictionData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<PredictionData>>;
|
|
7
|
+
export declare function usePastBets(client: IndexerClient, walletAddress: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<PredictionData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<PredictionData>>;
|
|
8
|
+
export declare function usePrediction(client: IndexerClient, predictionId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<PredictionData>>, 'queryKey' | 'queryFn'>): UseQueryResult<ApiResponse<PredictionData>>;
|
|
9
9
|
export declare function useUserBettingHistory(client: IndexerClient, walletAddress: string | undefined): {
|
|
10
|
-
active: UseQueryResult<PaginatedResponse<
|
|
11
|
-
claimed: UseQueryResult<PaginatedResponse<
|
|
10
|
+
active: UseQueryResult<PaginatedResponse<PredictionData>>;
|
|
11
|
+
claimed: UseQueryResult<PaginatedResponse<PredictionData>>;
|
|
12
12
|
isLoading: boolean;
|
|
13
13
|
isError: boolean;
|
|
14
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePredictions.d.ts","sourceRoot":"","sources":["../../src/hooks/usePredictions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"usePredictions.d.ts","sourceRoot":"","sources":["../../src/hooks/usePredictions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAczD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GACzF,cAAc,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAUnD;AAWD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,EACzC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GACzF,cAAc,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAYnD;AAUD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GACzF,cAAc,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAUnD;AAUD,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GACzF,cAAc,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAUnD;AAWD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GACnF,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAY7C;AAWD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC;IACD,MAAM,EAAE,cAAc,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1D,OAAO,EAAE,cAAc,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB,CAUA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePredictions.js","sourceRoot":"","sources":["../../src/hooks/usePredictions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAmC,MAAM,uBAAuB,CAAC;AAgBlF,MAAM,UAAU,cAAc,CAC5B,MAAqB,EACrB,OAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"usePredictions.js","sourceRoot":"","sources":["../../src/hooks/usePredictions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAmC,MAAM,uBAAuB,CAAC;AAgBlF,MAAM,UAAU,cAAc,CAC5B,MAAqB,EACrB,OAA2B,EAC3B,OAA0F;IAE1F,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC;QAC/C,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACxB,KAAK,EAAE,KAAK;QACZ,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,kBAAkB,CAChC,MAAqB,EACrB,aAAiC,EACjC,OAAyC,EACzC,OAA0F;IAE1F,OAAO,cAAc,CACnB,MAAM,EACN;QACE,IAAI,EAAE,aAAa;QACnB,GAAG,OAAO;KACX,EACD;QACE,GAAG,OAAO;QACV,OAAO,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;KACvD,CACF,CAAC;AACJ,CAAC;AAUD,MAAM,UAAU,aAAa,CAC3B,MAAqB,EACrB,aAAiC,EACjC,OAA0F;IAE1F,OAAO,kBAAkB,CACvB,MAAM,EACN,aAAa,EACb;QACE,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,GAAG;KACX,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAUD,MAAM,UAAU,WAAW,CACzB,MAAqB,EACrB,aAAiC,EACjC,OAA0F;IAE1F,OAAO,kBAAkB,CACvB,MAAM,EACN,aAAa,EACb;QACE,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,GAAG;KACX,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,aAAa,CAC3B,MAAqB,EACrB,YAAgC,EAChC,OAAoF;IAEpF,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC;QACnD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAChE,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,YAAY;QACvB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACxB,KAAK,EAAE,KAAK;QACZ,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,qBAAqB,CACnC,MAAqB,EACrB,aAAiC;IAOjC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAEnD,OAAO;QACL,MAAM;QACN,OAAO;QACP,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;QAChD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;KAC3C,CAAC;AACJ,CAAC","sourcesContent":["/**\n * React hooks for prediction operations\n * Uses React Query for caching and data fetching\n */\n\nimport { useQuery, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport type { PredictionData, PaginatedResponse, ApiResponse, PredictionFilters } from '../types';\nimport { IndexerClient } from '../network/IndexerClient';\n\n/**\n * Get predictions with optional filtering\n * GET /api/predictions\n *\n * @example\n * ```tsx\n * const { data, isLoading } = usePredictions(\n * client,\n * { user: '0x123...', claimed: false }\n * );\n * ```\n */\nexport function usePredictions(\n client: IndexerClient,\n filters?: PredictionFilters,\n options?: Omit<UseQueryOptions<PaginatedResponse<PredictionData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<PredictionData>> {\n return useQuery({\n queryKey: ['heavymath', 'predictions', filters],\n queryFn: async () => {\n return await client.getPredictions(filters);\n },\n staleTime: 1 * 60 * 1000, // 1 minute\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get user's predictions\n * Convenience hook for user's betting history\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useUserPredictions(client, '0x123...');\n * ```\n */\nexport function useUserPredictions(\n client: IndexerClient,\n walletAddress: string | undefined,\n filters?: Omit<PredictionFilters, 'user'>,\n options?: Omit<UseQueryOptions<PaginatedResponse<PredictionData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<PredictionData>> {\n return usePredictions(\n client,\n {\n user: walletAddress,\n ...filters,\n },\n {\n ...options,\n enabled: !!walletAddress && (options?.enabled ?? true),\n }\n );\n}\n\n/**\n * Get user's active bets (unclaimed predictions)\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useActiveBets(client, '0x123...');\n * ```\n */\nexport function useActiveBets(\n client: IndexerClient,\n walletAddress: string | undefined,\n options?: Omit<UseQueryOptions<PaginatedResponse<PredictionData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<PredictionData>> {\n return useUserPredictions(\n client,\n walletAddress,\n {\n claimed: false,\n limit: 100,\n },\n options\n );\n}\n\n/**\n * Get user's past bets (claimed predictions)\n *\n * @example\n * ```tsx\n * const { data, isLoading } = usePastBets(client, '0x123...');\n * ```\n */\nexport function usePastBets(\n client: IndexerClient,\n walletAddress: string | undefined,\n options?: Omit<UseQueryOptions<PaginatedResponse<PredictionData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<PredictionData>> {\n return useUserPredictions(\n client,\n walletAddress,\n {\n claimed: true,\n limit: 100,\n },\n options\n );\n}\n\n/**\n * Get a specific prediction by ID\n * GET /api/predictions/:id\n *\n * @example\n * ```tsx\n * const { data, isLoading } = usePrediction(client, '1-market-123-0xuser...');\n * ```\n */\nexport function usePrediction(\n client: IndexerClient,\n predictionId: string | undefined,\n options?: Omit<UseQueryOptions<ApiResponse<PredictionData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<PredictionData>> {\n return useQuery({\n queryKey: ['heavymath', 'prediction', predictionId],\n queryFn: async () => {\n if (!predictionId) throw new Error('Prediction ID is required');\n return await client.getPrediction(predictionId);\n },\n enabled: !!predictionId,\n staleTime: 2 * 60 * 1000,\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get complete betting history for a user (active + claimed)\n * Convenience hook that combines active and past bets\n *\n * @example\n * ```tsx\n * const { active, claimed, isLoading } = useUserBettingHistory(client, '0x123...');\n * ```\n */\nexport function useUserBettingHistory(\n client: IndexerClient,\n walletAddress: string | undefined\n): {\n active: UseQueryResult<PaginatedResponse<PredictionData>>;\n claimed: UseQueryResult<PaginatedResponse<PredictionData>>;\n isLoading: boolean;\n isError: boolean;\n} {\n const active = useActiveBets(client, walletAddress);\n const claimed = usePastBets(client, walletAddress);\n\n return {\n active,\n claimed,\n isLoading: active.isLoading || claimed.isLoading,\n isError: active.isError || claimed.isError,\n };\n}\n"]}
|
package/dist/hooks/useSSE.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSSE.js","sourceRoot":"","sources":["../../src/hooks/useSSE.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSSE.js","sourceRoot":"","sources":["../../src/hooks/useSSE.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * React hooks for Server-Sent Events (SSE) subscriptions\n * Provides real-time updates from the Heavymath Indexer\n */\n\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport type {\n SubscriptionChannel,\n SSEFilters,\n SSEMessage,\n SSEDataUpdateMessage,\n SSEConnectionState,\n SSEEventType,\n} from '../types';\n\n/**\n * Options for SSE subscription\n */\nexport interface UseSSEOptions {\n /** Subscription channel */\n channel?: SubscriptionChannel;\n /** Subscription filters */\n filters?: SSEFilters;\n /** Whether to automatically reconnect on disconnect */\n autoReconnect?: boolean;\n /** Reconnection delay in ms (default: 3000) */\n reconnectDelay?: number;\n /** Maximum reconnection attempts (default: 5) */\n maxReconnectAttempts?: number;\n /** Callback for incoming events */\n onEvent?: (event: SSEDataUpdateMessage) => void;\n /** Callback for connection state changes */\n onStateChange?: (state: SSEConnectionState) => void;\n /** Callback for errors */\n onError?: (error: Error) => void;\n /** Whether to automatically invalidate React Query caches */\n invalidateQueries?: boolean;\n /** Whether the subscription is enabled */\n enabled?: boolean;\n}\n\n/**\n * Return type for useSSE hook\n */\nexport interface UseSSEReturn {\n /** Current connection state */\n connectionState: SSEConnectionState;\n /** Last received event */\n lastEvent: SSEDataUpdateMessage | null;\n /** All received events */\n events: SSEDataUpdateMessage[];\n /** Client ID assigned by server */\n clientId: string | null;\n /** Subscription ID */\n subscriptionId: string | null;\n /** Error if any */\n error: Error | null;\n /** Manually reconnect */\n reconnect: () => void;\n /** Manually disconnect */\n disconnect: () => void;\n /** Clear events history */\n clearEvents: () => void;\n}\n\n/**\n * Hook for subscribing to SSE events from the indexer\n *\n * @example\n * ```tsx\n * // Subscribe to all market events\n * const { connectionState, events, lastEvent } = useSSE(\n * 'http://localhost:42069',\n * { channel: 'markets' }\n * );\n *\n * // Subscribe to a specific market's events\n * const { connectionState, lastEvent } = useSSE(\n * 'http://localhost:42069',\n * {\n * channel: 'market',\n * filters: { marketId: '1-market-123' },\n * onEvent: (event) => console.log('New event:', event),\n * }\n * );\n *\n * // Subscribe to user's predictions\n * const { events } = useSSE(\n * 'http://localhost:42069',\n * {\n * channel: 'predictions',\n * filters: { user: '0x123...' },\n * invalidateQueries: true, // Auto-refresh React Query caches\n * }\n * );\n * ```\n */\nexport function useSSE(endpointUrl: string, options: UseSSEOptions = {}): UseSSEReturn {\n const {\n channel = 'markets',\n filters = {},\n autoReconnect = true,\n reconnectDelay = 3000,\n maxReconnectAttempts = 5,\n onEvent,\n onStateChange,\n onError,\n invalidateQueries = false,\n enabled = true,\n } = options;\n\n const [connectionState, setConnectionState] = useState<SSEConnectionState>('disconnected');\n const [lastEvent, setLastEvent] = useState<SSEDataUpdateMessage | null>(null);\n const [events, setEvents] = useState<SSEDataUpdateMessage[]>([]);\n const [clientId, setClientId] = useState<string | null>(null);\n const [subscriptionId, setSubscriptionId] = useState<string | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n const eventSourceRef = useRef<EventSource | null>(null);\n const reconnectAttemptsRef = useRef(0);\n const reconnectTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const queryClient = useQueryClient();\n\n // Update connection state and notify callback\n const updateConnectionState = useCallback(\n (state: SSEConnectionState) => {\n setConnectionState(state);\n onStateChange?.(state);\n },\n [onStateChange]\n );\n\n // Handle incoming SSE message\n const handleMessage = useCallback(\n (messageEvent: MessageEvent) => {\n try {\n const message: SSEMessage = JSON.parse(messageEvent.data);\n\n if (message.type === 'connected') {\n setClientId(message.clientId);\n setSubscriptionId(message.subscriptionId);\n updateConnectionState('connected');\n reconnectAttemptsRef.current = 0;\n } else if (message.type === 'data_update') {\n const dataMessage = message as SSEDataUpdateMessage;\n setLastEvent(dataMessage);\n setEvents(prev => [...prev, dataMessage]);\n onEvent?.(dataMessage);\n\n // Invalidate relevant React Query caches\n if (invalidateQueries) {\n invalidateQueryCaches(queryClient, dataMessage.eventType, dataMessage.data);\n }\n }\n // Heartbeat messages are handled silently\n } catch (err) {\n console.error('[SSE] Failed to parse message:', err);\n }\n },\n [onEvent, invalidateQueries, queryClient, updateConnectionState]\n );\n\n // Connect to SSE endpoint\n const connect = useCallback(() => {\n if (!enabled) return;\n\n // Close existing connection\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n }\n\n // Build URL with query params\n const url = new URL(`${endpointUrl}/api/events`);\n url.searchParams.set('channel', channel);\n if (filters.marketId) url.searchParams.set('marketId', filters.marketId);\n if (filters.dealer) url.searchParams.set('dealer', filters.dealer);\n if (filters.user) url.searchParams.set('user', filters.user);\n if (filters.category) url.searchParams.set('category', filters.category);\n\n updateConnectionState('connecting');\n setError(null);\n\n try {\n const eventSource = new EventSource(url.toString());\n eventSourceRef.current = eventSource;\n\n // Handle all message types\n eventSource.onmessage = handleMessage;\n\n // Handle specific event types\n eventSource.addEventListener('connected', handleMessage);\n eventSource.addEventListener('data_update', handleMessage);\n eventSource.addEventListener('heartbeat', () => {\n // Heartbeat received - connection is alive\n });\n eventSource.addEventListener('subscription_confirmed', handleMessage);\n\n eventSource.onerror = () => {\n updateConnectionState('error');\n const err = new Error('SSE connection error');\n setError(err);\n onError?.(err);\n\n // Attempt reconnection\n if (autoReconnect && reconnectAttemptsRef.current < maxReconnectAttempts) {\n reconnectAttemptsRef.current++;\n console.log(\n `[SSE] Reconnecting (attempt ${reconnectAttemptsRef.current}/${maxReconnectAttempts})...`\n );\n\n reconnectTimeoutRef.current = setTimeout(() => {\n connect();\n }, reconnectDelay);\n } else if (reconnectAttemptsRef.current >= maxReconnectAttempts) {\n console.error('[SSE] Max reconnection attempts reached');\n updateConnectionState('disconnected');\n }\n };\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to connect to SSE');\n setError(error);\n onError?.(error);\n updateConnectionState('error');\n }\n }, [\n enabled,\n endpointUrl,\n channel,\n filters,\n handleMessage,\n autoReconnect,\n maxReconnectAttempts,\n reconnectDelay,\n updateConnectionState,\n onError,\n ]);\n\n // Disconnect from SSE endpoint\n const disconnect = useCallback(() => {\n if (reconnectTimeoutRef.current) {\n clearTimeout(reconnectTimeoutRef.current);\n reconnectTimeoutRef.current = null;\n }\n\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n\n setClientId(null);\n setSubscriptionId(null);\n updateConnectionState('disconnected');\n }, [updateConnectionState]);\n\n // Reconnect\n const reconnect = useCallback(() => {\n reconnectAttemptsRef.current = 0;\n disconnect();\n connect();\n }, [disconnect, connect]);\n\n // Clear events history\n const clearEvents = useCallback(() => {\n setEvents([]);\n setLastEvent(null);\n }, []);\n\n // Effect to connect/disconnect based on enabled state\n useEffect(() => {\n if (enabled) {\n connect();\n } else {\n disconnect();\n }\n\n return () => {\n disconnect();\n };\n }, [enabled, connect, disconnect]);\n\n // Effect to reconnect when filters change\n useEffect(() => {\n if (enabled && connectionState === 'connected') {\n reconnect();\n }\n }, [channel, JSON.stringify(filters), enabled, connectionState, reconnect]);\n\n return {\n connectionState,\n lastEvent,\n events,\n clientId,\n subscriptionId,\n error,\n reconnect,\n disconnect,\n clearEvents,\n };\n}\n\n/**\n * Hook for subscribing to market updates with auto-refresh\n * Convenience wrapper around useSSE for the most common use case\n *\n * @example\n * ```tsx\n * const { lastEvent, connectionState } = useMarketUpdates(\n * 'http://localhost:42069',\n * '1-market-123'\n * );\n * ```\n */\nexport function useMarketUpdates(\n endpointUrl: string,\n marketId: string | undefined,\n options: Omit<UseSSEOptions, 'channel' | 'filters'> = {}\n): UseSSEReturn {\n return useSSE(endpointUrl, {\n ...options,\n channel: 'market',\n filters: { marketId },\n enabled: !!marketId && (options.enabled ?? true),\n });\n}\n\n/**\n * Hook for subscribing to all market events\n *\n * @example\n * ```tsx\n * const { events, connectionState } = useAllMarketUpdates('http://localhost:42069');\n * ```\n */\nexport function useAllMarketUpdates(\n endpointUrl: string,\n options: Omit<UseSSEOptions, 'channel'> = {}\n): UseSSEReturn {\n return useSSE(endpointUrl, {\n ...options,\n channel: 'markets',\n });\n}\n\n/**\n * Hook for subscribing to user's prediction updates\n *\n * @example\n * ```tsx\n * const { lastEvent } = useUserPredictionUpdates(\n * 'http://localhost:42069',\n * '0x123...'\n * );\n * ```\n */\nexport function useUserPredictionUpdates(\n endpointUrl: string,\n userAddress: string | undefined,\n options: Omit<UseSSEOptions, 'channel' | 'filters'> = {}\n): UseSSEReturn {\n return useSSE(endpointUrl, {\n ...options,\n channel: 'predictions',\n filters: { user: userAddress },\n enabled: !!userAddress && (options.enabled ?? true),\n });\n}\n\n/**\n * Invalidate React Query caches based on event type\n */\nfunction invalidateQueryCaches(\n queryClient: ReturnType<typeof useQueryClient>,\n eventType: SSEEventType,\n data: unknown\n): void {\n const eventData = data as Record<string, unknown>;\n\n switch (eventType) {\n case 'MarketCreated':\n case 'MarketResolved':\n case 'MarketCancelled':\n case 'MarketAbandoned':\n case 'DealerFeeSet':\n // Invalidate markets list and specific market\n queryClient.invalidateQueries({ queryKey: ['heavymath', 'markets'] });\n if (eventData.marketId) {\n queryClient.invalidateQueries({\n queryKey: ['heavymath', 'market', eventData.marketId],\n });\n }\n break;\n\n case 'PredictionPlaced':\n case 'PredictionUpdated':\n case 'WinningsClaimed':\n case 'RefundClaimed':\n // Invalidate predictions\n queryClient.invalidateQueries({ queryKey: ['heavymath', 'predictions'] });\n if (eventData.marketId) {\n queryClient.invalidateQueries({\n queryKey: ['heavymath', 'market-predictions', eventData.marketId],\n });\n }\n break;\n\n case 'LicenseIssued':\n case 'LicenseTransferred':\n case 'PermissionsSet':\n // Invalidate dealers\n queryClient.invalidateQueries({ queryKey: ['heavymath', 'dealers'] });\n break;\n\n case 'OracleRegistered':\n case 'OracleDataUpdated':\n // Invalidate oracle requests\n queryClient.invalidateQueries({ queryKey: ['heavymath', 'oracle'] });\n break;\n\n case 'DealerFeesWithdrawn':\n // Invalidate withdrawals\n queryClient.invalidateQueries({ queryKey: ['heavymath', 'withdrawals'] });\n break;\n }\n}\n"]}
|
package/dist/hooks/useStats.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
|
|
2
|
-
import type {
|
|
2
|
+
import type { MarketStatsData, HealthData, ApiResponse } from '../types';
|
|
3
3
|
import { IndexerClient } from '../network/IndexerClient';
|
|
4
|
-
export declare function useMarketStats(client: IndexerClient, options?: Omit<UseQueryOptions<ApiResponse<
|
|
5
|
-
export declare function useHealth(client: IndexerClient, options?: Omit<UseQueryOptions<ApiResponse<
|
|
4
|
+
export declare function useMarketStats(client: IndexerClient, options?: Omit<UseQueryOptions<ApiResponse<MarketStatsData>>, 'queryKey' | 'queryFn'>): UseQueryResult<ApiResponse<MarketStatsData>>;
|
|
5
|
+
export declare function useHealth(client: IndexerClient, options?: Omit<UseQueryOptions<ApiResponse<HealthData>>, 'queryKey' | 'queryFn'>): UseQueryResult<ApiResponse<HealthData>>;
|
|
6
6
|
//# sourceMappingURL=useStats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStats.d.ts","sourceRoot":"","sources":["../../src/hooks/useStats.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"useStats.d.ts","sourceRoot":"","sources":["../../src/hooks/useStats.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAczD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GACpF,cAAc,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAU9C;AAcD,wBAAgB,SAAS,CACvB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC/E,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAUzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStats.js","sourceRoot":"","sources":["../../src/hooks/useStats.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAmC,MAAM,uBAAuB,CAAC;AAgBlF,MAAM,UAAU,cAAc,CAC5B,MAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"useStats.js","sourceRoot":"","sources":["../../src/hooks/useStats.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAmC,MAAM,uBAAuB,CAAC;AAgBlF,MAAM,UAAU,cAAc,CAC5B,MAAqB,EACrB,OAAqF;IAErF,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;QACvC,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;QACvC,CAAC;QACD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACxB,KAAK,EAAE,KAAK;QACZ,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAcD,MAAM,UAAU,SAAS,CACvB,MAAqB,EACrB,OAAgF;IAEhF,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;QACjC,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,CAAC;QACD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACxB,KAAK,EAAE,KAAK;QACZ,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * React hooks for analytics and statistics operations\n * Uses React Query for caching and data fetching\n */\n\nimport { useQuery, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport type { MarketStatsData, HealthData, ApiResponse } from '../types';\nimport { IndexerClient } from '../network/IndexerClient';\n\n/**\n * Get market statistics\n * GET /api/stats/markets\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useMarketStats(client);\n * if (data?.success) {\n * // data.data.total, data.data.byStatus, etc.\n * }\n * ```\n */\nexport function useMarketStats(\n client: IndexerClient,\n options?: Omit<UseQueryOptions<ApiResponse<MarketStatsData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<MarketStatsData>> {\n return useQuery({\n queryKey: ['heavymath', 'market-stats'],\n queryFn: async () => {\n return await client.getMarketStats();\n },\n staleTime: 5 * 60 * 1000, // 5 minutes - stats don't change frequently\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get health status of the indexer\n * GET /api/health\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useHealth(client);\n * if (data?.success) {\n * // data.data.status, data.data.timestamp\n * }\n * ```\n */\nexport function useHealth(\n client: IndexerClient,\n options?: Omit<UseQueryOptions<ApiResponse<HealthData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<HealthData>> {\n return useQuery({\n queryKey: ['heavymath', 'health'],\n queryFn: async () => {\n return await client.getHealth();\n },\n staleTime: 1 * 60 * 1000, // 1 minute\n retry: false,\n ...options,\n });\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
|
|
2
|
-
import type {
|
|
2
|
+
import type { FeeWithdrawalData, PaginatedResponse, WithdrawalFilters } from '../types';
|
|
3
3
|
import { IndexerClient } from '../network/IndexerClient';
|
|
4
|
-
export declare function useWithdrawals(client: IndexerClient, filters?: WithdrawalFilters, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
5
|
-
export declare function useDealerWithdrawals(client: IndexerClient, dealerAddress: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
6
|
-
export declare function useSystemWithdrawals(client: IndexerClient, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
7
|
-
export declare function useMarketWithdrawals(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<
|
|
4
|
+
export declare function useWithdrawals(client: IndexerClient, filters?: WithdrawalFilters, options?: Omit<UseQueryOptions<PaginatedResponse<FeeWithdrawalData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<FeeWithdrawalData>>;
|
|
5
|
+
export declare function useDealerWithdrawals(client: IndexerClient, dealerAddress: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<FeeWithdrawalData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<FeeWithdrawalData>>;
|
|
6
|
+
export declare function useSystemWithdrawals(client: IndexerClient, options?: Omit<UseQueryOptions<PaginatedResponse<FeeWithdrawalData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<FeeWithdrawalData>>;
|
|
7
|
+
export declare function useMarketWithdrawals(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<FeeWithdrawalData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<FeeWithdrawalData>>;
|
|
8
8
|
//# sourceMappingURL=useWithdrawals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWithdrawals.d.ts","sourceRoot":"","sources":["../../src/hooks/useWithdrawals.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"useWithdrawals.d.ts","sourceRoot":"","sources":["../../src/hooks/useWithdrawals.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAczD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC5F,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAUtD;AAWD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC5F,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAYtD;AAWD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC5F,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAQtD;AAWD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC5F,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAWtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWithdrawals.js","sourceRoot":"","sources":["../../src/hooks/useWithdrawals.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAmC,MAAM,uBAAuB,CAAC;AAgBlF,MAAM,UAAU,cAAc,CAC5B,MAAqB,EACrB,OAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"useWithdrawals.js","sourceRoot":"","sources":["../../src/hooks/useWithdrawals.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAmC,MAAM,uBAAuB,CAAC;AAgBlF,MAAM,UAAU,cAAc,CAC5B,MAAqB,EACrB,OAA2B,EAC3B,OAA6F;IAE7F,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC;QAC/C,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACxB,KAAK,EAAE,KAAK;QACZ,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,aAAiC,EACjC,OAA6F;IAE7F,OAAO,cAAc,CACnB,MAAM,EACN;QACE,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,QAAQ;KACf,EACD;QACE,GAAG,OAAO;QACV,OAAO,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;KACvD,CACF,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,OAA6F;IAE7F,OAAO,cAAc,CACnB,MAAM,EACN;QACE,IAAI,EAAE,QAAQ;KACf,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,QAA4B,EAC5B,OAA6F;IAE7F,OAAO,cAAc,CACnB,MAAM,EACN;QACE,MAAM,EAAE,QAAQ;KACjB,EACD;QACE,GAAG,OAAO;QACV,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;KAClD,CACF,CAAC;AACJ,CAAC","sourcesContent":["/**\n * React hooks for fee withdrawal operations\n * Uses React Query for caching and data fetching\n */\n\nimport { useQuery, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport type { FeeWithdrawalData, PaginatedResponse, WithdrawalFilters } from '../types';\nimport { IndexerClient } from '../network/IndexerClient';\n\n/**\n * Get fee withdrawals with optional filtering\n * GET /api/withdrawals\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useWithdrawals(\n * client,\n * { withdrawer: '0x123...', type: 'dealer' }\n * );\n * ```\n */\nexport function useWithdrawals(\n client: IndexerClient,\n filters?: WithdrawalFilters,\n options?: Omit<UseQueryOptions<PaginatedResponse<FeeWithdrawalData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<FeeWithdrawalData>> {\n return useQuery({\n queryKey: ['heavymath', 'withdrawals', filters],\n queryFn: async () => {\n return await client.getWithdrawals(filters);\n },\n staleTime: 2 * 60 * 1000, // 2 minutes\n retry: false,\n ...options,\n });\n}\n\n/**\n * Get dealer withdrawals for a specific address\n * Convenience hook for dealer's withdrawal history\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useDealerWithdrawals(client, '0x123...');\n * ```\n */\nexport function useDealerWithdrawals(\n client: IndexerClient,\n dealerAddress: string | undefined,\n options?: Omit<UseQueryOptions<PaginatedResponse<FeeWithdrawalData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<FeeWithdrawalData>> {\n return useWithdrawals(\n client,\n {\n withdrawer: dealerAddress,\n type: 'dealer',\n },\n {\n ...options,\n enabled: !!dealerAddress && (options?.enabled ?? true),\n }\n );\n}\n\n/**\n * Get system withdrawals\n * Convenience hook for system fee withdrawals\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useSystemWithdrawals(client);\n * ```\n */\nexport function useSystemWithdrawals(\n client: IndexerClient,\n options?: Omit<UseQueryOptions<PaginatedResponse<FeeWithdrawalData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<FeeWithdrawalData>> {\n return useWithdrawals(\n client,\n {\n type: 'system',\n },\n options\n );\n}\n\n/**\n * Get withdrawals for a specific market\n * Convenience hook for market-specific withdrawals\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useMarketWithdrawals(client, '1-market-123');\n * ```\n */\nexport function useMarketWithdrawals(\n client: IndexerClient,\n marketId: string | undefined,\n options?: Omit<UseQueryOptions<PaginatedResponse<FeeWithdrawalData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<PaginatedResponse<FeeWithdrawalData>> {\n return useWithdrawals(\n client,\n {\n market: marketId,\n },\n {\n ...options,\n enabled: !!marketId && (options?.enabled ?? true),\n }\n );\n}\n"]}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC","sourcesContent":["/**\n * @heavymath/indexer_client\n * React and React Native compatible client library for Heavymath Prediction Market Indexer API\n */\n\n// Type definitions\nexport * from './types';\n\n// Network layer\nexport * from './network';\n\n// Business layer\nexport * from './business';\n\n// React hooks\nexport * from './hooks';\n\n// Zustand stores\nexport * from './stores';\n"]}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import type { NetworkClient } from '@sudobility/types';
|
|
2
|
-
import type { ApiResponse, PaginatedResponse,
|
|
2
|
+
import type { ApiResponse, PaginatedResponse, MarketData, PredictionData, DealerNftData, DealerPermissionData, MarketStateHistoryData, FeeWithdrawalData, OracleRequestData, MarketStatsData, HealthData, MarketFilters, PredictionFilters, DealerFilters, WithdrawalFilters, OracleFilters, WalletFavoriteData, WalletFavoritesFilters, CreateFavoriteRequest } from '../types';
|
|
3
3
|
export declare class IndexerClient {
|
|
4
4
|
private readonly baseUrl;
|
|
5
5
|
private readonly networkClient;
|
|
6
6
|
constructor(endpointUrl: string, networkClient: NetworkClient);
|
|
7
|
-
getMarkets(filters?: MarketFilters): Promise<PaginatedResponse<
|
|
8
|
-
getMarket(id: string): Promise<ApiResponse<
|
|
9
|
-
getMarketPredictions(marketId: string): Promise<ApiResponse<
|
|
10
|
-
getMarketHistory(marketId: string): Promise<ApiResponse<
|
|
11
|
-
getPredictions(filters?: PredictionFilters): Promise<PaginatedResponse<
|
|
12
|
-
getPrediction(id: string): Promise<ApiResponse<
|
|
13
|
-
getDealers(filters?: DealerFilters): Promise<PaginatedResponse<
|
|
14
|
-
getDealer(id: string): Promise<ApiResponse<
|
|
15
|
-
getDealerPermissions(dealerId: string): Promise<ApiResponse<
|
|
16
|
-
getDealerMarkets(dealerId: string): Promise<ApiResponse<
|
|
17
|
-
getWithdrawals(filters?: WithdrawalFilters): Promise<PaginatedResponse<
|
|
18
|
-
getOracleRequests(filters?: OracleFilters): Promise<PaginatedResponse<
|
|
19
|
-
getOracleRequest(id: string): Promise<ApiResponse<
|
|
7
|
+
getMarkets(filters?: MarketFilters): Promise<PaginatedResponse<MarketData>>;
|
|
8
|
+
getMarket(id: string): Promise<ApiResponse<MarketData>>;
|
|
9
|
+
getMarketPredictions(marketId: string): Promise<ApiResponse<PredictionData[]>>;
|
|
10
|
+
getMarketHistory(marketId: string): Promise<ApiResponse<MarketStateHistoryData[]>>;
|
|
11
|
+
getPredictions(filters?: PredictionFilters): Promise<PaginatedResponse<PredictionData>>;
|
|
12
|
+
getPrediction(id: string): Promise<ApiResponse<PredictionData>>;
|
|
13
|
+
getDealers(filters?: DealerFilters): Promise<PaginatedResponse<DealerNftData>>;
|
|
14
|
+
getDealer(id: string): Promise<ApiResponse<DealerNftData>>;
|
|
15
|
+
getDealerPermissions(dealerId: string): Promise<ApiResponse<DealerPermissionData[]>>;
|
|
16
|
+
getDealerMarkets(dealerId: string): Promise<ApiResponse<MarketData[]>>;
|
|
17
|
+
getWithdrawals(filters?: WithdrawalFilters): Promise<PaginatedResponse<FeeWithdrawalData>>;
|
|
18
|
+
getOracleRequests(filters?: OracleFilters): Promise<PaginatedResponse<OracleRequestData>>;
|
|
19
|
+
getOracleRequest(id: string): Promise<ApiResponse<OracleRequestData>>;
|
|
20
20
|
getFavorites(walletAddress: string, filters?: WalletFavoritesFilters): Promise<PaginatedResponse<WalletFavoriteData>>;
|
|
21
21
|
addFavorite(walletAddress: string, favorite: CreateFavoriteRequest): Promise<ApiResponse<WalletFavoriteData>>;
|
|
22
22
|
removeFavorite(walletAddress: string, favoriteId: number): Promise<ApiResponse<void>>;
|
|
23
|
-
getMarketStats(): Promise<ApiResponse<
|
|
24
|
-
getHealth(): Promise<ApiResponse<
|
|
23
|
+
getMarketStats(): Promise<ApiResponse<MarketStatsData>>;
|
|
24
|
+
getHealth(): Promise<ApiResponse<HealthData>>;
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=IndexerClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexerClient.d.ts","sourceRoot":"","sources":["../../src/network/IndexerClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IndexerClient.d.ts","sourceRoot":"","sources":["../../src/network/IndexerClient.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAwClB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAOlC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IAiBvD,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IA+B3E,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAoBvD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;IAoB9E,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAwBlF,cAAc,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IA+BvF,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAwB/D,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IA6B9E,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAoB1D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAoBpF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IAwBtE,cAAc,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAmC1F,iBAAiB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IA8BzF,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAyBrE,YAAY,CAChB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAgC3C,WAAW,CACf,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAsBrC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IA0BrF,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAmBvD,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;CAWpD"}
|
|
@@ -3,10 +3,11 @@ function buildUrl(baseUrl, path) {
|
|
|
3
3
|
const fullPath = path.startsWith('/') ? path : `/${path}`;
|
|
4
4
|
return `${base}${fullPath}`;
|
|
5
5
|
}
|
|
6
|
-
function handleApiError(response, operation) {
|
|
6
|
+
function handleApiError(response, operation, url) {
|
|
7
7
|
const data = response.data;
|
|
8
8
|
const errorMessage = data?.error || response.statusText || `Failed to ${operation}`;
|
|
9
|
-
|
|
9
|
+
const urlSuffix = url ? ` [${url}]` : '';
|
|
10
|
+
return new Error(`API Error (${response.status}): ${errorMessage}${urlSuffix}`);
|
|
10
11
|
}
|
|
11
12
|
export class IndexerClient {
|
|
12
13
|
constructor(endpointUrl, networkClient) {
|