Skip to main content

volt_client_grpc/
lib.rs

1//! # Volt Client gRPC
2//!
3//! A Rust client library for connecting to TDX Volt servers via gRPC.
4//!
5//! This library provides functionality for:
6//! - Authenticating with Volt servers
7//! - Managing connections with automatic reconnection
8//! - Making unary and streaming gRPC calls
9//! - Resource management operations
10//! - File operations
11//! - Database operations
12//! - Wire/pub-sub operations
13//!
14//! ## Example
15//!
16//! ```rust,ignore
17//! use volt_client_grpc::{VoltClient, VoltConfig, InitialiseOptions, config::ConfigSource};
18//!
19//! #[tokio::main]
20//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
21//!     // Create configuration from a Volt DID
22//!     let config = ConfigSource::from_did("did:tdx:example-volt")?;
23//!     
24//!     // Create and initialize client
25//!     let mut client = VoltClient::new()?;
26//!     client.initialise(config, InitialiseOptions::default()).await?;
27//!     
28//!     // Connect to the Volt
29//!     client.connect(None).await?;
30//!     
31//!     // Make API calls...
32//!     
33//!     // Disconnect when done
34//!     client.disconnect();
35//!     
36//!     Ok(())
37//! }
38//! ```
39//! ```
40
41pub mod config;
42pub mod constants;
43pub mod credential;
44pub mod crypto;
45pub mod error;
46pub mod grpc_call;
47pub mod grpc_utils;
48pub mod proto;
49pub mod relay;
50pub mod sync_helpers;
51pub mod sync_provider;
52pub mod utils;
53pub mod volt_client;
54pub mod volt_connection;
55
56// Re-exports for convenient access
57pub use config::{InitialiseOptions, VoltClientConfig, VoltConfig};
58pub use constants::*;
59pub use credential::VoltCredential;
60pub use error::{Result, VoltError};
61pub use sync_helpers::{
62    any_to_json, ensure_sync_database, map_to_json, map_to_json_string, out_to_json, SyncManager,
63    SyncManagerEvent,
64};
65pub use sync_provider::{ProviderState, SyncEvent, SyncProvider};
66pub use volt_client::{ConfigSource, SyncDocumentStream, VoltClient};
67pub use volt_connection::VoltConnection;
68
69// Re-export yrs types commonly needed for sync operations
70pub use yrs::{
71    Array, ArrayRef, DeepObservable, Doc, Map, MapRef, Observable, Options, ReadTxn, Text, TextRef,
72    Transact, Transaction, TransactionMut, Uuid as YrsUuid,
73};
74
75/// Generate a unique ID (UUID v4)
76pub fn generate_id() -> String {
77    uuid::Uuid::new_v4().to_string()
78}