/**
 * Docker Tool
 *
 * Provides container management capabilities for Code Buddy.
 * Supports common Docker operations with proper confirmation for destructive actions.
 */
import { ToolResult } from '../types/index.js';
export interface ContainerInfo {
    id: string;
    name: string;
    image: string;
    status: string;
    ports: string;
    created: string;
}
export interface ImageInfo {
    id: string;
    repository: string;
    tag: string;
    size: string;
    created: string;
}
export interface DockerBuildOptions {
    dockerfile?: string;
    tag?: string;
    buildArgs?: Record<string, string>;
    noCache?: boolean;
    target?: string;
}
export interface DockerRunOptions {
    name?: string;
    ports?: string[];
    volumes?: string[];
    env?: Record<string, string>;
    detach?: boolean;
    rm?: boolean;
    network?: string;
    workdir?: string;
    user?: string;
}
export declare class DockerTool {
    private confirmationService;
    private cwd;
    constructor(cwd?: string);
    /**
     * Execute docker command safely
     */
    private execDocker;
    /**
     * Check if Docker is available and running
     */
    isDockerAvailable(): Promise<boolean>;
    /**
     * List running containers
     */
    listContainers(all?: boolean): Promise<ToolResult>;
    /**
     * List Docker images
     */
    listImages(): Promise<ToolResult>;
    /**
     * Build a Docker image
     */
    build(context: string, options?: DockerBuildOptions): Promise<ToolResult>;
    /**
     * Run a Docker container
     */
    run(image: string, command?: string, options?: DockerRunOptions): Promise<ToolResult>;
    /**
     * Stop a running container
     */
    stop(containerIdOrName: string, timeout?: number): Promise<ToolResult>;
    /**
     * Start a stopped container
     */
    start(containerIdOrName: string): Promise<ToolResult>;
    /**
     * Remove a container (requires confirmation for running containers)
     */
    removeContainer(containerIdOrName: string, force?: boolean): Promise<ToolResult>;
    /**
     * Remove a Docker image (requires confirmation)
     */
    removeImage(imageIdOrTag: string, force?: boolean): Promise<ToolResult>;
    /**
     * Get container logs
     */
    logs(containerIdOrName: string, tail?: number, follow?: boolean): Promise<ToolResult>;
    /**
     * Execute a command in a running container
     */
    exec(containerIdOrName: string, command: string, interactive?: boolean): Promise<ToolResult>;
    /**
     * Pull an image from a registry
     */
    pull(image: string): Promise<ToolResult>;
    /**
     * Push an image to a registry
     */
    push(image: string): Promise<ToolResult>;
    /**
     * Inspect a container or image
     */
    inspect(target: string, type?: 'container' | 'image'): Promise<ToolResult>;
    /**
     * Docker Compose up
     */
    composeUp(file?: string, services?: string[], detach?: boolean): Promise<ToolResult>;
    /**
     * Docker Compose down
     */
    composeDown(file?: string, removeVolumes?: boolean): Promise<ToolResult>;
    /**
     * Get Docker system information
     */
    systemInfo(): Promise<ToolResult>;
    /**
     * Prune unused Docker resources (requires confirmation)
     */
    prune(type?: 'containers' | 'images' | 'volumes' | 'system'): Promise<ToolResult>;
}
export declare function getDockerTool(cwd?: string): DockerTool;
