UNPKG

@nuwa-ai/identity-kit

Version:

SDK for NIP-1 Agent Single DID Multi-Key Model and NIP-3 CADOP (Custodian-Assisted DID Onboarding Protocol)

278 lines (271 loc) 8.9 kB
import { RoochClient } from '@roochnetwork/rooch-sdk'; import { K as KeyType, x as KeyManager, S as SignerInterface, z as IdentityEnv, h as VDRRegistry } from '../IdentityKit-DE2ZpFFA.cjs'; import { R as RoochVDR } from '../roochVDR-DpbHmody.cjs'; import { ChildProcess } from 'child_process'; /** * Options for bootstrapping test environment */ interface TestEnvOptions { /** Rooch RPC endpoint URL, defaults to ROOCH_NODE_URL env var or http://localhost:6767 */ rpcUrl?: string; /** Network type */ network?: 'local' | 'dev' | 'test' | 'main'; /** Auto start local node if RPC URL is not accessible (useful for CI) */ autoStartLocalNode?: boolean; /** Amount to fund new accounts via faucet */ faucetAmount?: bigint; /** Enable debug logging */ debug?: boolean; } /** * Result of creating a self-managed DID */ interface CreateSelfDidResult { /** The created DID string */ did: string; /** The VM ID fragment associated with this DID */ vmIdFragment: string; /** KeyManager with the account key imported */ keyManager: KeyManager; /** Signer interface for this DID */ signer: SignerInterface; /** Pre-configured IdentityEnv for this DID (convenient for Payment Kit integration) */ identityEnv: IdentityEnv; } /** * Options for creating a self-managed DID */ interface CreateSelfDidOptions { /** Key type to use for the account key */ keyType?: KeyType; secretKey?: string; /** Custom fragment for the account key */ keyFragment?: string; /** Skip funding the account (useful if account already has funds) */ skipFunding?: boolean; /** Custom session key scopes (for Rooch VDR) */ customScopes?: string[]; } /** * Options for creating a CADOP DID scenario */ interface CreateCadopDidOptions { /** Key type for the user's did:key */ userKeyType?: KeyType; /** Key type for the custodian's service key */ custodianKeyType?: KeyType; /** Skip funding accounts */ skipFunding?: boolean; } /** * Environment check result */ interface EnvironmentCheck { /** Whether tests should be skipped */ shouldSkip: boolean; /** Reason for skipping (if any) */ reason?: string; /** Available RPC URL */ rpcUrl?: string; } /** * Options for starting a local Rooch node */ interface RoochNodeOptions { /** Rooch binary path, defaults to ROOCH_E2E_BIN environment variable */ binaryPath?: string; /** Port number, defaults to auto-allocate starting from 6767 */ port?: number; /** Data directory, defaults to temp directory */ dataDir?: string; /** Logs directory, defaults to temp directory */ logsDir?: string; /** Additional server arguments */ serverArgs?: string[]; /** Network type */ network?: 'local' | 'dev' | 'test' | 'main'; /** Enable debug logging */ debug?: boolean; } /** * Handle representing a running Rooch node */ interface RoochNodeHandle { /** RPC URL for connecting to the node */ rpcUrl: string; /** Port number the node is listening on */ port: number; /** Process ID of the node */ pid: number; /** Data directory path */ dataDir: string; /** Logs directory path */ logsDir: string; /** Stop the node and cleanup resources */ stop(): Promise<void>; /** Check if the node is still running */ isRunning(): boolean; } /** * Test environment for Rooch DID integration testing * * Provides a pre-configured environment with: * - Rooch client and VDR registry * - Helper methods for creating test identities * * Note: Each createSelfDid() call returns its own dedicated IdentityEnv, * which is preferred for multi-party testing scenarios to avoid conflicts. */ declare class TestEnv$1 { private static instance?; private logger; readonly rpcUrl: string; readonly network: string; readonly client: RoochClient; readonly vdrRegistry: VDRRegistry; readonly roochVDR: RoochVDR; private constructor(); /** * Bootstrap test environment */ static bootstrap(options?: TestEnvOptions): Promise<TestEnv$1>; /** * Check if integration tests should be skipped */ static skipIfNoNode(): boolean; /** * Synchronous environment check */ static checkEnvironmentSync(): EnvironmentCheck; /** * Async environment check with RPC connectivity test */ static checkEnvironment(options: Required<TestEnvOptions>): Promise<EnvironmentCheck>; /** * Resolve options with defaults */ private static resolveOptions; /** * Fund an account via faucet (placeholder for future implementation) */ fundAccount(address: string, amount?: bigint): Promise<void>; } /** * Utility functions for Rooch testing */ declare const RoochTestUtils: { /** * Check if we should skip integration tests */ shouldSkip(): boolean; /** * Get environment check result */ checkEnvironment(): any; }; /** * Convenience function to bootstrap a Rooch test environment * This is an alias for TestEnv.bootstrap() for backward compatibility */ declare function bootstrapRoochTestEnv(options?: any): Promise<TestEnv$1>; interface TestEnv { rpcUrl: string; network: string; vdrRegistry: any; roochVDR: any; fundAccount(address: string, amount?: bigint): Promise<void>; } /** * Create a self-managed DID by calling the on-chain create_did_object_for_self function */ declare function createSelfDid(env: TestEnv, options?: CreateSelfDidOptions): Promise<CreateSelfDidResult>; /** * Create a custodian DID with CADOP service */ declare function createCadopCustodian(env: TestEnv, options?: Pick<CreateCadopDidOptions, 'custodianKeyType' | 'skipFunding'>): Promise<CreateSelfDidResult>; /** * Create a user DID via CADOP protocol using an existing custodian */ declare function createDidViaCadop(env: TestEnv, custodian: CreateSelfDidResult, options?: Pick<CreateCadopDidOptions, 'userKeyType'>): Promise<CreateSelfDidResult>; /** * Rooch Local Node Manager * * Provides lightweight local Rooch node management for testing scenarios. * Uses only Node.js built-in modules without external dependencies. */ declare class RoochLocalNode { /** * Start a local Rooch node * * @param opts Configuration options * @returns Handle to the running node */ static start(opts?: RoochNodeOptions): Promise<RoochNodeHandle>; /** * Ensure a Rooch node is ready by checking chain ID * * @param rpcUrl RPC URL of the node * @param child Optional child process to check for exit * @param timeout Timeout in milliseconds */ static ensureReady(rpcUrl: string, child?: ChildProcess, timeout?: number): Promise<void>; /** * Initialize Rooch configuration in a directory * * @param binaryPath Path to rooch binary * @param configDir Directory to initialize config in */ private static initializeConfig; /** * Find an available port starting from the given port * * @param startPort Starting port number * @returns Available port number */ static findAvailablePort(startPort?: number): Promise<number>; /** * Check if a port is available * * @param port Port number to check * @returns True if port is available */ static isPortAvailable(port: number): Promise<boolean>; /** * Stop a running node with cleanup * * @param child Child process to stop * @param port Port number to cleanup * @param dataDir Data directory to cleanup * @param logsDir Logs directory to cleanup */ private static stop; /** * Check if a process is running * * @param pid Process ID * @returns True if process is running */ private static isRunning; /** * Wait for a port to be released * * @param port Port number * @param maxWait Maximum wait time in milliseconds */ private static waitForPortRelease; } /** * Convenience function to start a local Rooch node * * @param opts Configuration options * @returns Handle to the running node */ declare function startLocalRoochNode(opts?: RoochNodeOptions): Promise<RoochNodeHandle>; /** * Convenience function to check if a Rooch node is ready * * @param rpcUrl RPC URL of the node * @param timeout Timeout in milliseconds */ declare function ensureRoochReady(rpcUrl: string, timeout?: number): Promise<void>; export { type CreateCadopDidOptions, type CreateSelfDidOptions, type CreateSelfDidResult, type EnvironmentCheck, RoochLocalNode, type RoochNodeHandle, type RoochNodeOptions, RoochTestUtils, TestEnv$1 as TestEnv, type TestEnvOptions, bootstrapRoochTestEnv, createCadopCustodian, createDidViaCadop, createSelfDid, ensureRoochReady, startLocalRoochNode };