stateset-a2a 0.7.4

Agent-to-Agent commerce service layer: splits, subscriptions, escrow, webhooks, event streaming
docs.rs failed to build stateset-a2a-0.7.4
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

stateset-a2a

Agent-to-Agent (A2A) commerce service layer for the StateSet iCommerce platform.

This crate provides the business logic for multi-party split payments, recurring subscriptions, conditional escrow, HMAC-signed webhooks, SSRF protection, and SSE event stream filtering.

Modules

  • [splits] — Multi-party payment splitting with rounding drift prevention.
  • [subscriptions] — Recurring billing with trial periods and state machine.
  • [escrow] — Conditional fund holding with four condition types.
  • [notifications] — HMAC-SHA256 webhook signing and SSRF URL validation.
  • [events] — Event type filtering with wildcard/prefix matching.

Example: Percentage Split

use rust_decimal_macros::dec;
use stateset_a2a::splits::{Recipient, calculate_percentage_split};

let recipients = vec![
    Recipient { address: "0xAlice".into(), percent: Some(dec!(50)), amount: None },
    Recipient { address: "0xBob".into(), percent: Some(dec!(30)), amount: None },
    Recipient { address: "0xCharlie".into(), percent: Some(dec!(20)), amount: None },
];

let result = calculate_percentage_split(dec!(100), dec!(2.5), &recipients).unwrap();
assert_eq!(result.total_distributed, dec!(100));

Example: HMAC Webhook

use stateset_a2a::notifications::{sign_webhook, verify_webhook};

let signature = sign_webhook(b"whsec_abc123", b"{\"event\":\"payment.completed\"}");
assert!(verify_webhook(b"whsec_abc123", b"{\"event\":\"payment.completed\"}", &signature));