@usercentrics/react-native-sdk 2.23.2 → 2.24.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.
Files changed (92) hide show
  1. package/README.md +5 -5
  2. package/android/build-legacy.gradle +11 -1
  3. package/android/build.gradle.kts +44 -14
  4. package/android/gradle.properties +2 -0
  5. package/android/settings.gradle.kts +1 -1
  6. package/android/src/androidTest/java/com/usercentrics/{reactnativemodule → reactnative}/RNUsercentricsModuleTest.kt +5 -5
  7. package/android/src/androidTest/java/com/usercentrics/reactnative/fake/FakePromise.kt +73 -0
  8. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/RNUsercentricsModule.kt +3 -3
  9. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/RNUsercentricsModuleSpec.kt +1 -1
  10. package/android/src/main/java/com/usercentrics/reactnative/RNUsercentricsPackage.kt +51 -0
  11. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/ReactContextProvider.kt +1 -1
  12. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/ReactContextProviderImpl.kt +1 -1
  13. package/android/src/main/java/com/usercentrics/reactnative/UCRNFlag.kt +4 -0
  14. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/api/UsercentricsProxy.kt +2 -2
  15. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/BannerFontExtensions.kt +1 -1
  16. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/BannerSettingsExtensions.kt +1 -1
  17. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/CCPADataExtensions.kt +1 -1
  18. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/ConsentDisclosureSerializer.kt +1 -1
  19. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/ReadableMapExtensions.kt +1 -1
  20. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/TCFDataExtensions.kt +1 -1
  21. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/UserDecisionExtensions.kt +1 -1
  22. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/UserOptionsExtensions.kt +1 -1
  23. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/UsercentricsCMPDataExtensions.kt +1 -1
  24. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/UsercentricsConsentUserResponseExtensions.kt +1 -1
  25. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/UsercentricsReadyStatusExtensions.kt +1 -1
  26. package/android/src/main/java/com/usercentrics/{reactnativeusercentrics → reactnative}/extensions/UsercentricsServiceConsentExtensions.kt +1 -1
  27. package/android/src/main/jni/CMakeLists.txt +85 -0
  28. package/android/src/main/jni/RNUsercentricsModule.cpp +21 -0
  29. package/android/src/main/jni/rn_usercentrics.cpp +22 -0
  30. package/android/src/test/java/com/usercentrics/reactnative/RNUsercentricsModuleTest.kt +159 -0
  31. package/android/src/test/java/com/usercentrics/reactnative/fake/FakePromise.kt +73 -0
  32. package/ios/Extensions/BannerSettings+Dict.swift +1 -0
  33. package/ios/Extensions/UIColor+Extensions.swift +1 -1
  34. package/ios/Extensions/UIImage+UsercentricsLogoDict.swift +1 -0
  35. package/ios/RNUsercentricsModule.swift +1 -0
  36. package/lib/NativeUsercentrics.d.ts +1 -1
  37. package/lib/NativeUsercentrics.js +10 -2
  38. package/lib/NativeUsercentrics.js.map +1 -1
  39. package/lib/fabric/NativeUsercentricsModule.d.ts +30 -0
  40. package/lib/fabric/NativeUsercentricsModule.js +3 -0
  41. package/lib/fabric/NativeUsercentricsModule.js.map +1 -0
  42. package/package.json +108 -96
  43. package/react-native.config.js +15 -0
  44. package/src/NativeUsercentrics.ts +75 -0
  45. package/src/Usercentrics.tsx +145 -0
  46. package/src/__tests__/index.test.ts +476 -0
  47. package/src/__tests__/mocks.ts +402 -0
  48. package/src/fabric/NativeUsercentricsModule.ts +51 -0
  49. package/src/index.tsx +2 -0
  50. package/src/models/AdditionalConsentModeData.tsx +33 -0
  51. package/src/models/BannerSettings.tsx +117 -0
  52. package/src/models/CCPAData.tsx +32 -0
  53. package/src/models/CCPASettings.tsx +49 -0
  54. package/src/models/ConsentDisclosureObject.tsx +47 -0
  55. package/src/models/FirstLayerSettings.tsx +185 -0
  56. package/src/models/GeolocationRuleset.tsx +10 -0
  57. package/src/models/LegalBasisLocalization.tsx +100 -0
  58. package/src/models/NetworkMode.tsx +5 -0
  59. package/src/models/SecondLayerSettings.tsx +12 -0
  60. package/src/models/TCF2Settings.tsx +209 -0
  61. package/src/models/TCFData.tsx +297 -0
  62. package/src/models/TCFDecisionUILayer.tsx +5 -0
  63. package/src/models/TCFUserDecisions.tsx +73 -0
  64. package/src/models/UserDecision.tsx +10 -0
  65. package/src/models/UsercentricsAnalyticsEventType.tsx +15 -0
  66. package/src/models/UsercentricsCMPData.tsx +38 -0
  67. package/src/models/UsercentricsCategory.tsx +26 -0
  68. package/src/models/UsercentricsConsentType.tsx +5 -0
  69. package/src/models/UsercentricsConsentUserResponse.tsx +14 -0
  70. package/src/models/UsercentricsLabels.tsx +276 -0
  71. package/src/models/UsercentricsLocation.tsx +32 -0
  72. package/src/models/UsercentricsLoggerLevel.tsx +7 -0
  73. package/src/models/UsercentricsOptions.tsx +45 -0
  74. package/src/models/UsercentricsReadyStatus.tsx +20 -0
  75. package/src/models/UsercentricsService.tsx +134 -0
  76. package/src/models/UsercentricsServiceConsent.tsx +37 -0
  77. package/src/models/UsercentricsSettings.tsx +177 -0
  78. package/src/models/UsercentricsUserInteraction.tsx +7 -0
  79. package/src/models/UsercentricsVariant.tsx +6 -0
  80. package/src/models/index.tsx +29 -0
  81. package/android/src/androidTest/java/com/usercentrics/reactnativemodule/fake/FakePromise.kt +0 -67
  82. package/android/src/main/java/com/usercentrics/reactnativeusercentrics/RNUsercentricsPackage.kt +0 -22
  83. package/android/src/main/java/com/usercentrics/reactnativeusercentrics/UCRNFlag.kt +0 -4
  84. /package/android/src/androidTest/java/com/usercentrics/{reactnativemodule → reactnative}/api/FakeUsercentricsProxy.kt +0 -0
  85. /package/android/src/androidTest/java/com/usercentrics/{reactnativemodule → reactnative}/mock/GetCMPDataMock.kt +0 -0
  86. /package/android/src/androidTest/java/com/usercentrics/{reactnativemodule → reactnative}/mock/GetConsentsMock.kt +0 -0
  87. /package/android/src/androidTest/java/com/usercentrics/{reactnativemodule → reactnative}/mock/GetTCFDataMock.kt +0 -0
  88. /package/android/src/androidTest/java/com/usercentrics/{reactnativemodule → reactnative}/mock/GetUSPDataMock.kt +0 -0
  89. /package/android/src/androidTest/java/com/usercentrics/{reactnativemodule → reactnative}/mock/GetUserSessionDataMock.kt +0 -0
  90. /package/android/src/androidTest/java/com/usercentrics/{reactnativemodule → reactnative}/mock/ReactContextProviderMock.kt +0 -0
  91. /package/android/src/androidTest/java/com/usercentrics/{reactnativemodule → reactnative}/mock/SaveDecisionsForTCFMock.kt +0 -0
  92. /package/android/src/androidTest/java/com/usercentrics/{reactnativemodule → reactnative}/mock/SaveDecisionsMock.kt +0 -0
@@ -0,0 +1,47 @@
1
+ export class ConsentDisclosureObject {
2
+
3
+ disclosures: [ConsentDisclosure]
4
+
5
+ constructor(disclosures: [ConsentDisclosure]) {
6
+ this.disclosures = disclosures
7
+ }
8
+ }
9
+
10
+ export class ConsentDisclosure {
11
+
12
+ identifier?: string
13
+ type?: ConsentDisclosureType
14
+ name?: string
15
+ maxAgeSeconds?: number
16
+ cookieRefresh: boolean
17
+ purposes: [number]
18
+ domain?: string
19
+ description?: string
20
+
21
+ constructor(
22
+ cookieRefresh: boolean,
23
+ purposes: [number],
24
+ identifier?: string,
25
+ type?: ConsentDisclosureType,
26
+ name?: string,
27
+ maxAgeSeconds?: number,
28
+ domain?: string,
29
+ description?: string,
30
+ ) {
31
+ this.identifier = identifier
32
+ this.type = type
33
+ this.name = name
34
+ this.maxAgeSeconds = maxAgeSeconds
35
+ this.cookieRefresh = cookieRefresh
36
+ this.purposes = purposes
37
+ this.domain = domain
38
+ this.description = description
39
+ }
40
+ }
41
+
42
+ export enum ConsentDisclosureType {
43
+
44
+ cookie = 0,
45
+ web = 1,
46
+ app = 2
47
+ }
@@ -0,0 +1,185 @@
1
+ import {BannerLogo} from ".";
2
+
3
+ export class FirstLayerStyleSettings {
4
+
5
+ layout?: UsercentricsLayout;
6
+ headerImage?: HeaderImageSettings;
7
+ title?: TitleSettings;
8
+ message?: MessageSettings;
9
+ buttonLayout?: ButtonLayout;
10
+ backgroundColorHex?: String;
11
+ cornerRadius?: Number;
12
+ overlayColorHex?: String;
13
+
14
+ constructor(layout?: UsercentricsLayout,
15
+ headerImage?: HeaderImageSettings,
16
+ title?: TitleSettings,
17
+ message?: MessageSettings,
18
+ buttonLayout?: ButtonLayout,
19
+ backgroundColorHex?: String,
20
+ cornerRadius?: Number,
21
+ overlayColorHex?: String
22
+ ) {
23
+ this.layout = layout
24
+ this.headerImage = headerImage;
25
+ this.title = title;
26
+ this.message = message;
27
+ this.buttonLayout = buttonLayout;
28
+ this.backgroundColorHex = backgroundColorHex;
29
+ this.cornerRadius = cornerRadius;
30
+ this.overlayColorHex = overlayColorHex;
31
+ }
32
+ }
33
+
34
+ export class HeaderImageSettings {
35
+
36
+ isExtended: Boolean;
37
+ isHidden: Boolean;
38
+ image?: BannerLogo;
39
+ height?: Number;
40
+ alignment?: SectionAlignment
41
+
42
+ private constructor(isExtended: Boolean,
43
+ isHidden: Boolean,
44
+ image?: BannerLogo,
45
+ height?: Number,
46
+ alignment?: SectionAlignment) {
47
+ this.isExtended = isExtended;
48
+ this.isHidden = isHidden;
49
+ this.image = image;
50
+ this.height = height;
51
+ this.alignment = alignment;
52
+ }
53
+
54
+ static extended(image: BannerLogo): HeaderImageSettings {
55
+ return new HeaderImageSettings(true, false, image)
56
+ }
57
+
58
+ static logo(image: BannerLogo, height?: Number, alignment?: SectionAlignment): HeaderImageSettings {
59
+ return new HeaderImageSettings(false, false, image, height, alignment)
60
+ }
61
+
62
+ static hidden(): HeaderImageSettings {
63
+ return new HeaderImageSettings(false, true)
64
+ }
65
+ }
66
+
67
+ export class TitleSettings {
68
+
69
+ fontName?: string;
70
+ textSize?: number;
71
+ textColorHex?: String;
72
+ textAlignment?: SectionAlignment;
73
+
74
+ constructor(fontName?: string, textSize?: number, textColorHex?: String, textAlignment?: SectionAlignment) {
75
+ this.fontName = fontName;
76
+ this.textSize = textSize;
77
+ this.textColorHex = textColorHex;
78
+ this.textAlignment = textAlignment;
79
+ }
80
+ }
81
+
82
+ export class MessageSettings {
83
+
84
+ fontName?: string;
85
+ textSize?: number;
86
+ textColorHex?: String;
87
+ textAlignment?: SectionAlignment;
88
+ linkTextColorHex?: String;
89
+ linkTextUnderline?: Boolean;
90
+
91
+ constructor(fontName?: string,
92
+ textSize?: number,
93
+ textColorHex?: String,
94
+ textAlignment?: SectionAlignment,
95
+ linkTextColorHex?: String,
96
+ linkTextUnderline?: Boolean) {
97
+ this.fontName = fontName;
98
+ this.textSize = textSize;
99
+ this.textColorHex = textColorHex;
100
+ this.textAlignment = textAlignment;
101
+ this.linkTextColorHex = linkTextColorHex;
102
+ this.linkTextUnderline = linkTextUnderline;
103
+ }
104
+ }
105
+
106
+ export class ButtonLayout {
107
+
108
+ buttons: ButtonSettings[][]
109
+ layout: InternalButtonLayout
110
+
111
+ private constructor(buttons: ButtonSettings[][], layout: InternalButtonLayout) {
112
+ this.buttons = buttons;
113
+ this.layout = layout;
114
+ }
115
+
116
+ static row(buttons: ButtonSettings[]): ButtonLayout {
117
+ return new ButtonLayout([buttons], InternalButtonLayout.row)
118
+ }
119
+
120
+ static column(buttons: ButtonSettings[]): ButtonLayout {
121
+ return new ButtonLayout([buttons], InternalButtonLayout.column)
122
+ }
123
+
124
+ static grid(buttons: ButtonSettings[][]): ButtonLayout {
125
+ return new ButtonLayout(buttons, InternalButtonLayout.grid)
126
+ }
127
+ }
128
+
129
+ enum InternalButtonLayout {
130
+ row = "ROW",
131
+ grid = "GRID",
132
+ column = "COLUMN"
133
+ }
134
+
135
+ export class ButtonSettings {
136
+
137
+ buttonType: ButtonType;
138
+ fontName?: string;
139
+ textSize?: number;
140
+ textColorHex?: String;
141
+ backgroundColorHex?: String;
142
+ cornerRadius?: number;
143
+
144
+ // Affects only Android
145
+ isAllCaps?: Boolean
146
+
147
+ constructor(buttonType: ButtonType,
148
+ fontName?: string,
149
+ textSize?: number,
150
+ textColorHex?: String,
151
+ backgroundColorHex?: String,
152
+ cornerRadius?: number,
153
+ isAllCaps?: Boolean) {
154
+ this.buttonType = buttonType
155
+ this.fontName = fontName
156
+ this.textSize = textSize
157
+ this.textColorHex = textColorHex
158
+ this.backgroundColorHex = backgroundColorHex
159
+ this.cornerRadius = cornerRadius
160
+ this.isAllCaps = isAllCaps
161
+ }
162
+ }
163
+
164
+ export enum ButtonType {
165
+
166
+ acceptAll = "ACCEPT_ALL",
167
+ denyAll = "DENY_ALL",
168
+ more = "MORE",
169
+ save = "SAVE"
170
+ }
171
+
172
+ export enum SectionAlignment {
173
+
174
+ left = "START",
175
+ right = "END",
176
+ center = "CENTER"
177
+ }
178
+
179
+ export enum UsercentricsLayout {
180
+
181
+ full = "FULL",
182
+ sheet = "SHEET",
183
+ popupCenter = "POPUP_CENTER",
184
+ popupBottom = "POPUP_BOTTOM"
185
+ }
@@ -0,0 +1,10 @@
1
+ export class GeolocationRuleset {
2
+
3
+ activeSettingsId: string;
4
+ bannerRequiredAtLocation: boolean;
5
+
6
+ constructor(activeSettingsId: string, bannerRequiredAtLocation: boolean) {
7
+ this.activeSettingsId = activeSettingsId
8
+ this.bannerRequiredAtLocation = bannerRequiredAtLocation
9
+ }
10
+ }
@@ -0,0 +1,100 @@
1
+ export class LegalBasisLocalization {
2
+ labelsAria?: TranslationAriaLabels
3
+ data: Map<string, string>
4
+
5
+ constructor(
6
+ data: Map<string, string>,
7
+ labelsAria?: TranslationAriaLabels
8
+ ) {
9
+ this.data = data
10
+ this.labelsAria = labelsAria
11
+ }
12
+ }
13
+
14
+ export class TranslationAriaLabels {
15
+ acceptAllButton?: string
16
+ ccpaButton?: string
17
+ ccpaMoreInformation?: string
18
+ closeButton?: string
19
+ collapse?: string
20
+ cookiePolicyButton?: string
21
+ copyControllerId?: string
22
+ denyAllButton?: string
23
+ expand?: string
24
+ fullscreenButton?: string
25
+ imprintButton?: string
26
+ languageSelector?: string
27
+ privacyButton?: string
28
+ privacyPolicyButton?: string
29
+ saveButton?: string
30
+ serviceInCategoryDetails?: string
31
+ servicesInCategory?: string
32
+ tabButton?: string
33
+ usercentricsCMPButtons?: string
34
+ usercentricsCMPContent?: string
35
+ usercentricsCMPHeader?: string
36
+ usercentricsCMPUI?: string
37
+ usercentricsCard?: string
38
+ usercentricsList?: string
39
+ vendorConsentToggle?: string
40
+ vendorDetailedStorageInformation?: string
41
+ vendorLegIntToggle?: string
42
+
43
+ constructor(
44
+ acceptAllButton?: string,
45
+ ccpaButton?: string,
46
+ ccpaMoreInformation?: string,
47
+ closeButton?: string,
48
+ collapse?: string,
49
+ cookiePolicyButton?: string,
50
+ copyControllerId?: string,
51
+ denyAllButton?: string,
52
+ expand?: string,
53
+ fullscreenButton?: string,
54
+ imprintButton?: string,
55
+ languageSelector?: string,
56
+ privacyButton?: string,
57
+ privacyPolicyButton?: string,
58
+ saveButton?: string,
59
+ serviceInCategoryDetails?: string,
60
+ servicesInCategory?: string,
61
+ tabButton?: string,
62
+ usercentricsCMPButtons?: string,
63
+ usercentricsCMPContent?: string,
64
+ usercentricsCMPHeader?: string,
65
+ usercentricsCMPUI?: string,
66
+ usercentricsCard?: string,
67
+ usercentricsList?: string,
68
+ vendorConsentToggle?: string,
69
+ vendorDetailedStorageInformation?: string,
70
+ vendorLegIntToggle?: string
71
+ ) {
72
+ this.acceptAllButton = acceptAllButton
73
+ this.ccpaButton = ccpaButton
74
+ this.ccpaMoreInformation = ccpaMoreInformation;
75
+ this.closeButton = closeButton
76
+ this.collapse = collapse
77
+ this.cookiePolicyButton = cookiePolicyButton
78
+ this.copyControllerId = copyControllerId
79
+ this.denyAllButton = denyAllButton
80
+ this.expand = expand
81
+ this.fullscreenButton = fullscreenButton
82
+ this.imprintButton = imprintButton
83
+ this.languageSelector = languageSelector
84
+ this.privacyButton = privacyButton
85
+ this.privacyPolicyButton = privacyPolicyButton
86
+ this.saveButton = saveButton
87
+ this.serviceInCategoryDetails = serviceInCategoryDetails
88
+ this.servicesInCategory = servicesInCategory
89
+ this.tabButton = tabButton
90
+ this.usercentricsCMPButtons = usercentricsCMPButtons
91
+ this.usercentricsCMPContent = usercentricsCMPContent
92
+ this.usercentricsCMPHeader = usercentricsCMPHeader
93
+ this.usercentricsCMPUI = usercentricsCMPUI
94
+ this.usercentricsCard = usercentricsCard
95
+ this.usercentricsList = usercentricsList
96
+ this.vendorConsentToggle = vendorConsentToggle
97
+ this.vendorDetailedStorageInformation = vendorDetailedStorageInformation
98
+ this.vendorLegIntToggle = vendorLegIntToggle
99
+ }
100
+ }
@@ -0,0 +1,5 @@
1
+ export enum NetworkMode {
2
+
3
+ world = 0,
4
+ eu = 1
5
+ }
@@ -0,0 +1,12 @@
1
+ import {ButtonLayout} from ".";
2
+
3
+ export class SecondLayerStyleSettings {
4
+
5
+ buttonLayout?: ButtonLayout;
6
+ showCloseButton?: Boolean;
7
+
8
+ constructor(buttonLayout?: ButtonLayout, showCloseButton?: Boolean) {
9
+ this.buttonLayout = buttonLayout;
10
+ this.showCloseButton = showCloseButton;
11
+ }
12
+ }
@@ -0,0 +1,209 @@
1
+ export class TCF2Settings {
2
+ firstLayerTitle: string
3
+ secondLayerTitle: string
4
+ tabsPurposeLabel: string
5
+ tabsVendorsLabel: string
6
+ labelsFeatures: string
7
+ labelsIabVendors: string
8
+ labelsNonIabPurposes: string
9
+ labelsNonIabVendors: string
10
+ labelsPurposes: string
11
+ vendorFeatures: string
12
+ vendorLegitimateInterestPurposes: string
13
+ vendorPurpose: string
14
+ vendorSpecialFeatures: string
15
+ vendorSpecialPurposes: string
16
+ togglesConsentToggleLabel: string
17
+ togglesLegIntToggleLabel: string
18
+ buttonsAcceptAllLabel: string
19
+ buttonsDenyAllLabel: string
20
+ buttonsSaveLabel: string
21
+ linksManageSettingsLabel: string
22
+ linksVendorListLinkLabel: string
23
+ cmpId: number
24
+ cmpVersion: number
25
+ firstLayerHideToggles: boolean
26
+ secondLayerHideToggles: boolean
27
+ hideLegitimateInterestToggles: boolean
28
+ firstLayerHideButtonDeny?: boolean
29
+ secondLayerHideButtonDeny: boolean
30
+ publisherCountryCode: string
31
+ purposeOneTreatment: boolean
32
+ selectedVendorIds: [number]
33
+ gdprApplies: boolean
34
+ selectedStacks: [number]
35
+ disabledSpecialFeatures: [number]
36
+ firstLayerShowDescriptions: boolean
37
+ hideNonIabOnFirstLayer: boolean
38
+ resurfacePeriodEnded: boolean
39
+ resurfacePurposeChanged: boolean
40
+ resurfaceVendorAdded: boolean
41
+ firstLayerDescription: string
42
+ firstLayerAdditionalInfo: string
43
+ secondLayerDescription: string
44
+ togglesSpecialFeaturesToggleOn: string
45
+ togglesSpecialFeaturesToggleOff: string
46
+ appLayerNoteResurface: string
47
+ firstLayerNoteResurface: string
48
+ categoriesOfDataLabel: string
49
+ dataRetentionPeriodLabel: string
50
+ legitimateInterestLabel: string
51
+ version: string
52
+ examplesLabel: string
53
+ firstLayerMobileVariant?: FirstLayerMobileVariant
54
+ showDataSharedOutsideEUText: boolean
55
+ dataSharedOutsideEUText?: string
56
+ vendorIdsOutsideEUList: [number]
57
+ scope: TCF2Scope
58
+ changedPurposes: TCF2ChangedPurposes
59
+ acmV2Enabled: boolean
60
+ selectedATPIds: number[]
61
+
62
+ constructor(
63
+ firstLayerTitle: string,
64
+ secondLayerTitle: string,
65
+ tabsPurposeLabel: string,
66
+ tabsVendorsLabel: string,
67
+ labelsFeatures: string,
68
+ labelsIabVendors: string,
69
+ labelsNonIabPurposes: string,
70
+ labelsNonIabVendors: string,
71
+ labelsPurposes: string,
72
+ vendorFeatures: string,
73
+ vendorLegitimateInterestPurposes: string,
74
+ vendorPurpose: string,
75
+ vendorSpecialFeatures: string,
76
+ vendorSpecialPurposes: string,
77
+ togglesConsentToggleLabel: string,
78
+ togglesLegIntToggleLabel: string,
79
+ buttonsAcceptAllLabel: string,
80
+ buttonsDenyAllLabel: string,
81
+ buttonsSaveLabel: string,
82
+ linksManageSettingsLabel: string,
83
+ linksVendorListLinkLabel: string,
84
+ cmpId: number,
85
+ cmpVersion: number,
86
+ firstLayerHideToggles: boolean,
87
+ secondLayerHideToggles: boolean,
88
+ hideLegitimateInterestToggles: boolean,
89
+ secondLayerHideButtonDeny: boolean,
90
+ publisherCountryCode: string,
91
+ purposeOneTreatment: boolean,
92
+ selectedVendorIds: [number],
93
+ gdprApplies: boolean,
94
+ selectedStacks: [number],
95
+ disabledSpecialFeatures: [number],
96
+ firstLayerShowDescriptions: boolean,
97
+ hideNonIabOnFirstLayer: boolean,
98
+ resurfacePeriodEnded: boolean,
99
+ resurfacePurposeChanged: boolean,
100
+ resurfaceVendorAdded: boolean,
101
+ firstLayerDescription: string,
102
+ firstLayerAdditionalInfo: string,
103
+ secondLayerDescription: string,
104
+ togglesSpecialFeaturesToggleOn: string,
105
+ togglesSpecialFeaturesToggleOff: string,
106
+ appLayerNoteResurface: string,
107
+ firstLayerNoteResurface: string,
108
+ categoriesOfDataLabel: string,
109
+ dataRetentionPeriodLabel: string,
110
+ legitimateInterestLabel: string,
111
+ version: string,
112
+ examplesLabel: string,
113
+ showDataSharedOutsideEUText: boolean,
114
+ vendorIdsOutsideEUList: [number],
115
+ scope: TCF2Scope,
116
+ changedPurposes: TCF2ChangedPurposes,
117
+ acmV2Enabled: boolean,
118
+ selectedATPIds: number[],
119
+ firstLayerHideButtonDeny?: boolean,
120
+ firstLayerMobileVariant?: FirstLayerMobileVariant,
121
+ dataSharedOutsideEUText?: string,
122
+ ) {
123
+ this.firstLayerTitle = firstLayerTitle
124
+ this.secondLayerTitle = secondLayerTitle
125
+ this.tabsPurposeLabel = tabsPurposeLabel
126
+ this.tabsVendorsLabel = tabsVendorsLabel
127
+ this.labelsFeatures = labelsFeatures
128
+ this.labelsIabVendors = labelsIabVendors
129
+ this.labelsNonIabPurposes = labelsNonIabPurposes
130
+ this.labelsNonIabVendors = labelsNonIabVendors
131
+ this.labelsPurposes = labelsPurposes
132
+ this.vendorFeatures = vendorFeatures
133
+ this.vendorLegitimateInterestPurposes = vendorLegitimateInterestPurposes
134
+ this.vendorPurpose = vendorPurpose
135
+ this.vendorSpecialFeatures = vendorSpecialFeatures
136
+ this.vendorSpecialPurposes = vendorSpecialPurposes
137
+ this.togglesConsentToggleLabel = togglesConsentToggleLabel
138
+ this.togglesLegIntToggleLabel = togglesLegIntToggleLabel
139
+ this.buttonsAcceptAllLabel = buttonsAcceptAllLabel
140
+ this.buttonsDenyAllLabel = buttonsDenyAllLabel
141
+ this.buttonsSaveLabel = buttonsSaveLabel
142
+ this.linksManageSettingsLabel = linksManageSettingsLabel
143
+ this.linksVendorListLinkLabel = linksVendorListLinkLabel
144
+ this.cmpId = cmpId
145
+ this.cmpVersion = cmpVersion
146
+ this.firstLayerHideToggles = firstLayerHideToggles
147
+ this.secondLayerHideToggles = secondLayerHideToggles
148
+ this.hideLegitimateInterestToggles = hideLegitimateInterestToggles
149
+ this.firstLayerHideButtonDeny = firstLayerHideButtonDeny
150
+ this.secondLayerHideButtonDeny = secondLayerHideButtonDeny
151
+ this.publisherCountryCode = publisherCountryCode
152
+ this.purposeOneTreatment = purposeOneTreatment
153
+ this.selectedVendorIds = selectedVendorIds
154
+ this.gdprApplies = gdprApplies
155
+ this.selectedStacks = selectedStacks
156
+ this.disabledSpecialFeatures = disabledSpecialFeatures
157
+ this.firstLayerShowDescriptions = firstLayerShowDescriptions
158
+ this.hideNonIabOnFirstLayer = hideNonIabOnFirstLayer
159
+ this.resurfacePeriodEnded = resurfacePeriodEnded
160
+ this.resurfacePurposeChanged = resurfacePurposeChanged
161
+ this.resurfaceVendorAdded = resurfaceVendorAdded
162
+ this.firstLayerDescription = firstLayerDescription
163
+ this.firstLayerAdditionalInfo = firstLayerAdditionalInfo
164
+ this.secondLayerDescription = secondLayerDescription
165
+ this.togglesSpecialFeaturesToggleOn = togglesSpecialFeaturesToggleOn
166
+ this.togglesSpecialFeaturesToggleOff = togglesSpecialFeaturesToggleOff
167
+ this.appLayerNoteResurface = appLayerNoteResurface
168
+ this.firstLayerNoteResurface = firstLayerNoteResurface
169
+ this.categoriesOfDataLabel = categoriesOfDataLabel
170
+ this.dataRetentionPeriodLabel = dataRetentionPeriodLabel
171
+ this.legitimateInterestLabel = legitimateInterestLabel
172
+ this.version = version
173
+ this.examplesLabel = examplesLabel
174
+ this.firstLayerMobileVariant = firstLayerMobileVariant
175
+ this.showDataSharedOutsideEUText = showDataSharedOutsideEUText
176
+ this.dataSharedOutsideEUText = dataSharedOutsideEUText
177
+ this.vendorIdsOutsideEUList = vendorIdsOutsideEUList
178
+ this.scope = scope
179
+ this.changedPurposes = changedPurposes
180
+ this.acmV2Enabled = acmV2Enabled
181
+ this.selectedATPIds = selectedATPIds
182
+ }
183
+ }
184
+
185
+ export enum FirstLayerMobileVariant {
186
+ sheet = 0,
187
+ full = 1,
188
+ popupBottom = 2,
189
+ popupCenter = 3
190
+ }
191
+
192
+ export enum TCF2Scope {
193
+ global = 0,
194
+ service = 1
195
+ }
196
+
197
+ export class TCF2ChangedPurposes {
198
+
199
+ purposes: [number]
200
+ legIntPurposes: [number]
201
+
202
+ constructor(
203
+ purposes: [number],
204
+ legIntPurposes: [number],
205
+ ) {
206
+ this.purposes = purposes
207
+ this.legIntPurposes = legIntPurposes
208
+ }
209
+ }