Files
quicproquo/crates/quicprochat-sdk/src/lib.rs
Christian Nennemann c256c38ffb docs: add crate-level documentation and public API doc comments
- Expand crate-level docs for quicprochat-rpc (architecture, wire format,
  module map) and quicprochat-sdk (connection lifecycle, event subscription,
  module descriptions).
- Add /// doc comments to all undocumented pub fn/struct/enum items in
  server domain services (keys, channels, devices, users, account, p2p,
  blobs) and domain types.
- Fix rustdoc broken intra-doc links in plugin-api (HookResult,
  qpc_plugin_init), federation/mod.rs (Store), and client main.rs
  (unescaped brackets).
2026-03-21 19:14:07 +01:00

58 lines
2.4 KiB
Rust

//! Client SDK for quicprochat v2.
//!
//! Provides [`QpqClient`](client::QpqClient) — a single entry point for
//! connecting to a quicprochat server, authenticating via OPAQUE, managing
//! conversations, and subscribing to real-time events.
//!
//! # Connection lifecycle
//!
//! 1. Create a [`QpqClient`](client::QpqClient) with a [`ClientConfig`](config::ClientConfig).
//! 2. Call [`connect()`](client::QpqClient::connect) to establish a QUIC connection
//! and open the local SQLCipher conversation store.
//! 3. [`register()`](client::QpqClient::register) or
//! [`login()`](client::QpqClient::login) via OPAQUE to authenticate.
//! 4. Optionally call [`start_heartbeat()`](client::QpqClient::start_heartbeat)
//! to enable proactive dead-connection detection.
//! 5. Use messaging, group, key, and device APIs through the client.
//! 6. Call [`disconnect()`](client::QpqClient::disconnect) to shut down gracefully.
//!
//! # Event subscription
//!
//! Call [`subscribe()`](client::QpqClient::subscribe) to get a
//! `tokio::sync::broadcast::Receiver<ClientEvent>` that emits connection state
//! changes, authentication events, and incoming message notifications.
//!
//! # Modules
//!
//! - [`client`] — [`QpqClient`](client::QpqClient) and connection management.
//! - [`auth`] — OPAQUE registration and login flows.
//! - [`config`] — [`ClientConfig`](config::ClientConfig) with server address, TLS, DB path.
//! - [`conversation`] — [`ConversationStore`](conversation::ConversationStore) for local
//! message persistence and user blocking.
//! - [`events`] — [`ClientEvent`](events::ClientEvent) enum for the event bus.
//! - [`groups`] — group membership management.
//! - [`keys`] — MLS KeyPackage and hybrid (PQ) key upload/fetch.
//! - [`messaging`] — send and receive encrypted messages.
//! - [`devices`] — multi-device registration, listing, and revocation.
//! - [`recovery`] — account recovery bundle upload/fetch.
//! - [`outbox`] — offline message queue with retry.
//! - [`state`] — client state persistence (identity key, session token).
//! - [`transcript`] — conversation transcript export.
//! - [`users`] — username/identity resolution.
pub mod auth;
pub mod client;
pub mod config;
pub mod conversation;
pub mod devices;
pub mod error;
pub mod events;
pub mod groups;
pub mod keys;
pub mod messaging;
pub mod outbox;
pub mod recovery;
pub mod state;
pub mod transcript;
pub mod users;