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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//! # LicenseSeat Rust SDK
//!
//! Official Rust SDK for [LicenseSeat](https://licenseseat.com) - the simple, secure
//! licensing platform for apps, games, and plugins.
//!
//! ## Features
//!
//! - **License Lifecycle** - Activate, validate, and deactivate licenses
//! - **Offline Validation** - Ed25519 cryptographic verification (optional feature)
//! - **Automatic Re-validation** - Background validation with configurable intervals
//! - **Heartbeat** - Periodic health-check pings for real-time seat tracking
//! - **Entitlement Management** - Fine-grained feature access control
//! - **Device Telemetry** - Auto-collected device metadata for analytics
//! - **Network Resilience** - Automatic retry with exponential backoff
//!
//! ## Quick Start
//!
//! ```rust,no_run
//! use licenseseat::{LicenseSeat, Config};
//!
//! #[tokio::main]
//! async fn main() -> Result<(), licenseseat::Error> {
//! // Create SDK instance
//! let sdk = LicenseSeat::new(Config {
//! api_key: "your-api-key".into(),
//! product_slug: "your-product".into(),
//! ..Default::default()
//! });
//!
//! // Activate a license
//! let license = sdk.activate("USER-LICENSE-KEY").await?;
//! println!("Activated! Device ID: {}", license.device_id);
//!
//! // Check entitlements
//! let status = sdk.check_entitlement("pro-features");
//! if status.active {
//! println!("Pro features enabled!");
//! }
//!
//! // Deactivate when done
//! sdk.deactivate().await?;
//!
//! Ok(())
//! }
//! ```
//!
//! ## Feature Flags
//!
//! - `default` - Uses rustls for TLS
//! - `native-tls` - Use system TLS instead of rustls
//! - `offline` - Enable Ed25519 offline validation (adds crypto dependencies)
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
/// SDK version
pub const VERSION: &str = env!;
/// SDK name (used in telemetry)
pub const SDK_NAME: &str = "rust";