import type { BrowserAutomation, BrowserAutomationDefinition, BrowserAutomationRun, BrowserAutomationStatus } from './types.js'; export type BrowserAutomationExecutor = (input: { definition: BrowserAutomationDefinition; inputs: Record; signal: AbortSignal; onStep: (event: unknown) => void; }) => Promise<{ ok: boolean; result?: unknown; error?: string; }>; export declare class BrowserAutomationService { private readonly executor; private readonly emit?; private activeRuns; private executions; private waiters; constructor(executor: BrowserAutomationExecutor, emit?: (type: string, payload: unknown) => void); list(): BrowserAutomation[]; get(id: string): BrowserAutomation; listRuns(automationId?: string): BrowserAutomationRun[]; getRun(id: string): BrowserAutomationRun; listRunEvents(id: string): import("./types.js").BrowserAutomationRunEvent[]; validate(definition: unknown): import("zod/index.cjs").ZodSafeParseResult<{ id: string; name: string; allowedDomains: string[]; risk: "read" | "sensitive" | "destructive" | "draft" | "external_effect"; inputs: Record; steps: ({ action: "navigate"; url: string; expect?: { urlIncludes?: string; titleIncludes?: string; textIncludes?: string; ref?: string; state?: "hidden" | "visible"; }; } | { action: "click"; target: { role: string; name?: string; nameIncludes?: string; }; expect?: { urlIncludes?: string; titleIncludes?: string; textIncludes?: string; ref?: string; state?: "hidden" | "visible"; }; } | { action: "fill"; target: { role: string; name?: string; nameIncludes?: string; }; value: string; submit?: boolean; expect?: { urlIncludes?: string; titleIncludes?: string; textIncludes?: string; ref?: string; state?: "hidden" | "visible"; }; } | { action: "select"; target: { role: string; name?: string; nameIncludes?: string; }; value: string; expect?: { urlIncludes?: string; titleIncludes?: string; textIncludes?: string; ref?: string; state?: "hidden" | "visible"; }; } | { action: "press"; key: string; target?: { role: string; name?: string; nameIncludes?: string; }; expect?: { urlIncludes?: string; titleIncludes?: string; textIncludes?: string; ref?: string; state?: "hidden" | "visible"; }; } | { action: "scroll"; deltaY: number; target?: { role: string; name?: string; nameIncludes?: string; }; expect?: { urlIncludes?: string; titleIncludes?: string; textIncludes?: string; ref?: string; state?: "hidden" | "visible"; }; } | { action: "wait"; condition: "hidden" | "text" | "visible" | "page_idle"; value?: string; target?: { role: string; name?: string; nameIncludes?: string; }; timeoutMs?: number; })[]; description?: string; }>; save(input: { definition: unknown; status?: BrowserAutomationStatus; expectedId?: string; }): BrowserAutomation; remove(id: string): boolean; startRun(automationId: string, inputs: Record): BrowserAutomationRun; cancel(runId: string): boolean; shutdown(): Promise; runAndWait(automationId: string, inputs: Record, signal?: AbortSignal): Promise; private addEvent; private execute; }