UNPKG

@cheqd/sdk

Version:

A TypeScript SDK built with CosmJS to interact with the cheqd network ledger

386 lines 20.4 kB
import { DeliverTxResponse, QueryClient } from '@cosmjs/stargate'; import { AbstractCheqdSDKModule, MinimalImportableCheqdSDKModule } from './_.js'; import { CheqdSigningStargateClient } from '../signer.js'; import { DIDDocument, DidStdFee, IContext, ISignInputs, QueryExtensionSetup, SpecValidationResult, DIDDocumentWithMetadata, AuthenticationValidationResult } from '../types.js'; import { MsgCreateDidDoc, MsgCreateDidDocResponse, MsgDeactivateDidDoc, MsgDeactivateDidDocResponse, MsgUpdateDidDoc, MsgUpdateDidDocResponse, SignInfo, QueryAllDidDocVersionsMetadataResponse, DidDocWithMetadata, DidDoc, Metadata } from '@cheqd/ts-proto/cheqd/did/v2/index.js'; import { EncodeObject, GeneratedType } from '@cosmjs/proto-signing'; import { CheqdQuerier } from '../querier.js'; import { DIDDocumentMetadata } from 'did-resolver'; /** Default extension key for DID-related query operations */ export declare const defaultDidExtensionKey: "did"; /** * Standard W3C and DID-related context URIs used in DID documents. * These contexts define the semantic meaning of properties in DID documents. */ export declare const contexts: { /** W3C DID Core v1 context */ readonly W3CDIDv1: "https://www.w3.org/ns/did/v1"; /** Ed25519 Signature Suite 2020 context */ readonly W3CSuiteEd255192020: "https://w3id.org/security/suites/ed25519-2020/v1"; /** Ed25519 Signature Suite 2018 context */ readonly W3CSuiteEd255192018: "https://w3id.org/security/suites/ed25519-2018/v1"; /** JSON Web Signature Suite 2020 context */ readonly W3CSuiteJws2020: "https://w3id.org/security/suites/jws-2020/v1"; /** Linked Domains context for domain verification */ readonly LinkedDomainsContext: "https://identity.foundation/.well-known/did-configuration/v1"; }; /** * Protobuf message type literals for DID operations. * Used for consistent message type identification across the module. */ export declare const protobufLiterals: { /** Create DID document message type */ readonly MsgCreateDidDoc: "MsgCreateDidDoc"; /** Create DID document response message type */ readonly MsgCreateDidDocResponse: "MsgCreateDidDocResponse"; /** Update DID document message type */ readonly MsgUpdateDidDoc: "MsgUpdateDidDoc"; /** Update DID document response message type */ readonly MsgUpdateDidDocResponse: "MsgUpdateDidDocResponse"; /** Deactivate DID document message type */ readonly MsgDeactivateDidDoc: "MsgDeactivateDidDoc"; /** Deactivate DID document response message type */ readonly MsgDeactivateDidDocResponse: "MsgDeactivateDidDocResponse"; }; /** Type URL for MsgCreateDidDoc messages */ export declare const typeUrlMsgCreateDidDoc: "/cheqd.did.v2.MsgCreateDidDoc"; /** Type URL for MsgCreateDidDocResponse messages */ export declare const typeUrlMsgCreateDidDocResponse: "/cheqd.did.v2.MsgCreateDidDocResponse"; /** Type URL for MsgUpdateDidDoc messages */ export declare const typeUrlMsgUpdateDidDoc: "/cheqd.did.v2.MsgUpdateDidDoc"; /** Type URL for MsgUpdateDidDocResponse messages */ export declare const typeUrlMsgUpdateDidDocResponse: "/cheqd.did.v2.MsgUpdateDidDocResponse"; /** Type URL for MsgDeactivateDidDoc messages */ export declare const typeUrlMsgDeactivateDidDoc: "/cheqd.did.v2.MsgDeactivateDidDoc"; /** Type URL for MsgDeactivateDidDocResponse messages */ export declare const typeUrlMsgDeactivateDidDocResponse: "/cheqd.did.v2.MsgDeactivateDidDocResponse"; /** * Encode object interface for MsgCreateDidDoc messages. * Used for type-safe message encoding in transactions. */ export interface MsgCreateDidDocEncodeObject extends EncodeObject { readonly typeUrl: typeof typeUrlMsgCreateDidDoc; readonly value: Partial<MsgCreateDidDoc>; } /** * Type guard function to check if an object is a MsgCreateDidDocEncodeObject. * * @param obj - EncodeObject to check * @returns True if the object is a MsgCreateDidDocEncodeObject */ export declare function isMsgCreateDidDocEncodeObject(obj: EncodeObject): obj is MsgCreateDidDocEncodeObject; /** * Type guard function to check if an object is a MsgUpdateDidDocEncodeObject. * * @param obj - EncodeObject to check * @returns True if the object is a MsgUpdateDidDocEncodeObject */ export declare function isMsgUpdateDidDocEncodeObject(obj: EncodeObject): obj is MsgUpdateDidDocEncodeObject; /** * Type guard function to check if an object is a MsgDeactivateDidDocEncodeObject. * * @param obj - EncodeObject to check * @returns True if the object is a MsgDeactivateDidDocEncodeObject */ export declare function isMsgDeactivateDidDocEncodeObject(obj: EncodeObject): obj is MsgDeactivateDidDocEncodeObject; /** * Encode object interface for MsgCreateDidDocResponse messages. * Used for type-safe response message handling. */ export interface MsgCreateDidDocResponseEncodeObject extends EncodeObject { readonly typeUrl: typeof typeUrlMsgCreateDidDocResponse; readonly value: Partial<MsgCreateDidDocResponse>; } /** * Type guard function to check if an object is a MsgCreateDidDocResponseEncodeObject. * * @param obj - EncodeObject to check * @returns True if the object is a MsgCreateDidDocResponseEncodeObject */ export declare function MsgCreateDidDocResponseEncodeObject(obj: EncodeObject): obj is MsgCreateDidDocResponseEncodeObject; /** * Encode object interface for MsgUpdateDidDoc messages. * Used for type-safe message encoding in update transactions. */ export interface MsgUpdateDidDocEncodeObject extends EncodeObject { readonly typeUrl: typeof typeUrlMsgUpdateDidDoc; readonly value: Partial<MsgUpdateDidDoc>; } /** * Type guard function to check if an object is a MsgUpdateDidDocEncodeObject. * * @param obj - EncodeObject to check * @returns True if the object is a MsgUpdateDidDocEncodeObject */ export declare function MsgUpdateDidDocEncodeObject(obj: EncodeObject): obj is MsgUpdateDidDocEncodeObject; /** * Encode object interface for MsgUpdateDidDocResponse messages. * Used for type-safe response message handling in update operations. */ export interface MsgUpdateDidDocResponseEncodeObject extends EncodeObject { readonly typeUrl: typeof typeUrlMsgUpdateDidDocResponse; readonly value: Partial<MsgUpdateDidDocResponse>; } /** * Type guard function to check if an object is a MsgUpdateDidDocResponseEncodeObject. * * @param obj - EncodeObject to check * @returns True if the object is a MsgUpdateDidDocResponseEncodeObject */ export declare function MsgUpdateDidDocResponseEncodeObject(obj: EncodeObject): obj is MsgUpdateDidDocResponseEncodeObject; /** * Encode object interface for MsgDeactivateDidDoc messages. * Used for type-safe message encoding in deactivation transactions. */ export interface MsgDeactivateDidDocEncodeObject extends EncodeObject { readonly typeUrl: typeof typeUrlMsgDeactivateDidDoc; readonly value: Partial<MsgDeactivateDidDoc>; } /** * Type guard function to check if an object is a MsgDeactivateDidDocEncodeObject. * * @param obj - EncodeObject to check * @returns True if the object is a MsgDeactivateDidDocEncodeObject */ export declare function MsgDeactivateDidDocEncodeObject(obj: EncodeObject): obj is MsgUpdateDidDocEncodeObject; /** * Encode object interface for MsgDeactivateDidDocResponse messages. * Used for type-safe response message handling in deactivation operations. */ export interface MsgDeactivateDidDocResponseEncodeObject extends EncodeObject { readonly typeUrl: typeof typeUrlMsgDeactivateDidDocResponse; readonly value: Partial<MsgDeactivateDidDocResponse>; } /** * Type guard function to check if an object is a MsgDeactivateDidDocResponseEncodeObject. * * @param obj - EncodeObject to check * @returns True if the object is a MsgDeactivateDidDocResponseEncodeObject */ export declare function MsgDeactiveDidDocResponseEncodeObject(obj: EncodeObject): obj is MsgDeactivateDidDocResponseEncodeObject; /** Minimal importable version of the DID module for clean external interfaces */ export type MinimalImportableDIDModule = MinimalImportableCheqdSDKModule<DIDModule>; /** * DID extension interface for querier functionality. * Provides methods for querying DID documents and their versions. */ export type DidExtension = { readonly [defaultDidExtensionKey]: { /** Query a DID document by ID */ readonly didDoc: (id: string) => Promise<DidDocWithMetadata>; /** Query a specific version of a DID document */ readonly didDocVersion: (id: string, versionId: string) => Promise<DidDocWithMetadata>; /** Query metadata for all versions of a DID document */ readonly allDidDocVersionsMetadata: (id: string, paginationKey?: Uint8Array) => Promise<QueryAllDidDocVersionsMetadataResponse>; }; }; /** * Sets up the DID extension for the querier client. * Creates and configures the DID-specific query methods. * * @param base - Base QueryClient to extend * @returns Configured DID extension with query methods */ export declare const setupDidExtension: (base: QueryClient) => DidExtension; /** * DID Module class providing comprehensive DID document management functionality. * Handles creation, updates, deactivation, and querying of DID documents on the Cheqd blockchain. */ export declare class DIDModule extends AbstractCheqdSDKModule { static readonly registryTypes: Iterable<[string, GeneratedType]>; /** Base denomination for Cheqd network transactions */ static readonly baseMinimalDenom: "ncheq"; /** * Standard fee amounts for DID operations. * These represent the default costs for different DID document operations. */ static readonly fees: { /** Default fee for creating a new DID document */ readonly DefaultCreateDidDocFee: { readonly amount: "50000000000"; readonly denom: "ncheq"; }; /** Default fee for updating an existing DID document */ readonly DefaultUpdateDidDocFee: { readonly amount: "25000000000"; readonly denom: "ncheq"; }; /** Default fee for deactivating a DID document */ readonly DefaultDeactivateDidDocFee: { readonly amount: "10000000000"; readonly denom: "ncheq"; }; }; /** Querier extension setup function for DID operations */ static readonly querierExtensionSetup: QueryExtensionSetup<DidExtension>; /** Querier instance with DID extension capabilities */ querier: CheqdQuerier & DidExtension; /** * Constructs a new DID module instance. * * @param signer - Signing client for blockchain transactions * @param querier - Querier client with DID extension for data retrieval */ constructor(signer: CheqdSigningStargateClient, querier: CheqdQuerier & DidExtension); /** * Gets the registry types for DID message encoding/decoding. * * @returns Iterable of [typeUrl, GeneratedType] pairs for the registry */ getRegistryTypes(): Iterable<[string, GeneratedType]>; /** * Gets the querier extension setup for DID operations. * * @returns Query extension setup function for DID functionality */ getQuerierExtensionSetup(): QueryExtensionSetup<DidExtension>; /** * Creates a new DID document transaction on the blockchain. * Validates the DID payload and authentication before submission. * * @param signInputs - Signing inputs or pre-computed signatures for the transaction * @param didPayload - DID document payload to create * @param address - Address of the account submitting the transaction * @param fee - Transaction fee configuration or 'auto' for automatic calculation * @param memo - Optional transaction memo * @param versionId - Optional version identifier for the DID document * @param context - Optional SDK context for accessing clients * @returns Promise resolving to the transaction response * @throws Error if DID payload is not spec compliant or authentication is invalid */ createDidDocTx(signInputs: ISignInputs[] | SignInfo[], didPayload: DIDDocument, address: string, fee?: DidStdFee | 'auto' | number, memo?: string, versionId?: string, context?: IContext): Promise<DeliverTxResponse>; /** * Updates an existing DID document transaction on the blockchain. * Validates the updated DID payload and handles key rotation scenarios. * * @param signInputs - Signing inputs or pre-computed signatures for the transaction * @param didPayload - Updated DID document payload * @param address - Address of the account submitting the transaction * @param fee - Transaction fee configuration or 'auto' for automatic calculation * @param memo - Optional transaction memo * @param versionId - Optional version identifier for the updated DID document * @param context - Optional SDK context for accessing clients * @returns Promise resolving to the transaction response * @throws Error if DID payload is not spec compliant or authentication is invalid */ updateDidDocTx(signInputs: ISignInputs[] | SignInfo[], didPayload: DIDDocument, address: string, fee?: DidStdFee | 'auto' | number, memo?: string, versionId?: string, context?: IContext): Promise<DeliverTxResponse>; /** * Deactivates an existing DID document transaction on the blockchain. * Validates authentication and creates a deactivation transaction. * * @param signInputs - Signing inputs or pre-computed signatures for the transaction * @param didPayload - DID document payload containing the ID to deactivate * @param address - Address of the account submitting the transaction * @param fee - Transaction fee configuration or 'auto' for automatic calculation * @param memo - Optional transaction memo * @param versionId - Optional version identifier for the deactivation * @param context - Optional SDK context for accessing clients * @returns Promise resolving to the transaction response * @throws Error if DID payload is not spec compliant or authentication is invalid */ deactivateDidDocTx(signInputs: ISignInputs[] | SignInfo[], didPayload: DIDDocument, address: string, fee?: DidStdFee | 'auto' | number, memo?: string, versionId?: string, context?: IContext): Promise<DeliverTxResponse>; /** * Queries a DID document by its identifier. * Retrieves the latest version of the DID document with metadata. * * @param id - DID identifier to query * @param context - Optional SDK context for accessing clients * @returns Promise resolving to the DID document with metadata */ queryDidDoc(id: string, context?: IContext): Promise<DIDDocumentWithMetadata>; /** * Queries a specific version of a DID document by its identifier and version ID. * * @param id - DID identifier to query * @param versionId - Specific version identifier to retrieve * @param context - Optional SDK context for accessing clients * @returns Promise resolving to the DID document version with metadata */ queryDidDocVersion(id: string, versionId: string, context?: IContext): Promise<DIDDocumentWithMetadata>; /** * Queries metadata for all versions of a DID document. * Retrieves version history information for a specific DID. * * @param id - DID identifier to query version metadata for * @param context - Optional SDK context for accessing clients * @returns Promise resolving to array of version metadata and pagination info */ queryAllDidDocVersionsMetadata(id: string, context?: IContext): Promise<{ didDocumentVersionsMetadata: DIDDocumentMetadata[]; pagination: QueryAllDidDocVersionsMetadataResponse['pagination']; }>; /** * Validates a DID document against the Cheqd specification requirements. * Ensures all required fields are present and verification methods are supported. * * @param didDocument - DID document to validate * @returns Promise resolving to validation result with protobuf conversion or error details */ static validateSpecCompliantPayload(didDocument: DIDDocument): Promise<SpecValidationResult>; /** * Converts a protobuf DID document to a specification-compliant DID document format. * Handles context inclusion, verification method formatting, and service denormalization. * * @param protobufDidDocument - Protobuf DID document to convert * @returns Promise resolving to a spec-compliant DID document */ static toSpecCompliantPayload(protobufDidDocument: DidDoc): Promise<DIDDocument>; /** * Converts protobuf metadata to specification-compliant DID document metadata format. * Handles date formatting and optional field normalization. * * @param protobufDidDocument - Protobuf metadata to convert * @returns Promise resolving to spec-compliant DID document metadata */ static toSpecCompliantMetadata(protobufDidDocument: Metadata): Promise<DIDDocumentMetadata>; /** * Validates that provided signatures match the authentication requirements in a DID document. * Checks signature count, authentication presence, and controller authorization. * * @param didDocument - DID document containing authentication requirements * @param signatures - Array of signatures to validate against authentication * @param querier - Optional querier for retrieving external controller documents * @param externalControllersDidDocuments - Optional pre-loaded external controller documents * @returns Promise resolving to validation result with error details if invalid */ static validateAuthenticationAgainstSignatures(didDocument: DIDDocument, signatures: readonly SignInfo[], querier?: CheqdQuerier & DidExtension, externalControllersDidDocuments?: DIDDocument[]): Promise<AuthenticationValidationResult>; /** * Validates authentication against signatures for key rotation scenarios. * Handles validation during DID document updates where keys may have changed. * * @param didDocument - Updated DID document to validate * @param signatures - Array of signatures to validate * @param querier - Querier for retrieving previous DID document and controllers * @param previousDidDocument - Optional previous version of the DID document * @param externalControllersDidDocuments - Optional pre-loaded external controller documents * @returns Promise resolving to validation result with controller documents and previous document */ static validateAuthenticationAgainstSignaturesKeyRotation(didDocument: DIDDocument, signatures: readonly SignInfo[], querier: CheqdQuerier & DidExtension, previousDidDocument?: DIDDocument, externalControllersDidDocuments?: DIDDocument[]): Promise<AuthenticationValidationResult>; /** * Generates standard fees for creating a DID document. * * @param feePayer - Address of the account that will pay the transaction fees * @param granter - Optional address of the account granting fee payment permissions * @returns Promise resolving to the fee configuration for DID document creation */ static generateCreateDidDocFees(feePayer: string, granter?: string): Promise<DidStdFee>; /** * Generates fee configuration for DID document update transactions. * Uses default update fees and gas requirements. * * @param feePayer - Address of the account that will pay the transaction fees * @param granter - Optional address of the account granting fee payment permissions * @returns Promise resolving to the fee configuration for DID document updates */ static generateUpdateDidDocFees(feePayer: string, granter?: string): Promise<DidStdFee>; /** * Generates fee configuration for DID document deactivation transactions. * Uses default deactivation fees and gas requirements. * * @param feePayer - Address of the account that will pay the transaction fees * @param granter - Optional address of the account granting fee payment permissions * @returns Promise resolving to the fee configuration for DID document deactivation */ static generateDeactivateDidDocFees(feePayer: string, granter?: string): Promise<DidStdFee>; } //# sourceMappingURL=did.d.ts.map