//! Synor Compute SDK for Rust
//!
//! Access distributed heterogeneous compute resources (CPU, GPU, TPU, NPU, LPU, FPGA, DSP)
//! for AI/ML workloads at 90% cost reduction compared to traditional cloud.
//!
//! # Quick Start
//!
//! ```rust,no_run
//! use synor_compute::{SynorCompute, Tensor, ProcessorType, Precision};
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//!     // Create client
//!     let client = SynorCompute::new("your-api-key");
//!
//!     // Matrix multiplication on GPU
//!     let a = Tensor::rand(&[512, 512]);
//!     let b = Tensor::rand(&[512, 512]);
//!     let result = client.matmul(&a, &b)
//!         .precision(Precision::FP16)
//!         .processor(ProcessorType::GPU)
//!         .send()
//!         .await?;
//!
//!     if result.is_success() {
//!         println!("Time: {}ms", result.execution_time_ms.unwrap_or(0));
//!     }
//!
//!     // LLM inference
//!     let response = client.inference("llama-3-70b", "Explain quantum computing")
//!         .send()
//!         .await?;
//!     println!("{}", response.result.unwrap_or_default());
//!
//!     // Streaming inference
//!     use futures::StreamExt;
//!     let mut stream = client.inference_stream("llama-3-70b", "Write a poem").await?;
//!     while let Some(token) = stream.next().await {
//!         print!("{}", token?);
//!     }
//!
//!     Ok(())
//! }
//! ```

mod types;
mod tensor;
mod client;
mod error;

#[cfg(test)]
mod tests;

pub use types::*;
pub use tensor::Tensor;
pub use client::SynorCompute;
pub use error::{Error, Result};

/// SDK version
pub const VERSION: &str = "0.1.0";
