{"version":3,"file":"ThresholdSessionRepository.mjs","names":["ThresholdSessionRepository","storageService: StorageService<ThresholdSessionRecord>"],"sources":["../../src/repository/ThresholdSessionRepository.ts"],"sourcesContent":["import type { AgentContext } from '@credo-ts/core'\nimport type { ThresholdSessionStatus } from './ThresholdSessionRecord'\n\nimport type { StorageService } from \"@credo-ts/core\"\nimport { EventEmitter, inject, injectable, InjectionSymbols, Repository,  } from \"@credo-ts/core\"\n\nimport { ThresholdSessionRecord } from './ThresholdSessionRecord'\n\n@injectable()\nexport class ThresholdSessionRepository extends Repository<ThresholdSessionRecord> {\n  public constructor(\n    @inject(InjectionSymbols.StorageService) storageService: StorageService<ThresholdSessionRecord>,\n    eventEmitter: EventEmitter\n  ) {\n    super(ThresholdSessionRecord, storageService, eventEmitter)\n  }\n\n  /**\n   * Find session by session ID\n   */\n  public async findBySessionId(agentContext: AgentContext, sessionId: string): Promise<ThresholdSessionRecord | null> {\n    return this.findSingleByQuery(agentContext, { sessionId })\n  }\n\n  /**\n   * Get session by session ID (throws if not found)\n   */\n  public async getBySessionId(agentContext: AgentContext, sessionId: string): Promise<ThresholdSessionRecord> {\n    return this.getSingleByQuery(agentContext, { sessionId })\n  }\n\n  /**\n   * Find all sessions for a vault\n   */\n  public async findByVaultId(agentContext: AgentContext, vaultId: string): Promise<ThresholdSessionRecord[]> {\n    return this.findByQuery(agentContext, { vaultId })\n  }\n\n  /**\n   * Find sessions by status\n   */\n  public async findByStatus(\n    agentContext: AgentContext,\n    status: ThresholdSessionStatus\n  ): Promise<ThresholdSessionRecord[]> {\n    return this.findByQuery(agentContext, { status })\n  }\n\n  /**\n   * Find active (pending) sessions for a vault\n   */\n  public async findActiveSessions(agentContext: AgentContext, vaultId: string): Promise<ThresholdSessionRecord[]> {\n    const sessions = await this.findByVaultId(agentContext, vaultId)\n    return sessions.filter((s) => s.status === 'pending' && !s.isExpired)\n  }\n\n  /**\n   * Find sessions initiated by a specific DID\n   */\n  public async findByInitiator(agentContext: AgentContext, initiatedBy: string): Promise<ThresholdSessionRecord[]> {\n    return this.findByQuery(agentContext, { initiatedBy })\n  }\n\n  /**\n   * Delete expired sessions\n   */\n  public async deleteExpiredSessions(agentContext: AgentContext): Promise<number> {\n    const pendingSessions = await this.findByStatus(agentContext, 'pending')\n    let deletedCount = 0\n\n    for (const session of pendingSessions) {\n      if (session.isExpired) {\n        await this.delete(agentContext, session)\n        deletedCount++\n      }\n    }\n\n    return deletedCount\n  }\n}\n"],"mappings":";;;;;;;;AASO,uCAAMA,qCAAmC,WAAmC;CACjF,AAAO,YACL,AAAyCC,gBACzC,cACA;AACA,QAAM,wBAAwB,gBAAgB,aAAa;;;;;CAM7D,MAAa,gBAAgB,cAA4B,WAA2D;AAClH,SAAO,KAAK,kBAAkB,cAAc,EAAE,WAAW,CAAC;;;;;CAM5D,MAAa,eAAe,cAA4B,WAAoD;AAC1G,SAAO,KAAK,iBAAiB,cAAc,EAAE,WAAW,CAAC;;;;;CAM3D,MAAa,cAAc,cAA4B,SAAoD;AACzG,SAAO,KAAK,YAAY,cAAc,EAAE,SAAS,CAAC;;;;;CAMpD,MAAa,aACX,cACA,QACmC;AACnC,SAAO,KAAK,YAAY,cAAc,EAAE,QAAQ,CAAC;;;;;CAMnD,MAAa,mBAAmB,cAA4B,SAAoD;AAE9G,UADiB,MAAM,KAAK,cAAc,cAAc,QAAQ,EAChD,QAAQ,MAAM,EAAE,WAAW,aAAa,CAAC,EAAE,UAAU;;;;;CAMvE,MAAa,gBAAgB,cAA4B,aAAwD;AAC/G,SAAO,KAAK,YAAY,cAAc,EAAE,aAAa,CAAC;;;;;CAMxD,MAAa,sBAAsB,cAA6C;EAC9E,MAAM,kBAAkB,MAAM,KAAK,aAAa,cAAc,UAAU;EACxE,IAAI,eAAe;AAEnB,OAAK,MAAM,WAAW,gBACpB,KAAI,QAAQ,WAAW;AACrB,SAAM,KAAK,OAAO,cAAc,QAAQ;AACxC;;AAIJ,SAAO;;;;CArEV,YAAY;oBAGR,OAAO,iBAAiB,eAAe"}