import { type ResolvedPersona } from "./persona.js"; import { type PreparedSelectedOutputDirectory } from "./selected-output-paths.js"; /** Persona ids are file-name segments, never paths: the same grammar the terminal lane enforces. */ export declare const PERSONA_ID_PATTERN: RegExp; /** Title-case an id for the fallback display name (`skeptical-power-user` -> `Skeptical Power User`). */ export declare function personaTitleFromId(personaId: string): string; /** * Resolve ONE committed persona. Returns `null` (never a throw, never a guess) when the id is * unsafe or no file exists, so a lane always runs. */ export declare function resolveCommittedPersona(projectRoot: PreparedSelectedOutputDirectory, personaId: string): Promise<{ persona: ResolvedPersona | null; warnings: string[]; }>; /** * Resolve every distinct persona id a run will use, once, before lane specs are built. Returning a * map keeps the plan builder PURE (it is exported npm surface and asserted pure by tests): the * async file reads happen here, and the composer only does a lookup. */ export declare function resolveCommittedPersonas(projectRoot: PreparedSelectedOutputDirectory, personaIds: readonly (string | undefined)[]): Promise<{ personas: Map; warnings: string[]; }>; /** * Every persona id a lab config could put on a browser lane: the per-lane roster when one is * declared, otherwise the actor-level persona that every fan-out lane inherits. */ export declare function labPersonaIds(config: { actors?: readonly { persona?: string; lanes?: readonly { persona?: string; }[]; }[]; }): string[]; /** * Same resolution from a plain cwd, for the labs that carry a directory string rather than an * already-prepared root. Realpath-then-prepare mirrors the cua lab so a symlinked cwd still reads * personas from the physical project. */ export declare function resolveCommittedPersonasForCwd(cwd: string, personaIds: readonly (string | undefined)[]): Promise<{ personas: Map; warnings: string[]; }>;