import { EventEmitter } from "events"; import { PythPrice } from "../pyth/types.js"; import { MarketWatcherConfig, WatcherStatus, OutcomeChangeEvent, SettledEvent, WatcherError } from "./types.js"; /** * MarketWatcher - Automated market monitoring and settlement (Orchestrator) * * This class coordinates PriceMonitor, SettlementChecker, and TransactionBuilder * to watch a single market, monitoring price changes and automatically calling * mark_extreme when outcomes change, and settle_market when the market expires. * * @example * ```typescript * const watcher = new MarketWatcher({ * connection: new Connection(RPC_URL), * signer: keeperKeypair, * weekNumber: 1, * }); * * watcher.on('priceUpdate', (price) => { * console.log(`Price: $${price.price}`); * }); * * watcher.on('outcomeChange', (event) => { * console.log(`${event.poolType} outcome: ${event.outcome}`); * }); * * watcher.on('settled', (event) => { * console.log(`Market ${event.weekNumber} settled`); * }); * * await watcher.start(); * ``` */ export declare class MarketWatcher extends EventEmitter { private connection; private signer; private weekNumber; private verbose; private program; private isRunning; private market; private priceMonitor; private settlementChecker; private txBuilder; constructor(config: MarketWatcherConfig); /** * Start watching the market * * This will: * 1. Fetch initial market state * 2. Start price monitoring loop * 3. Start settlement check loop */ start(): Promise; /** * Stop watching the market */ stop(): void; /** * Get current watcher status */ getStatus(): WatcherStatus; on(event: "priceUpdate", listener: (price: PythPrice) => void): this; on(event: "outcomeChange", listener: (data: OutcomeChangeEvent) => void): this; on(event: "settled", listener: (data: SettledEvent) => void): this; on(event: "error", listener: (error: WatcherError) => void): this; on(event: "stopped", listener: () => void): this; private refreshMarket; private handleOutcomeChange; private handleSettlementNeeded; private emitError; private log; } //# sourceMappingURL=MarketWatcher.d.ts.map