#![allow(deprecated)]
#![allow(unused_imports)]
//! # Docker Client
//!
//! A comprehensive, ergonomic Docker client library for Rust built on top of Bollard.
//!
//! ## Features
//!
//! - **Full Docker API Coverage**: Containers, images, networks, and volumes
//! - **Fluent Builder APIs**: Ergonomic, chainable methods for creating resources
//! - **Async/Await**: Built on Tokio for modern async Rust
//! - **Type-Safe**: Leverage Rust's type system for compile-time safety
//! - **Well Documented**: Comprehensive documentation and examples
//!
//! ## Quick Start
//!
//! ```no_run
//! use lmrc_docker::DockerClient;
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//!     // Create a client
//!     let client = DockerClient::new()?;
//!
//!     // Check Docker is available
//!     client.ping().await?;
//!
//!     // Pull an image
//!     client.images().pull("nginx:latest", None).await?;
//!
//!     // Create and start a container
//!     let container = client.containers()
//!         .create("nginx:latest")
//!         .name("web-server")
//!         .port(8080, 80, "tcp")
//!         .env("ENV", "production")
//!         .build()
//!         .await?;
//!
//!     container.start().await?;
//!
//!     // List running containers
//!     let containers = client.containers().list(false).await?;
//!     println!("Running {} containers", containers.len());
//!
//!     // Stop and remove the container
//!     container.stop(Some(10)).await?;
//!     container.remove(false, false).await?;
//!
//!     Ok(())
//! }
//! ```
//!
//! ## Modules
//!
//! - [`client`]: Docker client configuration and connection
//! - [`containers`]: Container lifecycle management
//! - [`images`]: Image operations (build, pull, push, etc.)
//! - [`networks`]: Network management
//! - [`volumes`]: Volume operations
//! - [`registry`]: Registry operations (search, authentication, image management)
//! - [`error`]: Error types and result aliases

// Re-export commonly used types from bollard
pub use bollard::auth::DockerCredentials;
pub use bollard::models::{
    ContainerInspectResponse, ContainerSummary, ImageInspect, ImageSummary, Network, Volume,
};

// Public modules
pub mod client;
pub mod containers;
pub mod error;
pub mod images;
pub mod networks;
pub mod registry;
pub mod volumes;

// Re-export main types at crate root for convenience
pub use client::{DockerClient, DockerClientConfig};
pub use containers::{ContainerBuilder, ContainerRef, Containers};
pub use error::{DockerError, Result};
pub use images::{ImageBuilder, ImageRef, Images};
pub use networks::{NetworkRef, Networks};
pub use registry::{ImageSearchResult, Registry, RegistryConfig};
pub use volumes::{VolumeRef, Volumes};
