import { type BrowserRecipeStepEvent } from '../pipeline/runner.js'; import type { BrowserActionRegistry, BrowserActionResult } from '../actions/types.js'; import type { BrowserRecipe, BrowserRecipeRun, BrowserRecipeStatus } from './types.js'; export type BrowserRecipeExecutor = (input: { yaml: string; args: Record; signal: AbortSignal; onStep: (event: BrowserRecipeStepEvent) => void; }) => Promise; export declare class BrowserRecipeService { private readonly registry; private readonly executeRecipe; private readonly emit?; private activeRuns; private executions; private runWaiters; constructor(registry: BrowserActionRegistry, executeRecipe: BrowserRecipeExecutor, emit?: (type: string, payload: unknown) => void); list(): BrowserRecipe[]; get(id: string): BrowserRecipe; listRuns(recipeId?: string): BrowserRecipeRun[]; getRun(id: string): BrowserRecipeRun; listRunEvents(id: string): import("./types.js").BrowserRecipeRunEvent[]; validate(yaml: string): import("../pipeline/runner.js").ValidateResult; save(input: { yaml: string; status?: BrowserRecipeStatus; expectedId?: string; }): BrowserRecipe; remove(id: string): boolean; startRun(recipeId: string, args: Record): BrowserRecipeRun; cancel(runId: string): boolean; shutdown(): Promise; runAndWait(recipeId: string, args: Record, signal?: AbortSignal): Promise; private addEvent; private execute; }