@learncard/render-method-plugin 6.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15982,6 +15982,7 @@ var require_types_cjs_development = __commonJS({
15982
15982
  var __toCommonJS2 = /* @__PURE__ */ __name2((mod) => __copyProps22(__defProp22({}, "__esModule", { value: true }), mod), "__toCommonJS");
15983
15983
  var index_exports2 = {};
15984
15984
  __export22(index_exports2, {
15985
+ ACT_AS_HEADER: /* @__PURE__ */ __name2(() => ACT_AS_HEADER, "ACT_AS_HEADER"),
15985
15986
  AUTH_GRANT_AUDIENCE_DOMAIN_PREFIX: /* @__PURE__ */ __name2(() => AUTH_GRANT_AUDIENCE_DOMAIN_PREFIX2, "AUTH_GRANT_AUDIENCE_DOMAIN_PREFIX"),
15986
15987
  AchievementCredentialValidator: /* @__PURE__ */ __name2(() => AchievementCredentialValidator2, "AchievementCredentialValidator"),
15987
15988
  AchievementCriteriaValidator: /* @__PURE__ */ __name2(() => AchievementCriteriaValidator2, "AchievementCriteriaValidator"),
@@ -16044,6 +16045,7 @@ var require_types_cjs_development = __commonJS({
16044
16045
  ConsentFlowContractValidator: /* @__PURE__ */ __name2(() => ConsentFlowContractValidator2, "ConsentFlowContractValidator"),
16045
16046
  ConsentFlowDataForDidQueryValidator: /* @__PURE__ */ __name2(() => ConsentFlowDataForDidQueryValidator2, "ConsentFlowDataForDidQueryValidator"),
16046
16047
  ConsentFlowDataQueryValidator: /* @__PURE__ */ __name2(() => ConsentFlowDataQueryValidator2, "ConsentFlowDataQueryValidator"),
16048
+ ConsentFlowGuardianApprovalValidator: /* @__PURE__ */ __name2(() => ConsentFlowGuardianApprovalValidator2, "ConsentFlowGuardianApprovalValidator"),
16047
16049
  ConsentFlowTermValidator: /* @__PURE__ */ __name2(() => ConsentFlowTermValidator2, "ConsentFlowTermValidator"),
16048
16050
  ConsentFlowTermsQueryValidator: /* @__PURE__ */ __name2(() => ConsentFlowTermsQueryValidator2, "ConsentFlowTermsQueryValidator"),
16049
16051
  ConsentFlowTermsStatusValidator: /* @__PURE__ */ __name2(() => ConsentFlowTermsStatusValidator2, "ConsentFlowTermsStatusValidator"),
@@ -16120,10 +16122,18 @@ var require_types_cjs_development = __commonJS({
16120
16122
  IdentifierTypeValidator: /* @__PURE__ */ __name2(() => IdentifierTypeValidator2, "IdentifierTypeValidator"),
16121
16123
  IdentityObjectValidator: /* @__PURE__ */ __name2(() => IdentityObjectValidator2, "IdentityObjectValidator"),
16122
16124
  ImageValidator: /* @__PURE__ */ __name2(() => ImageValidator2, "ImageValidator"),
16125
+ InboxBatchErrorReasonValidator: /* @__PURE__ */ __name2(() => InboxBatchErrorReasonValidator2, "InboxBatchErrorReasonValidator"),
16126
+ InboxBatchReceiptValidator: /* @__PURE__ */ __name2(() => InboxBatchReceiptValidator2, "InboxBatchReceiptValidator"),
16127
+ InboxBatchStatusValidator: /* @__PURE__ */ __name2(() => InboxBatchStatusValidator2, "InboxBatchStatusValidator"),
16123
16128
  InboxCredentialQueryValidator: /* @__PURE__ */ __name2(() => InboxCredentialQueryValidator2, "InboxCredentialQueryValidator"),
16129
+ InboxCredentialRefreshReceiptValidator: /* @__PURE__ */ __name2(() => InboxCredentialRefreshReceiptValidator2, "InboxCredentialRefreshReceiptValidator"),
16124
16130
  InboxCredentialValidator: /* @__PURE__ */ __name2(() => InboxCredentialValidator2, "InboxCredentialValidator"),
16125
16131
  IncrementCounterEventValidator: /* @__PURE__ */ __name2(() => IncrementCounterEventValidator2, "IncrementCounterEventValidator"),
16126
16132
  InstalledAppValidator: /* @__PURE__ */ __name2(() => InstalledAppValidator2, "InstalledAppValidator"),
16133
+ IssueInboxCredentialBatchItemResultValidator: /* @__PURE__ */ __name2(() => IssueInboxCredentialBatchItemResultValidator2, "IssueInboxCredentialBatchItemResultValidator"),
16134
+ IssueInboxCredentialBatchItemValidator: /* @__PURE__ */ __name2(() => IssueInboxCredentialBatchItemValidator2, "IssueInboxCredentialBatchItemValidator"),
16135
+ IssueInboxCredentialBatchResponseValidator: /* @__PURE__ */ __name2(() => IssueInboxCredentialBatchResponseValidator2, "IssueInboxCredentialBatchResponseValidator"),
16136
+ IssueInboxCredentialBatchValidator: /* @__PURE__ */ __name2(() => IssueInboxCredentialBatchValidator2, "IssueInboxCredentialBatchValidator"),
16127
16137
  IssueInboxCredentialResponseValidator: /* @__PURE__ */ __name2(() => IssueInboxCredentialResponseValidator2, "IssueInboxCredentialResponseValidator"),
16128
16138
  IssueInboxCredentialValidator: /* @__PURE__ */ __name2(() => IssueInboxCredentialValidator2, "IssueInboxCredentialValidator"),
16129
16139
  IssueInboxSigningAuthorityValidator: /* @__PURE__ */ __name2(() => IssueInboxSigningAuthorityValidator2, "IssueInboxSigningAuthorityValidator"),
@@ -16172,6 +16182,7 @@ var require_types_cjs_development = __commonJS({
16172
16182
  LaunchTypeValidator: /* @__PURE__ */ __name2(() => LaunchTypeValidator2, "LaunchTypeValidator"),
16173
16183
  LearnCardRefreshAuthorizationValidator: /* @__PURE__ */ __name2(() => LearnCardRefreshAuthorizationValidator2, "LearnCardRefreshAuthorizationValidator"),
16174
16184
  LinkProviderFrameworkInputValidator: /* @__PURE__ */ __name2(() => LinkProviderFrameworkInputValidator2, "LinkProviderFrameworkInputValidator"),
16185
+ ManagedCredentialRefreshReceiptValidator: /* @__PURE__ */ __name2(() => ManagedCredentialRefreshReceiptValidator2, "ManagedCredentialRefreshReceiptValidator"),
16175
16186
  ManagedCredentialRefreshServiceValidator: /* @__PURE__ */ __name2(() => ManagedCredentialRefreshServiceValidator2, "ManagedCredentialRefreshServiceValidator"),
16176
16187
  PaginatedAppStoreListingsValidator: /* @__PURE__ */ __name2(() => PaginatedAppStoreListingsValidator2, "PaginatedAppStoreListingsValidator"),
16177
16188
  PaginatedBoostRecipientsValidator: /* @__PURE__ */ __name2(() => PaginatedBoostRecipientsValidator2, "PaginatedBoostRecipientsValidator"),
@@ -16198,6 +16209,8 @@ var require_types_cjs_development = __commonJS({
16198
16209
  PaginatedVisibleLCNProfilesValidator: /* @__PURE__ */ __name2(() => PaginatedVisibleLCNProfilesValidator2, "PaginatedVisibleLCNProfilesValidator"),
16199
16210
  PaginationOptionsValidator: /* @__PURE__ */ __name2(() => PaginationOptionsValidator2, "PaginationOptionsValidator"),
16200
16211
  PaginationResponseValidator: /* @__PURE__ */ __name2(() => PaginationResponseValidator2, "PaginationResponseValidator"),
16212
+ PrepareRefreshableSendInputValidator: /* @__PURE__ */ __name2(() => PrepareRefreshableSendInputValidator2, "PrepareRefreshableSendInputValidator"),
16213
+ PrepareRefreshableSendResultValidator: /* @__PURE__ */ __name2(() => PrepareRefreshableSendResultValidator2, "PrepareRefreshableSendResultValidator"),
16201
16214
  ProfileValidator: /* @__PURE__ */ __name2(() => ProfileValidator2, "ProfileValidator"),
16202
16215
  ProfileVisibilityEnum: /* @__PURE__ */ __name2(() => ProfileVisibilityEnum2, "ProfileVisibilityEnum"),
16203
16216
  PromotionLevelValidator: /* @__PURE__ */ __name2(() => PromotionLevelValidator2, "PromotionLevelValidator"),
@@ -16223,6 +16236,7 @@ var require_types_cjs_development = __commonJS({
16223
16236
  SendAiSessionCredentialEventValidator: /* @__PURE__ */ __name2(() => SendAiSessionCredentialEventValidator2, "SendAiSessionCredentialEventValidator"),
16224
16237
  SendBoostInputValidator: /* @__PURE__ */ __name2(() => SendBoostInputValidator2, "SendBoostInputValidator"),
16225
16238
  SendBoostResponseValidator: /* @__PURE__ */ __name2(() => SendBoostResponseValidator2, "SendBoostResponseValidator"),
16239
+ SendBoostTemplateValidator: /* @__PURE__ */ __name2(() => SendBoostTemplateValidator2, "SendBoostTemplateValidator"),
16226
16240
  SendBrandingOptionsValidator: /* @__PURE__ */ __name2(() => SendBrandingOptionsValidator2, "SendBrandingOptionsValidator"),
16227
16241
  SendCredentialEventValidator: /* @__PURE__ */ __name2(() => SendCredentialEventValidator2, "SendCredentialEventValidator"),
16228
16242
  SendInboxResponseValidator: /* @__PURE__ */ __name2(() => SendInboxResponseValidator2, "SendInboxResponseValidator"),
@@ -16942,7 +16956,7 @@ var require_types_cjs_development = __commonJS({
16942
16956
  getSizableOrigin: /* @__PURE__ */ __name2(() => getSizableOrigin2, "getSizableOrigin"),
16943
16957
  hexToUint8Array: /* @__PURE__ */ __name2(() => hexToUint8Array2, "hexToUint8Array"),
16944
16958
  isObject: /* @__PURE__ */ __name2(() => isObject2, "isObject"),
16945
- isPlainObject: /* @__PURE__ */ __name2(() => isPlainObject3, "isPlainObject"),
16959
+ isPlainObject: /* @__PURE__ */ __name2(() => isPlainObject22, "isPlainObject"),
16946
16960
  issue: /* @__PURE__ */ __name2(() => issue2, "issue"),
16947
16961
  joinValues: /* @__PURE__ */ __name2(() => joinValues2, "joinValues"),
16948
16962
  jsonStringifyReplacer: /* @__PURE__ */ __name2(() => jsonStringifyReplacer2, "jsonStringifyReplacer"),
@@ -17191,7 +17205,7 @@ var require_types_cjs_development = __commonJS({
17191
17205
  return false;
17192
17206
  }
17193
17207
  });
17194
- function isPlainObject3(o) {
17208
+ function isPlainObject22(o) {
17195
17209
  if (isObject2(o) === false)
17196
17210
  return false;
17197
17211
  const ctor = o.constructor;
@@ -17207,11 +17221,11 @@ var require_types_cjs_development = __commonJS({
17207
17221
  }
17208
17222
  return true;
17209
17223
  }
17210
- __name(isPlainObject3, "isPlainObject");
17211
- __name2(isPlainObject3, "isPlainObject");
17212
- __name22(isPlainObject3, "isPlainObject");
17224
+ __name(isPlainObject22, "isPlainObject2");
17225
+ __name2(isPlainObject22, "isPlainObject");
17226
+ __name22(isPlainObject22, "isPlainObject");
17213
17227
  function shallowClone2(o) {
17214
- if (isPlainObject3(o))
17228
+ if (isPlainObject22(o))
17215
17229
  return { ...o };
17216
17230
  if (Array.isArray(o))
17217
17231
  return [...o];
@@ -17445,7 +17459,7 @@ var require_types_cjs_development = __commonJS({
17445
17459
  __name2(omit2, "omit");
17446
17460
  __name22(omit2, "omit");
17447
17461
  function extend2(schema, shape) {
17448
- if (!isPlainObject3(shape)) {
17462
+ if (!isPlainObject22(shape)) {
17449
17463
  throw new Error("Invalid input to extend: expected a plain object");
17450
17464
  }
17451
17465
  const checks = schema._zod.def.checks;
@@ -17471,7 +17485,7 @@ var require_types_cjs_development = __commonJS({
17471
17485
  __name2(extend2, "extend");
17472
17486
  __name22(extend2, "extend");
17473
17487
  function safeExtend2(schema, shape) {
17474
- if (!isPlainObject3(shape)) {
17488
+ if (!isPlainObject22(shape)) {
17475
17489
  throw new Error("Invalid input to safeExtend: expected a plain object");
17476
17490
  }
17477
17491
  const def = mergeDefs2(schema._zod.def, {
@@ -19927,7 +19941,7 @@ var require_types_cjs_development = __commonJS({
19927
19941
  if (a instanceof Date && b instanceof Date && +a === +b) {
19928
19942
  return { valid: true, data: a };
19929
19943
  }
19930
- if (isPlainObject3(a) && isPlainObject3(b)) {
19944
+ if (isPlainObject22(a) && isPlainObject22(b)) {
19931
19945
  const bKeys = Object.keys(b);
19932
19946
  const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);
19933
19947
  const newObj = { ...a, ...b };
@@ -20128,7 +20142,7 @@ var require_types_cjs_development = __commonJS({
20128
20142
  $ZodType2.init(inst, def);
20129
20143
  inst._zod.parse = (payload, ctx) => {
20130
20144
  const input = payload.value;
20131
- if (!isPlainObject3(input)) {
20145
+ if (!isPlainObject22(input)) {
20132
20146
  payload.issues.push({
20133
20147
  expected: "record",
20134
20148
  code: "invalid_type",
@@ -32083,14 +32097,22 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32083
32097
  }).catchall(external_exports2.any());
32084
32098
  var ProofValidator2 = external_exports2.object({
32085
32099
  type: external_exports2.string(),
32086
- created: external_exports2.string(),
32100
+ created: external_exports2.string().optional(),
32087
32101
  challenge: external_exports2.string().optional(),
32088
32102
  domain: external_exports2.string().optional(),
32089
32103
  nonce: external_exports2.string().optional(),
32090
32104
  proofPurpose: external_exports2.string(),
32091
32105
  verificationMethod: external_exports2.string(),
32092
32106
  jws: external_exports2.string().optional()
32093
- }).catchall(external_exports2.any());
32107
+ }).catchall(external_exports2.any()).superRefine((proof, ctx) => {
32108
+ if (proof.created === void 0 && (proof.type !== "DataIntegrityProof" || proof.cryptosuite !== "ecdsa-rdfc-2019")) {
32109
+ ctx.addIssue({
32110
+ code: "custom",
32111
+ path: ["created"],
32112
+ message: "created is required for this proof suite"
32113
+ });
32114
+ }
32115
+ });
32094
32116
  var VCValidator2 = UnsignedVCValidator2.extend({
32095
32117
  proof: ProofValidator2.or(ProofValidator2.array())
32096
32118
  });
@@ -32532,6 +32554,204 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32532
32554
  $or: BaseStringQuery2.array()
32533
32555
  })
32534
32556
  ]);
32557
+ var LearnCardRefreshAuthorizationValidator2 = external_exports2.object({ type: external_exports2.literal("LearnCardDIDAuth") }).catchall(external_exports2.any());
32558
+ var ManagedCredentialRefreshServiceValidator2 = external_exports2.object({
32559
+ id: external_exports2.string().min(1),
32560
+ type: external_exports2.literal("LearnCardCredentialRefresh2026"),
32561
+ authorization: LearnCardRefreshAuthorizationValidator2.optional()
32562
+ }).catchall(external_exports2.any());
32563
+ var StandardCredentialRefreshServiceValidator2 = external_exports2.object({
32564
+ id: external_exports2.string().min(1),
32565
+ type: external_exports2.literal("1EdTechCredentialRefresh")
32566
+ }).catchall(external_exports2.any());
32567
+ var SupportedCredentialRefreshServiceValidator2 = external_exports2.union([
32568
+ ManagedCredentialRefreshServiceValidator2,
32569
+ StandardCredentialRefreshServiceValidator2
32570
+ ]);
32571
+ var AllocateCredentialRefreshInputValidator2 = external_exports2.object({
32572
+ holder: external_exports2.object({
32573
+ profileId: external_exports2.string().optional(),
32574
+ did: external_exports2.string().min(1)
32575
+ }),
32576
+ credentialId: external_exports2.string().min(1)
32577
+ });
32578
+ var AllocateCredentialRefreshResultValidator2 = external_exports2.object({
32579
+ refreshId: external_exports2.string().min(1),
32580
+ refreshService: ManagedCredentialRefreshServiceValidator2.extend({
32581
+ authorization: LearnCardRefreshAuthorizationValidator2
32582
+ })
32583
+ });
32584
+ var ManagedCredentialRefreshReceiptValidator2 = external_exports2.object({
32585
+ refreshId: external_exports2.string().min(1),
32586
+ refreshService: ManagedCredentialRefreshServiceValidator2,
32587
+ credentialId: external_exports2.string().min(1),
32588
+ issuerDid: external_exports2.string().min(1),
32589
+ holderDid: external_exports2.string().min(1),
32590
+ credentialStatus: CredentialStatusValidator2.or(
32591
+ CredentialStatusValidator2.array()
32592
+ ).optional()
32593
+ }).strip();
32594
+ var InboxCredentialRefreshReceiptValidator2 = ManagedCredentialRefreshReceiptValidator2.omit(
32595
+ { holderDid: true }
32596
+ ).extend({ holderDid: external_exports2.string().min(1).optional() });
32597
+ var CredentialRefreshSigningModeValidator2 = external_exports2.enum(["issuer-signed", "signing-authority"]);
32598
+ var PublishCredentialRefreshBaseFields2 = {
32599
+ refreshId: external_exports2.string().min(1),
32600
+ notifyHolder: external_exports2.boolean().optional(),
32601
+ updateSummary: external_exports2.string().optional(),
32602
+ idempotencyKey: external_exports2.string().optional()
32603
+ };
32604
+ var PublishIssuerSignedRefreshValidator2 = external_exports2.object({
32605
+ ...PublishCredentialRefreshBaseFields2,
32606
+ mode: external_exports2.literal("issuer-signed"),
32607
+ signedCredential: VCValidator2
32608
+ });
32609
+ var PublishSigningAuthorityRefreshValidator2 = external_exports2.object({
32610
+ ...PublishCredentialRefreshBaseFields2,
32611
+ mode: external_exports2.literal("signing-authority"),
32612
+ credential: UnsignedVCValidator2,
32613
+ signingAuthority: external_exports2.object({
32614
+ type: external_exports2.string().min(1)
32615
+ }).catchall(external_exports2.any())
32616
+ });
32617
+ var PublishCredentialRefreshInputValidator2 = external_exports2.object({
32618
+ ...PublishCredentialRefreshBaseFields2,
32619
+ mode: CredentialRefreshSigningModeValidator2,
32620
+ signedCredential: VCValidator2.optional(),
32621
+ credential: UnsignedVCValidator2.optional(),
32622
+ signingAuthority: external_exports2.object({
32623
+ type: external_exports2.string().min(1)
32624
+ }).catchall(external_exports2.any()).optional()
32625
+ }).superRefine((input, ctx) => {
32626
+ if (input.mode === "issuer-signed" && !input.signedCredential) {
32627
+ ctx.addIssue({
32628
+ code: "custom",
32629
+ path: ["signedCredential"],
32630
+ message: "signedCredential is required for issuer-signed publication"
32631
+ });
32632
+ }
32633
+ if (input.mode === "issuer-signed" && (input.credential !== void 0 || input.signingAuthority !== void 0)) {
32634
+ ctx.addIssue({
32635
+ code: "custom",
32636
+ path: ["mode"],
32637
+ message: "issuer-signed publication cannot include signing-authority fields"
32638
+ });
32639
+ }
32640
+ if (input.mode === "signing-authority") {
32641
+ if (input.signedCredential !== void 0) {
32642
+ ctx.addIssue({
32643
+ code: "custom",
32644
+ path: ["signedCredential"],
32645
+ message: "signing-authority publication cannot include signedCredential"
32646
+ });
32647
+ }
32648
+ if (!input.credential) {
32649
+ ctx.addIssue({
32650
+ code: "custom",
32651
+ path: ["credential"],
32652
+ message: "credential is required for signing-authority publication"
32653
+ });
32654
+ }
32655
+ if (!input.signingAuthority) {
32656
+ ctx.addIssue({
32657
+ code: "custom",
32658
+ path: ["signingAuthority"],
32659
+ message: "signingAuthority is required for signing-authority publication"
32660
+ });
32661
+ }
32662
+ }
32663
+ });
32664
+ var PublishCredentialRefreshNotificationValidator2 = external_exports2.enum([
32665
+ "queued",
32666
+ "suppressed",
32667
+ "not-applicable",
32668
+ /** Publication succeeded, but the post-commit notification enqueue must be retried. */
32669
+ "delivery-failed"
32670
+ ]);
32671
+ var PublishCredentialRefreshResultValidator2 = external_exports2.object({
32672
+ refreshId: external_exports2.string().min(1),
32673
+ version: external_exports2.number().int().positive(),
32674
+ publishedAt: external_exports2.string().min(1),
32675
+ notification: PublishCredentialRefreshNotificationValidator2
32676
+ });
32677
+ var CredentialRefreshVersionMetadataValidator2 = external_exports2.object({
32678
+ version: external_exports2.number().int().positive(),
32679
+ publishedAt: external_exports2.string().min(1),
32680
+ effectiveAt: external_exports2.string().optional(),
32681
+ etag: external_exports2.string().optional(),
32682
+ signingMode: CredentialRefreshSigningModeValidator2.optional(),
32683
+ updateSummary: external_exports2.string().optional()
32684
+ });
32685
+ var GetCredentialRefreshHistoryInputValidator2 = external_exports2.object({
32686
+ refreshId: external_exports2.string().min(1),
32687
+ cursor: external_exports2.string().optional(),
32688
+ limit: external_exports2.number().int().positive().optional()
32689
+ });
32690
+ var GetCredentialRefreshHistoryResultValidator2 = external_exports2.object({
32691
+ records: CredentialRefreshVersionMetadataValidator2.array(),
32692
+ hasMore: external_exports2.boolean(),
32693
+ cursor: external_exports2.string().optional()
32694
+ });
32695
+ var CredentialRefreshChallengeValidator2 = external_exports2.object({
32696
+ challenge: external_exports2.string().min(1),
32697
+ expiresAt: external_exports2.string().min(1),
32698
+ domain: external_exports2.string().optional(),
32699
+ scheme: external_exports2.literal("LearnCardDIDAuth").optional()
32700
+ });
32701
+ var PublicCredentialRefreshEnvelopeValidator2 = external_exports2.object({
32702
+ format: external_exports2.literal("vc"),
32703
+ credential: VCValidator2,
32704
+ etag: external_exports2.string().optional()
32705
+ });
32706
+ var JweCredentialRefreshEnvelopeValidator2 = external_exports2.object({
32707
+ format: external_exports2.literal("jwe"),
32708
+ jwe: JWEValidator2,
32709
+ etag: external_exports2.string().optional(),
32710
+ /** Present on LearnCard-managed endpoints; optional for interoperable JWE services. */
32711
+ version: external_exports2.number().int().positive().optional()
32712
+ });
32713
+ var CredentialRefreshResponseEnvelopeValidator2 = external_exports2.discriminatedUnion("format", [
32714
+ PublicCredentialRefreshEnvelopeValidator2,
32715
+ JweCredentialRefreshEnvelopeValidator2
32716
+ ]);
32717
+ var CredentialRefreshFailureCodeValidator2 = external_exports2.enum([
32718
+ "UNAVAILABLE",
32719
+ "TIMEOUT",
32720
+ "UNSUPPORTED_SERVICE",
32721
+ "UNAUTHORIZED",
32722
+ "MALFORMED_RESPONSE",
32723
+ "INVALID_PROOF",
32724
+ "ISSUER_MISMATCH",
32725
+ "ID_MISMATCH",
32726
+ "ROLLBACK",
32727
+ "REVOKED",
32728
+ "UNSAFE_ENDPOINT"
32729
+ ]);
32730
+ var CredentialRefreshUpdatedResultValidator2 = external_exports2.object({
32731
+ status: external_exports2.literal("updated"),
32732
+ credential: VCValidator2,
32733
+ etag: external_exports2.string().optional(),
32734
+ managedVersion: external_exports2.number().int().positive().optional()
32735
+ });
32736
+ var CredentialRefreshUnchangedResultValidator2 = external_exports2.object({
32737
+ status: external_exports2.literal("unchanged"),
32738
+ checkedAt: external_exports2.string().min(1),
32739
+ etag: external_exports2.string().optional()
32740
+ });
32741
+ var CredentialRefreshUnsupportedResultValidator2 = external_exports2.object({
32742
+ status: external_exports2.literal("unsupported")
32743
+ });
32744
+ var CredentialRefreshFailedResultValidator2 = external_exports2.object({
32745
+ status: external_exports2.literal("failed"),
32746
+ code: CredentialRefreshFailureCodeValidator2,
32747
+ retryable: external_exports2.boolean()
32748
+ });
32749
+ var CredentialRefreshResultValidator2 = external_exports2.discriminatedUnion("status", [
32750
+ CredentialRefreshUpdatedResultValidator2,
32751
+ CredentialRefreshUnchangedResultValidator2,
32752
+ CredentialRefreshUnsupportedResultValidator2,
32753
+ CredentialRefreshFailedResultValidator2
32754
+ ]);
32535
32755
  var LCNProfileDisplayValidator2 = external_exports2.object({
32536
32756
  backgroundColor: external_exports2.string().optional(),
32537
32757
  backgroundImage: external_exports2.string().optional(),
@@ -32867,7 +33087,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32867
33087
  "Options for email/phone recipients (Universal Inbox)"
32868
33088
  ),
32869
33089
  templateData: external_exports2.record(external_exports2.string(), external_exports2.unknown()).optional(),
32870
- integrationId: external_exports2.string().optional().describe("Integration ID for activity tracking")
33090
+ integrationId: external_exports2.string().optional().describe("Integration ID for activity tracking"),
33091
+ refresh: external_exports2.boolean().optional().describe(
33092
+ "Request managed credential refresh for this send. Profile/DID recipients use immediate issuance; email/phone recipients use deferred Universal Inbox signing and bind the holder at claim."
33093
+ ),
33094
+ idempotencyKey: external_exports2.string().min(1).max(200).optional().describe(
33095
+ "Caller-chosen key that makes a managed refresh send (refresh: true) safe to retry as a whole: retries with the same key reuse the same boost, refresh allocation and result. Reusing a key for a different request is rejected. With signedCredential, requires prior tRPC prepareRefreshableSend; direct REST callers omit the key and retry the exact signed credential and templateUri."
33096
+ )
32871
33097
  }).refine((data) => data.templateUri || data.template || data.signedCredential, {
32872
33098
  message: "Either templateUri, template, or signedCredential must be provided.",
32873
33099
  path: ["templateUri"]
@@ -32882,8 +33108,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32882
33108
  message: "guardianEmail must differ from recipient (self-approval not allowed)",
32883
33109
  path: ["options", "guardianEmail"]
32884
33110
  }
32885
- );
33111
+ ).refine((data) => !data.idempotencyKey || data.refresh === true, {
33112
+ message: "idempotencyKey is only supported with refresh: true.",
33113
+ path: ["idempotencyKey"]
33114
+ });
32886
33115
  var SendInboxResponseValidator2 = external_exports2.object({
33116
+ refresh: InboxCredentialRefreshReceiptValidator2.optional(),
32887
33117
  issuanceId: external_exports2.string(),
32888
33118
  status: external_exports2.enum(["PENDING", "ISSUED", "EXPIRED", "DELIVERED", "CLAIMED"]),
32889
33119
  claimUrl: external_exports2.string().url().optional().describe("Present when suppressDelivery=true"),
@@ -32898,8 +33128,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32898
33128
  activityId: external_exports2.string().describe("Links to the activity lifecycle for this issuance"),
32899
33129
  inbox: SendInboxResponseValidator2.optional().describe(
32900
33130
  "Present when sent via email/phone (Universal Inbox)"
33131
+ ),
33132
+ refresh: ManagedCredentialRefreshReceiptValidator2.optional().describe(
33133
+ "Present when managed refresh was requested: issuance metadata the issuer keeps to publish future updates"
32901
33134
  )
32902
33135
  });
33136
+ var PrepareRefreshableSendInputValidator2 = external_exports2.object({
33137
+ recipient: external_exports2.string(),
33138
+ templateUri: external_exports2.string().optional(),
33139
+ template: SendBoostTemplateValidator2.optional(),
33140
+ contractUri: external_exports2.string().optional(),
33141
+ templateData: external_exports2.record(external_exports2.string(), external_exports2.unknown()).optional(),
33142
+ integrationId: external_exports2.string().optional(),
33143
+ /** Credential ID to allocate for; generated server-side when omitted. */
33144
+ credentialId: external_exports2.string().min(1).optional(),
33145
+ idempotencyKey: external_exports2.string().min(1).max(200).optional()
33146
+ }).refine((data) => Boolean(data.templateUri) !== Boolean(data.template), {
33147
+ message: "Provide exactly one of templateUri or template."
33148
+ });
33149
+ var PrepareRefreshableSendResultValidator2 = external_exports2.object({
33150
+ boostUri: external_exports2.string(),
33151
+ credentialId: external_exports2.string(),
33152
+ refreshId: external_exports2.string(),
33153
+ refreshService: ManagedCredentialRefreshServiceValidator2,
33154
+ /** The DID to use as credentialSubject.id (recipient DID, or the profile's did:web). */
33155
+ holderDid: external_exports2.string(),
33156
+ /** Present when this idempotencyKey already completed: return it without signing. */
33157
+ completed: SendBoostResponseValidator2.optional()
33158
+ });
32903
33159
  var SendInputValidator2 = external_exports2.discriminatedUnion("type", [SendBoostInputValidator2]);
32904
33160
  var SendResponseValidator2 = external_exports2.discriminatedUnion("type", [SendBoostResponseValidator2]);
32905
33161
  var ConsentFlowTermsStatusValidator2 = external_exports2.enum(["live", "stale", "withdrawn"]);
@@ -32975,15 +33231,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32975
33231
  var PaginatedConsentFlowDataValidator2 = PaginationResponseValidator2.extend({
32976
33232
  records: ConsentFlowContractDataValidator2.array()
32977
33233
  });
32978
- var ConsentFlowContractDataForDidValidator2 = external_exports2.object({
32979
- credentials: external_exports2.object({ category: external_exports2.string(), uri: external_exports2.string() }).array(),
32980
- personal: external_exports2.record(external_exports2.string(), external_exports2.string()).default({}),
32981
- date: external_exports2.string(),
32982
- contractUri: external_exports2.string()
32983
- });
32984
- var PaginatedConsentFlowDataForDidValidator2 = PaginationResponseValidator2.extend({
32985
- records: ConsentFlowContractDataForDidValidator2.array()
32986
- });
32987
33234
  var ConsentFlowTermValidator2 = external_exports2.object({
32988
33235
  sharing: external_exports2.boolean().optional(),
32989
33236
  shared: external_exports2.string().array().optional(),
@@ -33017,6 +33264,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33017
33264
  status: ConsentFlowTermsStatusValidator2
33018
33265
  }).array()
33019
33266
  });
33267
+ var ConsentFlowGuardianApprovalValidator2 = external_exports2.object({
33268
+ guardianProfileId: external_exports2.string(),
33269
+ guardianDid: external_exports2.string(),
33270
+ approvedAt: external_exports2.string().datetime(),
33271
+ contractUpdatedAt: external_exports2.string()
33272
+ });
33273
+ var ConsentFlowContractDataForDidValidator2 = external_exports2.object({
33274
+ credentials: external_exports2.object({ category: external_exports2.string(), uri: external_exports2.string() }).array(),
33275
+ personal: external_exports2.record(external_exports2.string(), external_exports2.string()).default({}),
33276
+ date: external_exports2.string(),
33277
+ createdAt: external_exports2.string().optional(),
33278
+ contractUpdatedAt: external_exports2.string(),
33279
+ contractExpiresAt: external_exports2.string().optional(),
33280
+ reasonForAccessing: external_exports2.string().optional(),
33281
+ guardian: external_exports2.object({
33282
+ required: external_exports2.boolean(),
33283
+ approved: external_exports2.boolean(),
33284
+ approval: ConsentFlowGuardianApprovalValidator2.optional()
33285
+ }),
33286
+ contractUri: external_exports2.string(),
33287
+ termsUri: external_exports2.string(),
33288
+ status: ConsentFlowTermsStatusValidator2,
33289
+ expiresAt: external_exports2.string().optional(),
33290
+ terms: ConsentFlowTermsValidator2
33291
+ });
33292
+ var PaginatedConsentFlowDataForDidValidator2 = PaginationResponseValidator2.extend({
33293
+ records: ConsentFlowContractDataForDidValidator2.array()
33294
+ });
33020
33295
  var ConsentFlowContractQueryValidator2 = external_exports2.object({
33021
33296
  read: external_exports2.object({
33022
33297
  anonymize: external_exports2.boolean().optional(),
@@ -33077,6 +33352,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33077
33352
  expiresAt: external_exports2.string().optional(),
33078
33353
  oneTime: external_exports2.boolean().optional(),
33079
33354
  terms: ConsentFlowTermsValidator2.optional(),
33355
+ guardianApproval: ConsentFlowGuardianApprovalValidator2.optional(),
33080
33356
  id: external_exports2.string(),
33081
33357
  action: ConsentFlowTransactionActionValidator2,
33082
33358
  date: external_exports2.string(),
@@ -33198,6 +33474,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33198
33474
  webhookUrl: external_exports2.string().optional()
33199
33475
  });
33200
33476
  var AUTH_GRANT_AUDIENCE_DOMAIN_PREFIX2 = "auth-grant:";
33477
+ var ACT_AS_HEADER = "X-LearnCard-Act-As";
33201
33478
  var AuthGrantValidator2 = external_exports2.object({
33202
33479
  id: external_exports2.string(),
33203
33480
  name: external_exports2.string(),
@@ -33210,6 +33487,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33210
33487
  }, "error")
33211
33488
  }),
33212
33489
  scope: external_exports2.string(),
33490
+ actAs: external_exports2.string().optional(),
33213
33491
  createdAt: external_exports2.iso.datetime({ error: "createdAt must be a valid ISO 8601 datetime string" }),
33214
33492
  expiresAt: external_exports2.iso.datetime({ error: "expiresAt must be a valid ISO 8601 datetime string" }).nullish().optional()
33215
33493
  });
@@ -33281,6 +33559,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33281
33559
  sessionJwt: external_exports2.string()
33282
33560
  });
33283
33561
  var InboxCredentialValidator2 = external_exports2.object({
33562
+ refresh: InboxCredentialRefreshReceiptValidator2.optional(),
33563
+ refreshId: external_exports2.string().optional(),
33284
33564
  id: external_exports2.string(),
33285
33565
  credential: external_exports2.string().optional(),
33286
33566
  isSigned: external_exports2.boolean(),
@@ -33335,12 +33615,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33335
33615
  templateUri: external_exports2.string().optional().describe(
33336
33616
  "URI of a boost template to use for issuance. The boost credential will be resolved and used. Mutually exclusive with credential field."
33337
33617
  ),
33618
+ refresh: external_exports2.boolean().optional().describe(
33619
+ "Allocate managed refresh before signing. Requires unsigned content and a registered signing authority; binds the holder on claim."
33620
+ ),
33621
+ idempotencyKey: external_exports2.string().min(1).max(200).optional(),
33338
33622
  // === OPTIONAL FEATURES ===
33339
33623
  // Add major, distinct features at the top level.
33340
33624
  //consentRequest: ConsentRequestValidator.optional(),
33341
33625
  // === PROCESS CONFIGURATION (Optional) ===
33342
33626
  // HOW should this issuance be handled?
33343
33627
  configuration: external_exports2.object({
33628
+ guardianEmail: external_exports2.string().email().optional().describe(
33629
+ "Require approval from this guardian before the recipient can claim. Must differ from the recipient email."
33630
+ ),
33344
33631
  signingAuthority: IssueInboxSigningAuthorityValidator2.optional().describe(
33345
33632
  "The signing authority to use for the credential. If not provided, the users default signing authority will be used if the credential is not signed."
33346
33633
  ),
@@ -33394,32 +33681,145 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33394
33681
  }).optional().describe(
33395
33682
  "Configuration for the credential issuance. If not provided, the default configuration will be used."
33396
33683
  )
33684
+ }).refine((data) => !data.idempotencyKey || data.refresh === true, {
33685
+ message: "idempotencyKey requires refresh: true."
33397
33686
  }).refine((data) => data.credential || data.templateUri, {
33398
33687
  message: "Either credential or templateUri must be provided.",
33399
33688
  path: ["credential"]
33400
- });
33689
+ }).refine(
33690
+ (data) => !data.configuration?.guardianEmail || data.recipient.type !== "email" || data.configuration.guardianEmail.toLowerCase() !== data.recipient.value.toLowerCase(),
33691
+ {
33692
+ message: "guardianEmail must differ from recipient (self-approval not allowed)",
33693
+ path: ["configuration", "guardianEmail"]
33694
+ }
33695
+ );
33401
33696
  var IssueInboxCredentialResponseValidator2 = external_exports2.object({
33697
+ refresh: InboxCredentialRefreshReceiptValidator2.optional(),
33402
33698
  issuanceId: external_exports2.string(),
33403
33699
  status: LCNInboxStatusEnumValidator2,
33404
33700
  recipient: ContactMethodQueryValidator2,
33405
33701
  claimUrl: external_exports2.string().url().optional(),
33406
33702
  recipientDid: external_exports2.string().optional()
33407
33703
  });
33408
- var CredentialNameRefValidator2 = external_exports2.object({ name: external_exports2.string() }).passthrough();
33409
- var ClaimInboxCredentialValidator2 = external_exports2.object({
33410
- credential: VCValidator2.or(VPValidator2).or(UnsignedVCValidator2).or(CredentialNameRefValidator2).describe("The credential to issue, or a { name } reference to resolve a boost template."),
33411
- configuration: external_exports2.object({
33412
- publishableKey: external_exports2.string(),
33413
- expiresInDays: external_exports2.number().int().min(1).max(720).optional().describe(
33414
- "Inbox claim window in days. Defaults to 720; use a shorter window for sensitive records."
33415
- ),
33416
- signingAuthorityName: external_exports2.string().optional(),
33417
- listingId: external_exports2.string().optional(),
33418
- listingSlug: external_exports2.string().optional()
33419
- }).optional()
33704
+ var InboxBatchConfigurationValidator2 = IssueInboxCredentialValidator2.shape.configuration.unwrap().extend({
33705
+ refresh: IssueInboxCredentialValidator2.shape.refresh.describe(
33706
+ "Enable managed refresh by default. An item configuration.refresh overrides this value, including false."
33707
+ ),
33708
+ delivery: IssueInboxCredentialValidator2.shape.configuration.unwrap().shape.delivery.unwrap().extend({ suppress: external_exports2.boolean().optional() }).optional()
33420
33709
  });
33421
- var LCNDomainOrOriginValidator2 = external_exports2.union([
33422
- external_exports2.string().regex(
33710
+ var InboxBatchItemConfigurationValidator2 = InboxBatchConfigurationValidator2.extend({
33711
+ guardianEmail: InboxBatchConfigurationValidator2.shape.guardianEmail.nullable().describe(
33712
+ "Require guardian approval, or set null to clear a batch-level guardianEmail for this item."
33713
+ )
33714
+ });
33715
+ var IssueInboxCredentialBatchItemValidator2 = external_exports2.object({
33716
+ ...IssueInboxCredentialValidator2.shape,
33717
+ configuration: InboxBatchItemConfigurationValidator2.optional(),
33718
+ idempotencyKey: external_exports2.string().max(256).optional()
33719
+ }).refine((data) => data.credential || data.templateUri, {
33720
+ message: "Either credential or templateUri must be provided.",
33721
+ path: ["credential"]
33722
+ }).describe(
33723
+ "One issuance: provide credential or templateUri. Invalid input is rejected at submission with its item index."
33724
+ );
33725
+ var IssueInboxCredentialBatchValidator2 = external_exports2.object({
33726
+ requestId: external_exports2.string().min(1).max(256).optional(),
33727
+ items: external_exports2.array(IssueInboxCredentialBatchItemValidator2).min(1).max(100),
33728
+ configuration: InboxBatchConfigurationValidator2.optional()
33729
+ }).superRefine((batch, ctx) => {
33730
+ batch.items.forEach((item, index) => {
33731
+ const itemGuardian = item.configuration?.guardianEmail;
33732
+ const guardian = itemGuardian === null ? void 0 : itemGuardian ?? batch.configuration?.guardianEmail;
33733
+ if (guardian && item.recipient.type === "email" && guardian.toLowerCase() === item.recipient.value.toLowerCase()) {
33734
+ ctx.addIssue({
33735
+ code: "custom",
33736
+ path: ["items", index, "configuration", "guardianEmail"],
33737
+ message: "guardianEmail must differ from recipient (self-approval not allowed)"
33738
+ });
33739
+ }
33740
+ });
33741
+ });
33742
+ var InboxBatchErrorReasonValidator2 = external_exports2.enum([
33743
+ "DUPLICATE_KEY",
33744
+ "IDEMPOTENCY_MISMATCH",
33745
+ "IN_PROGRESS",
33746
+ "UNCONFIRMED"
33747
+ ]);
33748
+ var IssueInboxCredentialBatchItemResultValidator2 = external_exports2.discriminatedUnion("success", [
33749
+ IssueInboxCredentialResponseValidator2.extend({
33750
+ success: external_exports2.literal(true),
33751
+ index: external_exports2.number().int().nonnegative(),
33752
+ deduplicated: external_exports2.boolean().optional(),
33753
+ guardianStatus: GuardianStatusValidator2.optional(),
33754
+ idempotencyKey: external_exports2.string().optional()
33755
+ }),
33756
+ external_exports2.object({
33757
+ success: external_exports2.literal(false),
33758
+ index: external_exports2.number().int().nonnegative(),
33759
+ idempotencyKey: external_exports2.string().optional(),
33760
+ recipient: ContactMethodQueryValidator2.optional(),
33761
+ error: external_exports2.object({
33762
+ code: external_exports2.string(),
33763
+ message: external_exports2.string(),
33764
+ reason: InboxBatchErrorReasonValidator2.optional()
33765
+ }),
33766
+ issuanceId: external_exports2.string().optional().describe(
33767
+ "Present when issuance completed but replay storage could not be confirmed. Reconcile this issuance; do not issue again with a new key."
33768
+ ),
33769
+ claimUrl: external_exports2.string().url().optional().describe(
33770
+ "Claim URL of the completed issuance, if available, when replay storage could not be confirmed."
33771
+ )
33772
+ })
33773
+ ]);
33774
+ var IssueInboxCredentialBatchResponseValidator2 = external_exports2.object({
33775
+ results: external_exports2.array(IssueInboxCredentialBatchItemResultValidator2),
33776
+ summary: external_exports2.object({
33777
+ total: external_exports2.number(),
33778
+ succeeded: external_exports2.number(),
33779
+ failed: external_exports2.number(),
33780
+ deduplicated: external_exports2.number()
33781
+ })
33782
+ });
33783
+ var InboxBatchReceiptValidator2 = external_exports2.object({
33784
+ batchId: external_exports2.string(),
33785
+ status: external_exports2.enum(["QUEUED", "PROCESSING", "COMPLETED", "NEEDS_RECONCILIATION"]),
33786
+ createdAt: external_exports2.string()
33787
+ });
33788
+ var InboxBatchStatusValidator2 = external_exports2.object({
33789
+ batchId: external_exports2.string(),
33790
+ createdAt: external_exports2.string(),
33791
+ done: external_exports2.boolean().describe(
33792
+ "True when no queued or processing items remain, including unconfirmed outcomes."
33793
+ ),
33794
+ status: external_exports2.enum(["QUEUED", "PROCESSING", "COMPLETED", "NEEDS_RECONCILIATION"]),
33795
+ items: external_exports2.array(
33796
+ external_exports2.object({
33797
+ index: external_exports2.number().int().nonnegative(),
33798
+ state: external_exports2.enum(["QUEUED", "PROCESSING", "COMPLETED", "NEEDS_RECONCILIATION"]),
33799
+ result: IssueInboxCredentialBatchItemResultValidator2.optional()
33800
+ })
33801
+ ),
33802
+ summary: IssueInboxCredentialBatchResponseValidator2.shape.summary.extend({
33803
+ completed: external_exports2.number(),
33804
+ pending: external_exports2.number(),
33805
+ unconfirmed: external_exports2.number()
33806
+ })
33807
+ });
33808
+ var CredentialNameRefValidator2 = external_exports2.object({ name: external_exports2.string() }).passthrough();
33809
+ var ClaimInboxCredentialValidator2 = external_exports2.object({
33810
+ credential: VCValidator2.or(VPValidator2).or(UnsignedVCValidator2).or(CredentialNameRefValidator2).describe("The credential to issue, or a { name } reference to resolve a boost template."),
33811
+ configuration: external_exports2.object({
33812
+ publishableKey: external_exports2.string(),
33813
+ expiresInDays: external_exports2.number().int().min(1).max(720).optional().describe(
33814
+ "Inbox claim window in days. Defaults to 720; use a shorter window for sensitive records."
33815
+ ),
33816
+ signingAuthorityName: external_exports2.string().optional(),
33817
+ listingId: external_exports2.string().optional(),
33818
+ listingSlug: external_exports2.string().optional()
33819
+ }).optional()
33820
+ });
33821
+ var LCNDomainOrOriginValidator2 = external_exports2.union([
33822
+ external_exports2.string().regex(
33423
33823
  /^(?:(?:[a-zA-Z0-9-]{1,63}\.)+[a-zA-Z]{2,63}|localhost|\d{1,3}(?:\.\d{1,3}){3})(?::\d{1,5})?$/,
33424
33824
  {
33425
33825
  message: "Must be a valid domain (incl. subdomains), localhost, or IPv4, optionally with port"
@@ -33890,6 +34290,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33890
34290
  eventType: CredentialActivityEventTypeValidator2,
33891
34291
  timestamp: external_exports2.string(),
33892
34292
  actorProfileId: external_exports2.string().optional(),
34293
+ onBehalfOf: external_exports2.string().optional(),
33893
34294
  recipientType: CredentialActivityRecipientTypeValidator2,
33894
34295
  recipientIdentifier: external_exports2.string(),
33895
34296
  boostUri: external_exports2.string().optional(),
@@ -34044,191 +34445,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
34044
34445
  const result = inAppMessagesFlagValidator2.safeParse(raw);
34045
34446
  return result.success ? result.data : EMPTY_IN_APP_MESSAGES_FLAG;
34046
34447
  }, "parseInAppMessagesFlag");
34047
- var LearnCardRefreshAuthorizationValidator2 = external_exports2.object({ type: external_exports2.literal("LearnCardDIDAuth") }).catchall(external_exports2.any());
34048
- var ManagedCredentialRefreshServiceValidator2 = external_exports2.object({
34049
- id: external_exports2.string().min(1),
34050
- type: external_exports2.literal("LearnCardCredentialRefresh2026"),
34051
- authorization: LearnCardRefreshAuthorizationValidator2.optional()
34052
- }).catchall(external_exports2.any());
34053
- var StandardCredentialRefreshServiceValidator2 = external_exports2.object({
34054
- id: external_exports2.string().min(1),
34055
- type: external_exports2.literal("1EdTechCredentialRefresh")
34056
- }).catchall(external_exports2.any());
34057
- var SupportedCredentialRefreshServiceValidator2 = external_exports2.union([
34058
- ManagedCredentialRefreshServiceValidator2,
34059
- StandardCredentialRefreshServiceValidator2
34060
- ]);
34061
- var AllocateCredentialRefreshInputValidator2 = external_exports2.object({
34062
- holder: external_exports2.object({
34063
- profileId: external_exports2.string().optional(),
34064
- did: external_exports2.string().min(1)
34065
- }),
34066
- credentialId: external_exports2.string().min(1)
34067
- });
34068
- var AllocateCredentialRefreshResultValidator2 = external_exports2.object({
34069
- refreshId: external_exports2.string().min(1),
34070
- refreshService: ManagedCredentialRefreshServiceValidator2.extend({
34071
- authorization: LearnCardRefreshAuthorizationValidator2
34072
- })
34073
- });
34074
- var CredentialRefreshSigningModeValidator2 = external_exports2.enum(["issuer-signed", "signing-authority"]);
34075
- var PublishCredentialRefreshBaseFields2 = {
34076
- refreshId: external_exports2.string().min(1),
34077
- notifyHolder: external_exports2.boolean().optional(),
34078
- updateSummary: external_exports2.string().optional(),
34079
- idempotencyKey: external_exports2.string().optional()
34080
- };
34081
- var PublishIssuerSignedRefreshValidator2 = external_exports2.object({
34082
- ...PublishCredentialRefreshBaseFields2,
34083
- mode: external_exports2.literal("issuer-signed"),
34084
- signedCredential: VCValidator2
34085
- });
34086
- var PublishSigningAuthorityRefreshValidator2 = external_exports2.object({
34087
- ...PublishCredentialRefreshBaseFields2,
34088
- mode: external_exports2.literal("signing-authority"),
34089
- credential: UnsignedVCValidator2,
34090
- signingAuthority: external_exports2.object({
34091
- type: external_exports2.string().min(1)
34092
- }).catchall(external_exports2.any())
34093
- });
34094
- var PublishCredentialRefreshInputValidator2 = external_exports2.object({
34095
- ...PublishCredentialRefreshBaseFields2,
34096
- mode: CredentialRefreshSigningModeValidator2,
34097
- signedCredential: VCValidator2.optional(),
34098
- credential: UnsignedVCValidator2.optional(),
34099
- signingAuthority: external_exports2.object({
34100
- type: external_exports2.string().min(1)
34101
- }).catchall(external_exports2.any()).optional()
34102
- }).superRefine((input, ctx) => {
34103
- if (input.mode === "issuer-signed" && !input.signedCredential) {
34104
- ctx.addIssue({
34105
- code: "custom",
34106
- path: ["signedCredential"],
34107
- message: "signedCredential is required for issuer-signed publication"
34108
- });
34109
- }
34110
- if (input.mode === "issuer-signed" && (input.credential !== void 0 || input.signingAuthority !== void 0)) {
34111
- ctx.addIssue({
34112
- code: "custom",
34113
- path: ["mode"],
34114
- message: "issuer-signed publication cannot include signing-authority fields"
34115
- });
34116
- }
34117
- if (input.mode === "signing-authority") {
34118
- if (input.signedCredential !== void 0) {
34119
- ctx.addIssue({
34120
- code: "custom",
34121
- path: ["signedCredential"],
34122
- message: "signing-authority publication cannot include signedCredential"
34123
- });
34124
- }
34125
- if (!input.credential) {
34126
- ctx.addIssue({
34127
- code: "custom",
34128
- path: ["credential"],
34129
- message: "credential is required for signing-authority publication"
34130
- });
34131
- }
34132
- if (!input.signingAuthority) {
34133
- ctx.addIssue({
34134
- code: "custom",
34135
- path: ["signingAuthority"],
34136
- message: "signingAuthority is required for signing-authority publication"
34137
- });
34138
- }
34139
- }
34140
- });
34141
- var PublishCredentialRefreshNotificationValidator2 = external_exports2.enum([
34142
- "queued",
34143
- "suppressed",
34144
- "not-applicable",
34145
- /** Publication succeeded, but the post-commit notification enqueue must be retried. */
34146
- "delivery-failed"
34147
- ]);
34148
- var PublishCredentialRefreshResultValidator2 = external_exports2.object({
34149
- refreshId: external_exports2.string().min(1),
34150
- version: external_exports2.number().int().positive(),
34151
- publishedAt: external_exports2.string().min(1),
34152
- notification: PublishCredentialRefreshNotificationValidator2
34153
- });
34154
- var CredentialRefreshVersionMetadataValidator2 = external_exports2.object({
34155
- version: external_exports2.number().int().positive(),
34156
- publishedAt: external_exports2.string().min(1),
34157
- effectiveAt: external_exports2.string().optional(),
34158
- etag: external_exports2.string().optional(),
34159
- signingMode: CredentialRefreshSigningModeValidator2.optional(),
34160
- updateSummary: external_exports2.string().optional()
34161
- });
34162
- var GetCredentialRefreshHistoryInputValidator2 = external_exports2.object({
34163
- refreshId: external_exports2.string().min(1),
34164
- cursor: external_exports2.string().optional(),
34165
- limit: external_exports2.number().int().positive().optional()
34166
- });
34167
- var GetCredentialRefreshHistoryResultValidator2 = external_exports2.object({
34168
- records: CredentialRefreshVersionMetadataValidator2.array(),
34169
- hasMore: external_exports2.boolean(),
34170
- cursor: external_exports2.string().optional()
34171
- });
34172
- var CredentialRefreshChallengeValidator2 = external_exports2.object({
34173
- challenge: external_exports2.string().min(1),
34174
- expiresAt: external_exports2.string().min(1),
34175
- domain: external_exports2.string().optional(),
34176
- scheme: external_exports2.literal("LearnCardDIDAuth").optional()
34177
- });
34178
- var PublicCredentialRefreshEnvelopeValidator2 = external_exports2.object({
34179
- format: external_exports2.literal("vc"),
34180
- credential: VCValidator2,
34181
- etag: external_exports2.string().optional()
34182
- });
34183
- var JweCredentialRefreshEnvelopeValidator2 = external_exports2.object({
34184
- format: external_exports2.literal("jwe"),
34185
- jwe: JWEValidator2,
34186
- etag: external_exports2.string().optional(),
34187
- /** Present on LearnCard-managed endpoints; optional for interoperable JWE services. */
34188
- version: external_exports2.number().int().positive().optional()
34189
- });
34190
- var CredentialRefreshResponseEnvelopeValidator2 = external_exports2.discriminatedUnion("format", [
34191
- PublicCredentialRefreshEnvelopeValidator2,
34192
- JweCredentialRefreshEnvelopeValidator2
34193
- ]);
34194
- var CredentialRefreshFailureCodeValidator2 = external_exports2.enum([
34195
- "UNAVAILABLE",
34196
- "TIMEOUT",
34197
- "UNSUPPORTED_SERVICE",
34198
- "UNAUTHORIZED",
34199
- "MALFORMED_RESPONSE",
34200
- "INVALID_PROOF",
34201
- "ISSUER_MISMATCH",
34202
- "ID_MISMATCH",
34203
- "ROLLBACK",
34204
- "REVOKED",
34205
- "UNSAFE_ENDPOINT"
34206
- ]);
34207
- var CredentialRefreshUpdatedResultValidator2 = external_exports2.object({
34208
- status: external_exports2.literal("updated"),
34209
- credential: VCValidator2,
34210
- etag: external_exports2.string().optional(),
34211
- managedVersion: external_exports2.number().int().positive().optional()
34212
- });
34213
- var CredentialRefreshUnchangedResultValidator2 = external_exports2.object({
34214
- status: external_exports2.literal("unchanged"),
34215
- checkedAt: external_exports2.string().min(1),
34216
- etag: external_exports2.string().optional()
34217
- });
34218
- var CredentialRefreshUnsupportedResultValidator2 = external_exports2.object({
34219
- status: external_exports2.literal("unsupported")
34220
- });
34221
- var CredentialRefreshFailedResultValidator2 = external_exports2.object({
34222
- status: external_exports2.literal("failed"),
34223
- code: CredentialRefreshFailureCodeValidator2,
34224
- retryable: external_exports2.boolean()
34225
- });
34226
- var CredentialRefreshResultValidator2 = external_exports2.discriminatedUnion("status", [
34227
- CredentialRefreshUpdatedResultValidator2,
34228
- CredentialRefreshUnchangedResultValidator2,
34229
- CredentialRefreshUnsupportedResultValidator2,
34230
- CredentialRefreshFailedResultValidator2
34231
- ]);
34232
34448
  }
34233
34449
  });
34234
34450
  var require_dist = __commonJS({
@@ -34524,6 +34740,18 @@ var ImageWithLoadingStateValdator = external_exports.object({
34524
34740
  });
34525
34741
  var import_types2 = __toESM(require_dist());
34526
34742
  var import_types22 = __toESM(require_dist());
34743
+ var MANAGED_REFRESH_TYPE_TERM = "LearnCardCredentialRefresh2026";
34744
+ var MANAGED_REFRESH_DID_AUTH_TERM = "LearnCardDIDAuth";
34745
+ var MANAGED_REFRESH_TYPE_IRI = "https://learncard.com/refresh#LearnCardCredentialRefresh2026";
34746
+ var MANAGED_REFRESH_AUTHORIZATION_IRI = "https://purl.imsglobal.org/spec/ob/v3p0#authorization";
34747
+ var MANAGED_REFRESH_DID_AUTH_IRI = "https://docs.learncard.com/definitions#LearnCardDIDAuth";
34748
+ var MANAGED_REFRESH_SERVICE_CONTEXT = {
34749
+ [MANAGED_REFRESH_TYPE_TERM]: MANAGED_REFRESH_TYPE_IRI,
34750
+ authorization: {
34751
+ "@id": MANAGED_REFRESH_AUTHORIZATION_IRI,
34752
+ "@context": { [MANAGED_REFRESH_DID_AUTH_TERM]: MANAGED_REFRESH_DID_AUTH_IRI }
34753
+ }
34754
+ };
34527
34755
  var _a4;
34528
34756
  var EnvironmentConfigurationError = (_a4 = class extends Error {
34529
34757
  constructor(message) {
@@ -34696,14 +34924,22 @@ var UnsignedVCValidator = external_exports.object({
34696
34924
  }).catchall(external_exports.any());
34697
34925
  var ProofValidator = external_exports.object({
34698
34926
  type: external_exports.string(),
34699
- created: external_exports.string(),
34927
+ created: external_exports.string().optional(),
34700
34928
  challenge: external_exports.string().optional(),
34701
34929
  domain: external_exports.string().optional(),
34702
34930
  nonce: external_exports.string().optional(),
34703
34931
  proofPurpose: external_exports.string(),
34704
34932
  verificationMethod: external_exports.string(),
34705
34933
  jws: external_exports.string().optional()
34706
- }).catchall(external_exports.any());
34934
+ }).catchall(external_exports.any()).superRefine((proof, ctx) => {
34935
+ if (proof.created === void 0 && (proof.type !== "DataIntegrityProof" || proof.cryptosuite !== "ecdsa-rdfc-2019")) {
34936
+ ctx.addIssue({
34937
+ code: "custom",
34938
+ path: ["created"],
34939
+ message: "created is required for this proof suite"
34940
+ });
34941
+ }
34942
+ });
34707
34943
  var VCValidator = UnsignedVCValidator.extend({
34708
34944
  proof: ProofValidator.or(ProofValidator.array())
34709
34945
  });
@@ -35138,21 +35374,219 @@ var StringQuery = external_exports.union([
35138
35374
  $or: BaseStringQuery.array()
35139
35375
  })
35140
35376
  ]);
35141
- var LCNProfileDisplayValidator = external_exports.object({
35142
- backgroundColor: external_exports.string().optional(),
35143
- backgroundImage: external_exports.string().optional(),
35144
- fadeBackgroundImage: external_exports.boolean().optional(),
35145
- repeatBackgroundImage: external_exports.boolean().optional(),
35146
- fontColor: external_exports.string().optional(),
35147
- accentColor: external_exports.string().optional(),
35148
- accentFontColor: external_exports.string().optional(),
35149
- idBackgroundImage: external_exports.string().optional(),
35150
- fadeIdBackgroundImage: external_exports.boolean().optional(),
35151
- idBackgroundColor: external_exports.string().optional(),
35152
- repeatIdBackgroundImage: external_exports.boolean().optional()
35153
- });
35154
- var ProfileVisibilityEnum = external_exports.enum(["public", "connections_only", "private"]);
35155
- var AllowConnectionRequestsEnum = external_exports.enum(["anyone", "invite_only"]);
35377
+ var LearnCardRefreshAuthorizationValidator = external_exports.object({ type: external_exports.literal("LearnCardDIDAuth") }).catchall(external_exports.any());
35378
+ var ManagedCredentialRefreshServiceValidator = external_exports.object({
35379
+ id: external_exports.string().min(1),
35380
+ type: external_exports.literal("LearnCardCredentialRefresh2026"),
35381
+ authorization: LearnCardRefreshAuthorizationValidator.optional()
35382
+ }).catchall(external_exports.any());
35383
+ var StandardCredentialRefreshServiceValidator = external_exports.object({
35384
+ id: external_exports.string().min(1),
35385
+ type: external_exports.literal("1EdTechCredentialRefresh")
35386
+ }).catchall(external_exports.any());
35387
+ var SupportedCredentialRefreshServiceValidator = external_exports.union([
35388
+ ManagedCredentialRefreshServiceValidator,
35389
+ StandardCredentialRefreshServiceValidator
35390
+ ]);
35391
+ var AllocateCredentialRefreshInputValidator = external_exports.object({
35392
+ holder: external_exports.object({
35393
+ profileId: external_exports.string().optional(),
35394
+ did: external_exports.string().min(1)
35395
+ }),
35396
+ credentialId: external_exports.string().min(1)
35397
+ });
35398
+ var AllocateCredentialRefreshResultValidator = external_exports.object({
35399
+ refreshId: external_exports.string().min(1),
35400
+ refreshService: ManagedCredentialRefreshServiceValidator.extend({
35401
+ authorization: LearnCardRefreshAuthorizationValidator
35402
+ })
35403
+ });
35404
+ var ManagedCredentialRefreshReceiptValidator = external_exports.object({
35405
+ refreshId: external_exports.string().min(1),
35406
+ refreshService: ManagedCredentialRefreshServiceValidator,
35407
+ credentialId: external_exports.string().min(1),
35408
+ issuerDid: external_exports.string().min(1),
35409
+ holderDid: external_exports.string().min(1),
35410
+ credentialStatus: CredentialStatusValidator.or(
35411
+ CredentialStatusValidator.array()
35412
+ ).optional()
35413
+ }).strip();
35414
+ var InboxCredentialRefreshReceiptValidator = ManagedCredentialRefreshReceiptValidator.omit(
35415
+ { holderDid: true }
35416
+ ).extend({ holderDid: external_exports.string().min(1).optional() });
35417
+ var CredentialRefreshSigningModeValidator = external_exports.enum(["issuer-signed", "signing-authority"]);
35418
+ var PublishCredentialRefreshBaseFields = {
35419
+ refreshId: external_exports.string().min(1),
35420
+ notifyHolder: external_exports.boolean().optional(),
35421
+ updateSummary: external_exports.string().optional(),
35422
+ idempotencyKey: external_exports.string().optional()
35423
+ };
35424
+ var PublishIssuerSignedRefreshValidator = external_exports.object({
35425
+ ...PublishCredentialRefreshBaseFields,
35426
+ mode: external_exports.literal("issuer-signed"),
35427
+ signedCredential: VCValidator
35428
+ });
35429
+ var PublishSigningAuthorityRefreshValidator = external_exports.object({
35430
+ ...PublishCredentialRefreshBaseFields,
35431
+ mode: external_exports.literal("signing-authority"),
35432
+ credential: UnsignedVCValidator,
35433
+ signingAuthority: external_exports.object({
35434
+ type: external_exports.string().min(1)
35435
+ }).catchall(external_exports.any())
35436
+ });
35437
+ var PublishCredentialRefreshInputValidator = external_exports.object({
35438
+ ...PublishCredentialRefreshBaseFields,
35439
+ mode: CredentialRefreshSigningModeValidator,
35440
+ signedCredential: VCValidator.optional(),
35441
+ credential: UnsignedVCValidator.optional(),
35442
+ signingAuthority: external_exports.object({
35443
+ type: external_exports.string().min(1)
35444
+ }).catchall(external_exports.any()).optional()
35445
+ }).superRefine((input, ctx) => {
35446
+ if (input.mode === "issuer-signed" && !input.signedCredential) {
35447
+ ctx.addIssue({
35448
+ code: "custom",
35449
+ path: ["signedCredential"],
35450
+ message: "signedCredential is required for issuer-signed publication"
35451
+ });
35452
+ }
35453
+ if (input.mode === "issuer-signed" && (input.credential !== void 0 || input.signingAuthority !== void 0)) {
35454
+ ctx.addIssue({
35455
+ code: "custom",
35456
+ path: ["mode"],
35457
+ message: "issuer-signed publication cannot include signing-authority fields"
35458
+ });
35459
+ }
35460
+ if (input.mode === "signing-authority") {
35461
+ if (input.signedCredential !== void 0) {
35462
+ ctx.addIssue({
35463
+ code: "custom",
35464
+ path: ["signedCredential"],
35465
+ message: "signing-authority publication cannot include signedCredential"
35466
+ });
35467
+ }
35468
+ if (!input.credential) {
35469
+ ctx.addIssue({
35470
+ code: "custom",
35471
+ path: ["credential"],
35472
+ message: "credential is required for signing-authority publication"
35473
+ });
35474
+ }
35475
+ if (!input.signingAuthority) {
35476
+ ctx.addIssue({
35477
+ code: "custom",
35478
+ path: ["signingAuthority"],
35479
+ message: "signingAuthority is required for signing-authority publication"
35480
+ });
35481
+ }
35482
+ }
35483
+ });
35484
+ var PublishCredentialRefreshNotificationValidator = external_exports.enum([
35485
+ "queued",
35486
+ "suppressed",
35487
+ "not-applicable",
35488
+ /** Publication succeeded, but the post-commit notification enqueue must be retried. */
35489
+ "delivery-failed"
35490
+ ]);
35491
+ var PublishCredentialRefreshResultValidator = external_exports.object({
35492
+ refreshId: external_exports.string().min(1),
35493
+ version: external_exports.number().int().positive(),
35494
+ publishedAt: external_exports.string().min(1),
35495
+ notification: PublishCredentialRefreshNotificationValidator
35496
+ });
35497
+ var CredentialRefreshVersionMetadataValidator = external_exports.object({
35498
+ version: external_exports.number().int().positive(),
35499
+ publishedAt: external_exports.string().min(1),
35500
+ effectiveAt: external_exports.string().optional(),
35501
+ etag: external_exports.string().optional(),
35502
+ signingMode: CredentialRefreshSigningModeValidator.optional(),
35503
+ updateSummary: external_exports.string().optional()
35504
+ });
35505
+ var GetCredentialRefreshHistoryInputValidator = external_exports.object({
35506
+ refreshId: external_exports.string().min(1),
35507
+ cursor: external_exports.string().optional(),
35508
+ limit: external_exports.number().int().positive().optional()
35509
+ });
35510
+ var GetCredentialRefreshHistoryResultValidator = external_exports.object({
35511
+ records: CredentialRefreshVersionMetadataValidator.array(),
35512
+ hasMore: external_exports.boolean(),
35513
+ cursor: external_exports.string().optional()
35514
+ });
35515
+ var CredentialRefreshChallengeValidator = external_exports.object({
35516
+ challenge: external_exports.string().min(1),
35517
+ expiresAt: external_exports.string().min(1),
35518
+ domain: external_exports.string().optional(),
35519
+ scheme: external_exports.literal("LearnCardDIDAuth").optional()
35520
+ });
35521
+ var PublicCredentialRefreshEnvelopeValidator = external_exports.object({
35522
+ format: external_exports.literal("vc"),
35523
+ credential: VCValidator,
35524
+ etag: external_exports.string().optional()
35525
+ });
35526
+ var JweCredentialRefreshEnvelopeValidator = external_exports.object({
35527
+ format: external_exports.literal("jwe"),
35528
+ jwe: JWEValidator,
35529
+ etag: external_exports.string().optional(),
35530
+ /** Present on LearnCard-managed endpoints; optional for interoperable JWE services. */
35531
+ version: external_exports.number().int().positive().optional()
35532
+ });
35533
+ var CredentialRefreshResponseEnvelopeValidator = external_exports.discriminatedUnion("format", [
35534
+ PublicCredentialRefreshEnvelopeValidator,
35535
+ JweCredentialRefreshEnvelopeValidator
35536
+ ]);
35537
+ var CredentialRefreshFailureCodeValidator = external_exports.enum([
35538
+ "UNAVAILABLE",
35539
+ "TIMEOUT",
35540
+ "UNSUPPORTED_SERVICE",
35541
+ "UNAUTHORIZED",
35542
+ "MALFORMED_RESPONSE",
35543
+ "INVALID_PROOF",
35544
+ "ISSUER_MISMATCH",
35545
+ "ID_MISMATCH",
35546
+ "ROLLBACK",
35547
+ "REVOKED",
35548
+ "UNSAFE_ENDPOINT"
35549
+ ]);
35550
+ var CredentialRefreshUpdatedResultValidator = external_exports.object({
35551
+ status: external_exports.literal("updated"),
35552
+ credential: VCValidator,
35553
+ etag: external_exports.string().optional(),
35554
+ managedVersion: external_exports.number().int().positive().optional()
35555
+ });
35556
+ var CredentialRefreshUnchangedResultValidator = external_exports.object({
35557
+ status: external_exports.literal("unchanged"),
35558
+ checkedAt: external_exports.string().min(1),
35559
+ etag: external_exports.string().optional()
35560
+ });
35561
+ var CredentialRefreshUnsupportedResultValidator = external_exports.object({
35562
+ status: external_exports.literal("unsupported")
35563
+ });
35564
+ var CredentialRefreshFailedResultValidator = external_exports.object({
35565
+ status: external_exports.literal("failed"),
35566
+ code: CredentialRefreshFailureCodeValidator,
35567
+ retryable: external_exports.boolean()
35568
+ });
35569
+ var CredentialRefreshResultValidator = external_exports.discriminatedUnion("status", [
35570
+ CredentialRefreshUpdatedResultValidator,
35571
+ CredentialRefreshUnchangedResultValidator,
35572
+ CredentialRefreshUnsupportedResultValidator,
35573
+ CredentialRefreshFailedResultValidator
35574
+ ]);
35575
+ var LCNProfileDisplayValidator = external_exports.object({
35576
+ backgroundColor: external_exports.string().optional(),
35577
+ backgroundImage: external_exports.string().optional(),
35578
+ fadeBackgroundImage: external_exports.boolean().optional(),
35579
+ repeatBackgroundImage: external_exports.boolean().optional(),
35580
+ fontColor: external_exports.string().optional(),
35581
+ accentColor: external_exports.string().optional(),
35582
+ accentFontColor: external_exports.string().optional(),
35583
+ idBackgroundImage: external_exports.string().optional(),
35584
+ fadeIdBackgroundImage: external_exports.boolean().optional(),
35585
+ idBackgroundColor: external_exports.string().optional(),
35586
+ repeatIdBackgroundImage: external_exports.boolean().optional()
35587
+ });
35588
+ var ProfileVisibilityEnum = external_exports.enum(["public", "connections_only", "private"]);
35589
+ var AllowConnectionRequestsEnum = external_exports.enum(["anyone", "invite_only"]);
35156
35590
  var LCNProfileValidator = external_exports.object({
35157
35591
  profileId: external_exports.string().min(3).max(40).describe("Unique, URL-safe identifier for the profile."),
35158
35592
  displayName: external_exports.string().default("").describe("Human-readable display name for the profile."),
@@ -35473,7 +35907,13 @@ var SendBoostInputValidator = external_exports.object({
35473
35907
  "Options for email/phone recipients (Universal Inbox)"
35474
35908
  ),
35475
35909
  templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
35476
- integrationId: external_exports.string().optional().describe("Integration ID for activity tracking")
35910
+ integrationId: external_exports.string().optional().describe("Integration ID for activity tracking"),
35911
+ refresh: external_exports.boolean().optional().describe(
35912
+ "Request managed credential refresh for this send. Profile/DID recipients use immediate issuance; email/phone recipients use deferred Universal Inbox signing and bind the holder at claim."
35913
+ ),
35914
+ idempotencyKey: external_exports.string().min(1).max(200).optional().describe(
35915
+ "Caller-chosen key that makes a managed refresh send (refresh: true) safe to retry as a whole: retries with the same key reuse the same boost, refresh allocation and result. Reusing a key for a different request is rejected. With signedCredential, requires prior tRPC prepareRefreshableSend; direct REST callers omit the key and retry the exact signed credential and templateUri."
35916
+ )
35477
35917
  }).refine((data) => data.templateUri || data.template || data.signedCredential, {
35478
35918
  message: "Either templateUri, template, or signedCredential must be provided.",
35479
35919
  path: ["templateUri"]
@@ -35488,8 +35928,12 @@ var SendBoostInputValidator = external_exports.object({
35488
35928
  message: "guardianEmail must differ from recipient (self-approval not allowed)",
35489
35929
  path: ["options", "guardianEmail"]
35490
35930
  }
35491
- );
35931
+ ).refine((data) => !data.idempotencyKey || data.refresh === true, {
35932
+ message: "idempotencyKey is only supported with refresh: true.",
35933
+ path: ["idempotencyKey"]
35934
+ });
35492
35935
  var SendInboxResponseValidator = external_exports.object({
35936
+ refresh: InboxCredentialRefreshReceiptValidator.optional(),
35493
35937
  issuanceId: external_exports.string(),
35494
35938
  status: external_exports.enum(["PENDING", "ISSUED", "EXPIRED", "DELIVERED", "CLAIMED"]),
35495
35939
  claimUrl: external_exports.string().url().optional().describe("Present when suppressDelivery=true"),
@@ -35504,8 +35948,34 @@ var SendBoostResponseValidator = external_exports.object({
35504
35948
  activityId: external_exports.string().describe("Links to the activity lifecycle for this issuance"),
35505
35949
  inbox: SendInboxResponseValidator.optional().describe(
35506
35950
  "Present when sent via email/phone (Universal Inbox)"
35951
+ ),
35952
+ refresh: ManagedCredentialRefreshReceiptValidator.optional().describe(
35953
+ "Present when managed refresh was requested: issuance metadata the issuer keeps to publish future updates"
35507
35954
  )
35508
35955
  });
35956
+ var PrepareRefreshableSendInputValidator = external_exports.object({
35957
+ recipient: external_exports.string(),
35958
+ templateUri: external_exports.string().optional(),
35959
+ template: SendBoostTemplateValidator.optional(),
35960
+ contractUri: external_exports.string().optional(),
35961
+ templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
35962
+ integrationId: external_exports.string().optional(),
35963
+ /** Credential ID to allocate for; generated server-side when omitted. */
35964
+ credentialId: external_exports.string().min(1).optional(),
35965
+ idempotencyKey: external_exports.string().min(1).max(200).optional()
35966
+ }).refine((data) => Boolean(data.templateUri) !== Boolean(data.template), {
35967
+ message: "Provide exactly one of templateUri or template."
35968
+ });
35969
+ var PrepareRefreshableSendResultValidator = external_exports.object({
35970
+ boostUri: external_exports.string(),
35971
+ credentialId: external_exports.string(),
35972
+ refreshId: external_exports.string(),
35973
+ refreshService: ManagedCredentialRefreshServiceValidator,
35974
+ /** The DID to use as credentialSubject.id (recipient DID, or the profile's did:web). */
35975
+ holderDid: external_exports.string(),
35976
+ /** Present when this idempotencyKey already completed: return it without signing. */
35977
+ completed: SendBoostResponseValidator.optional()
35978
+ });
35509
35979
  var SendInputValidator = external_exports.discriminatedUnion("type", [SendBoostInputValidator]);
35510
35980
  var SendResponseValidator = external_exports.discriminatedUnion("type", [SendBoostResponseValidator]);
35511
35981
  var ConsentFlowTermsStatusValidator = external_exports.enum(["live", "stale", "withdrawn"]);
@@ -35581,15 +36051,6 @@ var ConsentFlowContractDataValidator = external_exports.object({
35581
36051
  var PaginatedConsentFlowDataValidator = PaginationResponseValidator.extend({
35582
36052
  records: ConsentFlowContractDataValidator.array()
35583
36053
  });
35584
- var ConsentFlowContractDataForDidValidator = external_exports.object({
35585
- credentials: external_exports.object({ category: external_exports.string(), uri: external_exports.string() }).array(),
35586
- personal: external_exports.record(external_exports.string(), external_exports.string()).default({}),
35587
- date: external_exports.string(),
35588
- contractUri: external_exports.string()
35589
- });
35590
- var PaginatedConsentFlowDataForDidValidator = PaginationResponseValidator.extend({
35591
- records: ConsentFlowContractDataForDidValidator.array()
35592
- });
35593
36054
  var ConsentFlowTermValidator = external_exports.object({
35594
36055
  sharing: external_exports.boolean().optional(),
35595
36056
  shared: external_exports.string().array().optional(),
@@ -35623,6 +36084,34 @@ var PaginatedConsentFlowTermsValidator = PaginationResponseValidator.extend({
35623
36084
  status: ConsentFlowTermsStatusValidator
35624
36085
  }).array()
35625
36086
  });
36087
+ var ConsentFlowGuardianApprovalValidator = external_exports.object({
36088
+ guardianProfileId: external_exports.string(),
36089
+ guardianDid: external_exports.string(),
36090
+ approvedAt: external_exports.string().datetime(),
36091
+ contractUpdatedAt: external_exports.string()
36092
+ });
36093
+ var ConsentFlowContractDataForDidValidator = external_exports.object({
36094
+ credentials: external_exports.object({ category: external_exports.string(), uri: external_exports.string() }).array(),
36095
+ personal: external_exports.record(external_exports.string(), external_exports.string()).default({}),
36096
+ date: external_exports.string(),
36097
+ createdAt: external_exports.string().optional(),
36098
+ contractUpdatedAt: external_exports.string(),
36099
+ contractExpiresAt: external_exports.string().optional(),
36100
+ reasonForAccessing: external_exports.string().optional(),
36101
+ guardian: external_exports.object({
36102
+ required: external_exports.boolean(),
36103
+ approved: external_exports.boolean(),
36104
+ approval: ConsentFlowGuardianApprovalValidator.optional()
36105
+ }),
36106
+ contractUri: external_exports.string(),
36107
+ termsUri: external_exports.string(),
36108
+ status: ConsentFlowTermsStatusValidator,
36109
+ expiresAt: external_exports.string().optional(),
36110
+ terms: ConsentFlowTermsValidator
36111
+ });
36112
+ var PaginatedConsentFlowDataForDidValidator = PaginationResponseValidator.extend({
36113
+ records: ConsentFlowContractDataForDidValidator.array()
36114
+ });
35626
36115
  var ConsentFlowContractQueryValidator = external_exports.object({
35627
36116
  read: external_exports.object({
35628
36117
  anonymize: external_exports.boolean().optional(),
@@ -35683,6 +36172,7 @@ var ConsentFlowTransactionValidator = external_exports.object({
35683
36172
  expiresAt: external_exports.string().optional(),
35684
36173
  oneTime: external_exports.boolean().optional(),
35685
36174
  terms: ConsentFlowTermsValidator.optional(),
36175
+ guardianApproval: ConsentFlowGuardianApprovalValidator.optional(),
35686
36176
  id: external_exports.string(),
35687
36177
  action: ConsentFlowTransactionActionValidator,
35688
36178
  date: external_exports.string(),
@@ -35816,6 +36306,7 @@ var AuthGrantValidator = external_exports.object({
35816
36306
  }, "error")
35817
36307
  }),
35818
36308
  scope: external_exports.string(),
36309
+ actAs: external_exports.string().optional(),
35819
36310
  createdAt: external_exports.iso.datetime({ error: "createdAt must be a valid ISO 8601 datetime string" }),
35820
36311
  expiresAt: external_exports.iso.datetime({ error: "expiresAt must be a valid ISO 8601 datetime string" }).nullish().optional()
35821
36312
  });
@@ -35887,6 +36378,8 @@ var CreateContactMethodSessionResponseValidator = external_exports.object({
35887
36378
  sessionJwt: external_exports.string()
35888
36379
  });
35889
36380
  var InboxCredentialValidator = external_exports.object({
36381
+ refresh: InboxCredentialRefreshReceiptValidator.optional(),
36382
+ refreshId: external_exports.string().optional(),
35890
36383
  id: external_exports.string(),
35891
36384
  credential: external_exports.string().optional(),
35892
36385
  isSigned: external_exports.boolean(),
@@ -35941,12 +36434,19 @@ var IssueInboxCredentialValidator = external_exports.object({
35941
36434
  templateUri: external_exports.string().optional().describe(
35942
36435
  "URI of a boost template to use for issuance. The boost credential will be resolved and used. Mutually exclusive with credential field."
35943
36436
  ),
36437
+ refresh: external_exports.boolean().optional().describe(
36438
+ "Allocate managed refresh before signing. Requires unsigned content and a registered signing authority; binds the holder on claim."
36439
+ ),
36440
+ idempotencyKey: external_exports.string().min(1).max(200).optional(),
35944
36441
  // === OPTIONAL FEATURES ===
35945
36442
  // Add major, distinct features at the top level.
35946
36443
  //consentRequest: ConsentRequestValidator.optional(),
35947
36444
  // === PROCESS CONFIGURATION (Optional) ===
35948
36445
  // HOW should this issuance be handled?
35949
36446
  configuration: external_exports.object({
36447
+ guardianEmail: external_exports.string().email().optional().describe(
36448
+ "Require approval from this guardian before the recipient can claim. Must differ from the recipient email."
36449
+ ),
35950
36450
  signingAuthority: IssueInboxSigningAuthorityValidator.optional().describe(
35951
36451
  "The signing authority to use for the credential. If not provided, the users default signing authority will be used if the credential is not signed."
35952
36452
  ),
@@ -36000,17 +36500,130 @@ var IssueInboxCredentialValidator = external_exports.object({
36000
36500
  }).optional().describe(
36001
36501
  "Configuration for the credential issuance. If not provided, the default configuration will be used."
36002
36502
  )
36503
+ }).refine((data) => !data.idempotencyKey || data.refresh === true, {
36504
+ message: "idempotencyKey requires refresh: true."
36003
36505
  }).refine((data) => data.credential || data.templateUri, {
36004
36506
  message: "Either credential or templateUri must be provided.",
36005
36507
  path: ["credential"]
36006
- });
36508
+ }).refine(
36509
+ (data) => !data.configuration?.guardianEmail || data.recipient.type !== "email" || data.configuration.guardianEmail.toLowerCase() !== data.recipient.value.toLowerCase(),
36510
+ {
36511
+ message: "guardianEmail must differ from recipient (self-approval not allowed)",
36512
+ path: ["configuration", "guardianEmail"]
36513
+ }
36514
+ );
36007
36515
  var IssueInboxCredentialResponseValidator = external_exports.object({
36516
+ refresh: InboxCredentialRefreshReceiptValidator.optional(),
36008
36517
  issuanceId: external_exports.string(),
36009
36518
  status: LCNInboxStatusEnumValidator,
36010
36519
  recipient: ContactMethodQueryValidator,
36011
36520
  claimUrl: external_exports.string().url().optional(),
36012
36521
  recipientDid: external_exports.string().optional()
36013
36522
  });
36523
+ var InboxBatchConfigurationValidator = IssueInboxCredentialValidator.shape.configuration.unwrap().extend({
36524
+ refresh: IssueInboxCredentialValidator.shape.refresh.describe(
36525
+ "Enable managed refresh by default. An item configuration.refresh overrides this value, including false."
36526
+ ),
36527
+ delivery: IssueInboxCredentialValidator.shape.configuration.unwrap().shape.delivery.unwrap().extend({ suppress: external_exports.boolean().optional() }).optional()
36528
+ });
36529
+ var InboxBatchItemConfigurationValidator = InboxBatchConfigurationValidator.extend({
36530
+ guardianEmail: InboxBatchConfigurationValidator.shape.guardianEmail.nullable().describe(
36531
+ "Require guardian approval, or set null to clear a batch-level guardianEmail for this item."
36532
+ )
36533
+ });
36534
+ var IssueInboxCredentialBatchItemValidator = external_exports.object({
36535
+ ...IssueInboxCredentialValidator.shape,
36536
+ configuration: InboxBatchItemConfigurationValidator.optional(),
36537
+ idempotencyKey: external_exports.string().max(256).optional()
36538
+ }).refine((data) => data.credential || data.templateUri, {
36539
+ message: "Either credential or templateUri must be provided.",
36540
+ path: ["credential"]
36541
+ }).describe(
36542
+ "One issuance: provide credential or templateUri. Invalid input is rejected at submission with its item index."
36543
+ );
36544
+ var IssueInboxCredentialBatchValidator = external_exports.object({
36545
+ requestId: external_exports.string().min(1).max(256).optional(),
36546
+ items: external_exports.array(IssueInboxCredentialBatchItemValidator).min(1).max(100),
36547
+ configuration: InboxBatchConfigurationValidator.optional()
36548
+ }).superRefine((batch, ctx) => {
36549
+ batch.items.forEach((item, index) => {
36550
+ const itemGuardian = item.configuration?.guardianEmail;
36551
+ const guardian = itemGuardian === null ? void 0 : itemGuardian ?? batch.configuration?.guardianEmail;
36552
+ if (guardian && item.recipient.type === "email" && guardian.toLowerCase() === item.recipient.value.toLowerCase()) {
36553
+ ctx.addIssue({
36554
+ code: "custom",
36555
+ path: ["items", index, "configuration", "guardianEmail"],
36556
+ message: "guardianEmail must differ from recipient (self-approval not allowed)"
36557
+ });
36558
+ }
36559
+ });
36560
+ });
36561
+ var InboxBatchErrorReasonValidator = external_exports.enum([
36562
+ "DUPLICATE_KEY",
36563
+ "IDEMPOTENCY_MISMATCH",
36564
+ "IN_PROGRESS",
36565
+ "UNCONFIRMED"
36566
+ ]);
36567
+ var IssueInboxCredentialBatchItemResultValidator = external_exports.discriminatedUnion("success", [
36568
+ IssueInboxCredentialResponseValidator.extend({
36569
+ success: external_exports.literal(true),
36570
+ index: external_exports.number().int().nonnegative(),
36571
+ deduplicated: external_exports.boolean().optional(),
36572
+ guardianStatus: GuardianStatusValidator.optional(),
36573
+ idempotencyKey: external_exports.string().optional()
36574
+ }),
36575
+ external_exports.object({
36576
+ success: external_exports.literal(false),
36577
+ index: external_exports.number().int().nonnegative(),
36578
+ idempotencyKey: external_exports.string().optional(),
36579
+ recipient: ContactMethodQueryValidator.optional(),
36580
+ error: external_exports.object({
36581
+ code: external_exports.string(),
36582
+ message: external_exports.string(),
36583
+ reason: InboxBatchErrorReasonValidator.optional()
36584
+ }),
36585
+ issuanceId: external_exports.string().optional().describe(
36586
+ "Present when issuance completed but replay storage could not be confirmed. Reconcile this issuance; do not issue again with a new key."
36587
+ ),
36588
+ claimUrl: external_exports.string().url().optional().describe(
36589
+ "Claim URL of the completed issuance, if available, when replay storage could not be confirmed."
36590
+ )
36591
+ })
36592
+ ]);
36593
+ var IssueInboxCredentialBatchResponseValidator = external_exports.object({
36594
+ results: external_exports.array(IssueInboxCredentialBatchItemResultValidator),
36595
+ summary: external_exports.object({
36596
+ total: external_exports.number(),
36597
+ succeeded: external_exports.number(),
36598
+ failed: external_exports.number(),
36599
+ deduplicated: external_exports.number()
36600
+ })
36601
+ });
36602
+ var InboxBatchReceiptValidator = external_exports.object({
36603
+ batchId: external_exports.string(),
36604
+ status: external_exports.enum(["QUEUED", "PROCESSING", "COMPLETED", "NEEDS_RECONCILIATION"]),
36605
+ createdAt: external_exports.string()
36606
+ });
36607
+ var InboxBatchStatusValidator = external_exports.object({
36608
+ batchId: external_exports.string(),
36609
+ createdAt: external_exports.string(),
36610
+ done: external_exports.boolean().describe(
36611
+ "True when no queued or processing items remain, including unconfirmed outcomes."
36612
+ ),
36613
+ status: external_exports.enum(["QUEUED", "PROCESSING", "COMPLETED", "NEEDS_RECONCILIATION"]),
36614
+ items: external_exports.array(
36615
+ external_exports.object({
36616
+ index: external_exports.number().int().nonnegative(),
36617
+ state: external_exports.enum(["QUEUED", "PROCESSING", "COMPLETED", "NEEDS_RECONCILIATION"]),
36618
+ result: IssueInboxCredentialBatchItemResultValidator.optional()
36619
+ })
36620
+ ),
36621
+ summary: IssueInboxCredentialBatchResponseValidator.shape.summary.extend({
36622
+ completed: external_exports.number(),
36623
+ pending: external_exports.number(),
36624
+ unconfirmed: external_exports.number()
36625
+ })
36626
+ });
36014
36627
  var CredentialNameRefValidator = external_exports.object({ name: external_exports.string() }).passthrough();
36015
36628
  var ClaimInboxCredentialValidator = external_exports.object({
36016
36629
  credential: VCValidator.or(VPValidator).or(UnsignedVCValidator).or(CredentialNameRefValidator).describe("The credential to issue, or a { name } reference to resolve a boost template."),
@@ -36496,6 +37109,7 @@ var CredentialActivityValidator = external_exports.object({
36496
37109
  eventType: CredentialActivityEventTypeValidator,
36497
37110
  timestamp: external_exports.string(),
36498
37111
  actorProfileId: external_exports.string().optional(),
37112
+ onBehalfOf: external_exports.string().optional(),
36499
37113
  recipientType: CredentialActivityRecipientTypeValidator,
36500
37114
  recipientIdentifier: external_exports.string(),
36501
37115
  boostUri: external_exports.string().optional(),
@@ -36645,191 +37259,6 @@ var inAppMessagesFlagValidator = external_exports.object({
36645
37259
  version: external_exports.number().default(1),
36646
37260
  messages: external_exports.array(inAppMessageValidator).default([])
36647
37261
  }).passthrough();
36648
- var LearnCardRefreshAuthorizationValidator = external_exports.object({ type: external_exports.literal("LearnCardDIDAuth") }).catchall(external_exports.any());
36649
- var ManagedCredentialRefreshServiceValidator = external_exports.object({
36650
- id: external_exports.string().min(1),
36651
- type: external_exports.literal("LearnCardCredentialRefresh2026"),
36652
- authorization: LearnCardRefreshAuthorizationValidator.optional()
36653
- }).catchall(external_exports.any());
36654
- var StandardCredentialRefreshServiceValidator = external_exports.object({
36655
- id: external_exports.string().min(1),
36656
- type: external_exports.literal("1EdTechCredentialRefresh")
36657
- }).catchall(external_exports.any());
36658
- var SupportedCredentialRefreshServiceValidator = external_exports.union([
36659
- ManagedCredentialRefreshServiceValidator,
36660
- StandardCredentialRefreshServiceValidator
36661
- ]);
36662
- var AllocateCredentialRefreshInputValidator = external_exports.object({
36663
- holder: external_exports.object({
36664
- profileId: external_exports.string().optional(),
36665
- did: external_exports.string().min(1)
36666
- }),
36667
- credentialId: external_exports.string().min(1)
36668
- });
36669
- var AllocateCredentialRefreshResultValidator = external_exports.object({
36670
- refreshId: external_exports.string().min(1),
36671
- refreshService: ManagedCredentialRefreshServiceValidator.extend({
36672
- authorization: LearnCardRefreshAuthorizationValidator
36673
- })
36674
- });
36675
- var CredentialRefreshSigningModeValidator = external_exports.enum(["issuer-signed", "signing-authority"]);
36676
- var PublishCredentialRefreshBaseFields = {
36677
- refreshId: external_exports.string().min(1),
36678
- notifyHolder: external_exports.boolean().optional(),
36679
- updateSummary: external_exports.string().optional(),
36680
- idempotencyKey: external_exports.string().optional()
36681
- };
36682
- var PublishIssuerSignedRefreshValidator = external_exports.object({
36683
- ...PublishCredentialRefreshBaseFields,
36684
- mode: external_exports.literal("issuer-signed"),
36685
- signedCredential: VCValidator
36686
- });
36687
- var PublishSigningAuthorityRefreshValidator = external_exports.object({
36688
- ...PublishCredentialRefreshBaseFields,
36689
- mode: external_exports.literal("signing-authority"),
36690
- credential: UnsignedVCValidator,
36691
- signingAuthority: external_exports.object({
36692
- type: external_exports.string().min(1)
36693
- }).catchall(external_exports.any())
36694
- });
36695
- var PublishCredentialRefreshInputValidator = external_exports.object({
36696
- ...PublishCredentialRefreshBaseFields,
36697
- mode: CredentialRefreshSigningModeValidator,
36698
- signedCredential: VCValidator.optional(),
36699
- credential: UnsignedVCValidator.optional(),
36700
- signingAuthority: external_exports.object({
36701
- type: external_exports.string().min(1)
36702
- }).catchall(external_exports.any()).optional()
36703
- }).superRefine((input, ctx) => {
36704
- if (input.mode === "issuer-signed" && !input.signedCredential) {
36705
- ctx.addIssue({
36706
- code: "custom",
36707
- path: ["signedCredential"],
36708
- message: "signedCredential is required for issuer-signed publication"
36709
- });
36710
- }
36711
- if (input.mode === "issuer-signed" && (input.credential !== void 0 || input.signingAuthority !== void 0)) {
36712
- ctx.addIssue({
36713
- code: "custom",
36714
- path: ["mode"],
36715
- message: "issuer-signed publication cannot include signing-authority fields"
36716
- });
36717
- }
36718
- if (input.mode === "signing-authority") {
36719
- if (input.signedCredential !== void 0) {
36720
- ctx.addIssue({
36721
- code: "custom",
36722
- path: ["signedCredential"],
36723
- message: "signing-authority publication cannot include signedCredential"
36724
- });
36725
- }
36726
- if (!input.credential) {
36727
- ctx.addIssue({
36728
- code: "custom",
36729
- path: ["credential"],
36730
- message: "credential is required for signing-authority publication"
36731
- });
36732
- }
36733
- if (!input.signingAuthority) {
36734
- ctx.addIssue({
36735
- code: "custom",
36736
- path: ["signingAuthority"],
36737
- message: "signingAuthority is required for signing-authority publication"
36738
- });
36739
- }
36740
- }
36741
- });
36742
- var PublishCredentialRefreshNotificationValidator = external_exports.enum([
36743
- "queued",
36744
- "suppressed",
36745
- "not-applicable",
36746
- /** Publication succeeded, but the post-commit notification enqueue must be retried. */
36747
- "delivery-failed"
36748
- ]);
36749
- var PublishCredentialRefreshResultValidator = external_exports.object({
36750
- refreshId: external_exports.string().min(1),
36751
- version: external_exports.number().int().positive(),
36752
- publishedAt: external_exports.string().min(1),
36753
- notification: PublishCredentialRefreshNotificationValidator
36754
- });
36755
- var CredentialRefreshVersionMetadataValidator = external_exports.object({
36756
- version: external_exports.number().int().positive(),
36757
- publishedAt: external_exports.string().min(1),
36758
- effectiveAt: external_exports.string().optional(),
36759
- etag: external_exports.string().optional(),
36760
- signingMode: CredentialRefreshSigningModeValidator.optional(),
36761
- updateSummary: external_exports.string().optional()
36762
- });
36763
- var GetCredentialRefreshHistoryInputValidator = external_exports.object({
36764
- refreshId: external_exports.string().min(1),
36765
- cursor: external_exports.string().optional(),
36766
- limit: external_exports.number().int().positive().optional()
36767
- });
36768
- var GetCredentialRefreshHistoryResultValidator = external_exports.object({
36769
- records: CredentialRefreshVersionMetadataValidator.array(),
36770
- hasMore: external_exports.boolean(),
36771
- cursor: external_exports.string().optional()
36772
- });
36773
- var CredentialRefreshChallengeValidator = external_exports.object({
36774
- challenge: external_exports.string().min(1),
36775
- expiresAt: external_exports.string().min(1),
36776
- domain: external_exports.string().optional(),
36777
- scheme: external_exports.literal("LearnCardDIDAuth").optional()
36778
- });
36779
- var PublicCredentialRefreshEnvelopeValidator = external_exports.object({
36780
- format: external_exports.literal("vc"),
36781
- credential: VCValidator,
36782
- etag: external_exports.string().optional()
36783
- });
36784
- var JweCredentialRefreshEnvelopeValidator = external_exports.object({
36785
- format: external_exports.literal("jwe"),
36786
- jwe: JWEValidator,
36787
- etag: external_exports.string().optional(),
36788
- /** Present on LearnCard-managed endpoints; optional for interoperable JWE services. */
36789
- version: external_exports.number().int().positive().optional()
36790
- });
36791
- var CredentialRefreshResponseEnvelopeValidator = external_exports.discriminatedUnion("format", [
36792
- PublicCredentialRefreshEnvelopeValidator,
36793
- JweCredentialRefreshEnvelopeValidator
36794
- ]);
36795
- var CredentialRefreshFailureCodeValidator = external_exports.enum([
36796
- "UNAVAILABLE",
36797
- "TIMEOUT",
36798
- "UNSUPPORTED_SERVICE",
36799
- "UNAUTHORIZED",
36800
- "MALFORMED_RESPONSE",
36801
- "INVALID_PROOF",
36802
- "ISSUER_MISMATCH",
36803
- "ID_MISMATCH",
36804
- "ROLLBACK",
36805
- "REVOKED",
36806
- "UNSAFE_ENDPOINT"
36807
- ]);
36808
- var CredentialRefreshUpdatedResultValidator = external_exports.object({
36809
- status: external_exports.literal("updated"),
36810
- credential: VCValidator,
36811
- etag: external_exports.string().optional(),
36812
- managedVersion: external_exports.number().int().positive().optional()
36813
- });
36814
- var CredentialRefreshUnchangedResultValidator = external_exports.object({
36815
- status: external_exports.literal("unchanged"),
36816
- checkedAt: external_exports.string().min(1),
36817
- etag: external_exports.string().optional()
36818
- });
36819
- var CredentialRefreshUnsupportedResultValidator = external_exports.object({
36820
- status: external_exports.literal("unsupported")
36821
- });
36822
- var CredentialRefreshFailedResultValidator = external_exports.object({
36823
- status: external_exports.literal("failed"),
36824
- code: CredentialRefreshFailureCodeValidator,
36825
- retryable: external_exports.boolean()
36826
- });
36827
- var CredentialRefreshResultValidator = external_exports.discriminatedUnion("status", [
36828
- CredentialRefreshUpdatedResultValidator,
36829
- CredentialRefreshUnchangedResultValidator,
36830
- CredentialRefreshUnsupportedResultValidator,
36831
- CredentialRefreshFailedResultValidator
36832
- ]);
36833
37262
 
36834
37263
  // src/read.ts
36835
37264
  var isTemplateRenderMethod = /* @__PURE__ */ __name((rm) => TemplateRenderMethodValidator.safeParse(rm).success, "isTemplateRenderMethod");