@liberfi.io/ui-predict 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.d.mts +21 -0
- package/dist/client/index.d.ts +21 -0
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/index.mjs +2 -0
- package/dist/client/index.mjs.map +1 -0
- package/dist/index-CT0nyuNQ.d.mts +1029 -0
- package/dist/index-CT0nyuNQ.d.ts +1029 -0
- package/dist/index.d.mts +242 -0
- package/dist/index.d.ts +242 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +60 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { E as Event, M as Market, a as EventQueryOptions, P as PriceHistory, b as PriceHistoryInterval, I as IPredictClient, c as MarketQueryOptions, d as MarketTag, S as SearchQueryOptions, e as SearchResult, f as MarketPriceQuery, g as MarketPrice, h as MultipleMarketPrices, i as MarketPriceRequestItem, j as PriceHistoryQuery } from './index-CT0nyuNQ.mjs';
|
|
3
|
+
export { C as Chat, t as EventCreator, k as ImageOptimized, m as MarketCategory, l as MarketEvent, s as PriceHistoryPoint, n as PriceSide, o as SearchEvent, r as SearchPagination, q as SearchProfile, p as SearchTag, u as Template, T as TokenPriceData } from './index-CT0nyuNQ.mjs';
|
|
4
|
+
import * as react from 'react';
|
|
5
|
+
import { PropsWithChildren } from 'react';
|
|
6
|
+
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
7
|
+
import { UseQueryOptions } from '@tanstack/react-query';
|
|
8
|
+
|
|
9
|
+
declare global {
|
|
10
|
+
interface Window {
|
|
11
|
+
__LIBERFI_VERSION__?: {
|
|
12
|
+
[key: string]: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
declare const _default: "0.1.0";
|
|
17
|
+
|
|
18
|
+
interface EventsWidgetProps {
|
|
19
|
+
/** Callback when an event is selected */
|
|
20
|
+
onSelect?: (event: Event) => void;
|
|
21
|
+
/** Callback when an outcome (yes/no) is selected */
|
|
22
|
+
onSelectOutcome?: (event: Event, market: Market, side: "yes" | "no") => void;
|
|
23
|
+
}
|
|
24
|
+
declare function EventsWidget({ onSelect, onSelectOutcome }: EventsWidgetProps): react_jsx_runtime.JSX.Element;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* useEvents parameters
|
|
28
|
+
*/
|
|
29
|
+
interface UseEventsParams {
|
|
30
|
+
/** Initial page number, defaults to 1 */
|
|
31
|
+
initialPage?: number;
|
|
32
|
+
/** Number of items per page, defaults to 48 */
|
|
33
|
+
pageSize?: number;
|
|
34
|
+
/** Query options (excluding limit and offset) */
|
|
35
|
+
queryOptions?: Omit<EventQueryOptions, "limit" | "offset">;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* useEvents return value
|
|
39
|
+
*/
|
|
40
|
+
interface UseEventsResult {
|
|
41
|
+
/** Events list data */
|
|
42
|
+
data: Event[];
|
|
43
|
+
/** Whether data is loading */
|
|
44
|
+
isLoading: boolean;
|
|
45
|
+
/** Whether data is being fetched (including background refresh) */
|
|
46
|
+
isFetching: boolean;
|
|
47
|
+
/** Whether there is an error */
|
|
48
|
+
isError: boolean;
|
|
49
|
+
/** Error information */
|
|
50
|
+
error: Error | null;
|
|
51
|
+
/** Current page number (starts from 1) */
|
|
52
|
+
page: number;
|
|
53
|
+
/** Number of items per page */
|
|
54
|
+
pageSize: number;
|
|
55
|
+
/** Whether there is a next page */
|
|
56
|
+
hasNextPage: boolean;
|
|
57
|
+
/** Whether there is a previous page */
|
|
58
|
+
hasPrevPage: boolean;
|
|
59
|
+
/** Navigate to a specific page */
|
|
60
|
+
goToPage: (page: number) => void;
|
|
61
|
+
/** Go to next page */
|
|
62
|
+
nextPage: () => void;
|
|
63
|
+
/** Go to previous page */
|
|
64
|
+
prevPage: () => void;
|
|
65
|
+
/** Update query options */
|
|
66
|
+
setQueryOptions: (options: Omit<EventQueryOptions, "limit" | "offset">) => void;
|
|
67
|
+
/** Refetch data */
|
|
68
|
+
refetch: () => void;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Events list hook with pagination and query options support
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```tsx
|
|
75
|
+
* const {
|
|
76
|
+
* data,
|
|
77
|
+
* isLoading,
|
|
78
|
+
* page,
|
|
79
|
+
* hasNextPage,
|
|
80
|
+
* nextPage,
|
|
81
|
+
* setQueryOptions
|
|
82
|
+
* } = useEvents({
|
|
83
|
+
* pageSize: 20,
|
|
84
|
+
* queryOptions: { category: 'sports' }
|
|
85
|
+
* });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
declare function useEvents({ initialPage, pageSize, queryOptions: initialQueryOptions, }?: UseEventsParams): UseEventsResult;
|
|
89
|
+
|
|
90
|
+
type EventsUIProps = {
|
|
91
|
+
events: Event[];
|
|
92
|
+
onSelect?: (event: Event) => void;
|
|
93
|
+
onSelectOutcome?: (event: Event, market: Market, side: "yes" | "no") => void;
|
|
94
|
+
};
|
|
95
|
+
declare function EventsUI({ events, onSelect, onSelectOutcome }: EventsUIProps): react_jsx_runtime.JSX.Element;
|
|
96
|
+
|
|
97
|
+
type EventItemSkeletonProps = {
|
|
98
|
+
className?: string;
|
|
99
|
+
};
|
|
100
|
+
declare function EventItemSkeleton({ className }: EventItemSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
101
|
+
type EventsSkeletonProps = {
|
|
102
|
+
count?: number;
|
|
103
|
+
};
|
|
104
|
+
declare function EventsSkeleton({ count }: EventsSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
105
|
+
|
|
106
|
+
type EventItemUIProps = {
|
|
107
|
+
event: Event;
|
|
108
|
+
onSelect?: (event: Event) => void;
|
|
109
|
+
onSelectOutcome?: (event: Event, market: Market, side: "yes" | "no") => void;
|
|
110
|
+
};
|
|
111
|
+
declare function EventItemUI({ event, onSelect, onSelectOutcome, }: EventItemUIProps): react_jsx_runtime.JSX.Element;
|
|
112
|
+
|
|
113
|
+
interface EventDetailUIProps {
|
|
114
|
+
event: Event;
|
|
115
|
+
/** Map of marketId to price history data */
|
|
116
|
+
priceHistories?: Map<string, PriceHistory>;
|
|
117
|
+
/** Interval for price history query */
|
|
118
|
+
priceHistoryInterval?: PriceHistoryInterval;
|
|
119
|
+
/** Whether price history is loading */
|
|
120
|
+
isPriceHistoryLoading?: boolean;
|
|
121
|
+
/** Map of marketId to price history error */
|
|
122
|
+
priceHistoryErrors?: Map<string, Error>;
|
|
123
|
+
/** Callback when interval changes */
|
|
124
|
+
onIntervalChange?: (interval: PriceHistoryInterval) => void;
|
|
125
|
+
/** Selected market IDs for price history chart */
|
|
126
|
+
selectedMarketIds?: string[];
|
|
127
|
+
/** Callback when selected markets change */
|
|
128
|
+
onMarketSelectionChange?: (marketIds: string[]) => void;
|
|
129
|
+
}
|
|
130
|
+
declare function EventDetailUI({ event, priceHistories, priceHistoryInterval, isPriceHistoryLoading, priceHistoryErrors, onIntervalChange, selectedMarketIds, onMarketSelectionChange, }: EventDetailUIProps): react_jsx_runtime.JSX.Element;
|
|
131
|
+
|
|
132
|
+
interface EventDetailWidgetProps {
|
|
133
|
+
eventId: string;
|
|
134
|
+
/** Initial market IDs to query price history for. Default is first 4 markets of the event, max is 4. */
|
|
135
|
+
initialMarketIds?: string[];
|
|
136
|
+
/** Initial interval for price history. Default is ONE_WEEK. */
|
|
137
|
+
initialInterval?: PriceHistoryInterval;
|
|
138
|
+
}
|
|
139
|
+
declare function EventDetailWidget({ eventId, initialMarketIds, initialInterval, }: EventDetailWidgetProps): react_jsx_runtime.JSX.Element;
|
|
140
|
+
|
|
141
|
+
interface UseEventDetailParams {
|
|
142
|
+
eventId: string;
|
|
143
|
+
/** Market IDs to query price history for. Default is first 4 markets of the event, max is 4. */
|
|
144
|
+
priceHistoryMarketIds?: string[];
|
|
145
|
+
/** Interval for price history query. Default is ONE_WEEK. */
|
|
146
|
+
priceHistoryInterval?: PriceHistoryInterval;
|
|
147
|
+
}
|
|
148
|
+
declare const useEventDetail: (params: UseEventDetailParams) => {
|
|
149
|
+
event: Event | undefined;
|
|
150
|
+
isEventLoading: boolean;
|
|
151
|
+
eventError: Error | null;
|
|
152
|
+
priceHistories: Map<string, PriceHistory>;
|
|
153
|
+
isPriceHistoryLoading: boolean;
|
|
154
|
+
priceHistoryErrors: Map<string, Error>;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
interface EventDetailSkeletonProps {
|
|
158
|
+
/** Number of market rows to show in table skeleton */
|
|
159
|
+
marketCount?: number;
|
|
160
|
+
}
|
|
161
|
+
declare function EventDetailSkeleton({ marketCount, }: EventDetailSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
162
|
+
|
|
163
|
+
interface PredictContextValue {
|
|
164
|
+
client: IPredictClient;
|
|
165
|
+
}
|
|
166
|
+
declare const PredictContext: react.Context<PredictContextValue>;
|
|
167
|
+
|
|
168
|
+
type PredictProviderProps = PropsWithChildren<{
|
|
169
|
+
client: IPredictClient;
|
|
170
|
+
}>;
|
|
171
|
+
declare function PredictProvider({ client, children }: PredictProviderProps): react_jsx_runtime.JSX.Element;
|
|
172
|
+
|
|
173
|
+
declare function usePredictContext(): PredictContextValue;
|
|
174
|
+
|
|
175
|
+
declare function usePredictClient(): IPredictClient;
|
|
176
|
+
|
|
177
|
+
declare function marketsQueryKey(options?: MarketQueryOptions): unknown[];
|
|
178
|
+
declare function fetchMarkets(client: IPredictClient, options?: MarketQueryOptions): Promise<Market[]>;
|
|
179
|
+
declare function useMarketsQuery(options?: MarketQueryOptions, queryOptions?: Omit<UseQueryOptions<Market[], Error, Market[], unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Market[], Error>;
|
|
180
|
+
|
|
181
|
+
interface UseMarketByIdQueryParams {
|
|
182
|
+
id: string;
|
|
183
|
+
includeTag?: boolean;
|
|
184
|
+
}
|
|
185
|
+
declare function marketByIdQueryKey(params: UseMarketByIdQueryParams): unknown[];
|
|
186
|
+
declare function fetchMarketById(client: IPredictClient, params: UseMarketByIdQueryParams): Promise<Market>;
|
|
187
|
+
declare function useMarketByIdQuery(params: UseMarketByIdQueryParams, options?: Omit<UseQueryOptions<Market, Error, Market, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Market, Error>;
|
|
188
|
+
|
|
189
|
+
interface UseMarketBySlugQueryParams {
|
|
190
|
+
slug: string;
|
|
191
|
+
includeTag?: boolean;
|
|
192
|
+
}
|
|
193
|
+
declare function marketBySlugQueryKey(params: UseMarketBySlugQueryParams): unknown[];
|
|
194
|
+
declare function fetchMarketBySlug(client: IPredictClient, params: UseMarketBySlugQueryParams): Promise<Market>;
|
|
195
|
+
declare function useMarketBySlugQuery(params: UseMarketBySlugQueryParams, options?: Omit<UseQueryOptions<Market, Error, Market, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Market, Error>;
|
|
196
|
+
|
|
197
|
+
declare function marketTagsByIdQueryKey(id: string): unknown[];
|
|
198
|
+
declare function fetchMarketTagsById(client: IPredictClient, id: string): Promise<MarketTag[]>;
|
|
199
|
+
declare function useMarketTagsByIdQuery(id: string, options?: Omit<UseQueryOptions<MarketTag[], Error, MarketTag[], unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<MarketTag[], Error>;
|
|
200
|
+
|
|
201
|
+
declare function searchQueryKey(options: SearchQueryOptions): unknown[];
|
|
202
|
+
declare function fetchSearch(client: IPredictClient, options: SearchQueryOptions): Promise<SearchResult>;
|
|
203
|
+
declare function useSearchQuery(options: SearchQueryOptions, queryOptions?: Omit<UseQueryOptions<SearchResult, Error, SearchResult, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<SearchResult, Error>;
|
|
204
|
+
|
|
205
|
+
declare function marketPriceQueryKey(query: MarketPriceQuery): unknown[];
|
|
206
|
+
declare function fetchMarketPrice(client: IPredictClient, query: MarketPriceQuery): Promise<MarketPrice>;
|
|
207
|
+
declare function useMarketPriceQuery(query: MarketPriceQuery, options?: Omit<UseQueryOptions<MarketPrice, Error, MarketPrice, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<MarketPrice, Error>;
|
|
208
|
+
|
|
209
|
+
declare function multipleMarketPricesQueryKey(): unknown[];
|
|
210
|
+
declare function fetchMultipleMarketPrices(client: IPredictClient): Promise<MultipleMarketPrices>;
|
|
211
|
+
declare function useMultipleMarketPricesQuery(options?: Omit<UseQueryOptions<MultipleMarketPrices, Error, MultipleMarketPrices, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<MultipleMarketPrices, Error>;
|
|
212
|
+
|
|
213
|
+
declare function multipleMarketPricesByRequestQueryKey(requests: MarketPriceRequestItem[]): unknown[];
|
|
214
|
+
declare function fetchMultipleMarketPricesByRequest(client: IPredictClient, requests: MarketPriceRequestItem[]): Promise<MultipleMarketPrices>;
|
|
215
|
+
declare function useMultipleMarketPricesByRequestQuery(requests: MarketPriceRequestItem[], options?: Omit<UseQueryOptions<MultipleMarketPrices, Error, MultipleMarketPrices, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<MultipleMarketPrices, Error>;
|
|
216
|
+
|
|
217
|
+
declare function priceHistoryQueryKey(query: PriceHistoryQuery): unknown[];
|
|
218
|
+
declare function fetchPriceHistory(client: IPredictClient, query: PriceHistoryQuery): Promise<PriceHistory>;
|
|
219
|
+
declare function usePriceHistoryQuery(query: PriceHistoryQuery, options?: Omit<UseQueryOptions<PriceHistory, Error, PriceHistory, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<PriceHistory, Error>;
|
|
220
|
+
|
|
221
|
+
declare function eventsQueryKey(options?: EventQueryOptions): unknown[];
|
|
222
|
+
declare function fetchEvents(client: IPredictClient, options?: EventQueryOptions): Promise<Event[]>;
|
|
223
|
+
declare function useEventsQuery(options?: EventQueryOptions, queryOptions?: Omit<UseQueryOptions<Event[], Error, Event[], unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Event[], Error>;
|
|
224
|
+
|
|
225
|
+
interface UseEventByIdQueryParams {
|
|
226
|
+
id: string;
|
|
227
|
+
includeChat?: boolean;
|
|
228
|
+
includeTemplate?: boolean;
|
|
229
|
+
}
|
|
230
|
+
declare function eventByIdQueryKey(params: UseEventByIdQueryParams): unknown[];
|
|
231
|
+
declare function fetchEventById(client: IPredictClient, params: UseEventByIdQueryParams): Promise<Event>;
|
|
232
|
+
declare function useEventByIdQuery(params: UseEventByIdQueryParams, options?: Omit<UseQueryOptions<Event, Error, Event, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Event, Error>;
|
|
233
|
+
|
|
234
|
+
declare function eventTagsByIdQueryKey(id: string): unknown[];
|
|
235
|
+
declare function fetchEventTagsById(client: IPredictClient, id: string): Promise<MarketTag[]>;
|
|
236
|
+
declare function useEventTagsByIdQuery(id: string, options?: Omit<UseQueryOptions<MarketTag[], Error, MarketTag[], unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<MarketTag[], Error>;
|
|
237
|
+
|
|
238
|
+
declare function eventBySlugQueryKey(slug: string): unknown[];
|
|
239
|
+
declare function fetchEventBySlug(client: IPredictClient, slug: string): Promise<Event>;
|
|
240
|
+
declare function useEventBySlugQuery(slug: string, options?: Omit<UseQueryOptions<Event, Error, Event, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Event, Error>;
|
|
241
|
+
|
|
242
|
+
export { Event, EventDetailSkeleton, type EventDetailSkeletonProps, EventDetailUI, type EventDetailUIProps, EventDetailWidget, type EventDetailWidgetProps, EventItemSkeleton, type EventItemSkeletonProps, EventItemUI, type EventItemUIProps, EventQueryOptions, EventsSkeleton, type EventsSkeletonProps, EventsUI, type EventsUIProps, EventsWidget, type EventsWidgetProps, IPredictClient, Market, MarketPrice, MarketPriceQuery, MarketPriceRequestItem, MarketQueryOptions, MarketTag, MultipleMarketPrices, PredictContext, type PredictContextValue, PredictProvider, type PredictProviderProps, PriceHistory, PriceHistoryInterval, PriceHistoryQuery, SearchQueryOptions, SearchResult, type UseEventByIdQueryParams, type UseEventDetailParams, type UseEventsParams, type UseEventsResult, type UseMarketByIdQueryParams, type UseMarketBySlugQueryParams, eventByIdQueryKey, eventBySlugQueryKey, eventTagsByIdQueryKey, eventsQueryKey, fetchEventById, fetchEventBySlug, fetchEventTagsById, fetchEvents, fetchMarketById, fetchMarketBySlug, fetchMarketPrice, fetchMarketTagsById, fetchMarkets, fetchMultipleMarketPrices, fetchMultipleMarketPricesByRequest, fetchPriceHistory, fetchSearch, marketByIdQueryKey, marketBySlugQueryKey, marketPriceQueryKey, marketTagsByIdQueryKey, marketsQueryKey, multipleMarketPricesByRequestQueryKey, multipleMarketPricesQueryKey, priceHistoryQueryKey, searchQueryKey, useEventByIdQuery, useEventBySlugQuery, useEventDetail, useEventTagsByIdQuery, useEvents, useEventsQuery, useMarketByIdQuery, useMarketBySlugQuery, useMarketPriceQuery, useMarketTagsByIdQuery, useMarketsQuery, useMultipleMarketPricesByRequestQuery, useMultipleMarketPricesQuery, usePredictClient, usePredictContext, usePriceHistoryQuery, useSearchQuery, _default as version };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { E as Event, M as Market, a as EventQueryOptions, P as PriceHistory, b as PriceHistoryInterval, I as IPredictClient, c as MarketQueryOptions, d as MarketTag, S as SearchQueryOptions, e as SearchResult, f as MarketPriceQuery, g as MarketPrice, h as MultipleMarketPrices, i as MarketPriceRequestItem, j as PriceHistoryQuery } from './index-CT0nyuNQ.js';
|
|
3
|
+
export { C as Chat, t as EventCreator, k as ImageOptimized, m as MarketCategory, l as MarketEvent, s as PriceHistoryPoint, n as PriceSide, o as SearchEvent, r as SearchPagination, q as SearchProfile, p as SearchTag, u as Template, T as TokenPriceData } from './index-CT0nyuNQ.js';
|
|
4
|
+
import * as react from 'react';
|
|
5
|
+
import { PropsWithChildren } from 'react';
|
|
6
|
+
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
7
|
+
import { UseQueryOptions } from '@tanstack/react-query';
|
|
8
|
+
|
|
9
|
+
declare global {
|
|
10
|
+
interface Window {
|
|
11
|
+
__LIBERFI_VERSION__?: {
|
|
12
|
+
[key: string]: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
declare const _default: "0.1.0";
|
|
17
|
+
|
|
18
|
+
interface EventsWidgetProps {
|
|
19
|
+
/** Callback when an event is selected */
|
|
20
|
+
onSelect?: (event: Event) => void;
|
|
21
|
+
/** Callback when an outcome (yes/no) is selected */
|
|
22
|
+
onSelectOutcome?: (event: Event, market: Market, side: "yes" | "no") => void;
|
|
23
|
+
}
|
|
24
|
+
declare function EventsWidget({ onSelect, onSelectOutcome }: EventsWidgetProps): react_jsx_runtime.JSX.Element;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* useEvents parameters
|
|
28
|
+
*/
|
|
29
|
+
interface UseEventsParams {
|
|
30
|
+
/** Initial page number, defaults to 1 */
|
|
31
|
+
initialPage?: number;
|
|
32
|
+
/** Number of items per page, defaults to 48 */
|
|
33
|
+
pageSize?: number;
|
|
34
|
+
/** Query options (excluding limit and offset) */
|
|
35
|
+
queryOptions?: Omit<EventQueryOptions, "limit" | "offset">;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* useEvents return value
|
|
39
|
+
*/
|
|
40
|
+
interface UseEventsResult {
|
|
41
|
+
/** Events list data */
|
|
42
|
+
data: Event[];
|
|
43
|
+
/** Whether data is loading */
|
|
44
|
+
isLoading: boolean;
|
|
45
|
+
/** Whether data is being fetched (including background refresh) */
|
|
46
|
+
isFetching: boolean;
|
|
47
|
+
/** Whether there is an error */
|
|
48
|
+
isError: boolean;
|
|
49
|
+
/** Error information */
|
|
50
|
+
error: Error | null;
|
|
51
|
+
/** Current page number (starts from 1) */
|
|
52
|
+
page: number;
|
|
53
|
+
/** Number of items per page */
|
|
54
|
+
pageSize: number;
|
|
55
|
+
/** Whether there is a next page */
|
|
56
|
+
hasNextPage: boolean;
|
|
57
|
+
/** Whether there is a previous page */
|
|
58
|
+
hasPrevPage: boolean;
|
|
59
|
+
/** Navigate to a specific page */
|
|
60
|
+
goToPage: (page: number) => void;
|
|
61
|
+
/** Go to next page */
|
|
62
|
+
nextPage: () => void;
|
|
63
|
+
/** Go to previous page */
|
|
64
|
+
prevPage: () => void;
|
|
65
|
+
/** Update query options */
|
|
66
|
+
setQueryOptions: (options: Omit<EventQueryOptions, "limit" | "offset">) => void;
|
|
67
|
+
/** Refetch data */
|
|
68
|
+
refetch: () => void;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Events list hook with pagination and query options support
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```tsx
|
|
75
|
+
* const {
|
|
76
|
+
* data,
|
|
77
|
+
* isLoading,
|
|
78
|
+
* page,
|
|
79
|
+
* hasNextPage,
|
|
80
|
+
* nextPage,
|
|
81
|
+
* setQueryOptions
|
|
82
|
+
* } = useEvents({
|
|
83
|
+
* pageSize: 20,
|
|
84
|
+
* queryOptions: { category: 'sports' }
|
|
85
|
+
* });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
declare function useEvents({ initialPage, pageSize, queryOptions: initialQueryOptions, }?: UseEventsParams): UseEventsResult;
|
|
89
|
+
|
|
90
|
+
type EventsUIProps = {
|
|
91
|
+
events: Event[];
|
|
92
|
+
onSelect?: (event: Event) => void;
|
|
93
|
+
onSelectOutcome?: (event: Event, market: Market, side: "yes" | "no") => void;
|
|
94
|
+
};
|
|
95
|
+
declare function EventsUI({ events, onSelect, onSelectOutcome }: EventsUIProps): react_jsx_runtime.JSX.Element;
|
|
96
|
+
|
|
97
|
+
type EventItemSkeletonProps = {
|
|
98
|
+
className?: string;
|
|
99
|
+
};
|
|
100
|
+
declare function EventItemSkeleton({ className }: EventItemSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
101
|
+
type EventsSkeletonProps = {
|
|
102
|
+
count?: number;
|
|
103
|
+
};
|
|
104
|
+
declare function EventsSkeleton({ count }: EventsSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
105
|
+
|
|
106
|
+
type EventItemUIProps = {
|
|
107
|
+
event: Event;
|
|
108
|
+
onSelect?: (event: Event) => void;
|
|
109
|
+
onSelectOutcome?: (event: Event, market: Market, side: "yes" | "no") => void;
|
|
110
|
+
};
|
|
111
|
+
declare function EventItemUI({ event, onSelect, onSelectOutcome, }: EventItemUIProps): react_jsx_runtime.JSX.Element;
|
|
112
|
+
|
|
113
|
+
interface EventDetailUIProps {
|
|
114
|
+
event: Event;
|
|
115
|
+
/** Map of marketId to price history data */
|
|
116
|
+
priceHistories?: Map<string, PriceHistory>;
|
|
117
|
+
/** Interval for price history query */
|
|
118
|
+
priceHistoryInterval?: PriceHistoryInterval;
|
|
119
|
+
/** Whether price history is loading */
|
|
120
|
+
isPriceHistoryLoading?: boolean;
|
|
121
|
+
/** Map of marketId to price history error */
|
|
122
|
+
priceHistoryErrors?: Map<string, Error>;
|
|
123
|
+
/** Callback when interval changes */
|
|
124
|
+
onIntervalChange?: (interval: PriceHistoryInterval) => void;
|
|
125
|
+
/** Selected market IDs for price history chart */
|
|
126
|
+
selectedMarketIds?: string[];
|
|
127
|
+
/** Callback when selected markets change */
|
|
128
|
+
onMarketSelectionChange?: (marketIds: string[]) => void;
|
|
129
|
+
}
|
|
130
|
+
declare function EventDetailUI({ event, priceHistories, priceHistoryInterval, isPriceHistoryLoading, priceHistoryErrors, onIntervalChange, selectedMarketIds, onMarketSelectionChange, }: EventDetailUIProps): react_jsx_runtime.JSX.Element;
|
|
131
|
+
|
|
132
|
+
interface EventDetailWidgetProps {
|
|
133
|
+
eventId: string;
|
|
134
|
+
/** Initial market IDs to query price history for. Default is first 4 markets of the event, max is 4. */
|
|
135
|
+
initialMarketIds?: string[];
|
|
136
|
+
/** Initial interval for price history. Default is ONE_WEEK. */
|
|
137
|
+
initialInterval?: PriceHistoryInterval;
|
|
138
|
+
}
|
|
139
|
+
declare function EventDetailWidget({ eventId, initialMarketIds, initialInterval, }: EventDetailWidgetProps): react_jsx_runtime.JSX.Element;
|
|
140
|
+
|
|
141
|
+
interface UseEventDetailParams {
|
|
142
|
+
eventId: string;
|
|
143
|
+
/** Market IDs to query price history for. Default is first 4 markets of the event, max is 4. */
|
|
144
|
+
priceHistoryMarketIds?: string[];
|
|
145
|
+
/** Interval for price history query. Default is ONE_WEEK. */
|
|
146
|
+
priceHistoryInterval?: PriceHistoryInterval;
|
|
147
|
+
}
|
|
148
|
+
declare const useEventDetail: (params: UseEventDetailParams) => {
|
|
149
|
+
event: Event | undefined;
|
|
150
|
+
isEventLoading: boolean;
|
|
151
|
+
eventError: Error | null;
|
|
152
|
+
priceHistories: Map<string, PriceHistory>;
|
|
153
|
+
isPriceHistoryLoading: boolean;
|
|
154
|
+
priceHistoryErrors: Map<string, Error>;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
interface EventDetailSkeletonProps {
|
|
158
|
+
/** Number of market rows to show in table skeleton */
|
|
159
|
+
marketCount?: number;
|
|
160
|
+
}
|
|
161
|
+
declare function EventDetailSkeleton({ marketCount, }: EventDetailSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
162
|
+
|
|
163
|
+
interface PredictContextValue {
|
|
164
|
+
client: IPredictClient;
|
|
165
|
+
}
|
|
166
|
+
declare const PredictContext: react.Context<PredictContextValue>;
|
|
167
|
+
|
|
168
|
+
type PredictProviderProps = PropsWithChildren<{
|
|
169
|
+
client: IPredictClient;
|
|
170
|
+
}>;
|
|
171
|
+
declare function PredictProvider({ client, children }: PredictProviderProps): react_jsx_runtime.JSX.Element;
|
|
172
|
+
|
|
173
|
+
declare function usePredictContext(): PredictContextValue;
|
|
174
|
+
|
|
175
|
+
declare function usePredictClient(): IPredictClient;
|
|
176
|
+
|
|
177
|
+
declare function marketsQueryKey(options?: MarketQueryOptions): unknown[];
|
|
178
|
+
declare function fetchMarkets(client: IPredictClient, options?: MarketQueryOptions): Promise<Market[]>;
|
|
179
|
+
declare function useMarketsQuery(options?: MarketQueryOptions, queryOptions?: Omit<UseQueryOptions<Market[], Error, Market[], unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Market[], Error>;
|
|
180
|
+
|
|
181
|
+
interface UseMarketByIdQueryParams {
|
|
182
|
+
id: string;
|
|
183
|
+
includeTag?: boolean;
|
|
184
|
+
}
|
|
185
|
+
declare function marketByIdQueryKey(params: UseMarketByIdQueryParams): unknown[];
|
|
186
|
+
declare function fetchMarketById(client: IPredictClient, params: UseMarketByIdQueryParams): Promise<Market>;
|
|
187
|
+
declare function useMarketByIdQuery(params: UseMarketByIdQueryParams, options?: Omit<UseQueryOptions<Market, Error, Market, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Market, Error>;
|
|
188
|
+
|
|
189
|
+
interface UseMarketBySlugQueryParams {
|
|
190
|
+
slug: string;
|
|
191
|
+
includeTag?: boolean;
|
|
192
|
+
}
|
|
193
|
+
declare function marketBySlugQueryKey(params: UseMarketBySlugQueryParams): unknown[];
|
|
194
|
+
declare function fetchMarketBySlug(client: IPredictClient, params: UseMarketBySlugQueryParams): Promise<Market>;
|
|
195
|
+
declare function useMarketBySlugQuery(params: UseMarketBySlugQueryParams, options?: Omit<UseQueryOptions<Market, Error, Market, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Market, Error>;
|
|
196
|
+
|
|
197
|
+
declare function marketTagsByIdQueryKey(id: string): unknown[];
|
|
198
|
+
declare function fetchMarketTagsById(client: IPredictClient, id: string): Promise<MarketTag[]>;
|
|
199
|
+
declare function useMarketTagsByIdQuery(id: string, options?: Omit<UseQueryOptions<MarketTag[], Error, MarketTag[], unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<MarketTag[], Error>;
|
|
200
|
+
|
|
201
|
+
declare function searchQueryKey(options: SearchQueryOptions): unknown[];
|
|
202
|
+
declare function fetchSearch(client: IPredictClient, options: SearchQueryOptions): Promise<SearchResult>;
|
|
203
|
+
declare function useSearchQuery(options: SearchQueryOptions, queryOptions?: Omit<UseQueryOptions<SearchResult, Error, SearchResult, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<SearchResult, Error>;
|
|
204
|
+
|
|
205
|
+
declare function marketPriceQueryKey(query: MarketPriceQuery): unknown[];
|
|
206
|
+
declare function fetchMarketPrice(client: IPredictClient, query: MarketPriceQuery): Promise<MarketPrice>;
|
|
207
|
+
declare function useMarketPriceQuery(query: MarketPriceQuery, options?: Omit<UseQueryOptions<MarketPrice, Error, MarketPrice, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<MarketPrice, Error>;
|
|
208
|
+
|
|
209
|
+
declare function multipleMarketPricesQueryKey(): unknown[];
|
|
210
|
+
declare function fetchMultipleMarketPrices(client: IPredictClient): Promise<MultipleMarketPrices>;
|
|
211
|
+
declare function useMultipleMarketPricesQuery(options?: Omit<UseQueryOptions<MultipleMarketPrices, Error, MultipleMarketPrices, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<MultipleMarketPrices, Error>;
|
|
212
|
+
|
|
213
|
+
declare function multipleMarketPricesByRequestQueryKey(requests: MarketPriceRequestItem[]): unknown[];
|
|
214
|
+
declare function fetchMultipleMarketPricesByRequest(client: IPredictClient, requests: MarketPriceRequestItem[]): Promise<MultipleMarketPrices>;
|
|
215
|
+
declare function useMultipleMarketPricesByRequestQuery(requests: MarketPriceRequestItem[], options?: Omit<UseQueryOptions<MultipleMarketPrices, Error, MultipleMarketPrices, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<MultipleMarketPrices, Error>;
|
|
216
|
+
|
|
217
|
+
declare function priceHistoryQueryKey(query: PriceHistoryQuery): unknown[];
|
|
218
|
+
declare function fetchPriceHistory(client: IPredictClient, query: PriceHistoryQuery): Promise<PriceHistory>;
|
|
219
|
+
declare function usePriceHistoryQuery(query: PriceHistoryQuery, options?: Omit<UseQueryOptions<PriceHistory, Error, PriceHistory, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<PriceHistory, Error>;
|
|
220
|
+
|
|
221
|
+
declare function eventsQueryKey(options?: EventQueryOptions): unknown[];
|
|
222
|
+
declare function fetchEvents(client: IPredictClient, options?: EventQueryOptions): Promise<Event[]>;
|
|
223
|
+
declare function useEventsQuery(options?: EventQueryOptions, queryOptions?: Omit<UseQueryOptions<Event[], Error, Event[], unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Event[], Error>;
|
|
224
|
+
|
|
225
|
+
interface UseEventByIdQueryParams {
|
|
226
|
+
id: string;
|
|
227
|
+
includeChat?: boolean;
|
|
228
|
+
includeTemplate?: boolean;
|
|
229
|
+
}
|
|
230
|
+
declare function eventByIdQueryKey(params: UseEventByIdQueryParams): unknown[];
|
|
231
|
+
declare function fetchEventById(client: IPredictClient, params: UseEventByIdQueryParams): Promise<Event>;
|
|
232
|
+
declare function useEventByIdQuery(params: UseEventByIdQueryParams, options?: Omit<UseQueryOptions<Event, Error, Event, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Event, Error>;
|
|
233
|
+
|
|
234
|
+
declare function eventTagsByIdQueryKey(id: string): unknown[];
|
|
235
|
+
declare function fetchEventTagsById(client: IPredictClient, id: string): Promise<MarketTag[]>;
|
|
236
|
+
declare function useEventTagsByIdQuery(id: string, options?: Omit<UseQueryOptions<MarketTag[], Error, MarketTag[], unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<MarketTag[], Error>;
|
|
237
|
+
|
|
238
|
+
declare function eventBySlugQueryKey(slug: string): unknown[];
|
|
239
|
+
declare function fetchEventBySlug(client: IPredictClient, slug: string): Promise<Event>;
|
|
240
|
+
declare function useEventBySlugQuery(slug: string, options?: Omit<UseQueryOptions<Event, Error, Event, unknown[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Event, Error>;
|
|
241
|
+
|
|
242
|
+
export { Event, EventDetailSkeleton, type EventDetailSkeletonProps, EventDetailUI, type EventDetailUIProps, EventDetailWidget, type EventDetailWidgetProps, EventItemSkeleton, type EventItemSkeletonProps, EventItemUI, type EventItemUIProps, EventQueryOptions, EventsSkeleton, type EventsSkeletonProps, EventsUI, type EventsUIProps, EventsWidget, type EventsWidgetProps, IPredictClient, Market, MarketPrice, MarketPriceQuery, MarketPriceRequestItem, MarketQueryOptions, MarketTag, MultipleMarketPrices, PredictContext, type PredictContextValue, PredictProvider, type PredictProviderProps, PriceHistory, PriceHistoryInterval, PriceHistoryQuery, SearchQueryOptions, SearchResult, type UseEventByIdQueryParams, type UseEventDetailParams, type UseEventsParams, type UseEventsResult, type UseMarketByIdQueryParams, type UseMarketBySlugQueryParams, eventByIdQueryKey, eventBySlugQueryKey, eventTagsByIdQueryKey, eventsQueryKey, fetchEventById, fetchEventBySlug, fetchEventTagsById, fetchEvents, fetchMarketById, fetchMarketBySlug, fetchMarketPrice, fetchMarketTagsById, fetchMarkets, fetchMultipleMarketPrices, fetchMultipleMarketPricesByRequest, fetchPriceHistory, fetchSearch, marketByIdQueryKey, marketBySlugQueryKey, marketPriceQueryKey, marketTagsByIdQueryKey, marketsQueryKey, multipleMarketPricesByRequestQueryKey, multipleMarketPricesQueryKey, priceHistoryQueryKey, searchQueryKey, useEventByIdQuery, useEventBySlugQuery, useEventDetail, useEventTagsByIdQuery, useEvents, useEventsQuery, useMarketByIdQuery, useMarketBySlugQuery, useMarketPriceQuery, useMarketTagsByIdQuery, useMarketsQuery, useMultipleMarketPricesByRequestQuery, useMultipleMarketPricesQuery, usePredictClient, usePredictContext, usePriceHistoryQuery, useSearchQuery, _default as version };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var ui=require('@liberfi.io/ui'),react=require('react'),reactQuery=require('@tanstack/react-query'),jsxRuntime=require('react/jsx-runtime'),i18n=require('@liberfi.io/i18n'),utils=require('@liberfi.io/utils'),recharts=require('recharts');typeof window<"u"&&(window.__LIBERFI_VERSION__=window.__LIBERFI_VERSION__||{},window.__LIBERFI_VERSION__["@liberfi.io/ui-predict"]="0.1.0");var Ie="0.1.0";var A=react.createContext({});function oe(){let e=react.useContext(A);if(!e)throw new Error("usePredictContext must be used within a PredictProvider");return e}function g(){let{client:e}=oe();return e}function Se(e){return ["predict","markets",e??{}]}async function Te(e,t){return await e.getMarkets(t)}function br(e,t={}){let r=g();return reactQuery.useQuery({queryKey:Se(e),queryFn:async()=>Te(r,e),...t})}function De(e){return ["predict","market","byId",e.id,{includeTag:e.includeTag}]}async function Qe(e,t){return await e.getMarketById(t.id,t.includeTag)}function Mr(e,t={}){let r=g();return reactQuery.useQuery({queryKey:De(e),queryFn:async()=>Qe(r,e),...t})}function Ue(e){return ["predict","market","bySlug",e.slug,{includeTag:e.includeTag}]}async function qe(e,t){return await e.getMarketBySlug(t.slug,t.includeTag)}function Cr(e,t={}){let r=g();return reactQuery.useQuery({queryKey:Ue(e),queryFn:async()=>qe(r,e),...t})}function Ae(e){return ["predict","market","tags",e]}async function He(e,t){return await e.getMarketTagsById(t)}function Qr(e,t={}){let r=g();return reactQuery.useQuery({queryKey:Ae(e),queryFn:async()=>He(r,e),...t})}function Le(e){return ["predict","search",e]}async function Fe(e,t){return await e.search(t)}function Ar(e,t={}){let r=g();return reactQuery.useQuery({queryKey:Le(e),queryFn:async()=>Fe(r,e),...t})}function Ve(e){return ["predict","price",e.tokenId,e.side]}async function ze(e,t){return await e.getMarketPrice(t)}function Kr(e,t={}){let r=g();return reactQuery.useQuery({queryKey:Ve(e),queryFn:async()=>ze(r,e),...t})}function Ye(){return ["predict","prices","all"]}async function Xe(e){return await e.getMultipleMarketPrices()}function Xr(e={}){let t=g();return reactQuery.useQuery({queryKey:Ye(),queryFn:async()=>Xe(t),...e})}function Ge(e){return ["predict","prices","byRequest",e]}async function je(e,t){return await e.getMultipleMarketPricesByRequest(t)}function Zr(e,t={}){let r=g();return reactQuery.useQuery({queryKey:Ge(e),queryFn:async()=>je(r,e),...t})}function z(e){return ["predict","priceHistory",e]}async function W(e,t){return await e.getPriceHistory(t)}function ln(e,t={}){let r=g();return reactQuery.useQuery({queryKey:z(e),queryFn:async()=>W(r,e),...t})}function et(e){return ["predict","events",e??{}]}async function tt(e,t){return await e.getEvents(t)}function ae(e,t={}){let r=g();return reactQuery.useQuery({queryKey:et(e),queryFn:async()=>tt(r,e),...t})}function nt(e){return ["predict","event","byId",e.id,{includeChat:e.includeChat,includeTemplate:e.includeTemplate}]}async function lt(e,t){return await e.getEventById(t.id,t.includeChat,t.includeTemplate)}function se(e,t={}){let r=g();return reactQuery.useQuery({queryKey:nt(e),queryFn:async()=>lt(r,e),...t})}function ot(e){return ["predict","event","tags",e]}async function at(e,t){return await e.getEventTagsById(t)}function bn(e,t={}){let r=g();return reactQuery.useQuery({queryKey:ot(e),queryFn:async()=>at(r,e),...t})}function ut(e){return ["predict","event","bySlug",e]}async function ct(e,t){return await e.getEventBySlug(t)}function Mn(e,t={}){let r=g();return reactQuery.useQuery({queryKey:ut(e),queryFn:async()=>ct(r,e),...t})}var mt=48;function ce({initialPage:e=1,pageSize:t=mt,queryOptions:r={}}={}){let[o,x]=react.useState(e),[d,a]=react.useState(r),c=react.useMemo(()=>(o-1)*t,[o,t]),n=react.useMemo(()=>({active:true,closed:false,ended:false,archived:false,...d,limit:t,offset:c}),[d,t,c]),{data:l,isLoading:M,isFetching:v,isError:C,error:m,refetch:u}=ae(n),s=react.useMemo(()=>l??[],[l]),y=react.useMemo(()=>s.length===t,[s.length,t]),I=react.useMemo(()=>o>1,[o]),i=react.useCallback(E=>{E>=1&&x(E);},[]),k=react.useCallback(()=>{y&&x(E=>E+1);},[y]),R=react.useCallback(()=>{I&&x(E=>E-1);},[I]),f=react.useCallback(E=>{a(E),x(1);},[]);return {data:s,isLoading:M,isFetching:v,isError:C,error:m,page:o,pageSize:t,hasNextPage:y,hasPrevPage:I,goToPage:i,nextPage:k,prevPage:R,setQueryOptions:f,refetch:u}}function dt({className:e}){return jsxRuntime.jsxs("div",{className:`flex min-h-44 w-full flex-col justify-between gap-y-1.5 rounded-xl border border-border bg-content1 p-3 lg:min-h-56 lg:max-w-md lg:gap-y-3 lg:p-4 ${e??""}`,children:[jsxRuntime.jsxs("div",{className:"flex w-full flex-col gap-y-1.5 lg:gap-y-3",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-4",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-8 w-8 flex-shrink-0 rounded-lg lg:h-12 lg:w-12"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-5 flex-1 rounded-md lg:h-6"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-8 w-12 flex-shrink-0 rounded-lg lg:h-10 lg:w-14"})]}),jsxRuntime.jsxs("div",{className:"flex w-full flex-col gap-y-0.5 lg:gap-y-1",children:[jsxRuntime.jsxs("div",{className:"flex min-h-8 w-full items-center justify-between gap-x-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-2/3 rounded-md"}),jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-8 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-6 w-16 rounded-lg"})]})]}),jsxRuntime.jsxs("div",{className:"flex min-h-8 w-full items-center justify-between gap-x-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-1/2 rounded-md"}),jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-8 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-6 w-16 rounded-lg"})]})]})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-x-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-3 w-16 rounded-md lg:h-4"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-3 w-12 rounded-md lg:h-4"})]})]})}function Y({count:e=8}){return jsxRuntime.jsx("div",{className:"w-full h-full",children:jsxRuntime.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:Array.from({length:e}).map((t,r)=>jsxRuntime.jsx(dt,{},r))})})}function me({value:e,showLabel:t=true}){let r=e*100;return jsxRuntime.jsx("div",{className:"flex-shrink-0 flex flex-col items-center",children:jsxRuntime.jsxs("div",{className:"relative w-16 h-12 lg:w-20 lg:h-14",children:[jsxRuntime.jsxs("svg",{className:"w-full h-full",viewBox:"0 0 100 70",children:[jsxRuntime.jsx("path",{d:"M 10 55 A 40 40 0 0 1 90 55",fill:"none",className:"stroke-default-200",strokeWidth:"6",strokeLinecap:"round"}),jsxRuntime.jsx("path",{d:"M 10 55 A 40 40 0 0 1 90 55",fill:"none",className:"stroke-primary",strokeWidth:"6",strokeLinecap:"round",strokeDasharray:`${e*125.6} 125.6`,style:{transition:"stroke-dasharray 0.5s ease-in-out"}})]}),t&&jsxRuntime.jsx("div",{className:"absolute inset-0 flex items-center justify-center pt-3 lg:pt-4",children:jsxRuntime.jsxs("span",{className:"text-sm font-bold text-foreground lg:text-base leading-none",children:[r.toFixed(0),"%"]})})]})})}function ge({event:e,onSelect:t,onSelectOutcome:r}){let{t:o}=i18n.useTranslation(),[x,d]=react.useState(null),a=e.markets||[],c=a.filter(f=>f.active&&!f.closed&&!f.archived),n=a.length===1,l=n?a[0]:x,M=react.useMemo(()=>utils.formatAmountUSD3(e.volume||0),[e.volume]),v=react.useMemo(()=>e.endDate?utils.timestampToString(new Date(e.endDate)).split(" ")[0]:null,[e.endDate]),C=react.useMemo(()=>e.closed?{label:o("predict.event.status.closed"),color:"bg-danger-100/50 text-danger"}:e.active?{label:o("predict.event.status.live"),color:"bg-primary-100/50 text-primary"}:{label:o("predict.event.status.pending"),color:"bg-warning-100/50 text-warning"},[e.active,e.closed,o]),m=f=>{try{if(f.outcomePrices){let E=JSON.parse(f.outcomePrices);return parseFloat(E[0])||0}}catch{}return 0},u=f=>{d(f);},s=()=>{d(null);},y=()=>{l&&r&&r(e,l,"yes");},I=()=>{l&&r&&r(e,l,"no");},i=()=>{t&&t(e);},k=c.slice(0,2),R=c.length>2;return jsxRuntime.jsxs("div",{className:"flex min-h-44 w-full flex-col justify-between gap-y-1.5 rounded-xl border border-border bg-content1 p-3 transition-all duration-300 cursor-pointer hover:border-primary hover:ring-2 hover:ring-primary/20 focus-within:border-primary focus-within:bg-content2 focus-within:ring-2 focus-within:ring-primary/20 lg:min-h-56 lg:max-w-md lg:gap-y-3 lg:p-4",onClick:i,children:[jsxRuntime.jsxs("div",{className:"flex w-full flex-col gap-y-1.5 lg:gap-y-3",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-4",children:[jsxRuntime.jsx(ui.Avatar,{src:e.image||e.icon||void 0,name:e.title||"Event",radius:"md",className:"h-8 w-8 flex-shrink-0 transition-transform duration-300 group-hover:scale-110 lg:h-12 lg:w-12"}),jsxRuntime.jsx(ui.StyledTooltip,{content:e.title,closeDelay:0,placement:"bottom",children:jsxRuntime.jsx("p",{className:"flex-1 min-w-0 text-sm font-semibold lg:text-base line-clamp-2",children:e.title})}),n?jsxRuntime.jsx(me,{value:m(a[0])}):!(e.active&&!e.closed&&!e.archived)&&jsxRuntime.jsx("div",{className:`flex-shrink-0 flex items-center gap-x-2 rounded-lg px-2 py-1 text-sm lg:px-4 lg:py-2 ${C.color}`,children:jsxRuntime.jsx("span",{children:C.label})})]}),l&&!n&&jsxRuntime.jsxs("button",{type:"button",className:"flex min-h-9 w-full items-center justify-between gap-x-2 transition-opacity hover:cursor-pointer hover:opacity-80",onClick:f=>{f.stopPropagation(),s();},children:[jsxRuntime.jsx("span",{className:"text-left text-xs text-foreground lg:text-sm line-clamp-1",children:l.groupItemTitle}),jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2",children:[jsxRuntime.jsxs("span",{className:"text-sm font-semibold text-foreground lg:text-lg",children:[(m(l)*100).toFixed(0),"%"]}),jsxRuntime.jsx(ui.ChevronUpIcon,{className:"w-3 h-3 text-default-500 lg:w-4 lg:h-4"})]})]}),!l&&!n&&k.length>0&&jsxRuntime.jsxs("div",{className:"flex w-full flex-col gap-y-0.5 text-xs lg:gap-y-1 lg:text-sm",children:[k.map(f=>{let E=m(f);return jsxRuntime.jsxs("button",{type:"button",className:"flex min-h-8 w-full items-center justify-between gap-x-2 transition-opacity hover:cursor-pointer hover:opacity-80",onClick:V=>{V.stopPropagation(),u(f);},children:[jsxRuntime.jsx("span",{className:"text-left text-xs text-foreground lg:text-sm line-clamp-1",children:f.groupItemTitle}),jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2",children:[jsxRuntime.jsxs("span",{className:"text-xs text-foreground lg:text-base",children:[(E*100).toFixed(0),"%"]}),jsxRuntime.jsxs("div",{className:"flex h-full items-center gap-x-3 rounded-lg p-1 lg:p-1.5 bg-gradient-to-r from-primary-50/20 via-primary-50/20 to-secondary-50/20",children:[jsxRuntime.jsx("span",{className:"text-primary",children:o("predict.market.yes")}),jsxRuntime.jsx("span",{className:"text-default-400",children:"/"}),jsxRuntime.jsx("span",{className:"text-secondary",children:o("predict.market.no")})]})]})]},f.id)}),R&&jsxRuntime.jsx("span",{className:"text-xxs text-default-500 lg:text-xs",children:o("predict.event.moreMarkets",{count:c.length-2})})]}),l&&jsxRuntime.jsxs("div",{className:`flex items-center gap-x-2 text-sm lg:text-base ${n?"mt-3":""}`,children:[jsxRuntime.jsx(ui.Button,{color:"primary",fullWidth:true,className:"bg-primary-100 text-primary",size:"lg",onPress:y,children:o("predict.market.yes")}),jsxRuntime.jsx(ui.Button,{color:"secondary",fullWidth:true,className:"bg-secondary-100 text-secondary",size:"lg",onPress:I,children:o("predict.market.no")})]})]}),!l||n?jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-x-2",children:[jsxRuntime.jsxs("button",{type:"button",className:"flex items-center gap-x-1 text-xxs text-default-600 hover:text-foreground lg:text-xs",onClick:f=>{f.stopPropagation(),i();},children:[jsxRuntime.jsx("span",{children:o("predict.event.showMore")}),jsxRuntime.jsx(ui.ChevronRightIcon,{className:"h-3 w-3 lg:h-4 lg:w-4"})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2 text-xxs text-default-600 lg:text-xs",children:[v&&jsxRuntime.jsx("span",{children:v}),jsxRuntime.jsxs("span",{children:[M," ",o("predict.event.volume")]})]})]}):jsxRuntime.jsxs("button",{type:"button",className:"flex items-center cursor-pointer gap-x-1 text-xxs text-default-600 hover:text-foreground lg:text-xs",onClick:f=>{f.stopPropagation(),s();},children:[jsxRuntime.jsx(ui.ChevronLeftIcon,{className:"h-3 w-3 lg:h-4 lg:w-4"}),jsxRuntime.jsx("span",{children:o("predict.event.back")})]})]})}function pe({events:e,onSelect:t,onSelectOutcome:r}){return jsxRuntime.jsx("div",{className:"w-full h-full",children:jsxRuntime.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:e.map(o=>jsxRuntime.jsx(ge,{event:o,onSelect:t,onSelectOutcome:r},o.id))})})}var j=48;function ul({onSelect:e,onSelectOutcome:t}){let{data:r,page:o,hasNextPage:x,goToPage:d,isLoading:a,isFetching:c}=ce({pageSize:j}),n=x?o+1:o;return a?jsxRuntime.jsx(Y,{count:j}):jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-6",children:[c?jsxRuntime.jsx(Y,{count:j}):jsxRuntime.jsx(pe,{events:r??[],onSelect:e,onSelectOutcome:t}),n>1&&jsxRuntime.jsx("div",{className:"flex justify-center py-4",children:jsxRuntime.jsx(ui.Pagination,{total:n,page:o,onChange:d,showControls:true,isDisabled:a,classNames:{cursor:"bg-primary"}})})]})}var Et=(r=>(r.BUY="BUY",r.SELL="SELL",r))(Et||{}),U=(a=>(a.ONE_MINUTE="1m",a.ONE_HOUR="1h",a.SIX_HOURS="6h",a.ONE_DAY="1d",a.ONE_WEEK="1w",a.MAX="max",a))(U||{});var J={"1m":1,"1h":1,"6h":1,"1d":5,"1w":30,max:30},L={"1m":60,"1h":60,"6h":60,"1d":300,"1w":1800,max:1800};var F=[{stroke:"hsl(var(--heroui-primary))",id:"colorMarket0"},{stroke:"hsl(var(--heroui-secondary))",id:"colorMarket1"},{stroke:"hsl(var(--heroui-success))",id:"colorMarket2"},{stroke:"hsl(var(--heroui-warning))",id:"colorMarket3"}];function Qt(e,t){let r=new Date(e*1e3);switch(t){case "1m":case "1h":case "6h":return r.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:false});case "1d":return r.toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:false});case "1w":return r.toLocaleDateString("en-US",{month:"short",day:"numeric"});case "max":default:return r.toLocaleDateString("en-US",{month:"short",day:"numeric"})}}function Rt(e,t){let r=L[t];return e-e%r}function Ut(e,t,r){let o=new Map;e.forEach((a,c)=>{a.history.forEach(n=>{let l=Rt(n.t,r);o.has(l)||o.set(l,new Map);let M=o.get(l);M.has(c)||M.set(c,{sum:0,count:0});let v=M.get(c);v.sum+=n.p,v.count+=1;});});let d=Array.from(o.keys()).sort((a,c)=>a-c).map(a=>{let n={date:new Date(a*1e3).toLocaleDateString("en-US",{month:"short",day:"numeric"}),timestamp:a},l=o.get(a);return t.forEach(M=>{let v=l.get(M);if(v&&v.count>0){let C=v.sum/v.count;n[M]=Math.round(C*100*100)/100;}}),n});return t.forEach(a=>{let c=null;for(let n of d)n[a]!==void 0?c=n[a]:c!==null&&(n[a]=c);c=null;for(let n=d.length-1;n>=0;n--){let l=d[n];l[a]!==void 0?c=l[a]:c!==null&&(l[a]=c);}for(let n of d)n[a]===void 0&&(n[a]=0);}),d}function ye({priceHistories:e,markets:t=[],isLoading:r,interval:o="max",onDataChange:x}){let[d,a]=react.useState(null),c=react.useRef(x);react.useEffect(()=>{c.current=x;});let n=react.useMemo(()=>e?Array.from(e.keys()).slice(0,4):[],[e]),l=react.useMemo(()=>!e||e.size===0?[]:Ut(e,n,o),[e,n,o]),M=react.useMemo(()=>{if(l.length===0||n.length===0)return [0,100];let u=1/0,s=-1/0;if(l.forEach(R=>{n.forEach(f=>{let E=R[f];E!==void 0&&(u=Math.min(u,E),s=Math.max(s,E));});}),u===1/0||s===-1/0)return [0,100];let y=s-u,I=Math.max(y*.2,5),i=Math.max(0,Math.floor(u-I)),k=Math.min(100,Math.ceil(s+I));return [i,k]},[l,n]),v=react.useCallback(u=>{if(l.length===0)return null;let s=u!==null?l[u]:l[l.length-1];return s?{timestamp:s.timestamp,date:s.date,markets:n.map((y,I)=>{let i=t.find(k=>k.id===y);return {id:y,label:i?.groupItemTitle||i?.question||`Market ${I+1}`,value:s[y]??0,color:F[I%F.length].stroke}})}:null},[l,n,t]);react.useEffect(()=>{c.current&&l.length>0&&c.current(v(null));},[l,v]),react.useEffect(()=>{c.current&&c.current(v(d));},[d,v]);let C=react.useCallback(u=>{typeof u?.activeTooltipIndex=="number"&&a(u.activeTooltipIndex);},[]),m=react.useCallback(()=>{a(null);},[]);return r?jsxRuntime.jsx("div",{className:"h-[200px] w-full lg:h-[300px] flex items-center justify-center",children:jsxRuntime.jsx("div",{className:"text-default-400 text-sm",children:"Loading chart..."})}):l.length===0?jsxRuntime.jsx("div",{className:"h-[200px] w-full lg:h-[300px] flex items-center justify-center",children:jsxRuntime.jsx("div",{className:"text-default-400 text-sm",children:"No price history data"})}):jsxRuntime.jsx("div",{className:"h-[200px] w-full lg:h-[300px]",children:jsxRuntime.jsx(recharts.ResponsiveContainer,{width:"100%",height:"100%",children:jsxRuntime.jsxs(recharts.LineChart,{data:l,margin:{top:10,right:16,left:16,bottom:0},onMouseMove:C,onMouseLeave:m,children:[jsxRuntime.jsx(recharts.XAxis,{dataKey:"timestamp",tick:u=>{let{x:s,y,payload:I,index:i}=u,k=l.length,f=Math.max(1,Math.ceil(k/6)),E=i===0,V=i===k-1,Ee=i%f===0;return !E&&!V&&!Ee?null:jsxRuntime.jsx("text",{x:s,y:y+10,textAnchor:"middle",fill:"hsl(var(--heroui-default-500))",fontSize:10,children:Qt(I.value,o)})},tickLine:false,axisLine:false,interval:0}),jsxRuntime.jsx(recharts.YAxis,{hide:true,domain:M}),jsxRuntime.jsx(recharts.Tooltip,{contentStyle:{backgroundColor:"hsl(var(--heroui-content1))",border:"1px solid hsl(var(--heroui-default-200))",borderRadius:"8px",fontSize:"12px"},labelFormatter:u=>new Date(u*1e3).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:false}),formatter:(u,s)=>{let y=t.find(i=>i.id===s),I=y?.groupItemTitle||y?.question||s;return [`${u.toFixed(2)}%`,I]}}),n.map((u,s)=>jsxRuntime.jsx(recharts.Line,{type:"monotone",dataKey:u,stroke:F[s%F.length].stroke,strokeWidth:2,dot:false},u))]})})})}function fe(){return {timestamp:Date.now()/1e3,date:new Date().toLocaleDateString("en-US",{month:"short",day:"numeric"}),markets:[]}}var Yt=[{value:"1h",label:"1H"},{value:"6h",label:"6H"},{value:"1d",label:"1D"},{value:"1w",label:"1W"}],Xt=4;function xe({event:e,priceHistories:t,priceHistoryInterval:r="1w",isPriceHistoryLoading:o,priceHistoryErrors:x,onIntervalChange:d,selectedMarketIds:a,onMarketSelectionChange:c}){let{t:n}=i18n.useTranslation(),[l,M]=react.useState(fe()),[v,C]=react.useState(false),m=react.useMemo(()=>e.markets||[],[e.markets]),u=react.useMemo(()=>utils.formatAmountUSD3(e.volume||0),[e.volume]),s=react.useMemo(()=>e.closed?{label:n("predict.event.status.closed"),color:"bg-danger-100/50 text-danger"}:e.active?{label:n("predict.event.status.live"),color:"bg-primary-100/50 text-primary",isLive:true}:{label:n("predict.event.status.pending"),color:"bg-warning-100/50 text-warning"},[e.active,e.closed,n]),y=react.useMemo(()=>{if(!e.endDate)return null;let i=new Date(e.endDate),k=i.toLocaleString("default",{month:"short"}),R=i.getDate(),f=i.getFullYear();return `${k} ${R}, ${f}`},[e.endDate]),I=i=>{try{if(i.outcomePrices){let k=JSON.parse(i.outcomePrices);return parseFloat(k[0])||0}}catch{}return 0};return jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-4 lg:gap-y-6 px-1 lg:px-4 lg:max-w-3xl mx-auto",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-x-2 lg:gap-x-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2 lg:gap-x-4",children:[jsxRuntime.jsx(ui.Avatar,{src:e.image||e.icon||void 0,name:e.title||"Event",radius:"lg",className:"!h-10 !w-10 flex-shrink-0 transition-transform duration-300 group-hover:scale-110 lg:!h-14 lg:!w-14"}),jsxRuntime.jsx("div",{className:"flex flex-col",children:jsxRuntime.jsx("span",{className:"text-base font-semibold lg:text-lg line-clamp-2",children:e.title})})]}),jsxRuntime.jsxs("div",{className:`flex-shrink-0 flex items-center gap-x-2 rounded-lg px-2 py-1 text-sm lg:px-4 lg:py-2 ${s.color}`,children:[s.isLive&&jsxRuntime.jsx("span",{className:"h-1.5 w-1.5 animate-pulse rounded-full bg-current lg:h-2 lg:w-2"}),jsxRuntime.jsx("span",{children:s.label})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-x-3 text-xs text-default-500 lg:text-sm",children:[jsxRuntime.jsxs("span",{children:[u," ",n("predict.event.volume")]}),y&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{className:"text-default-300",children:"\xB7"}),jsxRuntime.jsx("span",{children:n("predict.event.endDate",{date:y})})]})]}),jsxRuntime.jsx("div",{className:"flex flex-col gap-y-4",children:jsxRuntime.jsxs("div",{className:"flex flex-col",children:[l&&l.markets.length>0&&jsxRuntime.jsx("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-2 text-xs lg:text-sm",children:l.markets.map(i=>jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2",children:[jsxRuntime.jsx("div",{className:"h-3 w-3 shrink-0 rounded-full",style:{backgroundColor:i.color}}),jsxRuntime.jsx("span",{className:"text-default-600",children:i.label})]},i.id))}),jsxRuntime.jsx(ye,{priceHistories:t,interval:r,markets:m,isLoading:o,onDataChange:i=>M(i)}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-x-4 mt-2",children:[jsxRuntime.jsx("div",{className:"flex items-center gap-x-1",children:Yt.map(i=>jsxRuntime.jsx("button",{type:"button",onClick:()=>d?.(i.value),className:`px-3 py-1 text-xs rounded-md transition-colors cursor-pointer ${r===i.value?"bg-primary text-primary-foreground":"bg-default-100 text-default-600 hover:bg-default-200"}`,children:i.label},i.value))}),m.length>1&&jsxRuntime.jsx(ui.Select,{size:"sm",selectionMode:"multiple",placeholder:"Markets","aria-label":"Select markets",className:"max-w-48",classNames:{trigger:"min-h-8 h-8",value:"text-xs"},selectedKeys:a?new Set(a):void 0,onSelectionChange:i=>{if(i==="all")return;let k=Array.from(i);k.length<=Xt&&c?.(k);},children:m.map(i=>jsxRuntime.jsx(ui.SelectItem,{textValue:i.groupItemTitle||i.question||i.id,children:jsxRuntime.jsx("span",{className:"text-xs truncate",children:i.groupItemTitle||i.question})},i.id))})]})]})}),e.description&&jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-2",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium lg:text-base",children:n("predict.event.rules")}),jsxRuntime.jsx("div",{className:`text-xs text-foreground lg:text-sm ${v?"":"line-clamp-2"}`,children:e.description}),jsxRuntime.jsxs("button",{type:"button",onClick:()=>C(!v),className:"self-end flex items-center gap-x-1 text-xxs text-default-500 hover:text-default-700 lg:text-xs cursor-pointer",children:[n(v?"predict.event.rules.collapse":"predict.event.rules.expand"),jsxRuntime.jsx(ui.ChevronUpIcon,{className:`h-3 w-3 transition-transform duration-200 lg:h-4 lg:w-4 ${v?"":"rotate-180"}`})]})]}),m.length>0&&jsxRuntime.jsx("div",{className:"w-full overflow-x-auto",children:jsxRuntime.jsxs(ui.StyledTable,{radius:"lg","aria-label":"Markets",className:"min-w-160",children:[jsxRuntime.jsxs(ui.TableHeader,{children:[jsxRuntime.jsx(ui.TableColumn,{textValue:"Outcome",width:320,children:n("predict.market.table.outcome")}),jsxRuntime.jsx(ui.TableColumn,{textValue:"Chance",width:80,children:n("predict.market.table.chance")}),jsxRuntime.jsx(ui.TableColumn,{textValue:"Actions",width:240,align:"end",children:n("predict.market.table.actions")})]}),jsxRuntime.jsx(ui.TableBody,{children:m.map(i=>{let k=I(i);return jsxRuntime.jsxs(ui.TableRow,{children:[jsxRuntime.jsx(ui.TableCell,{children:i.groupItemTitle||i.question}),jsxRuntime.jsxs(ui.TableCell,{children:[(k*100).toFixed(2),"%"]}),jsxRuntime.jsxs(ui.TableCell,{className:"text-right",children:[jsxRuntime.jsx(ui.Button,{size:"sm",color:"primary",className:"w-20 bg-primary-100 text-primary",children:n("predict.market.action.yes",{price:(k*100).toFixed(0)})}),jsxRuntime.jsx(ui.Button,{size:"sm",color:"secondary",className:"ml-2 w-20 bg-secondary-100 text-secondary",children:n("predict.market.action.no",{price:((1-k)*100).toFixed(0)})})]})]},i.id)})})]})})]})}function he({marketCount:e=3}){return jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-4 lg:gap-y-6 px-1 lg:px-4 lg:max-w-3xl mx-auto",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-x-2 lg:gap-x-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2 lg:gap-x-4",children:[jsxRuntime.jsx(ui.Skeleton,{className:"!h-10 !w-10 flex-shrink-0 rounded-lg lg:!h-14 lg:!w-14"}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-1",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-5 w-48 rounded-md lg:h-6 lg:w-64"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-32 rounded-md lg:w-40"})]})]}),jsxRuntime.jsx(ui.Skeleton,{className:"h-7 w-16 rounded-lg lg:h-9 lg:w-20"})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-x-3",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-20 rounded-md lg:w-24"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-28 rounded-md lg:w-32"})]}),jsxRuntime.jsx("div",{className:"flex flex-col gap-y-4",children:jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-2",children:[jsxRuntime.jsxs("div",{className:"grid grid-cols-2 gap-x-4 gap-y-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-3 w-3 rounded-full"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-24 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-12 rounded-md"})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-3 w-3 rounded-full"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-20 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-12 rounded-md"})]})]}),jsxRuntime.jsx(ui.Skeleton,{className:"h-[200px] w-full rounded-lg lg:h-[300px]"})]})}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-5 w-12 rounded-md lg:h-6"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-full rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-3/4 rounded-md"})]}),jsxRuntime.jsx("div",{className:"w-full overflow-x-auto",children:jsxRuntime.jsxs("div",{className:"min-w-160 rounded-lg border border-default-200 p-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center border-b border-default-200 pb-3 mb-3",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-24 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-16 rounded-md ml-auto mr-8"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-20 rounded-md"})]}),jsxRuntime.jsx("div",{className:"flex flex-col gap-y-3",children:Array.from({length:e}).map((t,r)=>jsxRuntime.jsxs("div",{className:"flex items-center py-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-48 rounded-md lg:w-64"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-12 rounded-md ml-auto mr-8"}),jsxRuntime.jsxs("div",{className:"flex gap-x-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-8 w-20 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-8 w-20 rounded-md"})]})]},r))})]})})]})}var jt=(e,t)=>{let r=L[t];if(!e.history.length)return e;let o=[],x=-1/0;for(let d of e.history)d.t-x>=r&&(o.push(d),x=d.t);return {history:o}},Jt=4,Zt=4,er="1w",ke=e=>{let{priceHistoryMarketIds:t,priceHistoryInterval:r=er}=e,o=g(),{data:x,isLoading:d,error:a}=se({id:e.eventId,includeChat:true,includeTemplate:true}),c=m=>{if(!m)return null;try{return JSON.parse(m)[0]??null}catch{return null}},n=react.useMemo(()=>x?.markets?(t&&t.length>0?t.slice(0,Zt).map(u=>x.markets.find(s=>s.id===u)).filter(u=>u!==void 0):x.markets.slice(0,Jt)).map(u=>{let s=c(u.clobTokenIds);return s?{marketId:u.id,queryToken:s}:null}).filter(u=>u!==null):[],[t,x?.markets]),l=reactQuery.useQueries({queries:n.map(({queryToken:m})=>({queryKey:z({market:m,interval:r,fidelity:J[r]}),queryFn:()=>W(o,{market:m,interval:r,fidelity:J[r]}),enabled:n.length>0}))}),M=l.some(m=>m.isLoading),v=react.useMemo(()=>{let m=new Map;return n.forEach(({marketId:u},s)=>{let y=l[s]?.error;y&&m.set(u,y);}),m},[n,l]),C=react.useMemo(()=>{let m=new Map;return n.forEach(({marketId:u},s)=>{let y=l[s]?.data;y&&m.set(u,jt(y,r));}),m},[n,l,r]);return {event:x,isEventLoading:d,eventError:a,priceHistories:C,isPriceHistoryLoading:M,priceHistoryErrors:v}};var rr="1w",nr=4;function ei({eventId:e,initialMarketIds:t,initialInterval:r=rr}){let[o,x]=react.useState(r),[d,a]=react.useState(t),{event:c,isEventLoading:n,eventError:l,priceHistories:M,isPriceHistoryLoading:v,priceHistoryErrors:C}=ke({eventId:e,priceHistoryMarketIds:d,priceHistoryInterval:o});react.useEffect(()=>{if(c?.markets&&!d){let s=c.markets.slice(0,nr).map(y=>y.id);a(s);}},[c?.markets,d]);let m=react.useMemo(()=>s=>{x(s);},[]),u=react.useMemo(()=>s=>{a(s);},[]);return n?jsxRuntime.jsx(he,{}):l||!c?jsxRuntime.jsx("div",{className:"flex w-full items-center justify-center py-20 text-danger",children:l?.message||"Event not found"}):jsxRuntime.jsx(xe,{event:c,priceHistories:M,priceHistoryInterval:o,isPriceHistoryLoading:v,priceHistoryErrors:C,onIntervalChange:m,selectedMarketIds:d,onMarketSelectionChange:u})}function di({client:e,children:t}){return jsxRuntime.jsx(A.Provider,{value:{client:e},children:t})}exports.EventDetailSkeleton=he;exports.EventDetailUI=xe;exports.EventDetailWidget=ei;exports.EventItemSkeleton=dt;exports.EventItemUI=ge;exports.EventsSkeleton=Y;exports.EventsUI=pe;exports.EventsWidget=ul;exports.PredictContext=A;exports.PredictProvider=di;exports.PriceHistoryInterval=U;exports.PriceSide=Et;exports.eventByIdQueryKey=nt;exports.eventBySlugQueryKey=ut;exports.eventTagsByIdQueryKey=ot;exports.eventsQueryKey=et;exports.fetchEventById=lt;exports.fetchEventBySlug=ct;exports.fetchEventTagsById=at;exports.fetchEvents=tt;exports.fetchMarketById=Qe;exports.fetchMarketBySlug=qe;exports.fetchMarketPrice=ze;exports.fetchMarketTagsById=He;exports.fetchMarkets=Te;exports.fetchMultipleMarketPrices=Xe;exports.fetchMultipleMarketPricesByRequest=je;exports.fetchPriceHistory=W;exports.fetchSearch=Fe;exports.marketByIdQueryKey=De;exports.marketBySlugQueryKey=Ue;exports.marketPriceQueryKey=Ve;exports.marketTagsByIdQueryKey=Ae;exports.marketsQueryKey=Se;exports.multipleMarketPricesByRequestQueryKey=Ge;exports.multipleMarketPricesQueryKey=Ye;exports.priceHistoryQueryKey=z;exports.searchQueryKey=Le;exports.useEventByIdQuery=se;exports.useEventBySlugQuery=Mn;exports.useEventDetail=ke;exports.useEventTagsByIdQuery=bn;exports.useEvents=ce;exports.useEventsQuery=ae;exports.useMarketByIdQuery=Mr;exports.useMarketBySlugQuery=Cr;exports.useMarketPriceQuery=Kr;exports.useMarketTagsByIdQuery=Qr;exports.useMarketsQuery=br;exports.useMultipleMarketPricesByRequestQuery=Zr;exports.useMultipleMarketPricesQuery=Xr;exports.usePredictClient=g;exports.usePredictContext=oe;exports.usePriceHistoryQuery=ln;exports.useSearchQuery=Ar;exports.version=Ie;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|