/**
 * `olam services` — umbrella verb for managing Olam service containers.
 *
 * Subcommands:
 *   olam services up              — start all service containers (idempotent)
 *   olam services down            — stop all service containers
 *   olam services status          — show state of all service containers
 *   olam services restart <name>  — restart a named service
 *
 * Substrate-aware (D1 — Phase 2 Phase D):
 *   compose    → docker-based lifecycle (AuthContainerController / McpAuth / KgService)
 *   kubernetes → kubectl scale / rollout restart / get deployment
 *
 * `olam auth up/down/status` delegates here with a deprecation warning.
 */
import type { Command } from 'commander';
import { kubectlWrap } from '../lib/kubectl-wrap.js';
type ContainerState = 'running' | 'stopped' | 'missing';
interface ContainerStatus {
    readonly state: ContainerState;
    readonly port: number;
    readonly containerId?: string;
}
export declare class McpAuthContainerController {
    private imageTag;
    status(): ContainerStatus;
    private imageExists;
    start(): void;
    stop(): void;
    remove(): void;
    waitForReady(timeoutMs?: number): Promise<boolean>;
}
export interface ServicesKubernetesDeps {
    readonly kubectlWrapImpl?: typeof kubectlWrap;
    readonly configPath?: string;
}
/**
 * `olam services up` on kubernetes substrate.
 * Scales each peripheral deployment to replicas=1.
 * Applies the manifest if the Deployment is missing (not found).
 */
export declare function servicesUpKubernetes(deps?: ServicesKubernetesDeps): Promise<{
    exitCode: number;
}>;
/**
 * `olam services down` on kubernetes substrate.
 * Scales each peripheral deployment to replicas=0.
 */
export declare function servicesDownKubernetes(deps?: ServicesKubernetesDeps): Promise<{
    exitCode: number;
}>;
/**
 * `olam services status` on kubernetes substrate.
 * Fetches `kubectl get deployment -n olam -o wide` and formats it to match
 * the compose table shape: NAME | STATUS | IMAGE | AGE | RESTARTS.
 */
export declare function servicesStatusKubernetes(deps?: ServicesKubernetesDeps): Promise<void>;
/**
 * Normalize a user-supplied service name to the k8s Deployment name form.
 *
 * All olam peripheral Deployments are named `olam-<short-name>` in the k8s
 * manifests (e.g. `olam-kg-service`, `olam-auth-service`). When the operator
 * types `olam services restart kg-service` the CLI must prepend `olam-` before
 * calling `kubectl rollout restart deployment/olam-kg-service`.
 *
 * Idempotent: if the user already types the full name (`olam-kg-service`), the
 * prefix is NOT doubled → `olam-kg-service` (NOT `olam-olam-kg-service`).
 *
 * Exported for unit testing (C1 — R3-D).
 */
export declare function normalizeK8sDeploymentName(name: string): string;
/**
 * `olam services restart <name>` on kubernetes substrate.
 * Uses `kubectl rollout restart deployment/olam-<name>`.
 * Prepends `olam-` to the user-supplied name (idempotent — no double-prefix).
 */
export declare function servicesRestartKubernetes(name: string, deps?: ServicesKubernetesDeps): Promise<{
    exitCode: number;
}>;
export declare function servicesUp(): Promise<{
    exitCode: number;
}>;
/** Stop all service containers. */
export declare function servicesDown(): {
    exitCode: number;
};
/** Show container state for all services. */
export declare function servicesStatus(): void;
export declare function registerServices(program: Command): void;
export {};
//# sourceMappingURL=services.d.ts.map