import { type BootstrapSyncResult } from "../bootstrap/sync.js"; import { type DoctorCheckResult } from "./doctor.js"; import { type SetupCommandResult, type SetupCommandSpec } from "./commands.js"; import { type PythonLauncher } from "./prerequisites.js"; type ManagedWorkshopSpinner = { start: (message: string) => void; stop: (message: string) => void; clear: () => void; }; export type ManagedWorkshopUi = { step: (message: string) => void; info: (message: string) => void; warn: (message: string) => void; spinner: () => ManagedWorkshopSpinner; }; export type ManagedWorkshopOptions = { mode: "setup" | "update"; appRoot: string; workingDir: string; sessionDir: string; primusAgentDir: string; primusHome: string; }; export type ManagedWorkshopResult = { workspaceDir: string; managedPython: string; serenaProjectPath: string; assetSyncResult: BootstrapSyncResult; verification: DoctorCheckResult[]; tooling: { uvInstalledDuringRun: boolean; serenaInstalledDuringRun: boolean; }; }; export type ManagedWorkshopDependencies = { pathExists?: (path: string) => boolean; ensureDirectory?: (path: string) => void; movePath?: (from: string, to: string) => void; removePath?: (path: string) => void; readFile?: (path: string) => string; writeFile?: (path: string, contents: string) => void; readDirectory?: (path: string) => string[]; runCommand?: (spec: SetupCommandSpec) => Promise; environment?: NodeJS.ProcessEnv; platform?: NodeJS.Platform; pythonLaunchers?: PythonLauncher[]; ui?: ManagedWorkshopUi; }; export declare function withSpinner(ui: Pick, pendingMessage: string, successMessage: string | ((result: T) => string), work: () => Promise): Promise; export declare function buildManagedPythonPath(primusHome: string, platform: NodeJS.Platform): string; export declare function buildSetupCommandEnv(options: Pick, environment: NodeJS.ProcessEnv, dependencies?: Pick): NodeJS.ProcessEnv; export declare function ensureManagedWorkshop(options: ManagedWorkshopOptions, dependencies?: ManagedWorkshopDependencies): Promise; export {};