use crate::{artifacts::SigningKeyExt, identity::Attribute};
use alloc::string::String;
use alloc::vec::Vec;
use irma::{ProofStatus, SessionStatus};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Parameters<T> {
pub format_version: u8,
pub public_key: T,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct DisclosureAttribute {
#[serde(rename = "t")]
pub atype: String,
#[serde(rename = "v")]
pub value: Option<String>,
#[serde(default, skip_serializing_if = "crate::util::is_false")]
pub optional: bool,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct IrmaAuthRequest {
pub con: Vec<DisclosureAttribute>,
#[serde(skip_serializing_if = "Option::is_none")]
pub validity: Option<u64>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KeyResponse<T> {
pub status: SessionStatus,
#[serde(skip_serializing_if = "Option::is_none")]
pub proof_status: Option<ProofStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key: Option<T>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SigningKeyRequest {
pub pub_sign_id: Vec<Attribute>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priv_sign_id: Option<Vec<Attribute>>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SigningKeyResponse {
pub status: SessionStatus,
#[serde(skip_serializing_if = "Option::is_none")]
pub proof_status: Option<ProofStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pub_sign_key: Option<SigningKeyExt>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priv_sign_key: Option<SigningKeyExt>,
}