Skip to main content

light_compressed_token_sdk/
lib.rs

1//! # Light Compressed Token SDK
2//!
3//! Low-level SDK for compressed token operations on Light Protocol.
4//!
5//! This crate provides the core building blocks for working with compressed token accounts,
6//! including instruction builders for transfers, mints, and compress/decompress operations.
7//!
8//! ## Compressed Token Accounts
9//| - do not require a rent-exempt balance.
10//! - are on Solana mainnet.
11//! - are compressed accounts.
12//! - can hold Light Mint and SPL Mint tokens.
13//! - cost 5,000 lamports to create.
14//! - are well suited for airdrops and reward distribution.
15//!
16//! ## Difference to Light-Token:
17//! light-token: Solana account that holds token balances of light-mints, SPL or Token 22 mints.
18//! Compressed token: Compressed account storing token data. Rent-free, for storage and distribution.
19//!
20//! ## Features
21//!
22//! - `v1` - Enable v1 compressed token support
23//! - `anchor` - Enable Anchor framework integration
24//!
25//! For full examples, see the [Compressed Token Examples](https://github.com/Lightprotocol/examples-zk-compression).
26//!
27//! ## Operations reference
28//!
29//! | Operation | Docs guide | GitHub example |
30//! |-----------|-----------|----------------|
31//! | Create mint | [create-compressed-token-accounts](https://www.zkcompression.com/compressed-tokens/guides/create-compressed-token-accounts) | [example](https://github.com/Lightprotocol/examples-zk-compression/blob/main/compressed-token-cookbook/actions/create-mint.ts) |
32//! | Mint to | [create-compressed-token-accounts](https://www.zkcompression.com/compressed-tokens/guides/create-compressed-token-accounts) | [example](https://github.com/Lightprotocol/examples-zk-compression/blob/main/compressed-token-cookbook/actions/mint-to.ts) |
33//! | Transfer | [create-compressed-token-accounts](https://www.zkcompression.com/compressed-tokens/guides/create-compressed-token-accounts) | [example](https://github.com/Lightprotocol/examples-zk-compression/blob/main/compressed-token-cookbook/actions/transfer.ts) |
34//! | Approve | [create-compressed-token-accounts](https://www.zkcompression.com/compressed-tokens/guides/create-compressed-token-accounts) | [example](https://github.com/Lightprotocol/examples-zk-compression/blob/main/compressed-token-cookbook/actions/approve.ts) |
35//! | Revoke | [create-compressed-token-accounts](https://www.zkcompression.com/compressed-tokens/guides/create-compressed-token-accounts) | [example](https://github.com/Lightprotocol/examples-zk-compression/blob/main/compressed-token-cookbook/actions/revoke.ts) |
36//! | Compress | [create-compressed-token-accounts](https://www.zkcompression.com/compressed-tokens/guides/create-compressed-token-accounts) | [example](https://github.com/Lightprotocol/examples-zk-compression/blob/main/compressed-token-cookbook/actions/compress.ts) |
37//! | Compress SPL account | [create-compressed-token-accounts](https://www.zkcompression.com/compressed-tokens/guides/create-compressed-token-accounts) | [example](https://github.com/Lightprotocol/examples-zk-compression/blob/main/compressed-token-cookbook/actions/compress-spl-account.ts) |
38//! | Decompress | [create-compressed-token-accounts](https://www.zkcompression.com/compressed-tokens/guides/create-compressed-token-accounts) | [example](https://github.com/Lightprotocol/examples-zk-compression/blob/main/compressed-token-cookbook/actions/decompress.ts) |
39//! | Merge token accounts | [create-compressed-token-accounts](https://www.zkcompression.com/compressed-tokens/guides/create-compressed-token-accounts) | [example](https://github.com/Lightprotocol/examples-zk-compression/blob/main/compressed-token-cookbook/actions/merge-token-accounts.ts) |
40//! | Create token pool | [create-compressed-token-accounts](https://www.zkcompression.com/compressed-tokens/guides/create-compressed-token-accounts) | [example](https://github.com/Lightprotocol/examples-zk-compression/blob/main/compressed-token-cookbook/actions/create-token-pool.ts) |
41//!
42//! ### Toolkit guides
43//!
44//! | Topic | Docs guide | GitHub example |
45//! |-------|-----------|----------------|
46//! | Airdrop | [airdrop](https://www.zkcompression.com/compressed-tokens/advanced-guides/airdrop) | [example](https://github.com/Lightprotocol/examples-zk-compression/tree/main/example-token-distribution) |
47//! | Privy integration | [privy](https://www.zkcompression.com/compressed-tokens/for-privy) | [example](https://github.com/Lightprotocol/examples-zk-compression/tree/main/privy) |
48//!
49//! ## Modules
50//!
51//! - [`compressed_token`] - Core compressed token types and instruction builders
52//! - [`error`] - Error types for compressed token operations
53//! - [`utils`] - Utility functions and default account configurations
54//! - [`constants`] - Program IDs and other constants
55//! - [`spl_interface`] - SPL interface PDA derivation utilities
56
57pub mod compat;
58pub mod compressed_token;
59pub mod constants;
60pub mod error;
61pub mod spl_interface;
62pub mod utils;
63
64// Conditional anchor re-exports
65#[cfg(feature = "anchor")]
66use anchor_lang::{AnchorDeserialize, AnchorSerialize};
67#[cfg(not(feature = "anchor"))]
68use borsh::{BorshDeserialize as AnchorDeserialize, BorshSerialize as AnchorSerialize};
69pub use light_compressed_account::instruction_data::compressed_proof::{
70    CompressedProof, ValidityProof,
71};