UNPKG

@usercentrics/cmp-browser-sdk

Version:
127 lines (126 loc) 4.76 kB
import { ACMVendor, IdAndName, TCFData, TCFUserDecisions } from '../interfaces/TCF'; import { Consent, DataDistribution, Language, ProcessingCompany, ResurfaceOptions, TCFChangedPurposes, URLs } from '../interfaces'; import { DeviceStorage, LegacyTCF2 } from '../../Api/interfaces'; import { LEGACY_CCPA_REGION } from '../../Api/enums'; import { STRING_CHARACTER } from '../enums/Ccpa/enums'; import { Service } from '../interfaces/interfaces'; import { TCF_DECISION_UI_LAYER } from '../enums/TCF'; export type TcfPolicyVersion = 2 | 4 | 5; export interface ExtendedServiceData { cookieMaxAgeSeconds: number | null; cookieRefresh: boolean | null; dataCollected: string[]; dataDistribution: DataDistribution | null; dataProtectionOfficer: string | null; dataPurposes: string[]; dataRecipients: string[]; description: string; deviceStorage: DeviceStorage | null; deviceStorageDisclosureUrl: string | null; language: Language | null; processingCompany: ProcessingCompany | null; retentionPeriodDescription: string | null; technologiesUsed: string[]; urls: URLs | null; usesCookies: boolean | null; usesNonCookieAccess: boolean | null; } export interface BaseServiceData { categorySlug: string; consent: Consent; fetchSubServices: () => Promise<Service[]>; id: string; isEssential: boolean; isHidden: boolean; processorId: string; subServices: ServiceData[]; subServicesLength: number; usesThirdCountry: boolean; version: string; } export type ServiceData = BaseServiceData & ExtendedServiceData; export type ServiceBasic = Pick<Service, 'consent' | 'id' | 'name' | 'processorId' | 'language' | 'version' | 'categorySlug'>; export interface BaseCategoryData { isEssential: boolean; isHidden: boolean; services: BaseServiceData[]; slug: string; } export interface CategoryData { isEssential: boolean; isHidden: boolean; services: ServiceData[]; slug: string; } export interface DefaultData { categories: CategoryData[]; controllerId: string; } export interface CcpaData extends DefaultData { explicitDeny: boolean; iabAgreementExists: boolean; isActive: boolean; isExplicitConsented: boolean; isOptedOut?: boolean; region: LEGACY_CCPA_REGION; reshowAfterDays: number; showOnPageLoad: boolean; legalFramework: LegalFramework; getIsOptedOut: () => boolean; getExplicitNotice: () => boolean; setCcpaStorage: (isOptedOut: boolean, isNoticeGiven?: STRING_CHARACTER) => void; setIsOptedOut: (optedOut: boolean | string) => void; } export interface TcfData extends DefaultData { acmData: AcmData; acceptAllDisclosed: (fromLayer: TCF_DECISION_UI_LAYER) => Promise<void>; advertiserConsentModeEnabled?: boolean; areAllPurposesAccepted: () => boolean; areAllVendorsAccepted: () => boolean; changedPurposes: TCFChangedPurposes; changeLanguage: (language: string, tcfSettings?: LegacyTCF2) => Promise<void>; cmpId: number; cmpVersion: number; consensuScriptPath: string; consensuSubdomain: string; denyAllDisclosed: (fromLayer: TCF_DECISION_UI_LAYER) => Promise<void>; disabledSpecialFeatures: number[]; gdprApplies: boolean; getGdprApplies: () => Promise<boolean>; getSelectedVendorsIncludeNonDisclosed: () => boolean; getTCFData: () => TCFData; getTCString: () => string; getTCFDisclosedVendorsSegmentString: () => string; getVendorsCount: () => number; hideLegitimateInterestToggles: boolean; init: (isEuMode: boolean) => Promise<void>; injectTCString: (tcString: string) => Promise<boolean>; publisherCountryCode: string; purposeOneTreatment: boolean; resetTcf: () => void; resurfaceOptions: ResurfaceOptions; setUIAsClosed: () => Promise<void>; setUIAsOpen: () => Promise<void>; shouldResurfaceUI: () => boolean; stackIds: number[]; tcfv2HistoryDisabled: boolean; updateChoices: (decisions: TCFUserDecisions, fromLayer: TCF_DECISION_UI_LAYER) => Promise<void>; updateControllerId: (value: string) => void; useGranularChoice: boolean; vendorIds: number[]; vendorIdsOutsideEUList: number[]; } export type Data = DefaultData | CcpaData | TcfData; export interface AcmData { isEnabled: boolean; vendorIds: number[]; vendors?: ACMVendor[]; vendorsPurposes: IdAndName[]; } export interface GppDataInterface { setCmpSignalReady: () => Promise<void>; setCmpStatusLoaded: () => Promise<void>; setCmpDisplayHidden: () => Promise<void>; setCmpDisplayVisible: () => Promise<void>; } export type LegalFramework = 'tcfeuv2' | 'tcfcav1' | 'uspv1' | 'usnat' | 'usca' | 'usva' | 'usco' | 'usut' | 'usct';