use std::collections::BTreeMap;
use iref::UriBuf;
use serde::{Deserialize, Serialize};
use ssi_core::one_or_many::OneOrMany;
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct Service {
pub id: UriBuf,
#[serde(rename = "type")]
pub type_: OneOrMany<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub service_endpoint: Option<OneOrMany<Endpoint>>,
#[serde(flatten)]
pub property_set: BTreeMap<String, serde_json::Value>,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
#[serde(untagged)]
pub enum Endpoint {
Uri(UriBuf), Map(serde_json::Value),
}