x402_kit/types/
common.rs

1use std::fmt::{Debug, Display};
2
3use serde::{Deserialize, Serialize};
4
5pub type Record<V> = std::collections::HashMap<String, V>;
6
7pub type AnyJson = serde_json::Value;
8
9#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
10pub enum X402Version {
11    V1,
12}
13
14impl Serialize for X402Version {
15    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
16    where
17        S: serde::Serializer,
18    {
19        match self {
20            X402Version::V1 => serializer.serialize_i8(1),
21        }
22    }
23}
24
25impl<'de> Deserialize<'de> for X402Version {
26    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
27    where
28        D: serde::Deserializer<'de>,
29    {
30        let v = i8::deserialize(deserializer)?;
31        match v {
32            1 => Ok(X402Version::V1),
33            _ => Err(serde::de::Error::custom(format!(
34                "Unknown X402 version: {}",
35                v
36            ))),
37        }
38    }
39}
40
41impl Display for X402Version {
42    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
43        match self {
44            X402Version::V1 => write!(f, "1"),
45        }
46    }
47}