use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct UcanHeader {
pub alg: String,
pub typ: String,
pub ucv: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct UcanCapability {
pub caps: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub with: Vec<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct UcanPayload {
pub iss: String,
pub aud: String,
pub sub: String,
pub cmd: String,
pub args: UcanCapability,
pub nonce: String,
pub exp: i64,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub prf: Vec<String>,
}