{"version":3,"file":"VaultProblemReportMessage.mjs","names":[],"sources":["../../src/messages/VaultProblemReportMessage.ts"],"sourcesContent":["import { DidCommMessage, IsValidMessageType, parseMessageType } from '@credo-ts/didcomm'\nimport { Expose } from 'class-transformer'\nimport { IsString, IsOptional, IsObject } from 'class-validator'\n\nexport interface VaultProblemReportMessageOptions {\n  id?: string\n  threadId?: string\n  vaultId?: string\n  code?: string\n  errorCode?: string\n  description: string\n  details?: any\n}\n\n/**\n * Report errors in vault operations\n *\n * @see https://didcomm.org/vaults/1.0/problem-report\n */\nexport class VaultProblemReportMessage extends DidCommMessage {\n  public constructor(options: VaultProblemReportMessageOptions) {\n    super()\n\n    if (options) {\n      this.id = options.id ?? this.generateId()\n      if (options.threadId) {\n        this.setThread({ threadId: options.threadId })\n      }\n      this.vaultId = options.vaultId\n      // Support both 'code' and 'errorCode' for backwards compatibility\n      this.errorCode = options.errorCode ?? options.code ?? 'unknown'\n      this.description = options.description\n      this.details = options.details\n    }\n  }\n\n  @IsValidMessageType(VaultProblemReportMessage.type)\n  public readonly type = VaultProblemReportMessage.type.messageTypeUri\n  public static readonly type = parseMessageType('https://didcomm.org/vaults/1.0/problem-report')\n\n  @IsOptional()\n  @IsString()\n  @Expose({ name: 'vault_id' })\n  public vaultId?: string\n\n  @IsString()\n  @Expose({ name: 'error_code' })\n  public errorCode!: string\n\n  @Expose()\n  @IsString()\n  public description!: string\n\n  @Expose()\n  @IsOptional()\n  @IsObject()\n  public details?: any\n}\n\n// Common error codes\nexport const VaultErrorCodes = {\n  NOT_FOUND: 'not-found',\n  ACCESS_DENIED: 'access-denied',\n  INVALID_POLICY: 'invalid-policy',\n  DECRYPTION_FAILED: 'decryption-failed',\n  THRESHOLD_NOT_MET: 'threshold-not-met',\n  EXPIRED: 'expired',\n  STORAGE_ERROR: 'storage-error',\n  REPLAY: 'replay-attack',\n  INVALID_SESSION: 'invalid-session',\n} as const\n"],"mappings":";;;;;;;;;;;;AAmBA,IAAa,4BAAb,MAAa,kCAAkC,eAAe;CAC5D,AAAO,YAAY,SAA2C;AAC5D,SAAO;OAgBO,OAAO,0BAA0B,KAAK;AAdpD,MAAI,SAAS;AACX,QAAK,KAAK,QAAQ,MAAM,KAAK,YAAY;AACzC,OAAI,QAAQ,SACV,MAAK,UAAU,EAAE,UAAU,QAAQ,UAAU,CAAC;AAEhD,QAAK,UAAU,QAAQ;AAEvB,QAAK,YAAY,QAAQ,aAAa,QAAQ,QAAQ;AACtD,QAAK,cAAc,QAAQ;AAC3B,QAAK,UAAU,QAAQ;;;;0BAMJ,OAAO,iBAAiB,gDAAgD;YAF9F,mBAAmB,0BAA0B,KAAK;;CAIlD,YAAY;CACZ,UAAU;CACV,OAAO,EAAE,MAAM,YAAY,CAAC;;;;CAG5B,UAAU;CACV,OAAO,EAAE,MAAM,cAAc,CAAC;;;;CAG9B,QAAQ;CACR,UAAU;;;;CAGV,QAAQ;CACR,YAAY;CACZ,UAAU;;;AAKb,MAAa,kBAAkB;CAC7B,WAAW;CACX,eAAe;CACf,gBAAgB;CAChB,mBAAmB;CACnB,mBAAmB;CACnB,SAAS;CACT,eAAe;CACf,QAAQ;CACR,iBAAiB;CAClB"}