import { Logger } from "../logger/Logger.js";
import { EventEmitter } from "./EventEmitter.js";
import { SdJwtVcApi } from "../modules/sd-jwt-vc/SdJwtVcApi.js";
import { MdocApi } from "../modules/mdoc/MdocApi.js";
import { W3cCredentialsApi } from "../modules/vc/W3cCredentialsApi.js";
import { W3cV2CredentialsApi } from "../modules/vc/W3cV2CredentialsApi.js";
import { X509Api } from "../modules/x509/X509Api.js";
import { KeyManagementApi } from "../modules/kms/KeyManagementApi.js";
import { DidsApi } from "../modules/dids/DidsApi.js";
import { GenericRecordsApi } from "../modules/generic-records/GenericRecordsApi.js";
import { AgentApi, EmptyModuleMap, ModuleApiInstance, ModulesMap, WithoutDefaultModules } from "./AgentModules.js";
import { DependencyManager } from "../plugins/DependencyManager.js";
import { AgentConfig } from "./AgentConfig.js";
import { Module } from "../plugins/Module.js";
import { AgentContext } from "./context/AgentContext.js";

//#region src/agent/BaseAgent.d.ts
declare abstract class BaseAgent<AgentModules extends ModulesMap = EmptyModuleMap> {
  protected agentConfig: AgentConfig;
  readonly dependencyManager: DependencyManager;
  protected logger: Logger;
  protected eventEmitter: EventEmitter;
  protected _isInitialized: boolean;
  protected agentContext: AgentContext;
  readonly mdoc: MdocApi;
  readonly genericRecords: GenericRecordsApi;
  readonly dids: DidsApi;
  readonly w3cCredentials: W3cCredentialsApi;
  readonly w3cV2Credentials: W3cV2CredentialsApi;
  readonly sdJwtVc: SdJwtVcApi;
  readonly x509: X509Api;
  readonly kms: KeyManagementApi;
  /**
   * The DIDComm module, only available if the didcomm module is registered
   */
  readonly didcomm: AgentModules['didcomm'] extends Module ? ModuleApiInstance<AgentModules['didcomm']> : undefined;
  readonly openid4vc: AgentModules['openid4vc'] extends Module ? ModuleApiInstance<AgentModules['openid4vc']> : undefined;
  readonly modules: AgentApi<WithoutDefaultModules<AgentModules>>;
  constructor(agentConfig: AgentConfig, dependencyManager: DependencyManager);
  get isInitialized(): boolean;
  get config(): AgentConfig;
  get context(): AgentContext;
}
//#endregion
export { BaseAgent };
//# sourceMappingURL=BaseAgent.d.ts.map