{"version":3,"file":"VaultsModule.mjs","names":[],"sources":["../src/VaultsModule.ts"],"sourcesContent":["import type { AgentContext, DependencyManager, Module } from '@credo-ts/core'\nimport type { S3StorageConfig } from './storage/VaultStorageConfig'\n\nimport { DidCommFeatureRegistry, DidCommProtocol } from '@credo-ts/didcomm'\n\nimport { VaultsApi } from './VaultsApi'\nimport { HPKEService } from './services/HPKEService'\nimport { KemKeyExchangeService } from './services/KemKeyExchangeService'\nimport { VaultEncryptionService } from './services/VaultEncryptionService'\nimport { VaultStorageService } from './storage/VaultStorageService'\nimport { VaultRepository } from './repository/VaultRepository'\nimport { ThresholdSessionRepository } from './repository/ThresholdSessionRepository'\nimport { KemKeypairRepository } from './repository/KemKeypairRepository'\n\nexport interface VaultsModuleConfig {\n  /** S3 storage configuration (kept for legacy direct-S3 backends). */\n  storage?: S3StorageConfig\n  /** Inline threshold in bytes for legacy passphrase vaults. */\n  inlineThreshold?: number\n  /** Whether to advertise the `host` role on discover-features. */\n  hostMode?: boolean\n}\n\n/**\n * Vaults Module — spec-conformant didcomm.org/vaults/1.0 client.\n *\n * Replaces the pre-spec implementation: 5 spec messages\n * (propose / offer / grant-access / seal / tombstone) plus JWE\n * encryption and ZCAP-LD authorization. The data plane runs over the\n * EDV HTTP API; no DIDComm bytes carry blob content.\n *\n * @example\n * ```typescript\n * import { Agent } from '@credo-ts/core'\n * import { VaultsModule } from '@ajna-inc/vaults'\n *\n * const agent = new Agent({\n *   config: { label: 'My Agent' },\n *   modules: { vaults: new VaultsModule() }\n * })\n * await agent.initialize()\n *\n * await agent.modules.vaults.sendPropose(connectionId, {\n *   purpose: 'workflow:pdf-signing#42',\n *   participants: [aliceDid, bobDid],\n *   constraints: { ttl_seconds: 86400 },\n * })\n * ```\n */\nexport class VaultsModule implements Module {\n  public readonly api = VaultsApi\n  private config?: VaultsModuleConfig\n\n  public constructor(config?: VaultsModuleConfig) {\n    this.config = config\n  }\n\n  public getConfig(): VaultsModuleConfig | undefined {\n    return this.config\n  }\n\n  public register(dependencyManager: DependencyManager): void {\n    dependencyManager.registerSingleton(VaultRepository)\n    dependencyManager.registerSingleton(ThresholdSessionRepository)\n    dependencyManager.registerSingleton(KemKeypairRepository)\n\n    dependencyManager.registerSingleton(VaultEncryptionService)\n    dependencyManager.registerSingleton(HPKEService)\n    dependencyManager.registerSingleton(KemKeyExchangeService)\n    dependencyManager.registerSingleton(VaultStorageService)\n    // Message handlers register inside VaultsApi's constructor.\n  }\n\n  public async initialize(agentContext: AgentContext): Promise<void> {\n    const featureRegistry = agentContext.dependencyManager.resolve(DidCommFeatureRegistry)\n\n    const roles = ['controller', 'participant']\n    if (this.config?.hostMode) roles.push('host')\n\n    featureRegistry.register(\n      new DidCommProtocol({\n        id: 'https://didcomm.org/vaults/1.0',\n        roles,\n      })\n    )\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,IAAa,eAAb,MAA4C;CAI1C,AAAO,YAAY,QAA6B;OAHhC,MAAM;AAIpB,OAAK,SAAS;;CAGhB,AAAO,YAA4C;AACjD,SAAO,KAAK;;CAGd,AAAO,SAAS,mBAA4C;AAC1D,oBAAkB,kBAAkB,gBAAgB;AACpD,oBAAkB,kBAAkB,2BAA2B;AAC/D,oBAAkB,kBAAkB,qBAAqB;AAEzD,oBAAkB,kBAAkB,uBAAuB;AAC3D,oBAAkB,kBAAkB,YAAY;AAChD,oBAAkB,kBAAkB,sBAAsB;AAC1D,oBAAkB,kBAAkB,oBAAoB;;CAI1D,MAAa,WAAW,cAA2C;EACjE,MAAM,kBAAkB,aAAa,kBAAkB,QAAQ,uBAAuB;EAEtF,MAAM,QAAQ,CAAC,cAAc,cAAc;AAC3C,MAAI,KAAK,QAAQ,SAAU,OAAM,KAAK,OAAO;AAE7C,kBAAgB,SACd,IAAI,gBAAgB;GAClB,IAAI;GACJ;GACD,CAAC,CACH"}