@learncard/network-plugin 3.0.0 → 3.1.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.
@@ -617,10 +617,10 @@ function $constructor(name, initializer3, params) {
617
617
  let Definition = _Definition;
618
618
  Object.defineProperty(Definition, "name", { value: name });
619
619
  function _(def) {
620
- var _a4;
620
+ var _a5;
621
621
  const inst = params?.Parent ? new Definition() : this;
622
622
  init(inst, def);
623
- (_a4 = inst._zod).deferred ?? (_a4.deferred = []);
623
+ (_a5 = inst._zod).deferred ?? (_a5.deferred = []);
624
624
  for (const fn of inst._zod.deferred) {
625
625
  fn();
626
626
  }
@@ -1286,8 +1286,8 @@ function explicitlyAborted(x, startIndex = 0) {
1286
1286
  __name(explicitlyAborted, "explicitlyAborted");
1287
1287
  function prefixIssues(path, issues) {
1288
1288
  return issues.map((iss) => {
1289
- var _a4;
1290
- (_a4 = iss).path ?? (_a4.path = []);
1289
+ var _a5;
1290
+ (_a5 = iss).path ?? (_a5.path = []);
1291
1291
  iss.path.unshift(path);
1292
1292
  return iss;
1293
1293
  });
@@ -1490,7 +1490,7 @@ __name(formatError, "formatError");
1490
1490
  function treeifyError(error51, mapper = (issue2) => issue2.message) {
1491
1491
  const result = { errors: [] };
1492
1492
  const processError = /* @__PURE__ */ __name((error52, path = []) => {
1493
- var _a4, _b;
1493
+ var _a5, _b;
1494
1494
  for (const issue2 of error52.issues) {
1495
1495
  if (issue2.code === "invalid_union" && issue2.errors.length) {
1496
1496
  issue2.errors.map((issues) => processError({ issues }, [...path, ...issue2.path]));
@@ -1511,7 +1511,7 @@ function treeifyError(error51, mapper = (issue2) => issue2.message) {
1511
1511
  const terminal = i === fullpath.length - 1;
1512
1512
  if (typeof el === "string") {
1513
1513
  curr.properties ?? (curr.properties = {});
1514
- (_a4 = curr.properties)[el] ?? (_a4[el] = { errors: [] });
1514
+ (_a5 = curr.properties)[el] ?? (_a5[el] = { errors: [] });
1515
1515
  curr = curr.properties[el];
1516
1516
  } else {
1517
1517
  curr.items ?? (curr.items = []);
@@ -1816,10 +1816,10 @@ var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
1816
1816
 
1817
1817
  // ../../../node_modules/zod/v4/core/checks.js
1818
1818
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
1819
- var _a4;
1819
+ var _a5;
1820
1820
  inst._zod ?? (inst._zod = {});
1821
1821
  inst._zod.def = def;
1822
- (_a4 = inst._zod).onattach ?? (_a4.onattach = []);
1822
+ (_a5 = inst._zod).onattach ?? (_a5.onattach = []);
1823
1823
  });
1824
1824
  var numericOriginMap = {
1825
1825
  number: "number",
@@ -1885,8 +1885,8 @@ var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan",
1885
1885
  var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => {
1886
1886
  $ZodCheck.init(inst, def);
1887
1887
  inst._zod.onattach.push((inst2) => {
1888
- var _a4;
1889
- (_a4 = inst2._zod.bag).multipleOf ?? (_a4.multipleOf = def.value);
1888
+ var _a5;
1889
+ (_a5 = inst2._zod.bag).multipleOf ?? (_a5.multipleOf = def.value);
1890
1890
  });
1891
1891
  inst._zod.check = (payload) => {
1892
1892
  if (typeof payload.value !== typeof def.value)
@@ -2019,9 +2019,9 @@ var $ZodCheckBigIntFormat = /* @__PURE__ */ $constructor("$ZodCheckBigIntFormat"
2019
2019
  };
2020
2020
  });
2021
2021
  var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, def) => {
2022
- var _a4;
2022
+ var _a5;
2023
2023
  $ZodCheck.init(inst, def);
2024
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2024
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2025
2025
  const val = payload.value;
2026
2026
  return !nullish(val) && val.size !== void 0;
2027
2027
  });
@@ -2047,9 +2047,9 @@ var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, d
2047
2047
  };
2048
2048
  });
2049
2049
  var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, def) => {
2050
- var _a4;
2050
+ var _a5;
2051
2051
  $ZodCheck.init(inst, def);
2052
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2052
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2053
2053
  const val = payload.value;
2054
2054
  return !nullish(val) && val.size !== void 0;
2055
2055
  });
@@ -2075,9 +2075,9 @@ var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, d
2075
2075
  };
2076
2076
  });
2077
2077
  var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (inst, def) => {
2078
- var _a4;
2078
+ var _a5;
2079
2079
  $ZodCheck.init(inst, def);
2080
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2080
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2081
2081
  const val = payload.value;
2082
2082
  return !nullish(val) && val.size !== void 0;
2083
2083
  });
@@ -2105,9 +2105,9 @@ var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (i
2105
2105
  };
2106
2106
  });
2107
2107
  var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => {
2108
- var _a4;
2108
+ var _a5;
2109
2109
  $ZodCheck.init(inst, def);
2110
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2110
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2111
2111
  const val = payload.value;
2112
2112
  return !nullish(val) && val.length !== void 0;
2113
2113
  });
@@ -2134,9 +2134,9 @@ var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (ins
2134
2134
  };
2135
2135
  });
2136
2136
  var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => {
2137
- var _a4;
2137
+ var _a5;
2138
2138
  $ZodCheck.init(inst, def);
2139
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2139
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2140
2140
  const val = payload.value;
2141
2141
  return !nullish(val) && val.length !== void 0;
2142
2142
  });
@@ -2163,9 +2163,9 @@ var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (ins
2163
2163
  };
2164
2164
  });
2165
2165
  var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => {
2166
- var _a4;
2166
+ var _a5;
2167
2167
  $ZodCheck.init(inst, def);
2168
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2168
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2169
2169
  const val = payload.value;
2170
2170
  return !nullish(val) && val.length !== void 0;
2171
2171
  });
@@ -2194,7 +2194,7 @@ var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals"
2194
2194
  };
2195
2195
  });
2196
2196
  var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => {
2197
- var _a4, _b;
2197
+ var _a5, _b;
2198
2198
  $ZodCheck.init(inst, def);
2199
2199
  inst._zod.onattach.push((inst2) => {
2200
2200
  const bag = inst2._zod.bag;
@@ -2205,7 +2205,7 @@ var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat"
2205
2205
  }
2206
2206
  });
2207
2207
  if (def.pattern)
2208
- (_a4 = inst._zod).check ?? (_a4.check = (payload) => {
2208
+ (_a5 = inst._zod).check ?? (_a5.check = (payload) => {
2209
2209
  def.pattern.lastIndex = 0;
2210
2210
  if (def.pattern.test(payload.value))
2211
2211
  return;
@@ -2410,7 +2410,7 @@ var version = {
2410
2410
 
2411
2411
  // ../../../node_modules/zod/v4/core/schemas.js
2412
2412
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
2413
- var _a4;
2413
+ var _a5;
2414
2414
  inst ?? (inst = {});
2415
2415
  inst._zod.def = def;
2416
2416
  inst._zod.bag = inst._zod.bag || {};
@@ -2425,7 +2425,7 @@ var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
2425
2425
  }
2426
2426
  }
2427
2427
  if (checks.length === 0) {
2428
- (_a4 = inst._zod).deferred ?? (_a4.deferred = []);
2428
+ (_a5 = inst._zod).deferred ?? (_a5.deferred = []);
2429
2429
  inst._zod.deferred?.push(() => {
2430
2430
  inst._zod.run = inst._zod.parse;
2431
2431
  });
@@ -11816,7 +11816,7 @@ function initializeContext(params) {
11816
11816
  }
11817
11817
  __name(initializeContext, "initializeContext");
11818
11818
  function process(schema, ctx, _params = { path: [], schemaPath: [] }) {
11819
- var _a4;
11819
+ var _a5;
11820
11820
  const def = schema._zod.def;
11821
11821
  const seen = ctx.seen.get(schema);
11822
11822
  if (seen) {
@@ -11864,7 +11864,7 @@ function process(schema, ctx, _params = { path: [], schemaPath: [] }) {
11864
11864
  delete result.schema.default;
11865
11865
  }
11866
11866
  if (ctx.io === "input" && "_prefault" in result.schema)
11867
- (_a4 = result.schema).default ?? (_a4.default = result.schema._prefault);
11867
+ (_a5 = result.schema).default ?? (_a5.default = result.schema._prefault);
11868
11868
  delete result.schema._prefault;
11869
11869
  const _result = ctx.seen.get(schema);
11870
11870
  return _result.schema;
@@ -15440,7 +15440,8 @@ var AssociationTypeValidator = external_exports.enum([
15440
15440
  "replacedBy"
15441
15441
  ]).or(external_exports.string());
15442
15442
  var AssociationValidator = external_exports.object({
15443
- type: external_exports.string().array().nonempty(),
15443
+ // Accept compacted scalars while retaining the existing permissive array contract.
15444
+ type: external_exports.string().min(1).or(external_exports.string().array().nonempty()),
15444
15445
  associationType: AssociationTypeValidator,
15445
15446
  sourceId: external_exports.string().optional(),
15446
15447
  targetId: external_exports.string()
@@ -16263,11 +16264,48 @@ var ConsentFlowContractDetailsValidator = external_exports.object({
16263
16264
  updatedAt: external_exports.string(),
16264
16265
  expiresAt: external_exports.string().optional(),
16265
16266
  autoBoosts: external_exports.string().array().optional(),
16266
- writers: external_exports.array(LCNProfileValidator).optional()
16267
+ writers: external_exports.array(LCNProfileValidator).optional(),
16268
+ recipients: external_exports.array(LCNPublicProfileValidator.extend({ did: external_exports.string() })).optional(),
16269
+ audienceVersion: external_exports.number().int().nonnegative().optional()
16267
16270
  });
16268
- var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied"]).nullable();
16271
+ var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied", "cancelled"]).nullable();
16269
16272
  var ConsentFlowContractRequestReadStatusValidator = external_exports.enum(["unseen", "seen"]).nullable();
16270
- var ConsentFlowContractRequestForProfileValidator = external_exports.object({
16273
+ var ConsentFlowReferralValidator = external_exports.object({
16274
+ requestId: external_exports.string(),
16275
+ requestedBy: external_exports.string(),
16276
+ externalReferenceId: external_exports.string().max(256).optional()
16277
+ });
16278
+ var ContractRequestFieldsValidator = ConsentFlowReferralValidator.partial().extend({
16279
+ requestedAt: external_exports.string().optional(),
16280
+ message: external_exports.string().max(500).optional()
16281
+ });
16282
+ var SendContractRequestValidator = external_exports.object({
16283
+ contractUri: external_exports.string(),
16284
+ targetProfileId: external_exports.string(),
16285
+ externalReferenceId: external_exports.string().trim().min(1).max(256).optional(),
16286
+ message: external_exports.string().trim().max(500).optional()
16287
+ });
16288
+ var ConsentFlowWebhookMetadataValidator = external_exports.object({
16289
+ eventId: external_exports.string(),
16290
+ deliveryKey: external_exports.string(),
16291
+ event: external_exports.enum([
16292
+ "request_sent",
16293
+ "request_accepted",
16294
+ "request_denied",
16295
+ "request_cancelled",
16296
+ "consent_created",
16297
+ "consent_updated",
16298
+ "consent_withdrawn",
16299
+ "credentials_synced"
16300
+ ]),
16301
+ contractUri: external_exports.string(),
16302
+ termsUri: external_exports.string().optional(),
16303
+ requestId: external_exports.string().optional(),
16304
+ requestedBy: external_exports.string().optional(),
16305
+ externalReferenceId: external_exports.string().optional(),
16306
+ recipientRole: external_exports.enum(["owner", "recipient", "requester", "target"])
16307
+ });
16308
+ var ConsentFlowContractRequestForProfileValidator = ContractRequestFieldsValidator.extend({
16271
16309
  profile: LCNProfileValidator,
16272
16310
  status: ConsentFlowContractRequestStatusValidator,
16273
16311
  readStatus: ConsentFlowContractRequestReadStatusValidator.optional()
@@ -16313,6 +16351,7 @@ var PaginatedConsentFlowTermsValidator = PaginationResponseValidator.extend({
16313
16351
  expiresAt: external_exports.string().optional(),
16314
16352
  oneTime: external_exports.boolean().optional(),
16315
16353
  terms: ConsentFlowTermsValidator,
16354
+ referral: ConsentFlowReferralValidator.optional(),
16316
16355
  contract: ConsentFlowContractDetailsValidator,
16317
16356
  uri: external_exports.string(),
16318
16357
  consenter: LCNProfileValidator,
@@ -16408,6 +16447,7 @@ var ConsentFlowTransactionValidator = external_exports.object({
16408
16447
  oneTime: external_exports.boolean().optional(),
16409
16448
  terms: ConsentFlowTermsValidator.optional(),
16410
16449
  guardianApproval: ConsentFlowGuardianApprovalValidator.optional(),
16450
+ referral: ConsentFlowReferralValidator.optional(),
16411
16451
  id: external_exports.string(),
16412
16452
  action: ConsentFlowTransactionActionValidator,
16413
16453
  date: external_exports.string(),
@@ -16418,6 +16458,7 @@ var HolderExportConsentRecordValidator = external_exports.object({
16418
16458
  status: ConsentFlowTermsStatusValidator,
16419
16459
  contract: ConsentFlowContractDetailsValidator,
16420
16460
  terms: ConsentFlowTermsValidator,
16461
+ referral: ConsentFlowReferralValidator.optional(),
16421
16462
  transactions: ConsentFlowTransactionValidator.array()
16422
16463
  });
16423
16464
  var HolderExportMetadataValidator = external_exports.object({
@@ -17154,7 +17195,7 @@ var AppStoreListingSubmitterValidator = external_exports.object({
17154
17195
  displayName: external_exports.string(),
17155
17196
  email: external_exports.string().optional()
17156
17197
  });
17157
- var AppStoreListingValidator = external_exports.object({
17198
+ var AppStoreListingFieldsValidator = external_exports.object({
17158
17199
  listing_id: external_exports.string(),
17159
17200
  slug: external_exports.string().optional(),
17160
17201
  display_name: external_exports.string(),
@@ -17180,15 +17221,33 @@ var AppStoreListingValidator = external_exports.object({
17180
17221
  submitter: AppStoreListingSubmitterValidator.optional(),
17181
17222
  contact_email: external_exports.string().email().optional()
17182
17223
  });
17224
+ var PendingListingUpdateStatusValidator = external_exports.enum(["DRAFT", "PENDING_REVIEW"]);
17225
+ var PendingListingUpdateValidator = external_exports.object({
17226
+ status: PendingListingUpdateStatusValidator,
17227
+ submitted_at: external_exports.string().optional(),
17228
+ changes: AppStoreListingFieldsValidator.omit({
17229
+ listing_id: true,
17230
+ app_listing_status: true,
17231
+ promotion_level: true,
17232
+ submitted_at: true,
17233
+ submitter: true
17234
+ }).partial(),
17235
+ manifest_version: external_exports.number().int().min(1).optional()
17236
+ });
17237
+ var AppStoreListingValidator = AppStoreListingFieldsValidator.extend({
17238
+ pending_update: PendingListingUpdateValidator.optional()
17239
+ });
17183
17240
  var AppStoreListingCreateValidator = AppStoreListingValidator.omit({
17184
17241
  listing_id: true,
17185
17242
  app_listing_status: true,
17186
- promotion_level: true
17243
+ promotion_level: true,
17244
+ pending_update: true
17187
17245
  });
17188
17246
  var AppStoreListingUpdateValidator = AppStoreListingValidator.partial().omit({
17189
17247
  listing_id: true,
17190
17248
  app_listing_status: true,
17191
- promotion_level: true
17249
+ promotion_level: true,
17250
+ pending_update: true
17192
17251
  });
17193
17252
  var InstalledAppValidator = AppStoreListingValidator.extend({
17194
17253
  installed_at: external_exports.string()
@@ -17203,12 +17262,87 @@ var AppBoostValidator = external_exports.object({
17203
17262
  templateAlias: external_exports.string().min(1).max(50).regex(/^[a-z0-9-]+$/),
17204
17263
  boostUri: external_exports.string()
17205
17264
  });
17206
- var SendCredentialEventValidator = external_exports.object({
17265
+ var InlineWalletCategoryValidator = external_exports.enum([
17266
+ "Achievement",
17267
+ "Skill",
17268
+ "ID",
17269
+ "Learning History",
17270
+ "Work History",
17271
+ "Social Badges",
17272
+ "Membership",
17273
+ "Accomplishment",
17274
+ "Experiences",
17275
+ "Accommodation",
17276
+ "Family"
17277
+ ]);
17278
+ var InlineAlignmentValidator = external_exports.object({
17279
+ name: external_exports.string(),
17280
+ url: external_exports.string(),
17281
+ framework: external_exports.string().optional(),
17282
+ code: external_exports.string().optional()
17283
+ }).passthrough();
17284
+ var InlineEvidenceValidator = external_exports.object({
17285
+ id: external_exports.string().optional(),
17286
+ name: external_exports.string().optional(),
17287
+ narrative: external_exports.string().optional()
17288
+ }).passthrough();
17289
+ var InlineWalletSkillTagValidator = external_exports.object({
17290
+ frameworkId: external_exports.string(),
17291
+ id: external_exports.string(),
17292
+ proficiencyLevel: external_exports.string().optional()
17293
+ }).passthrough();
17294
+ var SimpleInlineCredentialTemplateValidator = external_exports.object({
17295
+ rawCredential: external_exports.undefined().optional(),
17296
+ name: external_exports.string(),
17297
+ description: external_exports.string().optional(),
17298
+ image: external_exports.string().optional(),
17299
+ issuerName: external_exports.string().optional(),
17300
+ achievementType: external_exports.string().optional(),
17301
+ category: InlineWalletCategoryValidator.optional(),
17302
+ criteria: external_exports.object({
17303
+ narrative: external_exports.string().optional(),
17304
+ url: external_exports.string().optional()
17305
+ }).passthrough().optional(),
17306
+ alignments: external_exports.array(InlineAlignmentValidator).optional(),
17307
+ tags: external_exports.array(external_exports.string()).optional(),
17308
+ activity: external_exports.object({
17309
+ startDate: external_exports.string().optional(),
17310
+ endDate: external_exports.string().optional()
17311
+ }).passthrough().optional(),
17312
+ credits: external_exports.object({
17313
+ earned: external_exports.union([external_exports.number(), external_exports.string()]).optional(),
17314
+ available: external_exports.union([external_exports.number(), external_exports.string()]).optional()
17315
+ }).passthrough().optional(),
17316
+ validUntil: external_exports.string().optional(),
17317
+ evidence: external_exports.array(InlineEvidenceValidator).optional(),
17318
+ walletSkills: external_exports.array(InlineWalletSkillTagValidator).optional()
17319
+ }).passthrough();
17320
+ var RawInlineCredentialTemplateValidator = external_exports.object({
17321
+ rawCredential: external_exports.record(external_exports.string(), external_exports.unknown()),
17322
+ category: InlineWalletCategoryValidator.optional(),
17323
+ walletSkills: external_exports.array(InlineWalletSkillTagValidator).optional()
17324
+ }).passthrough();
17325
+ var InlineCredentialTemplateValidator = external_exports.union([
17326
+ RawInlineCredentialTemplateValidator,
17327
+ SimpleInlineCredentialTemplateValidator
17328
+ ]);
17329
+ var LegacySendCredentialEventValidator = external_exports.object({
17207
17330
  type: external_exports.literal("send-credential"),
17208
17331
  templateAlias: external_exports.string(),
17209
17332
  templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
17210
17333
  preventDuplicateClaim: external_exports.boolean().optional()
17211
17334
  });
17335
+ var InlineSendCredentialEventValidator = external_exports.object({
17336
+ type: external_exports.literal("send-credential"),
17337
+ alias: external_exports.string(),
17338
+ template: InlineCredentialTemplateValidator,
17339
+ templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
17340
+ preventDuplicateClaim: external_exports.boolean().optional()
17341
+ });
17342
+ var SendCredentialEventValidator = external_exports.union([
17343
+ LegacySendCredentialEventValidator,
17344
+ InlineSendCredentialEventValidator
17345
+ ]);
17212
17346
  var CheckCredentialEventValidator = external_exports.object({
17213
17347
  type: external_exports.literal("check-credential"),
17214
17348
  templateAlias: external_exports.string().optional(),
@@ -17303,7 +17437,119 @@ var GetCountersEventValidator = external_exports.object({
17303
17437
  type: external_exports.literal("get-counters"),
17304
17438
  keys: external_exports.array(counterKeyValidator).min(1).max(50).optional()
17305
17439
  });
17306
- var AppEventValidator = external_exports.discriminatedUnion("type", [
17440
+ var ConsentRequestWalletCategoryValidator = external_exports.enum([
17441
+ "Achievement",
17442
+ "Skill",
17443
+ "ID",
17444
+ "Learning History",
17445
+ "Work History",
17446
+ "Social Badges",
17447
+ "Membership",
17448
+ "Accomplishment",
17449
+ "Experiences",
17450
+ "Accommodation",
17451
+ "Family"
17452
+ ]);
17453
+ var ConsentRequestPersonalFieldValidator = external_exports.enum([
17454
+ "name",
17455
+ "email",
17456
+ "phone",
17457
+ "birthDate",
17458
+ "country",
17459
+ "avatar"
17460
+ ]);
17461
+ var ConsentRequestValidator = external_exports.object({
17462
+ read: external_exports.object({
17463
+ credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).optional(),
17464
+ personalFields: external_exports.array(ConsentRequestPersonalFieldValidator).optional()
17465
+ }).optional(),
17466
+ write: external_exports.object({
17467
+ credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).optional()
17468
+ }).optional(),
17469
+ reason: external_exports.string().optional()
17470
+ });
17471
+ var NormalizedConsentScopesValidator = external_exports.object({
17472
+ read: external_exports.object({
17473
+ credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).default([]),
17474
+ personalFields: external_exports.array(ConsentRequestPersonalFieldValidator).default([])
17475
+ }),
17476
+ write: external_exports.object({
17477
+ credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).default([])
17478
+ })
17479
+ });
17480
+ var CapturedTemplateRecordValidator = external_exports.object({
17481
+ alias: external_exports.string(),
17482
+ template: InlineCredentialTemplateValidator,
17483
+ version: external_exports.number().int().min(1),
17484
+ lastUsedAt: external_exports.string()
17485
+ }).passthrough();
17486
+ var CapturedConsentRecordValidator = external_exports.object({
17487
+ scopes: NormalizedConsentScopesValidator,
17488
+ reason: external_exports.string().optional(),
17489
+ lastUsedAt: external_exports.string()
17490
+ }).passthrough();
17491
+ var AppManifestValidator = external_exports.object({
17492
+ manifestVersion: external_exports.literal(1),
17493
+ appUrl: external_exports.string(),
17494
+ appKey: external_exports.string().max(200).optional(),
17495
+ suggestedName: external_exports.string().optional(),
17496
+ suggestedIconUrl: external_exports.string().optional(),
17497
+ permissions: external_exports.array(external_exports.string()).default([]),
17498
+ templates: external_exports.array(CapturedTemplateRecordValidator).default([]),
17499
+ consentRequests: external_exports.array(CapturedConsentRecordValidator).default([]),
17500
+ usedConsentContract: external_exports.boolean().optional(),
17501
+ featuresLaunched: external_exports.array(external_exports.string()).default([]),
17502
+ counterKeys: external_exports.array(external_exports.string()).default([]),
17503
+ usedLearnerContext: external_exports.boolean(),
17504
+ usedNotifications: external_exports.boolean(),
17505
+ firstCapturedAt: external_exports.string(),
17506
+ lastUpdatedAt: external_exports.string()
17507
+ }).passthrough();
17508
+ var AppManifestVersionStatusValidator = external_exports.enum(["draft", "active", "superseded"]);
17509
+ var AppManifestVersionValidator = external_exports.object({
17510
+ id: external_exports.string(),
17511
+ version: external_exports.number().int().min(1),
17512
+ manifestHash: external_exports.string(),
17513
+ manifest: AppManifestValidator,
17514
+ status: AppManifestVersionStatusValidator,
17515
+ createdAt: external_exports.string(),
17516
+ activatedAt: external_exports.string().optional()
17517
+ });
17518
+ var AppManifestStringDiffValidator = external_exports.object({
17519
+ added: external_exports.array(external_exports.string()),
17520
+ removed: external_exports.array(external_exports.string()),
17521
+ changed: external_exports.array(external_exports.string())
17522
+ });
17523
+ var AppManifestTemplateRefValidator = external_exports.object({
17524
+ alias: external_exports.string(),
17525
+ version: external_exports.number().int().min(1)
17526
+ });
17527
+ var AppManifestTemplateChangeValidator = external_exports.object({
17528
+ alias: external_exports.string(),
17529
+ fromVersion: external_exports.number().int().min(1),
17530
+ toVersion: external_exports.number().int().min(1)
17531
+ });
17532
+ var AppManifestDiffValidator = external_exports.object({
17533
+ permissions: AppManifestStringDiffValidator,
17534
+ templates: external_exports.object({
17535
+ added: external_exports.array(AppManifestTemplateRefValidator),
17536
+ removed: external_exports.array(AppManifestTemplateRefValidator),
17537
+ changed: external_exports.array(AppManifestTemplateChangeValidator)
17538
+ }),
17539
+ consentScopes: AppManifestStringDiffValidator,
17540
+ featurePaths: AppManifestStringDiffValidator,
17541
+ counterKeys: AppManifestStringDiffValidator,
17542
+ requiresReview: external_exports.boolean()
17543
+ });
17544
+ var UpsertConsentContractEventValidator = external_exports.object({
17545
+ type: external_exports.literal("upsert-consent-contract"),
17546
+ scopes: ConsentRequestValidator
17547
+ });
17548
+ var UpsertConsentContractResponseValidator = external_exports.object({
17549
+ contractUri: external_exports.string(),
17550
+ created: external_exports.boolean()
17551
+ });
17552
+ var AppEventValidator = external_exports.union([
17307
17553
  SendCredentialEventValidator,
17308
17554
  CheckCredentialEventValidator,
17309
17555
  CheckIssuanceStatusEventValidator,
@@ -17313,7 +17559,8 @@ var AppEventValidator = external_exports.discriminatedUnion("type", [
17313
17559
  SendNotificationEventValidator,
17314
17560
  IncrementCounterEventValidator,
17315
17561
  GetCounterEventValidator,
17316
- GetCountersEventValidator
17562
+ GetCountersEventValidator,
17563
+ UpsertConsentContractEventValidator
17317
17564
  ]);
17318
17565
  var AppEventInputValidator = external_exports.object({
17319
17566
  listingId: external_exports.string(),
@@ -17387,6 +17634,21 @@ var AuthSessionError = (_a3 = class extends Error {
17387
17634
  this.name = "AuthSessionError";
17388
17635
  }
17389
17636
  }, __name(_a3, "AuthSessionError"), __name2(_a3, "AuthSessionError"), _a3);
17637
+ var _a4;
17638
+ var UnsupportedSignInOperationError = (_a4 = class extends Error {
17639
+ constructor(operation, providerType) {
17640
+ super(`${operation} is not supported by ${providerType}`);
17641
+ this.operation = operation;
17642
+ this.providerType = providerType;
17643
+ this.name = "UnsupportedSignInOperationError";
17644
+ }
17645
+ }, __name(_a4, "UnsupportedSignInOperationError"), __name2(_a4, "UnsupportedSignInOperationError"), _a4);
17646
+ var EscrowPinStatusValidator = external_exports.object({
17647
+ state: external_exports.enum(["none", "enabled", "locked", "stale"]),
17648
+ enabled: external_exports.boolean(),
17649
+ attemptsRemaining: external_exports.number().int().nonnegative(),
17650
+ salt: external_exports.string().optional()
17651
+ });
17390
17652
  var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
17391
17653
  var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
17392
17654
  var BitstringStatusListEntryValidator = external_exports.object({
@@ -17495,6 +17757,501 @@ var inAppMessagesFlagValidator = external_exports.object({
17495
17757
  version: external_exports.number().default(1),
17496
17758
  messages: external_exports.array(inAppMessageValidator).default([])
17497
17759
  }).passthrough();
17760
+ var SHARE_LINK_ID_BYTES = 16;
17761
+ var SHARE_CONTENT_KEY_BYTES = 32;
17762
+ var SHARE_IV_BYTES = 12;
17763
+ var SHARE_TAG_BYTES = 16;
17764
+ var MAX_SHARE_CIPHERTEXT_BYTES = 512 * 1024;
17765
+ var MAX_SHARE_RECOVERY_JWE_BYTES = 64 * 1024;
17766
+ var MAX_SELECTED_CREDENTIALS = 50;
17767
+ var MAX_ENDORSEMENTS = 200;
17768
+ var MAX_VP_MEMBERS = MAX_SELECTED_CREDENTIALS + MAX_ENDORSEMENTS;
17769
+ var MAX_SHARE_SOURCE_URI_CHARS = 2048;
17770
+ var MAX_SHARE_LINK_REQUEST_BYTES = 1024 * 1024;
17771
+ var SHARE_LINK_PROTOCOL = "lc-share/v1";
17772
+ var SHARE_RECOVERY_PROTOCOL = "lc-share-recovery/v1";
17773
+ var BASE64URL_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
17774
+ var BASE64URL_LOOKUP = (() => {
17775
+ const table = new Int16Array(128).fill(-1);
17776
+ for (let index = 0; index < BASE64URL_ALPHABET.length; index += 1) {
17777
+ table[BASE64URL_ALPHABET.charCodeAt(index)] = index;
17778
+ }
17779
+ return table;
17780
+ })();
17781
+ var encodeBase64Url = /* @__PURE__ */ __name2((bytes) => {
17782
+ let output = "";
17783
+ for (let index = 0; index < bytes.length; index += 3) {
17784
+ const first = bytes[index];
17785
+ const second = bytes[index + 1];
17786
+ const third = bytes[index + 2];
17787
+ output += BASE64URL_ALPHABET[first >> 2];
17788
+ output += BASE64URL_ALPHABET[(first & 3) << 4 | (second ?? 0) >> 4];
17789
+ if (second === void 0) break;
17790
+ output += BASE64URL_ALPHABET[(second & 15) << 2 | (third ?? 0) >> 6];
17791
+ if (third === void 0) break;
17792
+ output += BASE64URL_ALPHABET[third & 63];
17793
+ }
17794
+ return output;
17795
+ }, "encodeBase64Url");
17796
+ var decodeBase64Url = /* @__PURE__ */ __name2((value) => {
17797
+ if (typeof value !== "string") return null;
17798
+ const output = new Uint8Array(Math.floor(value.length * 6 / 8));
17799
+ let bits = 0;
17800
+ let bitCount = 0;
17801
+ let outputIndex = 0;
17802
+ for (let index = 0; index < value.length; index += 1) {
17803
+ const code = value.charCodeAt(index);
17804
+ const digit = code < 128 ? BASE64URL_LOOKUP[code] : -1;
17805
+ if (digit < 0) return null;
17806
+ bits = bits << 6 | digit;
17807
+ bitCount += 6;
17808
+ if (bitCount >= 8) {
17809
+ bitCount -= 8;
17810
+ output[outputIndex] = bits >> bitCount & 255;
17811
+ outputIndex += 1;
17812
+ }
17813
+ }
17814
+ return output;
17815
+ }, "decodeBase64Url");
17816
+ var isCanonicalBase64Url = /* @__PURE__ */ __name2((value, expectedBytes) => {
17817
+ if (typeof value !== "string") return false;
17818
+ if (expectedBytes !== void 0 && value.length !== Math.ceil(expectedBytes * 4 / 3))
17819
+ return false;
17820
+ const decoded = decodeBase64Url(value);
17821
+ if (decoded === null) return false;
17822
+ if (expectedBytes !== void 0 && decoded.length !== expectedBytes) return false;
17823
+ return encodeBase64Url(decoded) === value;
17824
+ }, "isCanonicalBase64Url");
17825
+ var decodedBase64UrlByteLength = /* @__PURE__ */ __name2((value) => decodeBase64Url(value)?.length ?? null, "decodedBase64UrlByteLength");
17826
+ var utf8ByteLength = /* @__PURE__ */ __name2((value) => new TextEncoder().encode(value).length, "utf8ByteLength");
17827
+ var canonicalBase64Url = /* @__PURE__ */ __name2((bytes) => external_exports.string().refine((value) => isCanonicalBase64Url(value, bytes), {
17828
+ message: `must be canonical base64url for exactly ${bytes} bytes`
17829
+ }), "canonicalBase64Url");
17830
+ var ShareLinkIdValidator = canonicalBase64Url(SHARE_LINK_ID_BYTES);
17831
+ var ShareContentKeyValidator = canonicalBase64Url(SHARE_CONTENT_KEY_BYTES);
17832
+ var ShareIvValidator = canonicalBase64Url(SHARE_IV_BYTES);
17833
+ var ShareCiphertextValidator = external_exports.string().refine(
17834
+ (value) => {
17835
+ if (value.length > Math.ceil(MAX_SHARE_CIPHERTEXT_BYTES * 4 / 3)) return false;
17836
+ const decoded = decodeBase64Url(value);
17837
+ if (decoded === null) return false;
17838
+ if (encodeBase64Url(decoded) !== value) return false;
17839
+ return decoded.length >= SHARE_TAG_BYTES && decoded.length <= MAX_SHARE_CIPHERTEXT_BYTES;
17840
+ },
17841
+ {
17842
+ message: `must be canonical base64url decoding to ${SHARE_TAG_BYTES}..${MAX_SHARE_CIPHERTEXT_BYTES} bytes`
17843
+ }
17844
+ );
17845
+ var ShareEnvelopeValidator = external_exports.object({
17846
+ v: external_exports.literal(1),
17847
+ alg: external_exports.literal("A256GCM"),
17848
+ iv: ShareIvValidator,
17849
+ ct: ShareCiphertextValidator
17850
+ }).strict();
17851
+ var safeVersion = external_exports.number().int().min(1).max(2 ** 31 - 1);
17852
+ var safeCredentialIndex = external_exports.number().int().min(0).max(MAX_VP_MEMBERS - 1);
17853
+ var ShareSelectionEntryValidator = external_exports.object({ credentialIndex: safeCredentialIndex }).strict();
17854
+ var ShareEndorsementEntryValidator = external_exports.object({ credentialIndex: safeCredentialIndex, targetCredentialIndex: safeCredentialIndex }).strict();
17855
+ var ShareSharerValidator = external_exports.object({
17856
+ profileId: external_exports.string().min(1).max(128),
17857
+ displayName: external_exports.string().min(1).max(120),
17858
+ avatar: external_exports.string().max(2048).optional()
17859
+ }).strict();
17860
+ var presentationShape = VPValidator.extend({
17861
+ verifiableCredential: VCValidator.array().min(1).max(MAX_VP_MEMBERS)
17862
+ });
17863
+ var hasBoundedPresentation = /* @__PURE__ */ __name2((value) => {
17864
+ let credentialCount = 0;
17865
+ const ancestors = /* @__PURE__ */ new Set();
17866
+ const visit = /* @__PURE__ */ __name2((node, depth) => {
17867
+ if (node === null || typeof node !== "object") return true;
17868
+ if (depth > 32 || ancestors.has(node)) return false;
17869
+ ancestors.add(node);
17870
+ try {
17871
+ for (const [key, child] of Object.entries(node)) {
17872
+ if (key === "verifiableCredential") {
17873
+ credentialCount += Array.isArray(child) ? child.length : 1;
17874
+ if (credentialCount > MAX_VP_MEMBERS) return false;
17875
+ }
17876
+ if (!visit(child, depth + 1)) return false;
17877
+ }
17878
+ return true;
17879
+ } finally {
17880
+ ancestors.delete(node);
17881
+ }
17882
+ }, "visit");
17883
+ return visit(value, 0);
17884
+ }, "hasBoundedPresentation");
17885
+ var ShareManifestPresentationValidator = external_exports.custom(
17886
+ (value) => hasBoundedPresentation(value) && presentationShape.safeParse(value).success,
17887
+ { message: "invalid share presentation" }
17888
+ );
17889
+ var SharePayloadValidatorShape = external_exports.object({
17890
+ protocol: external_exports.literal(SHARE_LINK_PROTOCOL),
17891
+ shareId: ShareLinkIdValidator,
17892
+ contentVersion: safeVersion,
17893
+ createdAt: external_exports.iso.datetime(),
17894
+ sharer: ShareSharerValidator,
17895
+ presentation: ShareManifestPresentationValidator,
17896
+ selection: ShareSelectionEntryValidator.array().min(1).max(MAX_SELECTED_CREDENTIALS),
17897
+ endorsements: ShareEndorsementEntryValidator.array().max(MAX_ENDORSEMENTS).default([])
17898
+ }).strict();
17899
+ var classificationFailure = /* @__PURE__ */ __name2((code, message, path = []) => ({ ok: false, code, message, path }), "classificationFailure");
17900
+ var readSignedClaimId = /* @__PURE__ */ __name2((member) => {
17901
+ if (member === null || typeof member !== "object") return void 0;
17902
+ const record2 = member;
17903
+ const claim = record2.credentialSubject ?? record2.endorsement;
17904
+ if (claim === null || typeof claim !== "object") return void 0;
17905
+ const claimRecord = claim;
17906
+ const nested = claimRecord.endorsement;
17907
+ const nestedId = nested !== null && typeof nested === "object" ? nested.id : void 0;
17908
+ return claimRecord.id ?? nestedId;
17909
+ }, "readSignedClaimId");
17910
+ var classifyShareManifest = /* @__PURE__ */ __name2((payload) => {
17911
+ const members = payload.presentation?.verifiableCredential;
17912
+ if (!Array.isArray(members) || members.length === 0) {
17913
+ return classificationFailure("NO_PRESENTATION_MEMBERS", "presentation has no credentials");
17914
+ }
17915
+ if (members.length > MAX_VP_MEMBERS) {
17916
+ return classificationFailure(
17917
+ "TOO_MANY_VP_MEMBERS",
17918
+ `presentation has ${members.length} members, over the ${MAX_VP_MEMBERS} bound`
17919
+ );
17920
+ }
17921
+ const selection = payload.selection;
17922
+ const endorsements = payload.endorsements ?? [];
17923
+ if (!Array.isArray(selection) || selection.length < 1 || selection.length > MAX_SELECTED_CREDENTIALS) {
17924
+ return classificationFailure("BAD_SELECTION", "selection must contain 1..50 entries");
17925
+ }
17926
+ if (!Array.isArray(endorsements) || endorsements.length > MAX_ENDORSEMENTS) {
17927
+ return classificationFailure(
17928
+ "BAD_ENDORSEMENTS",
17929
+ "endorsements must contain at most 200 entries"
17930
+ );
17931
+ }
17932
+ const selectedIndices = [];
17933
+ const selected = /* @__PURE__ */ new Set();
17934
+ for (let index = 0; index < selection.length; index += 1) {
17935
+ const entry = selection[index];
17936
+ const credentialIndex = entry?.credentialIndex;
17937
+ if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
17938
+ return classificationFailure(
17939
+ "SELECTION_INDEX_OUT_OF_BOUNDS",
17940
+ `selection[${index}].credentialIndex is out of bounds`,
17941
+ ["selection", index, "credentialIndex"]
17942
+ );
17943
+ }
17944
+ if (selected.has(credentialIndex)) {
17945
+ return classificationFailure(
17946
+ "SELECTION_INDEX_DUPLICATE",
17947
+ `selection[${index}].credentialIndex is duplicated`,
17948
+ ["selection", index, "credentialIndex"]
17949
+ );
17950
+ }
17951
+ selected.add(credentialIndex);
17952
+ selectedIndices.push(credentialIndex);
17953
+ }
17954
+ const classified = new Set(selected);
17955
+ const endorsementIndices = [];
17956
+ for (let index = 0; index < endorsements.length; index += 1) {
17957
+ const entry = endorsements[index];
17958
+ const credentialIndex = entry?.credentialIndex;
17959
+ const targetIndex = entry?.targetCredentialIndex;
17960
+ if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
17961
+ return classificationFailure(
17962
+ "ENDORSEMENT_INDEX_OUT_OF_BOUNDS",
17963
+ `endorsements[${index}].credentialIndex is out of bounds`,
17964
+ ["endorsements", index, "credentialIndex"]
17965
+ );
17966
+ }
17967
+ if (classified.has(credentialIndex)) {
17968
+ return classificationFailure(
17969
+ "VP_MEMBER_CLASSIFIED_TWICE",
17970
+ `endorsements[${index}].credentialIndex was already classified`,
17971
+ ["endorsements", index, "credentialIndex"]
17972
+ );
17973
+ }
17974
+ if (!selected.has(targetIndex)) {
17975
+ return classificationFailure(
17976
+ "ENDORSEMENT_TARGET_NOT_SELECTED",
17977
+ `endorsements[${index}].targetCredentialIndex must reference a selected credential`,
17978
+ ["endorsements", index, "targetCredentialIndex"]
17979
+ );
17980
+ }
17981
+ const referenced = readSignedClaimId(members[credentialIndex]);
17982
+ const target = members[targetIndex];
17983
+ const targetId = target !== null && typeof target === "object" ? target.id : void 0;
17984
+ if (typeof referenced !== "string" || typeof targetId !== "string" || referenced !== targetId) {
17985
+ return classificationFailure(
17986
+ "ENDORSEMENT_TARGET_UNBOUND",
17987
+ `endorsements[${index}] claim does not reference the target credential id`,
17988
+ ["endorsements", index]
17989
+ );
17990
+ }
17991
+ classified.add(credentialIndex);
17992
+ endorsementIndices.push(credentialIndex);
17993
+ }
17994
+ if (classified.size !== members.length) {
17995
+ return classificationFailure(
17996
+ "UNCLASSIFIED_VP_MEMBER",
17997
+ "every presentation member must be classified exactly once",
17998
+ ["presentation", "verifiableCredential"]
17999
+ );
18000
+ }
18001
+ return {
18002
+ ok: true,
18003
+ classification: { selectedIndices, endorsementIndices, memberCount: members.length }
18004
+ };
18005
+ }, "classifyShareManifest");
18006
+ var SharePayloadValidator = SharePayloadValidatorShape.superRefine((payload, ctx) => {
18007
+ const result = classifyShareManifest(payload);
18008
+ if (!result.ok) {
18009
+ ctx.addIssue({
18010
+ code: "custom",
18011
+ message: result.message,
18012
+ path: result.path,
18013
+ params: { shareLinkCode: result.code }
18014
+ });
18015
+ }
18016
+ });
18017
+ var ShareRecoverySelectionValidator = external_exports.object({
18018
+ ref: external_exports.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS),
18019
+ order: external_exports.number().int().min(0).max(MAX_SELECTED_CREDENTIALS - 1)
18020
+ }).strict();
18021
+ var ShareRecoveryEndorsementValidator = external_exports.object({ targetRef: external_exports.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS) }).strict();
18022
+ var ShareRecoveryPlaintextValidator = external_exports.object({
18023
+ protocol: external_exports.literal(SHARE_RECOVERY_PROTOCOL),
18024
+ shareId: ShareLinkIdValidator,
18025
+ ownerProfileId: external_exports.string().min(1).max(128),
18026
+ createdAt: external_exports.iso.datetime(),
18027
+ latest: external_exports.object({ contentVersion: safeVersion, key: ShareContentKeyValidator }).strict(),
18028
+ selection: ShareRecoverySelectionValidator.array().min(1).max(MAX_SELECTED_CREDENTIALS),
18029
+ endorsements: ShareRecoveryEndorsementValidator.array().max(MAX_ENDORSEMENTS).default([])
18030
+ }).strict().superRefine((recovery, ctx) => {
18031
+ const orders = /* @__PURE__ */ new Set();
18032
+ recovery.selection.forEach((entry, index) => {
18033
+ if (entry.order >= recovery.selection.length) {
18034
+ ctx.addIssue({
18035
+ code: "custom",
18036
+ message: "order must be within the selection bounds",
18037
+ path: ["selection", index, "order"]
18038
+ });
18039
+ }
18040
+ if (orders.has(entry.order)) {
18041
+ ctx.addIssue({
18042
+ code: "custom",
18043
+ message: "order must be unique within the selection",
18044
+ path: ["selection", index, "order"]
18045
+ });
18046
+ }
18047
+ orders.add(entry.order);
18048
+ });
18049
+ });
18050
+ var ShareOwnerRecoveryValidator = JWEValidator.refine(
18051
+ (value) => utf8ByteLength(JSON.stringify(value)) <= MAX_SHARE_RECOVERY_JWE_BYTES,
18052
+ { message: `serialized recovery JWE must be at most ${MAX_SHARE_RECOVERY_JWE_BYTES} bytes` }
18053
+ );
18054
+ var ShareLinkStatusValidator = external_exports.enum(["pending", "active", "stopped"]);
18055
+ var ShareContentStateValidator = external_exports.enum(["staging", "finalized", "content_missing"]);
18056
+ var ShareLinkValidator = external_exports.object({
18057
+ id: ShareLinkIdValidator,
18058
+ title: external_exports.string().min(1).max(120),
18059
+ note: external_exports.string().max(500).optional(),
18060
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
18061
+ version: safeVersion,
18062
+ contentVersion: safeVersion,
18063
+ status: ShareLinkStatusValidator,
18064
+ attachmentId: external_exports.string().uuid().nullable().optional(),
18065
+ attachmentChunkCount: external_exports.number().int().min(1).max(16).nullable().optional(),
18066
+ contentState: ShareContentStateValidator,
18067
+ createdAt: external_exports.iso.datetime(),
18068
+ updatedAt: external_exports.iso.datetime(),
18069
+ expiresAt: external_exports.iso.datetime().nullable(),
18070
+ stoppedAt: external_exports.iso.datetime().nullable(),
18071
+ lastViewedAt: external_exports.iso.datetime().nullable(),
18072
+ viewCount: external_exports.number().int().min(0).optional(),
18073
+ passcodeProtected: external_exports.boolean(),
18074
+ notifyOnView: external_exports.boolean(),
18075
+ minorPolicy: external_exports.object({
18076
+ isMinor: external_exports.boolean().nullable(),
18077
+ policyResolved: external_exports.boolean(),
18078
+ defaultExpiryDays: external_exports.union([external_exports.literal(30), external_exports.literal(365)]),
18079
+ viewCountingEnabled: external_exports.boolean()
18080
+ }),
18081
+ /**
18082
+ * Guarded application/API URL for the content. Optional because owner APIs in
18083
+ * D1 have no public resolve/content endpoint yet; it must never be a
18084
+ * LearnCloud object URL or carry a fabricated decryption key.
18085
+ */
18086
+ contentUrl: external_exports.string().optional()
18087
+ });
18088
+ var clientRequestId = external_exports.string().uuid();
18089
+ var ShareLinkAttachmentValidator = external_exports.object({
18090
+ id: external_exports.string().uuid(),
18091
+ chunkCount: external_exports.number().int().min(1).max(16)
18092
+ }).strict();
18093
+ var attachmentChunkKey = {
18094
+ id: ShareLinkIdValidator,
18095
+ contentVersion: safeVersion,
18096
+ attachmentId: external_exports.string().uuid(),
18097
+ chunkIndex: external_exports.number().int().min(0).max(15)
18098
+ };
18099
+ var ShareLinkAttachmentChunkEnvelopeValidator = ShareEnvelopeValidator.refine(
18100
+ (value) => (decodedBase64UrlByteLength(value.ct) ?? Infinity) <= 256 * 1024 + SHARE_TAG_BYTES
18101
+ );
18102
+ var PutShareLinkAttachmentChunkInputValidator = external_exports.object({
18103
+ ...attachmentChunkKey,
18104
+ chunkCount: external_exports.number().int().min(1).max(16),
18105
+ envelope: ShareLinkAttachmentChunkEnvelopeValidator,
18106
+ ownerEncryptedRecovery: ShareOwnerRecoveryValidator
18107
+ }).strict().refine((value) => value.chunkIndex < value.chunkCount);
18108
+ var GetShareLinkAttachmentChunkInputValidator = external_exports.object({
18109
+ ...attachmentChunkKey,
18110
+ passcode: external_exports.string().min(4).max(64).optional(),
18111
+ accessToken: external_exports.string().min(1).max(2048).optional()
18112
+ }).strict();
18113
+ var ShareLinkAttachmentChunkOutputValidator = external_exports.object({
18114
+ ...attachmentChunkKey,
18115
+ envelope: ShareLinkAttachmentChunkEnvelopeValidator,
18116
+ accessToken: external_exports.string().min(1).max(2048).optional()
18117
+ }).strict();
18118
+ var DeleteShareLinkAttachmentChunksInputValidator = external_exports.object({
18119
+ id: ShareLinkIdValidator,
18120
+ contentVersion: safeVersion,
18121
+ attachmentId: external_exports.string().uuid(),
18122
+ chunkCount: external_exports.number().int().min(1).max(16)
18123
+ }).strict();
18124
+ var PutShareLinkAttachmentChunkOutputValidator = external_exports.object({ ok: external_exports.literal(true) }).strict();
18125
+ var DeleteShareLinkAttachmentChunksOutputValidator = external_exports.object({ ok: external_exports.boolean() }).strict();
18126
+ var CreateShareLinkInputValidator = external_exports.object({
18127
+ id: ShareLinkIdValidator,
18128
+ clientRequestId,
18129
+ title: external_exports.string().min(1).max(120),
18130
+ note: external_exports.string().max(500).optional(),
18131
+ expiresAt: external_exports.iso.datetime().nullable().optional(),
18132
+ passcode: external_exports.string().min(8).max(64).optional(),
18133
+ notifyOnView: external_exports.boolean().default(false),
18134
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
18135
+ contentVersion: external_exports.literal(1),
18136
+ envelope: ShareEnvelopeValidator,
18137
+ ownerEncryptedRecovery: ShareOwnerRecoveryValidator,
18138
+ attachment: ShareLinkAttachmentValidator.optional()
18139
+ }).strict();
18140
+ var UpdateShareLinkInputValidator = external_exports.object({
18141
+ id: ShareLinkIdValidator,
18142
+ expectedVersion: safeVersion,
18143
+ clientRequestId,
18144
+ title: external_exports.string().min(1).max(120).optional(),
18145
+ note: external_exports.string().max(500).nullable().optional(),
18146
+ expiresAt: external_exports.iso.datetime().nullable().optional(),
18147
+ /** Omitted preserves the current passcode, null removes it, and a string replaces it. */
18148
+ passcode: external_exports.string().min(8).max(64).nullable().optional(),
18149
+ notifyOnView: external_exports.boolean().optional(),
18150
+ contentVersion: safeVersion.optional(),
18151
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS).optional(),
18152
+ envelope: ShareEnvelopeValidator.optional(),
18153
+ ownerEncryptedRecovery: ShareOwnerRecoveryValidator.optional(),
18154
+ attachment: ShareLinkAttachmentValidator.optional()
18155
+ }).strict().superRefine((value, ctx) => {
18156
+ const provided = [
18157
+ value.contentVersion,
18158
+ value.selectedCount,
18159
+ value.envelope,
18160
+ value.ownerEncryptedRecovery
18161
+ ].filter((field) => field !== void 0).length;
18162
+ if (provided !== 0 && provided !== 4) {
18163
+ ctx.addIssue({
18164
+ code: "custom",
18165
+ message: "content replacement requires contentVersion, selectedCount, envelope and ownerEncryptedRecovery together"
18166
+ });
18167
+ }
18168
+ if (value.attachment !== void 0 && provided !== 4) {
18169
+ ctx.addIssue({ code: "custom", message: "attachment requires a content replacement" });
18170
+ }
18171
+ });
18172
+ var ShareLinkIdInputValidator = external_exports.object({ id: ShareLinkIdValidator }).strict();
18173
+ var ShareLinkOperationKeyInputValidator = external_exports.object({ id: ShareLinkIdValidator, operationId: external_exports.string().uuid() }).strict();
18174
+ var ShareLinkOwnerCommitOutputValidator = external_exports.discriminatedUnion("status", [
18175
+ external_exports.object({ status: external_exports.literal("completed"), share: ShareLinkValidator }).strict(),
18176
+ external_exports.object({
18177
+ status: external_exports.literal("pending"),
18178
+ id: ShareLinkIdValidator,
18179
+ operationId: external_exports.string().uuid()
18180
+ }).strict()
18181
+ ]);
18182
+ var ShareLinkOwnerStatusOutputValidator = external_exports.discriminatedUnion("status", [
18183
+ external_exports.object({ status: external_exports.literal("found"), share: ShareLinkValidator }).strict(),
18184
+ external_exports.object({
18185
+ status: external_exports.literal("pending"),
18186
+ id: ShareLinkIdValidator,
18187
+ operationId: external_exports.string().uuid()
18188
+ }).strict(),
18189
+ external_exports.object({ status: external_exports.literal("not_found"), id: ShareLinkIdValidator }).strict()
18190
+ ]);
18191
+ var ShareLinkOwnerRecoveryOutputValidator = external_exports.object({ recovery: ShareOwnerRecoveryValidator }).strict();
18192
+ var ShareLinkOwnerContentOutputValidator = external_exports.object({
18193
+ id: ShareLinkIdValidator,
18194
+ contentVersion: safeVersion,
18195
+ envelope: ShareEnvelopeValidator
18196
+ }).strict();
18197
+ var ResolveShareLinkInputValidator = external_exports.object({
18198
+ id: ShareLinkIdValidator,
18199
+ /** Sent only in a POST body; it must never be placed in a share URL. */
18200
+ passcode: external_exports.string().min(4).max(64).optional()
18201
+ }).strict();
18202
+ var ShareLinkPublicStateValidator = external_exports.discriminatedUnion("state", [
18203
+ external_exports.object({
18204
+ state: external_exports.literal("passcode_required"),
18205
+ id: ShareLinkIdValidator
18206
+ }).strict(),
18207
+ external_exports.object({ state: external_exports.literal("try_later"), id: ShareLinkIdValidator }).strict(),
18208
+ external_exports.object({
18209
+ state: external_exports.literal("active"),
18210
+ id: ShareLinkIdValidator,
18211
+ title: external_exports.string().max(120),
18212
+ note: external_exports.string().max(500).optional(),
18213
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
18214
+ contentVersion: safeVersion,
18215
+ contentUrl: external_exports.string(),
18216
+ sharer: external_exports.object({
18217
+ displayName: external_exports.string().max(120),
18218
+ avatar: external_exports.string().max(2048).optional()
18219
+ }),
18220
+ createdAt: external_exports.iso.datetime(),
18221
+ updatedAt: external_exports.iso.datetime(),
18222
+ expiresAt: external_exports.iso.datetime().nullable()
18223
+ }).strict(),
18224
+ external_exports.object({
18225
+ state: external_exports.literal("expired"),
18226
+ id: ShareLinkIdValidator,
18227
+ expiresAt: external_exports.iso.datetime()
18228
+ }).strict(),
18229
+ external_exports.object({
18230
+ state: external_exports.literal("stopped"),
18231
+ id: ShareLinkIdValidator,
18232
+ stoppedAt: external_exports.iso.datetime()
18233
+ }).strict(),
18234
+ external_exports.object({ state: external_exports.literal("not_found"), id: ShareLinkIdValidator }).strict()
18235
+ ]);
18236
+ var ListShareLinksInputValidator = external_exports.object({
18237
+ limit: external_exports.number().int().min(1).max(50).default(25),
18238
+ cursor: external_exports.string().max(512).optional()
18239
+ }).strict();
18240
+ var PaginatedShareLinksValidator = PaginationResponseValidator.extend({
18241
+ records: ShareLinkValidator.array()
18242
+ });
18243
+ var AcknowledgeViewInputValidator = external_exports.object({
18244
+ receipt: external_exports.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
18245
+ }).strict();
18246
+ var AcknowledgeViewOutputValidator = external_exports.object({ ok: external_exports.literal(true) }).strict();
18247
+ var SHARE_VIEW_RECEIPT_TTL_SECONDS = 10 * 60;
18248
+ var ShareLinkPublicContentViewValidator = external_exports.object({
18249
+ id: ShareLinkIdValidator,
18250
+ contentVersion: safeVersion,
18251
+ envelope: ShareEnvelopeValidator,
18252
+ contentUrl: external_exports.string(),
18253
+ receipt: external_exports.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
18254
+ }).strict();
17498
18255
 
17499
18256
  // src/plugin.ts
17500
18257
  import {
@@ -17502,6 +18259,7 @@ import {
17502
18259
  getCredentialStatusArray,
17503
18260
  injectManagedRefreshService as injectSharedManagedRefreshService,
17504
18261
  isVC2Format,
18262
+ isEncrypted,
17505
18263
  resolveStorageReadResult
17506
18264
  } from "@learncard/helpers";
17507
18265
 
@@ -18152,6 +18910,7 @@ var isActAsDenial = /* @__PURE__ */ __name((error51) => {
18152
18910
  }
18153
18911
  return false;
18154
18912
  }, "isActAsDenial");
18913
+ var getInboxFailureReason = /* @__PURE__ */ __name((reason) => reason instanceof Error ? `${reason.name}: ${reason.message}` : String(reason), "getInboxFailureReason");
18155
18914
  async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, options) {
18156
18915
  const apiToken = typeof apiTokenOrOptions === "string" ? apiTokenOrOptions : void 0;
18157
18916
  const resolvedOptions = (typeof apiTokenOrOptions === "object" ? apiTokenOrOptions : options) ?? {};
@@ -18564,6 +19323,58 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
18564
19323
  await ensureUser();
18565
19324
  return client.profile.invalidateInvite.mutate({ challenge });
18566
19325
  }, "invalidateInvite"),
19326
+ createShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
19327
+ await ensureUser();
19328
+ return client.shareLinks.create.mutate(input);
19329
+ }, "createShareLink"),
19330
+ putShareLinkAttachmentChunk: /* @__PURE__ */ __name(async (_learnCard, input) => {
19331
+ await ensureUser();
19332
+ return client.shareLinks.putAttachmentChunk.mutate(input);
19333
+ }, "putShareLinkAttachmentChunk"),
19334
+ deleteShareLinkAttachmentChunks: /* @__PURE__ */ __name(async (_learnCard, input) => {
19335
+ await ensureUser();
19336
+ return client.shareLinks.deleteAttachmentChunks.mutate(input);
19337
+ }, "deleteShareLinkAttachmentChunks"),
19338
+ getShareLinkAttachmentChunk: /* @__PURE__ */ __name(async (_learnCard, input) => client.publicShareLinks.attachmentChunk.mutate(input), "getShareLinkAttachmentChunk"),
19339
+ updateShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
19340
+ await ensureUser();
19341
+ return client.shareLinks.update.mutate(input);
19342
+ }, "updateShareLink"),
19343
+ revokeShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
19344
+ await ensureUser();
19345
+ return client.shareLinks.revoke.mutate(input);
19346
+ }, "revokeShareLink"),
19347
+ getShareLink: /* @__PURE__ */ __name(async (_learnCard, id) => {
19348
+ await ensureUser();
19349
+ return client.shareLinks.get.query({ id });
19350
+ }, "getShareLink"),
19351
+ getShareLinkOperationStatus: /* @__PURE__ */ __name(async (_learnCard, input) => {
19352
+ await ensureUser();
19353
+ return client.shareLinks.getOperationStatus.query(input);
19354
+ }, "getShareLinkOperationStatus"),
19355
+ retryShareLinkOperation: /* @__PURE__ */ __name(async (_learnCard, input) => {
19356
+ await ensureUser();
19357
+ return client.shareLinks.retry.mutate(input);
19358
+ }, "retryShareLinkOperation"),
19359
+ getShareLinkRecovery: /* @__PURE__ */ __name(async (_learnCard, id) => {
19360
+ await ensureUser();
19361
+ return client.shareLinks.getRecovery.query({ id });
19362
+ }, "getShareLinkRecovery"),
19363
+ getShareLinkOwnerContent: /* @__PURE__ */ __name(async (_learnCard, id) => {
19364
+ await ensureUser();
19365
+ return client.shareLinks.getContent.query({ id });
19366
+ }, "getShareLinkOwnerContent"),
19367
+ listShareLinks: /* @__PURE__ */ __name(async (_learnCard, input) => {
19368
+ await ensureUser();
19369
+ return client.shareLinks.list.query(input);
19370
+ }, "listShareLinks"),
19371
+ // Anonymous public methods: deliberately NO `ensureUser()`. A viewer
19372
+ // has no account and must not need one.
19373
+ // POST keeps an optional passcode in the request body and out of URLs,
19374
+ // access logs, browser history and referrers.
19375
+ resolveShareLink: /* @__PURE__ */ __name(async (_learnCard, id, passcode) => client.publicShareLinks.resolve.mutate({ id, passcode }), "resolveShareLink"),
19376
+ getShareLinkContent: /* @__PURE__ */ __name(async (_learnCard, id, passcode) => client.publicShareLinks.content.mutate({ id, passcode }), "getShareLinkContent"),
19377
+ acknowledgeShareLinkView: /* @__PURE__ */ __name(async (_learnCard, receipt) => client.publicShareLinks.acknowledgeView.mutate({ receipt }), "acknowledgeShareLinkView"),
18567
19378
  blockProfile: /* @__PURE__ */ __name(async (_learnCard, profileId) => {
18568
19379
  await ensureUser();
18569
19380
  return client.profile.blockProfile.mutate({ profileId });
@@ -18678,12 +19489,15 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
18678
19489
  await ensureUser();
18679
19490
  return client.credential.deleteCredential.mutate({ uri });
18680
19491
  }, "deleteCredential"),
18681
- sendPresentation: /* @__PURE__ */ __name(async (_learnCard, profileId, vp, encrypt = true) => {
19492
+ sendPresentation: /* @__PURE__ */ __name(async (_learnCard, profileId, vp, metadataOrEncrypt, encrypt) => {
18682
19493
  await ensureUser();
18683
- if (!encrypt) {
19494
+ const metadata = typeof metadataOrEncrypt === "object" ? metadataOrEncrypt : void 0;
19495
+ const shouldEncrypt = typeof metadataOrEncrypt === "boolean" ? metadataOrEncrypt : encrypt ?? true;
19496
+ if (!shouldEncrypt) {
18684
19497
  return client.presentation.sendPresentation.mutate({
18685
19498
  profileId,
18686
- presentation: vp
19499
+ presentation: vp,
19500
+ metadata
18687
19501
  });
18688
19502
  }
18689
19503
  const target = await _learnCard.invoke.getProfile(profileId);
@@ -18693,7 +19507,11 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
18693
19507
  _learnCard.id.did(),
18694
19508
  target.did
18695
19509
  ]);
18696
- return client.presentation.sendPresentation.mutate({ profileId, presentation });
19510
+ return client.presentation.sendPresentation.mutate({
19511
+ profileId,
19512
+ presentation,
19513
+ metadata
19514
+ });
18697
19515
  }, "sendPresentation"),
18698
19516
  acceptPresentation: /* @__PURE__ */ __name(async (_learnCard, uri) => {
18699
19517
  await ensureUser();
@@ -19373,6 +20191,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19373
20191
  boostUris
19374
20192
  });
19375
20193
  }, "removeAutoBoostsFromContract"),
20194
+ addContractRecipient: /* @__PURE__ */ __name(async (_learnCard, contractUri, recipient) => {
20195
+ await ensureUser();
20196
+ return client.contracts.addContractRecipient.mutate({ contractUri, recipient });
20197
+ }, "addContractRecipient"),
20198
+ removeContractRecipient: /* @__PURE__ */ __name(async (_learnCard, contractUri, recipient) => {
20199
+ await ensureUser();
20200
+ return client.contracts.removeContractRecipient.mutate({ contractUri, recipient });
20201
+ }, "removeContractRecipient"),
19376
20202
  getContract: /* @__PURE__ */ __name(async (_learnCard, uri) => {
19377
20203
  return client.contracts.getConsentFlowContract.query({ uri });
19378
20204
  }, "getContract"),
@@ -19405,13 +20231,15 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19405
20231
  boostUri
19406
20232
  });
19407
20233
  }, "writeCredentialToContract"),
19408
- consentToContract: /* @__PURE__ */ __name(async (_learnCard, contractUri, { terms, expiresAt, oneTime }, recipientToken) => {
20234
+ consentToContract: /* @__PURE__ */ __name(async (_learnCard, contractUri, { terms, expiresAt, oneTime, audienceVersion, expectedRequestId }, recipientToken) => {
19409
20235
  await ensureUser();
19410
20236
  return client.contracts.consentToContract.mutate({
19411
20237
  contractUri,
19412
20238
  terms,
19413
20239
  expiresAt,
19414
20240
  oneTime,
20241
+ audienceVersion,
20242
+ expectedRequestId,
19415
20243
  recipientToken
19416
20244
  // for SmartResume
19417
20245
  });
@@ -19420,13 +20248,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19420
20248
  await ensureUser();
19421
20249
  return client.contracts.getConsentedContracts.query(options2);
19422
20250
  }, "getConsentedContracts"),
19423
- updateContractTerms: /* @__PURE__ */ __name(async (_learnCard, uri, { terms, expiresAt, oneTime }) => {
20251
+ updateContractTerms: /* @__PURE__ */ __name(async (_learnCard, uri, { terms, expiresAt, oneTime, audienceVersion }) => {
19424
20252
  await ensureUser();
19425
20253
  return client.contracts.updateConsentedContractTerms.mutate({
19426
20254
  uri,
19427
20255
  terms,
19428
20256
  expiresAt,
19429
- oneTime
20257
+ oneTime,
20258
+ audienceVersion
19430
20259
  });
19431
20260
  }, "updateContractTerms"),
19432
20261
  withdrawConsent: /* @__PURE__ */ __name(async (_learnCard, uri) => {
@@ -19453,11 +20282,12 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19453
20282
  await ensureUser();
19454
20283
  return client.contracts.verifyConsent.query({ uri, profileId });
19455
20284
  }, "verifyConsent"),
19456
- syncCredentialsToContract: /* @__PURE__ */ __name(async (_learnCard, termsUri, categories) => {
20285
+ syncCredentialsToContract: /* @__PURE__ */ __name(async (_learnCard, termsUri, categories, audienceVersion) => {
19457
20286
  await ensureUser();
19458
20287
  return client.contracts.syncCredentialsToContract.mutate({
19459
20288
  termsUri,
19460
- categories
20289
+ categories,
20290
+ audienceVersion
19461
20291
  });
19462
20292
  }, "syncCredentialsToContract"),
19463
20293
  deleteCredentialFromAllContracts: /* @__PURE__ */ __name(async (_learnCard, deletedUris) => {
@@ -19466,6 +20296,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19466
20296
  deletedUris
19467
20297
  });
19468
20298
  }, "deleteCredentialFromAllContracts"),
20299
+ sendContractRequest: /* @__PURE__ */ __name(async (_learnCard, request) => {
20300
+ await ensureUser();
20301
+ return client.contracts.sendContractRequest.mutate(request);
20302
+ }, "sendContractRequest"),
20303
+ denyContractRequest: /* @__PURE__ */ __name(async (_learnCard, contractUri) => {
20304
+ await ensureUser();
20305
+ return client.contracts.denyContractRequest.mutate({ contractUri });
20306
+ }, "denyContractRequest"),
19469
20307
  sendAiInsightsContractRequest: /* @__PURE__ */ __name(async (_learnCard, contractUri, targetProfileId, shareLink) => {
19470
20308
  await ensureUser();
19471
20309
  return client.contracts.sendAiInsightsContractRequest.mutate({
@@ -19651,9 +20489,32 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19651
20489
  await ensureUser();
19652
20490
  return client.inbox.getInboxCredential.query({ credentialId: id });
19653
20491
  }, "getInboxCredential"),
19654
- finalizeInboxCredentials: /* @__PURE__ */ __name(async (_learnCard) => {
20492
+ finalizeInboxCredentials: /* @__PURE__ */ __name(async (learnCard2) => {
19655
20493
  await ensureUser();
19656
- return client.inbox.finalize.mutate();
20494
+ const result = await client.inbox.finalize.mutate();
20495
+ const results = await Promise.allSettled(
20496
+ result.deliveries.map(async (delivery) => ({
20497
+ ...delivery,
20498
+ credential: VCValidator.parse(
20499
+ isEncrypted(delivery.credential) ? await learnCard2.invoke.decryptDagJwe(delivery.credential, [
20500
+ learnCard2.id.keypair()
20501
+ ]) : delivery.credential
20502
+ )
20503
+ }))
20504
+ );
20505
+ const deliveries = results.flatMap((delivery, index) => {
20506
+ if (delivery.status === "fulfilled") return [delivery.value];
20507
+ console.warn(
20508
+ `Failed to finalize inbox delivery ${result.deliveries[index].id}: ${getInboxFailureReason(delivery.reason)}`
20509
+ );
20510
+ return [];
20511
+ });
20512
+ return {
20513
+ ...result,
20514
+ deliveries,
20515
+ verifiableCredentials: deliveries.map((delivery) => delivery.credential),
20516
+ errors: result.errors + results.length - deliveries.length
20517
+ };
19657
20518
  }, "finalizeInboxCredentials"),
19658
20519
  recoverInboxCredentials: /* @__PURE__ */ __name(async (learnCard2, options2 = {}) => {
19659
20520
  const result = await client.inbox.getMyInboxDeliveries.query(options2);
@@ -19667,9 +20528,13 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19667
20528
  )
19668
20529
  }))
19669
20530
  );
19670
- const records = results.flatMap(
19671
- (record2) => record2.status === "fulfilled" ? [record2.value] : []
19672
- );
20531
+ const records = results.flatMap((record2, index) => {
20532
+ if (record2.status === "fulfilled") return [record2.value];
20533
+ console.warn(
20534
+ `Failed to recover inbox delivery ${result.records[index].id}: ${getInboxFailureReason(record2.reason)}`
20535
+ );
20536
+ return [];
20537
+ });
19673
20538
  return { ...result, records, failed: results.length - records.length };
19674
20539
  }, "recoverInboxCredentials"),
19675
20540
  sendGuardianApprovalEmail: /* @__PURE__ */ __name(async (_learnCard, options2) => {
@@ -19936,6 +20801,18 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19936
20801
  await ensureUser();
19937
20802
  return client.appStore.unsubmitForReview.mutate({ listingId });
19938
20803
  }, "unsubmitAppStoreListing"),
20804
+ submitAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
20805
+ await ensureUser();
20806
+ return client.appStore.submitListingUpdate.mutate({ listingId });
20807
+ }, "submitAppStoreListingUpdate"),
20808
+ withdrawAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
20809
+ await ensureUser();
20810
+ return client.appStore.withdrawListingUpdate.mutate({ listingId });
20811
+ }, "withdrawAppStoreListingUpdate"),
20812
+ discardAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
20813
+ await ensureUser();
20814
+ return client.appStore.discardListingUpdate.mutate({ listingId });
20815
+ }, "discardAppStoreListingUpdate"),
19939
20816
  getListingsForIntegration: /* @__PURE__ */ __name(async (_learnCard, integrationId, options2 = {}) => {
19940
20817
  await ensureUser();
19941
20818
  return client.appStore.getListingsForIntegration.query({
@@ -19947,6 +20824,34 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19947
20824
  await ensureUser();
19948
20825
  return client.appStore.countListingsForIntegration.query({ integrationId });
19949
20826
  }, "countListingsForIntegration"),
20827
+ submitAppManifest: /* @__PURE__ */ __name(async (_learnCard, integrationId, manifest) => {
20828
+ await ensureUser();
20829
+ return client.appStore.submitAppManifest.mutate({ integrationId, manifest });
20830
+ }, "submitAppManifest"),
20831
+ getManifestVersions: /* @__PURE__ */ __name(async (_learnCard, integrationId, options2) => {
20832
+ await ensureUser();
20833
+ return client.appStore.getManifestVersions.query({ integrationId, ...options2 });
20834
+ }, "getManifestVersions"),
20835
+ getManifestVersion: /* @__PURE__ */ __name(async (_learnCard, integrationId, version2) => {
20836
+ await ensureUser();
20837
+ return client.appStore.getManifestVersion.query({ integrationId, version: version2 });
20838
+ }, "getManifestVersion"),
20839
+ getManifestDiff: /* @__PURE__ */ __name(async (_learnCard, integrationId, toVersion, fromVersion) => {
20840
+ await ensureUser();
20841
+ return client.appStore.getManifestDiff.query({
20842
+ integrationId,
20843
+ toVersion,
20844
+ fromVersion
20845
+ });
20846
+ }, "getManifestDiff"),
20847
+ applyManifestVersion: /* @__PURE__ */ __name(async (_learnCard, integrationId, version2, listingId) => {
20848
+ await ensureUser();
20849
+ return client.appStore.applyManifestVersion.mutate({
20850
+ integrationId,
20851
+ version: version2,
20852
+ listingId
20853
+ });
20854
+ }, "applyManifestVersion"),
19950
20855
  browseAppStore: /* @__PURE__ */ __name(async (_learnCard, options2) => {
19951
20856
  return client.appStore.browseListedApps.query(options2);
19952
20857
  }, "browseAppStore"),
@@ -20002,6 +20907,10 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
20002
20907
  await ensureUser();
20003
20908
  return client.appStore.adminGetAllListings.query(options2);
20004
20909
  }, "adminGetAllListings"),
20910
+ adminReviewListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId, approve) => {
20911
+ await ensureUser();
20912
+ return client.appStore.adminReviewListingUpdate.mutate({ listingId, approve });
20913
+ }, "adminReviewListingUpdate"),
20005
20914
  // App Store Boost Management
20006
20915
  addBoostToApp: /* @__PURE__ */ __name(async (_learnCard, listingId, boostUri, templateAlias) => {
20007
20916
  await ensureUser();