UNPKG

@originvault/ov-id-sdk

Version:

A TypeScript SDK for managing decentralized identities (DIDs) and verifiable credentials (VCs)

92 lines (91 loc) 3.83 kB
import { createAgent } from '@veramo/core'; import { DIDManager, MemoryDIDStore } from '@veramo/did-manager'; import { MessageHandler } from '@veramo/message-handler'; import { DIDCommMessageHandler, DIDComm } from '@veramo/did-comm'; import { KeyManager, MemoryKeyStore, MemoryPrivateKeyStore } from '@veramo/key-manager'; import { CredentialPlugin, W3cMessageHandler } from '@veramo/credential-w3c'; import { KeyManagementSystem } from '@veramo/kms-local'; import { DIDResolverPlugin } from '@veramo/did-resolver'; import { KeyDIDProvider } from '@veramo/did-provider-key'; import { CheqdDIDProvider, CheqdDidResolver } from '@cheqd/did-provider-cheqd'; import { Resolver } from 'did-resolver'; import dotenv from 'dotenv'; import { KeyStore } from '@veramo/data-store'; dotenv.config(); export let keyStore = new MemoryKeyStore(); export const privateKeyStore = new MemoryPrivateKeyStore(); export var CheqdNetwork; (function (CheqdNetwork) { CheqdNetwork["Mainnet"] = "mainnet"; CheqdNetwork["Testnet"] = "testnet"; })(CheqdNetwork || (CheqdNetwork = {})); /** * Creates a CheqdDIDProvider for the specified network type. * @param networkType - The network type (Mainnet or Testnet). * @param cosmosPayerSeed - The Cosmos payer seed. * @param rpcUrl - The RPC URL. * @returns A CheqdDIDProvider instance. */ export function createCheqdProvider(networkType, cosmosPayerSeed, rpcUrl) { return new CheqdDIDProvider({ defaultKms: 'local', networkType, dkgOptions: { chain: networkType === CheqdNetwork.Mainnet ? 'cheqdMainnet' : 'cheqdTestnet' }, rpcUrl, cosmosPayerSeed, }); } /** * Creates an OVAgent with the specified plugins and resolvers. * @param cheqdProvider - The CheqdDIDProvider instance. * @param universalResolver - The universal resolver configuration. * @param additionalResolvers - Additional resolvers to include. * @param cheqdTestnetProvider - Optional testnet provider. * @param dbConnection - Optional database connection. */ export function createOVAgent({ cheqdProvider, universalResolver, additionalResolvers = {}, cheqdTestnetProvider, dbConnection }) { const testnetProvider = cheqdTestnetProvider ? cheqdTestnetProvider : createCheqdProvider(CheqdNetwork.Testnet, process.env.COSMOS_PAYER_SEED || '', process.env.CHEQD_RPC_URL || 'https://rpc.cheqd.network'); if (dbConnection) { keyStore = new KeyStore(dbConnection); } return createAgent({ plugins: [ new KeyManager({ store: keyStore, kms: { local: new KeyManagementSystem(privateKeyStore), }, }), new DIDManager({ store: new MemoryDIDStore(), defaultProvider: 'did:cheqd:mainnet', providers: { 'did:cheqd': cheqdProvider, 'did:cheqd:mainnet': cheqdProvider, 'did:cheqd:testnet': testnetProvider, 'did:key': new KeyDIDProvider({ defaultKms: 'local', }), } }), new DIDResolverPlugin({ resolver: new Resolver({ ...universalResolver, ...additionalResolvers, 'did:cheqd:mainnet': new CheqdDidResolver({ url: 'https://resolver.originvault.box/1.0/identifiers/' }) }) }), new DIDComm(), new CredentialPlugin(), new MessageHandler({ messageHandlers: [ new DIDCommMessageHandler(), new W3cMessageHandler(), ], }), ], }); } //# sourceMappingURL=OVAgent.js.map