UNPKG

@usercentrics/cmp-browser-sdk

Version:
358 lines (357 loc) 15.9 kB
import { AMP_CONSENT_ACTION, AMP_CONSENT_TYPE } from './services/AMP/enums/enums'; import { AriaLabelsTranslation, CoreJsonResponse, DpsJsonResponse, LegacySettings } from './services/Api/interfaces'; import { BaseCategory, BaseService, Category, Maybe, Service, UserDecision } from './services/SettingsV2/interfaces'; import { CONSENT_TYPE } from './services/DataFacade/enums'; import { WINDOW_GTM_ADVERTISER_CONSENT_MODE, WINDOW_MOBILE_SDK_NAMESPACE, WINDOW_UC_UI_DOMAINS, WINDOW_UETQ } from './constants'; import { DataTransferObject, TrackEventParameters } from './services/DataFacade/interfaces'; import { InitOptions, InitialUIValues, UI_LAYER, UcDomains } from './interfaces'; import { TCFData, TCFUserDecisions } from './services/SettingsV2/interfaces/TCF'; import Core from './services/SettingsV2/Core'; import { Data } from './services/SettingsV2/Data/interfaces'; import { GlobalFunction } from './services/SettingsV2/interfaces/Ccpa/interfaces.public'; import { Labels } from './services/SettingsV2/Labels/interfaces'; import { UI as SettingsUI } from './services/SettingsV2/UI/interfaces'; import { StorageService as StorageServiceInterface } from './services/Storage/interfaces'; import { TCF_DECISION_UI_LAYER } from './services/SettingsV2/enums/TCF'; import { UserCountryData } from './services/Location/interfaces'; import { WINDOW_API_NAME } from './services/SettingsV2/constants/Ccpa/constants'; export * from './services/DataFacade/enums/enums.public'; export * from './services/DataFacade/interfaces/interfaces.public'; export * from './services/Location/interfaces/interfaces.public'; export * from './services/SettingsV2/Core/interfaces'; export * from './services/SettingsV2/enums/Ccpa/enums.public'; export * from './services/SettingsV2/enums/enums.public'; export * from './services/SettingsV2/enums/TCF/enums.public'; export * from './services/SettingsV2/interfaces/interfaces.default.public'; export * from './services/SettingsV2/interfaces/interfaces'; export * from './services/SettingsV2/interfaces/TCF/interfaces.decisions.public'; export * from './services/SettingsV2/interfaces/TCF/interfaces.public'; export * from './services/SettingsV2/UI/interfaces'; export { AriaLabelsTranslation } from './services/Api/interfaces/interfaces.legacy'; export { CLOSE_OPTION } from './services/Api/enums/enums.legacy'; export { Data } from './services/SettingsV2/Data/interfaces'; export { default as Core } from './services/SettingsV2/Core'; export { CookieInformationLabels, DefaultGeneralLabels, DefaultLabels, Labels, TcfLabels as TcfUISettingsLabels, } from './services/SettingsV2/Labels/interfaces'; export { InitOptions, InitialUIValues, UI_LAYER, UI_VARIANT, UCError } from './interfaces'; export { DeviceStorage, Disclosure } from './services/Api/interfaces/interfaces.legacy'; export { isCcpaData, isCcpaLabels, isCcpaUI, isDefaultData, isDefaultLabels, isDefaultUI, isPrivacyButtonUI, isPrivacyButtonLabels, isNotPrivacyButtonLabels, isTcfData, isTcfLabels, isTcfUI, } from './services/SettingsV2/helpers'; declare global { interface Window { [WINDOW_UC_UI_DOMAINS]: UcDomains; [WINDOW_API_NAME]: GlobalFunction; [WINDOW_MOBILE_SDK_NAMESPACE]: { getUserSessionData: () => string; }; [WINDOW_GTM_ADVERTISER_CONSENT_MODE]?: boolean; [WINDOW_UETQ]: unknown[]; } } type SettingsId = string; type RulesetId = string; declare class Usercentrics { private ampInstance; private apiInstance; private botInstance; private controllerIdInstance; private dataFacadeInstance; private eventDispatcherInstance; private initOptions; private isConsentRequired; private languageInstance; private storageServiceInstance; private locationInstance; private settingsV2; private uiInstance; private domains; private rulesetRule; private gppData; /** * @param ucId - Your unique Usercentrics Id - settingsId or rulesetId * @param options - Additional options for initialization of the SDK. Note especially the createTcfApiStub property which is necessary for TCF UIs. */ constructor(ucId: SettingsId | RulesetId, options?: InitOptions); fetchCoreAndDps(): Promise<{ core: CoreJsonResponse; dps: DpsJsonResponse; }>; /** * Initializes the Usercentrics framework. This method *must* be called when loading your website. * The return value defines which UI layer & variant you should initially show for your users. * @category General */ init(): Promise<InitialUIValues>; /** * Mark all disclosed TCF vendors, purposes, specialFeatures as "consent given" and if applicable "legitimate interest given". * The SDK will store the consent information and trigger TCF events. * NOTE: This function will also mark the TCF UI as being closed! No need to call the setTCFUIAsClosed() method. * @param fromLayer - The layer from which the consent was given/denied (firstLayer vs. secondLayer). * @category TCF */ acceptAllForTCF(fromLayer: TCF_DECISION_UI_LAYER): Promise<void>; /** * Mark all services as "Consent given" (e.g. an "Accept All" button was clicked). * The SDK will store the consent information and trigger events depending on your Usercentrics Settings. * @param consentType - The manner in which the consent was given (explicit vs. implicit). Default: explicit. * @category Non-TCF */ acceptAllServices(consentType?: CONSENT_TYPE): Promise<void>; /** * Change the language. All upcoming SDK calls will return information in this language (e.g. getSettingsCore(),getCategories(), getTCFData(), ...). * Pay attention that the language needs to be set up in your Usercentrics Admin Interface before! * @param language - The language to switch to (ISO 639-1 code) * @category General */ changeLanguage(language: string): Promise<void>; /** * Mark all disclosed TCF vendors, purposes, specialFeatures as "consent denied" and if applicable "legitimate interest denied". * The SDK will store the consent information and trigger TCF events. * NOTE: This function will also mark the TCF UI as being closed! No need to call the setTCFUIAsClosed() method. * @param fromLayer - The layer from which the consent was given/denied (firstLayer vs. secondLayer). * @category TCF */ denyAllForTCF(fromLayer: TCF_DECISION_UI_LAYER): Promise<void>; /** * Mark all services as "Consent denied" (e.g. a "Deny All" button was clicked). * *Essential* services will still be marked as "Consent given". * The SDK will store the consent information and trigger events depending on your Usercentrics Settings. * @param consentType - The manner in which the consent was denied (explicit vs. implicit). Default: explicit. * @category Non-TCF */ denyAllServices(consentType?: CONSENT_TYPE): Promise<void>; /** * Retrieve boolean, that can be used to decide if the user is inside the EU or not. * @category Non-TCF */ fetchIsUserInEU(): Promise<boolean>; /** * Retrieve the user's country information. * @category Non-TCF */ fetchUserCountry(): Promise<UserCountryData>; /** * Retrieve ab testing variant in use. */ getAbTestVariant(): string; /** * Retrieve the categories and their base services info to display this information in your UI. * @category Non-TCF */ getCategoriesBaseInfo(): BaseCategory[]; /** * Retrieve the categories and their full services info to display this information in your UI. * @category Non-TCF */ getCategoriesFullInfo(): Promise<Category[]>; /** * Retrieve optout status of ccpa * @category CCPA */ getCcpaOptOutStatus(): boolean; /** * Retrieve explicit notice status of ccpa * @category CCPA */ getCcpaExplicitNoticeStatus(): boolean; /** * Set optout status in cookie for user and save string in backend * @param isOptedOut - User's decision on all consents * @category CCPA */ saveOptOutForCcpa(isOptedOut: boolean, consentType?: CONSENT_TYPE): Promise<void>; /** * Don't perform any changes on consent level. Stores the timestamp, the privacy strings and sets userActionPerformed * @category CCPA */ saveDefaultForCcpa(): Promise<void>; /** * Retrieve the controllerId, that's generated for the user. * @category General */ getControllerId(): string; /** * Retrieve all services without fetching the aggregator. * @category Non-TCF */ getServicesBaseInfo(): BaseService[]; /** * Retrieve all services fetching the aggregator if necessary. * @category Non-TCF */ getServicesFullInfo(): Promise<Service[]>; /** * Retrieve settings Core * @category General */ getSettingsCore(): Core; /** * Retrieve settings Labels * @category General */ getSettingsLabels(): Labels; /** * Retrieve settings Data * @category General */ getSettingsData(): Maybe<Data>; /** * Retrieve settings Data * @category General */ getSettingsUI(): Maybe<SettingsUI>; /** * Retrieve aria labels * @category General */ getAriaLabels(): AriaLabelsTranslation; /** * Retrieve all TCF data, including consents and descriptions for TCF vendors, purposes, special purposes, features, special features, and stacks * Only vendors and stacks that have been selected in the admin interface will be returned. Only purposes, features, special features, special purposes * that are used by one or more of the selected vendors (and/or selected stacks) will re returned. * @category TCF */ getTCFData(): TCFData | null; /** * A method to return TCF disclosed vendors as an encoded segment * @category TCF * * @returns {(string|undefined)} the TCF disclosed vendors segment or undefined */ getTCFDisclosedVendorsSegmentString(): string | undefined; /** * Inject a tcString * @category TCF * * @param tcString the tcString to inject * * @returns boolean true if injected successfully, false otherwise */ injectTCString(tcString: string): Promise<boolean>; /** * Mark the TCF UI as being closed and trigger related TCF events. * NOTE: Remember to call this ALWAYS when an end-user closes your TCF UI without making any changes! * @category TCF */ setTCFUIAsClosed(): Promise<void>; /** * Mark the GPP Display as being hidden * @category GPP */ setGppDisplayHidden(): Promise<void>; /** * Mark the GPP Display as being visible * @category GPP */ setGppDisplayVisible(): Promise<void>; /** * Mark the TCF UI as being open and trigger related TCF events. * NOTE: Remember to call this ALWAYS when an end-user opens up your TCF UI! * @category TCF */ setTCFUIAsOpen(): Promise<void>; /** * Mark given TCF vendors, purposes, specialFeatures as "consent given / denied" and if applicable "legitimate interest given denied". * The SDK will store the consent information and trigger TCF events. * NOTE: This function will also mark the TCF UI as being closed! No need to call the setTCFUIAsClosed() method. * @param decisions - The user's decisions for individual TCF vendors, purposes, specialFeatures (see interface definition for details) * @param fromLayer - The layer from which the consent was given/denied (firstLayer vs. secondLayer). * @category TCF */ updateChoicesForTCF(decisions: TCFUserDecisions, fromLayer: TCF_DECISION_UI_LAYER): Promise<void>; /** * Return if the user accepted all consents * @category General */ areAllConsentsAccepted(): boolean; /** * Restore a session for an end user with the given controllerId. * @param controllerId - User's generated controllerId. NOTE: Always use a controllerId provided by the SDK. * @category Non-TCF */ restoreUserSession(controllerId: string): Promise<void>; /** * Clear the storage from all buckets */ clearStorage(): Promise<void>; /** * This method sends the message to the parent iframe to communicate the user's decisions * @param type the AMP consent type * @param action the AMP consent action */ postMessageAmp(type: AMP_CONSENT_TYPE, action: AMP_CONSENT_ACTION, initialHeight?: string): Promise<void>; /** * Accept all services for AMP */ acceptAllAmp(): Promise<void>; /** * Reject all services for AMP */ denyAllAmp(): Promise<void>; /** * Save current TCF data based on user decisions according to the rules below: * - if there are only TCF vendors and no non-IAB-service - we signal accept * - if the are non-IAB services and ALL of them have a consent we signal accept * - if the are non-IAB services and at least ONE of them has NO consent we signal reject * @param tcfUserDecisions TCF user decisions from the UI * @param userDecisions User decision from the UI */ saveTCFDataAmp(userDecisions: UserDecision[]): Promise<void>; /** * Dismiss UI for AMP - this closes the AMP UI and also don't change the consent. * If a consent has already been given, AMP uses that as the current state. */ dismissAmp(): Promise<void>; /** * Enter fullscreen mode on AMP UI */ enterFullscreenAmp(): Promise<void>; /** * Sends the ready message to display the AMP UI */ uiReadyAmp(): Promise<void>; /** * Set user action performed. Only needed if a user action is performed without the need for an explicit consent (e.g. CCPA first layer implementation) * @category General */ saveUserActionPerformed(): Promise<void>; /** * Mark given services as "Consent given / denied". * *Essential* services will still be marked as "Consent given". * The SDK will store the consent information and trigger events depending on your Usercentrics Settings. * @param decisions - The user's decisions for individual services (see interface definition for details) * @param consentType - The manner in which the consent was given/denied (explicit vs. implicit). Default: explicit. * @category Non-TCF */ updateServices(decisions: UserDecision[], consentType?: CONSENT_TYPE): Promise<void>; updateLayer(activeLayer: UI_LAYER): Promise<void>; /** * Fetch service data from the aggregator if the data wasn't fetched already */ loadServices(): Promise<void>; loadSettings(): Promise<LegacySettings>; updateStorage(previousServices: StorageServiceInterface[], storageDataTransferObjects?: DataTransferObject[], isRestoreSession?: boolean): Promise<void>; /** * Needed for enabling dynamically loaded script. */ enableScriptsForServicesWithConsent(): void; setTrackingPixel(trackEventParameters: TrackEventParameters): void; private addSessionTrackingPixel; private processStorageServicesAndSettings; private enableServicesScripts; private setIsConsentRequired; private isCurrentDomainAllowed; /** * Checks if consent is required (not given yet/resurface of banner) * @category General * * @returns {(boolean|null)} true: consent is required, false: consent is not required, null: consent requirement is not known (yet) */ getIsConsentRequired(): boolean | null; /** * Return the number of third party ervices * @category General * * @returns {number} the count of third party services */ getThirdPartyCount(): number; } export default Usercentrics;