/** * The flow executor. * * Walks the steps of one path in order, reporting honestly as it goes: what it * is about to do, what it just achieved, and, when Google requires a real * person, exactly what to click. It never grinds silently, never loops on a * sign-in wall, and never reports success it did not verify. * * This module is deliberately free of Google specifics. It knows how to * sequence steps, honour dependencies, stop cleanly on a human handoff and * assemble a report. The concrete work lives in the runners injected by * `google-setup-actions.ts`, which keeps this testable with no browser, no * network and no account. */ import type { GoogleProgressPort, GoogleSetupPath, GoogleSetupReport, GoogleSetupStepSpec, GoogleStepId, GoogleStepOutcome } from './types.js'; /** * What a runner returns. The executor supplies `id` and `elapsedMs`, so a * runner only describes the outcome. */ export interface GoogleStepRunnerResult { readonly outcome: GoogleStepOutcome; readonly detail: string; readonly problem?: string; readonly fix?: string; /** Non-fatal things the owner must still be told. */ readonly warnings?: readonly string[]; } /** Performs one step. Must not throw for expected failures. */ export type GoogleStepRunner = (spec: GoogleSetupStepSpec) => Promise; export interface GoogleSetupFlowDeps { readonly progress: GoogleProgressPort; /** One runner per step id in the path being run. */ readonly runners: ReadonlyMap; readonly now?: () => number; } /** Run one path end to end. */ export declare function runGoogleSetupFlow(path: GoogleSetupPath, deps: GoogleSetupFlowDeps): Promise; /** * Render a report as text for the CLI. Kept here so the CLI command, the TUI * command and tests all produce identical wording. */ export declare function renderGoogleSetupReport(report: GoogleSetupReport): string; //# sourceMappingURL=setup-flow.d.ts.map