@originvault/ov-id-sdk
Version:
A TypeScript SDK for managing decentralized identities (DIDs) and verifiable credentials (VCs)
92 lines (91 loc) • 3.83 kB
JavaScript
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