//! SSH utilities for remote command execution and file transfer.
//!
//! This module provides:
//! - `SshConnection`: Low-level SSH command execution using system SSH client
//! - `FileTransferBuilder`: Rsync-based file transfer (upload/download) with directory support
//! - `SshKeyGenerator`: SSH key generation with builder pattern (RSA and ED25519)
//! - `AuthorizedKeysManager`: Manage authorized keys on remote systems
//! - `FileTransferOps`: High-level file transfer operations
//!
//! # Examples
//!
//! Execute a command:
//! ```no_run
//! use herolib_os::net::ssh::SshConnection;
//!
//! let conn = SshConnection::builder()
//!     .host("example.com")
//!     .user("ubuntu")
//!     .build();
//!
//! let (code, output) = conn.execute("whoami")?;
//! # Ok::<(), anyhow::Error>(())
//! ```
//!
//! Generate SSH keys:
//! ```no_run
//! use herolib_os::net::ssh::keys::{SshKeyGenerator, SshKeyType};
//!
//! let path = SshKeyGenerator::new("/tmp/my_key")
//!     .key_type(SshKeyType::Ed25519)
//!     .generate()?;
//! # Ok::<(), anyhow::Error>(())
//! ```
//!
//! Manage authorized keys:
//! ```no_run
//! use herolib_os::net::ssh::SshConnection;
//! use herolib_os::net::ssh::auth_keys::AuthorizedKeysManager;
//!
//! let conn = SshConnection::builder()
//!     .host("example.com")
//!     .user("ubuntu")
//!     .build();
//!
//! let manager = AuthorizedKeysManager::new(conn);
//! manager.add_key("/path/to/id_rsa.pub")?;
//! let keys = manager.list_keys()?;
//! # Ok::<(), anyhow::Error>(())
//! ```

#[path = "ssh_base.rs"]
pub mod ssh;
pub mod keys;
pub mod auth_keys;
pub mod file_transfer;
pub mod pod_connection;
pub mod rhai;

// Re-export main types for convenience
pub use ssh::{SshConnection, SshConnectionBuilder, FileTransferBuilder};
pub use keys::{SshKeyGenerator, SshKeyType};
pub use auth_keys::AuthorizedKeysManager;
pub use file_transfer::FileTransferOps;
pub use pod_connection::{PodConnectionConfig, PodSshAddress};
