@feelflow/ffid-sdk 5.25.0 → 5.27.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.
@@ -1396,6 +1396,107 @@ type FFIDRedirectResult = {
1396
1396
  code?: FFIDRedirectErrorCode;
1397
1397
  };
1398
1398
 
1399
+ /** Deployment environments a catalog publication can apply to (single source) */
1400
+ declare const FFID_CATALOG_ENVIRONMENTS: readonly ["staging", "production"];
1401
+ /** Deployment environment a catalog publication applies to */
1402
+ type FFIDCatalogEnvironment = (typeof FFID_CATALOG_ENVIRONMENTS)[number];
1403
+ /**
1404
+ * Tax behavior of a published price.
1405
+ * `inclusive`: displayed price contains Stripe-calculated tax (Personal/Pro).
1406
+ * `exclusive`: tax is added on top of the base price (Team).
1407
+ */
1408
+ type FFIDTaxBehavior = 'inclusive' | 'exclusive';
1409
+ /**
1410
+ * Publication lifecycle statuses (single source — the type, the SDK runtime
1411
+ * validator, and consumer sets all derive from this tuple so a new literal
1412
+ * cannot be added to one side only).
1413
+ */
1414
+ declare const FFID_CATALOG_PUBLICATION_STATUSES: readonly ["approved", "superseded", "revoking", "revoked"];
1415
+ /**
1416
+ * Publication lifecycle status.
1417
+ * - `approved`: sellable — the only status that permits new paid checkout
1418
+ * - `superseded`: replaced by a newer revision (old sessions may sell through
1419
+ * until `sellThroughUntil`)
1420
+ * - `revoking`: emergency stop in progress — never sellable
1421
+ * - `revoked`: emergency stop completed — never sellable
1422
+ */
1423
+ type FFIDCatalogPublicationStatus = (typeof FFID_CATALOG_PUBLICATION_STATUSES)[number];
1424
+ /**
1425
+ * Human-approved publication record binding a catalog revision to the
1426
+ * content/config hashes reviewed at approval time.
1427
+ *
1428
+ * All `*Hash` fields are lowercase SHA-256 hex computed with the shared
1429
+ * canonicalization helpers in `shared/catalog-hash` — consumers re-hash the
1430
+ * content they actually render and must refuse new sales on any mismatch.
1431
+ */
1432
+ interface FFIDCatalogPublication {
1433
+ serviceCode: string;
1434
+ environment: FFIDCatalogEnvironment;
1435
+ catalogVersion: string;
1436
+ praxisCopyHash: string;
1437
+ ffidCheckoutCopyHash: string;
1438
+ legalDisclosureHash: string;
1439
+ taxConfigurationHash: string;
1440
+ paymentConfigurationHash: string;
1441
+ scopeHash: string;
1442
+ /** Monotonically increasing per (service, environment) publication counter */
1443
+ salesEpoch: number;
1444
+ /** FFID-generated immutable human-review approval ID */
1445
+ approvalId: string;
1446
+ /** ISO 8601 timestamp of the recorded human review */
1447
+ reviewedAt: string;
1448
+ /** ISO 8601 timestamp the publication became effective */
1449
+ effectiveAt: string;
1450
+ /** ISO 8601 timestamp the publication was superseded (null while current) */
1451
+ supersededAt: string | null;
1452
+ /** ISO 8601 upper bound for old-session sell-through (null unless superseded) */
1453
+ sellThroughUntil: string | null;
1454
+ /** ISO 8601 timestamp an emergency revoke took effect (null unless revoking/revoked) */
1455
+ revocationEffectiveAt: string | null;
1456
+ status: FFIDCatalogPublicationStatus;
1457
+ }
1458
+ /**
1459
+ * A plan inside a published catalog revision (public-safe snapshot).
1460
+ * Never contains Stripe Product/Price identifiers or other secrets.
1461
+ */
1462
+ interface FFIDPublishedPlan {
1463
+ /**
1464
+ * Plan code — always a lowercase slug (`^[a-z0-9][a-z0-9_-]*$`).
1465
+ * Per-service open set; see the FFID repo's
1466
+ * `docs/04-api/PLAN_CODE_CONTRACT.md` for the full guarantees.
1467
+ */
1468
+ code: string;
1469
+ name: string;
1470
+ description: string | null;
1471
+ /** Monthly price in the catalog currency; null when monthly is not offered */
1472
+ priceMonthly: number | null;
1473
+ /** Yearly price in the catalog currency; null when yearly is not offered */
1474
+ priceYearly: number | null;
1475
+ currency: string;
1476
+ /** Billing intervals actually purchasable for this plan */
1477
+ billingIntervals: FFIDBillingInterval[];
1478
+ taxBehavior: FFIDTaxBehavior;
1479
+ minSeats: number;
1480
+ maxSeats: number | null;
1481
+ displayOrder: number;
1482
+ }
1483
+ /**
1484
+ * Response of GET /api/v1/subscriptions/ext/catalog/{serviceCode}.
1485
+ *
1486
+ * `catalogVersion` always equals `publication.catalogVersion`; it is hoisted
1487
+ * to the top level so consumers can pin the version (e.g. as
1488
+ * `expectedCatalogVersion` for checkout) without digging into the publication.
1489
+ */
1490
+ interface FFIDPublishedCatalog {
1491
+ service: {
1492
+ code: string;
1493
+ name: string;
1494
+ };
1495
+ catalogVersion: string;
1496
+ publication: FFIDCatalogPublication;
1497
+ plans: FFIDPublishedPlan[];
1498
+ }
1499
+
1399
1500
  /**
1400
1501
  * FFID SDK Type Definitions
1401
1502
  *
@@ -1503,6 +1604,12 @@ interface FFIDSubscription {
1503
1604
  organizationName?: string | null | undefined;
1504
1605
  }
1505
1606
  /** OAuth userinfo subscription summary */
1607
+ type FFIDSeatAssignmentStatus = 'active' | 'revoking' | 'revoked';
1608
+ interface FFIDSeatAssignmentClaim {
1609
+ organizationId: string;
1610
+ subscriptionId: string;
1611
+ status: FFIDSeatAssignmentStatus;
1612
+ }
1506
1613
  interface FFIDOAuthUserInfoSubscription {
1507
1614
  subscriptionId: string | null;
1508
1615
  status: FFIDSubscriptionStatus | null;
@@ -1520,6 +1627,12 @@ interface FFIDOAuthUserInfoSubscription {
1520
1627
  organizationId: string | null;
1521
1628
  organizationName?: string | null | undefined;
1522
1629
  hasSeatAssignment: boolean | null;
1630
+ /**
1631
+ * Organization/subscription-bound seat claim (#4352). `undefined` means an
1632
+ * older FFID omitted the field; `null` means a present claim was malformed.
1633
+ * Only `status === 'active'` grants Team access.
1634
+ */
1635
+ seatAssignment: FFIDSeatAssignmentClaim | null | undefined;
1523
1636
  /**
1524
1637
  * Stripe `cancel_at_period_end` (#3464, SDK 5.8.0). `true` while the
1525
1638
  * subscription is scheduled to terminate at `currentPeriodEnd`. The
@@ -2069,6 +2182,7 @@ declare function createFFIDClient(config: FFIDConfig): {
2069
2182
  assignSeats: (params: FFIDAssignSeatsParams) => Promise<FFIDApiResponse<FFIDAssignSeatsResponse>>;
2070
2183
  unassignSeat: (params: FFIDUnassignSeatParams) => Promise<FFIDApiResponse<FFIDUnassignSeatResponse>>;
2071
2184
  listPlans: () => Promise<FFIDApiResponse<FFIDListPlansResponse>>;
2185
+ getPublishedCatalog: (serviceCode: string) => Promise<FFIDApiResponse<FFIDPublishedCatalog>>;
2072
2186
  getSubscription: (subscriptionId: string) => Promise<FFIDApiResponse<FFIDSubscriptionDetail>>;
2073
2187
  subscribe: (params: FFIDSubscribeParams) => Promise<FFIDApiResponse<FFIDSubscribeResponse>>;
2074
2188
  changePlan: (params: FFIDChangePlanParams) => Promise<FFIDApiResponse<FFIDChangePlanResponse>>;
@@ -1396,6 +1396,107 @@ type FFIDRedirectResult = {
1396
1396
  code?: FFIDRedirectErrorCode;
1397
1397
  };
1398
1398
 
1399
+ /** Deployment environments a catalog publication can apply to (single source) */
1400
+ declare const FFID_CATALOG_ENVIRONMENTS: readonly ["staging", "production"];
1401
+ /** Deployment environment a catalog publication applies to */
1402
+ type FFIDCatalogEnvironment = (typeof FFID_CATALOG_ENVIRONMENTS)[number];
1403
+ /**
1404
+ * Tax behavior of a published price.
1405
+ * `inclusive`: displayed price contains Stripe-calculated tax (Personal/Pro).
1406
+ * `exclusive`: tax is added on top of the base price (Team).
1407
+ */
1408
+ type FFIDTaxBehavior = 'inclusive' | 'exclusive';
1409
+ /**
1410
+ * Publication lifecycle statuses (single source — the type, the SDK runtime
1411
+ * validator, and consumer sets all derive from this tuple so a new literal
1412
+ * cannot be added to one side only).
1413
+ */
1414
+ declare const FFID_CATALOG_PUBLICATION_STATUSES: readonly ["approved", "superseded", "revoking", "revoked"];
1415
+ /**
1416
+ * Publication lifecycle status.
1417
+ * - `approved`: sellable — the only status that permits new paid checkout
1418
+ * - `superseded`: replaced by a newer revision (old sessions may sell through
1419
+ * until `sellThroughUntil`)
1420
+ * - `revoking`: emergency stop in progress — never sellable
1421
+ * - `revoked`: emergency stop completed — never sellable
1422
+ */
1423
+ type FFIDCatalogPublicationStatus = (typeof FFID_CATALOG_PUBLICATION_STATUSES)[number];
1424
+ /**
1425
+ * Human-approved publication record binding a catalog revision to the
1426
+ * content/config hashes reviewed at approval time.
1427
+ *
1428
+ * All `*Hash` fields are lowercase SHA-256 hex computed with the shared
1429
+ * canonicalization helpers in `shared/catalog-hash` — consumers re-hash the
1430
+ * content they actually render and must refuse new sales on any mismatch.
1431
+ */
1432
+ interface FFIDCatalogPublication {
1433
+ serviceCode: string;
1434
+ environment: FFIDCatalogEnvironment;
1435
+ catalogVersion: string;
1436
+ praxisCopyHash: string;
1437
+ ffidCheckoutCopyHash: string;
1438
+ legalDisclosureHash: string;
1439
+ taxConfigurationHash: string;
1440
+ paymentConfigurationHash: string;
1441
+ scopeHash: string;
1442
+ /** Monotonically increasing per (service, environment) publication counter */
1443
+ salesEpoch: number;
1444
+ /** FFID-generated immutable human-review approval ID */
1445
+ approvalId: string;
1446
+ /** ISO 8601 timestamp of the recorded human review */
1447
+ reviewedAt: string;
1448
+ /** ISO 8601 timestamp the publication became effective */
1449
+ effectiveAt: string;
1450
+ /** ISO 8601 timestamp the publication was superseded (null while current) */
1451
+ supersededAt: string | null;
1452
+ /** ISO 8601 upper bound for old-session sell-through (null unless superseded) */
1453
+ sellThroughUntil: string | null;
1454
+ /** ISO 8601 timestamp an emergency revoke took effect (null unless revoking/revoked) */
1455
+ revocationEffectiveAt: string | null;
1456
+ status: FFIDCatalogPublicationStatus;
1457
+ }
1458
+ /**
1459
+ * A plan inside a published catalog revision (public-safe snapshot).
1460
+ * Never contains Stripe Product/Price identifiers or other secrets.
1461
+ */
1462
+ interface FFIDPublishedPlan {
1463
+ /**
1464
+ * Plan code — always a lowercase slug (`^[a-z0-9][a-z0-9_-]*$`).
1465
+ * Per-service open set; see the FFID repo's
1466
+ * `docs/04-api/PLAN_CODE_CONTRACT.md` for the full guarantees.
1467
+ */
1468
+ code: string;
1469
+ name: string;
1470
+ description: string | null;
1471
+ /** Monthly price in the catalog currency; null when monthly is not offered */
1472
+ priceMonthly: number | null;
1473
+ /** Yearly price in the catalog currency; null when yearly is not offered */
1474
+ priceYearly: number | null;
1475
+ currency: string;
1476
+ /** Billing intervals actually purchasable for this plan */
1477
+ billingIntervals: FFIDBillingInterval[];
1478
+ taxBehavior: FFIDTaxBehavior;
1479
+ minSeats: number;
1480
+ maxSeats: number | null;
1481
+ displayOrder: number;
1482
+ }
1483
+ /**
1484
+ * Response of GET /api/v1/subscriptions/ext/catalog/{serviceCode}.
1485
+ *
1486
+ * `catalogVersion` always equals `publication.catalogVersion`; it is hoisted
1487
+ * to the top level so consumers can pin the version (e.g. as
1488
+ * `expectedCatalogVersion` for checkout) without digging into the publication.
1489
+ */
1490
+ interface FFIDPublishedCatalog {
1491
+ service: {
1492
+ code: string;
1493
+ name: string;
1494
+ };
1495
+ catalogVersion: string;
1496
+ publication: FFIDCatalogPublication;
1497
+ plans: FFIDPublishedPlan[];
1498
+ }
1499
+
1399
1500
  /**
1400
1501
  * FFID SDK Type Definitions
1401
1502
  *
@@ -1503,6 +1604,12 @@ interface FFIDSubscription {
1503
1604
  organizationName?: string | null | undefined;
1504
1605
  }
1505
1606
  /** OAuth userinfo subscription summary */
1607
+ type FFIDSeatAssignmentStatus = 'active' | 'revoking' | 'revoked';
1608
+ interface FFIDSeatAssignmentClaim {
1609
+ organizationId: string;
1610
+ subscriptionId: string;
1611
+ status: FFIDSeatAssignmentStatus;
1612
+ }
1506
1613
  interface FFIDOAuthUserInfoSubscription {
1507
1614
  subscriptionId: string | null;
1508
1615
  status: FFIDSubscriptionStatus | null;
@@ -1520,6 +1627,12 @@ interface FFIDOAuthUserInfoSubscription {
1520
1627
  organizationId: string | null;
1521
1628
  organizationName?: string | null | undefined;
1522
1629
  hasSeatAssignment: boolean | null;
1630
+ /**
1631
+ * Organization/subscription-bound seat claim (#4352). `undefined` means an
1632
+ * older FFID omitted the field; `null` means a present claim was malformed.
1633
+ * Only `status === 'active'` grants Team access.
1634
+ */
1635
+ seatAssignment: FFIDSeatAssignmentClaim | null | undefined;
1523
1636
  /**
1524
1637
  * Stripe `cancel_at_period_end` (#3464, SDK 5.8.0). `true` while the
1525
1638
  * subscription is scheduled to terminate at `currentPeriodEnd`. The
@@ -2069,6 +2182,7 @@ declare function createFFIDClient(config: FFIDConfig): {
2069
2182
  assignSeats: (params: FFIDAssignSeatsParams) => Promise<FFIDApiResponse<FFIDAssignSeatsResponse>>;
2070
2183
  unassignSeat: (params: FFIDUnassignSeatParams) => Promise<FFIDApiResponse<FFIDUnassignSeatResponse>>;
2071
2184
  listPlans: () => Promise<FFIDApiResponse<FFIDListPlansResponse>>;
2185
+ getPublishedCatalog: (serviceCode: string) => Promise<FFIDApiResponse<FFIDPublishedCatalog>>;
2072
2186
  getSubscription: (subscriptionId: string) => Promise<FFIDApiResponse<FFIDSubscriptionDetail>>;
2073
2187
  subscribe: (params: FFIDSubscribeParams) => Promise<FFIDApiResponse<FFIDSubscribeResponse>>;
2074
2188
  changePlan: (params: FFIDChangePlanParams) => Promise<FFIDApiResponse<FFIDChangePlanResponse>>;
@@ -318,6 +318,12 @@ interface FFIDSubscription {
318
318
  organizationName?: string | null | undefined;
319
319
  }
320
320
  /** OAuth userinfo subscription summary */
321
+ type FFIDSeatAssignmentStatus = 'active' | 'revoking' | 'revoked';
322
+ interface FFIDSeatAssignmentClaim {
323
+ organizationId: string;
324
+ subscriptionId: string;
325
+ status: FFIDSeatAssignmentStatus;
326
+ }
321
327
  interface FFIDOAuthUserInfoSubscription {
322
328
  subscriptionId: string | null;
323
329
  status: FFIDSubscriptionStatus | null;
@@ -335,6 +341,12 @@ interface FFIDOAuthUserInfoSubscription {
335
341
  organizationId: string | null;
336
342
  organizationName?: string | null | undefined;
337
343
  hasSeatAssignment: boolean | null;
344
+ /**
345
+ * Organization/subscription-bound seat claim (#4352). `undefined` means an
346
+ * older FFID omitted the field; `null` means a present claim was malformed.
347
+ * Only `status === 'active'` grants Team access.
348
+ */
349
+ seatAssignment: FFIDSeatAssignmentClaim | null | undefined;
338
350
  /**
339
351
  * Stripe `cancel_at_period_end` (#3464, SDK 5.8.0). `true` while the
340
352
  * subscription is scheduled to terminate at `currentPeriodEnd`. The
@@ -1524,4 +1536,4 @@ interface FFIDInquiryFormPlaceholderContext {
1524
1536
  }
1525
1537
  declare function FFIDInquiryForm({ mode, prefill, organizations, preselectedOrganizationId, categories, termsVersion, privacyVersion, termsHref, privacyHref, turnstileToken, turnstileSlot, onSubmit, onChange, legalLayout, messagePlaceholder, requireCategorySelection, unstyled, classNames, locale, className, }: FFIDInquiryFormProps): react_jsx_runtime.JSX.Element;
1526
1538
 
1527
- export { type FFIDInquiryFormSubmitResult as $, type AnnouncementListResponse as A, type AnnouncementStatus as B, type AnnouncementType as C, EFFECTIVE_SUBSCRIPTION_STATUSES as D, type EffectiveSubscriptionStatus as E, type FFIDSubscriptionStatus as F, FFIDAnnouncementBadge as G, FFIDAnnouncementList as H, type FFIDAnnouncementsError as I, type FFIDAnnouncementsErrorCode as J, type FFIDAnnouncementsServerResponse as K, type ListAnnouncementsOptions as L, type FFIDApiResponseMeta as M, type FFIDCacheConfig as N, type FFIDContextValue as O, type FFIDInquiryCategory as P, type FFIDInquiryCategorySite2026 as Q, FFIDInquiryForm as R, type FFIDInquiryFormCategoryItem as S, type TokenStore as T, type FFIDInquiryFormClassNames as U, type FFIDInquiryFormLegalLayout as V, type FFIDInquiryFormOrganization as W, type FFIDInquiryFormPlaceholderContext as X, type FFIDInquiryFormPrefill as Y, type FFIDInquiryFormProps as Z, type FFIDInquiryFormSubmitData as _, type FFIDOAuthUserInfoSubscription as a, type FFIDJwtClaims as a0, FFIDLoginButton as a1, type FFIDOAuthUserInfoMemberRole as a2, FFIDOrganizationSwitcher as a3, type FFIDSeatModel as a4, type FFIDServiceAccessDenialReason as a5, type FFIDServiceAccessFailPolicy as a6, FFIDSubscriptionBadge as a7, FFIDUserMenu as a8, FFID_INQUIRY_CATEGORIES as a9, FFID_INQUIRY_CATEGORIES_SITE_2026 as aa, type TokenData as ab, type UseFFIDAnnouncementsOptions as ac, type UseFFIDAnnouncementsReturn as ad, createTokenStore as ae, isFFIDInquiryCategorySite2026 as af, useFFIDAnnouncements as ag, type FFIDAnnouncementBadgeClassNames as ah, type FFIDAnnouncementBadgeProps as ai, type FFIDAnnouncementListClassNames as aj, type FFIDAnnouncementListProps as ak, type FFIDLoginButtonProps as al, type FFIDOrganizationSwitcherClassNames as am, type FFIDOrganizationSwitcherProps as an, type FFIDSubscriptionBadgeClassNames as ao, type FFIDSubscriptionBadgeProps as ap, type FFIDUserMenuClassNames as aq, type FFIDUserMenuProps as ar, type FFIDPrompt as b, type FFIDConfig as c, type FFIDApiResponse as d, type FFIDSessionResponse as e, type FFIDSignOutResult as f, type FFIDError as g, type FFIDSubscriptionCheckResponse as h, type FFIDCheckServiceAccessParams as i, type FFIDServiceAccessDecision as j, type FFIDAnalyticsConfig as k, type FFIDVerifyAccessTokenOptions as l, type FFIDOAuthUserInfo as m, type FFIDInquiryCreateParams as n, type FFIDInquiryCreateResponse as o, type FFIDAuthMode as p, type FFIDLogger as q, type FFIDCacheAdapter as r, type FFIDUser as s, type FFIDOrganization as t, type FFIDSubscription as u, type FFIDSubscriptionContextValue as v, type FFIDAnnouncementsClientConfig as w, type FFIDAnnouncementsApiResponse as x, type FFIDAnnouncementsLogger as y, type Announcement as z };
1539
+ export { type FFIDInquiryFormSubmitResult as $, type AnnouncementListResponse as A, type AnnouncementStatus as B, type AnnouncementType as C, EFFECTIVE_SUBSCRIPTION_STATUSES as D, type EffectiveSubscriptionStatus as E, type FFIDSubscriptionStatus as F, FFIDAnnouncementBadge as G, FFIDAnnouncementList as H, type FFIDAnnouncementsError as I, type FFIDAnnouncementsErrorCode as J, type FFIDAnnouncementsServerResponse as K, type ListAnnouncementsOptions as L, type FFIDApiResponseMeta as M, type FFIDCacheConfig as N, type FFIDContextValue as O, type FFIDInquiryCategory as P, type FFIDInquiryCategorySite2026 as Q, FFIDInquiryForm as R, type FFIDInquiryFormCategoryItem as S, type TokenStore as T, type FFIDInquiryFormClassNames as U, type FFIDInquiryFormLegalLayout as V, type FFIDInquiryFormOrganization as W, type FFIDInquiryFormPlaceholderContext as X, type FFIDInquiryFormPrefill as Y, type FFIDInquiryFormProps as Z, type FFIDInquiryFormSubmitData as _, type FFIDOAuthUserInfoSubscription as a, type FFIDJwtClaims as a0, FFIDLoginButton as a1, type FFIDOAuthUserInfoMemberRole as a2, FFIDOrganizationSwitcher as a3, type FFIDSeatAssignmentClaim as a4, type FFIDSeatAssignmentStatus as a5, type FFIDSeatModel as a6, type FFIDServiceAccessDenialReason as a7, type FFIDServiceAccessFailPolicy as a8, FFIDSubscriptionBadge as a9, FFIDUserMenu as aa, FFID_INQUIRY_CATEGORIES as ab, FFID_INQUIRY_CATEGORIES_SITE_2026 as ac, type TokenData as ad, type UseFFIDAnnouncementsOptions as ae, type UseFFIDAnnouncementsReturn as af, createTokenStore as ag, isFFIDInquiryCategorySite2026 as ah, useFFIDAnnouncements as ai, type FFIDAnnouncementBadgeClassNames as aj, type FFIDAnnouncementBadgeProps as ak, type FFIDAnnouncementListClassNames as al, type FFIDAnnouncementListProps as am, type FFIDLoginButtonProps as an, type FFIDOrganizationSwitcherClassNames as ao, type FFIDOrganizationSwitcherProps as ap, type FFIDSubscriptionBadgeClassNames as aq, type FFIDSubscriptionBadgeProps as ar, type FFIDUserMenuClassNames as as, type FFIDUserMenuProps as at, type FFIDPrompt as b, type FFIDConfig as c, type FFIDApiResponse as d, type FFIDSessionResponse as e, type FFIDSignOutResult as f, type FFIDError as g, type FFIDSubscriptionCheckResponse as h, type FFIDCheckServiceAccessParams as i, type FFIDServiceAccessDecision as j, type FFIDAnalyticsConfig as k, type FFIDVerifyAccessTokenOptions as l, type FFIDOAuthUserInfo as m, type FFIDInquiryCreateParams as n, type FFIDInquiryCreateResponse as o, type FFIDAuthMode as p, type FFIDLogger as q, type FFIDCacheAdapter as r, type FFIDUser as s, type FFIDOrganization as t, type FFIDSubscription as u, type FFIDSubscriptionContextValue as v, type FFIDAnnouncementsClientConfig as w, type FFIDAnnouncementsApiResponse as x, type FFIDAnnouncementsLogger as y, type Announcement as z };
@@ -318,6 +318,12 @@ interface FFIDSubscription {
318
318
  organizationName?: string | null | undefined;
319
319
  }
320
320
  /** OAuth userinfo subscription summary */
321
+ type FFIDSeatAssignmentStatus = 'active' | 'revoking' | 'revoked';
322
+ interface FFIDSeatAssignmentClaim {
323
+ organizationId: string;
324
+ subscriptionId: string;
325
+ status: FFIDSeatAssignmentStatus;
326
+ }
321
327
  interface FFIDOAuthUserInfoSubscription {
322
328
  subscriptionId: string | null;
323
329
  status: FFIDSubscriptionStatus | null;
@@ -335,6 +341,12 @@ interface FFIDOAuthUserInfoSubscription {
335
341
  organizationId: string | null;
336
342
  organizationName?: string | null | undefined;
337
343
  hasSeatAssignment: boolean | null;
344
+ /**
345
+ * Organization/subscription-bound seat claim (#4352). `undefined` means an
346
+ * older FFID omitted the field; `null` means a present claim was malformed.
347
+ * Only `status === 'active'` grants Team access.
348
+ */
349
+ seatAssignment: FFIDSeatAssignmentClaim | null | undefined;
338
350
  /**
339
351
  * Stripe `cancel_at_period_end` (#3464, SDK 5.8.0). `true` while the
340
352
  * subscription is scheduled to terminate at `currentPeriodEnd`. The
@@ -1524,4 +1536,4 @@ interface FFIDInquiryFormPlaceholderContext {
1524
1536
  }
1525
1537
  declare function FFIDInquiryForm({ mode, prefill, organizations, preselectedOrganizationId, categories, termsVersion, privacyVersion, termsHref, privacyHref, turnstileToken, turnstileSlot, onSubmit, onChange, legalLayout, messagePlaceholder, requireCategorySelection, unstyled, classNames, locale, className, }: FFIDInquiryFormProps): react_jsx_runtime.JSX.Element;
1526
1538
 
1527
- export { type FFIDInquiryFormSubmitResult as $, type AnnouncementListResponse as A, type AnnouncementStatus as B, type AnnouncementType as C, EFFECTIVE_SUBSCRIPTION_STATUSES as D, type EffectiveSubscriptionStatus as E, type FFIDSubscriptionStatus as F, FFIDAnnouncementBadge as G, FFIDAnnouncementList as H, type FFIDAnnouncementsError as I, type FFIDAnnouncementsErrorCode as J, type FFIDAnnouncementsServerResponse as K, type ListAnnouncementsOptions as L, type FFIDApiResponseMeta as M, type FFIDCacheConfig as N, type FFIDContextValue as O, type FFIDInquiryCategory as P, type FFIDInquiryCategorySite2026 as Q, FFIDInquiryForm as R, type FFIDInquiryFormCategoryItem as S, type TokenStore as T, type FFIDInquiryFormClassNames as U, type FFIDInquiryFormLegalLayout as V, type FFIDInquiryFormOrganization as W, type FFIDInquiryFormPlaceholderContext as X, type FFIDInquiryFormPrefill as Y, type FFIDInquiryFormProps as Z, type FFIDInquiryFormSubmitData as _, type FFIDOAuthUserInfoSubscription as a, type FFIDJwtClaims as a0, FFIDLoginButton as a1, type FFIDOAuthUserInfoMemberRole as a2, FFIDOrganizationSwitcher as a3, type FFIDSeatModel as a4, type FFIDServiceAccessDenialReason as a5, type FFIDServiceAccessFailPolicy as a6, FFIDSubscriptionBadge as a7, FFIDUserMenu as a8, FFID_INQUIRY_CATEGORIES as a9, FFID_INQUIRY_CATEGORIES_SITE_2026 as aa, type TokenData as ab, type UseFFIDAnnouncementsOptions as ac, type UseFFIDAnnouncementsReturn as ad, createTokenStore as ae, isFFIDInquiryCategorySite2026 as af, useFFIDAnnouncements as ag, type FFIDAnnouncementBadgeClassNames as ah, type FFIDAnnouncementBadgeProps as ai, type FFIDAnnouncementListClassNames as aj, type FFIDAnnouncementListProps as ak, type FFIDLoginButtonProps as al, type FFIDOrganizationSwitcherClassNames as am, type FFIDOrganizationSwitcherProps as an, type FFIDSubscriptionBadgeClassNames as ao, type FFIDSubscriptionBadgeProps as ap, type FFIDUserMenuClassNames as aq, type FFIDUserMenuProps as ar, type FFIDPrompt as b, type FFIDConfig as c, type FFIDApiResponse as d, type FFIDSessionResponse as e, type FFIDSignOutResult as f, type FFIDError as g, type FFIDSubscriptionCheckResponse as h, type FFIDCheckServiceAccessParams as i, type FFIDServiceAccessDecision as j, type FFIDAnalyticsConfig as k, type FFIDVerifyAccessTokenOptions as l, type FFIDOAuthUserInfo as m, type FFIDInquiryCreateParams as n, type FFIDInquiryCreateResponse as o, type FFIDAuthMode as p, type FFIDLogger as q, type FFIDCacheAdapter as r, type FFIDUser as s, type FFIDOrganization as t, type FFIDSubscription as u, type FFIDSubscriptionContextValue as v, type FFIDAnnouncementsClientConfig as w, type FFIDAnnouncementsApiResponse as x, type FFIDAnnouncementsLogger as y, type Announcement as z };
1539
+ export { type FFIDInquiryFormSubmitResult as $, type AnnouncementListResponse as A, type AnnouncementStatus as B, type AnnouncementType as C, EFFECTIVE_SUBSCRIPTION_STATUSES as D, type EffectiveSubscriptionStatus as E, type FFIDSubscriptionStatus as F, FFIDAnnouncementBadge as G, FFIDAnnouncementList as H, type FFIDAnnouncementsError as I, type FFIDAnnouncementsErrorCode as J, type FFIDAnnouncementsServerResponse as K, type ListAnnouncementsOptions as L, type FFIDApiResponseMeta as M, type FFIDCacheConfig as N, type FFIDContextValue as O, type FFIDInquiryCategory as P, type FFIDInquiryCategorySite2026 as Q, FFIDInquiryForm as R, type FFIDInquiryFormCategoryItem as S, type TokenStore as T, type FFIDInquiryFormClassNames as U, type FFIDInquiryFormLegalLayout as V, type FFIDInquiryFormOrganization as W, type FFIDInquiryFormPlaceholderContext as X, type FFIDInquiryFormPrefill as Y, type FFIDInquiryFormProps as Z, type FFIDInquiryFormSubmitData as _, type FFIDOAuthUserInfoSubscription as a, type FFIDJwtClaims as a0, FFIDLoginButton as a1, type FFIDOAuthUserInfoMemberRole as a2, FFIDOrganizationSwitcher as a3, type FFIDSeatAssignmentClaim as a4, type FFIDSeatAssignmentStatus as a5, type FFIDSeatModel as a6, type FFIDServiceAccessDenialReason as a7, type FFIDServiceAccessFailPolicy as a8, FFIDSubscriptionBadge as a9, FFIDUserMenu as aa, FFID_INQUIRY_CATEGORIES as ab, FFID_INQUIRY_CATEGORIES_SITE_2026 as ac, type TokenData as ad, type UseFFIDAnnouncementsOptions as ae, type UseFFIDAnnouncementsReturn as af, createTokenStore as ag, isFFIDInquiryCategorySite2026 as ah, useFFIDAnnouncements as ai, type FFIDAnnouncementBadgeClassNames as aj, type FFIDAnnouncementBadgeProps as ak, type FFIDAnnouncementListClassNames as al, type FFIDAnnouncementListProps as am, type FFIDLoginButtonProps as an, type FFIDOrganizationSwitcherClassNames as ao, type FFIDOrganizationSwitcherProps as ap, type FFIDSubscriptionBadgeClassNames as aq, type FFIDSubscriptionBadgeProps as ar, type FFIDUserMenuClassNames as as, type FFIDUserMenuProps as at, type FFIDPrompt as b, type FFIDConfig as c, type FFIDApiResponse as d, type FFIDSessionResponse as e, type FFIDSignOutResult as f, type FFIDError as g, type FFIDSubscriptionCheckResponse as h, type FFIDCheckServiceAccessParams as i, type FFIDServiceAccessDecision as j, type FFIDAnalyticsConfig as k, type FFIDVerifyAccessTokenOptions as l, type FFIDOAuthUserInfo as m, type FFIDInquiryCreateParams as n, type FFIDInquiryCreateResponse as o, type FFIDAuthMode as p, type FFIDLogger as q, type FFIDCacheAdapter as r, type FFIDUser as s, type FFIDOrganization as t, type FFIDSubscription as u, type FFIDSubscriptionContextValue as v, type FFIDAnnouncementsClientConfig as w, type FFIDAnnouncementsApiResponse as x, type FFIDAnnouncementsLogger as y, type Announcement as z };
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkZFKXOTFF_cjs = require('./chunk-ZFKXOTFF.cjs');
3
+ var chunkR4KUHR4S_cjs = require('./chunk-R4KUHR4S.cjs');
4
4
  var chunkH5O2CCAY_cjs = require('./chunk-H5O2CCAY.cjs');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -54,8 +54,8 @@ function defaultRedirect(url) {
54
54
  }
55
55
  function useRequireActiveSubscription(options) {
56
56
  const { redirectTo, allowGrace = true, onRedirect } = options;
57
- const { isLoading, error } = chunkZFKXOTFF_cjs.useFFIDContext();
58
- const { effectiveStatus, isBlocked, isGrace } = chunkZFKXOTFF_cjs.useSubscription();
57
+ const { isLoading, error } = chunkR4KUHR4S_cjs.useFFIDContext();
58
+ const { effectiveStatus, isBlocked, isGrace } = chunkR4KUHR4S_cjs.useSubscription();
59
59
  const hasFetchError = error !== null && effectiveStatus === null;
60
60
  const shouldRedirect = !isLoading && !hasFetchError && (isBlocked || !allowGrace && isGrace || effectiveStatus === null);
61
61
  react.useEffect(() => {
@@ -76,7 +76,7 @@ function useRequireActiveSubscription(options) {
76
76
  }
77
77
  function withFFIDAuth(Component, options = {}) {
78
78
  const WrappedComponent = (props) => {
79
- const { isLoading, isAuthenticated, login } = chunkZFKXOTFF_cjs.useFFIDContext();
79
+ const { isLoading, isAuthenticated, login } = chunkR4KUHR4S_cjs.useFFIDContext();
80
80
  const hasRedirected = react.useRef(false);
81
81
  react.useEffect(() => {
82
82
  if (!isLoading && !isAuthenticated && options.redirectToLogin && !hasRedirected.current) {
@@ -105,155 +105,211 @@ var FFID_NEWSLETTER_DISPATCH_MAX_RECIPIENTS = 1e3;
105
105
 
106
106
  Object.defineProperty(exports, "ACCESS_GRANTING_EFFECTIVE_STATUSES", {
107
107
  enumerable: true,
108
- get: function () { return chunkZFKXOTFF_cjs.ACCESS_GRANTING_EFFECTIVE_STATUSES; }
108
+ get: function () { return chunkR4KUHR4S_cjs.ACCESS_GRANTING_EFFECTIVE_STATUSES; }
109
109
  });
110
110
  Object.defineProperty(exports, "BLOCKING_EFFECTIVE_STATUSES", {
111
111
  enumerable: true,
112
- get: function () { return chunkZFKXOTFF_cjs.BLOCKING_EFFECTIVE_STATUSES; }
112
+ get: function () { return chunkR4KUHR4S_cjs.BLOCKING_EFFECTIVE_STATUSES; }
113
+ });
114
+ Object.defineProperty(exports, "CATALOG_HASH_PATTERN", {
115
+ enumerable: true,
116
+ get: function () { return chunkR4KUHR4S_cjs.CATALOG_HASH_PATTERN; }
113
117
  });
114
118
  Object.defineProperty(exports, "DEFAULT_API_BASE_URL", {
115
119
  enumerable: true,
116
- get: function () { return chunkZFKXOTFF_cjs.DEFAULT_API_BASE_URL; }
120
+ get: function () { return chunkR4KUHR4S_cjs.DEFAULT_API_BASE_URL; }
117
121
  });
118
122
  Object.defineProperty(exports, "DEFAULT_OAUTH_SCOPES", {
119
123
  enumerable: true,
120
- get: function () { return chunkZFKXOTFF_cjs.DEFAULT_OAUTH_SCOPES; }
124
+ get: function () { return chunkR4KUHR4S_cjs.DEFAULT_OAUTH_SCOPES; }
121
125
  });
122
126
  Object.defineProperty(exports, "EFFECTIVE_SUBSCRIPTION_STATUSES", {
123
127
  enumerable: true,
124
- get: function () { return chunkZFKXOTFF_cjs.EFFECTIVE_SUBSCRIPTION_STATUSES; }
128
+ get: function () { return chunkR4KUHR4S_cjs.EFFECTIVE_SUBSCRIPTION_STATUSES; }
125
129
  });
126
130
  Object.defineProperty(exports, "FFIDAnnouncementBadge", {
127
131
  enumerable: true,
128
- get: function () { return chunkZFKXOTFF_cjs.FFIDAnnouncementBadge; }
132
+ get: function () { return chunkR4KUHR4S_cjs.FFIDAnnouncementBadge; }
129
133
  });
130
134
  Object.defineProperty(exports, "FFIDAnnouncementList", {
131
135
  enumerable: true,
132
- get: function () { return chunkZFKXOTFF_cjs.FFIDAnnouncementList; }
136
+ get: function () { return chunkR4KUHR4S_cjs.FFIDAnnouncementList; }
137
+ });
138
+ Object.defineProperty(exports, "FFIDCatalogHashError", {
139
+ enumerable: true,
140
+ get: function () { return chunkR4KUHR4S_cjs.FFIDCatalogHashError; }
133
141
  });
134
142
  Object.defineProperty(exports, "FFIDInquiryForm", {
135
143
  enumerable: true,
136
- get: function () { return chunkZFKXOTFF_cjs.FFIDInquiryForm; }
144
+ get: function () { return chunkR4KUHR4S_cjs.FFIDInquiryForm; }
137
145
  });
138
146
  Object.defineProperty(exports, "FFIDLoginButton", {
139
147
  enumerable: true,
140
- get: function () { return chunkZFKXOTFF_cjs.FFIDLoginButton; }
148
+ get: function () { return chunkR4KUHR4S_cjs.FFIDLoginButton; }
141
149
  });
142
150
  Object.defineProperty(exports, "FFIDOrganizationSwitcher", {
143
151
  enumerable: true,
144
- get: function () { return chunkZFKXOTFF_cjs.FFIDOrganizationSwitcher; }
152
+ get: function () { return chunkR4KUHR4S_cjs.FFIDOrganizationSwitcher; }
145
153
  });
146
154
  Object.defineProperty(exports, "FFIDProvider", {
147
155
  enumerable: true,
148
- get: function () { return chunkZFKXOTFF_cjs.FFIDProvider; }
156
+ get: function () { return chunkR4KUHR4S_cjs.FFIDProvider; }
149
157
  });
150
158
  Object.defineProperty(exports, "FFIDSDKError", {
151
159
  enumerable: true,
152
- get: function () { return chunkZFKXOTFF_cjs.FFIDSDKError; }
160
+ get: function () { return chunkR4KUHR4S_cjs.FFIDSDKError; }
153
161
  });
154
162
  Object.defineProperty(exports, "FFIDSubscriptionBadge", {
155
163
  enumerable: true,
156
- get: function () { return chunkZFKXOTFF_cjs.FFIDSubscriptionBadge; }
164
+ get: function () { return chunkR4KUHR4S_cjs.FFIDSubscriptionBadge; }
157
165
  });
158
166
  Object.defineProperty(exports, "FFIDUserMenu", {
159
167
  enumerable: true,
160
- get: function () { return chunkZFKXOTFF_cjs.FFIDUserMenu; }
168
+ get: function () { return chunkR4KUHR4S_cjs.FFIDUserMenu; }
161
169
  });
162
170
  Object.defineProperty(exports, "FFID_ANNOUNCEMENTS_ERROR_CODES", {
163
171
  enumerable: true,
164
- get: function () { return chunkZFKXOTFF_cjs.FFID_ANNOUNCEMENTS_ERROR_CODES; }
172
+ get: function () { return chunkR4KUHR4S_cjs.FFID_ANNOUNCEMENTS_ERROR_CODES; }
173
+ });
174
+ Object.defineProperty(exports, "FFID_CATALOG_ENVIRONMENTS", {
175
+ enumerable: true,
176
+ get: function () { return chunkR4KUHR4S_cjs.FFID_CATALOG_ENVIRONMENTS; }
177
+ });
178
+ Object.defineProperty(exports, "FFID_CATALOG_PUBLICATION_STATUSES", {
179
+ enumerable: true,
180
+ get: function () { return chunkR4KUHR4S_cjs.FFID_CATALOG_PUBLICATION_STATUSES; }
165
181
  });
166
182
  Object.defineProperty(exports, "FFID_ERROR_CODES", {
167
183
  enumerable: true,
168
- get: function () { return chunkZFKXOTFF_cjs.FFID_ERROR_CODES; }
184
+ get: function () { return chunkR4KUHR4S_cjs.FFID_ERROR_CODES; }
169
185
  });
170
186
  Object.defineProperty(exports, "FFID_INQUIRY_CATEGORIES", {
171
187
  enumerable: true,
172
- get: function () { return chunkZFKXOTFF_cjs.FFID_INQUIRY_CATEGORIES; }
188
+ get: function () { return chunkR4KUHR4S_cjs.FFID_INQUIRY_CATEGORIES; }
173
189
  });
174
190
  Object.defineProperty(exports, "FFID_INQUIRY_CATEGORIES_SITE_2026", {
175
191
  enumerable: true,
176
- get: function () { return chunkZFKXOTFF_cjs.FFID_INQUIRY_CATEGORIES_SITE_2026; }
192
+ get: function () { return chunkR4KUHR4S_cjs.FFID_INQUIRY_CATEGORIES_SITE_2026; }
193
+ });
194
+ Object.defineProperty(exports, "canonicalizeCatalogValue", {
195
+ enumerable: true,
196
+ get: function () { return chunkR4KUHR4S_cjs.canonicalizeCatalogValue; }
177
197
  });
178
198
  Object.defineProperty(exports, "clearState", {
179
199
  enumerable: true,
180
- get: function () { return chunkZFKXOTFF_cjs.cleanupStateStorage; }
200
+ get: function () { return chunkR4KUHR4S_cjs.cleanupStateStorage; }
181
201
  });
182
202
  Object.defineProperty(exports, "computeEffectiveStatusFromSession", {
183
203
  enumerable: true,
184
- get: function () { return chunkZFKXOTFF_cjs.computeEffectiveStatusFromSession; }
204
+ get: function () { return chunkR4KUHR4S_cjs.computeEffectiveStatusFromSession; }
205
+ });
206
+ Object.defineProperty(exports, "computeFFIDCheckoutCopyHash", {
207
+ enumerable: true,
208
+ get: function () { return chunkR4KUHR4S_cjs.computeFFIDCheckoutCopyHash; }
209
+ });
210
+ Object.defineProperty(exports, "computeLegalDisclosureHash", {
211
+ enumerable: true,
212
+ get: function () { return chunkR4KUHR4S_cjs.computeLegalDisclosureHash; }
213
+ });
214
+ Object.defineProperty(exports, "computePaymentConfigurationHash", {
215
+ enumerable: true,
216
+ get: function () { return chunkR4KUHR4S_cjs.computePaymentConfigurationHash; }
217
+ });
218
+ Object.defineProperty(exports, "computePraxisCopyHash", {
219
+ enumerable: true,
220
+ get: function () { return chunkR4KUHR4S_cjs.computePraxisCopyHash; }
221
+ });
222
+ Object.defineProperty(exports, "computeScopeHash", {
223
+ enumerable: true,
224
+ get: function () { return chunkR4KUHR4S_cjs.computeScopeHash; }
225
+ });
226
+ Object.defineProperty(exports, "computeTaxConfigurationHash", {
227
+ enumerable: true,
228
+ get: function () { return chunkR4KUHR4S_cjs.computeTaxConfigurationHash; }
185
229
  });
186
230
  Object.defineProperty(exports, "createFFIDAnnouncementsClient", {
187
231
  enumerable: true,
188
- get: function () { return chunkZFKXOTFF_cjs.createFFIDAnnouncementsClient; }
232
+ get: function () { return chunkR4KUHR4S_cjs.createFFIDAnnouncementsClient; }
189
233
  });
190
234
  Object.defineProperty(exports, "createFFIDClient", {
191
235
  enumerable: true,
192
- get: function () { return chunkZFKXOTFF_cjs.createFFIDClient; }
236
+ get: function () { return chunkR4KUHR4S_cjs.createFFIDClient; }
193
237
  });
194
238
  Object.defineProperty(exports, "createTokenStore", {
195
239
  enumerable: true,
196
- get: function () { return chunkZFKXOTFF_cjs.createTokenStore; }
240
+ get: function () { return chunkR4KUHR4S_cjs.createTokenStore; }
197
241
  });
198
242
  Object.defineProperty(exports, "generateCodeChallenge", {
199
243
  enumerable: true,
200
- get: function () { return chunkZFKXOTFF_cjs.generateCodeChallenge; }
244
+ get: function () { return chunkR4KUHR4S_cjs.generateCodeChallenge; }
201
245
  });
202
246
  Object.defineProperty(exports, "generateCodeVerifier", {
203
247
  enumerable: true,
204
- get: function () { return chunkZFKXOTFF_cjs.generateCodeVerifier; }
248
+ get: function () { return chunkR4KUHR4S_cjs.generateCodeVerifier; }
205
249
  });
206
250
  Object.defineProperty(exports, "handleRedirectCallback", {
207
251
  enumerable: true,
208
- get: function () { return chunkZFKXOTFF_cjs.handleRedirectCallback; }
252
+ get: function () { return chunkR4KUHR4S_cjs.handleRedirectCallback; }
209
253
  });
210
254
  Object.defineProperty(exports, "hasAccessFromUserinfo", {
211
255
  enumerable: true,
212
- get: function () { return chunkZFKXOTFF_cjs.hasAccessFromUserinfo; }
256
+ get: function () { return chunkR4KUHR4S_cjs.hasAccessFromUserinfo; }
257
+ });
258
+ Object.defineProperty(exports, "hashCanonicalJson", {
259
+ enumerable: true,
260
+ get: function () { return chunkR4KUHR4S_cjs.hashCanonicalJson; }
213
261
  });
214
262
  Object.defineProperty(exports, "isBlockedFromUserinfo", {
215
263
  enumerable: true,
216
- get: function () { return chunkZFKXOTFF_cjs.isBlockedFromUserinfo; }
264
+ get: function () { return chunkR4KUHR4S_cjs.isBlockedFromUserinfo; }
217
265
  });
218
266
  Object.defineProperty(exports, "isFFIDInquiryCategorySite2026", {
219
267
  enumerable: true,
220
- get: function () { return chunkZFKXOTFF_cjs.isFFIDInquiryCategorySite2026; }
268
+ get: function () { return chunkR4KUHR4S_cjs.isFFIDInquiryCategorySite2026; }
221
269
  });
222
270
  Object.defineProperty(exports, "normalizeRedirectUri", {
223
271
  enumerable: true,
224
- get: function () { return chunkZFKXOTFF_cjs.normalizeRedirectUri; }
272
+ get: function () { return chunkR4KUHR4S_cjs.normalizeRedirectUri; }
225
273
  });
226
274
  Object.defineProperty(exports, "retrieveCodeVerifier", {
227
275
  enumerable: true,
228
- get: function () { return chunkZFKXOTFF_cjs.retrieveCodeVerifier; }
276
+ get: function () { return chunkR4KUHR4S_cjs.retrieveCodeVerifier; }
229
277
  });
230
278
  Object.defineProperty(exports, "retrieveState", {
231
279
  enumerable: true,
232
- get: function () { return chunkZFKXOTFF_cjs.retrieveState; }
280
+ get: function () { return chunkR4KUHR4S_cjs.retrieveState; }
281
+ });
282
+ Object.defineProperty(exports, "sha256Hex", {
283
+ enumerable: true,
284
+ get: function () { return chunkR4KUHR4S_cjs.sha256Hex; }
233
285
  });
234
286
  Object.defineProperty(exports, "storeCodeVerifier", {
235
287
  enumerable: true,
236
- get: function () { return chunkZFKXOTFF_cjs.storeCodeVerifier; }
288
+ get: function () { return chunkR4KUHR4S_cjs.storeCodeVerifier; }
237
289
  });
238
290
  Object.defineProperty(exports, "storeState", {
239
291
  enumerable: true,
240
- get: function () { return chunkZFKXOTFF_cjs.storeState; }
292
+ get: function () { return chunkR4KUHR4S_cjs.storeState; }
241
293
  });
242
294
  Object.defineProperty(exports, "useFFID", {
243
295
  enumerable: true,
244
- get: function () { return chunkZFKXOTFF_cjs.useFFID; }
296
+ get: function () { return chunkR4KUHR4S_cjs.useFFID; }
245
297
  });
246
298
  Object.defineProperty(exports, "useFFIDAnnouncements", {
247
299
  enumerable: true,
248
- get: function () { return chunkZFKXOTFF_cjs.useFFIDAnnouncements; }
300
+ get: function () { return chunkR4KUHR4S_cjs.useFFIDAnnouncements; }
249
301
  });
250
302
  Object.defineProperty(exports, "useSubscription", {
251
303
  enumerable: true,
252
- get: function () { return chunkZFKXOTFF_cjs.useSubscription; }
304
+ get: function () { return chunkR4KUHR4S_cjs.useSubscription; }
305
+ });
306
+ Object.defineProperty(exports, "validatePublishedCatalog", {
307
+ enumerable: true,
308
+ get: function () { return chunkR4KUHR4S_cjs.validatePublishedCatalog; }
253
309
  });
254
310
  Object.defineProperty(exports, "withSubscription", {
255
311
  enumerable: true,
256
- get: function () { return chunkZFKXOTFF_cjs.withSubscription; }
312
+ get: function () { return chunkR4KUHR4S_cjs.withSubscription; }
257
313
  });
258
314
  Object.defineProperty(exports, "ALL_DENIED_EXCEPT_NECESSARY", {
259
315
  enumerable: true,