1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//! Tenant Resolver SDK
//!
//! This crate provides the public API for the `tenant-resolver` module:
//!
//! - [`TenantResolverClient`] - Public API trait for consumers
//! - [`TenantResolverPluginClient`] - Plugin API trait for implementations
//! - [`TenantInfo`], [`TenantStatus`] - Domain models
//! - [`TenantResolverError`] - Error types
//! - [`TenantResolverPluginSpecV1`] - GTS schema for plugin discovery
//!
//! ## Usage
//!
//! Consumers obtain the client from `ClientHub`:
//!
//! ```ignore
//! use tenant_resolver_sdk::{
//! TenantResolverClient, GetAncestorsOptions, GetDescendantsOptions,
//! GetTenantsOptions, IsAncestorOptions,
//! };
//!
//! // Get the client from ClientHub
//! let resolver = hub.get::<dyn TenantResolverClient>()?;
//!
//! // Get tenant info
//! let tenant = resolver.get_tenant(&ctx, tenant_id).await?;
//!
//! // Get multiple tenants
//! let tenants = resolver.get_tenants(&ctx, &[id1, id2], &GetTenantsOptions::default()).await?;
//!
//! // Get ancestors
//! let response = resolver.get_ancestors(&ctx, tenant_id, &GetAncestorsOptions::default()).await?;
//!
//! // Get descendants
//! let descendants = resolver.get_descendants(&ctx, tenant_id, &GetDescendantsOptions::default()).await?;
//!
//! // Check ancestry
//! let is_anc = resolver.is_ancestor(&ctx, parent_id, child_id, &IsAncestorOptions::default()).await?;
//! ```
// Re-export main types at crate root
pub use TenantResolverClient;
pub use TenantResolverError;
pub use TenantResolverPluginSpecV1;
pub use ;
pub use TenantResolverPluginClient;