@tantainnovative/ndpr-toolkit 3.4.1 → 3.5.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.
Files changed (177) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/adapters.d.mts +34 -25
  3. package/dist/adapters.d.ts +34 -25
  4. package/dist/breach.d.mts +803 -44
  5. package/dist/breach.d.ts +803 -44
  6. package/dist/breach.js +1 -1
  7. package/dist/breach.mjs +1 -1
  8. package/dist/{chunk-ASLMPY54.js → chunk-3EGQWLJ6.js} +3 -3
  9. package/dist/chunk-B4Z5MBUC.mjs +2 -0
  10. package/dist/{chunk-LSCMXAPY.mjs → chunk-CKGJK4D7.mjs} +3 -3
  11. package/dist/{chunk-XSEZDQLB.js → chunk-CKJAECGV.js} +2 -2
  12. package/dist/{chunk-AHSMDPG5.js → chunk-CPK5D5FY.js} +2 -2
  13. package/dist/{chunk-DCJK5OZT.mjs → chunk-CWHBCQGT.mjs} +2 -2
  14. package/dist/{chunk-MLOWRZXO.mjs → chunk-F5TXUA4O.mjs} +3 -3
  15. package/dist/{chunk-BN77GP4W.mjs → chunk-GN5C32JB.mjs} +2 -2
  16. package/dist/{chunk-ZLSWOFAY.mjs → chunk-GRLIPT5V.mjs} +2 -2
  17. package/dist/{chunk-DUY6F3GT.mjs → chunk-H3EYBSVP.mjs} +3 -3
  18. package/dist/{chunk-NFJ4CB63.mjs → chunk-ID2NYIVE.mjs} +3 -3
  19. package/dist/chunk-J5WCPZLW.js +2 -0
  20. package/dist/{chunk-P2YV6DR3.js → chunk-LIM64IV2.js} +3 -3
  21. package/dist/chunk-LU7PKE7Y.mjs +2 -0
  22. package/dist/{chunk-HQSU7LGM.js → chunk-LWXZMKC2.js} +4 -4
  23. package/dist/{chunk-4BOEFDDE.js → chunk-ORFC66EA.js} +3 -3
  24. package/dist/{chunk-VTITKWGX.mjs → chunk-QSVVAZVT.mjs} +2 -2
  25. package/dist/chunk-SCWNM4PC.mjs +2 -0
  26. package/dist/{chunk-EHAZIKDX.js → chunk-SKKOMFXH.js} +2 -2
  27. package/dist/{chunk-WH6ZMUOS.mjs → chunk-TUNQUVHU.mjs} +2 -2
  28. package/dist/chunk-TV4U6AIS.js +2 -0
  29. package/dist/{chunk-ZYLDLGFL.js → chunk-VIQUXWJC.js} +2 -2
  30. package/dist/{chunk-SUEGUY35.js → chunk-XIM7KMD6.js} +2 -2
  31. package/dist/{chunk-P6QAFBCV.js → chunk-XNSZ7KUH.js} +2 -2
  32. package/dist/consent.d.mts +648 -84
  33. package/dist/consent.d.ts +648 -84
  34. package/dist/consent.js +1 -1
  35. package/dist/consent.mjs +1 -1
  36. package/dist/core.d.mts +2049 -23
  37. package/dist/core.d.ts +2049 -23
  38. package/dist/core.js +1 -1
  39. package/dist/core.mjs +1 -1
  40. package/dist/cross-border.d.mts +470 -99
  41. package/dist/cross-border.d.ts +470 -99
  42. package/dist/dpia.d.mts +591 -37
  43. package/dist/dpia.d.ts +591 -37
  44. package/dist/dsr.d.mts +654 -37
  45. package/dist/dsr.d.ts +654 -37
  46. package/dist/dsr.js +1 -1
  47. package/dist/dsr.mjs +1 -1
  48. package/dist/hooks.d.mts +2174 -30
  49. package/dist/hooks.d.ts +2174 -30
  50. package/dist/hooks.js +1 -1
  51. package/dist/hooks.mjs +1 -1
  52. package/dist/index.d.mts +4428 -43
  53. package/dist/index.d.ts +4428 -43
  54. package/dist/index.js +1 -1
  55. package/dist/index.mjs +1 -1
  56. package/dist/lawful-basis.d.mts +368 -32
  57. package/dist/lawful-basis.d.ts +368 -32
  58. package/dist/policy.d.mts +1178 -83
  59. package/dist/policy.d.ts +1178 -83
  60. package/dist/policy.js +1 -1
  61. package/dist/policy.mjs +1 -1
  62. package/dist/presets.d.mts +1020 -114
  63. package/dist/presets.d.ts +1020 -114
  64. package/dist/presets.js +1 -1
  65. package/dist/presets.mjs +1 -1
  66. package/dist/ropa.d.mts +396 -31
  67. package/dist/ropa.d.ts +396 -31
  68. package/dist/ropa.js +1 -1
  69. package/dist/ropa.mjs +1 -1
  70. package/dist/server.d.mts +2133 -24
  71. package/dist/server.d.ts +2133 -24
  72. package/dist/server.js +1 -1
  73. package/dist/server.mjs +1 -1
  74. package/dist/unstyled.d.mts +523 -55
  75. package/dist/unstyled.d.ts +523 -55
  76. package/dist/unstyled.js +1 -1
  77. package/dist/unstyled.mjs +1 -1
  78. package/package.json +3 -3
  79. package/dist/BreachReportForm-DpRrBoxU.d.ts +0 -158
  80. package/dist/BreachReportForm-yJ2Zl6gz.d.mts +0 -158
  81. package/dist/ConsentBanner-F5ayys5K.d.mts +0 -156
  82. package/dist/ConsentBanner-VqIPophc.d.ts +0 -156
  83. package/dist/ConsentManager-C7I3PDe8.d.mts +0 -105
  84. package/dist/ConsentManager-CQ2IZtUU.d.ts +0 -105
  85. package/dist/CrossBorderTransferManager-D5Lc0e46.d.ts +0 -90
  86. package/dist/CrossBorderTransferManager-DkZhv9vD.d.mts +0 -90
  87. package/dist/DPIAQuestionnaire-VXBoWFMC.d.ts +0 -123
  88. package/dist/DPIAQuestionnaire-jkt1Veb6.d.mts +0 -123
  89. package/dist/DSRRequestForm-D8rPTNmU.d.ts +0 -146
  90. package/dist/DSRRequestForm-DRouEr9j.d.mts +0 -146
  91. package/dist/DSRTracker-Bl__d4df.d.ts +0 -163
  92. package/dist/DSRTracker-CSVDfgQQ.d.mts +0 -163
  93. package/dist/LawfulBasisTracker-CBqOxX1D.d.mts +0 -85
  94. package/dist/LawfulBasisTracker-Cg30NbDA.d.ts +0 -85
  95. package/dist/NDPRDashboard-CLJpEg0X.d.mts +0 -44
  96. package/dist/NDPRDashboard-DDWNd2Ah.d.ts +0 -44
  97. package/dist/NDPRProvider-DYFb8xEl.d.ts +0 -68
  98. package/dist/NDPRProvider-U3QNu6MA.d.mts +0 -68
  99. package/dist/PolicyExporter-Bgi6nz82.d.mts +0 -291
  100. package/dist/PolicyExporter-BnvuFncj.d.ts +0 -291
  101. package/dist/ROPAManager-BS4eB8Hw.d.mts +0 -79
  102. package/dist/ROPAManager-qxTrXLkD.d.ts +0 -79
  103. package/dist/RegulatoryReportGenerator-BUYgzTTT.d.ts +0 -282
  104. package/dist/RegulatoryReportGenerator-DwcHcEFp.d.mts +0 -282
  105. package/dist/StepIndicator-CgrlokSV.d.ts +0 -171
  106. package/dist/StepIndicator-W8S_QjgO.d.mts +0 -171
  107. package/dist/breach-B_-6lDqS.d.mts +0 -17
  108. package/dist/breach-CzXqSsaY.d.ts +0 -17
  109. package/dist/breach-Eu9byel8.d.mts +0 -185
  110. package/dist/breach-Eu9byel8.d.ts +0 -185
  111. package/dist/chunk-2L7BSG7G.mjs +0 -2
  112. package/dist/chunk-5X32J5IA.mjs +0 -2
  113. package/dist/chunk-7D2OIPHH.mjs +0 -2
  114. package/dist/chunk-JKKRPS4P.js +0 -2
  115. package/dist/chunk-UHTJ6UFW.js +0 -2
  116. package/dist/compliance-score-racQe_E_.d.mts +0 -115
  117. package/dist/compliance-score-racQe_E_.d.ts +0 -115
  118. package/dist/consent-CmVzqZUk.d.mts +0 -99
  119. package/dist/consent-CmVzqZUk.d.ts +0 -99
  120. package/dist/consent-audit-BdByjYlM.d.mts +0 -65
  121. package/dist/consent-audit-DhbfMR0n.d.ts +0 -65
  122. package/dist/cross-border-BBi9rZyO.d.mts +0 -54
  123. package/dist/cross-border-Dy-U9Hu6.d.ts +0 -54
  124. package/dist/cross-border-UyT00llA.d.mts +0 -141
  125. package/dist/cross-border-UyT00llA.d.ts +0 -141
  126. package/dist/docx-4n8g4zul.d.mts +0 -64
  127. package/dist/docx-VvcTLYZM.d.ts +0 -64
  128. package/dist/dpia-D82hUrJe.d.ts +0 -15
  129. package/dist/dpia-DQDFw2_l.d.mts +0 -15
  130. package/dist/dpia-c9GiiOq0.d.mts +0 -137
  131. package/dist/dpia-c9GiiOq0.d.ts +0 -137
  132. package/dist/dsr-CIx5sd7e.d.ts +0 -14
  133. package/dist/dsr-XZ_HqTlA.d.mts +0 -14
  134. package/dist/dsr-yKbqX531.d.mts +0 -128
  135. package/dist/dsr-yKbqX531.d.ts +0 -128
  136. package/dist/lawful-basis-BEyI0kGg.d.ts +0 -57
  137. package/dist/lawful-basis-C2eGaoHM.d.mts +0 -57
  138. package/dist/lawful-basis-Cv1VmDLn.d.mts +0 -112
  139. package/dist/lawful-basis-Cv1VmDLn.d.ts +0 -112
  140. package/dist/locale-CxJx2tzn.d.mts +0 -25
  141. package/dist/locale-DSkrtf-c.d.ts +0 -25
  142. package/dist/policy-engine-5qTfp2z4.d.mts +0 -174
  143. package/dist/policy-engine-DzPxskOK.d.ts +0 -174
  144. package/dist/policy-sections-9tCb7VU7.d.ts +0 -56
  145. package/dist/policy-sections-CBWcJv-R.d.mts +0 -56
  146. package/dist/policy-templates-DhLwq4R-.d.ts +0 -43
  147. package/dist/policy-templates-DwYl2329.d.mts +0 -43
  148. package/dist/privacy-Ca6te9Ir.d.mts +0 -138
  149. package/dist/privacy-Ca6te9Ir.d.ts +0 -138
  150. package/dist/ropa-BDTM06tr.d.ts +0 -152
  151. package/dist/ropa-CFHuT7jE.d.mts +0 -152
  152. package/dist/ropa-CyynscU6.d.ts +0 -51
  153. package/dist/ropa-NIgxd8uP.d.mts +0 -51
  154. package/dist/sanitize-CxxwKxAx.d.mts +0 -94
  155. package/dist/sanitize-CxxwKxAx.d.ts +0 -94
  156. package/dist/styling-BMDGQDgS.d.mts +0 -64
  157. package/dist/styling-BaoQtV06.d.ts +0 -64
  158. package/dist/types-DK2CoKOC.d.mts +0 -10
  159. package/dist/types-DK2CoKOC.d.ts +0 -10
  160. package/dist/useAdaptivePolicyWizard-BSLyltzZ.d.mts +0 -52
  161. package/dist/useAdaptivePolicyWizard-CL7C7MTZ.d.ts +0 -52
  162. package/dist/useBreach-CPr86Yan.d.mts +0 -115
  163. package/dist/useBreach-DkVXvtJK.d.ts +0 -115
  164. package/dist/useConsent-DCNkIJHR.d.mts +0 -75
  165. package/dist/useConsent-dOcELSfX.d.ts +0 -75
  166. package/dist/useCrossBorderTransfer-DixjLjN1.d.mts +0 -78
  167. package/dist/useCrossBorderTransfer-DvSq06lv.d.ts +0 -78
  168. package/dist/useDPIA-B6180UQn.d.mts +0 -109
  169. package/dist/useDPIA-CTqbNbww.d.ts +0 -109
  170. package/dist/useDSR-WvHk8_iu.d.mts +0 -85
  171. package/dist/useDSR-wH4H6hSM.d.ts +0 -85
  172. package/dist/useDefaultPrivacyPolicy-Cs2WQSYQ.d.mts +0 -162
  173. package/dist/useDefaultPrivacyPolicy-DkOqMg2e.d.ts +0 -162
  174. package/dist/useLawfulBasis-CKJ-kw84.d.mts +0 -79
  175. package/dist/useLawfulBasis-DFTmu1ca.d.ts +0 -79
  176. package/dist/useROPA-BSSU1rfx.d.ts +0 -76
  177. package/dist/useROPA-C2hjaBTz.d.mts +0 -76
@@ -1,32 +1,368 @@
1
- import { b as LawfulBasisTrackerProps } from './LawfulBasisTracker-Cg30NbDA.js';
2
- export { L as LawfulBasisTracker } from './LawfulBasisTracker-Cg30NbDA.js';
3
- import { U as UseLawfulBasisReturn } from './useLawfulBasis-DFTmu1ca.js';
4
- export { u as useLawfulBasis } from './useLawfulBasis-DFTmu1ca.js';
5
- export { L as LawfulBasisComplianceGap, a as LawfulBasisValidationResult, b as assessComplianceGaps, g as generateLawfulBasisSummary, c as getLawfulBasisDescription, v as validateProcessingActivity } from './lawful-basis-BEyI0kGg.js';
6
- import { P as ProcessingActivity } from './lawful-basis-Cv1VmDLn.js';
7
- export { a as LawfulBasisSummary, L as LawfulBasisType, b as LegitimateInterestAssessment, S as SensitiveDataCondition } from './lawful-basis-Cv1VmDLn.js';
8
- import * as React from 'react';
9
- import React__default from 'react';
10
- import { S as StorageAdapter } from './types-DK2CoKOC.js';
11
-
12
- interface LawfulBasisProviderProps {
13
- adapter?: StorageAdapter<ProcessingActivity[]>;
14
- storageKey?: string;
15
- useLocalStorage?: boolean;
16
- initialActivities?: ProcessingActivity[];
17
- onAdd?: (activity: ProcessingActivity) => void;
18
- onUpdate?: (activity: ProcessingActivity) => void;
19
- onRemove?: (id: string) => void;
20
- children: React__default.ReactNode;
21
- }
22
- declare const LawfulBasisProvider: React__default.FC<LawfulBasisProviderProps>;
23
-
24
- declare const LawfulBasis: {
25
- Provider: React.FC<LawfulBasisProviderProps>;
26
- Tracker: React.FC<LawfulBasisTrackerProps>;
27
- };
28
-
29
- type LawfulBasisContextValue = UseLawfulBasisReturn;
30
- declare function useLawfulBasisCompound(): LawfulBasisContextValue;
31
-
32
- export { LawfulBasis, LawfulBasisProvider, type LawfulBasisProviderProps, ProcessingActivity, StorageAdapter, UseLawfulBasisReturn, useLawfulBasisCompound };
1
+ import * as React_2 from 'react';
2
+ import React__default from 'react';
3
+
4
+ /**
5
+ * Analyzes all processing activities and returns compliance gaps including
6
+ * missing DPO approval, overdue reviews, undocumented justifications,
7
+ * missing LIA for legitimate interests, and other documentation issues.
8
+ *
9
+ * @param activities Array of processing activities to analyze
10
+ * @returns Array of identified compliance gaps
11
+ */
12
+ export declare function assessComplianceGaps(activities: ProcessingActivity[]): LawfulBasisComplianceGap[];
13
+
14
+ /**
15
+ * Generates a summary of all lawful basis documentation across processing activities.
16
+ *
17
+ * @param activities Array of processing activities to summarize
18
+ * @returns LawfulBasisSummary with counts, breakdowns, and flagged activities
19
+ */
20
+ export declare function generateLawfulBasisSummary(activities: ProcessingActivity[]): LawfulBasisSummary;
21
+
22
+ /**
23
+ * Returns a human-readable description of a lawful basis with the relevant
24
+ * NDPA section reference.
25
+ *
26
+ * @param basis The lawful basis to describe
27
+ * @returns Description string including NDPA section reference
28
+ */
29
+ export declare function getLawfulBasisDescription(basis: LawfulBasisType): string;
30
+
31
+ export declare const LawfulBasis: {
32
+ Provider: React_2.FC<LawfulBasisProviderProps>;
33
+ Tracker: React_2.FC<LawfulBasisTrackerProps>;
34
+ };
35
+
36
+ /**
37
+ * Compliance gap identified across processing activities
38
+ */
39
+ export declare interface LawfulBasisComplianceGap {
40
+ activityId: string;
41
+ activityName: string;
42
+ type: 'missing_approval' | 'overdue_review' | 'missing_justification' | 'missing_lia' | 'missing_sensitive_condition' | 'missing_retention' | 'missing_data_categories' | 'missing_purposes';
43
+ severity: 'high' | 'medium' | 'low';
44
+ description: string;
45
+ }
46
+
47
+ declare type LawfulBasisContextValue = UseLawfulBasisReturn;
48
+
49
+ export declare const LawfulBasisProvider: React__default.FC<LawfulBasisProviderProps>;
50
+
51
+ export declare interface LawfulBasisProviderProps {
52
+ adapter?: StorageAdapter<ProcessingActivity[]>;
53
+ storageKey?: string;
54
+ useLocalStorage?: boolean;
55
+ initialActivities?: ProcessingActivity[];
56
+ onAdd?: (activity: ProcessingActivity) => void;
57
+ onUpdate?: (activity: ProcessingActivity) => void;
58
+ onRemove?: (id: string) => void;
59
+ children: React__default.ReactNode;
60
+ }
61
+
62
+ /**
63
+ * Summary of all lawful basis documentation for compliance reporting
64
+ */
65
+ export declare interface LawfulBasisSummary {
66
+ /** Total number of processing activities */
67
+ totalActivities: number;
68
+ /** Breakdown by lawful basis */
69
+ byBasis: Record<LawfulBasisType, number>;
70
+ /** Number of activities involving sensitive data */
71
+ sensitiveDataActivities: number;
72
+ /** Number of activities involving cross-border transfers */
73
+ crossBorderActivities: number;
74
+ /** Activities due for review */
75
+ activitiesDueForReview: ProcessingActivity[];
76
+ /** Activities without DPO approval */
77
+ activitiesWithoutApproval: ProcessingActivity[];
78
+ /** Last updated timestamp */
79
+ lastUpdated: number;
80
+ }
81
+
82
+ /**
83
+ * Lawful basis tracker component. Implements NDPA Section 25 requirements for documenting
84
+ * and tracking the lawful basis for each personal data processing activity.
85
+ */
86
+ export declare const LawfulBasisTracker: React__default.FC<LawfulBasisTrackerProps>;
87
+
88
+ declare interface LawfulBasisTrackerClassNames {
89
+ root?: string;
90
+ header?: string;
91
+ title?: string;
92
+ summary?: string;
93
+ summaryCard?: string;
94
+ table?: string;
95
+ tableHeader?: string;
96
+ tableRow?: string;
97
+ form?: string;
98
+ input?: string;
99
+ select?: string;
100
+ submitButton?: string;
101
+ /** Alias for submitButton */
102
+ primaryButton?: string;
103
+ statusBadge?: string;
104
+ complianceScore?: string;
105
+ gapAlert?: string;
106
+ }
107
+
108
+ declare interface LawfulBasisTrackerProps {
109
+ /**
110
+ * List of processing activities to display
111
+ */
112
+ activities: ProcessingActivity[];
113
+ /**
114
+ * Callback when a new activity is created
115
+ */
116
+ onAddActivity?: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => void;
117
+ /**
118
+ * Callback when an activity is updated
119
+ */
120
+ onUpdateActivity?: (id: string, updates: Partial<ProcessingActivity>) => void;
121
+ /**
122
+ * Callback when an activity is archived
123
+ */
124
+ onArchiveActivity?: (id: string) => void;
125
+ /**
126
+ * Title displayed on the tracker
127
+ * @default "Lawful Basis Tracker"
128
+ */
129
+ title?: string;
130
+ /**
131
+ * Description text displayed on the tracker
132
+ * @default "Document and track the lawful basis for each processing activity as required by NDPA 2023 Section 25."
133
+ */
134
+ description?: string;
135
+ /**
136
+ * Custom CSS class for the tracker container
137
+ */
138
+ className?: string;
139
+ /**
140
+ * Custom CSS class for buttons
141
+ */
142
+ buttonClassName?: string;
143
+ /**
144
+ * Whether to show the compliance summary at the top
145
+ * @default true
146
+ */
147
+ showSummary?: boolean;
148
+ /**
149
+ * Whether to show compliance gap alerts
150
+ * @default true
151
+ */
152
+ showComplianceGaps?: boolean;
153
+ /**
154
+ * Override class names for individual sections of the component.
155
+ * Takes priority over className / buttonClassName.
156
+ */
157
+ classNames?: LawfulBasisTrackerClassNames;
158
+ /**
159
+ * When true, all default styling is removed so consumers
160
+ * can style from scratch using classNames.
161
+ */
162
+ unstyled?: boolean;
163
+ }
164
+
165
+ /**
166
+ * Lawful Basis types aligned with NDPA 2023 Part III (Sections 24-28)
167
+ * Every processing activity must have a documented lawful basis
168
+ */
169
+ /**
170
+ * The six lawful bases for processing personal data per NDPA Section 25(1)
171
+ */
172
+ export declare type LawfulBasisType = 'consent' | 'contract' | 'legal_obligation' | 'vital_interests' | 'public_interest' | 'legitimate_interests';
173
+
174
+ /**
175
+ * Validation result for a processing activity
176
+ */
177
+ export declare interface LawfulBasisValidationResult {
178
+ isValid: boolean;
179
+ errors: string[];
180
+ warnings: string[];
181
+ }
182
+
183
+ /**
184
+ * Represents a Legitimate Interest Assessment (LIA)
185
+ * Required when the lawful basis is 'legitimate_interests'
186
+ */
187
+ export declare interface LegitimateInterestAssessment {
188
+ /** Unique identifier */
189
+ id: string;
190
+ /** ID of the associated processing activity */
191
+ processingActivityId: string;
192
+ /** Date the assessment was conducted */
193
+ assessmentDate: number;
194
+ /** Person who conducted the assessment */
195
+ assessor: {
196
+ name: string;
197
+ role: string;
198
+ email: string;
199
+ };
200
+ /** Description of the legitimate interest being pursued */
201
+ purposeTest: string;
202
+ /** Why the processing is necessary for this purpose */
203
+ necessityTest: string;
204
+ /** Balancing test: rights of data subject vs. legitimate interest */
205
+ balancingTest: string;
206
+ /** Safeguards applied to protect data subject rights */
207
+ safeguards: string[];
208
+ /** Overall conclusion */
209
+ conclusion: string;
210
+ /** Whether the assessment concluded the processing is justified */
211
+ approved: boolean;
212
+ }
213
+
214
+ /**
215
+ * Represents a processing activity and its lawful basis
216
+ */
217
+ export declare interface ProcessingActivity {
218
+ /** Unique identifier */
219
+ id: string;
220
+ /** Name of the processing activity */
221
+ name: string;
222
+ /** Description of what processing is performed */
223
+ description: string;
224
+ /** The lawful basis for this processing activity */
225
+ lawfulBasis: LawfulBasisType;
226
+ /** Justification for why this lawful basis applies */
227
+ lawfulBasisJustification: string;
228
+ /** Categories of personal data being processed */
229
+ dataCategories: string[];
230
+ /** Whether sensitive personal data is involved */
231
+ involvesSensitiveData: boolean;
232
+ /** Condition for processing sensitive data (required if involvesSensitiveData is true) */
233
+ sensitiveDataCondition?: SensitiveDataCondition;
234
+ /** Categories of data subjects */
235
+ dataSubjectCategories: string[];
236
+ /** Purposes of the processing */
237
+ purposes: string[];
238
+ /** Data retention period */
239
+ retentionPeriod: string;
240
+ /** Justification for the retention period */
241
+ retentionJustification?: string;
242
+ /** Recipients or categories of recipients */
243
+ recipients?: string[];
244
+ /** Whether data is transferred outside Nigeria */
245
+ crossBorderTransfer: boolean;
246
+ /** Timestamp when the record was created */
247
+ createdAt: number;
248
+ /** Timestamp when the record was last updated */
249
+ updatedAt: number;
250
+ /** Next review date */
251
+ reviewDate?: number;
252
+ /** Status of the processing activity */
253
+ status: 'active' | 'inactive' | 'under_review' | 'archived';
254
+ /** DPO approval details */
255
+ dpoApproval?: {
256
+ approved: boolean;
257
+ approvedBy: string;
258
+ approvedAt: number;
259
+ notes?: string;
260
+ };
261
+ }
262
+
263
+ /**
264
+ * Additional conditions required for processing sensitive personal data
265
+ * per NDPA Section 27
266
+ */
267
+ export declare type SensitiveDataCondition = 'explicit_consent' | 'employment_law' | 'vital_interests_incapable' | 'nonprofit_legitimate' | 'publicly_available' | 'legal_claims' | 'substantial_public_interest' | 'health_purposes' | 'public_health' | 'archiving_research';
268
+
269
+ export declare interface StorageAdapter<T = unknown> {
270
+ /** Load persisted data. Called once on hook mount. */
271
+ load(): T | null | Promise<T | null>;
272
+ /** Persist data. Called on every state change. */
273
+ save(data: T): void | Promise<void>;
274
+ /** Clear persisted data. Called on reset. */
275
+ remove(): void | Promise<void>;
276
+ }
277
+
278
+ /**
279
+ * Hook for managing lawful basis documentation for processing activities
280
+ * in compliance with NDPA 2023 Section 25.
281
+ */
282
+ export declare function useLawfulBasis({ initialActivities, adapter, storageKey, useLocalStorage, onAdd, onUpdate, onRemove, }?: UseLawfulBasisOptions): UseLawfulBasisReturn;
283
+
284
+ export declare function useLawfulBasisCompound(): LawfulBasisContextValue;
285
+
286
+ declare interface UseLawfulBasisOptions {
287
+ /**
288
+ * Initial processing activities to load
289
+ */
290
+ initialActivities?: ProcessingActivity[];
291
+ /**
292
+ * Pluggable storage adapter. When provided, takes precedence over storageKey/useLocalStorage.
293
+ */
294
+ adapter?: StorageAdapter<ProcessingActivity[]>;
295
+ /**
296
+ * Storage key for persisting activities
297
+ * @default "ndpr_lawful_basis_activities"
298
+ * @deprecated Use adapter instead
299
+ */
300
+ storageKey?: string;
301
+ /**
302
+ * Whether to use local storage to persist activities
303
+ * @default true
304
+ * @deprecated Use adapter instead
305
+ */
306
+ useLocalStorage?: boolean;
307
+ /**
308
+ * Callback when an activity is added
309
+ */
310
+ onAdd?: (activity: ProcessingActivity) => void;
311
+ /**
312
+ * Callback when an activity is updated
313
+ */
314
+ onUpdate?: (activity: ProcessingActivity) => void;
315
+ /**
316
+ * Callback when an activity is removed
317
+ */
318
+ onRemove?: (id: string) => void;
319
+ }
320
+
321
+ export declare interface UseLawfulBasisReturn {
322
+ /**
323
+ * All processing activities
324
+ */
325
+ activities: ProcessingActivity[];
326
+ /**
327
+ * Add a new processing activity
328
+ */
329
+ addActivity: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => ProcessingActivity;
330
+ /**
331
+ * Update an existing processing activity
332
+ */
333
+ updateActivity: (id: string, updates: Partial<ProcessingActivity>) => ProcessingActivity | null;
334
+ /**
335
+ * Remove a processing activity
336
+ */
337
+ removeActivity: (id: string) => void;
338
+ /**
339
+ * Get a specific processing activity by ID
340
+ */
341
+ getActivity: (id: string) => ProcessingActivity | null;
342
+ /**
343
+ * Get a summary of all lawful basis documentation
344
+ */
345
+ getSummary: () => LawfulBasisSummary;
346
+ /**
347
+ * Validate a processing activity
348
+ */
349
+ validateActivity: (activity: ProcessingActivity) => LawfulBasisValidationResult;
350
+ /**
351
+ * Whether the adapter is still loading data (relevant for async adapters)
352
+ */
353
+ isLoading: boolean;
354
+ }
355
+
356
+ /**
357
+ * Validates that all required fields are present on a processing activity
358
+ * and that the lawful basis is properly documented.
359
+ *
360
+ * If lawfulBasis is 'legitimate_interests', ensures a LIA justification exists.
361
+ * If involvesSensitiveData is true, ensures sensitiveDataCondition is set.
362
+ *
363
+ * @param activity The processing activity to validate
364
+ * @returns Validation result with errors and warnings
365
+ */
366
+ export declare function validateProcessingActivity(activity: ProcessingActivity): LawfulBasisValidationResult;
367
+
368
+ export { }