import { type SetupPlan } from "../bootstrap/setup-plan.js"; import type { CredentialPort } from "../ports/credentials.port.js"; import type { JiraReadPort } from "../ports/jira-read.port.js"; import type { AuthOptions } from "./auth.js"; import type { HostRunner } from "../bootstrap/host-mcp.js"; import { Ui } from "./ui.js"; export type WizardOptions = { cwd?: string; home?: string; explicitKey?: string; /** `--shared`: adopt JAM for the team by writing into the repository. */ shared?: boolean; /** Injected by tests so no test ever registers JAM with a real host. */ runHost?: HostRunner; migrate?: boolean; ui?: Ui; /** * Injected by tests. Without these the wizard reads the machine it runs on - * the real keychain through `detectSetupState`, the real Jira through * `listVisibleProjects` and the health gate, and the real `JAM_PROJECT_KEY` * through the plan. Production passes none of them and behaves as before. */ credentials?: CredentialPort; jira?: JiraReadPort; env?: NodeJS.ProcessEnv; auth?: AuthOptions; }; /** * `jam setup`, the human path. * * Runs the same detect -> plan -> apply -> verify core the agent API uses; the * only difference is presentation and the ability to ask. Anything that can be * determined is determined - the wizard never asks a question it already knows * the answer to, and never re-walks steps that are already done. */ export declare function runSetupWizard(options?: WizardOptions): Promise; export type { SetupPlan };