import type { EventStatus, TradeSide, Exchange, TransferType, DepositDirection, OracleEventType } from './enums.js'; export interface EnrichmentFields { market_title?: string; outcome?: string; market_slug?: string; event_title?: string; market_image?: string; condition_id?: string; tokens?: Record; token_ids?: string[]; outcomes?: string[]; tick_size?: number; neg_risk?: boolean; event_slug?: string; taker_base_fee?: number | null; } export interface DecodedTrade { maker: string; signer: string; taker: string; token_id: string; side: TradeSide; price: number; size: number; maker_amount: string; taker_amount: string; outcome?: string; } export interface SettlementEvent extends EnrichmentFields { event_type: 'settlement'; tx_hash: string; status: EventStatus; detected_at: number; block_number?: number | null; taker_wallet: string; taker_token: string; taker_side: string; taker_price: number; taker_size: number; trades: DecodedTrade[]; } export interface TradeEvent extends EnrichmentFields { event_type: 'trade'; tx_hash: string; block_number: number; log_index: number; timestamp: number; exchange: Exchange; maker: string; taker: string; token_id: string; side: TradeSide; price: number; size: number; maker_amount: string; taker_amount: string; fee?: number; } export interface StatusUpdateEvent extends EnrichmentFields { event_type: 'status_update'; tx_hash: string; token_id: string; block_number: number; confirmed_at: number; pending_detected_at: number; latency_ms: number; taker_wallet?: string; maker_wallets?: string[]; } export interface BlockEvent { event_type: 'block'; block_number: number; block_hash: string; timestamp: number; parent_hash: string; tx_count: number; polymarket_tx_count: number; settlement_count: number; trade_volume_usd: number; } export interface PositionChangeEvent extends EnrichmentFields { event_type: 'position_change'; tx_hash: string; block_number: number; log_index: number; timestamp: number; from: string; to: string; token_id: string; amount: number; transfer_type: TransferType; } export interface DepositEvent { event_type: 'deposit'; tx_hash: string; block_number: number; log_index: number; timestamp: number; from: string; to: string; amount: number; direction: DepositDirection; } export interface PositionSplitEvent { event_type: 'position_split'; tx_hash: string; block_number: number; log_index: number; timestamp: number; stakeholder: string; collateral_token: string; condition_id: string; amount: number; market_title?: string; market_slug?: string; event_title?: string; market_image?: string; tokens?: Record; tick_size?: number; neg_risk?: boolean; taker_base_fee?: number | null; } export interface PositionMergeEvent { event_type: 'position_merge'; tx_hash: string; block_number: number; log_index: number; timestamp: number; stakeholder: string; collateral_token: string; condition_id: string; amount: number; market_title?: string; market_slug?: string; event_title?: string; market_image?: string; tokens?: Record; tick_size?: number; neg_risk?: boolean; taker_base_fee?: number | null; } export interface OracleEvent { event_type: 'oracle'; tx_hash: string; block_number: number; log_index: number; timestamp: number; question_id: string; oracle_type: OracleEventType; adapter_address: string; resolved_price?: number; resolved_outcome?: string; payouts?: number[]; proposer?: string; bond_amount?: number; proposed_price?: number; expiration_timestamp?: number; disputer?: string; market_title?: string; market_slug?: string; condition_id?: string; event_title?: string; market_image?: string; tokens?: Record; token_ids?: string[]; outcomes?: string[]; neg_risk?: boolean; } export interface PriceFeedEvent { event_type: 'price_feed'; feed: string; feed_id: string; price: number; bid: number; ask: number; timestamp: number; source: string; } /** Discriminated union of all event types. Use `event.event_type` to narrow. */ export type PolyNodeEvent = SettlementEvent | TradeEvent | StatusUpdateEvent | BlockEvent | PositionChangeEvent | DepositEvent | PositionSplitEvent | PositionMergeEvent | OracleEvent | PriceFeedEvent; /** Maps event_type strings to their typed interfaces. */ export interface EventMap { settlement: SettlementEvent; trade: TradeEvent; status_update: StatusUpdateEvent; block: BlockEvent; position_change: PositionChangeEvent; deposit: DepositEvent; position_split: PositionSplitEvent; position_merge: PositionMergeEvent; oracle: OracleEvent; price_feed: PriceFeedEvent; } //# sourceMappingURL=events.d.ts.map