import { type MachineAdvisoryState } from "./machine-advisory.js";
import { type MachineCommandRunner, type MachineToolDetection } from "./machine-setup-detection.js";
export type MachineSetupProfile = "desktop-only" | "desktop-plus-cli" | "repo-only" | "repair" | "full-dev-machine";
export type MachineSetupActionId = "global-cli" | "global-preferences" | "repo-contract" | "repo-assistant-wiring" | "repo-graph" | "repo-hygiene" | "lean-ctx" | "repomix";
export interface MachineSetupStep {
    id: MachineSetupActionId;
    title: string;
    scope: "machine" | "repo";
    required: boolean;
    status: "ready" | "actionable" | "blocked" | "optional";
    detail: string;
    recommendedCommand: string | null;
}
export interface MachineSetupState {
    artifactType: "kiwi-control/machine-setup";
    version: 1;
    updatedAt: string;
    targetRoot: string;
    profile: MachineSetupProfile;
    homeRoot: string;
    globalHomeRoot: string;
    pathBinRoot: string;
    shellProfilePath: string;
    aiSetup: {
        detected: boolean;
        path: string | null;
        status: "available-for-reuse" | "not-detected";
        note: string;
    };
    tools: MachineToolDetection[];
    advisory: Pick<MachineAdvisoryState, "updatedAt" | "stale" | "inventory" | "configHealth" | "optimizationLayers" | "setupPhases" | "guidance" | "setupSummary">;
    repo: {
        initialized: boolean;
        repoMode: string;
        graphReady: boolean;
        repomixOutputReady: boolean;
        assistantWiringReady: boolean;
        gitignoreReady: boolean;
        instructionFilesReady: boolean;
    };
    summary: {
        status: "ready" | "needs-work" | "blocked";
        detail: string;
        actionableRequiredCount: number;
        blockedRequiredCount: number;
    };
    steps: MachineSetupStep[];
    notes: string[];
}
export interface MachineSetupStatusOptions {
    repoRoot?: string;
    targetRoot: string;
    profile?: MachineSetupProfile;
    homeRoot?: string;
    machineAdvisory?: MachineAdvisoryState | null;
    commandRunner?: MachineCommandRunner;
}
export declare const AI_SETUP_GITIGNORE_ENTRIES: readonly [".code-review-graph/", ".omc/", ".omx/", ".lean-ctx/", ".repomix-output.xml"];
export declare function buildMachineSetupState(options: MachineSetupStatusOptions): Promise<MachineSetupState>;
export declare function resolveProfileStepIds(profile: MachineSetupProfile): MachineSetupActionId[];
export declare function resolvePathBinRoot(homeRoot: string): string;
export declare function resolveGlobalHomeRoot(homeRoot: string): string;
export declare function resolveShellProfilePath(homeRoot: string): string;
export declare function repoGitignoreReady(targetRoot: string): Promise<boolean>;
export declare function repoInstructionFilesReady(targetRoot: string): Promise<boolean>;
//# sourceMappingURL=machine-setup.d.ts.map