@tantainnovative/ndpr-toolkit 1.0.10 → 2.1.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.
- package/LICENSE +21 -0
- package/README.md +293 -136
- package/dist/breach-6z0r-KuE.d.mts +17 -0
- package/dist/breach-BFfnvtRk.d.ts +17 -0
- package/dist/breach-BtFbDOmV.d.mts +185 -0
- package/dist/breach-BtFbDOmV.d.ts +185 -0
- package/dist/breach.d.mts +275 -0
- package/dist/breach.d.ts +275 -0
- package/dist/breach.js +2 -0
- package/dist/breach.js.map +1 -0
- package/dist/breach.mjs +2 -0
- package/dist/breach.mjs.map +1 -0
- package/dist/chunk-2SYNHRP6.mjs +2 -0
- package/dist/chunk-2SYNHRP6.mjs.map +1 -0
- package/dist/chunk-2XHD22J7.mjs +7 -0
- package/dist/chunk-2XHD22J7.mjs.map +1 -0
- package/dist/chunk-3YCV2BA6.js +2 -0
- package/dist/chunk-3YCV2BA6.js.map +1 -0
- package/dist/chunk-4A354HL3.js +2 -0
- package/dist/chunk-4A354HL3.js.map +1 -0
- package/dist/chunk-4DKT6IB6.js +94 -0
- package/dist/chunk-4DKT6IB6.js.map +1 -0
- package/dist/chunk-5ZBO2UPH.js +2 -0
- package/dist/chunk-5ZBO2UPH.js.map +1 -0
- package/dist/chunk-6GGGTRDZ.mjs +2 -0
- package/dist/chunk-6GGGTRDZ.mjs.map +1 -0
- package/dist/chunk-6JFTAYXV.mjs +2 -0
- package/dist/chunk-6JFTAYXV.mjs.map +1 -0
- package/dist/chunk-6JVYYLS7.js +2 -0
- package/dist/chunk-6JVYYLS7.js.map +1 -0
- package/dist/chunk-6SGG6WPA.mjs +2 -0
- package/dist/chunk-6SGG6WPA.mjs.map +1 -0
- package/dist/chunk-AQEGDEQM.js +7 -0
- package/dist/chunk-AQEGDEQM.js.map +1 -0
- package/dist/chunk-C2IJWCZQ.mjs +2 -0
- package/dist/chunk-C2IJWCZQ.mjs.map +1 -0
- package/dist/chunk-CMZTI7SG.js +2 -0
- package/dist/chunk-CMZTI7SG.js.map +1 -0
- package/dist/chunk-DB3JH4DS.mjs +2 -0
- package/dist/chunk-DB3JH4DS.mjs.map +1 -0
- package/dist/chunk-FFW7RUAG.mjs +94 -0
- package/dist/chunk-FFW7RUAG.mjs.map +1 -0
- package/dist/chunk-FK3CSFLJ.js +2 -0
- package/dist/chunk-FK3CSFLJ.js.map +1 -0
- package/dist/chunk-GIV2OHE6.mjs +2 -0
- package/dist/chunk-GIV2OHE6.mjs.map +1 -0
- package/dist/chunk-GMLNWS2N.mjs +2 -0
- package/dist/chunk-GMLNWS2N.mjs.map +1 -0
- package/dist/chunk-IQF726GS.js +2 -0
- package/dist/chunk-IQF726GS.js.map +1 -0
- package/dist/chunk-IWUUVRLJ.js +2 -0
- package/dist/chunk-IWUUVRLJ.js.map +1 -0
- package/dist/chunk-JUN6YPLL.mjs +72 -0
- package/dist/chunk-JUN6YPLL.mjs.map +1 -0
- package/dist/chunk-L3FKTBGV.js +72 -0
- package/dist/chunk-L3FKTBGV.js.map +1 -0
- package/dist/chunk-L52PDW6O.mjs +2 -0
- package/dist/chunk-L52PDW6O.mjs.map +1 -0
- package/dist/chunk-LI6WJ3LZ.js +2 -0
- package/dist/chunk-LI6WJ3LZ.js.map +1 -0
- package/dist/chunk-LXRXDTPI.js +2 -0
- package/dist/chunk-LXRXDTPI.js.map +1 -0
- package/dist/chunk-MQFZHA2D.js +2 -0
- package/dist/chunk-MQFZHA2D.js.map +1 -0
- package/dist/chunk-OITITR6K.mjs +2 -0
- package/dist/chunk-OITITR6K.mjs.map +1 -0
- package/dist/chunk-PDJGTQMY.mjs +2 -0
- package/dist/chunk-PDJGTQMY.mjs.map +1 -0
- package/dist/chunk-PGSA2O5P.mjs +2 -0
- package/dist/chunk-PGSA2O5P.mjs.map +1 -0
- package/dist/chunk-PM7CMTMB.js +4 -0
- package/dist/chunk-PM7CMTMB.js.map +1 -0
- package/dist/chunk-PYEX7DFR.mjs +4 -0
- package/dist/chunk-PYEX7DFR.mjs.map +1 -0
- package/dist/chunk-QKK5S54L.mjs +2 -0
- package/dist/chunk-QKK5S54L.mjs.map +1 -0
- package/dist/chunk-RB26MIRI.js +2 -0
- package/dist/chunk-RB26MIRI.js.map +1 -0
- package/dist/chunk-RGYK4VAY.mjs +2 -0
- package/dist/chunk-RGYK4VAY.mjs.map +1 -0
- package/dist/chunk-RHWW5FDP.js +16 -0
- package/dist/chunk-RHWW5FDP.js.map +1 -0
- package/dist/chunk-RYZEIDNR.js +2 -0
- package/dist/chunk-RYZEIDNR.js.map +1 -0
- package/dist/chunk-SLNMKGQ2.mjs +2 -0
- package/dist/chunk-SLNMKGQ2.mjs.map +1 -0
- package/dist/chunk-SSGJREE3.js +2 -0
- package/dist/chunk-SSGJREE3.js.map +1 -0
- package/dist/chunk-SWF3YVE5.js +4 -0
- package/dist/chunk-SWF3YVE5.js.map +1 -0
- package/dist/chunk-T44JQT2O.mjs +2 -0
- package/dist/chunk-T44JQT2O.mjs.map +1 -0
- package/dist/chunk-TDDAYVKK.js +2 -0
- package/dist/chunk-TDDAYVKK.js.map +1 -0
- package/dist/chunk-TXBZPCGF.mjs +2 -0
- package/dist/chunk-TXBZPCGF.mjs.map +1 -0
- package/dist/chunk-UUWVBENC.js +2 -0
- package/dist/chunk-UUWVBENC.js.map +1 -0
- package/dist/chunk-UYP64PV7.mjs +4 -0
- package/dist/chunk-UYP64PV7.mjs.map +1 -0
- package/dist/chunk-VMJBW3EF.mjs +2 -0
- package/dist/chunk-VMJBW3EF.mjs.map +1 -0
- package/dist/chunk-WW3X3ELF.js +2 -0
- package/dist/chunk-WW3X3ELF.js.map +1 -0
- package/dist/chunk-WWT2ZSNU.mjs +2 -0
- package/dist/chunk-WWT2ZSNU.mjs.map +1 -0
- package/dist/chunk-XMKA6GVK.mjs +16 -0
- package/dist/chunk-XMKA6GVK.mjs.map +1 -0
- package/dist/chunk-Y34DQYS7.js +2 -0
- package/dist/chunk-Y34DQYS7.js.map +1 -0
- package/dist/chunk-ZU73VG3X.js +2 -0
- package/dist/chunk-ZU73VG3X.js.map +1 -0
- package/dist/consent-CmVzqZUk.d.mts +99 -0
- package/dist/consent-CmVzqZUk.d.ts +99 -0
- package/dist/consent-DCc5zjXI.d.mts +24 -0
- package/dist/consent-DLWb5ota.d.ts +24 -0
- package/dist/consent.d.mts +197 -0
- package/dist/consent.d.ts +197 -0
- package/dist/consent.js +2 -0
- package/dist/consent.js.map +1 -0
- package/dist/consent.mjs +2 -0
- package/dist/consent.mjs.map +1 -0
- package/dist/core.d.mts +14 -0
- package/dist/core.d.ts +14 -0
- package/dist/core.js +2 -0
- package/dist/core.js.map +1 -0
- package/dist/core.mjs +2 -0
- package/dist/core.mjs.map +1 -0
- package/dist/cross-border-BrIy1ieh.d.mts +192 -0
- package/dist/cross-border-BrIy1ieh.d.ts +192 -0
- package/dist/cross-border.d.mts +58 -0
- package/dist/cross-border.d.ts +58 -0
- package/dist/cross-border.js +2 -0
- package/dist/cross-border.js.map +1 -0
- package/dist/cross-border.mjs +2 -0
- package/dist/cross-border.mjs.map +1 -0
- package/dist/dpia-B9ZZJG5a.d.mts +15 -0
- package/dist/dpia-fdtTd2DI.d.ts +15 -0
- package/dist/dpia-vWfE_9bO.d.mts +137 -0
- package/dist/dpia-vWfE_9bO.d.ts +137 -0
- package/dist/dpia.d.mts +179 -0
- package/dist/dpia.d.ts +179 -0
- package/dist/dpia.js +2 -0
- package/dist/dpia.js.map +1 -0
- package/dist/dpia.mjs +2 -0
- package/dist/dpia.mjs.map +1 -0
- package/dist/dsr-jq5NUEdz.d.ts +14 -0
- package/dist/dsr-pQzQ3H1O.d.mts +128 -0
- package/dist/dsr-pQzQ3H1O.d.ts +128 -0
- package/dist/dsr-whPkiI0_.d.mts +14 -0
- package/dist/dsr.d.mts +192 -0
- package/dist/dsr.d.ts +192 -0
- package/dist/dsr.js +2 -0
- package/dist/dsr.js.map +1 -0
- package/dist/dsr.mjs +2 -0
- package/dist/dsr.mjs.map +1 -0
- package/dist/hooks.d.mts +17 -0
- package/dist/hooks.d.ts +17 -0
- package/dist/hooks.js +2 -0
- package/dist/hooks.js.map +1 -0
- package/dist/hooks.mjs +2 -0
- package/dist/hooks.mjs.map +1 -0
- package/dist/index.d.mts +31 -448
- package/dist/index.d.ts +31 -448
- package/dist/index.js +1 -190
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -190
- package/dist/index.mjs.map +1 -1
- package/dist/lawful-basis-CWtvDG1x.d.mts +112 -0
- package/dist/lawful-basis-CWtvDG1x.d.ts +112 -0
- package/dist/lawful-basis-D-oXFizg.d.mts +57 -0
- package/dist/lawful-basis-v04AhbK2.d.ts +57 -0
- package/dist/lawful-basis.d.mts +55 -0
- package/dist/lawful-basis.d.ts +55 -0
- package/dist/lawful-basis.js +2 -0
- package/dist/lawful-basis.js.map +1 -0
- package/dist/lawful-basis.mjs +2 -0
- package/dist/lawful-basis.mjs.map +1 -0
- package/dist/policy.d.mts +195 -0
- package/dist/policy.d.ts +195 -0
- package/dist/policy.js +2 -0
- package/dist/policy.js.map +1 -0
- package/dist/policy.mjs +2 -0
- package/dist/policy.mjs.map +1 -0
- package/dist/privacy-9FcJceMr.d.mts +15 -0
- package/dist/privacy-BXz7O2ej.d.ts +15 -0
- package/dist/privacy-Ca6te9Ir.d.mts +138 -0
- package/dist/privacy-Ca6te9Ir.d.ts +138 -0
- package/dist/ropa-BebGfqKQ.d.ts +200 -0
- package/dist/ropa-Rb4dsFSz.d.mts +200 -0
- package/dist/ropa.d.mts +45 -0
- package/dist/ropa.d.ts +45 -0
- package/dist/ropa.js +2 -0
- package/dist/ropa.js.map +1 -0
- package/dist/ropa.mjs +2 -0
- package/dist/ropa.mjs.map +1 -0
- package/dist/unstyled.d.mts +4 -4
- package/dist/unstyled.d.ts +4 -4
- package/dist/unstyled.js +1 -1
- package/dist/unstyled.js.map +1 -1
- package/dist/unstyled.mjs +1 -1
- package/dist/unstyled.mjs.map +1 -1
- package/dist/useBreach-WrZzJilM.d.mts +99 -0
- package/dist/useBreach-vrh_XMpI.d.ts +99 -0
- package/dist/useConsent-D0pAfTlb.d.ts +65 -0
- package/dist/useConsent-DOt2Njst.d.mts +65 -0
- package/dist/useCrossBorderTransfer-D4FQYfFt.d.ts +66 -0
- package/dist/useCrossBorderTransfer-TVnY8_UX.d.mts +66 -0
- package/dist/useDPIA-DFDHBLSa.d.ts +94 -0
- package/dist/useDPIA-FqPofFaV.d.mts +94 -0
- package/dist/useDSR-DAqqOBXb.d.ts +74 -0
- package/dist/useDSR-OXM5Q9rf.d.mts +74 -0
- package/dist/useLawfulBasis-DNQ8YszQ.d.mts +68 -0
- package/dist/useLawfulBasis-RILM_xsx.d.ts +68 -0
- package/dist/usePrivacyPolicy-CfySfBLS.d.ts +89 -0
- package/dist/usePrivacyPolicy-Dit2sFuV.d.mts +89 -0
- package/dist/useROPA-Bcs6cRdi.d.ts +64 -0
- package/dist/useROPA-nmcSiUYv.d.mts +64 -0
- package/package.json +146 -20
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-Border Data Transfer types aligned with NDPA 2023 Part VI (Sections 41-45)
|
|
3
|
+
* Personal data may only be transferred outside Nigeria under specific conditions
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Transfer mechanisms recognized under the NDPA
|
|
7
|
+
*/
|
|
8
|
+
type TransferMechanism = 'adequacy_decision' | 'standard_clauses' | 'binding_corporate_rules' | 'ndpc_authorization' | 'explicit_consent' | 'contract_performance' | 'public_interest' | 'legal_claims' | 'vital_interests';
|
|
9
|
+
/**
|
|
10
|
+
* Adequacy status of a destination country
|
|
11
|
+
*/
|
|
12
|
+
type AdequacyStatus = 'adequate' | 'inadequate' | 'pending_review' | 'unknown';
|
|
13
|
+
/**
|
|
14
|
+
* Represents a cross-border data transfer record
|
|
15
|
+
*/
|
|
16
|
+
interface CrossBorderTransfer {
|
|
17
|
+
/** Unique identifier */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Destination country or territory */
|
|
20
|
+
destinationCountry: string;
|
|
21
|
+
/** ISO country code */
|
|
22
|
+
destinationCountryCode?: string;
|
|
23
|
+
/** Adequacy status of the destination */
|
|
24
|
+
adequacyStatus: AdequacyStatus;
|
|
25
|
+
/** The transfer mechanism being relied upon */
|
|
26
|
+
transferMechanism: TransferMechanism;
|
|
27
|
+
/** Categories of personal data being transferred */
|
|
28
|
+
dataCategories: string[];
|
|
29
|
+
/** Whether sensitive personal data is included */
|
|
30
|
+
includesSensitiveData: boolean;
|
|
31
|
+
/** Estimated number of data subjects whose data is transferred */
|
|
32
|
+
estimatedDataSubjects?: number;
|
|
33
|
+
/** Name of the recipient organization */
|
|
34
|
+
recipientOrganization: string;
|
|
35
|
+
/** Contact details of the recipient */
|
|
36
|
+
recipientContact: {
|
|
37
|
+
name: string;
|
|
38
|
+
email: string;
|
|
39
|
+
phone?: string;
|
|
40
|
+
address?: string;
|
|
41
|
+
};
|
|
42
|
+
/** Purpose of the data transfer */
|
|
43
|
+
purpose: string;
|
|
44
|
+
/** Safeguards in place to protect the data */
|
|
45
|
+
safeguards: string[];
|
|
46
|
+
/** Risk assessment summary */
|
|
47
|
+
riskAssessment: string;
|
|
48
|
+
/** Risk level of the transfer */
|
|
49
|
+
riskLevel: 'low' | 'medium' | 'high';
|
|
50
|
+
/** NDPC approval details (required for some transfer mechanisms) */
|
|
51
|
+
ndpcApproval?: {
|
|
52
|
+
required: boolean;
|
|
53
|
+
applied: boolean;
|
|
54
|
+
approved?: boolean;
|
|
55
|
+
referenceNumber?: string;
|
|
56
|
+
appliedAt?: number;
|
|
57
|
+
approvedAt?: number;
|
|
58
|
+
};
|
|
59
|
+
/** Whether a Transfer Impact Assessment has been conducted */
|
|
60
|
+
tiaCompleted: boolean;
|
|
61
|
+
/** Reference to the TIA document */
|
|
62
|
+
tiaReference?: string;
|
|
63
|
+
/** Frequency of the transfer */
|
|
64
|
+
frequency: 'one_time' | 'periodic' | 'continuous';
|
|
65
|
+
/** Start date of the transfer */
|
|
66
|
+
startDate: number;
|
|
67
|
+
/** End date of the transfer (if applicable) */
|
|
68
|
+
endDate?: number;
|
|
69
|
+
/** Status of the transfer */
|
|
70
|
+
status: 'active' | 'suspended' | 'terminated' | 'pending_approval';
|
|
71
|
+
/** Timestamp when the record was created */
|
|
72
|
+
createdAt: number;
|
|
73
|
+
/** Timestamp when the record was last updated */
|
|
74
|
+
updatedAt: number;
|
|
75
|
+
/** Next review date */
|
|
76
|
+
reviewDate?: number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Transfer Impact Assessment (TIA) for cross-border transfers
|
|
80
|
+
*/
|
|
81
|
+
interface TransferImpactAssessment {
|
|
82
|
+
/** Unique identifier */
|
|
83
|
+
id: string;
|
|
84
|
+
/** ID of the associated cross-border transfer */
|
|
85
|
+
transferId: string;
|
|
86
|
+
/** Date the assessment was conducted */
|
|
87
|
+
assessmentDate: number;
|
|
88
|
+
/** Person who conducted the assessment */
|
|
89
|
+
assessor: {
|
|
90
|
+
name: string;
|
|
91
|
+
role: string;
|
|
92
|
+
email: string;
|
|
93
|
+
};
|
|
94
|
+
/** Analysis of the destination country's legal framework */
|
|
95
|
+
destinationLegalFramework: string;
|
|
96
|
+
/** Whether the destination has data protection legislation */
|
|
97
|
+
hasDataProtectionLaw: boolean;
|
|
98
|
+
/** Whether the destination has an independent supervisory authority */
|
|
99
|
+
hasIndependentAuthority: boolean;
|
|
100
|
+
/** Risk of government access to the data */
|
|
101
|
+
governmentAccessRisk: 'low' | 'medium' | 'high';
|
|
102
|
+
/** Overall assessment of data protection level */
|
|
103
|
+
dataProtectionLevel: 'adequate' | 'partially_adequate' | 'inadequate';
|
|
104
|
+
/** Supplementary measures to address gaps */
|
|
105
|
+
supplementaryMeasures: string[];
|
|
106
|
+
/** Technical measures (encryption, pseudonymization, etc.) */
|
|
107
|
+
technicalMeasures: string[];
|
|
108
|
+
/** Contractual measures */
|
|
109
|
+
contractualMeasures: string[];
|
|
110
|
+
/** Organizational measures */
|
|
111
|
+
organizationalMeasures: string[];
|
|
112
|
+
/** Overall conclusion */
|
|
113
|
+
conclusion: string;
|
|
114
|
+
/** Whether the transfer can proceed based on the assessment */
|
|
115
|
+
approved: boolean;
|
|
116
|
+
/** Conditions for the transfer (if approved with conditions) */
|
|
117
|
+
conditions?: string[];
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Summary of cross-border transfer compliance
|
|
121
|
+
*/
|
|
122
|
+
interface CrossBorderSummary {
|
|
123
|
+
/** Total number of active transfers */
|
|
124
|
+
totalActiveTransfers: number;
|
|
125
|
+
/** Breakdown by transfer mechanism */
|
|
126
|
+
byMechanism: Record<TransferMechanism, number>;
|
|
127
|
+
/** Breakdown by adequacy status */
|
|
128
|
+
byAdequacy: Record<AdequacyStatus, number>;
|
|
129
|
+
/** Transfers pending NDPC approval */
|
|
130
|
+
pendingApproval: CrossBorderTransfer[];
|
|
131
|
+
/** Transfers due for review */
|
|
132
|
+
dueForReview: CrossBorderTransfer[];
|
|
133
|
+
/** Transfers missing TIA */
|
|
134
|
+
missingTIA: CrossBorderTransfer[];
|
|
135
|
+
/** High-risk transfers */
|
|
136
|
+
highRiskTransfers: CrossBorderTransfer[];
|
|
137
|
+
/** Last updated timestamp */
|
|
138
|
+
lastUpdated: number;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Validation result for a cross-border transfer
|
|
143
|
+
*/
|
|
144
|
+
interface TransferValidationResult {
|
|
145
|
+
isValid: boolean;
|
|
146
|
+
errors: string[];
|
|
147
|
+
warnings: string[];
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Risk assessment result for a cross-border transfer
|
|
151
|
+
*/
|
|
152
|
+
interface TransferRiskResult {
|
|
153
|
+
riskLevel: 'low' | 'medium' | 'high';
|
|
154
|
+
riskScore: number;
|
|
155
|
+
factors: string[];
|
|
156
|
+
recommendations: string[];
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Returns whether NDPC approval is required for a given transfer mechanism.
|
|
160
|
+
* Approval is required for standard contractual clauses (Section 42),
|
|
161
|
+
* binding corporate rules (Section 43), and specific NDPC authorization (Section 44).
|
|
162
|
+
*
|
|
163
|
+
* @param mechanism The transfer mechanism
|
|
164
|
+
* @returns Whether NDPC approval is required
|
|
165
|
+
*/
|
|
166
|
+
declare function isNDPCApprovalRequired(mechanism: TransferMechanism): boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Returns a human-readable description of a transfer mechanism with its NDPA section reference.
|
|
169
|
+
*
|
|
170
|
+
* @param mechanism The transfer mechanism
|
|
171
|
+
* @returns Description including the relevant NDPA section
|
|
172
|
+
*/
|
|
173
|
+
declare function getTransferMechanismDescription(mechanism: TransferMechanism): string;
|
|
174
|
+
/**
|
|
175
|
+
* Validates a cross-border transfer record for completeness and compliance.
|
|
176
|
+
* Checks required fields, verifies that NDPC approval is documented when required,
|
|
177
|
+
* and ensures safeguards are in place.
|
|
178
|
+
*
|
|
179
|
+
* @param transfer The cross-border transfer to validate
|
|
180
|
+
* @returns Validation result with errors and warnings
|
|
181
|
+
*/
|
|
182
|
+
declare function validateTransfer(transfer: CrossBorderTransfer): TransferValidationResult;
|
|
183
|
+
/**
|
|
184
|
+
* Performs a basic risk assessment of a cross-border transfer based on adequacy status,
|
|
185
|
+
* transfer mechanism, and data sensitivity.
|
|
186
|
+
*
|
|
187
|
+
* @param transfer The cross-border transfer to assess
|
|
188
|
+
* @returns Risk assessment result with score, factors, and recommendations
|
|
189
|
+
*/
|
|
190
|
+
declare function assessTransferRisk(transfer: CrossBorderTransfer): TransferRiskResult;
|
|
191
|
+
|
|
192
|
+
export { type AdequacyStatus as A, type CrossBorderTransfer as C, type TransferMechanism as T, type TransferImpactAssessment as a, type CrossBorderSummary as b, assessTransferRisk as c, type TransferValidationResult as d, type TransferRiskResult as e, getTransferMechanismDescription as g, isNDPCApprovalRequired as i, validateTransfer as v };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { C as CrossBorderTransfer, b as CrossBorderSummary } from './cross-border-BrIy1ieh.mjs';
|
|
3
|
+
export { A as AdequacyStatus, a as TransferImpactAssessment, T as TransferMechanism, e as TransferRiskResult, d as TransferValidationResult, c as assessTransferRisk, g as getTransferMechanismDescription, i as isNDPCApprovalRequired, v as validateTransfer } from './cross-border-BrIy1ieh.mjs';
|
|
4
|
+
export { u as useCrossBorderTransfer } from './useCrossBorderTransfer-TVnY8_UX.mjs';
|
|
5
|
+
|
|
6
|
+
interface CrossBorderTransferManagerProps {
|
|
7
|
+
/**
|
|
8
|
+
* List of cross-border transfers to display
|
|
9
|
+
*/
|
|
10
|
+
transfers: CrossBorderTransfer[];
|
|
11
|
+
/**
|
|
12
|
+
* Callback when a new transfer is added
|
|
13
|
+
*/
|
|
14
|
+
onAddTransfer?: (transfer: Omit<CrossBorderTransfer, 'id' | 'createdAt' | 'updatedAt'>) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Callback when a transfer is updated
|
|
17
|
+
*/
|
|
18
|
+
onUpdateTransfer?: (id: string, updates: Partial<CrossBorderTransfer>) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Callback when a transfer is removed
|
|
21
|
+
*/
|
|
22
|
+
onRemoveTransfer?: (id: string) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Compliance summary data
|
|
25
|
+
*/
|
|
26
|
+
summary?: CrossBorderSummary;
|
|
27
|
+
/**
|
|
28
|
+
* Title displayed on the manager
|
|
29
|
+
* @default "Cross-Border Data Transfer Manager"
|
|
30
|
+
*/
|
|
31
|
+
title?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Description text displayed on the manager
|
|
34
|
+
* @default "Manage and document cross-border personal data transfers in compliance with NDPA 2023 Part VI (Sections 41-45)."
|
|
35
|
+
*/
|
|
36
|
+
description?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Custom CSS class for the manager container
|
|
39
|
+
*/
|
|
40
|
+
className?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Custom CSS class for buttons
|
|
43
|
+
*/
|
|
44
|
+
buttonClassName?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Whether to show the compliance summary section
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
49
|
+
showSummary?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Whether to show the TIA section in the form
|
|
52
|
+
* @default true
|
|
53
|
+
*/
|
|
54
|
+
showTIA?: boolean;
|
|
55
|
+
}
|
|
56
|
+
declare const CrossBorderTransferManager: React.FC<CrossBorderTransferManagerProps>;
|
|
57
|
+
|
|
58
|
+
export { CrossBorderSummary, CrossBorderTransfer, CrossBorderTransferManager };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { C as CrossBorderTransfer, b as CrossBorderSummary } from './cross-border-BrIy1ieh.js';
|
|
3
|
+
export { A as AdequacyStatus, a as TransferImpactAssessment, T as TransferMechanism, e as TransferRiskResult, d as TransferValidationResult, c as assessTransferRisk, g as getTransferMechanismDescription, i as isNDPCApprovalRequired, v as validateTransfer } from './cross-border-BrIy1ieh.js';
|
|
4
|
+
export { u as useCrossBorderTransfer } from './useCrossBorderTransfer-D4FQYfFt.js';
|
|
5
|
+
|
|
6
|
+
interface CrossBorderTransferManagerProps {
|
|
7
|
+
/**
|
|
8
|
+
* List of cross-border transfers to display
|
|
9
|
+
*/
|
|
10
|
+
transfers: CrossBorderTransfer[];
|
|
11
|
+
/**
|
|
12
|
+
* Callback when a new transfer is added
|
|
13
|
+
*/
|
|
14
|
+
onAddTransfer?: (transfer: Omit<CrossBorderTransfer, 'id' | 'createdAt' | 'updatedAt'>) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Callback when a transfer is updated
|
|
17
|
+
*/
|
|
18
|
+
onUpdateTransfer?: (id: string, updates: Partial<CrossBorderTransfer>) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Callback when a transfer is removed
|
|
21
|
+
*/
|
|
22
|
+
onRemoveTransfer?: (id: string) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Compliance summary data
|
|
25
|
+
*/
|
|
26
|
+
summary?: CrossBorderSummary;
|
|
27
|
+
/**
|
|
28
|
+
* Title displayed on the manager
|
|
29
|
+
* @default "Cross-Border Data Transfer Manager"
|
|
30
|
+
*/
|
|
31
|
+
title?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Description text displayed on the manager
|
|
34
|
+
* @default "Manage and document cross-border personal data transfers in compliance with NDPA 2023 Part VI (Sections 41-45)."
|
|
35
|
+
*/
|
|
36
|
+
description?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Custom CSS class for the manager container
|
|
39
|
+
*/
|
|
40
|
+
className?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Custom CSS class for buttons
|
|
43
|
+
*/
|
|
44
|
+
buttonClassName?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Whether to show the compliance summary section
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
49
|
+
showSummary?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Whether to show the TIA section in the form
|
|
52
|
+
* @default true
|
|
53
|
+
*/
|
|
54
|
+
showTIA?: boolean;
|
|
55
|
+
}
|
|
56
|
+
declare const CrossBorderTransferManager: React.FC<CrossBorderTransferManagerProps>;
|
|
57
|
+
|
|
58
|
+
export { CrossBorderSummary, CrossBorderTransfer, CrossBorderTransferManager };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkAQEGDEQM_js=require('./chunk-AQEGDEQM.js'),chunk5ZBO2UPH_js=require('./chunk-5ZBO2UPH.js'),chunkIQF726GS_js=require('./chunk-IQF726GS.js');require('./chunk-MQFZHA2D.js');Object.defineProperty(exports,"CrossBorderTransferManager",{enumerable:true,get:function(){return chunkAQEGDEQM_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunk5ZBO2UPH_js.a}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkIQF726GS_js.d}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkIQF726GS_js.b}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkIQF726GS_js.a}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkIQF726GS_js.c}});//# sourceMappingURL=cross-border.js.map
|
|
2
|
+
//# sourceMappingURL=cross-border.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"cross-border.js"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export{a as CrossBorderTransferManager}from'./chunk-2XHD22J7.mjs';export{a as useCrossBorderTransfer}from'./chunk-VMJBW3EF.mjs';export{d as assessTransferRisk,b as getTransferMechanismDescription,a as isNDPCApprovalRequired,c as validateTransfer}from'./chunk-QKK5S54L.mjs';import'./chunk-WWT2ZSNU.mjs';//# sourceMappingURL=cross-border.mjs.map
|
|
2
|
+
//# sourceMappingURL=cross-border.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"cross-border.mjs"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { b as DPIAResult } from './dpia-vWfE_9bO.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Assesses the risk level of a DPIA based on the identified risks
|
|
5
|
+
* @param dpiaResult The DPIA result containing risks to assess
|
|
6
|
+
* @returns Assessment result with overall risk level and recommendations
|
|
7
|
+
*/
|
|
8
|
+
declare function assessDPIARisk(dpiaResult: DPIAResult): {
|
|
9
|
+
overallRiskLevel: 'low' | 'medium' | 'high' | 'critical';
|
|
10
|
+
requiresConsultation: boolean;
|
|
11
|
+
canProceed: boolean;
|
|
12
|
+
recommendations: string[];
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { assessDPIARisk as a };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { b as DPIAResult } from './dpia-vWfE_9bO.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Assesses the risk level of a DPIA based on the identified risks
|
|
5
|
+
* @param dpiaResult The DPIA result containing risks to assess
|
|
6
|
+
* @returns Assessment result with overall risk level and recommendations
|
|
7
|
+
*/
|
|
8
|
+
declare function assessDPIARisk(dpiaResult: DPIAResult): {
|
|
9
|
+
overallRiskLevel: 'low' | 'medium' | 'high' | 'critical';
|
|
10
|
+
requiresConsultation: boolean;
|
|
11
|
+
canProceed: boolean;
|
|
12
|
+
recommendations: string[];
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { assessDPIARisk as a };
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Protection Impact Assessment types aligned with NDPA 2023 Sections 38-39
|
|
3
|
+
* A DPIA is required when processing is likely to result in high risk to data subjects
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Represents a question in the DPIA questionnaire
|
|
7
|
+
*/
|
|
8
|
+
interface DPIAQuestion {
|
|
9
|
+
/** Unique identifier for the question */
|
|
10
|
+
id: string;
|
|
11
|
+
/** The text of the question */
|
|
12
|
+
text: string;
|
|
13
|
+
/** Additional guidance for answering the question */
|
|
14
|
+
guidance?: string;
|
|
15
|
+
/** Type of input required for the answer */
|
|
16
|
+
type: 'text' | 'textarea' | 'select' | 'radio' | 'checkbox' | 'scale';
|
|
17
|
+
/** Options for select, radio, or checkbox questions */
|
|
18
|
+
options?: Array<{
|
|
19
|
+
value: string;
|
|
20
|
+
label: string;
|
|
21
|
+
riskLevel?: 'low' | 'medium' | 'high';
|
|
22
|
+
}>;
|
|
23
|
+
/** For scale questions, the minimum value */
|
|
24
|
+
minValue?: number;
|
|
25
|
+
/** For scale questions, the maximum value */
|
|
26
|
+
maxValue?: number;
|
|
27
|
+
/** For scale questions, labels for the scale points */
|
|
28
|
+
scaleLabels?: Record<number, string>;
|
|
29
|
+
/** Whether the question is required */
|
|
30
|
+
required: boolean;
|
|
31
|
+
/** Risk level associated with this question */
|
|
32
|
+
riskLevel?: 'low' | 'medium' | 'high';
|
|
33
|
+
/** Whether this question triggers additional questions based on the answer */
|
|
34
|
+
hasDependentQuestions?: boolean;
|
|
35
|
+
/** Conditions that determine when this question should be shown */
|
|
36
|
+
showWhen?: Array<{
|
|
37
|
+
questionId: string;
|
|
38
|
+
operator: 'equals' | 'contains' | 'greaterThan' | 'lessThan';
|
|
39
|
+
value: any;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Represents a section in the DPIA questionnaire
|
|
44
|
+
*/
|
|
45
|
+
interface DPIASection {
|
|
46
|
+
/** Unique identifier for the section */
|
|
47
|
+
id: string;
|
|
48
|
+
/** Title of the section */
|
|
49
|
+
title: string;
|
|
50
|
+
/** Description of the section */
|
|
51
|
+
description?: string;
|
|
52
|
+
/** Questions in this section */
|
|
53
|
+
questions: DPIAQuestion[];
|
|
54
|
+
/** Order of the section in the questionnaire */
|
|
55
|
+
order: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Represents a risk identified in the DPIA
|
|
59
|
+
*/
|
|
60
|
+
interface DPIARisk {
|
|
61
|
+
/** Unique identifier for the risk */
|
|
62
|
+
id: string;
|
|
63
|
+
/** Description of the risk */
|
|
64
|
+
description: string;
|
|
65
|
+
/** Likelihood of the risk occurring (1-5) */
|
|
66
|
+
likelihood: number;
|
|
67
|
+
/** Impact if the risk occurs (1-5) */
|
|
68
|
+
impact: number;
|
|
69
|
+
/** Overall risk score (likelihood * impact) */
|
|
70
|
+
score: number;
|
|
71
|
+
/** Risk level based on the score */
|
|
72
|
+
level: 'low' | 'medium' | 'high' | 'critical';
|
|
73
|
+
/** Measures to mitigate the risk */
|
|
74
|
+
mitigationMeasures?: string[];
|
|
75
|
+
/** Whether the risk has been mitigated */
|
|
76
|
+
mitigated: boolean;
|
|
77
|
+
/** Residual risk score after mitigation */
|
|
78
|
+
residualScore?: number;
|
|
79
|
+
/** Questions that identified this risk */
|
|
80
|
+
relatedQuestionIds: string[];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Represents the result of a completed DPIA
|
|
84
|
+
*/
|
|
85
|
+
interface DPIAResult {
|
|
86
|
+
/** Unique identifier for the DPIA */
|
|
87
|
+
id: string;
|
|
88
|
+
/** Title of the DPIA */
|
|
89
|
+
title: string;
|
|
90
|
+
/** Description of the processing activity being assessed */
|
|
91
|
+
processingDescription: string;
|
|
92
|
+
/** Timestamp when the DPIA was started */
|
|
93
|
+
startedAt: number;
|
|
94
|
+
/** Timestamp when the DPIA was completed */
|
|
95
|
+
completedAt?: number;
|
|
96
|
+
/** Person responsible for conducting the DPIA */
|
|
97
|
+
assessor: {
|
|
98
|
+
name: string;
|
|
99
|
+
role: string;
|
|
100
|
+
email: string;
|
|
101
|
+
};
|
|
102
|
+
/** Answers to all questions in the DPIA */
|
|
103
|
+
answers: Record<string, any>;
|
|
104
|
+
/** Risks identified in the DPIA */
|
|
105
|
+
risks: DPIARisk[];
|
|
106
|
+
/** Overall risk level of the processing activity */
|
|
107
|
+
overallRiskLevel: 'low' | 'medium' | 'high' | 'critical';
|
|
108
|
+
/** Whether the DPIA concluded that the processing can proceed */
|
|
109
|
+
canProceed: boolean;
|
|
110
|
+
/** Reasons why the processing can or cannot proceed */
|
|
111
|
+
conclusion: string;
|
|
112
|
+
/** Recommendations for the processing activity */
|
|
113
|
+
recommendations?: string[];
|
|
114
|
+
/** Next review date for the DPIA */
|
|
115
|
+
reviewDate?: number;
|
|
116
|
+
/** Version of the DPIA questionnaire used */
|
|
117
|
+
version: string;
|
|
118
|
+
/**
|
|
119
|
+
* Whether prior consultation with NDPC is required
|
|
120
|
+
* Per NDPA Section 39, consultation is required when DPIA indicates high residual risk
|
|
121
|
+
*/
|
|
122
|
+
ndpcConsultationRequired?: boolean;
|
|
123
|
+
/** Date when NDPC consultation was initiated */
|
|
124
|
+
ndpcConsultationDate?: number;
|
|
125
|
+
/** Reference number from NDPC consultation */
|
|
126
|
+
ndpcConsultationReference?: string;
|
|
127
|
+
/**
|
|
128
|
+
* The lawful basis for the processing activity being assessed
|
|
129
|
+
*/
|
|
130
|
+
lawfulBasis?: string;
|
|
131
|
+
/**
|
|
132
|
+
* Whether this DPIA involves cross-border data transfers
|
|
133
|
+
*/
|
|
134
|
+
involvesCrossBorderTransfer?: boolean;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export type { DPIAQuestion as D, DPIASection as a, DPIAResult as b, DPIARisk as c };
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Protection Impact Assessment types aligned with NDPA 2023 Sections 38-39
|
|
3
|
+
* A DPIA is required when processing is likely to result in high risk to data subjects
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Represents a question in the DPIA questionnaire
|
|
7
|
+
*/
|
|
8
|
+
interface DPIAQuestion {
|
|
9
|
+
/** Unique identifier for the question */
|
|
10
|
+
id: string;
|
|
11
|
+
/** The text of the question */
|
|
12
|
+
text: string;
|
|
13
|
+
/** Additional guidance for answering the question */
|
|
14
|
+
guidance?: string;
|
|
15
|
+
/** Type of input required for the answer */
|
|
16
|
+
type: 'text' | 'textarea' | 'select' | 'radio' | 'checkbox' | 'scale';
|
|
17
|
+
/** Options for select, radio, or checkbox questions */
|
|
18
|
+
options?: Array<{
|
|
19
|
+
value: string;
|
|
20
|
+
label: string;
|
|
21
|
+
riskLevel?: 'low' | 'medium' | 'high';
|
|
22
|
+
}>;
|
|
23
|
+
/** For scale questions, the minimum value */
|
|
24
|
+
minValue?: number;
|
|
25
|
+
/** For scale questions, the maximum value */
|
|
26
|
+
maxValue?: number;
|
|
27
|
+
/** For scale questions, labels for the scale points */
|
|
28
|
+
scaleLabels?: Record<number, string>;
|
|
29
|
+
/** Whether the question is required */
|
|
30
|
+
required: boolean;
|
|
31
|
+
/** Risk level associated with this question */
|
|
32
|
+
riskLevel?: 'low' | 'medium' | 'high';
|
|
33
|
+
/** Whether this question triggers additional questions based on the answer */
|
|
34
|
+
hasDependentQuestions?: boolean;
|
|
35
|
+
/** Conditions that determine when this question should be shown */
|
|
36
|
+
showWhen?: Array<{
|
|
37
|
+
questionId: string;
|
|
38
|
+
operator: 'equals' | 'contains' | 'greaterThan' | 'lessThan';
|
|
39
|
+
value: any;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Represents a section in the DPIA questionnaire
|
|
44
|
+
*/
|
|
45
|
+
interface DPIASection {
|
|
46
|
+
/** Unique identifier for the section */
|
|
47
|
+
id: string;
|
|
48
|
+
/** Title of the section */
|
|
49
|
+
title: string;
|
|
50
|
+
/** Description of the section */
|
|
51
|
+
description?: string;
|
|
52
|
+
/** Questions in this section */
|
|
53
|
+
questions: DPIAQuestion[];
|
|
54
|
+
/** Order of the section in the questionnaire */
|
|
55
|
+
order: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Represents a risk identified in the DPIA
|
|
59
|
+
*/
|
|
60
|
+
interface DPIARisk {
|
|
61
|
+
/** Unique identifier for the risk */
|
|
62
|
+
id: string;
|
|
63
|
+
/** Description of the risk */
|
|
64
|
+
description: string;
|
|
65
|
+
/** Likelihood of the risk occurring (1-5) */
|
|
66
|
+
likelihood: number;
|
|
67
|
+
/** Impact if the risk occurs (1-5) */
|
|
68
|
+
impact: number;
|
|
69
|
+
/** Overall risk score (likelihood * impact) */
|
|
70
|
+
score: number;
|
|
71
|
+
/** Risk level based on the score */
|
|
72
|
+
level: 'low' | 'medium' | 'high' | 'critical';
|
|
73
|
+
/** Measures to mitigate the risk */
|
|
74
|
+
mitigationMeasures?: string[];
|
|
75
|
+
/** Whether the risk has been mitigated */
|
|
76
|
+
mitigated: boolean;
|
|
77
|
+
/** Residual risk score after mitigation */
|
|
78
|
+
residualScore?: number;
|
|
79
|
+
/** Questions that identified this risk */
|
|
80
|
+
relatedQuestionIds: string[];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Represents the result of a completed DPIA
|
|
84
|
+
*/
|
|
85
|
+
interface DPIAResult {
|
|
86
|
+
/** Unique identifier for the DPIA */
|
|
87
|
+
id: string;
|
|
88
|
+
/** Title of the DPIA */
|
|
89
|
+
title: string;
|
|
90
|
+
/** Description of the processing activity being assessed */
|
|
91
|
+
processingDescription: string;
|
|
92
|
+
/** Timestamp when the DPIA was started */
|
|
93
|
+
startedAt: number;
|
|
94
|
+
/** Timestamp when the DPIA was completed */
|
|
95
|
+
completedAt?: number;
|
|
96
|
+
/** Person responsible for conducting the DPIA */
|
|
97
|
+
assessor: {
|
|
98
|
+
name: string;
|
|
99
|
+
role: string;
|
|
100
|
+
email: string;
|
|
101
|
+
};
|
|
102
|
+
/** Answers to all questions in the DPIA */
|
|
103
|
+
answers: Record<string, any>;
|
|
104
|
+
/** Risks identified in the DPIA */
|
|
105
|
+
risks: DPIARisk[];
|
|
106
|
+
/** Overall risk level of the processing activity */
|
|
107
|
+
overallRiskLevel: 'low' | 'medium' | 'high' | 'critical';
|
|
108
|
+
/** Whether the DPIA concluded that the processing can proceed */
|
|
109
|
+
canProceed: boolean;
|
|
110
|
+
/** Reasons why the processing can or cannot proceed */
|
|
111
|
+
conclusion: string;
|
|
112
|
+
/** Recommendations for the processing activity */
|
|
113
|
+
recommendations?: string[];
|
|
114
|
+
/** Next review date for the DPIA */
|
|
115
|
+
reviewDate?: number;
|
|
116
|
+
/** Version of the DPIA questionnaire used */
|
|
117
|
+
version: string;
|
|
118
|
+
/**
|
|
119
|
+
* Whether prior consultation with NDPC is required
|
|
120
|
+
* Per NDPA Section 39, consultation is required when DPIA indicates high residual risk
|
|
121
|
+
*/
|
|
122
|
+
ndpcConsultationRequired?: boolean;
|
|
123
|
+
/** Date when NDPC consultation was initiated */
|
|
124
|
+
ndpcConsultationDate?: number;
|
|
125
|
+
/** Reference number from NDPC consultation */
|
|
126
|
+
ndpcConsultationReference?: string;
|
|
127
|
+
/**
|
|
128
|
+
* The lawful basis for the processing activity being assessed
|
|
129
|
+
*/
|
|
130
|
+
lawfulBasis?: string;
|
|
131
|
+
/**
|
|
132
|
+
* Whether this DPIA involves cross-border data transfers
|
|
133
|
+
*/
|
|
134
|
+
involvesCrossBorderTransfer?: boolean;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export type { DPIAQuestion as D, DPIASection as a, DPIAResult as b, DPIARisk as c };
|