import { type TestSession, type ConnectOpts } from '../session.js'; import { type Generators } from './scope.js'; import type { Scenario } from './scenario.js'; import type { RecipeMap } from './recipes.js'; export interface RunOptions { /** How to obtain a connected, handshaken session for a user. `opts` carries * the user's per-user `layer`/`initConnection`. The CLI builds this from * `target`; tests pass an in-process `server.connect`. */ connect: (user: string, opts?: ConnectOpts) => Promise; /** Auth recipes, by name (for `user.auth.recipe`). */ recipes?: RecipeMap; /** Custom `${...}` generators (e.g. `{ mnemonic: () => … }`). */ generators?: Generators; /** Environment for `${env.*}` interpolation. Defaults to none. */ env?: Record; /** Progress sink (one line per step). */ log?: (line: string) => void; } export interface StepReport { index: number; user: string; label: string; ok: boolean; durationMs: number; error?: string; } export interface RunReport { ok: boolean; users: string[]; steps: StepReport[]; durationMs: number; } /** * Execute a scenario: connect + authenticate each declared user, then run every * step against its `as` user, collecting a pass/fail {@link StepReport} per step. * Pure orchestration over `opts.connect` — transport/codec/key plumbing lives in * the CLI (`run.ts`), so this runs identically against a remote stand or an * in-process test server. */ export declare function runScenario(scenario: Scenario, opts: RunOptions): Promise; //# sourceMappingURL=runner.d.ts.map