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
//! Solana chain support for the x402 payment protocol.
//!
//! This crate provides implementations of the x402 payment protocol for Solana blockchain
//! with the "exact" payment scheme based on SPL Token `transfer` instructions with
//! pre-signed authorization.
//!
//! # Features
//!
//! - **CAIP-2 Addressing**: Uses CAIP-2 chain IDs for chain identification
//! - **SPL Token Payments**: Token transfers using pre-signed transaction authorization
//! - **Compute Budget Management**: Automatic compute unit limit and price configuration
//! - **`WebSocket` Support**: Optional pubsub for faster transaction confirmation
//! - **Balance Verification**: On-chain balance checks before settlement
//!
//! # Architecture
//!
//! The crate is organized into several modules:
//!
//! - [`chain`] - Core Solana chain types, providers, and configuration
//! - [`exact`] - Solana "exact" payment scheme
//!
//! # Feature Flags
//!
//! - `server` - Server-side price tag generation
//! - `client` - Client-side payment signing
//! - `facilitator` - Facilitator-side payment verification and settlement
//! - `telemetry` - `OpenTelemetry` tracing support
//!
// Consumed by feature-gated modules; quiet the linter when default features
// disable every consumer.
use base64 as _;
use futures_util as _;
/// Recommended hard cap for `max_compute_unit_price` (micro-lamports).
///
/// Aligned with the Go reference SDK
/// (`mechanisms/svm/exact/facilitator/scheme.go: maxComputeUnitPriceMicroLamports`)
/// so that any client transaction passing Go's verifier passes r402's, and
/// vice versa. A value of 5 000 000 micro-lamports per CU corresponds to
/// roughly 0.005 SOL per million CU, well above realistic priority-fee
/// surge prices on Solana mainnet, while bounding the worst-case fee a
/// fee-paying facilitator can be tricked into paying.
pub const SOLANA_MAX_COMPUTE_UNIT_PRICE_MICROLAMPORTS: u64 = 5_000_000;
pub use SolanaExact;
pub use SolanaExactClient;
pub use *;