import type { DidCommFeatureQueryOptions } from '@credo-ts/didcomm'; import { AskarModuleConfigStoreOptions } from '@credo-ts/askar'; import { AgentDependencies, InitConfig, LogLevel } from '@credo-ts/core'; import { AuthorizationService } from '../blockchain/AuthorizationService'; import { VeranaChainService } from '../blockchain/VeranaChainService'; import { Plugin } from '../types'; import { BaseAgentModules, VsAgent } from './VsAgent'; type MergePluginModules = T extends [infer First, ...infer Rest] ? First extends { modules: infer M; } ? Rest extends Plugin[] ? M & MergePluginModules : M : never : object; type PluginModules = MergePluginModules & BaseAgentModules; export interface CreateVsAgentOptions { plugins: T; config?: Partial; walletConfig?: AskarModuleConfigStoreOptions; endpoints?: string[]; did?: string; label: string; publicApiBaseUrl: string; adminApiServiceEndpoint?: string; displayPictureUrl?: string; autoDiscloseUserProfile?: boolean; masterListCscaLocation?: string; autoUpdateStorageOnStartup?: boolean; dependencies: AgentDependencies; logLevel?: LogLevel; veranaChain?: VeranaChainService; authorizationService?: AuthorizationService; discoveryOptions?: DidCommFeatureQueryOptions[]; } /** * Creates a VsAgent from a set of composable plugins. * * @example * // Base DIDComm agent * const agent = createVsAgent({ * plugins: [setupBaseDidComm({ walletConfig, publicApiBaseUrl, endpoints })], * label: 'My Agent', * publicApiBaseUrl, * dependencies: agentDependencies, * }) * * @example * // Full-featured agent with optional plugins * const agent = createVsAgent({ * plugins: [ * setupBaseDidComm({ walletConfig, publicApiBaseUrl, endpoints }), * setupChatProtocols(), // from @verana-labs/vs-agent-plugin-chat * setupMrtdProtocol(), // from @verana-labs/vs-agent-plugin-mrtd * ], * label: 'My Agent', * publicApiBaseUrl, * dependencies: agentDependencies, * }) */ export declare function createVsAgent(options: CreateVsAgentOptions): VsAgent>; export {};