Skip to main content

lib_compression/
lib.rs

1//! Sovereign Compression Library
2//!
3//! Universal lossless compression via network-wide deduplication with optional zero-knowledge proofs.
4//!
5//! # Features
6//!
7//! - **Content-defined chunking** (FastCDC)
8//! - **Pattern-based deduplication** (ZKC)
9//! - **SovereignCodec** (BWT + MTF + RLE + Range coding)
10//! - **Optional ZK proofs** (feature: `zk-proofs`)
11//! - **Optional ML compression** (feature: `ml-support`)
12//!
13//! # Example
14//!
15//! ```rust
16//! use lib_compression::{ContentChunker, ZkcCompressor, SovereignCodec};
17//!
18//! // Chunk file
19//! let chunker = ContentChunker::default();
20//! let shards = chunker.chunk(&data)?;
21//!
22//! // Compress with ZKC
23//! let compressor = ZkcCompressor::new();
24//! let compressed = compressor.compress(&shards)?;
25//! ```
26
27// Core modules
28pub mod chunker;
29pub mod shard;
30pub mod assembler;
31pub mod transport;
32pub mod error;
33
34// ZKC modules
35pub mod patterns;
36pub mod pattern_dict;
37pub mod zkc_compressor;
38pub mod zkc_decompressor;
39pub mod sovereign_codec;
40
41// Abstraction traits (decouples from internal workspace deps)
42pub mod traits;
43
44// Optional model compressor bridge
45pub mod model_compressor;
46
47// Re-exports
48pub use chunker::ContentChunker;
49pub use shard::{Shard, ShardId, ShardManager};
50pub use assembler::JitAssembler;
51pub use error::{CompressionError, Result};
52pub use transport::{ShardTransport, TransportConfig};
53pub use patterns::{Pattern, PatternId, PatternMiner, PatternMinerConfig};
54pub use pattern_dict::{PatternDictionary, DictionaryEntry};
55pub use zkc_compressor::{ZkcCompressor, CompressedShard, CompressionStats};
56pub use zkc_decompressor::{ZkcDecompressor, DecompressionStats};
57pub use sovereign_codec::{SovereignCodec, CodecParams};
58pub use model_compressor::{SovereignCodecCompressor, AdaptiveCodecCompressor};
59
60// Re-export traits for easy access
61pub use traits::{ProofBackend, DhtStorage, ModelCompressor};
62pub use traits::{DefaultProofBackend, MemoryDht, DefaultModelCompressor};
63pub use traits::MerkleProof;
64
65// Constants
66pub const PROTOCOL_VERSION: u8 = 1;
67pub const AVG_SHARD_SIZE: usize = 1024 * 1024; // 1 MB
68pub const MIN_SHARD_SIZE: usize = 256 * 1024;  // 256 KB
69pub const MAX_SHARD_SIZE: usize = 4 * 1024 * 1024; // 4 MB
70pub const DEFAULT_REDUNDANCY: usize = 3;