1use crate::document::DidDocument;
4
5#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct ResolutionMetadata {
9 pub content_type: Option<String>,
11 pub error: Option<String>,
13}
14
15#[derive(Debug, Clone)]
17pub struct ResolutionResult {
18 pub document: Option<DidDocument>,
19 pub metadata: ResolutionMetadata,
20}
21
22#[allow(async_fn_in_trait)]
24pub trait DidResolver: Send + Sync {
25 fn method(&self) -> &str;
27
28 async fn resolve(&self, did: &str) -> baseid_core::Result<ResolutionResult>;
30}