/** * The runners that make the Google setup flow do something. * * `google-setup-flow.ts` sequences steps and assembles a report; it is * deliberately free of Google specifics and names this module as the place the * concrete work lives. That module was written, tested and shipped, and this * one never was, so every flow module underneath it (`google-console-flow`, * `google-client-intake`, `google-app-password-flow`, `google-client-download`) * had no caller outside its own tests. The feature was green and unreachable at * the same time, because the tests exercised the modules directly and nothing * exercised a path starting from something a user types. * * So this module is the binding layer, and it is the only place that knows both * "step id" and "which function performs it". Everything it needs arrives * through ports, so the whole flow stays runnable against fakes. * * Two rules hold throughout: * - A step reports `needs-human` when Google genuinely requires a person. * That is a clean stop, not a failure, and the spec's own `manualSteps` * are what the report shows. * - Secrets go from the flow into the encrypted store and nowhere else. No * detail string, progress line, warning or error carries a credential * value. */ import type { GoogleStepRunner } from './setup-flow.js'; import type { GoogleSetupPath, GoogleStepId } from './types.js'; import type { GoogleSetupActionDeps } from './setup-action-deps.js'; import { type GoogleClientCredentials } from './client-intake.js'; /** * Bind every step of one path to the function that performs it. * * The executor throws on a missing runner, so a path is either completely bound * or fails loudly at the first gap, there is no silent skip. */ export declare function buildGoogleSetupRunners(path: GoogleSetupPath, deps: GoogleSetupActionDeps): ReadonlyMap; export type { GoogleClientCredentials }; export type { GoogleClientIntakeChoice, GoogleSetupActionDeps } from './setup-action-deps.js'; export { adoptExistingGoogleCredentials, type GoogleAdoptionOutcome, } from './setup-actions-adoption.js'; //# sourceMappingURL=setup-actions.d.ts.map