/**
 * 凭据仓储接口
 * 定义凭据数据访问的抽象契约
 */

import { PlatformAccount } from '../../shared/credential-types'

export interface ICredentialRepository {
  /**
   * 加载配置
   */
  load(): Promise<void>

  /**
   * 重新加载配置
   */
  reload(): Promise<void>

  /**
   * 根据平台和账户ID查找账户
   */
  findAccount(platformId: string, accountId: string): PlatformAccount | null

  /**
   * 根据平台查找所有账户
   */
  findAccountsByPlatform(platformId: string): PlatformAccount[]

  /**
   * 获取所有账户
   */
  getAllAccounts(): PlatformAccount[]

  /**
   * 检查账户是否存在
   */
  hasAccount(platformId: string, accountId: string): boolean

  /**
   * 获取统计信息
   */
  getStats(): {
    totalAccounts: number
    platformStats: Record<string, number>
    lastLoaded: Date
    configPath: string
  }

  /**
   * 开始监控配置变化
   */
  startWatching(): void

  /**
   * 停止监控配置变化
   */
  stopWatching(): void

  /**
   * 销毁仓储
   */
  dispose(): Promise<void>
}
