use serde::{Deserialize, Serialize};
use super::super::datatype::{NumericDate, StringOrURI};
use super::deserialize_audience::{deserialize_audience, serialize_audience};
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct RegisteredClaims {
#[serde(skip_serializing_if = "Option::is_none")]
pub iss: Option<StringOrURI>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sub: Option<StringOrURI>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "deserialize_audience",
serialize_with = "serialize_audience"
)]
pub aud: Option<Vec<StringOrURI>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exp: Option<NumericDate>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nbf: Option<NumericDate>,
#[serde(skip_serializing_if = "Option::is_none")]
pub iat: Option<NumericDate>,
#[serde(skip_serializing_if = "Option::is_none")]
pub jti: Option<String>,
}