@atproto/did
Version:
DID resolution and verification library
49 lines • 3.21 kB
TypeScript
import { z } from 'zod';
import { DidDocument, DidService } from './did-document.js';
import { DidRefAbsolute } from './did-ref.js';
import { Did } from './did.js';
import { Identifier } from './utils.js';
export type AtprotoIdentityDidMethods = 'plc' | 'web';
export type AtprotoDid = Did<AtprotoIdentityDidMethods>;
export type AtprotoDidDocument = DidDocument<AtprotoIdentityDidMethods>;
export declare const atprotoDidSchema: z.ZodEffects<z.ZodString, `did:plc:${string}` | `did:web:${string}`, string>;
export declare function isAtprotoDid(input: unknown): input is AtprotoDid;
export declare function asAtprotoDid<T>(input: T): (T & `did:plc:${string}`) | (T & `did:web:${string}`);
export declare function assertAtprotoDid(input: unknown): asserts input is AtprotoDid;
export declare function assertAtprotoDidWeb(input: unknown): asserts input is Did<'web'>;
/**
* @see {@link https://atproto.com/specs/did#blessed-did-methods}
*/
export declare function isAtprotoDidWeb(input: unknown): input is Did<'web'>;
export type AtprotoData<M extends AtprotoIdentityDidMethods = AtprotoIdentityDidMethods> = {
did: Did<M>;
aka?: string;
key?: AtprotoVerificationMethod<M>;
pds?: AtprotoPersonalDataServerService<M>;
};
export declare function extractAtprotoData<M extends AtprotoIdentityDidMethods>(document: DidDocument<M>): AtprotoData<M>;
export declare function extractPdsUrl(document: AtprotoDidDocument): URL;
export type AtprotoAka = `at://${string}`;
export declare function isAtprotoAka(value: string): value is AtprotoAka;
export type AtprotoPersonalDataServerService<M extends AtprotoIdentityDidMethods = AtprotoIdentityDidMethods> = DidService & {
id: Identifier<Did<M>, 'atproto_pds'>;
type: 'AtprotoPersonalDataServer';
serviceEndpoint: string;
};
export declare function isAtprotoPersonalDataServerService<M extends AtprotoIdentityDidMethods = AtprotoIdentityDidMethods>(this: DidDocument<M>, service: null | undefined | DidService): service is AtprotoPersonalDataServerService<M>;
export declare const ATPROTO_VERIFICATION_METHOD_TYPES: readonly ["EcdsaSecp256r1VerificationKey2019", "EcdsaSecp256k1VerificationKey2019", "Multikey"];
export type SupportedAtprotoVerificationMethodType = (typeof ATPROTO_VERIFICATION_METHOD_TYPES)[number];
type VerificationMethod = NonNullable<DidDocument['verificationMethod']>[number];
export type AtprotoVerificationMethod<M extends AtprotoIdentityDidMethods = AtprotoIdentityDidMethods> = Extract<VerificationMethod, object> & {
id: Identifier<Did<M>, 'atproto'>;
type: SupportedAtprotoVerificationMethodType;
publicKeyMultibase: string;
};
export declare function isAtprotoVerificationMethod<M extends AtprotoIdentityDidMethods = AtprotoIdentityDidMethods>(this: DidDocument<M>, method: null | undefined | NonNullable<DidDocument<M>['verificationMethod']>[number]): method is AtprotoVerificationMethod<M>;
/**
* An atproto-constrained absolute DID reference: `${AtprotoDid}#${fragment}`.
*/
export type AtprotoDidRefAbsolute = DidRefAbsolute<AtprotoIdentityDidMethods>;
export declare function isAtprotoDidRefAbsolute(value: unknown): value is AtprotoDidRefAbsolute;
export {};
//# sourceMappingURL=atproto.d.ts.map