use super::*;
use crate::{
crypto::{
hash::Content,
sign::{Signable, Signed},
},
data::did::Did,
};
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, PartialOrd, Serialize)]
pub struct License {
#[serde(rename = "issuedTo", with = "serde_str")]
pub issued_to: Did,
pub purpose: String, #[serde(rename = "validFrom")]
pub valid_from: String, #[serde(rename = "validUntil")]
pub valid_until: String,
}
impl Content for License {}
impl Signable for License {}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
pub struct ProvenClaim {
pub claim: serde_json::Value,
pub statements: Vec<Signed<serde_json::Value>>,
}
impl Content for ProvenClaim {}
impl Signable for ProvenClaim {}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
pub struct ClaimPresentation {
#[serde(rename = "provenClaims")]
pub proven_claims: Vec<ProvenClaim>,
pub licenses: Vec<License>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub nonce: Option<Nonce264>,
}
impl Content for ClaimPresentation {}
impl Signable for ClaimPresentation {}