import { type ConfigManagerLike } from './manager.js';
export interface SandboxDoctorCheck {
    readonly label: string;
    readonly ok: boolean;
    readonly detail: string;
}
export interface SandboxGuestBundle {
    readonly version: 1;
    readonly exportedAt: number;
    readonly guest: {
        readonly qemuBinary: string;
        readonly imagePath: string;
        readonly wrapperPath: string;
        readonly host: string;
        readonly port: number;
        readonly user: string;
        readonly workspacePath: string;
        readonly sessionMode: string;
    };
    readonly nextSteps: readonly string[];
}
export interface SandboxQemuInitBundle {
    readonly directory: string;
    readonly wrapperPath: string;
    readonly guestBundlePath: string;
    readonly readmePath: string;
}
export interface SandboxQemuSetupBundle extends SandboxQemuInitBundle {
    readonly imagePath: string;
    readonly imageCreateScriptPath: string;
    readonly guestBootstrapScriptPath: string;
    readonly projectionPolicyPath: string;
    readonly sshConfigPath: string;
    readonly manifestPath: string;
}
export interface SandboxQemuSetupManifest {
    readonly version: 1;
    readonly createdAt: number;
    readonly wrapperPath: string;
    readonly imagePath: string;
    readonly imageCreateScriptPath: string;
    readonly guestBootstrapScriptPath: string;
    readonly projectionPolicyPath: string;
    readonly sshConfigPath: string;
    readonly recommendedSettings: {
        readonly backend: 'qemu';
        readonly wrapperPath: string;
        readonly imagePath: string;
        readonly guestHost: string;
        readonly guestPort: number;
        readonly guestUser: string;
        readonly guestWorkspacePath: string;
        readonly sessionMode: string;
    };
}
export interface SandboxProvisioningOptions {
    readonly surfaceRoot: string;
}
export interface WritableConfigManagerLike extends ConfigManagerLike {
    setDynamic(key: string, value: unknown): void;
}
export declare function buildSandboxDoctorChecks(manager: ConfigManagerLike): SandboxDoctorCheck[];
export declare function renderSandboxDoctor(manager: ConfigManagerLike): string;
export declare function exportSandboxGuestBundle(manager: ConfigManagerLike, workspaceRoot: string, pathArg: string, _options: SandboxProvisioningOptions): {
    path: string;
    bundle: SandboxGuestBundle;
};
export declare function inspectSandboxGuestBundle(bundle: SandboxGuestBundle): string;
export declare function scaffoldSandboxQemuInitBundle(manager: ConfigManagerLike, workspaceRoot: string, pathArg: string, options: SandboxProvisioningOptions): SandboxQemuInitBundle;
export declare function scaffoldSandboxQemuSetupBundle(manager: ConfigManagerLike, workspaceRoot: string, pathArg: string, options: SandboxProvisioningOptions): SandboxQemuSetupBundle;
export declare function createSandboxQemuImage(workspaceRoot: string, imagePathArg: string, sizeGb: number, qemuImgBinary?: string): {
    path: string;
    sizeGb: number;
};
export declare function bootstrapSandboxQemuSetupBundle(manager: WritableConfigManagerLike, workspaceRoot: string, pathArg: string, sizeGb: number, options: SandboxProvisioningOptions): SandboxQemuSetupBundle;
export declare function inspectSandboxQemuSetupManifest(manifest: SandboxQemuSetupManifest): string;
export declare function loadSandboxQemuSetupManifest(workspaceRoot: string, pathArg: string): SandboxQemuSetupManifest;
export declare function applySandboxQemuSetupManifest(manager: WritableConfigManagerLike, manifest: SandboxQemuSetupManifest): void;
//# sourceMappingURL=provisioning.d.ts.map