Skip to main content

r402_protocol/
lib.rs

1//! Wire types, CAIP-2 network identifiers, scheme markers, and money for
2//! the x402 payment protocol (version 2).
3
4#![cfg_attr(docsrs, feature(doc_cfg))]
5#![cfg_attr(
6    test,
7    allow(
8        clippy::indexing_slicing,
9        clippy::panic,
10        reason = "unit tests panic on assertion failure"
11    )
12)]
13
14pub mod echo;
15pub mod error;
16pub mod extension;
17pub mod metrics;
18pub mod money;
19pub mod network;
20pub mod payment;
21pub mod scheme;
22
23pub use echo::validate_extension_echoes;
24pub use error::{
25    AsPaymentProblem, ClientError, ErrorReason, FacilitatorError, FacilitatorTransportKind,
26    PaymentProblem, SettlementError, VerificationError,
27};
28pub use extension::{
29    AdvertiseContext, BoxFuture, DynExtension, Extension, ExtensionRegistry, SettleContext,
30    VerifyContext,
31};
32pub use money::{MoneyAmount, MoneyAmountParseError, ScaleFromMantissa};
33pub use network::{
34    ChainId, ChainIdFormatError, ChainIdPattern, ChainProvider, DeployedTokenAmount, NetworkInfo,
35};
36pub use payment::{
37    Base64Bytes, DEFAULT_ASSET_DECIMALS, EXTENSION_RESPONSE_LOG_FIELDS, ExtensionEntry, Extensions,
38    PaymentPayload, PaymentRequired, PaymentRequirements, PriceTag, ResourceInfo, SettleRequest,
39    SettleResponse, SettlementOverrideError, SettlementOverrides, SupportedPaymentKind,
40    SupportedResponse, TypedVerifyRequest, U64String, UnixTimestamp, V2, VerifyRequest,
41    VerifyResponse, Version, Version2, asset_decimals_from_extra, find_matching_requirements,
42    resolve_settlement_override_amount, schema_has_external_ref,
43};
44#[cfg(test)]
45use proptest as _;
46pub use scheme::{
47    AuthCaptureScheme, BatchSettlementScheme, ExactScheme, SchemeId, SchemeMarkerError, SchemeSlug,
48    UptoScheme,
49};