export type Unsubscribe = () => void; export interface WebSocketReconnectConfig { attempts?: number; delay?: number; } export interface WebSocketConfig { wsRpcUrl: string; reconnect?: boolean | WebSocketReconnectConfig; keepAlive?: boolean | { interval?: number; }; } export type MarketTradeEventName = 'EnterOption' | 'PlaceBuyOrder' | 'PlaceSellOrder' | 'ExecuteBuyOrder' | 'ExecuteSellOrder' | 'CancelBuyOrder' | 'CancelSellOrder'; export type PriceAffectingEventName = 'EnterOption' | 'ExecuteBuyOrder' | 'ExecuteSellOrder' | 'Sync'; export type MarketEventName = MarketTradeEventName | 'Sync' | 'Claim' | 'ChooseWinner' | 'ClosePool'; export interface MarketTradeEvent { eventName: MarketEventName; marketAddress: `0x${string}`; blockNumber: bigint; transactionHash: `0x${string}`; logIndex: number; args: Record; } export interface SubscribeMarketEventsParams { marketAddress: `0x${string}`; eventNames?: MarketEventName[]; onEvent: (event: MarketTradeEvent) => void; onError?: (error: Error) => void; } export interface PriceUpdate { prices: import('../markets/types.js').OptionPrice[]; triggeredBy: MarketTradeEvent; } export interface SubscribePriceUpdatesParams { marketAddress: `0x${string}`; onPriceUpdate: (update: PriceUpdate) => void; onError?: (error: Error) => void; }