//! # megalib
//!
//! Rust client library for Mega.nz cloud storage.
//!
//! ## Features
//!
//! - Account registration
//! - (More features coming soon)
//!
//! ## Example: Account Registration
//!
//! Registration is a two-step process:
//!
//! ```no_run
//! use megalib::session::{register, verify_registration};
//!
//! # async fn example() -> megalib::error::Result<()> {
//! // Step 1: Initiate registration (sends verification email)
//! let state = register("user@example.com", "SecurePassword123", "John Doe").await?;
//! println!("Check your email! State to save: {}", state.serialize());
//!
//! // Step 2: After receiving email, complete registration
//! // let signup_key = "..."; // Extract from email link
//! // verify_registration(&state, signup_key).await?;
//! # Ok(())
//! # }
//! ```

pub mod api;
pub mod base64;
pub mod crypto;
pub mod error;
pub mod fs;
pub mod http;
pub mod preview;
pub mod progress;
pub mod public;
pub mod session;

// Re-export commonly used types
pub use error::{MegaError, Result};
pub use fs::{Node, NodeType, Quota};
pub use progress::{make_progress_bar, ProgressCallback, TransferProgress};
pub use public::{
    download_public_file, get_public_file_info, open_folder, parse_folder_link, parse_mega_link,
    PublicFile, PublicFolder,
};
pub use session::{register, verify_registration, RegistrationState, Session};
