@sudobility/heavymath_indexer_client 0.0.31 → 0.0.33
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/dist/hooks/useOracle.d.ts +5 -1
- package/dist/hooks/useOracle.d.ts.map +1 -1
- package/dist/hooks/useOracle.js +27 -0
- package/dist/hooks/useOracle.js.map +1 -1
- package/dist/network/IndexerClient.d.ts +4 -1
- package/dist/network/IndexerClient.d.ts.map +1 -1
- package/dist/network/IndexerClient.js +33 -0
- package/dist/network/IndexerClient.js.map +1 -1
- package/dist/types.d.ts +40 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
|
|
2
|
-
import type { OracleRequestData, PaginatedResponse, ApiResponse, OracleFilters } from '../types';
|
|
2
|
+
import type { OracleRequestData, PaginatedResponse, ApiResponse, OracleFilters, MarketResolutionCheck, MarketOracleConfigData } from '../types';
|
|
3
3
|
import { IndexerClient } from '../network/IndexerClient';
|
|
4
4
|
export declare function useOracleRequests(client: IndexerClient, filters?: OracleFilters, options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OracleRequestData>>;
|
|
5
5
|
export declare function useOracleRequest(client: IndexerClient, requestId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>): UseQueryResult<ApiResponse<OracleRequestData>>;
|
|
6
6
|
export declare function useMarketOracle(client: IndexerClient, marketId: string | undefined, options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OracleRequestData>>;
|
|
7
7
|
export declare function useTimedOutOracleRequests(client: IndexerClient, options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OracleRequestData>>;
|
|
8
8
|
export declare function usePendingOracleRequests(client: IndexerClient, options?: Omit<UseQueryOptions<PaginatedResponse<OracleRequestData>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OracleRequestData>>;
|
|
9
|
+
export declare function useCheckMarketResolution(client: IndexerClient | null, marketId: string | undefined, options?: {
|
|
10
|
+
enabled?: boolean;
|
|
11
|
+
}): UseQueryResult<MarketResolutionCheck>;
|
|
12
|
+
export declare function useMarketOracleConfig(client: IndexerClient | null, marketId: string | undefined, options?: Omit<UseQueryOptions<ApiResponse<MarketOracleConfigData>>, 'queryKey' | 'queryFn'>): UseQueryResult<ApiResponse<MarketOracleConfigData>>;
|
|
9
13
|
//# 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,
|
|
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,EACV,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAClB,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;AAoBD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,GAAG,IAAI,EAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9B,cAAc,CAAC,qBAAqB,CAAC,CAWvC;AAYD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,GAAG,IAAI,EAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC3F,cAAc,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAYrD"}
|
package/dist/hooks/useOracle.js
CHANGED
|
@@ -42,4 +42,31 @@ export function usePendingOracleRequests(client, options) {
|
|
|
42
42
|
timedOut: false,
|
|
43
43
|
}, options);
|
|
44
44
|
}
|
|
45
|
+
export function useCheckMarketResolution(client, marketId, options) {
|
|
46
|
+
return useQuery({
|
|
47
|
+
queryKey: ['heavymath', 'market-resolution-check', marketId],
|
|
48
|
+
queryFn: async () => {
|
|
49
|
+
if (!client || !marketId)
|
|
50
|
+
throw new Error('Client and marketId are required');
|
|
51
|
+
return await client.checkMarketResolution(marketId);
|
|
52
|
+
},
|
|
53
|
+
enabled: !!client && !!marketId && options?.enabled !== false,
|
|
54
|
+
staleTime: 30 * 1000,
|
|
55
|
+
retry: false,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export function useMarketOracleConfig(client, marketId, options) {
|
|
59
|
+
return useQuery({
|
|
60
|
+
queryKey: ['heavymath', 'market-oracle-config', marketId],
|
|
61
|
+
queryFn: async () => {
|
|
62
|
+
if (!client || !marketId)
|
|
63
|
+
throw new Error('Client and marketId are required');
|
|
64
|
+
return await client.getMarketOracleConfig(marketId);
|
|
65
|
+
},
|
|
66
|
+
enabled: !!client && !!marketId && (options?.enabled ?? true),
|
|
67
|
+
staleTime: 5 * 60 * 1000,
|
|
68
|
+
retry: false,
|
|
69
|
+
...options,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
45
72
|
//# sourceMappingURL=useOracle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOracle.js","sourceRoot":"","sources":["../../src/hooks/useOracle.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAmC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"useOracle.js","sourceRoot":"","sources":["../../src/hooks/useOracle.ts"],"names":[],"mappings":"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","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 {\n OracleRequestData,\n PaginatedResponse,\n ApiResponse,\n OracleFilters,\n MarketResolutionCheck,\n MarketOracleConfigData,\n} 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\n/**\n * Check if a market can be resolved via oracle.\n * Calls GET /api/markets/:id/resolve to determine if the game has ended\n * and what the outcome would be.\n *\n * Unlike most hooks, this does NOT throw on 400 — it returns a structured\n * result with ok: false so the UI can display why resolution isn't available yet.\n *\n * @example\n * ```tsx\n * const { data } = useCheckMarketResolution(client, '11155111-5');\n * if (data?.ok) {\n * console.log('Result:', data.data.result); // 0 or 1\n * } else if (data) {\n * console.log('Not ready:', data.error.error);\n * }\n * ```\n */\nexport function useCheckMarketResolution(\n client: IndexerClient | null,\n marketId: string | undefined,\n options?: { enabled?: boolean }\n): UseQueryResult<MarketResolutionCheck> {\n return useQuery({\n queryKey: ['heavymath', 'market-resolution-check', marketId],\n queryFn: async () => {\n if (!client || !marketId) throw new Error('Client and marketId are required');\n return await client.checkMarketResolution(marketId);\n },\n enabled: !!client && !!marketId && options?.enabled !== false,\n staleTime: 30 * 1000, // 30s - game status can change\n retry: false,\n });\n}\n\n/**\n * Get the oracle resolution config for a market.\n * GET /api/markets/:id/oracle-config\n *\n * @example\n * ```tsx\n * const { data } = useMarketOracleConfig(client, '11155111-5');\n * console.log(data?.data.positiveTeamName);\n * ```\n */\nexport function useMarketOracleConfig(\n client: IndexerClient | null,\n marketId: string | undefined,\n options?: Omit<UseQueryOptions<ApiResponse<MarketOracleConfigData>>, 'queryKey' | 'queryFn'>\n): UseQueryResult<ApiResponse<MarketOracleConfigData>> {\n return useQuery({\n queryKey: ['heavymath', 'market-oracle-config', marketId],\n queryFn: async () => {\n if (!client || !marketId) throw new Error('Client and marketId are required');\n return await client.getMarketOracleConfig(marketId);\n },\n enabled: !!client && !!marketId && (options?.enabled ?? true),\n staleTime: 5 * 60 * 1000, // 5 minutes - config rarely changes\n retry: false,\n ...options,\n });\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { NetworkClient } from '@sudobility/types';
|
|
2
|
-
import type { ApiResponse, PaginatedResponse, MarketData, PredictionData, DealerNftData, DealerPermissionData, MarketStateHistoryData, FeeWithdrawalData, OracleRequestData, MarketStatsData, HealthData, MarketFilters, PredictionFilters, DealerFilters, WithdrawalFilters, OracleFilters, WalletFavoriteData, WalletFavoritesFilters, CreateFavoriteRequest, FavoriteCountsFilters } from '../types';
|
|
2
|
+
import type { ApiResponse, PaginatedResponse, MarketData, PredictionData, DealerNftData, DealerPermissionData, MarketStateHistoryData, FeeWithdrawalData, OracleRequestData, MarketStatsData, HealthData, MarketFilters, PredictionFilters, DealerFilters, WithdrawalFilters, OracleFilters, WalletFavoriteData, WalletFavoritesFilters, CreateFavoriteRequest, FavoriteCountsFilters, SetMarketOracleConfigRequest, MarketOracleConfigData, MarketResolutionCheck } from '../types';
|
|
3
3
|
import type { SportsApiResponse, SportsQueryParams, SportsSearchResponse } from '../types/sports';
|
|
4
4
|
export declare class IndexerClient {
|
|
5
5
|
private readonly baseUrl;
|
|
@@ -18,6 +18,9 @@ export declare class IndexerClient {
|
|
|
18
18
|
getWithdrawals(filters?: WithdrawalFilters): Promise<PaginatedResponse<FeeWithdrawalData>>;
|
|
19
19
|
getOracleRequests(filters?: OracleFilters): Promise<PaginatedResponse<OracleRequestData>>;
|
|
20
20
|
getOracleRequest(id: string): Promise<ApiResponse<OracleRequestData>>;
|
|
21
|
+
setMarketOracleConfig(marketId: string, config: SetMarketOracleConfigRequest): Promise<ApiResponse<MarketOracleConfigData>>;
|
|
22
|
+
getMarketOracleConfig(marketId: string): Promise<ApiResponse<MarketOracleConfigData>>;
|
|
23
|
+
checkMarketResolution(marketId: string): Promise<MarketResolutionCheck>;
|
|
21
24
|
getFavorites(walletAddress: string, filters?: WalletFavoritesFilters): Promise<PaginatedResponse<WalletFavoriteData>>;
|
|
22
25
|
addFavorite(walletAddress: string, favorite: CreateFavoriteRequest): Promise<ApiResponse<WalletFavoriteData>>;
|
|
23
26
|
removeFavorite(walletAddress: string, favoriteId: number): Promise<ApiResponse<void>>;
|
|
@@ -1 +1 @@
|
|
|
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,EACrB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAwClG,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;
|
|
1
|
+
{"version":3,"file":"IndexerClient.d.ts","sourceRoot":"","sources":["../../src/network/IndexerClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -164,6 +164,39 @@ export class IndexerClient {
|
|
|
164
164
|
}
|
|
165
165
|
return response.data;
|
|
166
166
|
}
|
|
167
|
+
async setMarketOracleConfig(marketId, config) {
|
|
168
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(marketId)}/oracle-config`), config);
|
|
169
|
+
if (!response.ok || !response.data) {
|
|
170
|
+
throw handleApiError(response, 'set market oracle config');
|
|
171
|
+
}
|
|
172
|
+
return response.data;
|
|
173
|
+
}
|
|
174
|
+
async getMarketOracleConfig(marketId) {
|
|
175
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(marketId)}/oracle-config`));
|
|
176
|
+
if (!response.ok || !response.data) {
|
|
177
|
+
throw handleApiError(response, 'get market oracle config');
|
|
178
|
+
}
|
|
179
|
+
return response.data;
|
|
180
|
+
}
|
|
181
|
+
async checkMarketResolution(marketId) {
|
|
182
|
+
const url = buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(marketId)}/resolve`);
|
|
183
|
+
const response = await this.networkClient.get(url);
|
|
184
|
+
if (response.ok && response.data) {
|
|
185
|
+
return {
|
|
186
|
+
ok: true,
|
|
187
|
+
data: response.data,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
const errorData = response.data;
|
|
191
|
+
return {
|
|
192
|
+
ok: false,
|
|
193
|
+
error: errorData ?? {
|
|
194
|
+
success: false,
|
|
195
|
+
error: `API Error (${response.status}): Failed to check market resolution`,
|
|
196
|
+
timestamp: new Date().toISOString(),
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
}
|
|
167
200
|
async getFavorites(walletAddress, filters) {
|
|
168
201
|
const params = new URLSearchParams();
|
|
169
202
|
if (filters?.category)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexerClient.js","sourceRoot":"","sources":["../../src/network/IndexerClient.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Indexer API Client\n * @description Low-level HTTP client for all Heavymath Indexer REST endpoints.\n * Each public method maps 1:1 to a REST API endpoint. Uses an injected\n * NetworkClient for transport, making it environment-agnostic (browser, Node, React Native).\n */\n\nimport type { NetworkClient, NetworkResponse } from '@sudobility/types';\nimport type {\n ApiResponse,\n PaginatedResponse,\n MarketData,\n PredictionData,\n DealerNftData,\n DealerPermissionData,\n MarketStateHistoryData,\n FeeWithdrawalData,\n OracleRequestData,\n MarketStatsData,\n HealthData,\n MarketFilters,\n PredictionFilters,\n DealerFilters,\n WithdrawalFilters,\n OracleFilters,\n WalletFavoriteData,\n WalletFavoritesFilters,\n CreateFavoriteRequest,\n FavoriteCountsFilters,\n} from '../types';\nimport type { SportsApiResponse, SportsQueryParams, SportsSearchResponse } from '../types/sports';\n\n/**\n * Build a full URL by joining a base URL and path.\n *\n * @param baseUrl - The base URL (trailing slash is stripped)\n * @param path - The path to append (leading slash is ensured)\n * @returns The combined URL string\n */\nfunction buildUrl(baseUrl: string, path: string): string {\n const base = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;\n const fullPath = path.startsWith('/') ? path : `/${path}`;\n return `${base}${fullPath}`;\n}\n\n/**\n * Create a standardized Error from an API response failure.\n * Includes the HTTP status code, endpoint URL, and error details for easier debugging.\n *\n * @param response - The failed network response\n * @param operation - A description of the operation that failed (used in error message)\n * @param url - Optional request URL to include in the error message for debugging\n * @returns An Error with a formatted message including the HTTP status code\n */\nfunction handleApiError(\n response: NetworkResponse<unknown>,\n operation: string,\n url?: string\n): Error {\n const data = response.data as { error?: string } | undefined;\n const errorMessage = data?.error || response.statusText || `Failed to ${operation}`;\n const urlSuffix = url ? ` [${url}]` : '';\n return new Error(`API Error (${response.status}): ${errorMessage}${urlSuffix}`);\n}\n\n/**\n * Indexer API client for Heavymath Prediction Market.\n * Provides type-safe methods for all REST endpoints exposed by the heavymath_indexer.\n * Requires a `NetworkClient` instance (from `@sudobility/di`) for HTTP transport.\n */\nexport class IndexerClient {\n private readonly baseUrl: string;\n private readonly networkClient: NetworkClient;\n\n /**\n * Create an IndexerClient instance\n * @param endpointUrl - The base URL for the indexer API\n * @param networkClient - A NetworkClient instance from @sudobility/di\n */\n constructor(endpointUrl: string, networkClient: NetworkClient) {\n this.baseUrl = endpointUrl;\n this.networkClient = networkClient;\n }\n\n // =============================================================================\n // MARKET ENDPOINTS\n // =============================================================================\n\n /**\n * Get all markets with optional filtering.\n * GET /api/markets\n *\n * @param filters - Optional query parameters (status, dealer, category, limit, offset)\n * @returns Paginated list of markets\n * @throws Error if the API request fails\n */\n async getMarkets(filters?: MarketFilters): Promise<PaginatedResponse<MarketData>> {\n const params = new URLSearchParams();\n\n if (filters?.status) params.append('status', filters.status);\n if (filters?.dealer) params.append('dealer', filters.dealer);\n if (filters?.category) params.append('category', filters.category);\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/markets/list${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<MarketData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get markets');\n }\n\n return response.data;\n }\n\n /**\n * Get a specific market by ID.\n * GET /api/markets/:id\n *\n * @param id - The chain-prefixed market ID (e.g., \"1-market-123\")\n * @returns The market data wrapped in an API response\n * @throws Error if the market is not found or the request fails\n */\n async getMarket(id: string): Promise<ApiResponse<MarketData>> {\n const response = await this.networkClient.get<ApiResponse<MarketData>>(\n buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(id)}`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get market');\n }\n\n return response.data;\n }\n\n /**\n * Get all predictions for a specific market.\n * GET /api/markets/:id/predictions\n *\n * @param marketId - The chain-prefixed market ID\n * @returns Array of predictions for the market\n * @throws Error if the request fails\n */\n async getMarketPredictions(marketId: string): Promise<ApiResponse<PredictionData[]>> {\n const response = await this.networkClient.get<ApiResponse<PredictionData[]>>(\n buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(marketId)}/predictions`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get market predictions');\n }\n\n return response.data;\n }\n\n /**\n * Get state transition history for a market.\n * GET /api/markets/:id/history\n *\n * @param marketId - The chain-prefixed market ID\n * @returns Array of state history entries for the market\n * @throws Error if the request fails\n */\n async getMarketHistory(marketId: string): Promise<ApiResponse<MarketStateHistoryData[]>> {\n const response = await this.networkClient.get<ApiResponse<MarketStateHistoryData[]>>(\n buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(marketId)}/history`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get market history');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // PREDICTION ENDPOINTS\n // =============================================================================\n\n /**\n * Get predictions with optional filtering.\n * GET /api/predictions\n *\n * @param filters - Optional query parameters (user, market, claimed, limit, offset)\n * @returns Paginated list of predictions\n * @throws Error if the request fails\n */\n async getPredictions(filters?: PredictionFilters): Promise<PaginatedResponse<PredictionData>> {\n const params = new URLSearchParams();\n\n if (filters?.user) params.append('user', filters.user);\n if (filters?.market) params.append('market', filters.market);\n if (filters?.claimed !== undefined) params.append('claimed', filters.claimed.toString());\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/predictions${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<PredictionData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get predictions');\n }\n\n return response.data;\n }\n\n /**\n * Get a specific prediction by ID.\n * GET /api/predictions/:id\n *\n * @param id - The chain-prefixed prediction ID (e.g., \"1-market-123-0xuser...\")\n * @returns The prediction data wrapped in an API response\n * @throws Error if the prediction is not found or the request fails\n */\n async getPrediction(id: string): Promise<ApiResponse<PredictionData>> {\n const response = await this.networkClient.get<ApiResponse<PredictionData>>(\n buildUrl(this.baseUrl, `/api/predictions/${encodeURIComponent(id)}`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get prediction');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // DEALER NFT ENDPOINTS\n // =============================================================================\n\n /**\n * Get all dealer NFTs with optional filtering.\n * GET /api/dealers\n *\n * @param filters - Optional query parameters (owner, limit, offset)\n * @returns Paginated list of dealer NFTs\n * @throws Error if the request fails\n */\n async getDealers(filters?: DealerFilters): Promise<PaginatedResponse<DealerNftData>> {\n const params = new URLSearchParams();\n\n if (filters?.owner) params.append('owner', filters.owner);\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/dealers/list${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<DealerNftData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get dealers');\n }\n\n return response.data;\n }\n\n /**\n * Get a specific dealer NFT by ID.\n * GET /api/dealers/:id\n *\n * @param id - The chain-prefixed dealer ID (e.g., \"1-1\")\n * @returns The dealer NFT data wrapped in an API response\n * @throws Error if the dealer is not found or the request fails\n */\n async getDealer(id: string): Promise<ApiResponse<DealerNftData>> {\n const response = await this.networkClient.get<ApiResponse<DealerNftData>>(\n buildUrl(this.baseUrl, `/api/dealers/${encodeURIComponent(id)}`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get dealer');\n }\n\n return response.data;\n }\n\n /**\n * Get permissions for a specific dealer NFT.\n * GET /api/dealers/:id/permissions\n *\n * @param dealerId - The chain-prefixed dealer ID\n * @returns Array of permission entries for the dealer\n * @throws Error if the request fails\n */\n async getDealerPermissions(dealerId: string): Promise<ApiResponse<DealerPermissionData[]>> {\n const response = await this.networkClient.get<ApiResponse<DealerPermissionData[]>>(\n buildUrl(this.baseUrl, `/api/dealers/${encodeURIComponent(dealerId)}/permissions`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get dealer permissions');\n }\n\n return response.data;\n }\n\n /**\n * Get all markets created by a specific dealer NFT.\n * GET /api/dealers/:id/markets\n *\n * @param dealerId - The chain-prefixed dealer ID\n * @returns Array of markets created by this dealer\n * @throws Error if the request fails\n */\n async getDealerMarkets(dealerId: string): Promise<ApiResponse<MarketData[]>> {\n const response = await this.networkClient.get<ApiResponse<MarketData[]>>(\n buildUrl(this.baseUrl, `/api/dealers/${encodeURIComponent(dealerId)}/markets`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get dealer markets');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // FEE WITHDRAWAL ENDPOINTS\n // =============================================================================\n\n /**\n * Get fee withdrawals with optional filtering.\n * GET /api/withdrawals\n *\n * @param filters - Optional query parameters (withdrawer, type, market, limit, offset)\n * @returns Paginated list of fee withdrawals\n * @throws Error if the request fails\n */\n async getWithdrawals(filters?: WithdrawalFilters): Promise<PaginatedResponse<FeeWithdrawalData>> {\n const params = new URLSearchParams();\n\n if (filters?.withdrawer) params.append('withdrawer', filters.withdrawer);\n if (filters?.type) params.append('type', filters.type);\n if (filters?.market) params.append('market', filters.market);\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/withdrawals${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<FeeWithdrawalData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get withdrawals');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // ORACLE REQUEST ENDPOINTS\n // =============================================================================\n\n /**\n * Get oracle requests with optional filtering.\n * GET /api/oracle/requests\n *\n * @param filters - Optional query parameters (market, timedOut, limit, offset)\n * @returns Paginated list of oracle requests\n * @throws Error if the request fails\n */\n async getOracleRequests(filters?: OracleFilters): Promise<PaginatedResponse<OracleRequestData>> {\n const params = new URLSearchParams();\n\n if (filters?.market) params.append('market', filters.market);\n if (filters?.timedOut !== undefined) params.append('timedOut', filters.timedOut.toString());\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/oracle/requests${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<OracleRequestData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get oracle requests');\n }\n\n return response.data;\n }\n\n /**\n * Get a specific oracle request by ID.\n * GET /api/oracle/requests/:id\n *\n * @param id - The oracle request ID\n * @returns The oracle request data wrapped in an API response\n * @throws Error if the oracle request is not found or the request fails\n */\n async getOracleRequest(id: string): Promise<ApiResponse<OracleRequestData>> {\n const response = await this.networkClient.get<ApiResponse<OracleRequestData>>(\n buildUrl(this.baseUrl, `/api/oracle/requests/${encodeURIComponent(id)}`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get oracle request');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // WALLET FAVORITES ENDPOINTS\n // =============================================================================\n\n /**\n * Get favorites for a wallet address.\n * GET /api/wallet/:address/favorites\n *\n * @param walletAddress - The wallet address to get favorites for\n * @param filters - Optional query parameters (category, subcategory, type, limit, offset)\n * @returns Paginated list of wallet favorites\n * @throws Error if the request fails\n */\n async getFavorites(\n walletAddress: string,\n filters?: WalletFavoritesFilters\n ): Promise<PaginatedResponse<WalletFavoriteData>> {\n const params = new URLSearchParams();\n\n if (filters?.category) params.append('category', filters.category);\n if (filters?.subcategory) params.append('subcategory', filters.subcategory);\n if (filters?.type) params.append('type', filters.type);\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/wallet/${encodeURIComponent(walletAddress)}/favorites${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<WalletFavoriteData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get favorites');\n }\n\n return response.data;\n }\n\n /**\n * Add a favorite for a wallet address.\n * POST /api/wallet/:address/favorites\n *\n * @param walletAddress - The wallet address to add a favorite for\n * @param favorite - The favorite item to add (category, subcategory, type, id)\n * @returns The newly created favorite data\n * @throws Error if the request fails\n */\n async addFavorite(\n walletAddress: string,\n favorite: CreateFavoriteRequest\n ): Promise<ApiResponse<WalletFavoriteData>> {\n const response = await this.networkClient.post<ApiResponse<WalletFavoriteData>>(\n buildUrl(this.baseUrl, `/api/wallet/${encodeURIComponent(walletAddress)}/favorites`),\n favorite\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'add favorite');\n }\n\n return response.data;\n }\n\n /**\n * Remove a favorite by ID.\n * DELETE /api/wallet/:address/favorites/:id\n *\n * @param walletAddress - The wallet address that owns the favorite\n * @param favoriteId - The numeric ID of the favorite to remove\n * @returns An API response confirming deletion\n * @throws Error if the favorite is not found or the request fails\n */\n async removeFavorite(walletAddress: string, favoriteId: number): Promise<ApiResponse<void>> {\n const response = await this.networkClient.delete<ApiResponse<void>>(\n buildUrl(\n this.baseUrl,\n `/api/wallet/${encodeURIComponent(walletAddress)}/favorites/${favoriteId}`\n )\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'remove favorite');\n }\n\n return response.data;\n }\n\n /**\n * Get favorite counts across all wallets for specific items.\n * GET /api/favorites/counts\n *\n * @param filters - Required filters: category, subcategory, type, itemIds\n * @returns Map of itemId to favorite count (items with 0 favorites are omitted)\n */\n async getFavoriteCounts(\n filters: FavoriteCountsFilters\n ): Promise<ApiResponse<Record<string, number>>> {\n const params = new URLSearchParams();\n params.append('category', filters.category);\n params.append('subcategory', filters.subcategory);\n params.append('type', filters.type);\n params.append('itemIds', filters.itemIds.join(','));\n\n const path = `/api/favorites/counts?${params.toString()}`;\n\n const response = await this.networkClient.get<ApiResponse<Record<string, number>>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get favorite counts');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // ANALYTICS ENDPOINTS\n // =============================================================================\n\n /**\n * Get market statistics.\n * GET /api/stats/markets\n *\n * @returns Aggregate market statistics (totals, breakdowns by status)\n * @throws Error if the request fails\n */\n async getMarketStats(): Promise<ApiResponse<MarketStatsData>> {\n const response = await this.networkClient.get<ApiResponse<MarketStatsData>>(\n buildUrl(this.baseUrl, '/api/stats/markets')\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get market stats');\n }\n\n return response.data;\n }\n\n /**\n * Get health status of the indexer.\n * GET /api/health\n *\n * @returns The indexer health status\n * @throws Error if the request fails\n */\n async getHealth(): Promise<ApiResponse<HealthData>> {\n const response = await this.networkClient.get<ApiResponse<HealthData>>(\n buildUrl(this.baseUrl, '/api/health')\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get health');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // SPORTS API PROXY ENDPOINTS\n // =============================================================================\n\n /**\n * Cross-sport team search.\n * Searches teams across all sports via the indexer's aggregated search endpoint.\n * GET /api/sports/search?q={query}\n *\n * @param query - Search query (minimum 3 characters)\n * @returns Aggregated search results grouped by sport\n * @throws Error if the request fails\n */\n async searchSports(query: string): Promise<ApiResponse<SportsSearchResponse>> {\n const params = new URLSearchParams();\n params.append('q', query);\n\n const path = `/api/sports/search?${params.toString()}`;\n\n const response = await this.networkClient.get<ApiResponse<SportsSearchResponse>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'search sports');\n }\n\n return response.data;\n }\n\n /**\n * Generic sports API proxy call.\n * Proxies any api-sports.io request through the indexer with server-side caching.\n * Returns the raw api-sports.io response body (passthrough format).\n *\n * @param sport - Sport identifier (e.g., 'football', 'basketball')\n * @param endpoint - API endpoint path (e.g., '/countries', '/fixtures')\n * @param params - Optional query parameters to forward\n * @returns The raw api-sports.io response\n * @throws Error if the request fails\n *\n * @example\n * ```ts\n * const data = await client.getSportsData('football', '/countries');\n * const leagues = await client.getSportsData('basketball', '/leagues', { season: '2023-2024' });\n * ```\n */\n async getSportsData<T = unknown>(\n sport: string,\n endpoint: string,\n params?: SportsQueryParams\n ): Promise<SportsApiResponse<T>> {\n const searchParams = new URLSearchParams();\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n searchParams.append(key, String(value));\n }\n }\n }\n\n const queryString = searchParams.toString();\n const path = `/api/sports/${encodeURIComponent(sport)}${endpoint}${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<SportsApiResponse<T>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, `get sports data (${sport}${endpoint})`);\n }\n\n return response.data;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"IndexerClient.js","sourceRoot":"","sources":["../../src/network/IndexerClient.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Indexer API Client\n * @description Low-level HTTP client for all Heavymath Indexer REST endpoints.\n * Each public method maps 1:1 to a REST API endpoint. Uses an injected\n * NetworkClient for transport, making it environment-agnostic (browser, Node, React Native).\n */\n\nimport type { NetworkClient, NetworkResponse } from '@sudobility/types';\nimport type {\n ApiResponse,\n PaginatedResponse,\n MarketData,\n PredictionData,\n DealerNftData,\n DealerPermissionData,\n MarketStateHistoryData,\n FeeWithdrawalData,\n OracleRequestData,\n MarketStatsData,\n HealthData,\n MarketFilters,\n PredictionFilters,\n DealerFilters,\n WithdrawalFilters,\n OracleFilters,\n WalletFavoriteData,\n WalletFavoritesFilters,\n CreateFavoriteRequest,\n FavoriteCountsFilters,\n SetMarketOracleConfigRequest,\n MarketOracleConfigData,\n MarketResolutionCheck,\n MarketResolutionCheckSuccess,\n MarketResolutionCheckError,\n} from '../types';\nimport type { SportsApiResponse, SportsQueryParams, SportsSearchResponse } from '../types/sports';\n\n/**\n * Build a full URL by joining a base URL and path.\n *\n * @param baseUrl - The base URL (trailing slash is stripped)\n * @param path - The path to append (leading slash is ensured)\n * @returns The combined URL string\n */\nfunction buildUrl(baseUrl: string, path: string): string {\n const base = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;\n const fullPath = path.startsWith('/') ? path : `/${path}`;\n return `${base}${fullPath}`;\n}\n\n/**\n * Create a standardized Error from an API response failure.\n * Includes the HTTP status code, endpoint URL, and error details for easier debugging.\n *\n * @param response - The failed network response\n * @param operation - A description of the operation that failed (used in error message)\n * @param url - Optional request URL to include in the error message for debugging\n * @returns An Error with a formatted message including the HTTP status code\n */\nfunction handleApiError(\n response: NetworkResponse<unknown>,\n operation: string,\n url?: string\n): Error {\n const data = response.data as { error?: string } | undefined;\n const errorMessage = data?.error || response.statusText || `Failed to ${operation}`;\n const urlSuffix = url ? ` [${url}]` : '';\n return new Error(`API Error (${response.status}): ${errorMessage}${urlSuffix}`);\n}\n\n/**\n * Indexer API client for Heavymath Prediction Market.\n * Provides type-safe methods for all REST endpoints exposed by the heavymath_indexer.\n * Requires a `NetworkClient` instance (from `@sudobility/di`) for HTTP transport.\n */\nexport class IndexerClient {\n private readonly baseUrl: string;\n private readonly networkClient: NetworkClient;\n\n /**\n * Create an IndexerClient instance\n * @param endpointUrl - The base URL for the indexer API\n * @param networkClient - A NetworkClient instance from @sudobility/di\n */\n constructor(endpointUrl: string, networkClient: NetworkClient) {\n this.baseUrl = endpointUrl;\n this.networkClient = networkClient;\n }\n\n // =============================================================================\n // MARKET ENDPOINTS\n // =============================================================================\n\n /**\n * Get all markets with optional filtering.\n * GET /api/markets\n *\n * @param filters - Optional query parameters (status, dealer, category, limit, offset)\n * @returns Paginated list of markets\n * @throws Error if the API request fails\n */\n async getMarkets(filters?: MarketFilters): Promise<PaginatedResponse<MarketData>> {\n const params = new URLSearchParams();\n\n if (filters?.status) params.append('status', filters.status);\n if (filters?.dealer) params.append('dealer', filters.dealer);\n if (filters?.category) params.append('category', filters.category);\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/markets/list${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<MarketData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get markets');\n }\n\n return response.data;\n }\n\n /**\n * Get a specific market by ID.\n * GET /api/markets/:id\n *\n * @param id - The chain-prefixed market ID (e.g., \"1-market-123\")\n * @returns The market data wrapped in an API response\n * @throws Error if the market is not found or the request fails\n */\n async getMarket(id: string): Promise<ApiResponse<MarketData>> {\n const response = await this.networkClient.get<ApiResponse<MarketData>>(\n buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(id)}`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get market');\n }\n\n return response.data;\n }\n\n /**\n * Get all predictions for a specific market.\n * GET /api/markets/:id/predictions\n *\n * @param marketId - The chain-prefixed market ID\n * @returns Array of predictions for the market\n * @throws Error if the request fails\n */\n async getMarketPredictions(marketId: string): Promise<ApiResponse<PredictionData[]>> {\n const response = await this.networkClient.get<ApiResponse<PredictionData[]>>(\n buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(marketId)}/predictions`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get market predictions');\n }\n\n return response.data;\n }\n\n /**\n * Get state transition history for a market.\n * GET /api/markets/:id/history\n *\n * @param marketId - The chain-prefixed market ID\n * @returns Array of state history entries for the market\n * @throws Error if the request fails\n */\n async getMarketHistory(marketId: string): Promise<ApiResponse<MarketStateHistoryData[]>> {\n const response = await this.networkClient.get<ApiResponse<MarketStateHistoryData[]>>(\n buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(marketId)}/history`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get market history');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // PREDICTION ENDPOINTS\n // =============================================================================\n\n /**\n * Get predictions with optional filtering.\n * GET /api/predictions\n *\n * @param filters - Optional query parameters (user, market, claimed, limit, offset)\n * @returns Paginated list of predictions\n * @throws Error if the request fails\n */\n async getPredictions(filters?: PredictionFilters): Promise<PaginatedResponse<PredictionData>> {\n const params = new URLSearchParams();\n\n if (filters?.user) params.append('user', filters.user);\n if (filters?.market) params.append('market', filters.market);\n if (filters?.claimed !== undefined) params.append('claimed', filters.claimed.toString());\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/predictions${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<PredictionData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get predictions');\n }\n\n return response.data;\n }\n\n /**\n * Get a specific prediction by ID.\n * GET /api/predictions/:id\n *\n * @param id - The chain-prefixed prediction ID (e.g., \"1-market-123-0xuser...\")\n * @returns The prediction data wrapped in an API response\n * @throws Error if the prediction is not found or the request fails\n */\n async getPrediction(id: string): Promise<ApiResponse<PredictionData>> {\n const response = await this.networkClient.get<ApiResponse<PredictionData>>(\n buildUrl(this.baseUrl, `/api/predictions/${encodeURIComponent(id)}`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get prediction');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // DEALER NFT ENDPOINTS\n // =============================================================================\n\n /**\n * Get all dealer NFTs with optional filtering.\n * GET /api/dealers\n *\n * @param filters - Optional query parameters (owner, limit, offset)\n * @returns Paginated list of dealer NFTs\n * @throws Error if the request fails\n */\n async getDealers(filters?: DealerFilters): Promise<PaginatedResponse<DealerNftData>> {\n const params = new URLSearchParams();\n\n if (filters?.owner) params.append('owner', filters.owner);\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/dealers/list${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<DealerNftData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get dealers');\n }\n\n return response.data;\n }\n\n /**\n * Get a specific dealer NFT by ID.\n * GET /api/dealers/:id\n *\n * @param id - The chain-prefixed dealer ID (e.g., \"1-1\")\n * @returns The dealer NFT data wrapped in an API response\n * @throws Error if the dealer is not found or the request fails\n */\n async getDealer(id: string): Promise<ApiResponse<DealerNftData>> {\n const response = await this.networkClient.get<ApiResponse<DealerNftData>>(\n buildUrl(this.baseUrl, `/api/dealers/${encodeURIComponent(id)}`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get dealer');\n }\n\n return response.data;\n }\n\n /**\n * Get permissions for a specific dealer NFT.\n * GET /api/dealers/:id/permissions\n *\n * @param dealerId - The chain-prefixed dealer ID\n * @returns Array of permission entries for the dealer\n * @throws Error if the request fails\n */\n async getDealerPermissions(dealerId: string): Promise<ApiResponse<DealerPermissionData[]>> {\n const response = await this.networkClient.get<ApiResponse<DealerPermissionData[]>>(\n buildUrl(this.baseUrl, `/api/dealers/${encodeURIComponent(dealerId)}/permissions`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get dealer permissions');\n }\n\n return response.data;\n }\n\n /**\n * Get all markets created by a specific dealer NFT.\n * GET /api/dealers/:id/markets\n *\n * @param dealerId - The chain-prefixed dealer ID\n * @returns Array of markets created by this dealer\n * @throws Error if the request fails\n */\n async getDealerMarkets(dealerId: string): Promise<ApiResponse<MarketData[]>> {\n const response = await this.networkClient.get<ApiResponse<MarketData[]>>(\n buildUrl(this.baseUrl, `/api/dealers/${encodeURIComponent(dealerId)}/markets`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get dealer markets');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // FEE WITHDRAWAL ENDPOINTS\n // =============================================================================\n\n /**\n * Get fee withdrawals with optional filtering.\n * GET /api/withdrawals\n *\n * @param filters - Optional query parameters (withdrawer, type, market, limit, offset)\n * @returns Paginated list of fee withdrawals\n * @throws Error if the request fails\n */\n async getWithdrawals(filters?: WithdrawalFilters): Promise<PaginatedResponse<FeeWithdrawalData>> {\n const params = new URLSearchParams();\n\n if (filters?.withdrawer) params.append('withdrawer', filters.withdrawer);\n if (filters?.type) params.append('type', filters.type);\n if (filters?.market) params.append('market', filters.market);\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/withdrawals${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<FeeWithdrawalData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get withdrawals');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // ORACLE REQUEST ENDPOINTS\n // =============================================================================\n\n /**\n * Get oracle requests with optional filtering.\n * GET /api/oracle/requests\n *\n * @param filters - Optional query parameters (market, timedOut, limit, offset)\n * @returns Paginated list of oracle requests\n * @throws Error if the request fails\n */\n async getOracleRequests(filters?: OracleFilters): Promise<PaginatedResponse<OracleRequestData>> {\n const params = new URLSearchParams();\n\n if (filters?.market) params.append('market', filters.market);\n if (filters?.timedOut !== undefined) params.append('timedOut', filters.timedOut.toString());\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/oracle/requests${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<OracleRequestData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get oracle requests');\n }\n\n return response.data;\n }\n\n /**\n * Get a specific oracle request by ID.\n * GET /api/oracle/requests/:id\n *\n * @param id - The oracle request ID\n * @returns The oracle request data wrapped in an API response\n * @throws Error if the oracle request is not found or the request fails\n */\n async getOracleRequest(id: string): Promise<ApiResponse<OracleRequestData>> {\n const response = await this.networkClient.get<ApiResponse<OracleRequestData>>(\n buildUrl(this.baseUrl, `/api/oracle/requests/${encodeURIComponent(id)}`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get oracle request');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // ORACLE RESOLUTION ENDPOINTS\n // =============================================================================\n\n /**\n * Set the oracle resolution config for a market.\n * POST /api/markets/:id/oracle-config\n *\n * Called after on-chain market creation to store which team's win = positive outcome.\n *\n * @param marketId - Chain-prefixed market ID\n * @param config - Oracle config with positive team info\n * @returns The created oracle config\n * @throws Error if the market is not found or doesn't have an oracle\n */\n async setMarketOracleConfig(\n marketId: string,\n config: SetMarketOracleConfigRequest\n ): Promise<ApiResponse<MarketOracleConfigData>> {\n const response = await this.networkClient.post<ApiResponse<MarketOracleConfigData>>(\n buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(marketId)}/oracle-config`),\n config\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'set market oracle config');\n }\n\n return response.data;\n }\n\n /**\n * Get the oracle resolution config for a market.\n * GET /api/markets/:id/oracle-config\n *\n * @param marketId - Chain-prefixed market ID\n * @returns The oracle config data\n * @throws Error if the config is not found\n */\n async getMarketOracleConfig(marketId: string): Promise<ApiResponse<MarketOracleConfigData>> {\n const response = await this.networkClient.get<ApiResponse<MarketOracleConfigData>>(\n buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(marketId)}/oracle-config`)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get market oracle config');\n }\n\n return response.data;\n }\n\n /**\n * Check if a market can be resolved via oracle.\n * GET /api/markets/:id/resolve\n *\n * Returns the resolution result if the game has ended (HTTP 200),\n * or an error if the game hasn't ended yet (HTTP 400).\n *\n * Unlike other methods, this does NOT throw on 400 — it returns a\n * structured result so the UI can display the reason.\n *\n * @param marketId - Chain-prefixed market ID\n * @returns Resolution check result (ok: true with data, or ok: false with error)\n */\n async checkMarketResolution(marketId: string): Promise<MarketResolutionCheck> {\n const url = buildUrl(this.baseUrl, `/api/markets/${encodeURIComponent(marketId)}/resolve`);\n\n const response = await this.networkClient.get<\n MarketResolutionCheckSuccess | MarketResolutionCheckError\n >(url);\n\n if (response.ok && response.data) {\n return {\n ok: true,\n data: response.data as MarketResolutionCheckSuccess,\n };\n }\n\n // 400 or other error — return structured error instead of throwing\n const errorData = response.data as MarketResolutionCheckError | undefined;\n return {\n ok: false,\n error: errorData ?? {\n success: false,\n error: `API Error (${response.status}): Failed to check market resolution`,\n timestamp: new Date().toISOString(),\n },\n };\n }\n\n // =============================================================================\n // WALLET FAVORITES ENDPOINTS\n // =============================================================================\n\n /**\n * Get favorites for a wallet address.\n * GET /api/wallet/:address/favorites\n *\n * @param walletAddress - The wallet address to get favorites for\n * @param filters - Optional query parameters (category, subcategory, type, limit, offset)\n * @returns Paginated list of wallet favorites\n * @throws Error if the request fails\n */\n async getFavorites(\n walletAddress: string,\n filters?: WalletFavoritesFilters\n ): Promise<PaginatedResponse<WalletFavoriteData>> {\n const params = new URLSearchParams();\n\n if (filters?.category) params.append('category', filters.category);\n if (filters?.subcategory) params.append('subcategory', filters.subcategory);\n if (filters?.type) params.append('type', filters.type);\n if (filters?.limit) params.append('limit', filters.limit.toString());\n if (filters?.offset) params.append('offset', filters.offset.toString());\n\n const queryString = params.toString();\n const path = `/api/wallet/${encodeURIComponent(walletAddress)}/favorites${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<PaginatedResponse<WalletFavoriteData>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get favorites');\n }\n\n return response.data;\n }\n\n /**\n * Add a favorite for a wallet address.\n * POST /api/wallet/:address/favorites\n *\n * @param walletAddress - The wallet address to add a favorite for\n * @param favorite - The favorite item to add (category, subcategory, type, id)\n * @returns The newly created favorite data\n * @throws Error if the request fails\n */\n async addFavorite(\n walletAddress: string,\n favorite: CreateFavoriteRequest\n ): Promise<ApiResponse<WalletFavoriteData>> {\n const response = await this.networkClient.post<ApiResponse<WalletFavoriteData>>(\n buildUrl(this.baseUrl, `/api/wallet/${encodeURIComponent(walletAddress)}/favorites`),\n favorite\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'add favorite');\n }\n\n return response.data;\n }\n\n /**\n * Remove a favorite by ID.\n * DELETE /api/wallet/:address/favorites/:id\n *\n * @param walletAddress - The wallet address that owns the favorite\n * @param favoriteId - The numeric ID of the favorite to remove\n * @returns An API response confirming deletion\n * @throws Error if the favorite is not found or the request fails\n */\n async removeFavorite(walletAddress: string, favoriteId: number): Promise<ApiResponse<void>> {\n const response = await this.networkClient.delete<ApiResponse<void>>(\n buildUrl(\n this.baseUrl,\n `/api/wallet/${encodeURIComponent(walletAddress)}/favorites/${favoriteId}`\n )\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'remove favorite');\n }\n\n return response.data;\n }\n\n /**\n * Get favorite counts across all wallets for specific items.\n * GET /api/favorites/counts\n *\n * @param filters - Required filters: category, subcategory, type, itemIds\n * @returns Map of itemId to favorite count (items with 0 favorites are omitted)\n */\n async getFavoriteCounts(\n filters: FavoriteCountsFilters\n ): Promise<ApiResponse<Record<string, number>>> {\n const params = new URLSearchParams();\n params.append('category', filters.category);\n params.append('subcategory', filters.subcategory);\n params.append('type', filters.type);\n params.append('itemIds', filters.itemIds.join(','));\n\n const path = `/api/favorites/counts?${params.toString()}`;\n\n const response = await this.networkClient.get<ApiResponse<Record<string, number>>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get favorite counts');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // ANALYTICS ENDPOINTS\n // =============================================================================\n\n /**\n * Get market statistics.\n * GET /api/stats/markets\n *\n * @returns Aggregate market statistics (totals, breakdowns by status)\n * @throws Error if the request fails\n */\n async getMarketStats(): Promise<ApiResponse<MarketStatsData>> {\n const response = await this.networkClient.get<ApiResponse<MarketStatsData>>(\n buildUrl(this.baseUrl, '/api/stats/markets')\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get market stats');\n }\n\n return response.data;\n }\n\n /**\n * Get health status of the indexer.\n * GET /api/health\n *\n * @returns The indexer health status\n * @throws Error if the request fails\n */\n async getHealth(): Promise<ApiResponse<HealthData>> {\n const response = await this.networkClient.get<ApiResponse<HealthData>>(\n buildUrl(this.baseUrl, '/api/health')\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'get health');\n }\n\n return response.data;\n }\n\n // =============================================================================\n // SPORTS API PROXY ENDPOINTS\n // =============================================================================\n\n /**\n * Cross-sport team search.\n * Searches teams across all sports via the indexer's aggregated search endpoint.\n * GET /api/sports/search?q={query}\n *\n * @param query - Search query (minimum 3 characters)\n * @returns Aggregated search results grouped by sport\n * @throws Error if the request fails\n */\n async searchSports(query: string): Promise<ApiResponse<SportsSearchResponse>> {\n const params = new URLSearchParams();\n params.append('q', query);\n\n const path = `/api/sports/search?${params.toString()}`;\n\n const response = await this.networkClient.get<ApiResponse<SportsSearchResponse>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, 'search sports');\n }\n\n return response.data;\n }\n\n /**\n * Generic sports API proxy call.\n * Proxies any api-sports.io request through the indexer with server-side caching.\n * Returns the raw api-sports.io response body (passthrough format).\n *\n * @param sport - Sport identifier (e.g., 'football', 'basketball')\n * @param endpoint - API endpoint path (e.g., '/countries', '/fixtures')\n * @param params - Optional query parameters to forward\n * @returns The raw api-sports.io response\n * @throws Error if the request fails\n *\n * @example\n * ```ts\n * const data = await client.getSportsData('football', '/countries');\n * const leagues = await client.getSportsData('basketball', '/leagues', { season: '2023-2024' });\n * ```\n */\n async getSportsData<T = unknown>(\n sport: string,\n endpoint: string,\n params?: SportsQueryParams\n ): Promise<SportsApiResponse<T>> {\n const searchParams = new URLSearchParams();\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n searchParams.append(key, String(value));\n }\n }\n }\n\n const queryString = searchParams.toString();\n const path = `/api/sports/${encodeURIComponent(sport)}${endpoint}${queryString ? `?${queryString}` : ''}`;\n\n const response = await this.networkClient.get<SportsApiResponse<T>>(\n buildUrl(this.baseUrl, path)\n );\n\n if (!response.ok || !response.data) {\n throw handleApiError(response, `get sports data (${sport}${endpoint})`);\n }\n\n return response.data;\n }\n}\n"]}
|
package/dist/types.d.ts
CHANGED
|
@@ -50,6 +50,46 @@ export interface WalletFavoritesFilters {
|
|
|
50
50
|
limit?: number;
|
|
51
51
|
offset?: number;
|
|
52
52
|
}
|
|
53
|
+
export interface SetMarketOracleConfigRequest {
|
|
54
|
+
positiveTeamId: string;
|
|
55
|
+
positiveTeamName?: string;
|
|
56
|
+
negativeTeamName?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface MarketOracleConfigData {
|
|
59
|
+
id: string;
|
|
60
|
+
chainId: number;
|
|
61
|
+
marketId: string;
|
|
62
|
+
sportCode: number;
|
|
63
|
+
gameId: string;
|
|
64
|
+
positiveTeamId: string;
|
|
65
|
+
positiveTeamName: string | null;
|
|
66
|
+
negativeTeamName: string | null;
|
|
67
|
+
createdAt: number;
|
|
68
|
+
}
|
|
69
|
+
export interface MarketResolutionCheckSuccess {
|
|
70
|
+
result: number;
|
|
71
|
+
gameFinished: true;
|
|
72
|
+
positiveTeamName: string | null;
|
|
73
|
+
negativeTeamName: string | null;
|
|
74
|
+
winnerId: number;
|
|
75
|
+
winnerName: string;
|
|
76
|
+
score: string;
|
|
77
|
+
description: string;
|
|
78
|
+
timestamp: string;
|
|
79
|
+
}
|
|
80
|
+
export interface MarketResolutionCheckError {
|
|
81
|
+
success: false;
|
|
82
|
+
error: string;
|
|
83
|
+
gameStatus?: string;
|
|
84
|
+
timestamp: string;
|
|
85
|
+
}
|
|
86
|
+
export type MarketResolutionCheck = {
|
|
87
|
+
ok: true;
|
|
88
|
+
data: MarketResolutionCheckSuccess;
|
|
89
|
+
} | {
|
|
90
|
+
ok: false;
|
|
91
|
+
error: MarketResolutionCheckError;
|
|
92
|
+
};
|
|
53
93
|
export type SubscriptionChannel = 'markets' | 'market' | 'predictions' | 'dealers' | 'oracle';
|
|
54
94
|
export type SSEEventType = 'MarketCreated' | 'MarketResolved' | 'MarketCancelled' | 'MarketAbandoned' | 'PredictionPlaced' | 'PredictionUpdated' | 'WinningsClaimed' | 'RefundClaimed' | 'DealerFeeSet' | 'DealerFeesWithdrawn' | 'LicenseIssued' | 'LicenseTransferred' | 'PermissionsSet' | 'OracleRegistered' | 'OracleDataUpdated';
|
|
55
95
|
export interface SSEFilters {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAWA,YAAY,EAEV,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,QAAQ,EAER,aAAa,EACb,eAAe,EACf,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD,YAAY,EAEV,eAAe,EACf,YAAY,EACZ,OAAO,EAGP,YAAY,EACZ,SAAS,EACT,cAAc,EAGd,UAAU,EACV,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,GACf,MAAM,6BAA6B,CAAC;AASrC,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,UAAU,EACX,MAAM,6BAA6B,CAAC;AAGrC,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC;AAGhC,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AAGxC,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC;AAGtC,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAGpD,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAG9C,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAG9C,MAAM,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAGlD,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAG1C,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AAStC,MAAM,WAAW,aAAa;IAE5B,MAAM,CAAC,EAAE,OAAO,6BAA6B,EAAE,YAAY,CAAC;IAE5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,iBAAiB;IAEhC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,aAAa;IAE5B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,iBAAiB;IAEhC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,IAAI,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IAE5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,aAAa;IAE5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,sBAAsB;IAErC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAWD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;AAK9F,MAAM,MAAM,YAAY,GACpB,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,iBAAiB,GACjB,eAAe,GACf,cAAc,GACd,qBAAqB,GACrB,eAAe,GACf,oBAAoB,GACpB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,CAAC;AAKxB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,YAAY,CAAC;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,wBAAwB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;CAC9B;AAKD,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,+BAA+B,CAAC;AAKpC,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;AAMvF,cAAc,gBAAgB,CAAC;AAK/B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAwSA,cAAc,gBAAgB,CAAC","sourcesContent":["/**\n * Type definitions for Heavymath Prediction Market Indexer API Client\n *\n * Re-exports types from @sudobility/heavymath_types and @sudobility/types\n * to ensure type consistency between frontend and backend.\n */\n\n// ============================================================================\n// Re-exports from @sudobility/types\n// ============================================================================\n\nexport type {\n // Base response types\n BaseResponse,\n PaginationInfo,\n PaginatedResponse,\n Optional,\n // Network types\n NetworkClient,\n NetworkResponse,\n NetworkRequestOptions,\n} from '@sudobility/types';\n\n// ApiResponse is an alias for BaseResponse\nexport type { ApiResponse } from '@sudobility/types';\n\n// ============================================================================\n// Re-exports from @sudobility/heavymath_types\n// ============================================================================\n\nexport type {\n // Common types\n ChainPrefixedId,\n PredictionId,\n TxLogId,\n\n // Enums\n MarketStatus,\n ClaimType,\n WithdrawalType,\n\n // API Data types (JSON-serializable versions for API responses)\n MarketData,\n PredictionData,\n DealerNftData,\n DealerPermissionData,\n FeeWithdrawalData,\n OracleRequestData,\n MarketStateHistoryData,\n MarketStatsData,\n HealthData,\n SSEStatsData,\n WalletFavoriteData,\n CreateFavoriteRequest,\n FavoriteCountsFilters,\n PaginationMeta,\n} from '@sudobility/heavymath_types';\n\n// ============================================================================\n// Type Aliases for Backward Compatibility\n// ============================================================================\n\n// These aliases map old type names to new ones from @sudobility/heavymath_types\n// This maintains backward compatibility with existing code using the old names\n\nimport type {\n MarketData,\n PredictionData,\n DealerNftData,\n DealerPermissionData,\n FeeWithdrawalData,\n OracleRequestData,\n MarketStateHistoryData,\n MarketStatsData,\n HealthData,\n} from '@sudobility/heavymath_types';\n\n/** @deprecated Use MarketData instead */\nexport type Market = MarketData;\n\n/** @deprecated Use PredictionData instead */\nexport type Prediction = PredictionData;\n\n/** @deprecated Use DealerNftData instead */\nexport type DealerNFT = DealerNftData;\n\n/** @deprecated Use DealerPermissionData instead */\nexport type DealerPermission = DealerPermissionData;\n\n/** @deprecated Use FeeWithdrawalData instead */\nexport type FeeWithdrawal = FeeWithdrawalData;\n\n/** @deprecated Use OracleRequestData instead */\nexport type OracleRequest = OracleRequestData;\n\n/** @deprecated Use MarketStateHistoryData instead */\nexport type StateHistory = MarketStateHistoryData;\n\n/** @deprecated Use MarketStatsData instead */\nexport type MarketStats = MarketStatsData;\n\n/** @deprecated Use HealthData instead */\nexport type HealthStatus = HealthData;\n\n// ============================================================================\n// Client-specific Types (not in shared packages)\n// ============================================================================\n\n/**\n * Query parameters for the markets endpoint (GET /api/markets).\n */\nexport interface MarketFilters {\n /** Filter by market status. Accepts 'Active', 'Resolved', 'Cancelled', or 'Abandoned'. */\n status?: import('@sudobility/heavymath_types').MarketStatus;\n /** Filter by dealer address (the wallet that created the market). */\n dealer?: string;\n /** Filter by market category string (e.g., 'sports', 'crypto'). */\n category?: string;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n/**\n * Query parameters for the predictions endpoint (GET /api/predictions).\n */\nexport interface PredictionFilters {\n /** Filter by predictor wallet address. */\n user?: string;\n /** Filter by chain-prefixed market ID (e.g., '1-market-123'). */\n market?: string;\n /** Filter by claim status. `true` for claimed predictions, `false` for unclaimed. */\n claimed?: boolean;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n/**\n * Query parameters for the dealers endpoint (GET /api/dealers).\n */\nexport interface DealerFilters {\n /** Filter by dealer NFT owner wallet address. */\n owner?: string;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n/**\n * Query parameters for the withdrawals endpoint (GET /api/withdrawals).\n */\nexport interface WithdrawalFilters {\n /** Filter by withdrawer wallet address. */\n withdrawer?: string;\n /** Filter by withdrawal type. Accepts 'dealer' or 'system'. */\n type?: import('@sudobility/heavymath_types').WithdrawalType;\n /** Filter by chain-prefixed market ID. */\n market?: string;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n/**\n * Query parameters for the oracle requests endpoint (GET /api/oracle/requests).\n */\nexport interface OracleFilters {\n /** Filter by chain-prefixed market ID. */\n market?: string;\n /** Filter by timeout status. `true` for timed-out requests, `false` for pending. */\n timedOut?: boolean;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n/**\n * Query parameters for the wallet favorites endpoint (GET /api/wallet/:address/favorites).\n */\nexport interface WalletFavoritesFilters {\n /** Filter by favorite category (e.g., 'sports', 'crypto'). */\n category?: string;\n /** Filter by favorite subcategory (e.g., 'soccer', 'bitcoin'). */\n subcategory?: string;\n /** Filter by favorite item type (e.g., 'team', 'market'). */\n type?: string;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n// FavoriteCountsFilters is re-exported from @sudobility/heavymath_types above\n\n// ============================================================================\n// Server-Sent Events (SSE) Types\n// ============================================================================\n\n/**\n * SSE subscription channels\n */\nexport type SubscriptionChannel = 'markets' | 'market' | 'predictions' | 'dealers' | 'oracle';\n\n/**\n * SSE event types\n */\nexport type SSEEventType =\n | 'MarketCreated'\n | 'MarketResolved'\n | 'MarketCancelled'\n | 'MarketAbandoned'\n | 'PredictionPlaced'\n | 'PredictionUpdated'\n | 'WinningsClaimed'\n | 'RefundClaimed'\n | 'DealerFeeSet'\n | 'DealerFeesWithdrawn'\n | 'LicenseIssued'\n | 'LicenseTransferred'\n | 'PermissionsSet'\n | 'OracleRegistered'\n | 'OracleDataUpdated';\n\n/**\n * SSE subscription filters\n */\nexport interface SSEFilters {\n marketId?: string;\n dealer?: string;\n user?: string;\n category?: string;\n}\n\n/**\n * SSE connection message\n */\nexport interface SSEConnectedMessage {\n type: 'connected';\n clientId: string;\n subscriptionId: string;\n channel: SubscriptionChannel;\n timestamp: number;\n}\n\n/**\n * SSE data update message\n */\nexport interface SSEDataUpdateMessage {\n type: 'data_update';\n subscriptionId: string;\n eventType: SSEEventType;\n data: unknown;\n timestamp: number;\n}\n\n/**\n * SSE heartbeat message\n */\nexport interface SSEHeartbeatMessage {\n type: 'heartbeat';\n timestamp: number;\n}\n\n/**\n * SSE subscription confirmed message\n */\nexport interface SSESubscriptionConfirmedMessage {\n type: 'subscription_confirmed';\n subscriptionId: string;\n channel: SubscriptionChannel;\n}\n\n/**\n * Union of all SSE message types\n */\nexport type SSEMessage =\n | SSEConnectedMessage\n | SSEDataUpdateMessage\n | SSEHeartbeatMessage\n | SSESubscriptionConfirmedMessage;\n\n/**\n * SSE connection state\n */\nexport type SSEConnectionState = 'connecting' | 'connected' | 'disconnected' | 'error';\n\n// ============================================================================\n// Sports API Proxy Types\n// ============================================================================\n\nexport * from './types/sports';\n\n/**\n * Market created event data\n */\nexport interface MarketCreatedEventData {\n marketId: string;\n dealer: string;\n category: string;\n chainId: number;\n}\n\n/**\n * Market resolved event data\n */\nexport interface MarketResolvedEventData {\n marketId: string;\n resolution: string;\n equilibrium: string;\n chainId: number;\n}\n\n/**\n * Prediction placed event data\n */\nexport interface PredictionPlacedEventData {\n marketId: string;\n predictor: string;\n amount: string;\n percentage: string;\n chainId: number;\n}\n\n/**\n * Prediction updated event data\n */\nexport interface PredictionUpdatedEventData {\n marketId: string;\n predictor: string;\n newAmount: string;\n newPercentage: string;\n chainId: number;\n}\n\n/**\n * Winnings/refund claimed event data\n */\nexport interface ClaimEventData {\n marketId: string;\n predictor: string;\n amount: string;\n chainId: number;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAyWA,cAAc,gBAAgB,CAAC","sourcesContent":["/**\n * Type definitions for Heavymath Prediction Market Indexer API Client\n *\n * Re-exports types from @sudobility/heavymath_types and @sudobility/types\n * to ensure type consistency between frontend and backend.\n */\n\n// ============================================================================\n// Re-exports from @sudobility/types\n// ============================================================================\n\nexport type {\n // Base response types\n BaseResponse,\n PaginationInfo,\n PaginatedResponse,\n Optional,\n // Network types\n NetworkClient,\n NetworkResponse,\n NetworkRequestOptions,\n} from '@sudobility/types';\n\n// ApiResponse is an alias for BaseResponse\nexport type { ApiResponse } from '@sudobility/types';\n\n// ============================================================================\n// Re-exports from @sudobility/heavymath_types\n// ============================================================================\n\nexport type {\n // Common types\n ChainPrefixedId,\n PredictionId,\n TxLogId,\n\n // Enums\n MarketStatus,\n ClaimType,\n WithdrawalType,\n\n // API Data types (JSON-serializable versions for API responses)\n MarketData,\n PredictionData,\n DealerNftData,\n DealerPermissionData,\n FeeWithdrawalData,\n OracleRequestData,\n MarketStateHistoryData,\n MarketStatsData,\n HealthData,\n SSEStatsData,\n WalletFavoriteData,\n CreateFavoriteRequest,\n FavoriteCountsFilters,\n PaginationMeta,\n} from '@sudobility/heavymath_types';\n\n// ============================================================================\n// Type Aliases for Backward Compatibility\n// ============================================================================\n\n// These aliases map old type names to new ones from @sudobility/heavymath_types\n// This maintains backward compatibility with existing code using the old names\n\nimport type {\n MarketData,\n PredictionData,\n DealerNftData,\n DealerPermissionData,\n FeeWithdrawalData,\n OracleRequestData,\n MarketStateHistoryData,\n MarketStatsData,\n HealthData,\n} from '@sudobility/heavymath_types';\n\n/** @deprecated Use MarketData instead */\nexport type Market = MarketData;\n\n/** @deprecated Use PredictionData instead */\nexport type Prediction = PredictionData;\n\n/** @deprecated Use DealerNftData instead */\nexport type DealerNFT = DealerNftData;\n\n/** @deprecated Use DealerPermissionData instead */\nexport type DealerPermission = DealerPermissionData;\n\n/** @deprecated Use FeeWithdrawalData instead */\nexport type FeeWithdrawal = FeeWithdrawalData;\n\n/** @deprecated Use OracleRequestData instead */\nexport type OracleRequest = OracleRequestData;\n\n/** @deprecated Use MarketStateHistoryData instead */\nexport type StateHistory = MarketStateHistoryData;\n\n/** @deprecated Use MarketStatsData instead */\nexport type MarketStats = MarketStatsData;\n\n/** @deprecated Use HealthData instead */\nexport type HealthStatus = HealthData;\n\n// ============================================================================\n// Client-specific Types (not in shared packages)\n// ============================================================================\n\n/**\n * Query parameters for the markets endpoint (GET /api/markets).\n */\nexport interface MarketFilters {\n /** Filter by market status. Accepts 'Active', 'Resolved', 'Cancelled', or 'Abandoned'. */\n status?: import('@sudobility/heavymath_types').MarketStatus;\n /** Filter by dealer address (the wallet that created the market). */\n dealer?: string;\n /** Filter by market category string (e.g., 'sports', 'crypto'). */\n category?: string;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n/**\n * Query parameters for the predictions endpoint (GET /api/predictions).\n */\nexport interface PredictionFilters {\n /** Filter by predictor wallet address. */\n user?: string;\n /** Filter by chain-prefixed market ID (e.g., '1-market-123'). */\n market?: string;\n /** Filter by claim status. `true` for claimed predictions, `false` for unclaimed. */\n claimed?: boolean;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n/**\n * Query parameters for the dealers endpoint (GET /api/dealers).\n */\nexport interface DealerFilters {\n /** Filter by dealer NFT owner wallet address. */\n owner?: string;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n/**\n * Query parameters for the withdrawals endpoint (GET /api/withdrawals).\n */\nexport interface WithdrawalFilters {\n /** Filter by withdrawer wallet address. */\n withdrawer?: string;\n /** Filter by withdrawal type. Accepts 'dealer' or 'system'. */\n type?: import('@sudobility/heavymath_types').WithdrawalType;\n /** Filter by chain-prefixed market ID. */\n market?: string;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n/**\n * Query parameters for the oracle requests endpoint (GET /api/oracle/requests).\n */\nexport interface OracleFilters {\n /** Filter by chain-prefixed market ID. */\n market?: string;\n /** Filter by timeout status. `true` for timed-out requests, `false` for pending. */\n timedOut?: boolean;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n/**\n * Query parameters for the wallet favorites endpoint (GET /api/wallet/:address/favorites).\n */\nexport interface WalletFavoritesFilters {\n /** Filter by favorite category (e.g., 'sports', 'crypto'). */\n category?: string;\n /** Filter by favorite subcategory (e.g., 'soccer', 'bitcoin'). */\n subcategory?: string;\n /** Filter by favorite item type (e.g., 'team', 'market'). */\n type?: string;\n /** Maximum number of results to return. Defaults to 50 on the server. */\n limit?: number;\n /** Number of results to skip for pagination. Defaults to 0. */\n offset?: number;\n}\n\n// FavoriteCountsFilters is re-exported from @sudobility/heavymath_types above\n\n// ============================================================================\n// Oracle Resolution Types\n// ============================================================================\n\n/**\n * Request body for setting oracle config on a market.\n */\nexport interface SetMarketOracleConfigRequest {\n /** Sports API team ID whose win = positive outcome */\n positiveTeamId: string;\n /** Display name of the positive team */\n positiveTeamName?: string;\n /** Display name of the negative team */\n negativeTeamName?: string;\n}\n\n/**\n * Oracle config data returned by the API.\n */\nexport interface MarketOracleConfigData {\n id: string;\n chainId: number;\n marketId: string;\n sportCode: number;\n gameId: string;\n positiveTeamId: string;\n positiveTeamName: string | null;\n negativeTeamName: string | null;\n createdAt: number;\n}\n\n/**\n * Successful resolution check response (HTTP 200).\n * The `result` field is what Chainlink extracts on-chain.\n */\nexport interface MarketResolutionCheckSuccess {\n /** 1 = positive outcome, 0 = negative outcome */\n result: number;\n gameFinished: true;\n positiveTeamName: string | null;\n negativeTeamName: string | null;\n winnerId: number;\n winnerName: string;\n score: string;\n description: string;\n timestamp: string;\n}\n\n/**\n * Failed resolution check response (HTTP 400).\n */\nexport interface MarketResolutionCheckError {\n success: false;\n error: string;\n gameStatus?: string;\n timestamp: string;\n}\n\n/**\n * Union type for the resolve endpoint response.\n */\nexport type MarketResolutionCheck =\n | { ok: true; data: MarketResolutionCheckSuccess }\n | { ok: false; error: MarketResolutionCheckError };\n\n// ============================================================================\n// Server-Sent Events (SSE) Types\n// ============================================================================\n\n/**\n * SSE subscription channels\n */\nexport type SubscriptionChannel = 'markets' | 'market' | 'predictions' | 'dealers' | 'oracle';\n\n/**\n * SSE event types\n */\nexport type SSEEventType =\n | 'MarketCreated'\n | 'MarketResolved'\n | 'MarketCancelled'\n | 'MarketAbandoned'\n | 'PredictionPlaced'\n | 'PredictionUpdated'\n | 'WinningsClaimed'\n | 'RefundClaimed'\n | 'DealerFeeSet'\n | 'DealerFeesWithdrawn'\n | 'LicenseIssued'\n | 'LicenseTransferred'\n | 'PermissionsSet'\n | 'OracleRegistered'\n | 'OracleDataUpdated';\n\n/**\n * SSE subscription filters\n */\nexport interface SSEFilters {\n marketId?: string;\n dealer?: string;\n user?: string;\n category?: string;\n}\n\n/**\n * SSE connection message\n */\nexport interface SSEConnectedMessage {\n type: 'connected';\n clientId: string;\n subscriptionId: string;\n channel: SubscriptionChannel;\n timestamp: number;\n}\n\n/**\n * SSE data update message\n */\nexport interface SSEDataUpdateMessage {\n type: 'data_update';\n subscriptionId: string;\n eventType: SSEEventType;\n data: unknown;\n timestamp: number;\n}\n\n/**\n * SSE heartbeat message\n */\nexport interface SSEHeartbeatMessage {\n type: 'heartbeat';\n timestamp: number;\n}\n\n/**\n * SSE subscription confirmed message\n */\nexport interface SSESubscriptionConfirmedMessage {\n type: 'subscription_confirmed';\n subscriptionId: string;\n channel: SubscriptionChannel;\n}\n\n/**\n * Union of all SSE message types\n */\nexport type SSEMessage =\n | SSEConnectedMessage\n | SSEDataUpdateMessage\n | SSEHeartbeatMessage\n | SSESubscriptionConfirmedMessage;\n\n/**\n * SSE connection state\n */\nexport type SSEConnectionState = 'connecting' | 'connected' | 'disconnected' | 'error';\n\n// ============================================================================\n// Sports API Proxy Types\n// ============================================================================\n\nexport * from './types/sports';\n\n/**\n * Market created event data\n */\nexport interface MarketCreatedEventData {\n marketId: string;\n dealer: string;\n category: string;\n chainId: number;\n}\n\n/**\n * Market resolved event data\n */\nexport interface MarketResolvedEventData {\n marketId: string;\n resolution: string;\n equilibrium: string;\n chainId: number;\n}\n\n/**\n * Prediction placed event data\n */\nexport interface PredictionPlacedEventData {\n marketId: string;\n predictor: string;\n amount: string;\n percentage: string;\n chainId: number;\n}\n\n/**\n * Prediction updated event data\n */\nexport interface PredictionUpdatedEventData {\n marketId: string;\n predictor: string;\n newAmount: string;\n newPercentage: string;\n chainId: number;\n}\n\n/**\n * Winnings/refund claimed event data\n */\nexport interface ClaimEventData {\n marketId: string;\n predictor: string;\n amount: string;\n chainId: number;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sudobility/heavymath_indexer_client",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.33",
|
|
4
4
|
"description": "React and React Native compatible client library for Heavymath prediction market indexer API with TypeScript support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -42,14 +42,14 @@
|
|
|
42
42
|
"author": "John Huang",
|
|
43
43
|
"license": "BUSL-1.1",
|
|
44
44
|
"peerDependencies": {
|
|
45
|
-
"@sudobility/heavymath_types": "^0.0.
|
|
45
|
+
"@sudobility/heavymath_types": "^0.0.18",
|
|
46
46
|
"@sudobility/types": "^1.9.61",
|
|
47
47
|
"@tanstack/react-query": ">=5.0.0",
|
|
48
48
|
"react": ">=18.0.0",
|
|
49
49
|
"zustand": "^5.0.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@sudobility/heavymath_types": "^0.0.
|
|
52
|
+
"@sudobility/heavymath_types": "^0.0.18",
|
|
53
53
|
"@sudobility/types": "^1.9.61",
|
|
54
54
|
"@tanstack/react-query": "^5.90.5",
|
|
55
55
|
"@testing-library/dom": "^10.4.1",
|