import { defs } from "@atcute/did-plc"; const API_BASE = "https://api.aletheia.directory"; export interface DidDocument { "@context": string[]; id: string; alsoKnownAs: string[]; verificationMethod: any[]; service: any[]; } export class PLCDirectoryAPI { private baseURL: string; constructor(baseURL: string = API_BASE) { this.baseURL = baseURL; } async fetchDidDocument(did: string): Promise { const response = await fetch(`${this.baseURL}/${did}`, { mode: 'cors', headers: { 'Content-Type': 'application/json', } }); if (!response.ok) { const error = await response .json() .catch(() => ({ message: "Unknown error" })); throw new Error(error.message || `HTTP ${response.status}`); } return response.json(); } async fetchDidAuditLog(did: string): Promise { const response = await fetch(`${this.baseURL}/${did}/log/audit`, { mode: 'cors', headers: { 'Content-Type': 'application/json', } }); if (!response.ok) { const error = await response .json() .catch(() => ({ message: "Unknown error" })); throw new Error(error.message || `HTTP ${response.status}`); } const data = await response.json(); const result = defs.indexedEntryLog.try(data); if (!result.ok) { console.log(result); throw new Error(`Invalid audit log format: ${result.error.message}`); } return result.value; } } export const api = new PLCDirectoryAPI();