import type { SandboxBackend } from "#public/definitions/sandbox-backend.js";
import type { DockerSandboxCreateOptions } from "#public/sandbox/docker-sandbox.js";
import type { JustBashSandboxCreateOptions } from "#public/sandbox/just-bash-sandbox.js";
import type { MicrosandboxCreateOptions } from "#public/sandbox/microsandbox-sandbox.js";
import type { VercelSandboxCreateOptions } from "#public/sandbox/vercel-sandbox.js";
/**
 * Input to {@link defaultSandbox}: a separate options bag per inner
 * backend. The framework picks one backend at runtime based on
 * availability and passes it the matching bag; the others are ignored.
 */
export interface DefaultSandboxOptions {
    readonly docker?: DockerSandboxCreateOptions;
    readonly justBash?: JustBashSandboxCreateOptions;
    readonly microsandbox?: MicrosandboxCreateOptions;
    readonly vercel?: VercelSandboxCreateOptions;
}
/**
 * Availability probes behind {@link defaultSandbox}'s selection chain.
 * Injectable so selection logic is testable without touching the host.
 */
export interface DefaultSandboxProbes {
    readonly isDeployedOnVercel: () => boolean;
    readonly isDockerAvailable: () => boolean;
    readonly isMicrosandboxSupported: () => boolean;
}
/**
 * Constructs an availability-aware sandbox backend. On first use it
 * picks the best backend the host supports, in priority order:
 *
 * 1. **Vercel Sandbox** when deploying on Vercel (`process.env.VERCEL`
 *    is set) — local container/VM runtimes cannot run there.
 * 2. **Docker** when a Docker daemon is reachable.
 * 3. **microsandbox** when the host supports it (macOS on Apple
 *    Silicon, or glibc Linux with KVM); `eve dev` auto-installs the
 *    package into the project.
 * 4. **just-bash** as the dependency-free fallback; `eve dev`
 *    auto-installs the package into the project.
 *
 * The selection is cached for the process lifetime. To pin a backend
 * unconditionally, configure its factory directly (`docker()`,
 * `microsandbox()`, `justbash()`,
 * `vercel()`).
 */
export declare function defaultSandbox(opts?: DefaultSandboxOptions): SandboxBackend;
/**
 * The selection chain behind {@link defaultSandbox}. Internal —
 * exported for tests, which inject probes.
 */
export declare function selectDefaultSandbox(opts: DefaultSandboxOptions | undefined, probes: DefaultSandboxProbes): SandboxBackend;
