/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import Dockerode from "dockerode";
import { Composition } from "./composition.js";
import { Container } from "./container.js";
/**
 * A high-level docker control API specialized for our purposes.
 */
export declare class Docker {
    #private;
    get intf(): Dockerode;
    /**
     * Build a composition of multiple containers.
     */
    compose(name: string, config?: Partial<Container.Configuration>): Composition;
    /**
     * Ensure a container doesn't exist regardless of current state.
     */
    erase(name: string): Promise<Container | undefined>;
    /**
     * Obtain a running {@link Container}.  Connects to existing container or creates a new container.
     */
    open(options: Container.Configuration & {
        name: string;
    }): Promise<Container>;
    containerStatus(name: string): Promise<{
        name: string;
        id: string;
        isRunning: boolean;
    } | undefined>;
    create(config: Container.Configuration): Promise<Container>;
    start(config: Container.Configuration): Promise<Container>;
    pull(nameAndTag: string, platform?: string): Promise<void>;
    buildImage(name: string, path: string): Promise<void>;
}
export declare namespace Docker {
    interface NetworkConfig {
        name: string;
        hostInterfaceName?: string;
        containerInterfacePrefix?: string;
        subnets?: string[];
    }
}
//# sourceMappingURL=docker.d.ts.map