{"version":3,"file":"ProposeMessage.mjs","names":[],"sources":["../../src/messages/ProposeMessage.ts"],"sourcesContent":["import { DidCommMessage, IsValidMessageType, parseMessageType } from '@credo-ts/didcomm'\nimport { Expose, Type } from 'class-transformer'\nimport { IsArray, IsObject, IsOptional, IsString, ValidateNested } from 'class-validator'\n\n/**\n * Inner `constraints.limits` body — bytes/document caps the requester\n * would like enforced.\n */\nexport class ProposeLimits {\n  @IsOptional()\n  @Expose({ name: 'max_docs' })\n  public maxDocs?: number\n\n  @IsOptional()\n  @Expose({ name: 'max_bytes' })\n  public maxBytes?: number\n\n  @IsOptional()\n  @Expose({ name: 'max_doc_bytes' })\n  public maxDocBytes?: number\n}\n\nexport class ProposeConstraints {\n  @IsOptional()\n  @IsString()\n  @Expose()\n  public retention?: string\n\n  @IsOptional()\n  @Expose({ name: 'ttl_seconds' })\n  public ttlSeconds?: number\n\n  @IsOptional()\n  @ValidateNested()\n  @Type(() => ProposeLimits)\n  @Expose()\n  public limits?: ProposeLimits\n}\n\nexport interface ProposeMessageOptions {\n  id?: string\n  purpose: string\n  participants: string[]\n  constraints?: ProposeConstraints | Record<string, unknown>\n  backendPrefs?: string[]\n  indexSchema?: string[]\n}\n\n/**\n * Spec § propose — propose creating a shared vault.\n *\n * @see https://didcomm.org/vaults/1.0/propose\n */\nexport class ProposeMessage extends DidCommMessage {\n  public constructor(options: ProposeMessageOptions) {\n    super()\n    if (options) {\n      this.id = options.id ?? this.generateId()\n      this.purpose = options.purpose\n      this.participants = [...options.participants]\n      this.constraints = options.constraints as ProposeConstraints | undefined\n      this.backendPrefs = options.backendPrefs ? [...options.backendPrefs] : []\n      this.indexSchema = options.indexSchema ? [...options.indexSchema] : []\n    }\n  }\n\n  @IsValidMessageType(ProposeMessage.type)\n  public readonly type = ProposeMessage.type.messageTypeUri\n  public static readonly type = parseMessageType('https://didcomm.org/vaults/1.0/propose')\n\n  @IsString()\n  @Expose()\n  public purpose!: string\n\n  @IsArray()\n  @IsString({ each: true })\n  @Expose()\n  public participants!: string[]\n\n  @IsOptional()\n  @IsObject()\n  @Expose()\n  public constraints?: ProposeConstraints | Record<string, unknown>\n\n  @IsArray()\n  @IsString({ each: true })\n  @Expose({ name: 'backend_prefs' })\n  public backendPrefs: string[] = []\n\n  @IsArray()\n  @IsString({ each: true })\n  @Expose({ name: 'index_schema' })\n  public indexSchema: string[] = []\n}\n"],"mappings":";;;;;;;;;;;;AAQA,IAAa,gBAAb,MAA2B;;CACxB,YAAY;CACZ,OAAO,EAAE,MAAM,YAAY,CAAC;;;;CAG5B,YAAY;CACZ,OAAO,EAAE,MAAM,aAAa,CAAC;;;;CAG7B,YAAY;CACZ,OAAO,EAAE,MAAM,iBAAiB,CAAC;;;AAIpC,IAAa,qBAAb,MAAgC;;CAC7B,YAAY;CACZ,UAAU;CACV,QAAQ;;;;CAGR,YAAY;CACZ,OAAO,EAAE,MAAM,eAAe,CAAC;;;;CAG/B,YAAY;CACZ,gBAAgB;CAChB,WAAW,cAAc;CACzB,QAAQ;;;;;;;;AAkBX,IAAa,iBAAb,MAAa,uBAAuB,eAAe;CACjD,AAAO,YAAY,SAAgC;AACjD,SAAO;OAYO,OAAO,eAAe,KAAK;OAoBpC,eAAyB,EAAE;OAK3B,cAAwB,EAAE;AApC/B,MAAI,SAAS;AACX,QAAK,KAAK,QAAQ,MAAM,KAAK,YAAY;AACzC,QAAK,UAAU,QAAQ;AACvB,QAAK,eAAe,CAAC,GAAG,QAAQ,aAAa;AAC7C,QAAK,cAAc,QAAQ;AAC3B,QAAK,eAAe,QAAQ,eAAe,CAAC,GAAG,QAAQ,aAAa,GAAG,EAAE;AACzE,QAAK,cAAc,QAAQ,cAAc,CAAC,GAAG,QAAQ,YAAY,GAAG,EAAE;;;;eAMnD,OAAO,iBAAiB,yCAAyC;YAFvF,mBAAmB,eAAe,KAAK;;CAIvC,UAAU;CACV,QAAQ;;;;CAGR,SAAS;CACT,SAAS,EAAE,MAAM,MAAM,CAAC;CACxB,QAAQ;;;;CAGR,YAAY;CACZ,UAAU;CACV,QAAQ;;;;CAGR,SAAS;CACT,SAAS,EAAE,MAAM,MAAM,CAAC;CACxB,OAAO,EAAE,MAAM,iBAAiB,CAAC;;;;CAGjC,SAAS;CACT,SAAS,EAAE,MAAM,MAAM,CAAC;CACxB,OAAO,EAAE,MAAM,gBAAgB,CAAC"}