@learncard/helpers 1.7.2 → 1.8.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.
@@ -58,6 +58,7 @@ var require_types_cjs_development = __commonJS({
58
58
  var index_exports = {};
59
59
  __export2(index_exports, {
60
60
  ACT_AS_HEADER: /* @__PURE__ */ __name(() => ACT_AS_HEADER, "ACT_AS_HEADER"),
61
+ AIPassportCredentialRecordValidator: /* @__PURE__ */ __name(() => AIPassportCredentialRecordValidator, "AIPassportCredentialRecordValidator"),
61
62
  AUTH_GRANT_AUDIENCE_DOMAIN_PREFIX: /* @__PURE__ */ __name(() => AUTH_GRANT_AUDIENCE_DOMAIN_PREFIX, "AUTH_GRANT_AUDIENCE_DOMAIN_PREFIX"),
62
63
  AchievementCredentialValidator: /* @__PURE__ */ __name(() => AchievementCredentialValidator, "AchievementCredentialValidator"),
63
64
  AchievementCriteriaValidator: /* @__PURE__ */ __name(() => AchievementCriteriaValidator, "AchievementCriteriaValidator"),
@@ -69,6 +70,8 @@ var require_types_cjs_development = __commonJS({
69
70
  AddTagInputValidator: /* @__PURE__ */ __name(() => AddTagInputValidator, "AddTagInputValidator"),
70
71
  AddressValidator: /* @__PURE__ */ __name(() => AddressValidator, "AddressValidator"),
71
72
  AgeRatingValidator: /* @__PURE__ */ __name(() => AgeRatingValidator, "AgeRatingValidator"),
73
+ AiSessionMode: /* @__PURE__ */ __name(() => AiSessionMode, "AiSessionMode"),
74
+ AiSessionModeValidator: /* @__PURE__ */ __name(() => AiSessionModeValidator, "AiSessionModeValidator"),
72
75
  AlignmentTargetTypeValidator: /* @__PURE__ */ __name(() => AlignmentTargetTypeValidator, "AlignmentTargetTypeValidator"),
73
76
  AlignmentValidator: /* @__PURE__ */ __name(() => AlignmentValidator, "AlignmentValidator"),
74
77
  AllocateCredentialRefreshInputValidator: /* @__PURE__ */ __name(() => AllocateCredentialRefreshInputValidator, "AllocateCredentialRefreshInputValidator"),
@@ -76,6 +79,7 @@ var require_types_cjs_development = __commonJS({
76
79
  AllocateCredentialStatusInputValidator: /* @__PURE__ */ __name(() => AllocateCredentialStatusInputValidator, "AllocateCredentialStatusInputValidator"),
77
80
  AllocatedBitstringStatusListEntryValidator: /* @__PURE__ */ __name(() => AllocatedBitstringStatusListEntryValidator, "AllocatedBitstringStatusListEntryValidator"),
78
81
  AllowConnectionRequestsEnum: /* @__PURE__ */ __name(() => AllowConnectionRequestsEnum, "AllowConnectionRequestsEnum"),
82
+ AnnouncementPreferencesValidator: /* @__PURE__ */ __name(() => AnnouncementPreferencesValidator, "AnnouncementPreferencesValidator"),
79
83
  AppBoostValidator: /* @__PURE__ */ __name(() => AppBoostValidator, "AppBoostValidator"),
80
84
  AppEventInputValidator: /* @__PURE__ */ __name(() => AppEventInputValidator, "AppEventInputValidator"),
81
85
  AppEventResponseValidator: /* @__PURE__ */ __name(() => AppEventResponseValidator, "AppEventResponseValidator"),
@@ -91,12 +95,15 @@ var require_types_cjs_development = __commonJS({
91
95
  AppStoreListingSubmitterValidator: /* @__PURE__ */ __name(() => AppStoreListingSubmitterValidator, "AppStoreListingSubmitterValidator"),
92
96
  AppStoreListingUpdateValidator: /* @__PURE__ */ __name(() => AppStoreListingUpdateValidator, "AppStoreListingUpdateValidator"),
93
97
  AppStoreListingValidator: /* @__PURE__ */ __name(() => AppStoreListingValidator, "AppStoreListingValidator"),
98
+ ArtifactSuggestionValidator: /* @__PURE__ */ __name(() => ArtifactSuggestionValidator, "ArtifactSuggestionValidator"),
94
99
  AssociationTypeValidator: /* @__PURE__ */ __name(() => AssociationTypeValidator, "AssociationTypeValidator"),
95
100
  AssociationValidator: /* @__PURE__ */ __name(() => AssociationValidator, "AssociationValidator"),
101
+ AttachCredentialRefreshStatusEntriesInputValidator: /* @__PURE__ */ __name(() => AttachCredentialRefreshStatusEntriesInputValidator, "AttachCredentialRefreshStatusEntriesInputValidator"),
96
102
  AuthGrantQueryValidator: /* @__PURE__ */ __name(() => AuthGrantQueryValidator, "AuthGrantQueryValidator"),
97
103
  AuthGrantStatusValidator: /* @__PURE__ */ __name(() => AuthGrantStatusValidator, "AuthGrantStatusValidator"),
98
104
  AuthGrantValidator: /* @__PURE__ */ __name(() => AuthGrantValidator, "AuthGrantValidator"),
99
105
  AuthSessionError: /* @__PURE__ */ __name(() => AuthSessionError, "AuthSessionError"),
106
+ AuthenticatedMessageValidator: /* @__PURE__ */ __name(() => AuthenticatedMessageValidator, "AuthenticatedMessageValidator"),
100
107
  AutoBoostConfigValidator: /* @__PURE__ */ __name(() => AutoBoostConfigValidator, "AutoBoostConfigValidator"),
101
108
  BITSTRING_STATUS_PURPOSES: /* @__PURE__ */ __name(() => BITSTRING_STATUS_PURPOSES, "BITSTRING_STATUS_PURPOSES"),
102
109
  BitstringStatusListCredentialSubjectValidator: /* @__PURE__ */ __name(() => BitstringStatusListCredentialSubjectValidator, "BitstringStatusListCredentialSubjectValidator"),
@@ -108,19 +115,26 @@ var require_types_cjs_development = __commonJS({
108
115
  BoostRecipientValidator: /* @__PURE__ */ __name(() => BoostRecipientValidator, "BoostRecipientValidator"),
109
116
  BoostRecipientWithChildrenValidator: /* @__PURE__ */ __name(() => BoostRecipientWithChildrenValidator, "BoostRecipientWithChildrenValidator"),
110
117
  BoostValidator: /* @__PURE__ */ __name(() => BoostValidator, "BoostValidator"),
118
+ CONTRACT_APPROVAL_REQUIRED: /* @__PURE__ */ __name(() => CONTRACT_APPROVAL_REQUIRED, "CONTRACT_APPROVAL_REQUIRED"),
111
119
  CampaignAudienceInputValidator: /* @__PURE__ */ __name(() => CampaignAudienceInputValidator, "CampaignAudienceInputValidator"),
120
+ CampaignAudienceResultValidator: /* @__PURE__ */ __name(() => CampaignAudienceResultValidator, "CampaignAudienceResultValidator"),
112
121
  CampaignAudienceSourceValidator: /* @__PURE__ */ __name(() => CampaignAudienceSourceValidator, "CampaignAudienceSourceValidator"),
113
122
  CampaignChannelValidator: /* @__PURE__ */ __name(() => CampaignChannelValidator, "CampaignChannelValidator"),
123
+ CampaignDispatchOptionsValidator: /* @__PURE__ */ __name(() => CampaignDispatchOptionsValidator, "CampaignDispatchOptionsValidator"),
124
+ CampaignDispatchPreviewValidator: /* @__PURE__ */ __name(() => CampaignDispatchPreviewValidator, "CampaignDispatchPreviewValidator"),
125
+ CampaignEmailValidator: /* @__PURE__ */ __name(() => CampaignEmailValidator, "CampaignEmailValidator"),
114
126
  CampaignEventValidator: /* @__PURE__ */ __name(() => CampaignEventValidator, "CampaignEventValidator"),
115
127
  CampaignIdValidator: /* @__PURE__ */ __name(() => CampaignIdValidator, "CampaignIdValidator"),
116
128
  CampaignPaginationValidator: /* @__PURE__ */ __name(() => CampaignPaginationValidator, "CampaignPaginationValidator"),
117
129
  CampaignStatsValidator: /* @__PURE__ */ __name(() => CampaignStatsValidator, "CampaignStatsValidator"),
118
130
  CampaignStatusValidator: /* @__PURE__ */ __name(() => CampaignStatusValidator, "CampaignStatusValidator"),
131
+ CampaignTestValidator: /* @__PURE__ */ __name(() => CampaignTestValidator, "CampaignTestValidator"),
119
132
  CampaignUpdatesValidator: /* @__PURE__ */ __name(() => CampaignUpdatesValidator, "CampaignUpdatesValidator"),
120
133
  CampaignUserStateValidator: /* @__PURE__ */ __name(() => CampaignUserStateValidator, "CampaignUserStateValidator"),
121
134
  CampaignValidator: /* @__PURE__ */ __name(() => CampaignValidator, "CampaignValidator"),
122
135
  CapturedConsentRecordValidator: /* @__PURE__ */ __name(() => CapturedConsentRecordValidator, "CapturedConsentRecordValidator"),
123
136
  CapturedTemplateRecordValidator: /* @__PURE__ */ __name(() => CapturedTemplateRecordValidator, "CapturedTemplateRecordValidator"),
137
+ ChatMessageValidator: /* @__PURE__ */ __name(() => ChatMessageValidator, "ChatMessageValidator"),
124
138
  CheckCredentialEventValidator: /* @__PURE__ */ __name(() => CheckCredentialEventValidator, "CheckCredentialEventValidator"),
125
139
  CheckIssuanceStatusEventValidator: /* @__PURE__ */ __name(() => CheckIssuanceStatusEventValidator, "CheckIssuanceStatusEventValidator"),
126
140
  ClaimHookQueryValidator: /* @__PURE__ */ __name(() => ClaimHookQueryValidator, "ClaimHookQueryValidator"),
@@ -130,15 +144,26 @@ var require_types_cjs_development = __commonJS({
130
144
  ClaimTokenValidator: /* @__PURE__ */ __name(() => ClaimTokenValidator, "ClaimTokenValidator"),
131
145
  ClrCredentialValidator: /* @__PURE__ */ __name(() => ClrCredentialValidator, "ClrCredentialValidator"),
132
146
  ClrSubjectValidator: /* @__PURE__ */ __name(() => ClrSubjectValidator, "ClrSubjectValidator"),
147
+ ConsentFlowConsentStatusValidator: /* @__PURE__ */ __name(() => ConsentFlowConsentStatusValidator, "ConsentFlowConsentStatusValidator"),
148
+ ConsentFlowContractChangeKindValidator: /* @__PURE__ */ __name(() => ConsentFlowContractChangeKindValidator, "ConsentFlowContractChangeKindValidator"),
149
+ ConsentFlowContractChangesValidator: /* @__PURE__ */ __name(() => ConsentFlowContractChangesValidator, "ConsentFlowContractChangesValidator"),
133
150
  ConsentFlowContractDataForDidValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDataForDidValidator, "ConsentFlowContractDataForDidValidator"),
134
151
  ConsentFlowContractDataValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDataValidator, "ConsentFlowContractDataValidator"),
152
+ ConsentFlowContractDetailChangeValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDetailChangeValidator, "ConsentFlowContractDetailChangeValidator"),
135
153
  ConsentFlowContractDetailsValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDetailsValidator, "ConsentFlowContractDetailsValidator"),
154
+ ConsentFlowContractDiffValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDiffValidator, "ConsentFlowContractDiffValidator"),
155
+ ConsentFlowContractNotificationDataValidator: /* @__PURE__ */ __name(() => ConsentFlowContractNotificationDataValidator, "ConsentFlowContractNotificationDataValidator"),
136
156
  ConsentFlowContractQueryValidator: /* @__PURE__ */ __name(() => ConsentFlowContractQueryValidator, "ConsentFlowContractQueryValidator"),
137
157
  ConsentFlowContractRequestForProfileListValidator: /* @__PURE__ */ __name(() => ConsentFlowContractRequestForProfileListValidator, "ConsentFlowContractRequestForProfileListValidator"),
138
158
  ConsentFlowContractRequestForProfileValidator: /* @__PURE__ */ __name(() => ConsentFlowContractRequestForProfileValidator, "ConsentFlowContractRequestForProfileValidator"),
139
159
  ConsentFlowContractRequestReadStatusValidator: /* @__PURE__ */ __name(() => ConsentFlowContractRequestReadStatusValidator, "ConsentFlowContractRequestReadStatusValidator"),
140
160
  ConsentFlowContractRequestStatusValidator: /* @__PURE__ */ __name(() => ConsentFlowContractRequestStatusValidator, "ConsentFlowContractRequestStatusValidator"),
161
+ ConsentFlowContractScopeValidator: /* @__PURE__ */ __name(() => ConsentFlowContractScopeValidator, "ConsentFlowContractScopeValidator"),
162
+ ConsentFlowContractStatusValidator: /* @__PURE__ */ __name(() => ConsentFlowContractStatusValidator, "ConsentFlowContractStatusValidator"),
163
+ ConsentFlowContractUpdatePreviewValidator: /* @__PURE__ */ __name(() => ConsentFlowContractUpdatePreviewValidator, "ConsentFlowContractUpdatePreviewValidator"),
164
+ ConsentFlowContractUpdateResultValidator: /* @__PURE__ */ __name(() => ConsentFlowContractUpdateResultValidator, "ConsentFlowContractUpdateResultValidator"),
141
165
  ConsentFlowContractValidator: /* @__PURE__ */ __name(() => ConsentFlowContractValidator, "ConsentFlowContractValidator"),
166
+ ConsentFlowContractVersionValidator: /* @__PURE__ */ __name(() => ConsentFlowContractVersionValidator, "ConsentFlowContractVersionValidator"),
142
167
  ConsentFlowDataForDidQueryValidator: /* @__PURE__ */ __name(() => ConsentFlowDataForDidQueryValidator, "ConsentFlowDataForDidQueryValidator"),
143
168
  ConsentFlowDataQueryValidator: /* @__PURE__ */ __name(() => ConsentFlowDataQueryValidator, "ConsentFlowDataQueryValidator"),
144
169
  ConsentFlowGuardianApprovalValidator: /* @__PURE__ */ __name(() => ConsentFlowGuardianApprovalValidator, "ConsentFlowGuardianApprovalValidator"),
@@ -178,6 +203,7 @@ var require_types_cjs_development = __commonJS({
178
203
  CredentialActivityStatsValidator: /* @__PURE__ */ __name(() => CredentialActivityStatsValidator, "CredentialActivityStatsValidator"),
179
204
  CredentialActivityValidator: /* @__PURE__ */ __name(() => CredentialActivityValidator, "CredentialActivityValidator"),
180
205
  CredentialActivityWithDetailsValidator: /* @__PURE__ */ __name(() => CredentialActivityWithDetailsValidator, "CredentialActivityWithDetailsValidator"),
206
+ CredentialDisplayValidator: /* @__PURE__ */ __name(() => CredentialDisplayValidator, "CredentialDisplayValidator"),
181
207
  CredentialFormatValidator: /* @__PURE__ */ __name(() => CredentialFormatValidator, "CredentialFormatValidator"),
182
208
  CredentialInfoValidator: /* @__PURE__ */ __name(() => CredentialInfoValidator, "CredentialInfoValidator"),
183
209
  CredentialNameRefValidator: /* @__PURE__ */ __name(() => CredentialNameRefValidator, "CredentialNameRefValidator"),
@@ -185,11 +211,13 @@ var require_types_cjs_development = __commonJS({
185
211
  CredentialRefreshChallengeValidator: /* @__PURE__ */ __name(() => CredentialRefreshChallengeValidator, "CredentialRefreshChallengeValidator"),
186
212
  CredentialRefreshFailedResultValidator: /* @__PURE__ */ __name(() => CredentialRefreshFailedResultValidator, "CredentialRefreshFailedResultValidator"),
187
213
  CredentialRefreshFailureCodeValidator: /* @__PURE__ */ __name(() => CredentialRefreshFailureCodeValidator, "CredentialRefreshFailureCodeValidator"),
214
+ CredentialRefreshReceiptValidator: /* @__PURE__ */ __name(() => CredentialRefreshReceiptValidator, "CredentialRefreshReceiptValidator"),
188
215
  CredentialRefreshResponseEnvelopeValidator: /* @__PURE__ */ __name(() => CredentialRefreshResponseEnvelopeValidator, "CredentialRefreshResponseEnvelopeValidator"),
189
216
  CredentialRefreshResultValidator: /* @__PURE__ */ __name(() => CredentialRefreshResultValidator, "CredentialRefreshResultValidator"),
190
217
  CredentialRefreshSigningModeValidator: /* @__PURE__ */ __name(() => CredentialRefreshSigningModeValidator, "CredentialRefreshSigningModeValidator"),
191
218
  CredentialRefreshUnchangedResultValidator: /* @__PURE__ */ __name(() => CredentialRefreshUnchangedResultValidator, "CredentialRefreshUnchangedResultValidator"),
192
219
  CredentialRefreshUnsupportedResultValidator: /* @__PURE__ */ __name(() => CredentialRefreshUnsupportedResultValidator, "CredentialRefreshUnsupportedResultValidator"),
220
+ CredentialRefreshUpdateReasonValidator: /* @__PURE__ */ __name(() => CredentialRefreshUpdateReasonValidator, "CredentialRefreshUpdateReasonValidator"),
193
221
  CredentialRefreshUpdatedResultValidator: /* @__PURE__ */ __name(() => CredentialRefreshUpdatedResultValidator, "CredentialRefreshUpdatedResultValidator"),
194
222
  CredentialRefreshVersionMetadataValidator: /* @__PURE__ */ __name(() => CredentialRefreshVersionMetadataValidator, "CredentialRefreshVersionMetadataValidator"),
195
223
  CredentialSchemaValidator: /* @__PURE__ */ __name(() => CredentialSchemaValidator, "CredentialSchemaValidator"),
@@ -197,8 +225,10 @@ var require_types_cjs_development = __commonJS({
197
225
  CredentialSharePreviewValidator: /* @__PURE__ */ __name(() => CredentialSharePreviewValidator, "CredentialSharePreviewValidator"),
198
226
  CredentialStatusValidator: /* @__PURE__ */ __name(() => CredentialStatusValidator, "CredentialStatusValidator"),
199
227
  CredentialSubjectValidator: /* @__PURE__ */ __name(() => CredentialSubjectValidator, "CredentialSubjectValidator"),
228
+ CredentialVerificationMetadataValidator: /* @__PURE__ */ __name(() => CredentialVerificationMetadataValidator, "CredentialVerificationMetadataValidator"),
200
229
  CriteriaValidator: /* @__PURE__ */ __name(() => CriteriaValidator, "CriteriaValidator"),
201
230
  DEFAULT_BITSTRING_STATUS_LIST_SIZE: /* @__PURE__ */ __name(() => DEFAULT_BITSTRING_STATUS_LIST_SIZE, "DEFAULT_BITSTRING_STATUS_LIST_SIZE"),
231
+ DebugInfoValidator: /* @__PURE__ */ __name(() => DebugInfoValidator, "DebugInfoValidator"),
202
232
  DeleteFrameworkInputValidator: /* @__PURE__ */ __name(() => DeleteFrameworkInputValidator, "DeleteFrameworkInputValidator"),
203
233
  DeleteShareLinkAttachmentChunksInputValidator: /* @__PURE__ */ __name(() => DeleteShareLinkAttachmentChunksInputValidator, "DeleteShareLinkAttachmentChunksInputValidator"),
204
234
  DeleteShareLinkAttachmentChunksOutputValidator: /* @__PURE__ */ __name(() => DeleteShareLinkAttachmentChunksOutputValidator, "DeleteShareLinkAttachmentChunksOutputValidator"),
@@ -210,6 +240,7 @@ var require_types_cjs_development = __commonJS({
210
240
  ESCROW_PIN_UNAVAILABLE_MESSAGE: /* @__PURE__ */ __name(() => ESCROW_PIN_UNAVAILABLE_MESSAGE, "ESCROW_PIN_UNAVAILABLE_MESSAGE"),
211
241
  EncryptedCredentialRecordValidator: /* @__PURE__ */ __name(() => EncryptedCredentialRecordValidator, "EncryptedCredentialRecordValidator"),
212
242
  EncryptedRecordValidator: /* @__PURE__ */ __name(() => EncryptedRecordValidator, "EncryptedRecordValidator"),
243
+ EncryptionRecipientsResultValidator: /* @__PURE__ */ __name(() => EncryptionRecipientsResultValidator, "EncryptionRecipientsResultValidator"),
213
244
  EndorsementCredentialValidator: /* @__PURE__ */ __name(() => EndorsementCredentialValidator, "EndorsementCredentialValidator"),
214
245
  EndorsementSubjectValidator: /* @__PURE__ */ __name(() => EndorsementSubjectValidator, "EndorsementSubjectValidator"),
215
246
  EscrowPinStatusValidator: /* @__PURE__ */ __name(() => EscrowPinStatusValidator, "EscrowPinStatusValidator"),
@@ -223,6 +254,8 @@ var require_types_cjs_development = __commonJS({
223
254
  GetCountersEventValidator: /* @__PURE__ */ __name(() => GetCountersEventValidator, "GetCountersEventValidator"),
224
255
  GetCredentialRefreshHistoryInputValidator: /* @__PURE__ */ __name(() => GetCredentialRefreshHistoryInputValidator, "GetCredentialRefreshHistoryInputValidator"),
225
256
  GetCredentialRefreshHistoryResultValidator: /* @__PURE__ */ __name(() => GetCredentialRefreshHistoryResultValidator, "GetCredentialRefreshHistoryResultValidator"),
257
+ GetCredentialRefreshReceiptInputValidator: /* @__PURE__ */ __name(() => GetCredentialRefreshReceiptInputValidator, "GetCredentialRefreshReceiptInputValidator"),
258
+ GetEncryptionRecipientsInputValidator: /* @__PURE__ */ __name(() => GetEncryptionRecipientsInputValidator, "GetEncryptionRecipientsInputValidator"),
226
259
  GetFullSkillTreeInputValidator: /* @__PURE__ */ __name(() => GetFullSkillTreeInputValidator, "GetFullSkillTreeInputValidator"),
227
260
  GetFullSkillTreeResultValidator: /* @__PURE__ */ __name(() => GetFullSkillTreeResultValidator, "GetFullSkillTreeResultValidator"),
228
261
  GetShareLinkAttachmentChunkInputValidator: /* @__PURE__ */ __name(() => GetShareLinkAttachmentChunkInputValidator, "GetShareLinkAttachmentChunkInputValidator"),
@@ -230,6 +263,7 @@ var require_types_cjs_development = __commonJS({
230
263
  GetSkillPathResultValidator: /* @__PURE__ */ __name(() => GetSkillPathResultValidator, "GetSkillPathResultValidator"),
231
264
  GetTemplateRecipientsEventValidator: /* @__PURE__ */ __name(() => GetTemplateRecipientsEventValidator, "GetTemplateRecipientsEventValidator"),
232
265
  GuardianStatusValidator: /* @__PURE__ */ __name(() => GuardianStatusValidator, "GuardianStatusValidator"),
266
+ HolderEncryptedHandoffValidator: /* @__PURE__ */ __name(() => HolderEncryptedHandoffValidator, "HolderEncryptedHandoffValidator"),
233
267
  HolderExportConsentRecordValidator: /* @__PURE__ */ __name(() => HolderExportConsentRecordValidator, "HolderExportConsentRecordValidator"),
234
268
  HolderExportMetadataValidator: /* @__PURE__ */ __name(() => HolderExportMetadataValidator, "HolderExportMetadataValidator"),
235
269
  IdentifierEntryValidator: /* @__PURE__ */ __name(() => IdentifierEntryValidator, "IdentifierEntryValidator"),
@@ -249,7 +283,9 @@ var require_types_cjs_development = __commonJS({
249
283
  InlineSendCredentialEventValidator: /* @__PURE__ */ __name(() => InlineSendCredentialEventValidator, "InlineSendCredentialEventValidator"),
250
284
  InlineWalletCategoryValidator: /* @__PURE__ */ __name(() => InlineWalletCategoryValidator, "InlineWalletCategoryValidator"),
251
285
  InlineWalletSkillTagValidator: /* @__PURE__ */ __name(() => InlineWalletSkillTagValidator, "InlineWalletSkillTagValidator"),
286
+ InsightArtifactValidator: /* @__PURE__ */ __name(() => InsightArtifactValidator, "InsightArtifactValidator"),
252
287
  InstalledAppValidator: /* @__PURE__ */ __name(() => InstalledAppValidator, "InstalledAppValidator"),
288
+ IntroStreamModeValidator: /* @__PURE__ */ __name(() => IntroStreamModeValidator, "IntroStreamModeValidator"),
253
289
  IssueInboxCredentialBatchItemResultValidator: /* @__PURE__ */ __name(() => IssueInboxCredentialBatchItemResultValidator, "IssueInboxCredentialBatchItemResultValidator"),
254
290
  IssueInboxCredentialBatchItemValidator: /* @__PURE__ */ __name(() => IssueInboxCredentialBatchItemValidator, "IssueInboxCredentialBatchItemValidator"),
255
291
  IssueInboxCredentialBatchResponseValidator: /* @__PURE__ */ __name(() => IssueInboxCredentialBatchResponseValidator, "IssueInboxCredentialBatchResponseValidator"),
@@ -301,6 +337,7 @@ var require_types_cjs_development = __commonJS({
301
337
  LCNVisibleProfileValidator: /* @__PURE__ */ __name(() => LCNVisibleProfileValidator, "LCNVisibleProfileValidator"),
302
338
  LaunchTypeValidator: /* @__PURE__ */ __name(() => LaunchTypeValidator, "LaunchTypeValidator"),
303
339
  LearnCardRefreshAuthorizationValidator: /* @__PURE__ */ __name(() => LearnCardRefreshAuthorizationValidator, "LearnCardRefreshAuthorizationValidator"),
340
+ LearningPathwayValidator: /* @__PURE__ */ __name(() => LearningPathwayValidator, "LearningPathwayValidator"),
304
341
  LegacySendCredentialEventValidator: /* @__PURE__ */ __name(() => LegacySendCredentialEventValidator, "LegacySendCredentialEventValidator"),
305
342
  LinkProviderFrameworkInputValidator: /* @__PURE__ */ __name(() => LinkProviderFrameworkInputValidator, "LinkProviderFrameworkInputValidator"),
306
343
  ListCampaignsInputValidator: /* @__PURE__ */ __name(() => ListCampaignsInputValidator, "ListCampaignsInputValidator"),
@@ -312,8 +349,11 @@ var require_types_cjs_development = __commonJS({
312
349
  MAX_SHARE_RECOVERY_JWE_BYTES: /* @__PURE__ */ __name(() => MAX_SHARE_RECOVERY_JWE_BYTES, "MAX_SHARE_RECOVERY_JWE_BYTES"),
313
350
  MAX_SHARE_SOURCE_URI_CHARS: /* @__PURE__ */ __name(() => MAX_SHARE_SOURCE_URI_CHARS, "MAX_SHARE_SOURCE_URI_CHARS"),
314
351
  MAX_VP_MEMBERS: /* @__PURE__ */ __name(() => MAX_VP_MEMBERS, "MAX_VP_MEMBERS"),
352
+ ManagedCredentialRefreshBindingValidator: /* @__PURE__ */ __name(() => ManagedCredentialRefreshBindingValidator, "ManagedCredentialRefreshBindingValidator"),
315
353
  ManagedCredentialRefreshReceiptValidator: /* @__PURE__ */ __name(() => ManagedCredentialRefreshReceiptValidator, "ManagedCredentialRefreshReceiptValidator"),
316
354
  ManagedCredentialRefreshServiceValidator: /* @__PURE__ */ __name(() => ManagedCredentialRefreshServiceValidator2, "ManagedCredentialRefreshServiceValidator"),
355
+ ModelSafeCredentialFactValidator: /* @__PURE__ */ __name(() => ModelSafeCredentialFactValidator, "ModelSafeCredentialFactValidator"),
356
+ ModelSafeCredentialProjectionValidator: /* @__PURE__ */ __name(() => ModelSafeCredentialProjectionValidator, "ModelSafeCredentialProjectionValidator"),
317
357
  MyCampaignValidator: /* @__PURE__ */ __name(() => MyCampaignValidator, "MyCampaignValidator"),
318
358
  NormalizedConsentScopesValidator: /* @__PURE__ */ __name(() => NormalizedConsentScopesValidator, "NormalizedConsentScopesValidator"),
319
359
  PageCampaignAudienceInputValidator: /* @__PURE__ */ __name(() => PageCampaignAudienceInputValidator, "PageCampaignAudienceInputValidator"),
@@ -358,6 +398,7 @@ var require_types_cjs_development = __commonJS({
358
398
  PublishCredentialRefreshNotificationValidator: /* @__PURE__ */ __name(() => PublishCredentialRefreshNotificationValidator, "PublishCredentialRefreshNotificationValidator"),
359
399
  PublishCredentialRefreshResultValidator: /* @__PURE__ */ __name(() => PublishCredentialRefreshResultValidator, "PublishCredentialRefreshResultValidator"),
360
400
  PublishCredentialSharePreviewValidator: /* @__PURE__ */ __name(() => PublishCredentialSharePreviewValidator, "PublishCredentialSharePreviewValidator"),
401
+ PublishHolderEncryptedRefreshInputValidator: /* @__PURE__ */ __name(() => PublishHolderEncryptedRefreshInputValidator, "PublishHolderEncryptedRefreshInputValidator"),
361
402
  PublishIssuerSignedRefreshValidator: /* @__PURE__ */ __name(() => PublishIssuerSignedRefreshValidator, "PublishIssuerSignedRefreshValidator"),
362
403
  PublishSigningAuthorityRefreshValidator: /* @__PURE__ */ __name(() => PublishSigningAuthorityRefreshValidator, "PublishSigningAuthorityRefreshValidator"),
363
404
  PutShareLinkAttachmentChunkInputValidator: /* @__PURE__ */ __name(() => PutShareLinkAttachmentChunkInputValidator, "PutShareLinkAttachmentChunkInputValidator"),
@@ -375,6 +416,7 @@ var require_types_cjs_development = __commonJS({
375
416
  ResultStatusTypeValidator: /* @__PURE__ */ __name(() => ResultStatusTypeValidator, "ResultStatusTypeValidator"),
376
417
  ResultTypeValidator: /* @__PURE__ */ __name(() => ResultTypeValidator, "ResultTypeValidator"),
377
418
  ResultValidator: /* @__PURE__ */ __name(() => ResultValidator, "ResultValidator"),
419
+ RoleValidator: /* @__PURE__ */ __name(() => RoleValidator, "RoleValidator"),
378
420
  RubricCriterionValidator: /* @__PURE__ */ __name(() => RubricCriterionValidator, "RubricCriterionValidator"),
379
421
  SHARE_AAD_PREFIX: /* @__PURE__ */ __name(() => SHARE_AAD_PREFIX, "SHARE_AAD_PREFIX"),
380
422
  SHARE_CONTENT_KEY_BYTES: /* @__PURE__ */ __name(() => SHARE_CONTENT_KEY_BYTES, "SHARE_CONTENT_KEY_BYTES"),
@@ -393,6 +435,7 @@ var require_types_cjs_development = __commonJS({
393
435
  SendBrandingOptionsValidator: /* @__PURE__ */ __name(() => SendBrandingOptionsValidator, "SendBrandingOptionsValidator"),
394
436
  SendContractRequestValidator: /* @__PURE__ */ __name(() => SendContractRequestValidator, "SendContractRequestValidator"),
395
437
  SendCredentialEventValidator: /* @__PURE__ */ __name(() => SendCredentialEventValidator, "SendCredentialEventValidator"),
438
+ SendHolderEncryptedRefreshableInputValidator: /* @__PURE__ */ __name(() => SendHolderEncryptedRefreshableInputValidator, "SendHolderEncryptedRefreshableInputValidator"),
396
439
  SendInboxResponseValidator: /* @__PURE__ */ __name(() => SendInboxResponseValidator, "SendInboxResponseValidator"),
397
440
  SendInputValidator: /* @__PURE__ */ __name(() => SendInputValidator, "SendInputValidator"),
398
441
  SendNotificationEventValidator: /* @__PURE__ */ __name(() => SendNotificationEventValidator, "SendNotificationEventValidator"),
@@ -449,8 +492,10 @@ var require_types_cjs_development = __commonJS({
449
492
  SkillValidator: /* @__PURE__ */ __name(() => SkillValidator, "SkillValidator"),
450
493
  StandardCredentialRefreshServiceValidator: /* @__PURE__ */ __name(() => StandardCredentialRefreshServiceValidator, "StandardCredentialRefreshServiceValidator"),
451
494
  StatusCheckEntryValidator: /* @__PURE__ */ __name(() => StatusCheckEntryValidator, "StatusCheckEntryValidator"),
495
+ StatusManagementValidator: /* @__PURE__ */ __name(() => StatusManagementValidator, "StatusManagementValidator"),
452
496
  StoredCredentialEnvelopeValidator: /* @__PURE__ */ __name(() => StoredCredentialEnvelopeValidator, "StoredCredentialEnvelopeValidator"),
453
497
  StringQuery: /* @__PURE__ */ __name(() => StringQuery, "StringQuery"),
498
+ StructuredResponseValidator: /* @__PURE__ */ __name(() => StructuredResponseValidator, "StructuredResponseValidator"),
454
499
  SummaryCredentialDataValidator: /* @__PURE__ */ __name(() => SummaryCredentialDataValidator, "SummaryCredentialDataValidator"),
455
500
  SummaryCredentialKeywordValidator: /* @__PURE__ */ __name(() => SummaryCredentialKeywordValidator, "SummaryCredentialKeywordValidator"),
456
501
  SupportedCredentialRefreshServiceValidator: /* @__PURE__ */ __name(() => SupportedCredentialRefreshServiceValidator2, "SupportedCredentialRefreshServiceValidator"),
@@ -458,6 +503,9 @@ var require_types_cjs_development = __commonJS({
458
503
  TagValidator: /* @__PURE__ */ __name(() => TagValidator, "TagValidator"),
459
504
  TemplateRenderMethodValidator: /* @__PURE__ */ __name(() => TemplateRenderMethodValidator, "TemplateRenderMethodValidator"),
460
505
  TermsOfUseValidator: /* @__PURE__ */ __name(() => TermsOfUseValidator, "TermsOfUseValidator"),
506
+ ThreadCredentialContextValidator: /* @__PURE__ */ __name(() => ThreadCredentialContextValidator, "ThreadCredentialContextValidator"),
507
+ ThreadValidator: /* @__PURE__ */ __name(() => ThreadValidator, "ThreadValidator"),
508
+ TimingEventValidator: /* @__PURE__ */ __name(() => TimingEventValidator, "TimingEventValidator"),
461
509
  UnsignedAchievementCredentialValidator: /* @__PURE__ */ __name(() => UnsignedAchievementCredentialValidator, "UnsignedAchievementCredentialValidator"),
462
510
  UnsignedClrCredentialValidator: /* @__PURE__ */ __name(() => UnsignedClrCredentialValidator, "UnsignedClrCredentialValidator"),
463
511
  UnsignedVCValidator: /* @__PURE__ */ __name(() => UnsignedVCValidator, "UnsignedVCValidator"),
@@ -742,7 +790,7 @@ var require_types_cjs_development = __commonJS({
742
790
  safeEncodeAsync: /* @__PURE__ */ __name(() => safeEncodeAsync2, "safeEncodeAsync"),
743
791
  safeParse: /* @__PURE__ */ __name(() => safeParse2, "safeParse"),
744
792
  safeParseAsync: /* @__PURE__ */ __name(() => safeParseAsync2, "safeParseAsync"),
745
- set: /* @__PURE__ */ __name(() => set, "set"),
793
+ set: /* @__PURE__ */ __name(() => set2, "set"),
746
794
  setErrorMap: /* @__PURE__ */ __name(() => setErrorMap, "setErrorMap"),
747
795
  size: /* @__PURE__ */ __name(() => _size, "size"),
748
796
  slugify: /* @__PURE__ */ __name(() => _slugify, "slugify"),
@@ -18539,7 +18587,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
18539
18587
  readonly: /* @__PURE__ */ __name(() => readonly, "readonly"),
18540
18588
  record: /* @__PURE__ */ __name(() => record, "record"),
18541
18589
  refine: /* @__PURE__ */ __name(() => refine, "refine"),
18542
- set: /* @__PURE__ */ __name(() => set, "set"),
18590
+ set: /* @__PURE__ */ __name(() => set2, "set"),
18543
18591
  strictObject: /* @__PURE__ */ __name(() => strictObject, "strictObject"),
18544
18592
  string: /* @__PURE__ */ __name(() => string2, "string"),
18545
18593
  stringFormat: /* @__PURE__ */ __name(() => stringFormat, "stringFormat"),
@@ -19829,15 +19877,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
19829
19877
  inst.max = (...args) => inst.check(/* @__PURE__ */ _maxSize(...args));
19830
19878
  inst.size = (...args) => inst.check(/* @__PURE__ */ _size(...args));
19831
19879
  });
19832
- function set(valueType, params) {
19880
+ function set2(valueType, params) {
19833
19881
  return new ZodSet({
19834
19882
  type: "set",
19835
19883
  valueType,
19836
19884
  ...util_exports.normalizeParams(params)
19837
19885
  });
19838
19886
  }
19839
- __name(set, "set");
19840
- __name2(set, "set");
19887
+ __name(set2, "set");
19888
+ __name2(set2, "set");
19841
19889
  var ZodEnum = /* @__PURE__ */ $constructor("ZodEnum", (inst, def) => {
19842
19890
  $ZodEnum.init(inst, def);
19843
19891
  ZodType.init(inst, def);
@@ -21976,12 +22024,47 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
21976
22024
  $or: BaseStringQuery.array()
21977
22025
  })
21978
22026
  ]);
22027
+ var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
22028
+ var DEFAULT_BITSTRING_STATUS_LIST_SIZE = 131072;
22029
+ var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
22030
+ var BitstringStatusListEntryValidator = external_exports.object({
22031
+ id: external_exports.string().optional(),
22032
+ type: external_exports.literal("BitstringStatusListEntry"),
22033
+ statusPurpose: BitstringStatusPurposeValidator,
22034
+ statusListIndex: external_exports.string().or(external_exports.number().int().nonnegative()),
22035
+ statusListCredential: external_exports.string()
22036
+ });
22037
+ var AllocatedBitstringStatusListEntryValidator = BitstringStatusListEntryValidator.extend({
22038
+ id: external_exports.string()
22039
+ });
22040
+ var BitstringStatusListCredentialSubjectValidator = external_exports.object({
22041
+ id: external_exports.string().optional(),
22042
+ type: external_exports.literal("BitstringStatusList"),
22043
+ statusPurpose: BitstringStatusPurposeValidator,
22044
+ encodedList: external_exports.string()
22045
+ });
22046
+ var AllocateCredentialStatusInputValidator = external_exports.object({
22047
+ statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
22048
+ listSize: external_exports.number().int().positive().optional()
22049
+ }).default({});
22050
+ var AttachCredentialRefreshStatusEntriesInputValidator = external_exports.object({
22051
+ refreshId: external_exports.string().min(1),
22052
+ credentialStatus: CredentialStatusValidator.or(CredentialStatusValidator.array()).nullable()
22053
+ });
21979
22054
  var LearnCardRefreshAuthorizationValidator = external_exports.object({ type: external_exports.literal("LearnCardDIDAuth") }).catchall(external_exports.any());
21980
22055
  var ManagedCredentialRefreshServiceValidator2 = external_exports.object({
21981
22056
  id: external_exports.string().min(1),
21982
22057
  type: external_exports.literal("LearnCardCredentialRefresh2026"),
21983
22058
  authorization: LearnCardRefreshAuthorizationValidator.optional()
21984
22059
  }).catchall(external_exports.any());
22060
+ var ManagedCredentialRefreshBindingValidator = ManagedCredentialRefreshServiceValidator2.or(
22061
+ RefreshServiceValidator.array().refine(
22062
+ (services) => services.some(
22063
+ (service) => ManagedCredentialRefreshServiceValidator2.safeParse(service).success
22064
+ ),
22065
+ "A managed refresh service is required"
22066
+ )
22067
+ );
21985
22068
  var StandardCredentialRefreshServiceValidator = external_exports.object({
21986
22069
  id: external_exports.string().min(1),
21987
22070
  type: external_exports.literal("1EdTechCredentialRefresh")
@@ -22005,7 +22088,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22005
22088
  });
22006
22089
  var ManagedCredentialRefreshReceiptValidator = external_exports.object({
22007
22090
  refreshId: external_exports.string().min(1),
22008
- refreshService: ManagedCredentialRefreshServiceValidator2,
22091
+ refreshService: ManagedCredentialRefreshBindingValidator,
22092
+ /** Legacy receipts authenticate only the allocated managed entry, not other services. */
22093
+ refreshServiceBinding: external_exports.literal("managed-entry").optional(),
22009
22094
  credentialId: external_exports.string().min(1),
22010
22095
  issuerDid: external_exports.string().min(1),
22011
22096
  holderDid: external_exports.string().min(1),
@@ -22013,14 +22098,43 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22013
22098
  CredentialStatusValidator.array()
22014
22099
  ).optional()
22015
22100
  }).strip();
22101
+ var GetCredentialRefreshReceiptInputValidator = external_exports.object({ uri: external_exports.string().min(1) });
22102
+ var CredentialRefreshReceiptValidator = ManagedCredentialRefreshReceiptValidator.extend({
22103
+ encryptionMode: external_exports.enum(["network", "holder"])
22104
+ });
22105
+ var HolderEncryptedHandoffValidator = external_exports.object({
22106
+ refreshId: external_exports.string().min(1),
22107
+ credentialId: external_exports.string().min(1),
22108
+ holderDid: external_exports.string().min(1),
22109
+ issuerDid: external_exports.string().min(1),
22110
+ credentialStatus: CredentialStatusValidator.or(CredentialStatusValidator.array()),
22111
+ refreshService: ManagedCredentialRefreshBindingValidator.optional(),
22112
+ jwe: JWEValidator2
22113
+ }).strict();
22114
+ var SendHolderEncryptedRefreshableInputValidator = external_exports.object({
22115
+ handoff: HolderEncryptedHandoffValidator,
22116
+ idempotencyKey: external_exports.string().min(1).optional(),
22117
+ boostUri: external_exports.string().optional(),
22118
+ skipNotification: external_exports.boolean().optional()
22119
+ });
22120
+ var GetEncryptionRecipientsInputValidator = external_exports.object({ refreshId: external_exports.string().min(1) });
22121
+ var EncryptionRecipientsResultValidator = external_exports.object({
22122
+ recipientKeyIds: external_exports.array(external_exports.string())
22123
+ });
22016
22124
  var InboxCredentialRefreshReceiptValidator = ManagedCredentialRefreshReceiptValidator.omit(
22017
22125
  { holderDid: true }
22018
22126
  ).extend({ holderDid: external_exports.string().min(1).optional() });
22019
22127
  var CredentialRefreshSigningModeValidator = external_exports.enum(["issuer-signed", "signing-authority"]);
22128
+ var CredentialRefreshUpdateReasonValidator = external_exports.enum(["corrected", "updated", "reissued"]);
22020
22129
  var PublishCredentialRefreshBaseFields = {
22021
22130
  refreshId: external_exports.string().min(1),
22022
22131
  notifyHolder: external_exports.boolean().optional(),
22023
- updateSummary: external_exports.string().optional(),
22132
+ updateSummary: external_exports.string().max(280).optional().describe(
22133
+ "Public legacy update summary. Do not include private claims; prefer updateReason."
22134
+ ),
22135
+ updateReason: CredentialRefreshUpdateReasonValidator.optional().describe(
22136
+ "Public reason for this update"
22137
+ ),
22024
22138
  idempotencyKey: external_exports.string().optional()
22025
22139
  };
22026
22140
  var PublishIssuerSignedRefreshValidator = external_exports.object({
@@ -22096,13 +22210,25 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22096
22210
  publishedAt: external_exports.string().min(1),
22097
22211
  notification: PublishCredentialRefreshNotificationValidator
22098
22212
  });
22213
+ var PublishHolderEncryptedRefreshInputValidator = external_exports.object({
22214
+ handoff: HolderEncryptedHandoffValidator,
22215
+ notify: external_exports.boolean(),
22216
+ updateSummary: external_exports.string().max(280).optional().describe(
22217
+ "Public legacy update summary. Do not include private claims; prefer updateReason."
22218
+ ),
22219
+ updateReason: CredentialRefreshUpdateReasonValidator.optional().describe(
22220
+ "Public reason for this update"
22221
+ ),
22222
+ idempotencyKey: external_exports.string().optional()
22223
+ });
22099
22224
  var CredentialRefreshVersionMetadataValidator = external_exports.object({
22100
22225
  version: external_exports.number().int().positive(),
22101
22226
  publishedAt: external_exports.string().min(1),
22102
22227
  effectiveAt: external_exports.string().optional(),
22103
22228
  etag: external_exports.string().optional(),
22104
22229
  signingMode: CredentialRefreshSigningModeValidator.optional(),
22105
- updateSummary: external_exports.string().optional()
22230
+ updateSummary: external_exports.string().optional(),
22231
+ updateReason: CredentialRefreshUpdateReasonValidator.optional()
22106
22232
  });
22107
22233
  var GetCredentialRefreshHistoryInputValidator = external_exports.object({
22108
22234
  refreshId: external_exports.string().min(1),
@@ -22145,6 +22271,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22145
22271
  "INVALID_PROOF",
22146
22272
  "ISSUER_MISMATCH",
22147
22273
  "ID_MISMATCH",
22274
+ "BINDING_MISMATCH",
22148
22275
  "ROLLBACK",
22149
22276
  "REVOKED",
22150
22277
  "UNSAFE_ENDPOINT"
@@ -22469,6 +22596,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22469
22596
  name: external_exports.string()
22470
22597
  })
22471
22598
  });
22599
+ var CredentialDisplayValidator = external_exports.object({
22600
+ name: external_exports.string().trim().min(1).max(280).optional(),
22601
+ category: external_exports.string().max(280).optional(),
22602
+ image: external_exports.string().max(2048).url().refine((url2) => url2.startsWith("https://"), { message: "Image URL must use https" }).optional()
22603
+ });
22472
22604
  var SendBoostTemplateValidator = BoostValidator.partial().omit({ uri: true, claimPermissions: true }).extend({
22473
22605
  credential: VCValidator.or(UnsignedVCValidator),
22474
22606
  claimPermissions: BoostPermissionsValidator.partial().optional(),
@@ -22507,6 +22639,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22507
22639
  templateUri: external_exports.string().optional(),
22508
22640
  template: SendBoostTemplateValidator.optional(),
22509
22641
  signedCredential: VCValidator.optional(),
22642
+ display: CredentialDisplayValidator.optional().describe(
22643
+ "Public display metadata for managed and signed-only sends. Nothing is inferred from credential content; omitted names use generic copy. The exception is category: when display.category is omitted for an inline template, the template's category is copied, since consent-flow write authorization is keyed on it."
22644
+ ),
22645
+ statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
22510
22646
  options: SendOptionsValidator.optional().describe(
22511
22647
  "Options for email/phone recipients (Universal Inbox)"
22512
22648
  ),
@@ -22545,7 +22681,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22545
22681
  "Present when guardianEmail was specified"
22546
22682
  )
22547
22683
  });
22684
+ var StatusManagementValidator = external_exports.enum(["network", "external", "mixed", "none"]);
22548
22685
  var SendBoostResponseValidator = external_exports.object({
22686
+ /** Public status providers for a managed send; external entries require provider-side updates. */
22687
+ statusManagement: StatusManagementValidator.optional(),
22549
22688
  type: external_exports.literal("boost"),
22550
22689
  credentialUri: external_exports.string(),
22551
22690
  uri: external_exports.string(),
@@ -22558,19 +22697,33 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22558
22697
  )
22559
22698
  });
22560
22699
  var PrepareRefreshableSendInputValidator = external_exports.object({
22700
+ /** Opt in to signing the server-bound statusEntries; omission preserves client allocation. */
22701
+ statusBinding: external_exports.literal("server").optional(),
22702
+ statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
22561
22703
  recipient: external_exports.string(),
22562
22704
  templateUri: external_exports.string().optional(),
22563
22705
  template: SendBoostTemplateValidator.optional(),
22706
+ display: CredentialDisplayValidator.optional().describe("Public display metadata only"),
22564
22707
  contractUri: external_exports.string().optional(),
22565
22708
  templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
22566
22709
  integrationId: external_exports.string().optional(),
22567
22710
  /** Credential ID to allocate for; generated server-side when omitted. */
22568
22711
  credentialId: external_exports.string().min(1).optional(),
22569
- idempotencyKey: external_exports.string().min(1).max(200).optional()
22570
- }).refine((data) => Boolean(data.templateUri) !== Boolean(data.template), {
22571
- message: "Provide exactly one of templateUri or template."
22712
+ idempotencyKey: external_exports.string().min(1).max(200).optional(),
22713
+ /**
22714
+ * `'holder'` requests student-only encryption (LC-2345): the SDK signs and
22715
+ * encrypts locally and the server never receives plaintext. Requires a
22716
+ * profile or DID recipient; rejected for signedCredential-only sends and for
22717
+ * inbox (email/phone) recipients. Defaults to `'network'`.
22718
+ */
22719
+ encryption: external_exports.enum(["network", "holder"]).optional()
22720
+ }).refine((data) => !(data.templateUri && data.template), {
22721
+ message: "Provide at most one of templateUri or template."
22572
22722
  });
22573
22723
  var PrepareRefreshableSendResultValidator = external_exports.object({
22724
+ /** Public status providers known at preparation; final send reports the signed entries. */
22725
+ statusManagement: StatusManagementValidator.optional(),
22726
+ statusEntries: external_exports.array(BitstringStatusListEntryValidator).optional(),
22574
22727
  boostUri: external_exports.string(),
22575
22728
  credentialId: external_exports.string(),
22576
22729
  refreshId: external_exports.string(),
@@ -22578,11 +22731,111 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22578
22731
  /** The DID to use as credentialSubject.id (recipient DID, or the profile's did:web). */
22579
22732
  holderDid: external_exports.string(),
22580
22733
  /** Present when this idempotencyKey already completed: return it without signing. */
22581
- completed: SendBoostResponseValidator.optional()
22734
+ completed: SendBoostResponseValidator.optional(),
22735
+ /**
22736
+ * Present only when `encryption: 'holder'` was requested: the exact
22737
+ * key-agreement verification-method ids (holder + current managers) the SDK
22738
+ * must encrypt to. Recomputed on every call, so a later manager change can
22739
+ * make a previously-prepared set stale (see `credentialRefresh.sendHolderEncryptedRefreshable`
22740
+ * and `credentialRefresh.getEncryptionRecipients`).
22741
+ */
22742
+ recipientKeyIds: external_exports.array(external_exports.string()).optional()
22582
22743
  });
22583
22744
  var SendInputValidator = external_exports.discriminatedUnion("type", [SendBoostInputValidator]);
22584
22745
  var SendResponseValidator = external_exports.discriminatedUnion("type", [SendBoostResponseValidator]);
22585
- var ConsentFlowTermsStatusValidator = external_exports.enum(["live", "stale", "withdrawn"]);
22746
+ var ConsentFlowTermsStatusValidator = external_exports.enum([
22747
+ "live",
22748
+ "consumed",
22749
+ "withdrawn",
22750
+ "needs_reconsent",
22751
+ "suspended"
22752
+ ]);
22753
+ var CONTRACT_APPROVAL_REQUIRED = "CONTRACT_APPROVAL_REQUIRED";
22754
+ var ConsentFlowContractChangeKindValidator = external_exports.enum([
22755
+ "relaxed",
22756
+ "expanded_optional",
22757
+ "requires_consent"
22758
+ ]);
22759
+ var ConsentFlowContractScopeValidator = external_exports.object({
22760
+ area: external_exports.enum(["read", "write"]),
22761
+ type: external_exports.enum(["credential", "personal"]),
22762
+ key: external_exports.string(),
22763
+ required: external_exports.boolean(),
22764
+ reason: external_exports.string().optional()
22765
+ });
22766
+ var ConsentFlowContractDetailValueValidator = external_exports.union([
22767
+ external_exports.string(),
22768
+ external_exports.boolean(),
22769
+ external_exports.string().array()
22770
+ ]);
22771
+ var ConsentFlowContractDetailChangeValidator = external_exports.object({
22772
+ field: external_exports.enum([
22773
+ "name",
22774
+ "subtitle",
22775
+ "description",
22776
+ "reasonForAccessing",
22777
+ "image",
22778
+ "needsGuardianConsent",
22779
+ "redirectUrl",
22780
+ "frontDoorBoostUri",
22781
+ "expiresAt",
22782
+ "writers",
22783
+ "autoboosts"
22784
+ ]),
22785
+ before: ConsentFlowContractDetailValueValidator.optional(),
22786
+ after: ConsentFlowContractDetailValueValidator.optional()
22787
+ });
22788
+ var ConsentFlowContractDiffValidator = external_exports.object({
22789
+ added: ConsentFlowContractScopeValidator.array(),
22790
+ removed: ConsentFlowContractScopeValidator.array(),
22791
+ changed: ConsentFlowContractScopeValidator.array(),
22792
+ details: ConsentFlowContractDetailChangeValidator.array().optional()
22793
+ });
22794
+ var ConsentFlowContractUpdatePreviewValidator = external_exports.object({
22795
+ headline: external_exports.string(),
22796
+ subhead: external_exports.string(),
22797
+ rows: external_exports.array(
22798
+ external_exports.object({
22799
+ scope: ConsentFlowContractScopeValidator,
22800
+ change: external_exports.enum(["added", "removed", "changed"]),
22801
+ label: external_exports.string(),
22802
+ subtitle: external_exports.string()
22803
+ })
22804
+ ),
22805
+ primaryLabel: external_exports.string()
22806
+ });
22807
+ var ConsentFlowContractStatusValidator = external_exports.enum(["active", "retired"]);
22808
+ var ConsentFlowContractVersionValidator = external_exports.object({
22809
+ version: external_exports.number().int().positive(),
22810
+ createdAt: external_exports.string(),
22811
+ reason: external_exports.string().optional(),
22812
+ kind: ConsentFlowContractChangeKindValidator.optional()
22813
+ });
22814
+ var ConsentFlowContractUpdateResultValidator = external_exports.object({
22815
+ version: external_exports.number().int().positive(),
22816
+ kind: ConsentFlowContractChangeKindValidator,
22817
+ affectedUsers: external_exports.number().int().nonnegative(),
22818
+ preview: ConsentFlowContractUpdatePreviewValidator
22819
+ });
22820
+ var ConsentFlowConsentStatusValidator = external_exports.object({
22821
+ status: ConsentFlowTermsStatusValidator.or(external_exports.literal("not_consented")),
22822
+ consentedVersion: external_exports.number().int().positive().optional(),
22823
+ currentVersion: external_exports.number().int().positive(),
22824
+ needsReconsent: external_exports.boolean(),
22825
+ reviewUrl: external_exports.string().optional()
22826
+ });
22827
+ var ConsentFlowContractNotificationDataValidator = external_exports.object({
22828
+ contractUri: external_exports.string(),
22829
+ contractName: external_exports.string().optional(),
22830
+ fromVersion: external_exports.number().int().positive(),
22831
+ toVersion: external_exports.number().int().positive(),
22832
+ kind: ConsentFlowContractChangeKindValidator,
22833
+ reason: external_exports.string().optional(),
22834
+ diff: ConsentFlowContractDiffValidator,
22835
+ reconsentDeadline: external_exports.string().optional(),
22836
+ reviewUrl: external_exports.string(),
22837
+ preview: ConsentFlowContractUpdatePreviewValidator.optional()
22838
+ });
22586
22839
  var ConsentFlowContractValidator = external_exports.object({
22587
22840
  read: external_exports.object({
22588
22841
  anonymize: external_exports.boolean().optional(),
@@ -22591,13 +22844,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22591
22844
  external_exports.string(),
22592
22845
  external_exports.object({
22593
22846
  required: external_exports.boolean(),
22594
- defaultEnabled: external_exports.boolean().optional()
22847
+ defaultEnabled: external_exports.boolean().optional(),
22848
+ reason: external_exports.string().optional()
22595
22849
  })
22596
22850
  ).default({})
22597
22851
  }).prefault({ categories: {} }),
22598
22852
  personal: external_exports.record(
22599
22853
  external_exports.string(),
22600
- external_exports.object({ required: external_exports.boolean(), defaultEnabled: external_exports.boolean().optional() })
22854
+ external_exports.object({
22855
+ required: external_exports.boolean(),
22856
+ defaultEnabled: external_exports.boolean().optional(),
22857
+ reason: external_exports.string().optional()
22858
+ })
22601
22859
  ).default({})
22602
22860
  }).prefault({ credentials: { categories: {} }, personal: {} }),
22603
22861
  write: external_exports.object({
@@ -22606,16 +22864,55 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22606
22864
  external_exports.string(),
22607
22865
  external_exports.object({
22608
22866
  required: external_exports.boolean(),
22609
- defaultEnabled: external_exports.boolean().optional()
22867
+ defaultEnabled: external_exports.boolean().optional(),
22868
+ reason: external_exports.string().optional()
22610
22869
  })
22611
22870
  ).default({})
22612
22871
  }).prefault({ categories: {} }),
22613
22872
  personal: external_exports.record(
22614
22873
  external_exports.string(),
22615
- external_exports.object({ required: external_exports.boolean(), defaultEnabled: external_exports.boolean().optional() })
22874
+ external_exports.object({
22875
+ required: external_exports.boolean(),
22876
+ defaultEnabled: external_exports.boolean().optional(),
22877
+ reason: external_exports.string().optional()
22878
+ })
22616
22879
  ).default({})
22617
22880
  }).prefault({ credentials: { categories: {} }, personal: {} })
22618
22881
  });
22882
+ var ConsentFlowContractScopePatchValidator = external_exports.object({
22883
+ required: external_exports.boolean(),
22884
+ defaultEnabled: external_exports.boolean().optional(),
22885
+ reason: external_exports.string().optional()
22886
+ }).nullable();
22887
+ var ConsentFlowContractChangesValidator = external_exports.object({
22888
+ contract: external_exports.object({
22889
+ read: external_exports.object({
22890
+ anonymize: external_exports.boolean().optional(),
22891
+ credentials: external_exports.object({
22892
+ categories: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
22893
+ }).optional(),
22894
+ personal: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
22895
+ }).optional(),
22896
+ write: external_exports.object({
22897
+ credentials: external_exports.object({
22898
+ categories: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
22899
+ }).optional(),
22900
+ personal: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
22901
+ }).optional()
22902
+ }).optional(),
22903
+ name: external_exports.string().optional(),
22904
+ subtitle: external_exports.string().optional(),
22905
+ description: external_exports.string().optional(),
22906
+ reasonForAccessing: external_exports.string().optional(),
22907
+ image: external_exports.string().optional(),
22908
+ needsGuardianConsent: external_exports.boolean().optional(),
22909
+ redirectUrl: external_exports.string().optional(),
22910
+ frontDoorBoostUri: external_exports.string().optional(),
22911
+ expiresAt: external_exports.string().nullable().optional(),
22912
+ autoboosts: AutoBoostConfigValidator.array().optional(),
22913
+ writers: external_exports.string().array().optional(),
22914
+ recipients: external_exports.string().array().optional()
22915
+ });
22619
22916
  var ConsentFlowContractDetailsValidator = external_exports.object({
22620
22917
  contract: ConsentFlowContractValidator,
22621
22918
  owner: LCNProfileValidator,
@@ -22634,7 +22931,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22634
22931
  autoBoosts: external_exports.string().array().optional(),
22635
22932
  writers: external_exports.array(LCNProfileValidator).optional(),
22636
22933
  recipients: external_exports.array(LCNPublicProfileValidator.extend({ did: external_exports.string() })).optional(),
22637
- audienceVersion: external_exports.number().int().nonnegative().optional()
22934
+ audienceVersion: external_exports.number().int().nonnegative().optional(),
22935
+ version: external_exports.number().int().positive(),
22936
+ status: ConsentFlowContractStatusValidator.optional(),
22937
+ latestUpdate: external_exports.object({
22938
+ fromVersion: external_exports.number().int().positive(),
22939
+ toVersion: external_exports.number().int().positive(),
22940
+ kind: ConsentFlowContractChangeKindValidator,
22941
+ reason: external_exports.string().optional(),
22942
+ diff: ConsentFlowContractDiffValidator,
22943
+ reconsentDeadline: external_exports.string().optional(),
22944
+ createdAt: external_exports.string(),
22945
+ preview: ConsentFlowContractUpdatePreviewValidator
22946
+ }).optional()
22638
22947
  });
22639
22948
  var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied", "cancelled"]).nullable();
22640
22949
  var ConsentFlowContractRequestReadStatusValidator = external_exports.enum(["unseen", "seen"]).nullable();
@@ -22723,7 +23032,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22723
23032
  contract: ConsentFlowContractDetailsValidator,
22724
23033
  uri: external_exports.string(),
22725
23034
  consenter: LCNProfileValidator,
22726
- status: ConsentFlowTermsStatusValidator
23035
+ status: ConsentFlowTermsStatusValidator,
23036
+ consentedVersion: external_exports.number().int().positive(),
23037
+ lastReviewedVersion: external_exports.number().int().positive().optional(),
23038
+ reconsentDeadline: external_exports.string().optional(),
23039
+ newOptionsUntil: external_exports.string().optional(),
23040
+ cumulativeUpdate: ConsentFlowContractDetailsValidator.shape.latestUpdate
22727
23041
  }).array()
22728
23042
  });
22729
23043
  var ConsentFlowGuardianApprovalValidator = external_exports.object({
@@ -22799,7 +23113,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22799
23113
  "update",
22800
23114
  "sync",
22801
23115
  "withdraw",
22802
- "write"
23116
+ "write",
23117
+ "reconsent"
22803
23118
  ]);
22804
23119
  var ConsentFlowTransactionsQueryValidator = external_exports.object({
22805
23120
  terms: ConsentFlowTermsQueryValidator.optional(),
@@ -22818,8 +23133,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22818
23133
  referral: ConsentFlowReferralValidator.optional(),
22819
23134
  id: external_exports.string(),
22820
23135
  action: ConsentFlowTransactionActionValidator,
23136
+ kind: ConsentFlowContractChangeKindValidator.optional(),
22821
23137
  date: external_exports.string(),
22822
- uris: external_exports.string().array().optional()
23138
+ uris: external_exports.string().array().optional(),
23139
+ consentedVersion: external_exports.number().int().positive().optional(),
23140
+ reconsentDeadline: external_exports.string().optional(),
23141
+ newOptionsUntil: external_exports.string().optional()
22823
23142
  });
22824
23143
  var HolderExportConsentRecordValidator = external_exports.object({
22825
23144
  termsUri: external_exports.string(),
@@ -22827,6 +23146,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22827
23146
  contract: ConsentFlowContractDetailsValidator,
22828
23147
  terms: ConsentFlowTermsValidator,
22829
23148
  referral: ConsentFlowReferralValidator.optional(),
23149
+ consentedVersion: external_exports.number().int().positive(),
23150
+ reconsentDeadline: external_exports.string().optional(),
23151
+ newOptionsUntil: external_exports.string().optional(),
23152
+ cumulativeUpdate: ConsentFlowContractDetailsValidator.shape.latestUpdate,
22830
23153
  transactions: ConsentFlowTransactionValidator.array()
22831
23154
  });
22832
23155
  var HolderExportMetadataValidator = external_exports.object({
@@ -22887,10 +23210,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22887
23210
  "GUARDIAN_APPROVED",
22888
23211
  "GUARDIAN_REJECTED",
22889
23212
  "APP_NOTIFICATION",
23213
+ "ANNOUNCEMENT",
22890
23214
  "CREDENTIAL_REVOKED",
22891
23215
  "CREDENTIAL_SUSPENDED",
22892
23216
  "CREDENTIAL_UNSUSPENDED",
22893
- "CREDENTIAL_REFRESHED"
23217
+ "CREDENTIAL_REFRESHED",
23218
+ "CONSENT_FLOW_CONTRACT_UPDATED"
22894
23219
  ]);
22895
23220
  var LCNNotificationMessageValidator = external_exports.object({
22896
23221
  title: external_exports.string().optional(),
@@ -22919,12 +23244,26 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22919
23244
  timestamp: external_exports.iso.datetime().optional()
22920
23245
  });
22921
23246
  var LCNNotificationMetadataValidator = external_exports.object({
22922
- connectionPrompt: LCNConnectionPromptMetadataValidator.optional()
23247
+ connectionPrompt: LCNConnectionPromptMetadataValidator.optional(),
23248
+ campaignId: external_exports.string().regex(/^[a-z0-9-]{3,64}$/).optional(),
23249
+ campaignCreatedAt: external_exports.iso.datetime().optional(),
23250
+ campaignHasInApp: external_exports.boolean().optional(),
23251
+ campaignTestId: external_exports.uuid().optional()
22923
23252
  }).catchall(external_exports.unknown());
22924
23253
  var LCNNotificationDataValidator = external_exports.object({
22925
23254
  vcUris: external_exports.array(external_exports.string()).optional(),
22926
23255
  vpUris: external_exports.array(external_exports.string()).optional(),
22927
23256
  transaction: ConsentFlowTransactionValidator.optional(),
23257
+ contractUri: external_exports.string().optional(),
23258
+ contractName: external_exports.string().optional(),
23259
+ fromVersion: external_exports.number().int().positive().optional(),
23260
+ toVersion: external_exports.number().int().positive().optional(),
23261
+ kind: ConsentFlowContractChangeKindValidator.optional(),
23262
+ reason: external_exports.string().optional(),
23263
+ diff: ConsentFlowContractDiffValidator.optional(),
23264
+ reconsentDeadline: external_exports.string().optional(),
23265
+ reviewUrl: external_exports.string().optional(),
23266
+ preview: ConsentFlowContractUpdatePreviewValidator.optional(),
22928
23267
  inbox: LCNNotificationInboxValidator.optional(),
22929
23268
  metadata: LCNNotificationMetadataValidator.optional()
22930
23269
  }).loose();
@@ -24037,29 +24376,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24037
24376
  */
24038
24377
  wrongAttempts: external_exports.number().int().nonnegative().optional()
24039
24378
  });
24040
- var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
24041
- var DEFAULT_BITSTRING_STATUS_LIST_SIZE = 131072;
24042
- var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
24043
- var BitstringStatusListEntryValidator = external_exports.object({
24044
- id: external_exports.string().optional(),
24045
- type: external_exports.literal("BitstringStatusListEntry"),
24046
- statusPurpose: BitstringStatusPurposeValidator,
24047
- statusListIndex: external_exports.string().or(external_exports.number().int().nonnegative()),
24048
- statusListCredential: external_exports.string()
24049
- });
24050
- var AllocatedBitstringStatusListEntryValidator = BitstringStatusListEntryValidator.extend({
24051
- id: external_exports.string()
24052
- });
24053
- var BitstringStatusListCredentialSubjectValidator = external_exports.object({
24054
- id: external_exports.string().optional(),
24055
- type: external_exports.literal("BitstringStatusList"),
24056
- statusPurpose: BitstringStatusPurposeValidator,
24057
- encodedList: external_exports.string()
24058
- });
24059
- var AllocateCredentialStatusInputValidator = external_exports.object({
24060
- statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
24061
- listSize: external_exports.number().int().positive().optional()
24062
- }).default({});
24063
24379
  var isSafeInAppMessagePath = /* @__PURE__ */ __name2((path) => {
24064
24380
  let decoded = path;
24065
24381
  for (let depth = 0; depth < 5; depth += 1) {
@@ -24387,24 +24703,46 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24387
24703
  }, "parseInAppMessagesFlag");
24388
24704
  var CampaignIdValidator = external_exports.string().regex(/^[a-z0-9-]{3,64}$/);
24389
24705
  var CampaignStatusValidator = external_exports.enum(["draft", "live", "paused", "archived"]);
24390
- var CampaignChannelValidator = external_exports.enum(["inApp", "notify"]);
24706
+ var CampaignChannelValidator = external_exports.enum(["inApp", "notify", "email"]);
24391
24707
  var CampaignEventValidator = external_exports.enum(["shown", "clicked", "dismissed", "converted"]);
24392
- var timestamp = external_exports.iso.datetime({ offset: true }).overwrite((value) => new Date(value).toISOString());
24708
+ var timestamp = external_exports.iso.datetime({ offset: true }).overwrite((value) => {
24709
+ const date5 = new Date(value);
24710
+ return Number.isFinite(date5.getTime()) ? date5.toISOString() : value;
24711
+ });
24393
24712
  var notification = external_exports.object({ title: external_exports.string().min(1), body: external_exports.string().min(1) }).strict();
24394
- var channels = external_exports.array(CampaignChannelValidator).min(1).max(2).refine((values) => new Set(values).size === values.length, "Channels must be unique");
24713
+ var CampaignEmailValidator = external_exports.object({
24714
+ subject: external_exports.string().trim().min(1).max(200).regex(/^[^\r\n]+$/),
24715
+ title: external_exports.string().trim().min(1).max(200),
24716
+ body: external_exports.string().trim().min(1).max(2e4),
24717
+ heroImageUrl: external_exports.url().startsWith("https://").max(2048).optional(),
24718
+ ctaLabel: external_exports.string().trim().min(1).max(100)
24719
+ }).strict();
24720
+ var AnnouncementPreferencesValidator = external_exports.object({
24721
+ announcementEmailOptOut: external_exports.boolean(),
24722
+ announcementPushOptOut: external_exports.boolean()
24723
+ }).strict();
24724
+ var channels = external_exports.array(CampaignChannelValidator).min(1).max(3).refine((values) => new Set(values).size === values.length, "Channels must be unique");
24395
24725
  var campaignDefinition = external_exports.object({
24396
24726
  id: CampaignIdValidator,
24397
24727
  name: external_exports.string().trim().min(1).max(200),
24398
24728
  status: CampaignStatusValidator.default("draft"),
24399
24729
  channels,
24400
- message: inAppMessageValidator,
24730
+ message: inAppMessageValidator.optional(),
24401
24731
  notification: notification.optional(),
24732
+ email: CampaignEmailValidator.optional(),
24402
24733
  startsAt: timestamp.optional(),
24403
24734
  endsAt: timestamp.optional(),
24404
24735
  excludeMinors: external_exports.boolean().default(true),
24405
24736
  selfEnroll: external_exports.boolean().default(false)
24406
24737
  }).strict();
24407
24738
  var validDefinition = /* @__PURE__ */ __name2((value, ctx) => {
24739
+ if (value.channels.includes("inApp") && !value.message) {
24740
+ ctx.addIssue({
24741
+ code: "custom",
24742
+ path: ["message"],
24743
+ message: "In-app requires a message"
24744
+ });
24745
+ }
24408
24746
  if (value.channels.includes("notify") && !value.notification) {
24409
24747
  ctx.addIssue({
24410
24748
  code: "custom",
@@ -24412,15 +24750,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24412
24750
  message: "Notify requires a title and body"
24413
24751
  });
24414
24752
  }
24753
+ if (value.channels.includes("email") && !value.email) {
24754
+ ctx.addIssue({
24755
+ code: "custom",
24756
+ path: ["email"],
24757
+ message: "Email requires announcement content"
24758
+ });
24759
+ }
24415
24760
  if (value.startsAt && value.endsAt && value.startsAt >= value.endsAt) {
24416
24761
  ctx.addIssue({ code: "custom", path: ["endsAt"], message: "End must be after start" });
24417
24762
  }
24418
24763
  }, "validDefinition");
24419
24764
  var CampaignValidator = campaignDefinition.extend({
24765
+ tenantId: external_exports.string().optional(),
24420
24766
  createdAt: timestamp,
24421
24767
  updatedAt: timestamp
24422
24768
  }).superRefine(validDefinition).superRefine((value, ctx) => {
24423
- if (value.message.id !== value.id) {
24769
+ if (value.message && value.message.id !== value.id) {
24424
24770
  ctx.addIssue({
24425
24771
  code: "custom",
24426
24772
  path: ["message", "id"],
@@ -24429,21 +24775,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24429
24775
  }
24430
24776
  });
24431
24777
  var CreateCampaignInputValidator = campaignDefinition.extend({
24432
- message: inAppMessageAuthoringValidator
24778
+ message: inAppMessageAuthoringValidator.optional()
24433
24779
  }).superRefine(validDefinition);
24434
24780
  var CampaignUpdatesValidator = campaignDefinition.omit({ id: true }).partial().extend({
24435
24781
  // A PATCH must not apply creation defaults to fields the caller omitted.
24436
24782
  status: CampaignStatusValidator.optional(),
24437
24783
  excludeMinors: external_exports.boolean().optional(),
24438
24784
  selfEnroll: external_exports.boolean().optional(),
24439
- message: inAppMessageAuthoringValidator.optional(),
24785
+ message: inAppMessageAuthoringValidator.nullable().optional(),
24440
24786
  notification: notification.nullable().optional(),
24787
+ email: CampaignEmailValidator.nullable().optional(),
24441
24788
  startsAt: timestamp.nullable().optional(),
24442
24789
  endsAt: timestamp.nullable().optional()
24443
24790
  }).strict();
24444
24791
  var UpdateCampaignInputValidator = external_exports.object({
24445
24792
  campaignId: CampaignIdValidator,
24446
- updates: CampaignUpdatesValidator
24793
+ updates: CampaignUpdatesValidator,
24794
+ expectedUpdatedAt: timestamp.optional()
24447
24795
  }).strict();
24448
24796
  var identifier = external_exports.string().trim().min(1).max(2048);
24449
24797
  var metadataKey = external_exports.string().regex(/^[a-zA-Z_][a-zA-Z0-9_.-]{0,63}$/).refine(
@@ -24495,7 +24843,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24495
24843
  clickedAt: timestamp.optional(),
24496
24844
  dismissedAt: timestamp.optional(),
24497
24845
  convertedAt: timestamp.optional(),
24498
- notifiedAt: timestamp.optional()
24846
+ notifiedAt: timestamp.optional(),
24847
+ emailedAt: timestamp.optional()
24499
24848
  });
24500
24849
  var MyCampaignValidator = external_exports.object({
24501
24850
  campaign: campaignDefinition.pick({
@@ -24504,12 +24853,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24504
24853
  startsAt: true,
24505
24854
  endsAt: true,
24506
24855
  selfEnroll: true
24507
- }),
24508
- state: CampaignUserStateValidator
24856
+ }).extend({ message: inAppMessageValidator }),
24857
+ state: CampaignUserStateValidator,
24858
+ testId: external_exports.uuid().optional()
24859
+ });
24860
+ var CampaignTestValidator = external_exports.object({
24861
+ id: external_exports.uuid(),
24862
+ campaignId: CampaignIdValidator,
24863
+ message: inAppMessageValidator
24509
24864
  });
24510
24865
  var CampaignStatsValidator = external_exports.object({
24511
24866
  audience: external_exports.number().int().nonnegative(),
24512
24867
  notified: external_exports.number().int().nonnegative(),
24868
+ emailed: external_exports.number().int().nonnegative(),
24513
24869
  shown: external_exports.number().int().nonnegative(),
24514
24870
  clicked: external_exports.number().int().nonnegative(),
24515
24871
  dismissed: external_exports.number().int().nonnegative(),
@@ -24536,6 +24892,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24536
24892
  hasMore: external_exports.boolean(),
24537
24893
  cursor: external_exports.string().optional()
24538
24894
  });
24895
+ var CampaignDispatchPreviewValidator = external_exports.object({
24896
+ campaignId: CampaignIdValidator,
24897
+ audienceCount: external_exports.number().int().nonnegative(),
24898
+ alreadyNotifiedCount: external_exports.number().int().nonnegative(),
24899
+ recipientCount: external_exports.number().int().nonnegative(),
24900
+ notificationRecipientCount: external_exports.number().int().nonnegative().optional(),
24901
+ emailRecipientCount: external_exports.number().int().nonnegative().optional(),
24902
+ previewToken: external_exports.string().regex(/^[a-f0-9]{64}$/),
24903
+ blockedReason: external_exports.enum([
24904
+ "not_live",
24905
+ "notify_disabled",
24906
+ "email_confirmation_required",
24907
+ "not_started",
24908
+ "ended",
24909
+ "no_recipients"
24910
+ ]).optional()
24911
+ });
24912
+ var CampaignDispatchOptionsValidator = external_exports.object({
24913
+ expectedPreviewToken: CampaignDispatchPreviewValidator.shape.previewToken.optional()
24914
+ }).strict();
24915
+ var CampaignAudienceResultValidator = external_exports.object({
24916
+ count: external_exports.number().int().nonnegative(),
24917
+ added: external_exports.number().int().nonnegative(),
24918
+ notFound: external_exports.array(external_exports.string())
24919
+ });
24539
24920
  var SHARE_LINK_ID_BYTES = 16;
24540
24921
  var SHARE_CONTENT_KEY_BYTES = 32;
24541
24922
  var SHARE_IV_BYTES = 12;
@@ -25060,6 +25441,217 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
25060
25441
  }
25061
25442
  );
25062
25443
  var GenerateSkillIconsInputValidator = external_exports.object({ names: SkillIconNamesValidator });
25444
+ var RoleValidator = external_exports.enum(["user", "assistant", "tool", "system"]);
25445
+ var AiSessionMode = {
25446
+ tutor: "ai-tutor",
25447
+ insights: "ai-insights"
25448
+ };
25449
+ var AiSessionModeValidator = external_exports.enum([AiSessionMode.tutor, AiSessionMode.insights]);
25450
+ var StructuredResponseValidator = external_exports.object({
25451
+ notes: external_exports.string().optional(),
25452
+ questions: external_exports.array(external_exports.string())
25453
+ });
25454
+ var IntroStreamModeValidator = external_exports.enum(["formatted", "structured"]);
25455
+ var ChatMessageValidator = external_exports.object({
25456
+ role: RoleValidator,
25457
+ content: external_exports.string().nullable(),
25458
+ tool_call_id: external_exports.string().optional(),
25459
+ tool_calls: external_exports.array(
25460
+ external_exports.object({
25461
+ id: external_exports.string(),
25462
+ type: external_exports.literal("function"),
25463
+ function: external_exports.object({
25464
+ name: external_exports.string(),
25465
+ arguments: external_exports.string()
25466
+ })
25467
+ })
25468
+ ).optional()
25469
+ });
25470
+ var InsightArtifactValidator = external_exports.object({
25471
+ title: external_exports.string(),
25472
+ summary: external_exports.string(),
25473
+ category: external_exports.string(),
25474
+ question: external_exports.string(),
25475
+ narrative: external_exports.string()
25476
+ });
25477
+ var ArtifactSuggestionValidator = external_exports.object({
25478
+ artifact: InsightArtifactValidator,
25479
+ source_text: external_exports.string().optional(),
25480
+ created_at: external_exports.string()
25481
+ });
25482
+ var ThreadCredentialContextValidator = external_exports.object({
25483
+ uri: external_exports.string(),
25484
+ type: external_exports.string(),
25485
+ context: external_exports.string(),
25486
+ score: external_exports.number(),
25487
+ strongestScore: external_exports.number().optional(),
25488
+ averageScore: external_exports.number().optional(),
25489
+ matchCount: external_exports.number().optional(),
25490
+ title: external_exports.string().optional()
25491
+ });
25492
+ var ThreadValidator = external_exports.object({
25493
+ id: external_exports.string(),
25494
+ did: external_exports.string(),
25495
+ topicCredentialUri: external_exports.string().nullable().optional(),
25496
+ title: external_exports.string(),
25497
+ created_at: external_exports.string(),
25498
+ last_message_at: external_exports.string(),
25499
+ active: external_exports.boolean().optional(),
25500
+ ended_at: external_exports.string().optional(),
25501
+ plan_started_at: external_exports.string().optional(),
25502
+ summaries: external_exports.array(
25503
+ external_exports.object({
25504
+ summary_data: external_exports.string(),
25505
+ credential_uri: external_exports.string(),
25506
+ created_at: external_exports.string()
25507
+ })
25508
+ ).optional(),
25509
+ plans: external_exports.array(
25510
+ external_exports.object({
25511
+ plan_data: external_exports.string(),
25512
+ created_at: external_exports.string(),
25513
+ consentRevision: external_exports.string().optional()
25514
+ })
25515
+ ).optional(),
25516
+ credentials: external_exports.array(ThreadCredentialContextValidator).optional(),
25517
+ credentialSearchTopic: external_exports.string().optional(),
25518
+ credentialContextStatus: external_exports.enum(["pending", "ready", "empty", "error"]).optional(),
25519
+ mode: AiSessionModeValidator.optional(),
25520
+ artifactSuggestions: external_exports.array(ArtifactSuggestionValidator).optional()
25521
+ });
25522
+ var CredentialVerificationMetadataValidator = external_exports.object({
25523
+ credentialUri: external_exports.string(),
25524
+ contentHash: external_exports.string().regex(/^[a-f0-9]{64}$/),
25525
+ status: external_exports.enum(["valid", "invalid"]),
25526
+ checkedAt: external_exports.string().datetime(),
25527
+ verifier: external_exports.object({
25528
+ name: external_exports.string(),
25529
+ version: external_exports.string()
25530
+ }),
25531
+ verifiedPayload: external_exports.enum(["credential", "boostCredential"]),
25532
+ checks: external_exports.array(external_exports.string()),
25533
+ errors: external_exports.array(external_exports.string()),
25534
+ warnings: external_exports.array(external_exports.string()),
25535
+ provenance: external_exports.object({
25536
+ source: external_exports.enum(["wallet", "generated"]),
25537
+ retrievedAt: external_exports.string().datetime()
25538
+ }),
25539
+ consent: external_exports.object({
25540
+ contractUri: external_exports.string(),
25541
+ receiptId: external_exports.string().min(1),
25542
+ grantedAt: external_exports.string().datetime().optional(),
25543
+ updatedAt: external_exports.string().datetime(),
25544
+ contractUpdatedAt: external_exports.string().min(1),
25545
+ status: external_exports.literal("live"),
25546
+ expiresAt: external_exports.string().datetime().optional(),
25547
+ contractExpiresAt: external_exports.string().datetime().optional(),
25548
+ categories: external_exports.array(external_exports.string()),
25549
+ credentialUris: external_exports.array(external_exports.string()),
25550
+ personalFields: external_exports.array(external_exports.string()),
25551
+ purpose: external_exports.enum(["credential-ingestion", "model-inference", "embedding"]),
25552
+ revision: external_exports.string().min(1),
25553
+ guardian: external_exports.object({ required: external_exports.boolean(), approved: external_exports.boolean() })
25554
+ })
25555
+ });
25556
+ var ModelSafeCredentialFactValidator = external_exports.object({
25557
+ kind: external_exports.enum([
25558
+ "skill",
25559
+ "goal",
25560
+ "achievement",
25561
+ "course",
25562
+ "experience",
25563
+ "competency",
25564
+ "title",
25565
+ "summary",
25566
+ "assessment",
25567
+ "grade",
25568
+ "date",
25569
+ "alignment",
25570
+ "criteria",
25571
+ "pathway",
25572
+ "topic"
25573
+ ]),
25574
+ value: external_exports.string().min(1).max(240),
25575
+ label: external_exports.string().min(1).max(120).optional()
25576
+ });
25577
+ var ModelSafeCredentialProjectionValidator = external_exports.object({
25578
+ schemaVersion: external_exports.literal("1"),
25579
+ category: external_exports.string().min(1).max(120),
25580
+ credentialTypes: external_exports.array(external_exports.string().min(1).max(120)).max(20),
25581
+ facts: external_exports.array(ModelSafeCredentialFactValidator).max(100),
25582
+ // Present only on credentials that are past their expiry, so the model can
25583
+ // tell a lapsed credential from a current one.
25584
+ expired: external_exports.literal(true).optional(),
25585
+ expirationDate: external_exports.string().datetime().optional()
25586
+ });
25587
+ var AIPassportCredentialRecordValidator = external_exports.object({
25588
+ id: external_exports.string(),
25589
+ uri: external_exports.string(),
25590
+ category: external_exports.string(),
25591
+ credential: VCValidator,
25592
+ aiContext: external_exports.string(),
25593
+ generalSummary: external_exports.string().optional(),
25594
+ createdAt: external_exports.string(),
25595
+ verification: CredentialVerificationMetadataValidator.optional(),
25596
+ projection: ModelSafeCredentialProjectionValidator.optional()
25597
+ });
25598
+ var AuthenticatedMessageValidator = external_exports.object({
25599
+ message: ChatMessageValidator.optional(),
25600
+ threadId: external_exports.string().optional(),
25601
+ selectedQuestion: external_exports.string().optional(),
25602
+ action: external_exports.enum([
25603
+ "start_topic",
25604
+ "continue_plan",
25605
+ "start_topic_uri",
25606
+ "start_learning_pathway",
25607
+ "start_insights_session",
25608
+ "close_insights_session",
25609
+ "artifact_suggestion"
25610
+ ]).optional(),
25611
+ topic: external_exports.string().optional(),
25612
+ topicUri: external_exports.string().optional(),
25613
+ pathwayUri: external_exports.string().optional(),
25614
+ mode: AiSessionModeValidator.optional(),
25615
+ introStreamMode: IntroStreamModeValidator.optional(),
25616
+ // BCP-47 language for AI responses (LC-1901). This has to live on the
25617
+ // validator, not just the inferred type — z.object strips unknown keys, so an
25618
+ // undeclared `locale` would be dropped before the WS handler ever saw it.
25619
+ locale: external_exports.string().nullish()
25620
+ });
25621
+ var DebugInfoValidator = external_exports.object({
25622
+ operation: external_exports.string(),
25623
+ collection: external_exports.string(),
25624
+ input: external_exports.unknown().optional(),
25625
+ output: external_exports.unknown().optional(),
25626
+ timestamp: external_exports.string(),
25627
+ duration: external_exports.number().optional()
25628
+ });
25629
+ var TimingEventValidator = external_exports.object({
25630
+ event: external_exports.literal("timing"),
25631
+ operation: external_exports.string(),
25632
+ phase: external_exports.enum(["start", "end", "complete"]),
25633
+ duration: external_exports.number().optional(),
25634
+ metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
25635
+ timestamp: external_exports.string()
25636
+ });
25637
+ var LearningPathwayValidator = external_exports.object({
25638
+ id: external_exports.string(),
25639
+ learningPathway: external_exports.object({
25640
+ stepIndex: external_exports.number(),
25641
+ step: external_exports.object({
25642
+ title: external_exports.string(),
25643
+ description: external_exports.string(),
25644
+ summary: external_exports.string(),
25645
+ learned: external_exports.array(external_exports.string()),
25646
+ skills: external_exports.array(
25647
+ external_exports.object({
25648
+ title: external_exports.string(),
25649
+ description: external_exports.string()
25650
+ })
25651
+ )
25652
+ })
25653
+ })
25654
+ });
25063
25655
  }
25064
25656
  });
25065
25657
 
@@ -25924,6 +26516,8 @@ var inferW3cVersionFromContext = /* @__PURE__ */ __name((vc) => {
25924
26516
 
25925
26517
  // src/credential-refresh.ts
25926
26518
  var import_types2 = __toESM(require_dist());
26519
+ var BITSTRING_STATUS_LIST_CONTEXT = "https://www.w3.org/ns/credentials/status/v1";
26520
+ var VC_V2_CONTEXT = "https://www.w3.org/ns/credentials/v2";
25927
26521
  var getSupportedRefreshService = /* @__PURE__ */ __name((vc) => {
25928
26522
  const refreshService = vc?.refreshService;
25929
26523
  if (!refreshService) return void 0;
@@ -25961,6 +26555,33 @@ var canonicalizeCredentialContent = /* @__PURE__ */ __name((value) => {
25961
26555
  return value;
25962
26556
  }, "canonicalizeCredentialContent");
25963
26557
  var canonicalizeCredentialJson = /* @__PURE__ */ __name((value) => JSON.stringify(canonicalizeCredentialContent(value)), "canonicalizeCredentialJson");
26558
+ var assertExactJweRecipients = /* @__PURE__ */ __name((jwe, recipientKeyIds) => {
26559
+ const expected = new Set(recipientKeyIds);
26560
+ const recipients = jwe.recipients ?? [];
26561
+ const actual = recipients.map((recipient) => recipient.header.kid);
26562
+ if (expected.size === 0 || expected.size !== recipientKeyIds.length || actual.length !== expected.size || new Set(actual).size !== actual.length || actual.some((kid) => !kid || !expected.has(kid))) {
26563
+ throw new Error("ENCRYPTION_RECIPIENTS_MISMATCH");
26564
+ }
26565
+ }, "assertExactJweRecipients");
26566
+ var credentialRefreshBindingsEqual = /* @__PURE__ */ __name((credential, baseline) => canonicalizeCredentialJson(credential.credentialStatus) === canonicalizeCredentialJson(baseline.credentialStatus) && canonicalizeCredentialJson(credential.refreshService) === canonicalizeCredentialJson(baseline.refreshService), "credentialRefreshBindingsEqual");
26567
+ var assertManagedCredentialBinding = /* @__PURE__ */ __name((credential, receipt) => {
26568
+ const subjects = Array.isArray(credential.credentialSubject) ? credential.credentialSubject : [credential.credentialSubject];
26569
+ const holderMatches = subjects.length > 0 && subjects.every(
26570
+ (subject) => typeof subject === "object" && subject !== null && "id" in subject && subject.id === receipt.holderDid
26571
+ );
26572
+ const managedServices = getManagedRefreshServices(credential);
26573
+ const services = Array.isArray(credential.refreshService) ? credential.refreshService : [credential.refreshService];
26574
+ const managedEntryCount = services.filter(
26575
+ (service) => service?.type === "LearnCardCredentialRefresh2026"
26576
+ ).length;
26577
+ const bindingsMatch = receipt.refreshServiceBinding === "managed-entry" ? managedServices.length === 1 && managedEntryCount === 1 && credentialRefreshBindingsEqual(
26578
+ { ...credential, refreshService: managedServices[0] },
26579
+ receipt
26580
+ ) : credentialRefreshBindingsEqual(credential, receipt);
26581
+ if (credential.id !== receipt.credentialId || getCredentialIssuerId(credential) !== receipt.issuerDid || !holderMatches || !bindingsMatch) {
26582
+ throw new Error("MANAGED_CREDENTIAL_BINDING_MISMATCH");
26583
+ }
26584
+ }, "assertManagedCredentialBinding");
25964
26585
  var MANAGED_REFRESH_TYPE_TERM = "LearnCardCredentialRefresh2026";
25965
26586
  var MANAGED_REFRESH_DID_AUTH_TERM = "LearnCardDIDAuth";
25966
26587
  var MANAGED_REFRESH_TYPE_IRI = "https://learncard.com/refresh#LearnCardCredentialRefresh2026";
@@ -26011,6 +26632,18 @@ var prepareManagedRefreshContext = /* @__PURE__ */ __name((credential) => {
26011
26632
  const existingContext = credential["@context"];
26012
26633
  const contextList = existingContext === void 0 || existingContext === null ? [] : Array.isArray(existingContext) ? [...existingContext] : [existingContext];
26013
26634
  const inlineObjects = contextList.filter(isPlainObject);
26635
+ let addedStatusContext = false;
26636
+ if (getBitstringStatusListEntries(credential).length > 0 && !contextList.some(
26637
+ (context) => context === VC_V2_CONTEXT || context === BITSTRING_STATUS_LIST_CONTEXT
26638
+ )) {
26639
+ const firstInline = contextList.findIndex(isPlainObject);
26640
+ contextList.splice(
26641
+ firstInline === -1 ? contextList.length : firstInline,
26642
+ 0,
26643
+ BITSTRING_STATUS_LIST_CONTEXT
26644
+ );
26645
+ addedStatusContext = true;
26646
+ }
26014
26647
  const fragment = {};
26015
26648
  const typeDefinition = findTopLevelDefinition(inlineObjects, MANAGED_REFRESH_TYPE_TERM);
26016
26649
  if (typeDefinition === void 0) {
@@ -26060,10 +26693,11 @@ var prepareManagedRefreshContext = /* @__PURE__ */ __name((credential) => {
26060
26693
  );
26061
26694
  }
26062
26695
  }
26063
- if (Object.keys(fragment).length === 0) return credential;
26696
+ const hasFragment = Object.keys(fragment).length > 0;
26697
+ if (!hasFragment && !addedStatusContext) return credential;
26064
26698
  return {
26065
26699
  ...credential,
26066
- "@context": [...contextList, fragment]
26700
+ "@context": hasFragment ? [...contextList, fragment] : contextList
26067
26701
  };
26068
26702
  }, "prepareManagedRefreshContext");
26069
26703
  var injectManagedRefreshService = /* @__PURE__ */ __name((credential, refreshService) => {
@@ -26252,6 +26886,391 @@ var canonicalizeShareContentRequestBody = /* @__PURE__ */ __name((body, options
26252
26886
  return serialized;
26253
26887
  }, "canonicalizeShareContentRequestBody");
26254
26888
 
26889
+ // src/consent-flow-contract-updates.ts
26890
+ var hasOpenNewOptionsWindow = /* @__PURE__ */ __name((newOptionsUntil, now = Date.now()) => Boolean(newOptionsUntil && Date.parse(newOptionsUntil) > now), "hasOpenNewOptionsWindow");
26891
+ var scopes = /* @__PURE__ */ __name((contract) => {
26892
+ const result = [];
26893
+ for (const area of ["read", "write"]) {
26894
+ const access = contract[area];
26895
+ for (const [key, config] of Object.entries(access.credentials.categories)) {
26896
+ result.push({
26897
+ area,
26898
+ type: "credential",
26899
+ key,
26900
+ required: config.required,
26901
+ reason: config.reason
26902
+ });
26903
+ }
26904
+ for (const [key, config] of Object.entries(access.personal)) {
26905
+ result.push({
26906
+ area,
26907
+ type: "personal",
26908
+ key,
26909
+ required: config.required,
26910
+ reason: config.reason
26911
+ });
26912
+ }
26913
+ }
26914
+ return result.sort((a, b) => scopeKey(a).localeCompare(scopeKey(b)));
26915
+ }, "scopes");
26916
+ var scopeKey = /* @__PURE__ */ __name(({ area, type, key }) => `${area}:${type}:${key}`, "scopeKey");
26917
+ var diffScopes = /* @__PURE__ */ __name((previous, current) => {
26918
+ const before = new Map(previous.map((scope) => [scopeKey(scope), scope]));
26919
+ const after = new Map(current.map((scope) => [scopeKey(scope), scope]));
26920
+ const added = [];
26921
+ const removed = [];
26922
+ const changed = [];
26923
+ for (const [key, scope] of after) {
26924
+ const old = before.get(key);
26925
+ if (!old) added.push(scope);
26926
+ else if (old.required !== scope.required || old.reason !== scope.reason)
26927
+ changed.push(scope);
26928
+ }
26929
+ for (const [key, scope] of before) if (!after.has(key)) removed.push(scope);
26930
+ const sort = /* @__PURE__ */ __name((list) => list.sort((a, b) => scopeKey(a).localeCompare(scopeKey(b))), "sort");
26931
+ return { added: sort(added), removed: sort(removed), changed: sort(changed) };
26932
+ }, "diffScopes");
26933
+ var DETAIL_FIELDS = [
26934
+ "name",
26935
+ "subtitle",
26936
+ "description",
26937
+ "reasonForAccessing",
26938
+ "image",
26939
+ "needsGuardianConsent",
26940
+ "redirectUrl",
26941
+ "frontDoorBoostUri",
26942
+ "expiresAt"
26943
+ ];
26944
+ var diffContractChange = /* @__PURE__ */ __name((prev, next) => {
26945
+ const details = [];
26946
+ for (const field of DETAIL_FIELDS) {
26947
+ const before = field === "needsGuardianConsent" ? !!prev[field] : prev[field];
26948
+ const after = field === "needsGuardianConsent" ? !!next[field] : next[field];
26949
+ if (before !== after) details.push({ field, before, after });
26950
+ }
26951
+ for (const field of ["writers", "autoboosts"]) {
26952
+ const before = [...set(prev[field])].sort();
26953
+ const after = [...set(next[field])].sort();
26954
+ if (before.length !== after.length || before.some((value, index) => value !== after[index])) {
26955
+ details.push({ field, before, after });
26956
+ }
26957
+ }
26958
+ return {
26959
+ ...diffScopes(scopes(prev.contract), scopes(next.contract)),
26960
+ ...details.length ? { details } : {}
26961
+ };
26962
+ }, "diffContractChange");
26963
+ var expiryIsStricter = /* @__PURE__ */ __name((previous, next) => {
26964
+ if (!next) return false;
26965
+ if (!previous) return true;
26966
+ const oldTime = Date.parse(previous);
26967
+ const newTime = Date.parse(next);
26968
+ return Number.isFinite(oldTime) && Number.isFinite(newTime) && newTime < oldTime;
26969
+ }, "expiryIsStricter");
26970
+ var canonicalIdentity = /* @__PURE__ */ __name((value) => {
26971
+ if (typeof value === "string") return value;
26972
+ if (value && typeof value === "object") {
26973
+ if (Array.isArray(value)) return `[${value.map(canonicalIdentity).join(",")}]`;
26974
+ const record = value;
26975
+ const identity = record.uri ?? record.id ?? record.boostUri;
26976
+ if (typeof identity === "string") return identity;
26977
+ return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonicalIdentity(record[key])}`).join(",")}}`;
26978
+ }
26979
+ return JSON.stringify(value) ?? String(value);
26980
+ }, "canonicalIdentity");
26981
+ var set = /* @__PURE__ */ __name((values) => new Set((values ?? []).map(canonicalIdentity)), "set");
26982
+ var classifyContractChange = /* @__PURE__ */ __name((prev, next) => {
26983
+ const previousScopes = scopes(prev.contract);
26984
+ const diff = diffScopes(previousScopes, scopes(next.contract));
26985
+ const before = new Map(previousScopes.map((scope) => [scopeKey(scope), scope]));
26986
+ let requiresConsent = next.name !== prev.name || next.reasonForAccessing !== prev.reasonForAccessing || !prev.needsGuardianConsent && !!next.needsGuardianConsent || expiryIsStricter(prev.expiresAt, next.expiresAt) || next.writers?.some((writer) => !prev.writers?.includes(writer)) === true;
26987
+ let expandedOptional = false;
26988
+ for (const scope of diff.added) {
26989
+ if (scope.required) requiresConsent = true;
26990
+ else expandedOptional = true;
26991
+ }
26992
+ for (const scope of diff.changed) {
26993
+ const previous = before.get(scopeKey(scope));
26994
+ if (scope.reason !== previous?.reason || scope.required && !previous?.required)
26995
+ requiresConsent = true;
26996
+ }
26997
+ const oldBoosts = set(prev.autoboosts);
26998
+ if ([...set(next.autoboosts)].some((boost) => !oldBoosts.has(boost))) requiresConsent = true;
26999
+ if (requiresConsent) return "requires_consent";
27000
+ if (expandedOptional) return "expanded_optional";
27001
+ return "relaxed";
27002
+ }, "classifyContractChange");
27003
+ var CANONICAL_SCOPE_COPY = {
27004
+ TRANSCRIPT: {
27005
+ messageKey: "transcripts",
27006
+ label: "Transcripts",
27007
+ description: "Records of completed courses and learning."
27008
+ },
27009
+ TRANSCRIPTS: {
27010
+ messageKey: "transcripts",
27011
+ label: "Transcripts",
27012
+ description: "Records of completed courses and learning."
27013
+ },
27014
+ CERTIFICATE: {
27015
+ messageKey: "certificates",
27016
+ label: "Certificates",
27017
+ description: "Credentials recognizing qualifications or completed learning."
27018
+ },
27019
+ CERTIFICATES: {
27020
+ messageKey: "certificates",
27021
+ label: "Certificates",
27022
+ description: "Credentials recognizing qualifications or completed learning."
27023
+ },
27024
+ ACHIEVEMENT: {
27025
+ messageKey: "achievements",
27026
+ label: "Achievements",
27027
+ description: "Milestones earned through effort, skill, or perseverance."
27028
+ },
27029
+ ACHIEVEMENTS: {
27030
+ messageKey: "achievements",
27031
+ label: "Achievements",
27032
+ description: "Milestones earned through effort, skill, or perseverance."
27033
+ },
27034
+ SKILL: {
27035
+ messageKey: "skills",
27036
+ label: "Skills",
27037
+ description: "Abilities developed through training, practice, or experience."
27038
+ },
27039
+ SKILLS: {
27040
+ messageKey: "skills",
27041
+ label: "Skills",
27042
+ description: "Abilities developed through training, practice, or experience."
27043
+ },
27044
+ "WORK HISTORY": {
27045
+ messageKey: "workHistory",
27046
+ label: "Work History",
27047
+ description: "Professional roles and activities over time."
27048
+ },
27049
+ "LEARNING HISTORY": {
27050
+ messageKey: "learningHistory",
27051
+ label: "Learning History",
27052
+ description: "Structured programs of learning."
27053
+ },
27054
+ ID: { messageKey: "ids", label: "IDs", description: "Credentials used to verify identity." },
27055
+ "SOCIAL BADGE": {
27056
+ messageKey: "socialBadges",
27057
+ label: "Social Badges",
27058
+ description: "Digital labels recognizing participation or group membership."
27059
+ },
27060
+ "SOCIAL BADGES": {
27061
+ messageKey: "socialBadges",
27062
+ label: "Social Badges",
27063
+ description: "Digital labels recognizing participation or group membership."
27064
+ },
27065
+ MEMBERSHIP: {
27066
+ messageKey: "memberships",
27067
+ label: "Memberships",
27068
+ description: "Records of memberships."
27069
+ },
27070
+ MEMBERSHIPS: {
27071
+ messageKey: "memberships",
27072
+ label: "Memberships",
27073
+ description: "Records of memberships."
27074
+ },
27075
+ ACCOMPLISHMENT: {
27076
+ messageKey: "accomplishments",
27077
+ label: "Accomplishments",
27078
+ description: "Collections of work that showcase skills and experience."
27079
+ },
27080
+ ACCOMPLISHMENTS: {
27081
+ messageKey: "accomplishments",
27082
+ label: "Accomplishments",
27083
+ description: "Collections of work that showcase skills and experience."
27084
+ },
27085
+ EXPERIENCES: {
27086
+ messageKey: "experiences",
27087
+ label: "Experiences",
27088
+ description: "Knowledge and skills gained through professional roles and activities."
27089
+ },
27090
+ ACCOMMODATION: {
27091
+ messageKey: "accommodations",
27092
+ label: "Accommodations",
27093
+ description: "Adjustments made to support accessibility."
27094
+ },
27095
+ ACCOMMODATIONS: {
27096
+ messageKey: "accommodations",
27097
+ label: "Accommodations",
27098
+ description: "Adjustments made to support accessibility."
27099
+ },
27100
+ FAMILY: {
27101
+ messageKey: "family",
27102
+ label: "Family",
27103
+ description: "Family profiles connected through shared learning journeys."
27104
+ },
27105
+ QUALIFICATIONS: {
27106
+ messageKey: "qualifications",
27107
+ label: "Qualifications",
27108
+ description: "Education, training, and professional qualifications."
27109
+ },
27110
+ GOALS: {
27111
+ messageKey: "goals",
27112
+ label: "Goals",
27113
+ description: "Learning and career goals you want to achieve."
27114
+ },
27115
+ "PROFESSIONAL TITLE": {
27116
+ messageKey: "professionalTitle",
27117
+ label: "Professional title",
27118
+ description: "The title that describes your professional role."
27119
+ },
27120
+ "ROLE EXPERIENCE": {
27121
+ messageKey: "roleExperience",
27122
+ label: "Role experience",
27123
+ description: "Experience gained in a particular professional role."
27124
+ },
27125
+ "WORK EXPERIENCE": {
27126
+ messageKey: "workExperience",
27127
+ label: "Work experience",
27128
+ description: "Your work activities, responsibilities, and experience."
27129
+ },
27130
+ "PAY RATE": {
27131
+ messageKey: "payRate",
27132
+ label: "Pay rate",
27133
+ description: "Your pay amount and payment period."
27134
+ },
27135
+ "WORK LIFE BALANCE": {
27136
+ messageKey: "workLifeBalance",
27137
+ label: "Work-life balance",
27138
+ description: "Your preferences for balancing work and personal life."
27139
+ },
27140
+ "JOB STABILITY": {
27141
+ messageKey: "jobStability",
27142
+ label: "Job stability",
27143
+ description: "Your preferences for job security and stability."
27144
+ },
27145
+ "SELF-ASSIGNED SKILLS": {
27146
+ messageKey: "selfAssignedSkills",
27147
+ label: "Self-assigned skills",
27148
+ description: "Skills you have added to your own profile."
27149
+ },
27150
+ "AI-SUMMARY": {
27151
+ messageKey: "aiSummaries",
27152
+ label: "AI summaries",
27153
+ description: "Summaries of your AI-assisted learning sessions."
27154
+ },
27155
+ "AI-TOPIC": {
27156
+ messageKey: "aiTopics",
27157
+ label: "AI topics",
27158
+ description: "Topics explored in your AI-assisted learning."
27159
+ },
27160
+ "AI-ASSESSMENT": {
27161
+ messageKey: "aiAssessments",
27162
+ label: "AI assessments",
27163
+ description: "Assessments from your AI-assisted learning."
27164
+ },
27165
+ "AI INSIGHT": {
27166
+ messageKey: "aiInsights",
27167
+ label: "AI insights",
27168
+ description: "Insights about your learning progress and skills."
27169
+ },
27170
+ "LEARNING-PATHWAY": {
27171
+ messageKey: "learningPathways",
27172
+ label: "Learning pathways",
27173
+ description: "Plans and steps toward your learning goals."
27174
+ }
27175
+ };
27176
+ var PERSONAL_SCOPE_COPY = {
27177
+ NAME: { messageKey: "name", label: "Name", description: "Your name." },
27178
+ EMAIL: { messageKey: "email", label: "Email", description: "Your email address." },
27179
+ IMAGE: {
27180
+ messageKey: "profilePhoto",
27181
+ label: "Profile photo",
27182
+ description: "Your profile photo."
27183
+ },
27184
+ "PROFILE IMAGE": {
27185
+ messageKey: "profilePhoto",
27186
+ label: "Profile photo",
27187
+ description: "Your profile photo."
27188
+ },
27189
+ "PROFILE PHOTO": {
27190
+ messageKey: "profilePhoto",
27191
+ label: "Profile photo",
27192
+ description: "Your profile photo."
27193
+ }
27194
+ };
27195
+ var scopeCopy = /* @__PURE__ */ __name((scope, translate) => {
27196
+ const copy = (scope.type === "personal" ? PERSONAL_SCOPE_COPY : CANONICAL_SCOPE_COPY)[scope.key.toUpperCase()];
27197
+ if (!copy) return { label: scope.key, description: "" };
27198
+ if (!translate) return copy;
27199
+ const prefix = `consentUpdate.scope.${copy.messageKey}`;
27200
+ return {
27201
+ label: translate(`${prefix}.label`),
27202
+ description: translate(`${prefix}.description`)
27203
+ };
27204
+ }, "scopeCopy");
27205
+ var buildContractUpdatePreview = /* @__PURE__ */ __name(({
27206
+ name,
27207
+ kind,
27208
+ diff,
27209
+ status,
27210
+ translate
27211
+ }) => {
27212
+ const text = /* @__PURE__ */ __name((key, fallback, values) => translate?.(`consentUpdate.${key}`, values) ?? fallback, "text");
27213
+ const label = /* @__PURE__ */ __name((scope) => scopeCopy(scope, translate).label, "label");
27214
+ const addedScopeCount = diff.added.length;
27215
+ const onlyAddedScopes = diff.changed.length === 0 && !diff.details?.length;
27216
+ let headline;
27217
+ let subhead;
27218
+ let primaryLabel;
27219
+ if (status === "suspended") {
27220
+ headline = text("headline.paused", `${name}'s access is paused`, { name });
27221
+ subhead = text("subhead.reconnect", "Approve the update to reconnect.");
27222
+ primaryLabel = text("action.reconnect", "Reconnect");
27223
+ } else if (kind === "requires_consent" && addedScopeCount === 1 && onlyAddedScopes) {
27224
+ const scope = diff.added[0];
27225
+ const values = { name, label: label(scope) };
27226
+ headline = scope.area === "read" ? text("headline.read", `${name} is asking to see your ${values.label}`, values) : text(
27227
+ "headline.write",
27228
+ `${name} is asking to add ${values.label} to your account`,
27229
+ values
27230
+ );
27231
+ subhead = "";
27232
+ primaryLabel = text("action.allow", "Allow");
27233
+ } else if (kind === "requires_consent" && addedScopeCount > 1 && onlyAddedScopes) {
27234
+ headline = text("headline.multiple", `${name} is asking for more access`, { name });
27235
+ subhead = text("subhead.newItems", `${addedScopeCount} new items`, {
27236
+ count: addedScopeCount
27237
+ });
27238
+ primaryLabel = text("action.allowAccess", "Allow access");
27239
+ } else if (kind === "requires_consent") {
27240
+ headline = text("headline.changed", `${name} changed its request`, { name });
27241
+ subhead = text("subhead.review", "Review what's different.");
27242
+ primaryLabel = text("action.allow", "Allow");
27243
+ } else if (kind === "expanded_optional") {
27244
+ headline = text("headline.optional", `${name} has a new option`, { name });
27245
+ subhead = text(
27246
+ "subhead.optional",
27247
+ "Turn it on if you want. Nothing changes unless you do."
27248
+ );
27249
+ primaryLabel = text("action.continue", "Continue");
27250
+ } else {
27251
+ const removed = diff.removed[0];
27252
+ headline = removed ? text("headline.removed", `${name} now sees less`, { name }) : text("headline.changed", `${name} changed its request`, { name });
27253
+ subhead = removed ? text("subhead.removed", `Stopped asking for ${label(removed)}.`, {
27254
+ label: label(removed)
27255
+ }) : text("subhead.changed", "Its request has changed.");
27256
+ primaryLabel = text("action.done", "Done");
27257
+ }
27258
+ const row = /* @__PURE__ */ __name((scope, change) => {
27259
+ const copy = scopeCopy(scope, translate);
27260
+ return { scope, change, label: copy.label, subtitle: scope.reason || copy.description };
27261
+ }, "row");
27262
+ return {
27263
+ headline,
27264
+ subhead,
27265
+ rows: [
27266
+ ...diff.added.map((scope) => row(scope, "added")),
27267
+ ...diff.removed.map((scope) => row(scope, "removed")),
27268
+ ...diff.changed.map((scope) => row(scope, "changed"))
27269
+ ],
27270
+ primaryLabel
27271
+ };
27272
+ }, "buildContractUpdatePreview");
27273
+
26255
27274
  // src/credential-materialization.ts
26256
27275
  var CredentialFieldError = class extends Error {
26257
27276
  constructor(field) {
@@ -26325,6 +27344,82 @@ var materializeCredentialFields = /* @__PURE__ */ __name((credential) => {
26325
27344
  return result;
26326
27345
  }, "materializeCredentialFields");
26327
27346
 
27347
+ // src/age-policy.ts
27348
+ import moment from "moment";
27349
+ var GDPR_AGE_LIMIT = {
27350
+ Germany: 16,
27351
+ France: 15,
27352
+ Spain: 14,
27353
+ Ireland: 13,
27354
+ Netherlands: 16,
27355
+ Austria: 14,
27356
+ Italy: 14,
27357
+ Sweden: 13
27358
+ };
27359
+ var DEFAULT_EU_AGE_LIMIT = 16;
27360
+ var GDPR_AGE_LIMIT_BY_CODE = {
27361
+ DE: 16,
27362
+ FR: 15,
27363
+ ES: 14,
27364
+ IE: 13,
27365
+ NL: 16,
27366
+ AT: 14,
27367
+ IT: 14,
27368
+ SE: 13
27369
+ };
27370
+ var EU_COUNTRY_CODES = [
27371
+ "AT",
27372
+ "BE",
27373
+ "BG",
27374
+ "HR",
27375
+ "CY",
27376
+ "CZ",
27377
+ "DK",
27378
+ "EE",
27379
+ "FI",
27380
+ "FR",
27381
+ "DE",
27382
+ "GR",
27383
+ "HU",
27384
+ "IE",
27385
+ "IT",
27386
+ "LV",
27387
+ "LT",
27388
+ "LU",
27389
+ "MT",
27390
+ "NL",
27391
+ "PL",
27392
+ "PT",
27393
+ "RO",
27394
+ "SK",
27395
+ "SI",
27396
+ "ES",
27397
+ "SE"
27398
+ ];
27399
+ var getMinorAgeThreshold = /* @__PURE__ */ __name((countryCode) => {
27400
+ if (countryCode && EU_COUNTRY_CODES.includes(countryCode)) {
27401
+ return GDPR_AGE_LIMIT_BY_CODE[countryCode] ?? DEFAULT_EU_AGE_LIMIT;
27402
+ }
27403
+ return 18;
27404
+ }, "getMinorAgeThreshold");
27405
+ var calculateAgeFromISODate = /* @__PURE__ */ __name((dob, now = /* @__PURE__ */ new Date()) => {
27406
+ const parsed = moment.parseZone(dob, moment.ISO_8601, true);
27407
+ if (!parsed.isValid()) return Number.NaN;
27408
+ const year = parsed.year();
27409
+ const month = parsed.month() + 1;
27410
+ const day = parsed.date();
27411
+ const birth = /* @__PURE__ */ new Date(0);
27412
+ birth.setUTCFullYear(year, month - 1, day);
27413
+ birth.setUTCHours(0, 0, 0, 0);
27414
+ const today = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()));
27415
+ if (birth > today) return Number.NaN;
27416
+ let age = today.getUTCFullYear() - year;
27417
+ if (today.getUTCMonth() < month - 1 || today.getUTCMonth() === month - 1 && today.getUTCDate() < day) {
27418
+ age--;
27419
+ }
27420
+ return age;
27421
+ }, "calculateAgeFromISODate");
27422
+
26328
27423
  // src/index.ts
26329
27424
  var isHex = /* @__PURE__ */ __name((str) => /^[0-9a-f]+$/i.test(str), "isHex");
26330
27425
  var isEncrypted = /* @__PURE__ */ __name((item) => {
@@ -26360,6 +27455,8 @@ var isVC2Format = /* @__PURE__ */ __name((credential) => {
26360
27455
  const context = credential["@context"];
26361
27456
  return Array.isArray(context) ? context.some((value) => value === "https://www.w3.org/ns/credentials/v2") : context === "https://www.w3.org/ns/credentials/v2";
26362
27457
  }, "isVC2Format");
27458
+ var DISPLAY_ONLY_ANCHOR_MARKER = "displayOnlyAnchor";
27459
+ var isDisplayOnlyAnchorTemplate = /* @__PURE__ */ __name((credential) => !!credential && typeof credential === "object" && credential[DISPLAY_ONLY_ANCHOR_MARKER] === true, "isDisplayOnlyAnchorTemplate");
26363
27460
  var unwrapBoostCredential = /* @__PURE__ */ __name((vc) => {
26364
27461
  if (vc?.type?.includes("CertifiedBoostCredential") && vc?.boostCredential) {
26365
27462
  return vc.boostCredential;
@@ -26375,10 +27472,15 @@ var isAppDidWeb = /* @__PURE__ */ __name((did) => {
26375
27472
  export {
26376
27473
  AGE_RATING_TO_MIN_AGE,
26377
27474
  CredentialFieldError,
27475
+ DEFAULT_EU_AGE_LIMIT,
26378
27476
  DEFAULT_MAX_CANONICAL_BYTES,
26379
27477
  DEFAULT_MAX_CANONICAL_DEPTH,
26380
27478
  DEFAULT_RESOLUTIONS,
27479
+ DISPLAY_ONLY_ANCHOR_MARKER,
27480
+ EU_COUNTRY_CODES,
26381
27481
  EnvironmentConfigurationError,
27482
+ GDPR_AGE_LIMIT,
27483
+ GDPR_AGE_LIMIT_BY_CODE,
26382
27484
  ImageResizingValidator,
26383
27485
  ImageUploadingValidator,
26384
27486
  ImageWithLoadingStateValdator,
@@ -26388,14 +27490,20 @@ export {
26388
27490
  MANAGED_REFRESH_TYPE_IRI,
26389
27491
  RegExpTransformer,
26390
27492
  ShareContentCanonicalizationError,
27493
+ assertExactJweRecipients,
27494
+ assertManagedCredentialBinding,
27495
+ buildContractUpdatePreview,
26391
27496
  calculateAgeFromDob,
27497
+ calculateAgeFromISODate,
26392
27498
  canonicalizeCredentialContent,
26393
27499
  canonicalizeCredentialJson,
26394
27500
  canonicalizeShareContentRequestBody,
26395
27501
  capitalizeFirstLetter,
26396
27502
  changeQuality4 as changeQuality,
26397
27503
  checkAppInstallEligibility,
27504
+ classifyContractChange,
26398
27505
  credentialContentsEqual,
27506
+ credentialRefreshBindingsEqual,
26399
27507
  curriedArraySlice,
26400
27508
  curriedInnerImmerOuterImmer,
26401
27509
  curriedInnerImmerOuterReact,
@@ -26405,6 +27513,7 @@ export {
26405
27513
  deriveNameFromVct,
26406
27514
  deriveSdJwtIssuedAtIso,
26407
27515
  deriveTypeFromVct,
27516
+ diffContractChange,
26408
27517
  environmentBoolean,
26409
27518
  environmentPort,
26410
27519
  extractVctSegment,
@@ -26421,9 +27530,11 @@ export {
26421
27530
  getCredentialStatusArray,
26422
27531
  getDidWeb,
26423
27532
  getManagedRefreshServices,
27533
+ getMinorAgeThreshold,
26424
27534
  getProvider,
26425
27535
  getSupportedRefreshService,
26426
27536
  getUrlsFromSrcSet,
27537
+ hasOpenNewOptionsWindow,
26427
27538
  immerArraySlice,
26428
27539
  injectManagedRefreshService,
26429
27540
  innerImmerOuterImmer,
@@ -26432,6 +27543,7 @@ export {
26432
27543
  innerReactOuterReact,
26433
27544
  isAppDidWeb,
26434
27545
  isBitstringStatusListEntry,
27546
+ isDisplayOnlyAnchorTemplate,
26435
27547
  isEncrypted,
26436
27548
  isHex,
26437
27549
  isNotMaybe,