/**
 * WebSocket source evaluator.
 *
 * ws is push-based: each frame is an observation. The poll-model `evaluate`
 * returns null (there is nothing to snapshot on a tick); real observations arrive
 * through `subscribe`, which opens a persistent client (the same `ws` client
 * lib/browser/cdp.ts uses — not the platform undici WebSocket).
 */
import type { MonitorSource } from '../config.js';
import type { Observation } from './types.js';
/** Push-only: nothing to snapshot on a poll tick. */
export declare function evaluate(_source: MonitorSource): Promise<Observation | null>;
/** Open a persistent WebSocket; emit each received frame as an observation. */
export declare function subscribe(source: MonitorSource, onObs: (obs: Observation) => void): () => void;
