@redacto.io/consent-sdk-react 10.3.1-beta.0 → 10.4.0-beta.1

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.
@@ -53,9 +53,10 @@ declare function createConsentClient(baseUrl: string, ledgerBaseUrl?: string): {
53
53
  useSessionAuth?: boolean;
54
54
  }): Promise<unknown>;
55
55
  /**
56
- * Create OTP (public)
56
+ * Create OTP (public). `to` is an email, or an E.164 number with
57
+ * `channel: "sms"`.
57
58
  */
58
- createOtp(organisationId: string, workspaceId: string, email: string, options?: Omit<ApiFetchOptions, "getAuthToken">): Promise<unknown>;
59
+ createOtp(organisationId: string, workspaceId: string, email: string, options?: Omit<ApiFetchOptions, "getAuthToken">, channel?: "email" | "sms"): Promise<unknown>;
59
60
  /**
60
61
  * Verify OTP (public)
61
62
  *
@@ -218,6 +219,175 @@ declare function createConsentClient(baseUrl: string, ledgerBaseUrl?: string): {
218
219
  acknowledgeNotification(baseRequest: BaseRequest, notificationUuid: string, authToken?: string): Promise<NotificationActionResponse>;
219
220
  };
220
221
 
222
+ /** Menu sections, keyed by the `InternalPage` each one opens. */
223
+ type PrivacyCenterSectionKey = 'consent-manager' | 'form' | 'activity' | 'receipts' | 'notifications';
224
+ /** Request types, keyed by the lower-case value a case is created with. */
225
+ type PrivacyCenterRequestTypeKey = 'access' | 'correction' | 'erasure' | 'nomination' | 'grievance';
226
+ type PrivacyCenterGrievanceCategory = 'consent_violation' | 'unlawful_processing' | 'data_breach';
227
+ type PrivacyCenterSignInLayout = 'card' | 'split' | 'minimal';
228
+ type PrivacyCenterSignInAlign = 'center' | 'left';
229
+ type PrivacyCenterSignInBackground = 'gradient' | 'solid' | 'image';
230
+ type PrivacyCenterSignInChannels = 'both' | 'email' | 'sms';
231
+ type PrivacyCenterSection = Readonly<{
232
+ key: PrivacyCenterSectionKey;
233
+ /** `null` uses the built-in, translated label. */
234
+ label: string | null;
235
+ enabled: boolean;
236
+ }>;
237
+ type PrivacyCenterRequestType = Readonly<{
238
+ key: PrivacyCenterRequestTypeKey;
239
+ /** `null` uses the built-in, translated label. */
240
+ label: string | null;
241
+ enabled: boolean;
242
+ }>;
243
+ type PrivacyCenterFooterLink = Readonly<{
244
+ label: string;
245
+ url: string;
246
+ }>;
247
+ type PrivacyCenterBrandingSettings = Readonly<{
248
+ inherit_identity: boolean;
249
+ display_name: string | null;
250
+ logo_url: string | null;
251
+ /** 28–96 px; `null` keeps the built-in size. */
252
+ logo_height: number | null;
253
+ inherit_colors: boolean;
254
+ primary_color: string | null;
255
+ accent_color: string | null;
256
+ inherit_font: boolean;
257
+ font_family: string | null;
258
+ style: PrivacyCenterTheme;
259
+ /** 0–24 px; `null` keeps the built-in radii. */
260
+ corner_radius: number | null;
261
+ }>;
262
+ type PrivacyCenterSignInSettings = Readonly<{
263
+ layout: PrivacyCenterSignInLayout;
264
+ align: PrivacyCenterSignInAlign;
265
+ background_type: PrivacyCenterSignInBackground;
266
+ background_from: string;
267
+ background_to: string;
268
+ background_color: string;
269
+ background_image_url: string | null;
270
+ highlights: readonly string[];
271
+ show_logo: boolean;
272
+ title: string;
273
+ tagline: string | null;
274
+ heading: string;
275
+ description: string | null;
276
+ channels: PrivacyCenterSignInChannels;
277
+ default_country_code: string;
278
+ field_label: string | null;
279
+ placeholder: string | null;
280
+ help_text: string | null;
281
+ button_text: string;
282
+ show_notice_line: boolean;
283
+ notice_line: string | null;
284
+ show_support_link: boolean;
285
+ support_text: string;
286
+ support_link_text: string;
287
+ otp_heading: string;
288
+ otp_description: string | null;
289
+ otp_button_text: string;
290
+ otp_resend_text: string;
291
+ }>;
292
+ type PrivacyCenterPortalSettings = Readonly<{
293
+ sections: readonly PrivacyCenterSection[];
294
+ welcome_enabled: boolean;
295
+ welcome_title: string;
296
+ welcome_message: string;
297
+ request_types: readonly PrivacyCenterRequestType[];
298
+ grievance_categories: readonly PrivacyCenterGrievanceCategory[];
299
+ /** `null` asks the data principal, as today. */
300
+ revoke_consents_on_erasure: boolean | null;
301
+ /** `null` uses the built-in warning; a purpose's own message still wins. */
302
+ withdraw_warning: string | null;
303
+ /** `null` never signs out for inactivity. */
304
+ session_timeout_minutes: number | null;
305
+ }>;
306
+ type PrivacyCenterLanguageSettings = Readonly<{
307
+ enabled: readonly string[];
308
+ default: string;
309
+ auto_detect: boolean;
310
+ show_switcher: boolean;
311
+ }>;
312
+ type PrivacyCenterFooterSettings = Readonly<{
313
+ links: readonly PrivacyCenterFooterLink[];
314
+ show_privacy_policy: boolean;
315
+ show_contact: boolean;
316
+ copyright: string | null;
317
+ show_powered_by: boolean;
318
+ }>;
319
+ type PrivacyCenterSeoSettings = Readonly<{
320
+ page_title: string;
321
+ noindex: boolean;
322
+ }>;
323
+ type PrivacyCenterEmbedSettings = Readonly<{
324
+ allowed_origins: readonly string[];
325
+ }>;
326
+ /**
327
+ * The full Privacy Center settings, as published from the Redacto console and
328
+ * served by the public settings endpoint, with every field filled in.
329
+ */
330
+ type ResolvedPrivacyCenterSettings = Readonly<{
331
+ schema_version: number;
332
+ branding: PrivacyCenterBrandingSettings;
333
+ sign_in: PrivacyCenterSignInSettings;
334
+ portal: PrivacyCenterPortalSettings;
335
+ languages: PrivacyCenterLanguageSettings;
336
+ footer: PrivacyCenterFooterSettings;
337
+ seo: PrivacyCenterSeoSettings;
338
+ custom_css: string | null;
339
+ embed: PrivacyCenterEmbedSettings;
340
+ }>;
341
+ /**
342
+ * Host overrides for `RedactoPrivacyCenter`'s `settings` prop. Each group is
343
+ * merged field by field over the published settings, so a host can change one
344
+ * value and keep the rest of what the console published.
345
+ */
346
+ type PrivacyCenterSettings = Readonly<{
347
+ /**
348
+ * Visual style, kept as an alias for `branding.style`. `"classic"` (the
349
+ * default) is the standard look; `"glass"` is a frosted, sheet-based style.
350
+ * An unrecognised value falls back to classic.
351
+ */
352
+ theme?: PrivacyCenterTheme;
353
+ branding?: Partial<PrivacyCenterBrandingSettings>;
354
+ sign_in?: Partial<PrivacyCenterSignInSettings>;
355
+ portal?: Partial<PrivacyCenterPortalSettings>;
356
+ languages?: Partial<PrivacyCenterLanguageSettings>;
357
+ footer?: Partial<PrivacyCenterFooterSettings>;
358
+ seo?: Partial<PrivacyCenterSeoSettings>;
359
+ custom_css?: string | null;
360
+ }>;
361
+ /**
362
+ * Brand Identity details the public settings carry only when the published
363
+ * settings use them (a `{legal}` placeholder, the footer's privacy policy or
364
+ * contact lines). Each is null otherwise.
365
+ */
366
+ type PrivacyCenterBrandContact = Readonly<{
367
+ legal_entity_name: string | null;
368
+ privacy_policy_url: string | null;
369
+ grievance_email: string | null;
370
+ grievance_url: string | null;
371
+ dp_board_url: string | null;
372
+ }>;
373
+ /** `detail` of `GET /public/organisations/{org}/privacy-center-settings/`. */
374
+ type PublicPrivacyCenterSettingsResponse = Readonly<{
375
+ settings: unknown;
376
+ version: number;
377
+ published_at: string | null;
378
+ language: string;
379
+ /** Absent on servers that predate it. */
380
+ brand_contact?: unknown;
381
+ }>;
382
+ /** Values the `{brand}`-style tokens in custom copy resolve to. */
383
+ type PlaceholderContext = Readonly<{
384
+ brand: string;
385
+ legal?: string | null;
386
+ year?: number;
387
+ contact?: string | null;
388
+ name?: string | null;
389
+ }>;
390
+
221
391
  type InternalPage = 'consent-manager' | 'form' | 'activity' | 'case-details' | 'notifications' | 'receipts';
222
392
  interface NavigationContextType {
223
393
  currentPage: InternalPage;
@@ -310,6 +480,7 @@ type FormData = {
310
480
  purposes: RawPurposeWrapper[];
311
481
  direct_groups?: FormProductGroup[];
312
482
  nominated_groups?: FormProductGroup[];
483
+ enabled_request_types?: string[] | null;
313
484
  };
314
485
  type FormDataResponse = {
315
486
  code: number;
@@ -675,14 +846,45 @@ type SelectPrincipalResponse = Readonly<{
675
846
  refresh_token: string;
676
847
  expires_at?: string;
677
848
  }>;
678
- /** Presentation options for the Privacy Center, mirroring the notice's `settings`. */
679
- type PrivacyCenterSettings = Readonly<{
680
- /**
681
- * Visual style. `"classic"` (the default) is the standard look; `"glass"` is
682
- * a frosted, sheet-based style. Both take their colours from workspace
683
- * branding. An unrecognised value falls back to classic.
684
- */
685
- theme?: PrivacyCenterTheme;
849
+ /** Passed to `onReady` once the first screen is on show. */
850
+ type PrivacyCenterReadyEvent = Readonly<{
851
+ /** False when the built-in sign-in screen is what the visitor sees. */
852
+ signedIn: boolean;
853
+ }>;
854
+ /** Passed to `onConsentChange` after a consent was changed successfully. */
855
+ type PrivacyCenterConsentChange = Readonly<{
856
+ /** `revoke` withdraws consent; `regrant` and `renew` give it again. */
857
+ action: ConsentAction;
858
+ purposeUuid: string;
859
+ productUuid: string | null;
860
+ /** The data elements the change covered; empty when it covered the whole purpose. */
861
+ dataElementUuids: readonly string[];
862
+ /** Set when the visitor acted on behalf of someone who nominated them. */
863
+ nominatorUuid: string | null;
864
+ }>;
865
+ /** Passed to `onRequestSubmit` after a data request (case) was created. */
866
+ type PrivacyCenterRequestSubmission = Readonly<{
867
+ /** The human-readable case id shown to the visitor. */
868
+ caseId: string;
869
+ caseUuid: string;
870
+ requestType: PrivacyCenterRequestTypeKey;
871
+ /** The product the request is about; null for nomination and grievance. */
872
+ productUuid: string | null;
873
+ }>;
874
+ /**
875
+ * Why the visitor was signed out: they chose to (`user`), they were idle for
876
+ * the configured session timeout (`timeout`), or their session could no longer
877
+ * be refreshed (`session-expired`).
878
+ */
879
+ type PrivacyCenterSignOutReason = 'user' | 'timeout' | 'session-expired';
880
+ type PrivacyCenterSignOutEvent = Readonly<{
881
+ reason: PrivacyCenterSignOutReason;
882
+ }>;
883
+ type PrivacyCenterEventHandlers = Readonly<{
884
+ onReady?: (event: PrivacyCenterReadyEvent) => void;
885
+ onConsentChange?: (change: PrivacyCenterConsentChange) => void;
886
+ onRequestSubmit?: (request: PrivacyCenterRequestSubmission) => void;
887
+ onSignOut?: (event: PrivacyCenterSignOutEvent) => void;
686
888
  }>;
687
889
  type RedactoPrivacyCenterProps = Readonly<{
688
890
  baseUrl: string;
@@ -709,15 +911,39 @@ type RedactoPrivacyCenterProps = Readonly<{
709
911
  * customer code; optional third identifier alongside email/mobile.
710
912
  */
711
913
  ucic?: string;
712
- /** Sandbox org UUID (replaces the JWT-decoded org in sandbox mode). */
914
+ /**
915
+ * Organisation UUID. Replaces the JWT-decoded org in sandbox mode; without a
916
+ * token it also addresses the built-in sign-in and the published settings
917
+ * (otherwise looked up from `slug`).
918
+ */
713
919
  organisationUuid?: string;
714
- /** Sandbox workspace UUID (replaces the JWT-decoded workspace in sandbox mode). */
920
+ /**
921
+ * Workspace UUID. Replaces the JWT-decoded workspace in sandbox mode; without
922
+ * a token it addresses the built-in sign-in (otherwise looked up from `slug`).
923
+ */
715
924
  workspaceUuid?: string;
716
925
  onError: (error: Error) => boolean;
717
926
  initialPage?: InternalPage;
718
927
  onBack?: 'back' | 'signout';
719
- /** Presentation options; see `PrivacyCenterSettings`. */
928
+ /**
929
+ * Overrides for the settings published from the Redacto console, merged
930
+ * field by field over them per group; see `PrivacyCenterSettings`.
931
+ */
720
932
  settings?: PrivacyCenterSettings;
933
+ /**
934
+ * With no token, show the built-in OTP sign-in screen. Off by default: with
935
+ * no token the Privacy Center keeps its loading state until the host passes
936
+ * one, so a token that arrives a moment late never flashes a sign-in.
937
+ */
938
+ builtInSignIn?: boolean;
939
+ /** Called once, when the first screen (sign-in or the Privacy Center) is on show. */
940
+ onReady?: (event: PrivacyCenterReadyEvent) => void;
941
+ /** Called after the visitor withdrew, re-granted or renewed a consent. */
942
+ onConsentChange?: (change: PrivacyCenterConsentChange) => void;
943
+ /** Called after the visitor submitted a data request. */
944
+ onRequestSubmit?: (request: PrivacyCenterRequestSubmission) => void;
945
+ /** Called when the visitor is signed out, with the reason. */
946
+ onSignOut?: (event: PrivacyCenterSignOutEvent) => void;
721
947
  }>;
722
948
  type PrivacyCenterLayoutProps = Readonly<{
723
949
  children: ReactNode;
@@ -730,7 +956,7 @@ type PrivacyCenterLayoutProps = Readonly<{
730
956
  settings?: PrivacyCenterSettings;
731
957
  }>;
732
958
 
733
- declare function RedactoPrivacyCenter({ baseUrl, ledgerBaseUrl, slug, accessToken, refreshToken, token, email, mobile, ucic, organisationUuid, workspaceUuid, onError, initialPage, onBack, settings, }: RedactoPrivacyCenterProps): React.JSX.Element;
959
+ declare function RedactoPrivacyCenter({ baseUrl, ledgerBaseUrl, slug, accessToken, refreshToken, token, email, mobile, ucic, organisationUuid, workspaceUuid, onError, initialPage, onBack, settings, builtInSignIn, onReady, onConsentChange, onRequestSubmit, onSignOut, }: RedactoPrivacyCenterProps): React.JSX.Element;
734
960
 
735
961
  declare function PrivacyCenterLayout({ settings, ...props }: PrivacyCenterLayoutProps): React.JSX.Element;
736
962
 
@@ -777,6 +1003,10 @@ type AuthContextValue = Readonly<{
777
1003
  onError: (error: Error) => boolean;
778
1004
  updateTokens: (accessToken: string, refreshToken?: string) => void;
779
1005
  sessionExpired: boolean;
1006
+ /** Signs the visitor out (e.g. after inactivity) and shows the session-expired screen. */
1007
+ expireSession: (reason: PrivacyCenterSignOutReason) => void;
1008
+ /** Drops the session so the built-in sign-in screen shows again. */
1009
+ restartSignIn: () => void;
780
1010
  }>;
781
1011
  type BaseUrlContextValue = Readonly<{
782
1012
  baseUrl: string;
@@ -976,4 +1206,60 @@ declare const useAuth: () => AuthContextValue;
976
1206
  */
977
1207
  declare const injectPCStyles: () => void;
978
1208
 
979
- export { type Activity, type ActivityBadgeStatus$1 as ActivityBadgeStatus, type ActivityDetail, type ActivityResponse, type ApiFetchOptions, type ApiResponse, type AuthContext, AuthProvider, type BaseRequest, BaseUrlProvider, type CaseHistoryDetail, type CaseHistoryResponse, type CaseRequest, type ConsentAction, type ConsentDataElement, type ConsentGroup, type ConsentHistoryStatusSummary, type ConsentModalRecord, ConsentStatusEnum, type CreateCaseResponse, type DataElement, type DisplayPurposeRow, type FetchOrgParams, type FormData, type FormDataResponse, type GrievanceOptions, type GrievanceTypeElement, GrievanceTypeEnum, type GrievanceValue, type GroupPurposesOut, type InternalPage, type ManageConsentParams, type ManageConsentResponse, NavigationProvider, type NominationData, type NominatorInfo, NotificationsPage, type OrganizationDetail, type OrganizationResponse, type OtpResponse, type OtpVerificationResponse, type Pagination, type PaginationMeta, PrivacyCenterActivityPage, PrivacyCenterCaseDetailsPage, PrivacyCenterConsentManagerPage, PrivacyCenterFormPage, PrivacyCenterHomePage, PrivacyCenterLayout, type PrivacyCenterSettings, PrivacyCenterTheme, type Purpose, type PurposeItem, type RawPurposeWrapper, RedactoPrivacyCenter, RequestTypeEnum, type TokenExchangeResponse, type UpdateCorrectionDataItem, type UpdatePurpose, type UpdateRequestDetails, type UserConsentDetail, type UserConsentResponse, type UserDataRequest, type Workspace, checkAndRefreshAuth, compareEmails, createCaseRequest, createConsentClient, createOtpServer as createOtp, decodeJwtToken, ensureValidToken, exchangeTokenServer as exchangeToken, fetchActivities, fetchCaseHistory, fetchGroupPurposes, fetchProducts, fetchUserConsents, formatActivityType, getActivityTypeStatus, getCookieValue, getFormData, getInitialState, injectPCStyles, isJwtExpired, isUserAuthenticated, manageConsent, setRefreshTokenCookie, signOutPrivacyCenter, useAuth, useBaseUrl, useCaseHistory, useInternalNavigation, verifyOtpServer as verifyOtp };
1209
+ /**
1210
+ * Reproduces today's Privacy Center: with nothing published, every value here
1211
+ * renders exactly what the SDK rendered before settings existed.
1212
+ */
1213
+ declare const DEFAULT_PRIVACY_CENTER_SETTINGS: ResolvedPrivacyCenterSettings;
1214
+
1215
+ /**
1216
+ * The settings the Privacy Center renders with: the published payload (or
1217
+ * nothing, when none was fetched) validated field by field, with the host's
1218
+ * `settings` prop merged over each group. Anything missing or malformed takes
1219
+ * the default, so a bad payload can never break the page or change it from
1220
+ * today's look by accident.
1221
+ */
1222
+ declare const resolvePrivacyCenterSettings: (published: unknown, overrides?: PrivacyCenterSettings | null) => ResolvedPrivacyCenterSettings;
1223
+
1224
+ /**
1225
+ * Fills `{brand}`, `{legal}`, `{year}`, `{contact}` and `{name}` in custom
1226
+ * copy. `{legal}` falls back to the brand, and an empty value (no name known)
1227
+ * collapses cleanly: "Welcome back, {name}!" reads "Welcome back!".
1228
+ */
1229
+ declare const resolvePlaceholders: (text: string | null | undefined, context: PlaceholderContext) => string;
1230
+
1231
+ /**
1232
+ * The organisation's published Privacy Center settings, localised to
1233
+ * `language`. Public and unauthenticated. Resolves to `null` on any failure
1234
+ * (network, 4xx/5xx, an unexpected body) so callers keep today's defaults;
1235
+ * never rejects. One request per organisation and language is shared for
1236
+ * `SETTINGS_CACHE_TTL_MS`, so a later mount or language switch picks up a new
1237
+ * publish; a failed one is forgotten so the next mount retries.
1238
+ */
1239
+ declare const fetchPublicPrivacyCenterSettings: (baseUrl: string, organisationUuid: string, language: string) => Promise<PublicPrivacyCenterSettingsResponse | null>;
1240
+
1241
+ declare const PRIVACY_CENTER_PARTS: readonly ["topbar", "nav", "nav-item", "welcome", "consent-card", "request-form", "button-primary", "footer", "signin-card"];
1242
+ type PrivacyCenterPart = (typeof PRIVACY_CENTER_PARTS)[number];
1243
+
1244
+ /** The resolved settings; the defaults outside a `RedactoPrivacyCenter`. */
1245
+ declare const usePrivacyCenterSettings: () => ResolvedPrivacyCenterSettings;
1246
+
1247
+ type PrivacyCenterSettingsProviderProps = Readonly<{
1248
+ children: ReactNode;
1249
+ baseUrl: string;
1250
+ slug: string;
1251
+ accessToken?: string;
1252
+ organisationUuid?: string;
1253
+ workspaceUuid?: string;
1254
+ overrides?: PrivacyCenterSettings;
1255
+ builtInSignIn?: boolean;
1256
+ }>;
1257
+ /**
1258
+ * Fetches the organisation's published Privacy Center settings and refetches
1259
+ * them in the visitor's language. Rendering never waits: children get the
1260
+ * defaults (which reproduce the Privacy Center as it was before settings)
1261
+ * until the published copy arrives, and keep them when the fetch fails.
1262
+ */
1263
+ declare const PrivacyCenterSettingsProvider: ({ children, baseUrl, slug, accessToken, organisationUuid, workspaceUuid, overrides, builtInSignIn, }: PrivacyCenterSettingsProviderProps) => React.JSX.Element;
1264
+
1265
+ export { type Activity, type ActivityBadgeStatus$1 as ActivityBadgeStatus, type ActivityDetail, type ActivityResponse, type ApiFetchOptions, type ApiResponse, type AuthContext, AuthProvider, type BaseRequest, BaseUrlProvider, type CaseHistoryDetail, type CaseHistoryResponse, type CaseRequest, type ConsentAction, type ConsentDataElement, type ConsentGroup, type ConsentHistoryStatusSummary, type ConsentModalRecord, ConsentStatusEnum, type CreateCaseResponse, DEFAULT_PRIVACY_CENTER_SETTINGS, type DataElement, type DisplayPurposeRow, type FetchOrgParams, type FormData, type FormDataResponse, type GrievanceOptions, type GrievanceTypeElement, GrievanceTypeEnum, type GrievanceValue, type GroupPurposesOut, type InternalPage, type ManageConsentParams, type ManageConsentResponse, NavigationProvider, type NominationData, type NominatorInfo, NotificationsPage, type OrganizationDetail, type OrganizationResponse, type OtpResponse, type OtpVerificationResponse, PRIVACY_CENTER_PARTS, type Pagination, type PaginationMeta, type PlaceholderContext, PrivacyCenterActivityPage, type PrivacyCenterBrandContact, type PrivacyCenterBrandingSettings, PrivacyCenterCaseDetailsPage, type PrivacyCenterConsentChange, PrivacyCenterConsentManagerPage, type PrivacyCenterEmbedSettings, type PrivacyCenterEventHandlers, type PrivacyCenterFooterLink, type PrivacyCenterFooterSettings, PrivacyCenterFormPage, type PrivacyCenterGrievanceCategory, PrivacyCenterHomePage, type PrivacyCenterLanguageSettings, PrivacyCenterLayout, type PrivacyCenterPart, type PrivacyCenterPortalSettings, type PrivacyCenterReadyEvent, type PrivacyCenterRequestSubmission, type PrivacyCenterRequestType, type PrivacyCenterRequestTypeKey, type PrivacyCenterSection, type PrivacyCenterSectionKey, type PrivacyCenterSeoSettings, type PrivacyCenterSettings, PrivacyCenterSettingsProvider, type PrivacyCenterSignInChannels, type PrivacyCenterSignInLayout, type PrivacyCenterSignInSettings, type PrivacyCenterSignOutEvent, type PrivacyCenterSignOutReason, PrivacyCenterTheme, type PublicPrivacyCenterSettingsResponse, type Purpose, type PurposeItem, type RawPurposeWrapper, RedactoPrivacyCenter, type RedactoPrivacyCenterProps, RequestTypeEnum, type ResolvedPrivacyCenterSettings, type TokenExchangeResponse, type UpdateCorrectionDataItem, type UpdatePurpose, type UpdateRequestDetails, type UserConsentDetail, type UserConsentResponse, type UserDataRequest, type Workspace, checkAndRefreshAuth, compareEmails, createCaseRequest, createConsentClient, createOtpServer as createOtp, decodeJwtToken, ensureValidToken, exchangeTokenServer as exchangeToken, fetchActivities, fetchCaseHistory, fetchGroupPurposes, fetchProducts, fetchPublicPrivacyCenterSettings, fetchUserConsents, formatActivityType, getActivityTypeStatus, getCookieValue, getFormData, getInitialState, injectPCStyles, isJwtExpired, isUserAuthenticated, manageConsent, resolvePlaceholders, resolvePrivacyCenterSettings, setRefreshTokenCookie, signOutPrivacyCenter, useAuth, useBaseUrl, useCaseHistory, useInternalNavigation, usePrivacyCenterSettings, verifyOtpServer as verifyOtp };