@usercentrics/cmp-browser-sdk
Version:
Usercentrics CMP Browser SDK
127 lines (126 loc) • 4.76 kB
TypeScript
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';