#![doc(html_no_source)]
#![doc(html_favicon_url = "https://cipherstash.com/favicon.ico")]
#![doc = include_str!("../README.md")]
// `unimplemented!()` panics are not acceptable in production-shaped code
// paths — they crash the calling service on input that wasn't anticipated.
// Doctests still use `unimplemented!()` as a stand-in for setup code, which
// is fine (they don't run that code path); test code is excluded.
#![cfg_attr(not(test), deny(clippy::unimplemented))]
// `cts_client` and `management` are CLI-shaped (workspace/keyset management,
// admin OIDC flows) and not needed in edge runtimes; cfg'd off to keep the
// wasm dep tree tight. The pure parts of `config` (env-var name constants,
// idp_provider parsing, error types) stay; filesystem-bound submodules
// (`paths`, `source`, `docker_env_file`) are gated inside `config::mod.rs`.
pub mod config;
#[cfg(not(target_arch = "wasm32"))]
pub mod cts_client;
pub mod ejsonpath;
pub mod encryption;
pub mod eql;
#[cfg(not(target_arch = "wasm32"))]
pub mod management;
mod user_agent;
pub mod zerokms;

// Re-exports
pub use cts_common::{AwsRegion, Crn, Region, RegionError, WorkspaceId};
pub use zerokms_protocol::cipherstash_config as schema;
pub use zerokms_protocol::{IdentifiedBy, Name, UnverifiedContext, UnverifiedContextValue};

#[cfg(not(target_arch = "wasm32"))]
pub use cts_client::{CTSClient, CtsClient, CtsClientError};
pub use zerokms::{
    EnvKeyProvider, FallbackKeyProvider, KeyProvider, KeyProviderError, StaticKeyProvider,
    WithKeyProvider, ZeroKMS,
};

pub use stack_auth::{
    AuthError, AuthStrategy, AuthStrategyBounds, AutoStrategy, AutoStrategyBuilder, SecretToken,
    ServiceToken,
};
