/**
 * host-side-proxy.ts — Phase A A3 of olam-k3d-on-mac-substrate-decision.
 *
 * Manages the host-side `tecnativa/docker-socket-proxy` container that
 * fronts the operator's docker daemon on macOS+colima+virtiofs. Wraps
 * `docker compose -f <yaml> {up,down,ps}` calls with idempotent semantics.
 *
 * Background — round-4 wave-2 R4-W2-F: an in-cluster docker-socket-proxy
 * Pod would itself need a hostPath bind mount of /var/run/docker.sock and
 * hit virtiofs ENOTSUP. The proxy MUST live on the operator's docker
 * daemon (sibling to k3d), not inside the k3d cluster. This helper is
 * what `olam upgrade` Step 0.7 calls to ensure that sibling container
 * is running before host-cp pods reference the in-cluster ExternalName
 * Service (packages/host-cp/k8s/manifests/docker-socket-proxy/60-service.yaml).
 *
 * The compose yaml managed here:
 *   packages/host-cp/k8s/host-side/docker-socket-proxy.compose.yaml
 *
 * Resolution: shipped in the npm tarball via packages/cli/package.json's
 * `files` glob; resolved at runtime relative to the CLI's install location
 * via resolveHostSideProxyComposePath (read by callers; this module
 * accepts the path as a dep for testability).
 *
 * Idempotency: `docker compose up -d` is idempotent at the docker level
 * (running container → no-op success). `docker compose down` removes
 * the container even if absent. `ps` returns running/stopped/absent.
 *
 * D20 stdin-safe: this module never accepts secret values as argv; the
 * proxy container has no secrets. Plain `docker compose` invocation.
 */
import { spawnSync } from 'node:child_process';
export type ProxyStatus = 'running' | 'stopped' | 'unknown';
export interface HostSideProxyDeps {
    /** Spawn wrapper for testability. Defaults to node:child_process spawnSync. */
    readonly spawnSyncImpl?: typeof spawnSync;
    /** DOCKER_CONTEXT env override (e.g. "colima"). When unset, inherits process env. */
    readonly dockerContext?: string;
}
export interface HostSideProxyResult {
    readonly ok: boolean;
    /** Structured remediation string surfaced when ok=false. */
    readonly reason?: string;
}
export interface HostSideProxyStatusResult {
    readonly ok: boolean;
    readonly status: ProxyStatus;
    readonly reason?: string;
}
/**
 * Start the host-side proxy container. Idempotent: running container
 * → no-op success.
 *
 * @param composePath Absolute path to docker-socket-proxy.compose.yaml.
 */
export declare function startHostSideProxy(composePath: string, deps?: HostSideProxyDeps): HostSideProxyResult;
/**
 * Stop the host-side proxy container. Idempotent: absent container
 * → no-op success.
 */
export declare function stopHostSideProxy(composePath: string, deps?: HostSideProxyDeps): HostSideProxyResult;
/**
 * Status of the host-side proxy container. Returns 'running' / 'stopped' /
 * 'unknown' based on `docker compose ps --format json`. 'unknown' indicates
 * a probe failure (plugin absent, daemon unreachable, malformed output).
 */
export declare function statusHostSideProxy(composePath: string, deps?: HostSideProxyDeps): HostSideProxyStatusResult;
//# sourceMappingURL=host-side-proxy.d.ts.map