@learncard/sss-key-manager 0.2.7 → 0.3.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.
@@ -54,6 +54,7 @@ var require_types_cjs_development = __commonJS({
54
54
  var index_exports = {};
55
55
  __export(index_exports, {
56
56
  ACT_AS_HEADER: /* @__PURE__ */ __name(() => ACT_AS_HEADER, "ACT_AS_HEADER"),
57
+ AIPassportCredentialRecordValidator: /* @__PURE__ */ __name(() => AIPassportCredentialRecordValidator, "AIPassportCredentialRecordValidator"),
57
58
  AUTH_GRANT_AUDIENCE_DOMAIN_PREFIX: /* @__PURE__ */ __name(() => AUTH_GRANT_AUDIENCE_DOMAIN_PREFIX, "AUTH_GRANT_AUDIENCE_DOMAIN_PREFIX"),
58
59
  AchievementCredentialValidator: /* @__PURE__ */ __name(() => AchievementCredentialValidator, "AchievementCredentialValidator"),
59
60
  AchievementCriteriaValidator: /* @__PURE__ */ __name(() => AchievementCriteriaValidator, "AchievementCriteriaValidator"),
@@ -65,6 +66,8 @@ var require_types_cjs_development = __commonJS({
65
66
  AddTagInputValidator: /* @__PURE__ */ __name(() => AddTagInputValidator, "AddTagInputValidator"),
66
67
  AddressValidator: /* @__PURE__ */ __name(() => AddressValidator, "AddressValidator"),
67
68
  AgeRatingValidator: /* @__PURE__ */ __name(() => AgeRatingValidator, "AgeRatingValidator"),
69
+ AiSessionMode: /* @__PURE__ */ __name(() => AiSessionMode, "AiSessionMode"),
70
+ AiSessionModeValidator: /* @__PURE__ */ __name(() => AiSessionModeValidator, "AiSessionModeValidator"),
68
71
  AlignmentTargetTypeValidator: /* @__PURE__ */ __name(() => AlignmentTargetTypeValidator, "AlignmentTargetTypeValidator"),
69
72
  AlignmentValidator: /* @__PURE__ */ __name(() => AlignmentValidator, "AlignmentValidator"),
70
73
  AllocateCredentialRefreshInputValidator: /* @__PURE__ */ __name(() => AllocateCredentialRefreshInputValidator, "AllocateCredentialRefreshInputValidator"),
@@ -72,6 +75,7 @@ var require_types_cjs_development = __commonJS({
72
75
  AllocateCredentialStatusInputValidator: /* @__PURE__ */ __name(() => AllocateCredentialStatusInputValidator, "AllocateCredentialStatusInputValidator"),
73
76
  AllocatedBitstringStatusListEntryValidator: /* @__PURE__ */ __name(() => AllocatedBitstringStatusListEntryValidator, "AllocatedBitstringStatusListEntryValidator"),
74
77
  AllowConnectionRequestsEnum: /* @__PURE__ */ __name(() => AllowConnectionRequestsEnum, "AllowConnectionRequestsEnum"),
78
+ AnnouncementPreferencesValidator: /* @__PURE__ */ __name(() => AnnouncementPreferencesValidator, "AnnouncementPreferencesValidator"),
75
79
  AppBoostValidator: /* @__PURE__ */ __name(() => AppBoostValidator, "AppBoostValidator"),
76
80
  AppEventInputValidator: /* @__PURE__ */ __name(() => AppEventInputValidator, "AppEventInputValidator"),
77
81
  AppEventResponseValidator: /* @__PURE__ */ __name(() => AppEventResponseValidator, "AppEventResponseValidator"),
@@ -87,12 +91,15 @@ var require_types_cjs_development = __commonJS({
87
91
  AppStoreListingSubmitterValidator: /* @__PURE__ */ __name(() => AppStoreListingSubmitterValidator, "AppStoreListingSubmitterValidator"),
88
92
  AppStoreListingUpdateValidator: /* @__PURE__ */ __name(() => AppStoreListingUpdateValidator, "AppStoreListingUpdateValidator"),
89
93
  AppStoreListingValidator: /* @__PURE__ */ __name(() => AppStoreListingValidator, "AppStoreListingValidator"),
94
+ ArtifactSuggestionValidator: /* @__PURE__ */ __name(() => ArtifactSuggestionValidator, "ArtifactSuggestionValidator"),
90
95
  AssociationTypeValidator: /* @__PURE__ */ __name(() => AssociationTypeValidator, "AssociationTypeValidator"),
91
96
  AssociationValidator: /* @__PURE__ */ __name(() => AssociationValidator, "AssociationValidator"),
97
+ AttachCredentialRefreshStatusEntriesInputValidator: /* @__PURE__ */ __name(() => AttachCredentialRefreshStatusEntriesInputValidator, "AttachCredentialRefreshStatusEntriesInputValidator"),
92
98
  AuthGrantQueryValidator: /* @__PURE__ */ __name(() => AuthGrantQueryValidator, "AuthGrantQueryValidator"),
93
99
  AuthGrantStatusValidator: /* @__PURE__ */ __name(() => AuthGrantStatusValidator, "AuthGrantStatusValidator"),
94
100
  AuthGrantValidator: /* @__PURE__ */ __name(() => AuthGrantValidator, "AuthGrantValidator"),
95
101
  AuthSessionError: /* @__PURE__ */ __name(() => AuthSessionError2, "AuthSessionError"),
102
+ AuthenticatedMessageValidator: /* @__PURE__ */ __name(() => AuthenticatedMessageValidator, "AuthenticatedMessageValidator"),
96
103
  AutoBoostConfigValidator: /* @__PURE__ */ __name(() => AutoBoostConfigValidator, "AutoBoostConfigValidator"),
97
104
  BITSTRING_STATUS_PURPOSES: /* @__PURE__ */ __name(() => BITSTRING_STATUS_PURPOSES, "BITSTRING_STATUS_PURPOSES"),
98
105
  BitstringStatusListCredentialSubjectValidator: /* @__PURE__ */ __name(() => BitstringStatusListCredentialSubjectValidator, "BitstringStatusListCredentialSubjectValidator"),
@@ -104,19 +111,26 @@ var require_types_cjs_development = __commonJS({
104
111
  BoostRecipientValidator: /* @__PURE__ */ __name(() => BoostRecipientValidator, "BoostRecipientValidator"),
105
112
  BoostRecipientWithChildrenValidator: /* @__PURE__ */ __name(() => BoostRecipientWithChildrenValidator, "BoostRecipientWithChildrenValidator"),
106
113
  BoostValidator: /* @__PURE__ */ __name(() => BoostValidator, "BoostValidator"),
114
+ CONTRACT_APPROVAL_REQUIRED: /* @__PURE__ */ __name(() => CONTRACT_APPROVAL_REQUIRED, "CONTRACT_APPROVAL_REQUIRED"),
107
115
  CampaignAudienceInputValidator: /* @__PURE__ */ __name(() => CampaignAudienceInputValidator, "CampaignAudienceInputValidator"),
116
+ CampaignAudienceResultValidator: /* @__PURE__ */ __name(() => CampaignAudienceResultValidator, "CampaignAudienceResultValidator"),
108
117
  CampaignAudienceSourceValidator: /* @__PURE__ */ __name(() => CampaignAudienceSourceValidator, "CampaignAudienceSourceValidator"),
109
118
  CampaignChannelValidator: /* @__PURE__ */ __name(() => CampaignChannelValidator, "CampaignChannelValidator"),
119
+ CampaignDispatchOptionsValidator: /* @__PURE__ */ __name(() => CampaignDispatchOptionsValidator, "CampaignDispatchOptionsValidator"),
120
+ CampaignDispatchPreviewValidator: /* @__PURE__ */ __name(() => CampaignDispatchPreviewValidator, "CampaignDispatchPreviewValidator"),
121
+ CampaignEmailValidator: /* @__PURE__ */ __name(() => CampaignEmailValidator, "CampaignEmailValidator"),
110
122
  CampaignEventValidator: /* @__PURE__ */ __name(() => CampaignEventValidator, "CampaignEventValidator"),
111
123
  CampaignIdValidator: /* @__PURE__ */ __name(() => CampaignIdValidator, "CampaignIdValidator"),
112
124
  CampaignPaginationValidator: /* @__PURE__ */ __name(() => CampaignPaginationValidator, "CampaignPaginationValidator"),
113
125
  CampaignStatsValidator: /* @__PURE__ */ __name(() => CampaignStatsValidator, "CampaignStatsValidator"),
114
126
  CampaignStatusValidator: /* @__PURE__ */ __name(() => CampaignStatusValidator, "CampaignStatusValidator"),
127
+ CampaignTestValidator: /* @__PURE__ */ __name(() => CampaignTestValidator, "CampaignTestValidator"),
115
128
  CampaignUpdatesValidator: /* @__PURE__ */ __name(() => CampaignUpdatesValidator, "CampaignUpdatesValidator"),
116
129
  CampaignUserStateValidator: /* @__PURE__ */ __name(() => CampaignUserStateValidator, "CampaignUserStateValidator"),
117
130
  CampaignValidator: /* @__PURE__ */ __name(() => CampaignValidator, "CampaignValidator"),
118
131
  CapturedConsentRecordValidator: /* @__PURE__ */ __name(() => CapturedConsentRecordValidator, "CapturedConsentRecordValidator"),
119
132
  CapturedTemplateRecordValidator: /* @__PURE__ */ __name(() => CapturedTemplateRecordValidator, "CapturedTemplateRecordValidator"),
133
+ ChatMessageValidator: /* @__PURE__ */ __name(() => ChatMessageValidator, "ChatMessageValidator"),
120
134
  CheckCredentialEventValidator: /* @__PURE__ */ __name(() => CheckCredentialEventValidator, "CheckCredentialEventValidator"),
121
135
  CheckIssuanceStatusEventValidator: /* @__PURE__ */ __name(() => CheckIssuanceStatusEventValidator, "CheckIssuanceStatusEventValidator"),
122
136
  ClaimHookQueryValidator: /* @__PURE__ */ __name(() => ClaimHookQueryValidator, "ClaimHookQueryValidator"),
@@ -126,15 +140,26 @@ var require_types_cjs_development = __commonJS({
126
140
  ClaimTokenValidator: /* @__PURE__ */ __name(() => ClaimTokenValidator, "ClaimTokenValidator"),
127
141
  ClrCredentialValidator: /* @__PURE__ */ __name(() => ClrCredentialValidator, "ClrCredentialValidator"),
128
142
  ClrSubjectValidator: /* @__PURE__ */ __name(() => ClrSubjectValidator, "ClrSubjectValidator"),
143
+ ConsentFlowConsentStatusValidator: /* @__PURE__ */ __name(() => ConsentFlowConsentStatusValidator, "ConsentFlowConsentStatusValidator"),
144
+ ConsentFlowContractChangeKindValidator: /* @__PURE__ */ __name(() => ConsentFlowContractChangeKindValidator, "ConsentFlowContractChangeKindValidator"),
145
+ ConsentFlowContractChangesValidator: /* @__PURE__ */ __name(() => ConsentFlowContractChangesValidator, "ConsentFlowContractChangesValidator"),
129
146
  ConsentFlowContractDataForDidValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDataForDidValidator, "ConsentFlowContractDataForDidValidator"),
130
147
  ConsentFlowContractDataValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDataValidator, "ConsentFlowContractDataValidator"),
148
+ ConsentFlowContractDetailChangeValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDetailChangeValidator, "ConsentFlowContractDetailChangeValidator"),
131
149
  ConsentFlowContractDetailsValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDetailsValidator, "ConsentFlowContractDetailsValidator"),
150
+ ConsentFlowContractDiffValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDiffValidator, "ConsentFlowContractDiffValidator"),
151
+ ConsentFlowContractNotificationDataValidator: /* @__PURE__ */ __name(() => ConsentFlowContractNotificationDataValidator, "ConsentFlowContractNotificationDataValidator"),
132
152
  ConsentFlowContractQueryValidator: /* @__PURE__ */ __name(() => ConsentFlowContractQueryValidator, "ConsentFlowContractQueryValidator"),
133
153
  ConsentFlowContractRequestForProfileListValidator: /* @__PURE__ */ __name(() => ConsentFlowContractRequestForProfileListValidator, "ConsentFlowContractRequestForProfileListValidator"),
134
154
  ConsentFlowContractRequestForProfileValidator: /* @__PURE__ */ __name(() => ConsentFlowContractRequestForProfileValidator, "ConsentFlowContractRequestForProfileValidator"),
135
155
  ConsentFlowContractRequestReadStatusValidator: /* @__PURE__ */ __name(() => ConsentFlowContractRequestReadStatusValidator, "ConsentFlowContractRequestReadStatusValidator"),
136
156
  ConsentFlowContractRequestStatusValidator: /* @__PURE__ */ __name(() => ConsentFlowContractRequestStatusValidator, "ConsentFlowContractRequestStatusValidator"),
157
+ ConsentFlowContractScopeValidator: /* @__PURE__ */ __name(() => ConsentFlowContractScopeValidator, "ConsentFlowContractScopeValidator"),
158
+ ConsentFlowContractStatusValidator: /* @__PURE__ */ __name(() => ConsentFlowContractStatusValidator, "ConsentFlowContractStatusValidator"),
159
+ ConsentFlowContractUpdatePreviewValidator: /* @__PURE__ */ __name(() => ConsentFlowContractUpdatePreviewValidator, "ConsentFlowContractUpdatePreviewValidator"),
160
+ ConsentFlowContractUpdateResultValidator: /* @__PURE__ */ __name(() => ConsentFlowContractUpdateResultValidator, "ConsentFlowContractUpdateResultValidator"),
137
161
  ConsentFlowContractValidator: /* @__PURE__ */ __name(() => ConsentFlowContractValidator, "ConsentFlowContractValidator"),
162
+ ConsentFlowContractVersionValidator: /* @__PURE__ */ __name(() => ConsentFlowContractVersionValidator, "ConsentFlowContractVersionValidator"),
138
163
  ConsentFlowDataForDidQueryValidator: /* @__PURE__ */ __name(() => ConsentFlowDataForDidQueryValidator, "ConsentFlowDataForDidQueryValidator"),
139
164
  ConsentFlowDataQueryValidator: /* @__PURE__ */ __name(() => ConsentFlowDataQueryValidator, "ConsentFlowDataQueryValidator"),
140
165
  ConsentFlowGuardianApprovalValidator: /* @__PURE__ */ __name(() => ConsentFlowGuardianApprovalValidator, "ConsentFlowGuardianApprovalValidator"),
@@ -174,6 +199,7 @@ var require_types_cjs_development = __commonJS({
174
199
  CredentialActivityStatsValidator: /* @__PURE__ */ __name(() => CredentialActivityStatsValidator, "CredentialActivityStatsValidator"),
175
200
  CredentialActivityValidator: /* @__PURE__ */ __name(() => CredentialActivityValidator, "CredentialActivityValidator"),
176
201
  CredentialActivityWithDetailsValidator: /* @__PURE__ */ __name(() => CredentialActivityWithDetailsValidator, "CredentialActivityWithDetailsValidator"),
202
+ CredentialDisplayValidator: /* @__PURE__ */ __name(() => CredentialDisplayValidator, "CredentialDisplayValidator"),
177
203
  CredentialFormatValidator: /* @__PURE__ */ __name(() => CredentialFormatValidator, "CredentialFormatValidator"),
178
204
  CredentialInfoValidator: /* @__PURE__ */ __name(() => CredentialInfoValidator, "CredentialInfoValidator"),
179
205
  CredentialNameRefValidator: /* @__PURE__ */ __name(() => CredentialNameRefValidator, "CredentialNameRefValidator"),
@@ -181,11 +207,13 @@ var require_types_cjs_development = __commonJS({
181
207
  CredentialRefreshChallengeValidator: /* @__PURE__ */ __name(() => CredentialRefreshChallengeValidator, "CredentialRefreshChallengeValidator"),
182
208
  CredentialRefreshFailedResultValidator: /* @__PURE__ */ __name(() => CredentialRefreshFailedResultValidator, "CredentialRefreshFailedResultValidator"),
183
209
  CredentialRefreshFailureCodeValidator: /* @__PURE__ */ __name(() => CredentialRefreshFailureCodeValidator, "CredentialRefreshFailureCodeValidator"),
210
+ CredentialRefreshReceiptValidator: /* @__PURE__ */ __name(() => CredentialRefreshReceiptValidator, "CredentialRefreshReceiptValidator"),
184
211
  CredentialRefreshResponseEnvelopeValidator: /* @__PURE__ */ __name(() => CredentialRefreshResponseEnvelopeValidator, "CredentialRefreshResponseEnvelopeValidator"),
185
212
  CredentialRefreshResultValidator: /* @__PURE__ */ __name(() => CredentialRefreshResultValidator, "CredentialRefreshResultValidator"),
186
213
  CredentialRefreshSigningModeValidator: /* @__PURE__ */ __name(() => CredentialRefreshSigningModeValidator, "CredentialRefreshSigningModeValidator"),
187
214
  CredentialRefreshUnchangedResultValidator: /* @__PURE__ */ __name(() => CredentialRefreshUnchangedResultValidator, "CredentialRefreshUnchangedResultValidator"),
188
215
  CredentialRefreshUnsupportedResultValidator: /* @__PURE__ */ __name(() => CredentialRefreshUnsupportedResultValidator, "CredentialRefreshUnsupportedResultValidator"),
216
+ CredentialRefreshUpdateReasonValidator: /* @__PURE__ */ __name(() => CredentialRefreshUpdateReasonValidator, "CredentialRefreshUpdateReasonValidator"),
189
217
  CredentialRefreshUpdatedResultValidator: /* @__PURE__ */ __name(() => CredentialRefreshUpdatedResultValidator, "CredentialRefreshUpdatedResultValidator"),
190
218
  CredentialRefreshVersionMetadataValidator: /* @__PURE__ */ __name(() => CredentialRefreshVersionMetadataValidator, "CredentialRefreshVersionMetadataValidator"),
191
219
  CredentialSchemaValidator: /* @__PURE__ */ __name(() => CredentialSchemaValidator, "CredentialSchemaValidator"),
@@ -193,8 +221,10 @@ var require_types_cjs_development = __commonJS({
193
221
  CredentialSharePreviewValidator: /* @__PURE__ */ __name(() => CredentialSharePreviewValidator, "CredentialSharePreviewValidator"),
194
222
  CredentialStatusValidator: /* @__PURE__ */ __name(() => CredentialStatusValidator, "CredentialStatusValidator"),
195
223
  CredentialSubjectValidator: /* @__PURE__ */ __name(() => CredentialSubjectValidator, "CredentialSubjectValidator"),
224
+ CredentialVerificationMetadataValidator: /* @__PURE__ */ __name(() => CredentialVerificationMetadataValidator, "CredentialVerificationMetadataValidator"),
196
225
  CriteriaValidator: /* @__PURE__ */ __name(() => CriteriaValidator, "CriteriaValidator"),
197
226
  DEFAULT_BITSTRING_STATUS_LIST_SIZE: /* @__PURE__ */ __name(() => DEFAULT_BITSTRING_STATUS_LIST_SIZE, "DEFAULT_BITSTRING_STATUS_LIST_SIZE"),
227
+ DebugInfoValidator: /* @__PURE__ */ __name(() => DebugInfoValidator, "DebugInfoValidator"),
198
228
  DeleteFrameworkInputValidator: /* @__PURE__ */ __name(() => DeleteFrameworkInputValidator, "DeleteFrameworkInputValidator"),
199
229
  DeleteShareLinkAttachmentChunksInputValidator: /* @__PURE__ */ __name(() => DeleteShareLinkAttachmentChunksInputValidator, "DeleteShareLinkAttachmentChunksInputValidator"),
200
230
  DeleteShareLinkAttachmentChunksOutputValidator: /* @__PURE__ */ __name(() => DeleteShareLinkAttachmentChunksOutputValidator, "DeleteShareLinkAttachmentChunksOutputValidator"),
@@ -206,6 +236,7 @@ var require_types_cjs_development = __commonJS({
206
236
  ESCROW_PIN_UNAVAILABLE_MESSAGE: /* @__PURE__ */ __name(() => ESCROW_PIN_UNAVAILABLE_MESSAGE2, "ESCROW_PIN_UNAVAILABLE_MESSAGE"),
207
237
  EncryptedCredentialRecordValidator: /* @__PURE__ */ __name(() => EncryptedCredentialRecordValidator, "EncryptedCredentialRecordValidator"),
208
238
  EncryptedRecordValidator: /* @__PURE__ */ __name(() => EncryptedRecordValidator, "EncryptedRecordValidator"),
239
+ EncryptionRecipientsResultValidator: /* @__PURE__ */ __name(() => EncryptionRecipientsResultValidator, "EncryptionRecipientsResultValidator"),
209
240
  EndorsementCredentialValidator: /* @__PURE__ */ __name(() => EndorsementCredentialValidator, "EndorsementCredentialValidator"),
210
241
  EndorsementSubjectValidator: /* @__PURE__ */ __name(() => EndorsementSubjectValidator, "EndorsementSubjectValidator"),
211
242
  EscrowPinStatusValidator: /* @__PURE__ */ __name(() => EscrowPinStatusValidator, "EscrowPinStatusValidator"),
@@ -219,6 +250,8 @@ var require_types_cjs_development = __commonJS({
219
250
  GetCountersEventValidator: /* @__PURE__ */ __name(() => GetCountersEventValidator, "GetCountersEventValidator"),
220
251
  GetCredentialRefreshHistoryInputValidator: /* @__PURE__ */ __name(() => GetCredentialRefreshHistoryInputValidator, "GetCredentialRefreshHistoryInputValidator"),
221
252
  GetCredentialRefreshHistoryResultValidator: /* @__PURE__ */ __name(() => GetCredentialRefreshHistoryResultValidator, "GetCredentialRefreshHistoryResultValidator"),
253
+ GetCredentialRefreshReceiptInputValidator: /* @__PURE__ */ __name(() => GetCredentialRefreshReceiptInputValidator, "GetCredentialRefreshReceiptInputValidator"),
254
+ GetEncryptionRecipientsInputValidator: /* @__PURE__ */ __name(() => GetEncryptionRecipientsInputValidator, "GetEncryptionRecipientsInputValidator"),
222
255
  GetFullSkillTreeInputValidator: /* @__PURE__ */ __name(() => GetFullSkillTreeInputValidator, "GetFullSkillTreeInputValidator"),
223
256
  GetFullSkillTreeResultValidator: /* @__PURE__ */ __name(() => GetFullSkillTreeResultValidator, "GetFullSkillTreeResultValidator"),
224
257
  GetShareLinkAttachmentChunkInputValidator: /* @__PURE__ */ __name(() => GetShareLinkAttachmentChunkInputValidator, "GetShareLinkAttachmentChunkInputValidator"),
@@ -226,6 +259,7 @@ var require_types_cjs_development = __commonJS({
226
259
  GetSkillPathResultValidator: /* @__PURE__ */ __name(() => GetSkillPathResultValidator, "GetSkillPathResultValidator"),
227
260
  GetTemplateRecipientsEventValidator: /* @__PURE__ */ __name(() => GetTemplateRecipientsEventValidator, "GetTemplateRecipientsEventValidator"),
228
261
  GuardianStatusValidator: /* @__PURE__ */ __name(() => GuardianStatusValidator, "GuardianStatusValidator"),
262
+ HolderEncryptedHandoffValidator: /* @__PURE__ */ __name(() => HolderEncryptedHandoffValidator, "HolderEncryptedHandoffValidator"),
229
263
  HolderExportConsentRecordValidator: /* @__PURE__ */ __name(() => HolderExportConsentRecordValidator, "HolderExportConsentRecordValidator"),
230
264
  HolderExportMetadataValidator: /* @__PURE__ */ __name(() => HolderExportMetadataValidator, "HolderExportMetadataValidator"),
231
265
  IdentifierEntryValidator: /* @__PURE__ */ __name(() => IdentifierEntryValidator, "IdentifierEntryValidator"),
@@ -245,7 +279,9 @@ var require_types_cjs_development = __commonJS({
245
279
  InlineSendCredentialEventValidator: /* @__PURE__ */ __name(() => InlineSendCredentialEventValidator, "InlineSendCredentialEventValidator"),
246
280
  InlineWalletCategoryValidator: /* @__PURE__ */ __name(() => InlineWalletCategoryValidator, "InlineWalletCategoryValidator"),
247
281
  InlineWalletSkillTagValidator: /* @__PURE__ */ __name(() => InlineWalletSkillTagValidator, "InlineWalletSkillTagValidator"),
282
+ InsightArtifactValidator: /* @__PURE__ */ __name(() => InsightArtifactValidator, "InsightArtifactValidator"),
248
283
  InstalledAppValidator: /* @__PURE__ */ __name(() => InstalledAppValidator, "InstalledAppValidator"),
284
+ IntroStreamModeValidator: /* @__PURE__ */ __name(() => IntroStreamModeValidator, "IntroStreamModeValidator"),
249
285
  IssueInboxCredentialBatchItemResultValidator: /* @__PURE__ */ __name(() => IssueInboxCredentialBatchItemResultValidator, "IssueInboxCredentialBatchItemResultValidator"),
250
286
  IssueInboxCredentialBatchItemValidator: /* @__PURE__ */ __name(() => IssueInboxCredentialBatchItemValidator, "IssueInboxCredentialBatchItemValidator"),
251
287
  IssueInboxCredentialBatchResponseValidator: /* @__PURE__ */ __name(() => IssueInboxCredentialBatchResponseValidator, "IssueInboxCredentialBatchResponseValidator"),
@@ -297,6 +333,7 @@ var require_types_cjs_development = __commonJS({
297
333
  LCNVisibleProfileValidator: /* @__PURE__ */ __name(() => LCNVisibleProfileValidator, "LCNVisibleProfileValidator"),
298
334
  LaunchTypeValidator: /* @__PURE__ */ __name(() => LaunchTypeValidator, "LaunchTypeValidator"),
299
335
  LearnCardRefreshAuthorizationValidator: /* @__PURE__ */ __name(() => LearnCardRefreshAuthorizationValidator, "LearnCardRefreshAuthorizationValidator"),
336
+ LearningPathwayValidator: /* @__PURE__ */ __name(() => LearningPathwayValidator, "LearningPathwayValidator"),
300
337
  LegacySendCredentialEventValidator: /* @__PURE__ */ __name(() => LegacySendCredentialEventValidator, "LegacySendCredentialEventValidator"),
301
338
  LinkProviderFrameworkInputValidator: /* @__PURE__ */ __name(() => LinkProviderFrameworkInputValidator, "LinkProviderFrameworkInputValidator"),
302
339
  ListCampaignsInputValidator: /* @__PURE__ */ __name(() => ListCampaignsInputValidator, "ListCampaignsInputValidator"),
@@ -308,8 +345,11 @@ var require_types_cjs_development = __commonJS({
308
345
  MAX_SHARE_RECOVERY_JWE_BYTES: /* @__PURE__ */ __name(() => MAX_SHARE_RECOVERY_JWE_BYTES, "MAX_SHARE_RECOVERY_JWE_BYTES"),
309
346
  MAX_SHARE_SOURCE_URI_CHARS: /* @__PURE__ */ __name(() => MAX_SHARE_SOURCE_URI_CHARS, "MAX_SHARE_SOURCE_URI_CHARS"),
310
347
  MAX_VP_MEMBERS: /* @__PURE__ */ __name(() => MAX_VP_MEMBERS, "MAX_VP_MEMBERS"),
348
+ ManagedCredentialRefreshBindingValidator: /* @__PURE__ */ __name(() => ManagedCredentialRefreshBindingValidator, "ManagedCredentialRefreshBindingValidator"),
311
349
  ManagedCredentialRefreshReceiptValidator: /* @__PURE__ */ __name(() => ManagedCredentialRefreshReceiptValidator, "ManagedCredentialRefreshReceiptValidator"),
312
350
  ManagedCredentialRefreshServiceValidator: /* @__PURE__ */ __name(() => ManagedCredentialRefreshServiceValidator, "ManagedCredentialRefreshServiceValidator"),
351
+ ModelSafeCredentialFactValidator: /* @__PURE__ */ __name(() => ModelSafeCredentialFactValidator, "ModelSafeCredentialFactValidator"),
352
+ ModelSafeCredentialProjectionValidator: /* @__PURE__ */ __name(() => ModelSafeCredentialProjectionValidator, "ModelSafeCredentialProjectionValidator"),
313
353
  MyCampaignValidator: /* @__PURE__ */ __name(() => MyCampaignValidator, "MyCampaignValidator"),
314
354
  NormalizedConsentScopesValidator: /* @__PURE__ */ __name(() => NormalizedConsentScopesValidator, "NormalizedConsentScopesValidator"),
315
355
  PageCampaignAudienceInputValidator: /* @__PURE__ */ __name(() => PageCampaignAudienceInputValidator, "PageCampaignAudienceInputValidator"),
@@ -354,6 +394,7 @@ var require_types_cjs_development = __commonJS({
354
394
  PublishCredentialRefreshNotificationValidator: /* @__PURE__ */ __name(() => PublishCredentialRefreshNotificationValidator, "PublishCredentialRefreshNotificationValidator"),
355
395
  PublishCredentialRefreshResultValidator: /* @__PURE__ */ __name(() => PublishCredentialRefreshResultValidator, "PublishCredentialRefreshResultValidator"),
356
396
  PublishCredentialSharePreviewValidator: /* @__PURE__ */ __name(() => PublishCredentialSharePreviewValidator, "PublishCredentialSharePreviewValidator"),
397
+ PublishHolderEncryptedRefreshInputValidator: /* @__PURE__ */ __name(() => PublishHolderEncryptedRefreshInputValidator, "PublishHolderEncryptedRefreshInputValidator"),
357
398
  PublishIssuerSignedRefreshValidator: /* @__PURE__ */ __name(() => PublishIssuerSignedRefreshValidator, "PublishIssuerSignedRefreshValidator"),
358
399
  PublishSigningAuthorityRefreshValidator: /* @__PURE__ */ __name(() => PublishSigningAuthorityRefreshValidator, "PublishSigningAuthorityRefreshValidator"),
359
400
  PutShareLinkAttachmentChunkInputValidator: /* @__PURE__ */ __name(() => PutShareLinkAttachmentChunkInputValidator, "PutShareLinkAttachmentChunkInputValidator"),
@@ -371,6 +412,7 @@ var require_types_cjs_development = __commonJS({
371
412
  ResultStatusTypeValidator: /* @__PURE__ */ __name(() => ResultStatusTypeValidator, "ResultStatusTypeValidator"),
372
413
  ResultTypeValidator: /* @__PURE__ */ __name(() => ResultTypeValidator, "ResultTypeValidator"),
373
414
  ResultValidator: /* @__PURE__ */ __name(() => ResultValidator, "ResultValidator"),
415
+ RoleValidator: /* @__PURE__ */ __name(() => RoleValidator, "RoleValidator"),
374
416
  RubricCriterionValidator: /* @__PURE__ */ __name(() => RubricCriterionValidator, "RubricCriterionValidator"),
375
417
  SHARE_AAD_PREFIX: /* @__PURE__ */ __name(() => SHARE_AAD_PREFIX, "SHARE_AAD_PREFIX"),
376
418
  SHARE_CONTENT_KEY_BYTES: /* @__PURE__ */ __name(() => SHARE_CONTENT_KEY_BYTES, "SHARE_CONTENT_KEY_BYTES"),
@@ -389,6 +431,7 @@ var require_types_cjs_development = __commonJS({
389
431
  SendBrandingOptionsValidator: /* @__PURE__ */ __name(() => SendBrandingOptionsValidator, "SendBrandingOptionsValidator"),
390
432
  SendContractRequestValidator: /* @__PURE__ */ __name(() => SendContractRequestValidator, "SendContractRequestValidator"),
391
433
  SendCredentialEventValidator: /* @__PURE__ */ __name(() => SendCredentialEventValidator, "SendCredentialEventValidator"),
434
+ SendHolderEncryptedRefreshableInputValidator: /* @__PURE__ */ __name(() => SendHolderEncryptedRefreshableInputValidator, "SendHolderEncryptedRefreshableInputValidator"),
392
435
  SendInboxResponseValidator: /* @__PURE__ */ __name(() => SendInboxResponseValidator, "SendInboxResponseValidator"),
393
436
  SendInputValidator: /* @__PURE__ */ __name(() => SendInputValidator, "SendInputValidator"),
394
437
  SendNotificationEventValidator: /* @__PURE__ */ __name(() => SendNotificationEventValidator, "SendNotificationEventValidator"),
@@ -445,8 +488,10 @@ var require_types_cjs_development = __commonJS({
445
488
  SkillValidator: /* @__PURE__ */ __name(() => SkillValidator, "SkillValidator"),
446
489
  StandardCredentialRefreshServiceValidator: /* @__PURE__ */ __name(() => StandardCredentialRefreshServiceValidator, "StandardCredentialRefreshServiceValidator"),
447
490
  StatusCheckEntryValidator: /* @__PURE__ */ __name(() => StatusCheckEntryValidator, "StatusCheckEntryValidator"),
491
+ StatusManagementValidator: /* @__PURE__ */ __name(() => StatusManagementValidator, "StatusManagementValidator"),
448
492
  StoredCredentialEnvelopeValidator: /* @__PURE__ */ __name(() => StoredCredentialEnvelopeValidator, "StoredCredentialEnvelopeValidator"),
449
493
  StringQuery: /* @__PURE__ */ __name(() => StringQuery, "StringQuery"),
494
+ StructuredResponseValidator: /* @__PURE__ */ __name(() => StructuredResponseValidator, "StructuredResponseValidator"),
450
495
  SummaryCredentialDataValidator: /* @__PURE__ */ __name(() => SummaryCredentialDataValidator, "SummaryCredentialDataValidator"),
451
496
  SummaryCredentialKeywordValidator: /* @__PURE__ */ __name(() => SummaryCredentialKeywordValidator, "SummaryCredentialKeywordValidator"),
452
497
  SupportedCredentialRefreshServiceValidator: /* @__PURE__ */ __name(() => SupportedCredentialRefreshServiceValidator, "SupportedCredentialRefreshServiceValidator"),
@@ -454,6 +499,9 @@ var require_types_cjs_development = __commonJS({
454
499
  TagValidator: /* @__PURE__ */ __name(() => TagValidator, "TagValidator"),
455
500
  TemplateRenderMethodValidator: /* @__PURE__ */ __name(() => TemplateRenderMethodValidator, "TemplateRenderMethodValidator"),
456
501
  TermsOfUseValidator: /* @__PURE__ */ __name(() => TermsOfUseValidator, "TermsOfUseValidator"),
502
+ ThreadCredentialContextValidator: /* @__PURE__ */ __name(() => ThreadCredentialContextValidator, "ThreadCredentialContextValidator"),
503
+ ThreadValidator: /* @__PURE__ */ __name(() => ThreadValidator, "ThreadValidator"),
504
+ TimingEventValidator: /* @__PURE__ */ __name(() => TimingEventValidator, "TimingEventValidator"),
457
505
  UnsignedAchievementCredentialValidator: /* @__PURE__ */ __name(() => UnsignedAchievementCredentialValidator, "UnsignedAchievementCredentialValidator"),
458
506
  UnsignedClrCredentialValidator: /* @__PURE__ */ __name(() => UnsignedClrCredentialValidator, "UnsignedClrCredentialValidator"),
459
507
  UnsignedVCValidator: /* @__PURE__ */ __name(() => UnsignedVCValidator, "UnsignedVCValidator"),
@@ -21972,12 +22020,47 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
21972
22020
  $or: BaseStringQuery.array()
21973
22021
  })
21974
22022
  ]);
22023
+ var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
22024
+ var DEFAULT_BITSTRING_STATUS_LIST_SIZE = 131072;
22025
+ var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
22026
+ var BitstringStatusListEntryValidator = external_exports.object({
22027
+ id: external_exports.string().optional(),
22028
+ type: external_exports.literal("BitstringStatusListEntry"),
22029
+ statusPurpose: BitstringStatusPurposeValidator,
22030
+ statusListIndex: external_exports.string().or(external_exports.number().int().nonnegative()),
22031
+ statusListCredential: external_exports.string()
22032
+ });
22033
+ var AllocatedBitstringStatusListEntryValidator = BitstringStatusListEntryValidator.extend({
22034
+ id: external_exports.string()
22035
+ });
22036
+ var BitstringStatusListCredentialSubjectValidator = external_exports.object({
22037
+ id: external_exports.string().optional(),
22038
+ type: external_exports.literal("BitstringStatusList"),
22039
+ statusPurpose: BitstringStatusPurposeValidator,
22040
+ encodedList: external_exports.string()
22041
+ });
22042
+ var AllocateCredentialStatusInputValidator = external_exports.object({
22043
+ statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
22044
+ listSize: external_exports.number().int().positive().optional()
22045
+ }).default({});
22046
+ var AttachCredentialRefreshStatusEntriesInputValidator = external_exports.object({
22047
+ refreshId: external_exports.string().min(1),
22048
+ credentialStatus: CredentialStatusValidator.or(CredentialStatusValidator.array()).nullable()
22049
+ });
21975
22050
  var LearnCardRefreshAuthorizationValidator = external_exports.object({ type: external_exports.literal("LearnCardDIDAuth") }).catchall(external_exports.any());
21976
22051
  var ManagedCredentialRefreshServiceValidator = external_exports.object({
21977
22052
  id: external_exports.string().min(1),
21978
22053
  type: external_exports.literal("LearnCardCredentialRefresh2026"),
21979
22054
  authorization: LearnCardRefreshAuthorizationValidator.optional()
21980
22055
  }).catchall(external_exports.any());
22056
+ var ManagedCredentialRefreshBindingValidator = ManagedCredentialRefreshServiceValidator.or(
22057
+ RefreshServiceValidator.array().refine(
22058
+ (services) => services.some(
22059
+ (service) => ManagedCredentialRefreshServiceValidator.safeParse(service).success
22060
+ ),
22061
+ "A managed refresh service is required"
22062
+ )
22063
+ );
21981
22064
  var StandardCredentialRefreshServiceValidator = external_exports.object({
21982
22065
  id: external_exports.string().min(1),
21983
22066
  type: external_exports.literal("1EdTechCredentialRefresh")
@@ -22001,7 +22084,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22001
22084
  });
22002
22085
  var ManagedCredentialRefreshReceiptValidator = external_exports.object({
22003
22086
  refreshId: external_exports.string().min(1),
22004
- refreshService: ManagedCredentialRefreshServiceValidator,
22087
+ refreshService: ManagedCredentialRefreshBindingValidator,
22088
+ /** Legacy receipts authenticate only the allocated managed entry, not other services. */
22089
+ refreshServiceBinding: external_exports.literal("managed-entry").optional(),
22005
22090
  credentialId: external_exports.string().min(1),
22006
22091
  issuerDid: external_exports.string().min(1),
22007
22092
  holderDid: external_exports.string().min(1),
@@ -22009,14 +22094,43 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22009
22094
  CredentialStatusValidator.array()
22010
22095
  ).optional()
22011
22096
  }).strip();
22097
+ var GetCredentialRefreshReceiptInputValidator = external_exports.object({ uri: external_exports.string().min(1) });
22098
+ var CredentialRefreshReceiptValidator = ManagedCredentialRefreshReceiptValidator.extend({
22099
+ encryptionMode: external_exports.enum(["network", "holder"])
22100
+ });
22101
+ var HolderEncryptedHandoffValidator = external_exports.object({
22102
+ refreshId: external_exports.string().min(1),
22103
+ credentialId: external_exports.string().min(1),
22104
+ holderDid: external_exports.string().min(1),
22105
+ issuerDid: external_exports.string().min(1),
22106
+ credentialStatus: CredentialStatusValidator.or(CredentialStatusValidator.array()),
22107
+ refreshService: ManagedCredentialRefreshBindingValidator.optional(),
22108
+ jwe: JWEValidator
22109
+ }).strict();
22110
+ var SendHolderEncryptedRefreshableInputValidator = external_exports.object({
22111
+ handoff: HolderEncryptedHandoffValidator,
22112
+ idempotencyKey: external_exports.string().min(1).optional(),
22113
+ boostUri: external_exports.string().optional(),
22114
+ skipNotification: external_exports.boolean().optional()
22115
+ });
22116
+ var GetEncryptionRecipientsInputValidator = external_exports.object({ refreshId: external_exports.string().min(1) });
22117
+ var EncryptionRecipientsResultValidator = external_exports.object({
22118
+ recipientKeyIds: external_exports.array(external_exports.string())
22119
+ });
22012
22120
  var InboxCredentialRefreshReceiptValidator = ManagedCredentialRefreshReceiptValidator.omit(
22013
22121
  { holderDid: true }
22014
22122
  ).extend({ holderDid: external_exports.string().min(1).optional() });
22015
22123
  var CredentialRefreshSigningModeValidator = external_exports.enum(["issuer-signed", "signing-authority"]);
22124
+ var CredentialRefreshUpdateReasonValidator = external_exports.enum(["corrected", "updated", "reissued"]);
22016
22125
  var PublishCredentialRefreshBaseFields = {
22017
22126
  refreshId: external_exports.string().min(1),
22018
22127
  notifyHolder: external_exports.boolean().optional(),
22019
- updateSummary: external_exports.string().optional(),
22128
+ updateSummary: external_exports.string().max(280).optional().describe(
22129
+ "Public legacy update summary. Do not include private claims; prefer updateReason."
22130
+ ),
22131
+ updateReason: CredentialRefreshUpdateReasonValidator.optional().describe(
22132
+ "Public reason for this update"
22133
+ ),
22020
22134
  idempotencyKey: external_exports.string().optional()
22021
22135
  };
22022
22136
  var PublishIssuerSignedRefreshValidator = external_exports.object({
@@ -22092,13 +22206,25 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22092
22206
  publishedAt: external_exports.string().min(1),
22093
22207
  notification: PublishCredentialRefreshNotificationValidator
22094
22208
  });
22209
+ var PublishHolderEncryptedRefreshInputValidator = external_exports.object({
22210
+ handoff: HolderEncryptedHandoffValidator,
22211
+ notify: external_exports.boolean(),
22212
+ updateSummary: external_exports.string().max(280).optional().describe(
22213
+ "Public legacy update summary. Do not include private claims; prefer updateReason."
22214
+ ),
22215
+ updateReason: CredentialRefreshUpdateReasonValidator.optional().describe(
22216
+ "Public reason for this update"
22217
+ ),
22218
+ idempotencyKey: external_exports.string().optional()
22219
+ });
22095
22220
  var CredentialRefreshVersionMetadataValidator = external_exports.object({
22096
22221
  version: external_exports.number().int().positive(),
22097
22222
  publishedAt: external_exports.string().min(1),
22098
22223
  effectiveAt: external_exports.string().optional(),
22099
22224
  etag: external_exports.string().optional(),
22100
22225
  signingMode: CredentialRefreshSigningModeValidator.optional(),
22101
- updateSummary: external_exports.string().optional()
22226
+ updateSummary: external_exports.string().optional(),
22227
+ updateReason: CredentialRefreshUpdateReasonValidator.optional()
22102
22228
  });
22103
22229
  var GetCredentialRefreshHistoryInputValidator = external_exports.object({
22104
22230
  refreshId: external_exports.string().min(1),
@@ -22141,6 +22267,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22141
22267
  "INVALID_PROOF",
22142
22268
  "ISSUER_MISMATCH",
22143
22269
  "ID_MISMATCH",
22270
+ "BINDING_MISMATCH",
22144
22271
  "ROLLBACK",
22145
22272
  "REVOKED",
22146
22273
  "UNSAFE_ENDPOINT"
@@ -22465,6 +22592,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22465
22592
  name: external_exports.string()
22466
22593
  })
22467
22594
  });
22595
+ var CredentialDisplayValidator = external_exports.object({
22596
+ name: external_exports.string().trim().min(1).max(280).optional(),
22597
+ category: external_exports.string().max(280).optional(),
22598
+ image: external_exports.string().max(2048).url().refine((url2) => url2.startsWith("https://"), { message: "Image URL must use https" }).optional()
22599
+ });
22468
22600
  var SendBoostTemplateValidator = BoostValidator.partial().omit({ uri: true, claimPermissions: true }).extend({
22469
22601
  credential: VCValidator.or(UnsignedVCValidator),
22470
22602
  claimPermissions: BoostPermissionsValidator.partial().optional(),
@@ -22503,6 +22635,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22503
22635
  templateUri: external_exports.string().optional(),
22504
22636
  template: SendBoostTemplateValidator.optional(),
22505
22637
  signedCredential: VCValidator.optional(),
22638
+ display: CredentialDisplayValidator.optional().describe(
22639
+ "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."
22640
+ ),
22641
+ statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
22506
22642
  options: SendOptionsValidator.optional().describe(
22507
22643
  "Options for email/phone recipients (Universal Inbox)"
22508
22644
  ),
@@ -22541,7 +22677,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22541
22677
  "Present when guardianEmail was specified"
22542
22678
  )
22543
22679
  });
22680
+ var StatusManagementValidator = external_exports.enum(["network", "external", "mixed", "none"]);
22544
22681
  var SendBoostResponseValidator = external_exports.object({
22682
+ /** Public status providers for a managed send; external entries require provider-side updates. */
22683
+ statusManagement: StatusManagementValidator.optional(),
22545
22684
  type: external_exports.literal("boost"),
22546
22685
  credentialUri: external_exports.string(),
22547
22686
  uri: external_exports.string(),
@@ -22554,19 +22693,33 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22554
22693
  )
22555
22694
  });
22556
22695
  var PrepareRefreshableSendInputValidator = external_exports.object({
22696
+ /** Opt in to signing the server-bound statusEntries; omission preserves client allocation. */
22697
+ statusBinding: external_exports.literal("server").optional(),
22698
+ statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
22557
22699
  recipient: external_exports.string(),
22558
22700
  templateUri: external_exports.string().optional(),
22559
22701
  template: SendBoostTemplateValidator.optional(),
22702
+ display: CredentialDisplayValidator.optional().describe("Public display metadata only"),
22560
22703
  contractUri: external_exports.string().optional(),
22561
22704
  templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
22562
22705
  integrationId: external_exports.string().optional(),
22563
22706
  /** Credential ID to allocate for; generated server-side when omitted. */
22564
22707
  credentialId: external_exports.string().min(1).optional(),
22565
- idempotencyKey: external_exports.string().min(1).max(200).optional()
22566
- }).refine((data) => Boolean(data.templateUri) !== Boolean(data.template), {
22567
- message: "Provide exactly one of templateUri or template."
22708
+ idempotencyKey: external_exports.string().min(1).max(200).optional(),
22709
+ /**
22710
+ * `'holder'` requests student-only encryption (LC-2345): the SDK signs and
22711
+ * encrypts locally and the server never receives plaintext. Requires a
22712
+ * profile or DID recipient; rejected for signedCredential-only sends and for
22713
+ * inbox (email/phone) recipients. Defaults to `'network'`.
22714
+ */
22715
+ encryption: external_exports.enum(["network", "holder"]).optional()
22716
+ }).refine((data) => !(data.templateUri && data.template), {
22717
+ message: "Provide at most one of templateUri or template."
22568
22718
  });
22569
22719
  var PrepareRefreshableSendResultValidator = external_exports.object({
22720
+ /** Public status providers known at preparation; final send reports the signed entries. */
22721
+ statusManagement: StatusManagementValidator.optional(),
22722
+ statusEntries: external_exports.array(BitstringStatusListEntryValidator).optional(),
22570
22723
  boostUri: external_exports.string(),
22571
22724
  credentialId: external_exports.string(),
22572
22725
  refreshId: external_exports.string(),
@@ -22574,11 +22727,111 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22574
22727
  /** The DID to use as credentialSubject.id (recipient DID, or the profile's did:web). */
22575
22728
  holderDid: external_exports.string(),
22576
22729
  /** Present when this idempotencyKey already completed: return it without signing. */
22577
- completed: SendBoostResponseValidator.optional()
22730
+ completed: SendBoostResponseValidator.optional(),
22731
+ /**
22732
+ * Present only when `encryption: 'holder'` was requested: the exact
22733
+ * key-agreement verification-method ids (holder + current managers) the SDK
22734
+ * must encrypt to. Recomputed on every call, so a later manager change can
22735
+ * make a previously-prepared set stale (see `credentialRefresh.sendHolderEncryptedRefreshable`
22736
+ * and `credentialRefresh.getEncryptionRecipients`).
22737
+ */
22738
+ recipientKeyIds: external_exports.array(external_exports.string()).optional()
22578
22739
  });
22579
22740
  var SendInputValidator = external_exports.discriminatedUnion("type", [SendBoostInputValidator]);
22580
22741
  var SendResponseValidator = external_exports.discriminatedUnion("type", [SendBoostResponseValidator]);
22581
- var ConsentFlowTermsStatusValidator = external_exports.enum(["live", "stale", "withdrawn"]);
22742
+ var ConsentFlowTermsStatusValidator = external_exports.enum([
22743
+ "live",
22744
+ "consumed",
22745
+ "withdrawn",
22746
+ "needs_reconsent",
22747
+ "suspended"
22748
+ ]);
22749
+ var CONTRACT_APPROVAL_REQUIRED = "CONTRACT_APPROVAL_REQUIRED";
22750
+ var ConsentFlowContractChangeKindValidator = external_exports.enum([
22751
+ "relaxed",
22752
+ "expanded_optional",
22753
+ "requires_consent"
22754
+ ]);
22755
+ var ConsentFlowContractScopeValidator = external_exports.object({
22756
+ area: external_exports.enum(["read", "write"]),
22757
+ type: external_exports.enum(["credential", "personal"]),
22758
+ key: external_exports.string(),
22759
+ required: external_exports.boolean(),
22760
+ reason: external_exports.string().optional()
22761
+ });
22762
+ var ConsentFlowContractDetailValueValidator = external_exports.union([
22763
+ external_exports.string(),
22764
+ external_exports.boolean(),
22765
+ external_exports.string().array()
22766
+ ]);
22767
+ var ConsentFlowContractDetailChangeValidator = external_exports.object({
22768
+ field: external_exports.enum([
22769
+ "name",
22770
+ "subtitle",
22771
+ "description",
22772
+ "reasonForAccessing",
22773
+ "image",
22774
+ "needsGuardianConsent",
22775
+ "redirectUrl",
22776
+ "frontDoorBoostUri",
22777
+ "expiresAt",
22778
+ "writers",
22779
+ "autoboosts"
22780
+ ]),
22781
+ before: ConsentFlowContractDetailValueValidator.optional(),
22782
+ after: ConsentFlowContractDetailValueValidator.optional()
22783
+ });
22784
+ var ConsentFlowContractDiffValidator = external_exports.object({
22785
+ added: ConsentFlowContractScopeValidator.array(),
22786
+ removed: ConsentFlowContractScopeValidator.array(),
22787
+ changed: ConsentFlowContractScopeValidator.array(),
22788
+ details: ConsentFlowContractDetailChangeValidator.array().optional()
22789
+ });
22790
+ var ConsentFlowContractUpdatePreviewValidator = external_exports.object({
22791
+ headline: external_exports.string(),
22792
+ subhead: external_exports.string(),
22793
+ rows: external_exports.array(
22794
+ external_exports.object({
22795
+ scope: ConsentFlowContractScopeValidator,
22796
+ change: external_exports.enum(["added", "removed", "changed"]),
22797
+ label: external_exports.string(),
22798
+ subtitle: external_exports.string()
22799
+ })
22800
+ ),
22801
+ primaryLabel: external_exports.string()
22802
+ });
22803
+ var ConsentFlowContractStatusValidator = external_exports.enum(["active", "retired"]);
22804
+ var ConsentFlowContractVersionValidator = external_exports.object({
22805
+ version: external_exports.number().int().positive(),
22806
+ createdAt: external_exports.string(),
22807
+ reason: external_exports.string().optional(),
22808
+ kind: ConsentFlowContractChangeKindValidator.optional()
22809
+ });
22810
+ var ConsentFlowContractUpdateResultValidator = external_exports.object({
22811
+ version: external_exports.number().int().positive(),
22812
+ kind: ConsentFlowContractChangeKindValidator,
22813
+ affectedUsers: external_exports.number().int().nonnegative(),
22814
+ preview: ConsentFlowContractUpdatePreviewValidator
22815
+ });
22816
+ var ConsentFlowConsentStatusValidator = external_exports.object({
22817
+ status: ConsentFlowTermsStatusValidator.or(external_exports.literal("not_consented")),
22818
+ consentedVersion: external_exports.number().int().positive().optional(),
22819
+ currentVersion: external_exports.number().int().positive(),
22820
+ needsReconsent: external_exports.boolean(),
22821
+ reviewUrl: external_exports.string().optional()
22822
+ });
22823
+ var ConsentFlowContractNotificationDataValidator = external_exports.object({
22824
+ contractUri: external_exports.string(),
22825
+ contractName: external_exports.string().optional(),
22826
+ fromVersion: external_exports.number().int().positive(),
22827
+ toVersion: external_exports.number().int().positive(),
22828
+ kind: ConsentFlowContractChangeKindValidator,
22829
+ reason: external_exports.string().optional(),
22830
+ diff: ConsentFlowContractDiffValidator,
22831
+ reconsentDeadline: external_exports.string().optional(),
22832
+ reviewUrl: external_exports.string(),
22833
+ preview: ConsentFlowContractUpdatePreviewValidator.optional()
22834
+ });
22582
22835
  var ConsentFlowContractValidator = external_exports.object({
22583
22836
  read: external_exports.object({
22584
22837
  anonymize: external_exports.boolean().optional(),
@@ -22587,13 +22840,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22587
22840
  external_exports.string(),
22588
22841
  external_exports.object({
22589
22842
  required: external_exports.boolean(),
22590
- defaultEnabled: external_exports.boolean().optional()
22843
+ defaultEnabled: external_exports.boolean().optional(),
22844
+ reason: external_exports.string().optional()
22591
22845
  })
22592
22846
  ).default({})
22593
22847
  }).prefault({ categories: {} }),
22594
22848
  personal: external_exports.record(
22595
22849
  external_exports.string(),
22596
- external_exports.object({ required: external_exports.boolean(), defaultEnabled: external_exports.boolean().optional() })
22850
+ external_exports.object({
22851
+ required: external_exports.boolean(),
22852
+ defaultEnabled: external_exports.boolean().optional(),
22853
+ reason: external_exports.string().optional()
22854
+ })
22597
22855
  ).default({})
22598
22856
  }).prefault({ credentials: { categories: {} }, personal: {} }),
22599
22857
  write: external_exports.object({
@@ -22602,16 +22860,55 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22602
22860
  external_exports.string(),
22603
22861
  external_exports.object({
22604
22862
  required: external_exports.boolean(),
22605
- defaultEnabled: external_exports.boolean().optional()
22863
+ defaultEnabled: external_exports.boolean().optional(),
22864
+ reason: external_exports.string().optional()
22606
22865
  })
22607
22866
  ).default({})
22608
22867
  }).prefault({ categories: {} }),
22609
22868
  personal: external_exports.record(
22610
22869
  external_exports.string(),
22611
- external_exports.object({ required: external_exports.boolean(), defaultEnabled: external_exports.boolean().optional() })
22870
+ external_exports.object({
22871
+ required: external_exports.boolean(),
22872
+ defaultEnabled: external_exports.boolean().optional(),
22873
+ reason: external_exports.string().optional()
22874
+ })
22612
22875
  ).default({})
22613
22876
  }).prefault({ credentials: { categories: {} }, personal: {} })
22614
22877
  });
22878
+ var ConsentFlowContractScopePatchValidator = external_exports.object({
22879
+ required: external_exports.boolean(),
22880
+ defaultEnabled: external_exports.boolean().optional(),
22881
+ reason: external_exports.string().optional()
22882
+ }).nullable();
22883
+ var ConsentFlowContractChangesValidator = external_exports.object({
22884
+ contract: external_exports.object({
22885
+ read: external_exports.object({
22886
+ anonymize: external_exports.boolean().optional(),
22887
+ credentials: external_exports.object({
22888
+ categories: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
22889
+ }).optional(),
22890
+ personal: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
22891
+ }).optional(),
22892
+ write: external_exports.object({
22893
+ credentials: external_exports.object({
22894
+ categories: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
22895
+ }).optional(),
22896
+ personal: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
22897
+ }).optional()
22898
+ }).optional(),
22899
+ name: external_exports.string().optional(),
22900
+ subtitle: external_exports.string().optional(),
22901
+ description: external_exports.string().optional(),
22902
+ reasonForAccessing: external_exports.string().optional(),
22903
+ image: external_exports.string().optional(),
22904
+ needsGuardianConsent: external_exports.boolean().optional(),
22905
+ redirectUrl: external_exports.string().optional(),
22906
+ frontDoorBoostUri: external_exports.string().optional(),
22907
+ expiresAt: external_exports.string().nullable().optional(),
22908
+ autoboosts: AutoBoostConfigValidator.array().optional(),
22909
+ writers: external_exports.string().array().optional(),
22910
+ recipients: external_exports.string().array().optional()
22911
+ });
22615
22912
  var ConsentFlowContractDetailsValidator = external_exports.object({
22616
22913
  contract: ConsentFlowContractValidator,
22617
22914
  owner: LCNProfileValidator,
@@ -22630,7 +22927,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22630
22927
  autoBoosts: external_exports.string().array().optional(),
22631
22928
  writers: external_exports.array(LCNProfileValidator).optional(),
22632
22929
  recipients: external_exports.array(LCNPublicProfileValidator.extend({ did: external_exports.string() })).optional(),
22633
- audienceVersion: external_exports.number().int().nonnegative().optional()
22930
+ audienceVersion: external_exports.number().int().nonnegative().optional(),
22931
+ version: external_exports.number().int().positive(),
22932
+ status: ConsentFlowContractStatusValidator.optional(),
22933
+ latestUpdate: external_exports.object({
22934
+ fromVersion: external_exports.number().int().positive(),
22935
+ toVersion: external_exports.number().int().positive(),
22936
+ kind: ConsentFlowContractChangeKindValidator,
22937
+ reason: external_exports.string().optional(),
22938
+ diff: ConsentFlowContractDiffValidator,
22939
+ reconsentDeadline: external_exports.string().optional(),
22940
+ createdAt: external_exports.string(),
22941
+ preview: ConsentFlowContractUpdatePreviewValidator
22942
+ }).optional()
22634
22943
  });
22635
22944
  var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied", "cancelled"]).nullable();
22636
22945
  var ConsentFlowContractRequestReadStatusValidator = external_exports.enum(["unseen", "seen"]).nullable();
@@ -22719,7 +23028,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22719
23028
  contract: ConsentFlowContractDetailsValidator,
22720
23029
  uri: external_exports.string(),
22721
23030
  consenter: LCNProfileValidator,
22722
- status: ConsentFlowTermsStatusValidator
23031
+ status: ConsentFlowTermsStatusValidator,
23032
+ consentedVersion: external_exports.number().int().positive(),
23033
+ lastReviewedVersion: external_exports.number().int().positive().optional(),
23034
+ reconsentDeadline: external_exports.string().optional(),
23035
+ newOptionsUntil: external_exports.string().optional(),
23036
+ cumulativeUpdate: ConsentFlowContractDetailsValidator.shape.latestUpdate
22723
23037
  }).array()
22724
23038
  });
22725
23039
  var ConsentFlowGuardianApprovalValidator = external_exports.object({
@@ -22795,7 +23109,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22795
23109
  "update",
22796
23110
  "sync",
22797
23111
  "withdraw",
22798
- "write"
23112
+ "write",
23113
+ "reconsent"
22799
23114
  ]);
22800
23115
  var ConsentFlowTransactionsQueryValidator = external_exports.object({
22801
23116
  terms: ConsentFlowTermsQueryValidator.optional(),
@@ -22814,8 +23129,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22814
23129
  referral: ConsentFlowReferralValidator.optional(),
22815
23130
  id: external_exports.string(),
22816
23131
  action: ConsentFlowTransactionActionValidator,
23132
+ kind: ConsentFlowContractChangeKindValidator.optional(),
22817
23133
  date: external_exports.string(),
22818
- uris: external_exports.string().array().optional()
23134
+ uris: external_exports.string().array().optional(),
23135
+ consentedVersion: external_exports.number().int().positive().optional(),
23136
+ reconsentDeadline: external_exports.string().optional(),
23137
+ newOptionsUntil: external_exports.string().optional()
22819
23138
  });
22820
23139
  var HolderExportConsentRecordValidator = external_exports.object({
22821
23140
  termsUri: external_exports.string(),
@@ -22823,6 +23142,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22823
23142
  contract: ConsentFlowContractDetailsValidator,
22824
23143
  terms: ConsentFlowTermsValidator,
22825
23144
  referral: ConsentFlowReferralValidator.optional(),
23145
+ consentedVersion: external_exports.number().int().positive(),
23146
+ reconsentDeadline: external_exports.string().optional(),
23147
+ newOptionsUntil: external_exports.string().optional(),
23148
+ cumulativeUpdate: ConsentFlowContractDetailsValidator.shape.latestUpdate,
22826
23149
  transactions: ConsentFlowTransactionValidator.array()
22827
23150
  });
22828
23151
  var HolderExportMetadataValidator = external_exports.object({
@@ -22883,10 +23206,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22883
23206
  "GUARDIAN_APPROVED",
22884
23207
  "GUARDIAN_REJECTED",
22885
23208
  "APP_NOTIFICATION",
23209
+ "ANNOUNCEMENT",
22886
23210
  "CREDENTIAL_REVOKED",
22887
23211
  "CREDENTIAL_SUSPENDED",
22888
23212
  "CREDENTIAL_UNSUSPENDED",
22889
- "CREDENTIAL_REFRESHED"
23213
+ "CREDENTIAL_REFRESHED",
23214
+ "CONSENT_FLOW_CONTRACT_UPDATED"
22890
23215
  ]);
22891
23216
  var LCNNotificationMessageValidator = external_exports.object({
22892
23217
  title: external_exports.string().optional(),
@@ -22915,12 +23240,26 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22915
23240
  timestamp: external_exports.iso.datetime().optional()
22916
23241
  });
22917
23242
  var LCNNotificationMetadataValidator = external_exports.object({
22918
- connectionPrompt: LCNConnectionPromptMetadataValidator.optional()
23243
+ connectionPrompt: LCNConnectionPromptMetadataValidator.optional(),
23244
+ campaignId: external_exports.string().regex(/^[a-z0-9-]{3,64}$/).optional(),
23245
+ campaignCreatedAt: external_exports.iso.datetime().optional(),
23246
+ campaignHasInApp: external_exports.boolean().optional(),
23247
+ campaignTestId: external_exports.uuid().optional()
22919
23248
  }).catchall(external_exports.unknown());
22920
23249
  var LCNNotificationDataValidator = external_exports.object({
22921
23250
  vcUris: external_exports.array(external_exports.string()).optional(),
22922
23251
  vpUris: external_exports.array(external_exports.string()).optional(),
22923
23252
  transaction: ConsentFlowTransactionValidator.optional(),
23253
+ contractUri: external_exports.string().optional(),
23254
+ contractName: external_exports.string().optional(),
23255
+ fromVersion: external_exports.number().int().positive().optional(),
23256
+ toVersion: external_exports.number().int().positive().optional(),
23257
+ kind: ConsentFlowContractChangeKindValidator.optional(),
23258
+ reason: external_exports.string().optional(),
23259
+ diff: ConsentFlowContractDiffValidator.optional(),
23260
+ reconsentDeadline: external_exports.string().optional(),
23261
+ reviewUrl: external_exports.string().optional(),
23262
+ preview: ConsentFlowContractUpdatePreviewValidator.optional(),
22924
23263
  inbox: LCNNotificationInboxValidator.optional(),
22925
23264
  metadata: LCNNotificationMetadataValidator.optional()
22926
23265
  }).loose();
@@ -24033,29 +24372,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24033
24372
  */
24034
24373
  wrongAttempts: external_exports.number().int().nonnegative().optional()
24035
24374
  });
24036
- var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
24037
- var DEFAULT_BITSTRING_STATUS_LIST_SIZE = 131072;
24038
- var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
24039
- var BitstringStatusListEntryValidator = external_exports.object({
24040
- id: external_exports.string().optional(),
24041
- type: external_exports.literal("BitstringStatusListEntry"),
24042
- statusPurpose: BitstringStatusPurposeValidator,
24043
- statusListIndex: external_exports.string().or(external_exports.number().int().nonnegative()),
24044
- statusListCredential: external_exports.string()
24045
- });
24046
- var AllocatedBitstringStatusListEntryValidator = BitstringStatusListEntryValidator.extend({
24047
- id: external_exports.string()
24048
- });
24049
- var BitstringStatusListCredentialSubjectValidator = external_exports.object({
24050
- id: external_exports.string().optional(),
24051
- type: external_exports.literal("BitstringStatusList"),
24052
- statusPurpose: BitstringStatusPurposeValidator,
24053
- encodedList: external_exports.string()
24054
- });
24055
- var AllocateCredentialStatusInputValidator = external_exports.object({
24056
- statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
24057
- listSize: external_exports.number().int().positive().optional()
24058
- }).default({});
24059
24375
  var isSafeInAppMessagePath = /* @__PURE__ */ __name2((path) => {
24060
24376
  let decoded = path;
24061
24377
  for (let depth = 0; depth < 5; depth += 1) {
@@ -24383,24 +24699,46 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24383
24699
  }, "parseInAppMessagesFlag");
24384
24700
  var CampaignIdValidator = external_exports.string().regex(/^[a-z0-9-]{3,64}$/);
24385
24701
  var CampaignStatusValidator = external_exports.enum(["draft", "live", "paused", "archived"]);
24386
- var CampaignChannelValidator = external_exports.enum(["inApp", "notify"]);
24702
+ var CampaignChannelValidator = external_exports.enum(["inApp", "notify", "email"]);
24387
24703
  var CampaignEventValidator = external_exports.enum(["shown", "clicked", "dismissed", "converted"]);
24388
- var timestamp = external_exports.iso.datetime({ offset: true }).overwrite((value) => new Date(value).toISOString());
24704
+ var timestamp = external_exports.iso.datetime({ offset: true }).overwrite((value) => {
24705
+ const date5 = new Date(value);
24706
+ return Number.isFinite(date5.getTime()) ? date5.toISOString() : value;
24707
+ });
24389
24708
  var notification = external_exports.object({ title: external_exports.string().min(1), body: external_exports.string().min(1) }).strict();
24390
- var channels = external_exports.array(CampaignChannelValidator).min(1).max(2).refine((values) => new Set(values).size === values.length, "Channels must be unique");
24709
+ var CampaignEmailValidator = external_exports.object({
24710
+ subject: external_exports.string().trim().min(1).max(200).regex(/^[^\r\n]+$/),
24711
+ title: external_exports.string().trim().min(1).max(200),
24712
+ body: external_exports.string().trim().min(1).max(2e4),
24713
+ heroImageUrl: external_exports.url().startsWith("https://").max(2048).optional(),
24714
+ ctaLabel: external_exports.string().trim().min(1).max(100)
24715
+ }).strict();
24716
+ var AnnouncementPreferencesValidator = external_exports.object({
24717
+ announcementEmailOptOut: external_exports.boolean(),
24718
+ announcementPushOptOut: external_exports.boolean()
24719
+ }).strict();
24720
+ var channels = external_exports.array(CampaignChannelValidator).min(1).max(3).refine((values) => new Set(values).size === values.length, "Channels must be unique");
24391
24721
  var campaignDefinition = external_exports.object({
24392
24722
  id: CampaignIdValidator,
24393
24723
  name: external_exports.string().trim().min(1).max(200),
24394
24724
  status: CampaignStatusValidator.default("draft"),
24395
24725
  channels,
24396
- message: inAppMessageValidator,
24726
+ message: inAppMessageValidator.optional(),
24397
24727
  notification: notification.optional(),
24728
+ email: CampaignEmailValidator.optional(),
24398
24729
  startsAt: timestamp.optional(),
24399
24730
  endsAt: timestamp.optional(),
24400
24731
  excludeMinors: external_exports.boolean().default(true),
24401
24732
  selfEnroll: external_exports.boolean().default(false)
24402
24733
  }).strict();
24403
24734
  var validDefinition = /* @__PURE__ */ __name2((value, ctx) => {
24735
+ if (value.channels.includes("inApp") && !value.message) {
24736
+ ctx.addIssue({
24737
+ code: "custom",
24738
+ path: ["message"],
24739
+ message: "In-app requires a message"
24740
+ });
24741
+ }
24404
24742
  if (value.channels.includes("notify") && !value.notification) {
24405
24743
  ctx.addIssue({
24406
24744
  code: "custom",
@@ -24408,15 +24746,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24408
24746
  message: "Notify requires a title and body"
24409
24747
  });
24410
24748
  }
24749
+ if (value.channels.includes("email") && !value.email) {
24750
+ ctx.addIssue({
24751
+ code: "custom",
24752
+ path: ["email"],
24753
+ message: "Email requires announcement content"
24754
+ });
24755
+ }
24411
24756
  if (value.startsAt && value.endsAt && value.startsAt >= value.endsAt) {
24412
24757
  ctx.addIssue({ code: "custom", path: ["endsAt"], message: "End must be after start" });
24413
24758
  }
24414
24759
  }, "validDefinition");
24415
24760
  var CampaignValidator = campaignDefinition.extend({
24761
+ tenantId: external_exports.string().optional(),
24416
24762
  createdAt: timestamp,
24417
24763
  updatedAt: timestamp
24418
24764
  }).superRefine(validDefinition).superRefine((value, ctx) => {
24419
- if (value.message.id !== value.id) {
24765
+ if (value.message && value.message.id !== value.id) {
24420
24766
  ctx.addIssue({
24421
24767
  code: "custom",
24422
24768
  path: ["message", "id"],
@@ -24425,21 +24771,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24425
24771
  }
24426
24772
  });
24427
24773
  var CreateCampaignInputValidator = campaignDefinition.extend({
24428
- message: inAppMessageAuthoringValidator
24774
+ message: inAppMessageAuthoringValidator.optional()
24429
24775
  }).superRefine(validDefinition);
24430
24776
  var CampaignUpdatesValidator = campaignDefinition.omit({ id: true }).partial().extend({
24431
24777
  // A PATCH must not apply creation defaults to fields the caller omitted.
24432
24778
  status: CampaignStatusValidator.optional(),
24433
24779
  excludeMinors: external_exports.boolean().optional(),
24434
24780
  selfEnroll: external_exports.boolean().optional(),
24435
- message: inAppMessageAuthoringValidator.optional(),
24781
+ message: inAppMessageAuthoringValidator.nullable().optional(),
24436
24782
  notification: notification.nullable().optional(),
24783
+ email: CampaignEmailValidator.nullable().optional(),
24437
24784
  startsAt: timestamp.nullable().optional(),
24438
24785
  endsAt: timestamp.nullable().optional()
24439
24786
  }).strict();
24440
24787
  var UpdateCampaignInputValidator = external_exports.object({
24441
24788
  campaignId: CampaignIdValidator,
24442
- updates: CampaignUpdatesValidator
24789
+ updates: CampaignUpdatesValidator,
24790
+ expectedUpdatedAt: timestamp.optional()
24443
24791
  }).strict();
24444
24792
  var identifier = external_exports.string().trim().min(1).max(2048);
24445
24793
  var metadataKey = external_exports.string().regex(/^[a-zA-Z_][a-zA-Z0-9_.-]{0,63}$/).refine(
@@ -24491,7 +24839,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24491
24839
  clickedAt: timestamp.optional(),
24492
24840
  dismissedAt: timestamp.optional(),
24493
24841
  convertedAt: timestamp.optional(),
24494
- notifiedAt: timestamp.optional()
24842
+ notifiedAt: timestamp.optional(),
24843
+ emailedAt: timestamp.optional()
24495
24844
  });
24496
24845
  var MyCampaignValidator = external_exports.object({
24497
24846
  campaign: campaignDefinition.pick({
@@ -24500,12 +24849,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24500
24849
  startsAt: true,
24501
24850
  endsAt: true,
24502
24851
  selfEnroll: true
24503
- }),
24504
- state: CampaignUserStateValidator
24852
+ }).extend({ message: inAppMessageValidator }),
24853
+ state: CampaignUserStateValidator,
24854
+ testId: external_exports.uuid().optional()
24855
+ });
24856
+ var CampaignTestValidator = external_exports.object({
24857
+ id: external_exports.uuid(),
24858
+ campaignId: CampaignIdValidator,
24859
+ message: inAppMessageValidator
24505
24860
  });
24506
24861
  var CampaignStatsValidator = external_exports.object({
24507
24862
  audience: external_exports.number().int().nonnegative(),
24508
24863
  notified: external_exports.number().int().nonnegative(),
24864
+ emailed: external_exports.number().int().nonnegative(),
24509
24865
  shown: external_exports.number().int().nonnegative(),
24510
24866
  clicked: external_exports.number().int().nonnegative(),
24511
24867
  dismissed: external_exports.number().int().nonnegative(),
@@ -24532,6 +24888,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
24532
24888
  hasMore: external_exports.boolean(),
24533
24889
  cursor: external_exports.string().optional()
24534
24890
  });
24891
+ var CampaignDispatchPreviewValidator = external_exports.object({
24892
+ campaignId: CampaignIdValidator,
24893
+ audienceCount: external_exports.number().int().nonnegative(),
24894
+ alreadyNotifiedCount: external_exports.number().int().nonnegative(),
24895
+ recipientCount: external_exports.number().int().nonnegative(),
24896
+ notificationRecipientCount: external_exports.number().int().nonnegative().optional(),
24897
+ emailRecipientCount: external_exports.number().int().nonnegative().optional(),
24898
+ previewToken: external_exports.string().regex(/^[a-f0-9]{64}$/),
24899
+ blockedReason: external_exports.enum([
24900
+ "not_live",
24901
+ "notify_disabled",
24902
+ "email_confirmation_required",
24903
+ "not_started",
24904
+ "ended",
24905
+ "no_recipients"
24906
+ ]).optional()
24907
+ });
24908
+ var CampaignDispatchOptionsValidator = external_exports.object({
24909
+ expectedPreviewToken: CampaignDispatchPreviewValidator.shape.previewToken.optional()
24910
+ }).strict();
24911
+ var CampaignAudienceResultValidator = external_exports.object({
24912
+ count: external_exports.number().int().nonnegative(),
24913
+ added: external_exports.number().int().nonnegative(),
24914
+ notFound: external_exports.array(external_exports.string())
24915
+ });
24535
24916
  var SHARE_LINK_ID_BYTES = 16;
24536
24917
  var SHARE_CONTENT_KEY_BYTES = 32;
24537
24918
  var SHARE_IV_BYTES = 12;
@@ -25056,6 +25437,217 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
25056
25437
  }
25057
25438
  );
25058
25439
  var GenerateSkillIconsInputValidator = external_exports.object({ names: SkillIconNamesValidator });
25440
+ var RoleValidator = external_exports.enum(["user", "assistant", "tool", "system"]);
25441
+ var AiSessionMode = {
25442
+ tutor: "ai-tutor",
25443
+ insights: "ai-insights"
25444
+ };
25445
+ var AiSessionModeValidator = external_exports.enum([AiSessionMode.tutor, AiSessionMode.insights]);
25446
+ var StructuredResponseValidator = external_exports.object({
25447
+ notes: external_exports.string().optional(),
25448
+ questions: external_exports.array(external_exports.string())
25449
+ });
25450
+ var IntroStreamModeValidator = external_exports.enum(["formatted", "structured"]);
25451
+ var ChatMessageValidator = external_exports.object({
25452
+ role: RoleValidator,
25453
+ content: external_exports.string().nullable(),
25454
+ tool_call_id: external_exports.string().optional(),
25455
+ tool_calls: external_exports.array(
25456
+ external_exports.object({
25457
+ id: external_exports.string(),
25458
+ type: external_exports.literal("function"),
25459
+ function: external_exports.object({
25460
+ name: external_exports.string(),
25461
+ arguments: external_exports.string()
25462
+ })
25463
+ })
25464
+ ).optional()
25465
+ });
25466
+ var InsightArtifactValidator = external_exports.object({
25467
+ title: external_exports.string(),
25468
+ summary: external_exports.string(),
25469
+ category: external_exports.string(),
25470
+ question: external_exports.string(),
25471
+ narrative: external_exports.string()
25472
+ });
25473
+ var ArtifactSuggestionValidator = external_exports.object({
25474
+ artifact: InsightArtifactValidator,
25475
+ source_text: external_exports.string().optional(),
25476
+ created_at: external_exports.string()
25477
+ });
25478
+ var ThreadCredentialContextValidator = external_exports.object({
25479
+ uri: external_exports.string(),
25480
+ type: external_exports.string(),
25481
+ context: external_exports.string(),
25482
+ score: external_exports.number(),
25483
+ strongestScore: external_exports.number().optional(),
25484
+ averageScore: external_exports.number().optional(),
25485
+ matchCount: external_exports.number().optional(),
25486
+ title: external_exports.string().optional()
25487
+ });
25488
+ var ThreadValidator = external_exports.object({
25489
+ id: external_exports.string(),
25490
+ did: external_exports.string(),
25491
+ topicCredentialUri: external_exports.string().nullable().optional(),
25492
+ title: external_exports.string(),
25493
+ created_at: external_exports.string(),
25494
+ last_message_at: external_exports.string(),
25495
+ active: external_exports.boolean().optional(),
25496
+ ended_at: external_exports.string().optional(),
25497
+ plan_started_at: external_exports.string().optional(),
25498
+ summaries: external_exports.array(
25499
+ external_exports.object({
25500
+ summary_data: external_exports.string(),
25501
+ credential_uri: external_exports.string(),
25502
+ created_at: external_exports.string()
25503
+ })
25504
+ ).optional(),
25505
+ plans: external_exports.array(
25506
+ external_exports.object({
25507
+ plan_data: external_exports.string(),
25508
+ created_at: external_exports.string(),
25509
+ consentRevision: external_exports.string().optional()
25510
+ })
25511
+ ).optional(),
25512
+ credentials: external_exports.array(ThreadCredentialContextValidator).optional(),
25513
+ credentialSearchTopic: external_exports.string().optional(),
25514
+ credentialContextStatus: external_exports.enum(["pending", "ready", "empty", "error"]).optional(),
25515
+ mode: AiSessionModeValidator.optional(),
25516
+ artifactSuggestions: external_exports.array(ArtifactSuggestionValidator).optional()
25517
+ });
25518
+ var CredentialVerificationMetadataValidator = external_exports.object({
25519
+ credentialUri: external_exports.string(),
25520
+ contentHash: external_exports.string().regex(/^[a-f0-9]{64}$/),
25521
+ status: external_exports.enum(["valid", "invalid"]),
25522
+ checkedAt: external_exports.string().datetime(),
25523
+ verifier: external_exports.object({
25524
+ name: external_exports.string(),
25525
+ version: external_exports.string()
25526
+ }),
25527
+ verifiedPayload: external_exports.enum(["credential", "boostCredential"]),
25528
+ checks: external_exports.array(external_exports.string()),
25529
+ errors: external_exports.array(external_exports.string()),
25530
+ warnings: external_exports.array(external_exports.string()),
25531
+ provenance: external_exports.object({
25532
+ source: external_exports.enum(["wallet", "generated"]),
25533
+ retrievedAt: external_exports.string().datetime()
25534
+ }),
25535
+ consent: external_exports.object({
25536
+ contractUri: external_exports.string(),
25537
+ receiptId: external_exports.string().min(1),
25538
+ grantedAt: external_exports.string().datetime().optional(),
25539
+ updatedAt: external_exports.string().datetime(),
25540
+ contractUpdatedAt: external_exports.string().min(1),
25541
+ status: external_exports.literal("live"),
25542
+ expiresAt: external_exports.string().datetime().optional(),
25543
+ contractExpiresAt: external_exports.string().datetime().optional(),
25544
+ categories: external_exports.array(external_exports.string()),
25545
+ credentialUris: external_exports.array(external_exports.string()),
25546
+ personalFields: external_exports.array(external_exports.string()),
25547
+ purpose: external_exports.enum(["credential-ingestion", "model-inference", "embedding"]),
25548
+ revision: external_exports.string().min(1),
25549
+ guardian: external_exports.object({ required: external_exports.boolean(), approved: external_exports.boolean() })
25550
+ })
25551
+ });
25552
+ var ModelSafeCredentialFactValidator = external_exports.object({
25553
+ kind: external_exports.enum([
25554
+ "skill",
25555
+ "goal",
25556
+ "achievement",
25557
+ "course",
25558
+ "experience",
25559
+ "competency",
25560
+ "title",
25561
+ "summary",
25562
+ "assessment",
25563
+ "grade",
25564
+ "date",
25565
+ "alignment",
25566
+ "criteria",
25567
+ "pathway",
25568
+ "topic"
25569
+ ]),
25570
+ value: external_exports.string().min(1).max(240),
25571
+ label: external_exports.string().min(1).max(120).optional()
25572
+ });
25573
+ var ModelSafeCredentialProjectionValidator = external_exports.object({
25574
+ schemaVersion: external_exports.literal("1"),
25575
+ category: external_exports.string().min(1).max(120),
25576
+ credentialTypes: external_exports.array(external_exports.string().min(1).max(120)).max(20),
25577
+ facts: external_exports.array(ModelSafeCredentialFactValidator).max(100),
25578
+ // Present only on credentials that are past their expiry, so the model can
25579
+ // tell a lapsed credential from a current one.
25580
+ expired: external_exports.literal(true).optional(),
25581
+ expirationDate: external_exports.string().datetime().optional()
25582
+ });
25583
+ var AIPassportCredentialRecordValidator = external_exports.object({
25584
+ id: external_exports.string(),
25585
+ uri: external_exports.string(),
25586
+ category: external_exports.string(),
25587
+ credential: VCValidator,
25588
+ aiContext: external_exports.string(),
25589
+ generalSummary: external_exports.string().optional(),
25590
+ createdAt: external_exports.string(),
25591
+ verification: CredentialVerificationMetadataValidator.optional(),
25592
+ projection: ModelSafeCredentialProjectionValidator.optional()
25593
+ });
25594
+ var AuthenticatedMessageValidator = external_exports.object({
25595
+ message: ChatMessageValidator.optional(),
25596
+ threadId: external_exports.string().optional(),
25597
+ selectedQuestion: external_exports.string().optional(),
25598
+ action: external_exports.enum([
25599
+ "start_topic",
25600
+ "continue_plan",
25601
+ "start_topic_uri",
25602
+ "start_learning_pathway",
25603
+ "start_insights_session",
25604
+ "close_insights_session",
25605
+ "artifact_suggestion"
25606
+ ]).optional(),
25607
+ topic: external_exports.string().optional(),
25608
+ topicUri: external_exports.string().optional(),
25609
+ pathwayUri: external_exports.string().optional(),
25610
+ mode: AiSessionModeValidator.optional(),
25611
+ introStreamMode: IntroStreamModeValidator.optional(),
25612
+ // BCP-47 language for AI responses (LC-1901). This has to live on the
25613
+ // validator, not just the inferred type — z.object strips unknown keys, so an
25614
+ // undeclared `locale` would be dropped before the WS handler ever saw it.
25615
+ locale: external_exports.string().nullish()
25616
+ });
25617
+ var DebugInfoValidator = external_exports.object({
25618
+ operation: external_exports.string(),
25619
+ collection: external_exports.string(),
25620
+ input: external_exports.unknown().optional(),
25621
+ output: external_exports.unknown().optional(),
25622
+ timestamp: external_exports.string(),
25623
+ duration: external_exports.number().optional()
25624
+ });
25625
+ var TimingEventValidator = external_exports.object({
25626
+ event: external_exports.literal("timing"),
25627
+ operation: external_exports.string(),
25628
+ phase: external_exports.enum(["start", "end", "complete"]),
25629
+ duration: external_exports.number().optional(),
25630
+ metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
25631
+ timestamp: external_exports.string()
25632
+ });
25633
+ var LearningPathwayValidator = external_exports.object({
25634
+ id: external_exports.string(),
25635
+ learningPathway: external_exports.object({
25636
+ stepIndex: external_exports.number(),
25637
+ step: external_exports.object({
25638
+ title: external_exports.string(),
25639
+ description: external_exports.string(),
25640
+ summary: external_exports.string(),
25641
+ learned: external_exports.array(external_exports.string()),
25642
+ skills: external_exports.array(
25643
+ external_exports.object({
25644
+ title: external_exports.string(),
25645
+ description: external_exports.string()
25646
+ })
25647
+ )
25648
+ })
25649
+ })
25650
+ });
25059
25651
  }
25060
25652
  });
25061
25653
 
@@ -26386,6 +26978,16 @@ var ESCROW_BLOB_INFO = "learncard-escrow-blob-v1";
26386
26978
  var ESCROW_RELEASE_INFO = "learncard-escrow-release-v1";
26387
26979
  var ESCROW_CLIENT_KEY_ID = "client";
26388
26980
  var RECOVERY_LANGUAGES = ["en", "es", "fr", "ar"];
26981
+ var MAX_ESCROW_EMAIL_BRAND_LENGTH = 32;
26982
+ var MAX_ESCROW_EMAIL_BRAND_DIGITS = 3;
26983
+ var canonicalEscrowEmailBrand = /* @__PURE__ */ __name((raw) => {
26984
+ if (typeof raw !== "string") return void 0;
26985
+ const brand = raw.split(" ").filter((word) => word.length > 0).join(" ");
26986
+ if (brand.length === 0 || brand.length > MAX_ESCROW_EMAIL_BRAND_LENGTH || !/^[A-Za-z][A-Za-z0-9 '&-]*$/.test(brand) || (brand.match(/[0-9]/g)?.length ?? 0) > MAX_ESCROW_EMAIL_BRAND_DIGITS || /http|www/i.test(brand)) {
26987
+ return void 0;
26988
+ }
26989
+ return brand;
26990
+ }, "canonicalEscrowEmailBrand");
26389
26991
  var encodeUtf82 = /* @__PURE__ */ __name((value) => {
26390
26992
  const bytes3 = new TextEncoder().encode(value);
26391
26993
  const copy = new Uint8Array(new ArrayBuffer(bytes3.byteLength));
@@ -26441,6 +27043,7 @@ var parseEscrowBlobPlaintext = /* @__PURE__ */ __name((value) => {
26441
27043
  }
26442
27044
  recoveryContact = { recoveryEmail: email, recoveryLanguage: language };
26443
27045
  }
27046
+ const recoveryBrand = canonicalEscrowEmailBrand(value.recoveryBrand);
26444
27047
  return {
26445
27048
  version: ESCROW_ENVELOPE_VERSION,
26446
27049
  recoveryShare: requireString2(value, "recoveryShare", {
@@ -26457,7 +27060,8 @@ var parseEscrowBlobPlaintext = /* @__PURE__ */ __name((value) => {
26457
27060
  pattern: /^[0-9a-f]{64}$/i
26458
27061
  }).toLowerCase()
26459
27062
  } : {},
26460
- ...recoveryContact
27063
+ ...recoveryContact,
27064
+ ...recoveryBrand !== void 0 ? { recoveryBrand } : {}
26461
27065
  };
26462
27066
  }, "parseEscrowBlobPlaintext");
26463
27067
  var parseEscrowReleasePlaintext = /* @__PURE__ */ __name((value) => {
@@ -26597,6 +27201,32 @@ var openEscrowRelease = /* @__PURE__ */ __name(async (envelope2, clientEphemeral
26597
27201
 
26598
27202
  // src/escrow-enrollment-intent.ts
26599
27203
  import { ExtendedPoint, getPublicKeyAsync, signAsync } from "@noble/ed25519";
27204
+
27205
+ // src/escrow-authority.types.ts
27206
+ var EscrowEvidenceError = class extends Error {
27207
+ static {
27208
+ __name(this, "EscrowEvidenceError");
27209
+ }
27210
+ constructor() {
27211
+ super("Automatic recovery evidence could not be verified.");
27212
+ this.name = "EscrowEvidenceError";
27213
+ }
27214
+ };
27215
+ var ESCROW_AUTHORITY_TENANT_PATTERN = /^[A-Za-z0-9_-]{1,128}$/;
27216
+ var EscrowAuthorityTenantMismatchError = class extends EscrowEvidenceError {
27217
+ static {
27218
+ __name(this, "EscrowAuthorityTenantMismatchError");
27219
+ }
27220
+ constructor(expectedTenant, signedTenant) {
27221
+ super();
27222
+ this.name = "EscrowAuthorityTenantMismatchError";
27223
+ this.expectedTenant = expectedTenant;
27224
+ this.signedTenant = signedTenant;
27225
+ this.message = `Escrow authority tenant mismatch: the enclave signed for "${signedTenant}" but this app expects "${expectedTenant}". Set auth.sss.escrowAuthorityTenant to the enclave's ESCROW_AUTHORITY_TENANT.`;
27226
+ }
27227
+ };
27228
+
27229
+ // src/escrow-enrollment-intent.ts
26600
27230
  var ESCROW_ENROLLMENT_INTENT_DOMAIN = "learncard-escrow-enrollment-intent-v2\0";
26601
27231
  var BASE58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
26602
27232
  var FIELDS = [
@@ -26676,7 +27306,7 @@ var encodeEscrowEnrollmentIntent = /* @__PURE__ */ __name((intent) => {
26676
27306
  Object.keys(intent).length === FIELDS.length && FIELDS.every((field) => Object.prototype.hasOwnProperty.call(intent, field))
26677
27307
  );
26678
27308
  requireIntent(intent.version === 2 && typeof intent.allowRewrap === "boolean");
26679
- requireIntent(matches(intent.tenant, /^[A-Za-z0-9_-]{1,128}$/));
27309
+ requireIntent(matches(intent.tenant, ESCROW_AUTHORITY_TENANT_PATTERN));
26680
27310
  requireIntent(matches(intent.authorityGeneration, /^[A-Za-z0-9_-]{1,128}$/));
26681
27311
  requireIntent(matches(intent.requestId, /^[A-Za-z0-9._-]{1,112}$/));
26682
27312
  didPublicKey(intent.did);
@@ -27071,17 +27701,6 @@ var verifyEnclaveAttestation = /* @__PURE__ */ __name(async (attestation, policy
27071
27701
  };
27072
27702
  }, "verifyEnclaveAttestation");
27073
27703
 
27074
- // src/escrow-authority.types.ts
27075
- var EscrowEvidenceError = class extends Error {
27076
- static {
27077
- __name(this, "EscrowEvidenceError");
27078
- }
27079
- constructor() {
27080
- super("Automatic recovery evidence could not be verified.");
27081
- this.name = "EscrowEvidenceError";
27082
- }
27083
- };
27084
-
27085
27704
  // src/escrow-authority.ts
27086
27705
  var fail2 = /* @__PURE__ */ __name(() => {
27087
27706
  throw new EscrowEvidenceError();
@@ -27120,6 +27739,12 @@ var verifyEscrowCodeDelivery = /* @__PURE__ */ __name(async (delivery, expected,
27120
27739
  var requireEvidence = /* @__PURE__ */ __name((condition) => {
27121
27740
  if (!condition) fail2();
27122
27741
  }, "requireEvidence");
27742
+ var requireAuthorityTenant = /* @__PURE__ */ __name((signedTenant, expectedTenant) => {
27743
+ if (signedTenant === expectedTenant) return;
27744
+ if (typeof signedTenant === "string" && ESCROW_AUTHORITY_TENANT_PATTERN.test(signedTenant))
27745
+ throw new EscrowAuthorityTenantMismatchError(expectedTenant, signedTenant);
27746
+ fail2();
27747
+ }, "requireAuthorityTenant");
27123
27748
  var object = /* @__PURE__ */ __name((value) => {
27124
27749
  if (!value || typeof value !== "object" || Array.isArray(value)) return fail2();
27125
27750
  return value;
@@ -27312,7 +27937,8 @@ var verifyEscrowAuthorityState = /* @__PURE__ */ __name(async (response, nonce,
27312
27937
  const { payload } = await verifyRecord(raw.proof, "snapshot", identity);
27313
27938
  if (!Array.isArray(payload) || payload.length !== 2 || payload[0] !== nonce) return fail2();
27314
27939
  const signed = state(payload[1]);
27315
- requireEvidence(signed.tenant === tenant && signed.did === did);
27940
+ requireEvidence(signed.did === did);
27941
+ requireAuthorityTenant(signed.tenant, tenant);
27316
27942
  requireEvidence(JSON.stringify(signed) === JSON.stringify(state(raw.state)));
27317
27943
  if (signed.envelope) {
27318
27944
  requireEvidence(
@@ -27402,7 +28028,8 @@ var verifyEscrowHoldRecord = /* @__PURE__ */ __name(async (record, expected, ide
27402
28028
  keys(commit, ["schemaVersion", "binding", "executionId", "revisions", "transactionDigest"]);
27403
28029
  const binding = object(commit.binding);
27404
28030
  keys(binding, ["tenant", "generation", "didHash"]);
27405
- requireEvidence(commit.schemaVersion === 1 && binding.tenant === expected.tenant);
28031
+ requireEvidence(commit.schemaVersion === 1);
28032
+ requireAuthorityTenant(binding.tenant, expected.tenant);
27406
28033
  const authorityGeneration = text(binding.generation, 128);
27407
28034
  if (historical) requireEvidence(authorityGeneration === historical.authorityGeneration);
27408
28035
  requireEvidence(bytesToHex(bytes2(binding.didHash, 32)) === await hash(utf82(expected.did)));
@@ -27451,7 +28078,7 @@ var resolveEscrowEnrollmentAction = /* @__PURE__ */ __name((current, input) => {
27451
28078
  const action = disabling ? "disable" : current.status !== "active" ? "enroll" : current.hasPin && pinAction === "keep" ? "carry" : "replace";
27452
28079
  return { action, pinAction, bindsRecoveryContact: action === "enroll" || action === "replace" };
27453
28080
  }, "resolveEscrowEnrollmentAction");
27454
- var violatesCarryContactRule = /* @__PURE__ */ __name((action, target) => action === "carry" && !!target && (!!target.recoveryEmail || !!target.recoveryLanguage), "violatesCarryContactRule");
28081
+ var violatesCarryContactRule = /* @__PURE__ */ __name((action, target) => action === "carry" && !!target && (!!target.recoveryEmail || !!target.recoveryLanguage || !!target.recoveryBrand), "violatesCarryContactRule");
27455
28082
  var createEscrowEnrollmentIntent = /* @__PURE__ */ __name(async (input) => {
27456
28083
  const current = state(input.state);
27457
28084
  const target = input.target === null ? null : envelope(input.target);
@@ -28249,6 +28876,16 @@ function createSSSStrategy(config) {
28249
28876
  emailBranding,
28250
28877
  tenantId
28251
28878
  } = config;
28879
+ const authorityTenant = config.escrow?.authorityTenant ?? tenantId ?? "learncard";
28880
+ if (config.escrow && !ESCROW_AUTHORITY_TENANT_PATTERN.test(authorityTenant))
28881
+ throw new Error(
28882
+ 'Invalid escrow authority tenant: expected 1-128 letters, digits, "_" or "-".'
28883
+ );
28884
+ const emailBrand = config.escrow?.emailBrand === void 0 ? void 0 : canonicalEscrowEmailBrand(config.escrow.emailBrand);
28885
+ if (config.escrow?.emailBrand !== void 0 && emailBrand === void 0)
28886
+ throw new Error(
28887
+ `Invalid escrow email brand: expected 1-32 ASCII letters, digits, spaces, "-", "'" or "&", starting with a letter.`
28888
+ );
28252
28889
  const storage = config.storage || defaultStorage;
28253
28890
  let storageGeneration = 0;
28254
28891
  const localWrites = /* @__PURE__ */ new Set();
@@ -28368,7 +29005,7 @@ function createSSSStrategy(config) {
28368
29005
  return result.hold;
28369
29006
  }, "fetchEscrowHoldStatus");
28370
29007
  const recoveryExpectations = /* @__PURE__ */ __name((holdId, expected) => {
28371
- if (!expected || expected.holdId !== holdId || expected.tenant !== (tenantId ?? "learncard") || !expected.did || !expected.clientEphemeralPublicKey || !expected.blobHash || !expected.authorityGeneration || !expected.holdDigest || !expected.ledgerPublicKey || !expected.keyId)
29008
+ if (!expected || expected.holdId !== holdId || expected.tenant !== authorityTenant || !expected.did || !expected.clientEphemeralPublicKey || !expected.blobHash || !expected.authorityGeneration || !expected.holdDigest || !expected.ledgerPublicKey || !expected.keyId)
28372
29009
  throw new EscrowEvidenceError();
28373
29010
  return { ...expected };
28374
29011
  }, "recoveryExpectations");
@@ -28403,7 +29040,7 @@ function createSSSStrategy(config) {
28403
29040
  const result = await verifyEscrowAuthorityState(
28404
29041
  response,
28405
29042
  nonce,
28406
- tenantId ?? "learncard",
29043
+ authorityTenant,
28407
29044
  did,
28408
29045
  identity
28409
29046
  );
@@ -28435,7 +29072,14 @@ function createSSSStrategy(config) {
28435
29072
  did: primaryDid,
28436
29073
  shareVersion,
28437
29074
  ...pinMaterial ? { pinVerifier: pinMaterial.pinVerifier } : {},
28438
- ...authority && recoveryEmail && bindsRecoveryContact ? { recoveryEmail, recoveryLanguage } : {}
29075
+ // D21: the brand is sealed exactly when the contact is, so a
29076
+ // carry (whose target the enclave refuses if it claims one)
29077
+ // never sends it; the enclave inherits the source's brand.
29078
+ ...authority && recoveryEmail && bindsRecoveryContact ? {
29079
+ recoveryEmail,
29080
+ recoveryLanguage,
29081
+ ...emailBrand ? { recoveryBrand: emailBrand } : {}
29082
+ } : {}
28439
29083
  },
28440
29084
  publicKey,
28441
29085
  keyId
@@ -29668,7 +30312,7 @@ function createSSSStrategy(config) {
29668
30312
  const verified = await verifyEscrowHoldRecord(
29669
30313
  result.holdRecord,
29670
30314
  {
29671
- tenant: tenantId ?? "learncard",
30315
+ tenant: authorityTenant,
29672
30316
  did: expectedDid,
29673
30317
  holdId: result.holdId,
29674
30318
  clientEphemeralPublicKey: pair.publicKey,
@@ -29677,7 +30321,7 @@ function createSSSStrategy(config) {
29677
30321
  identity
29678
30322
  );
29679
30323
  expectations = {
29680
- tenant: tenantId ?? "learncard",
30324
+ tenant: authorityTenant,
29681
30325
  did: expectedDid,
29682
30326
  holdId: result.holdId,
29683
30327
  clientEphemeralPublicKey: pair.publicKey,
@@ -30908,12 +31552,14 @@ export {
30908
31552
  EMAIL_RELAY_ALGORITHM,
30909
31553
  EMAIL_RELAY_ENVELOPE_VERSION,
30910
31554
  ESCROW_ALGORITHM,
31555
+ ESCROW_AUTHORITY_TENANT_PATTERN,
30911
31556
  ESCROW_BLOB_INFO,
30912
31557
  ESCROW_CLIENT_KEY_ID,
30913
31558
  ESCROW_ENROLLMENT_INTENT_DOMAIN,
30914
31559
  ESCROW_ENVELOPE_VERSION,
30915
31560
  ESCROW_PIN_MAX_ATTEMPTS,
30916
31561
  ESCROW_RELEASE_INFO,
31562
+ EscrowAuthorityTenantMismatchError,
30917
31563
  EscrowEvidenceError,
30918
31564
  EscrowHoldRestartThrottledError,
30919
31565
  EscrowPinLockedError,
@@ -30922,6 +31568,8 @@ export {
30922
31568
  EscrowPinUnavailableError,
30923
31569
  EscrowRequestError,
30924
31570
  IdentityRecoverySessionConsumedError,
31571
+ MAX_ESCROW_EMAIL_BRAND_DIGITS,
31572
+ MAX_ESCROW_EMAIL_BRAND_LENGTH,
30925
31573
  NitroAttestationError,
30926
31574
  PIN_MAX_LENGTH,
30927
31575
  PIN_MIN_LENGTH,
@@ -30939,6 +31587,7 @@ export {
30939
31587
  bufferToBase64,
30940
31588
  buildRecoveryPhraseChallengeOptions,
30941
31589
  bytesToHex,
31590
+ canonicalEscrowEmailBrand,
30942
31591
  clearAllShares,
30943
31592
  constantTimeEqualHex,
30944
31593
  countWords,