//! LightningStor Storage Node
//!
//! This crate implements a storage node for the LightningStor distributed
//! storage system. Each node stores chunks of data and responds to requests
//! from the main server for put, get, and delete operations.
//!
//! # Architecture
//!
//! ```text
//! ┌─────────────────────────────────────────────────────┐
//! │                  LightningStor Server               │
//! │  (Erasure Coding / Replication Coordination)        │
//! └───────────┬───────────────┬───────────────┬─────────┘
//!             │               │               │
//!             ▼               ▼               ▼
//!     ┌───────────┐   ┌───────────┐   ┌───────────┐
//!     │   Node 1  │   │   Node 2  │   │   Node 3  │
//!     │  (gRPC)   │   │  (gRPC)   │   │  (gRPC)   │
//!     └───────────┘   └───────────┘   └───────────┘
//! ```

pub mod config;
pub mod service;
pub mod storage;

pub use config::NodeConfig;
pub use service::NodeServiceImpl;
pub use storage::LocalChunkStore;

/// Re-export generated protobuf types
pub mod proto {
    tonic::include_proto!("lightningstor.node.v1");
}

pub use proto::node_service_client::NodeServiceClient;
pub use proto::node_service_server::{NodeService, NodeServiceServer};
