//! ZeroID SDK — async client for the [ZeroID](https://github.com/zeroid-dev/zeroid)
//! non-human identity (NHI) server.
//!
//! # Quick start
//!
//! ```no_run
//! use highflame::zeroid::{ZeroIDClient, ZeroIDOptions};
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//!     let client = ZeroIDClient::new(
//!         ZeroIDOptions::new("http://localhost:8899")
//!             .account_id("acc_123")
//!             .project_id("proj_456"),
//!     );
//!
//!     // List identities
//!     let list = client.identities().list().await?;
//!     println!("{} identities", list.total);
//!
//!     // Register an agent (creates identity + API key atomically)
//!     let registered = client.agents().register(&highflame::zeroid::types::RegisterAgentRequest {
//!         name: "my-agent".to_string(),
//!         external_id: "my-agent-001".to_string(),
//!         ..Default::default()
//!     }).await?;
//!     println!("api_key: {}", registered.api_key);
//!
//!     // Issue a token (public endpoint — no tenant headers)
//!     let token = client.tokens().issue(&highflame::zeroid::types::TokenRequest {
//!         grant_type: "api_key".to_string(),
//!         api_key: Some(registered.api_key),
//!         ..Default::default()
//!     }).await?;
//!     println!("access_token: {}", token.access_token);
//!
//!     Ok(())
//! }
//! ```

pub mod client;
pub mod error;
pub mod resources;
pub mod types;

// ── Public re-exports ─────────────────────────────────────────────────────────

pub use client::{ZeroIDClient, ZeroIDOptions};
pub use error::ZeroIDError;
