@tantainnovative/ndpr-toolkit 3.5.1 → 3.5.5

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 +100 -0
  2. package/README.md +12 -7
  3. package/dist/adapters.js +1 -2
  4. package/dist/adapters.mjs +1 -2
  5. package/dist/breach.d.mts +80 -1
  6. package/dist/breach.d.ts +80 -1
  7. package/dist/breach.js +1 -2
  8. package/dist/breach.mjs +1 -2
  9. package/dist/{chunk-PATONNTZ.mjs → chunk-3HOXQNCH.mjs} +1 -2
  10. package/dist/{chunk-MJGOLP5M.js → chunk-3IA3KDII.js} +1 -2
  11. package/dist/{chunk-M2TPT5GB.js → chunk-3JPDTXGC.js} +1 -2
  12. package/dist/{chunk-BKRETVJ6.js → chunk-3YTAOT5O.js} +1 -2
  13. package/dist/{chunk-GOU6FU6Y.js → chunk-4CVBQC66.js} +1 -2
  14. package/dist/{chunk-E4NCJ7RD.mjs → chunk-4G3SRVRI.mjs} +1 -2
  15. package/dist/{chunk-6QPRDQZF.js → chunk-4QXTB3L6.js} +1 -2
  16. package/dist/{chunk-XNSZ7KUH.js → chunk-5GVMKUMP.js} +1 -2
  17. package/dist/chunk-66NQ5CVY.mjs +1 -0
  18. package/dist/{chunk-JBSCER34.js → chunk-6NXXQYQL.js} +1 -2
  19. package/dist/chunk-732C2EVN.js +1 -0
  20. package/dist/chunk-7BJXI2HI.mjs +1 -0
  21. package/dist/{chunk-C5QO3SX4.js → chunk-7IFSWCQP.js} +1 -2
  22. package/dist/{chunk-A4PK7JB2.js → chunk-7ZZO7GVB.js} +1 -2
  23. package/dist/chunk-AME4HJR4.js +1 -0
  24. package/dist/chunk-AOHKVFAS.mjs +322 -0
  25. package/dist/{chunk-HO5M7M4M.js → chunk-B46SJB5V.js} +1 -2
  26. package/dist/chunk-BFAX7JQA.mjs +1 -0
  27. package/dist/{chunk-ID2NYIVE.mjs → chunk-BNHQFZHL.mjs} +2 -3
  28. package/dist/{chunk-RLYTX3MM.js → chunk-BRS52EDT.js} +1 -2
  29. package/dist/{chunk-OPYQIJKY.js → chunk-C7IDR2IV.js} +1 -2
  30. package/dist/{chunk-CISJAQ6W.mjs → chunk-COD3RMTL.mjs} +1 -2
  31. package/dist/chunk-CR2QZTGW.js +1 -0
  32. package/dist/{chunk-6WIP33TW.mjs → chunk-DBZSN4WP.mjs} +1 -2
  33. package/dist/{chunk-74Z23WUA.mjs → chunk-EEQALYOY.mjs} +1 -2
  34. package/dist/chunk-EFIBHKQE.mjs +1 -0
  35. package/dist/{chunk-GKKAK6ES.mjs → chunk-EWVK45Z3.mjs} +1 -2
  36. package/dist/{chunk-QSVVAZVT.mjs → chunk-EXEXUAF6.mjs} +1 -2
  37. package/dist/chunk-EZCGTHQV.js +6 -0
  38. package/dist/{chunk-SYMQJO2W.mjs → chunk-GTYXVAJX.mjs} +2 -3
  39. package/dist/{chunk-6FGCGLH5.mjs → chunk-H3XJV2IR.mjs} +1 -2
  40. package/dist/chunk-HBLGN4SD.js +1 -0
  41. package/dist/{chunk-MCWV7S2G.js → chunk-HHK5LHEG.js} +1 -2
  42. package/dist/{chunk-XHROISIF.mjs → chunk-HWHBINVN.mjs} +1 -2
  43. package/dist/{chunk-3EGQWLJ6.js → chunk-I2LMQWK3.js} +2 -3
  44. package/dist/{chunk-NQNFS3QI.js → chunk-I3Y4LOSL.js} +4 -5
  45. package/dist/chunk-ITCY2Z66.mjs +4 -0
  46. package/dist/{chunk-Z6IIMLZU.mjs → chunk-KDAZQO3N.mjs} +1 -2
  47. package/dist/{chunk-J5WCPZLW.js → chunk-L2BRFMVS.js} +1 -2
  48. package/dist/chunk-L2VO3MEJ.js +1 -0
  49. package/dist/{chunk-R5FW5XUQ.mjs → chunk-LQTARVPU.mjs} +1 -2
  50. package/dist/{chunk-6TA2MVTU.mjs → chunk-LRRENTT5.mjs} +1 -2
  51. package/dist/{chunk-LIM64IV2.js → chunk-LVGT3DLT.js} +2 -3
  52. package/dist/{chunk-TXBZPCGF.mjs → chunk-LWIKDDSU.mjs} +1 -2
  53. package/dist/chunk-MPBPAEZC.mjs +1 -0
  54. package/dist/{chunk-Z73T6MWY.js → chunk-N3MQQUQP.js} +39 -35
  55. package/dist/{chunk-RY3PGVLZ.mjs → chunk-NBZUZYTB.mjs} +1 -2
  56. package/dist/{chunk-HGGLW5TE.js → chunk-NUWVPRNI.js} +1 -2
  57. package/dist/chunk-O45PKBZA.mjs +6 -0
  58. package/dist/chunk-O6CUBNXK.mjs +3 -0
  59. package/dist/{chunk-7SMLHZ4B.js → chunk-P4LNLCSF.js} +1 -2
  60. package/dist/{chunk-VWPGIES4.mjs → chunk-PCU6GKBE.mjs} +1 -2
  61. package/dist/chunk-PGI2LM6P.js +103 -0
  62. package/dist/{chunk-U62QYKVG.mjs → chunk-PJNKQPQP.mjs} +1 -2
  63. package/dist/{chunk-LSNL4XR5.js → chunk-PZRQWPWD.js} +1 -2
  64. package/dist/chunk-Q64735OC.js +144 -0
  65. package/dist/chunk-QPRYXVH2.js +1 -0
  66. package/dist/{chunk-MQFZHA2D.js → chunk-RFPLZDIO.js} +1 -2
  67. package/dist/chunk-RMQ7OLNY.mjs +144 -0
  68. package/dist/{chunk-2AW7KAZO.mjs → chunk-RPXRPGHL.mjs} +1 -2
  69. package/dist/chunk-RYREGZVQ.js +1 -0
  70. package/dist/{chunk-B4Z5MBUC.mjs → chunk-RZ6GC6WN.mjs} +1 -2
  71. package/dist/chunk-S6COXIZA.js +2 -0
  72. package/dist/chunk-SFGW37LE.mjs +1 -0
  73. package/dist/{chunk-3NQQSU4P.js → chunk-SJDDNB6M.js} +1 -2
  74. package/dist/{chunk-H3EYBSVP.mjs → chunk-TMXK4QKK.mjs} +2 -3
  75. package/dist/{chunk-P42Z5CFE.js → chunk-TQZWJGJ2.js} +1 -2
  76. package/dist/{chunk-EPT2K355.mjs → chunk-U5RWJRGA.mjs} +1 -2
  77. package/dist/{chunk-R3OYAJI6.mjs → chunk-UASG46LP.mjs} +1 -2
  78. package/dist/{chunk-RXL6CZAI.js → chunk-UAV7V4EM.js} +1 -2
  79. package/dist/chunk-UI536RU2.js +3 -0
  80. package/dist/{chunk-7AVN424U.js → chunk-UTFBKL73.js} +1 -2
  81. package/dist/{chunk-I54CDQGN.js → chunk-UXUMYP4L.js} +1 -2
  82. package/dist/{chunk-P3PULLYP.mjs → chunk-V7UFP6QU.mjs} +1 -2
  83. package/dist/{chunk-I4M2AA3N.js → chunk-VJTQXVAF.js} +1 -2
  84. package/dist/{chunk-ELKB2AFZ.js → chunk-VWED6UTN.js} +1 -2
  85. package/dist/{chunk-LU7PKE7Y.mjs → chunk-VYAL2TGT.mjs} +1 -2
  86. package/dist/chunk-W47OSMT6.js +2 -0
  87. package/dist/chunk-W65ZWTLD.mjs +1 -0
  88. package/dist/{chunk-5HL4UBFV.js → chunk-WDDCKYWA.js} +1 -2
  89. package/dist/{chunk-DJGS7SSN.mjs → chunk-WTGKZX7J.mjs} +1 -2
  90. package/dist/{chunk-TDDAYVKK.js → chunk-WZYCBW2R.js} +1 -2
  91. package/dist/chunk-X3GCGC3H.mjs +103 -0
  92. package/dist/chunk-XJO4DH3L.mjs +2 -0
  93. package/dist/{chunk-LWXZMKC2.js → chunk-XO3VQYTL.js} +7 -8
  94. package/dist/{chunk-IZCWCE7W.mjs → chunk-XOH4WXOZ.mjs} +1 -2
  95. package/dist/{chunk-SHMJNRHO.mjs → chunk-XP5PL6K7.mjs} +1 -2
  96. package/dist/{chunk-CKGJK4D7.mjs → chunk-Y3MKMAFQ.mjs} +2 -3
  97. package/dist/chunk-YFBDJ4FH.js +1 -0
  98. package/dist/chunk-YTU4FNM2.mjs +1 -0
  99. package/dist/{chunk-TV4U6AIS.js → chunk-Z763UI5U.js} +1 -2
  100. package/dist/chunk-ZHFLBL63.mjs +2 -0
  101. package/dist/{chunk-RRVKUCFR.mjs → chunk-ZIZL37BG.mjs} +1 -2
  102. package/dist/{chunk-WWT2ZSNU.mjs → chunk-ZJYULEER.mjs} +1 -2
  103. package/dist/{chunk-LJNNPAFU.mjs → chunk-ZQZJNKVB.mjs} +1 -2
  104. package/dist/chunk-ZVOIR4QH.js +4 -0
  105. package/dist/consent.js +1 -2
  106. package/dist/consent.mjs +1 -2
  107. package/dist/core.d.mts +98 -19
  108. package/dist/core.d.ts +98 -19
  109. package/dist/core.js +1 -2
  110. package/dist/core.mjs +1 -2
  111. package/dist/cross-border.d.mts +36 -14
  112. package/dist/cross-border.d.ts +36 -14
  113. package/dist/cross-border.js +1 -2
  114. package/dist/cross-border.mjs +1 -2
  115. package/dist/dpia.d.mts +4 -4
  116. package/dist/dpia.d.ts +4 -4
  117. package/dist/dpia.js +1 -2
  118. package/dist/dpia.mjs +1 -2
  119. package/dist/dsr.d.mts +30 -17
  120. package/dist/dsr.d.ts +30 -17
  121. package/dist/dsr.js +1 -2
  122. package/dist/dsr.mjs +1 -2
  123. package/dist/hooks.d.mts +113 -20
  124. package/dist/hooks.d.ts +113 -20
  125. package/dist/hooks.js +1 -2
  126. package/dist/hooks.mjs +1 -2
  127. package/dist/index.d.mts +422 -26
  128. package/dist/index.d.ts +422 -26
  129. package/dist/index.js +1 -2
  130. package/dist/index.mjs +1 -2
  131. package/dist/lawful-basis.js +1 -2
  132. package/dist/lawful-basis.mjs +1 -2
  133. package/dist/policy.js +1 -2
  134. package/dist/policy.mjs +1 -2
  135. package/dist/presets.d.mts +54 -5
  136. package/dist/presets.d.ts +54 -5
  137. package/dist/presets.js +1 -2
  138. package/dist/presets.mjs +1 -2
  139. package/dist/ropa.js +1 -2
  140. package/dist/ropa.mjs +1 -2
  141. package/dist/server.d.mts +89 -19
  142. package/dist/server.d.ts +89 -19
  143. package/dist/server.js +1 -2
  144. package/dist/server.mjs +1 -2
  145. package/dist/styles.css +34 -0
  146. package/dist/unstyled.d.mts +3 -1
  147. package/dist/unstyled.d.ts +3 -1
  148. package/dist/unstyled.js +1 -2
  149. package/dist/unstyled.mjs +1 -2
  150. package/package.json +59 -20
  151. package/dist/chunk-3VQAYQR7.js +0 -7
  152. package/dist/chunk-6HZL2WDU.mjs +0 -2
  153. package/dist/chunk-75TJPK2N.mjs +0 -2
  154. package/dist/chunk-ABDB7LEV.mjs +0 -2
  155. package/dist/chunk-AYKLAEOU.mjs +0 -2
  156. package/dist/chunk-C4YM4UMI.js +0 -2
  157. package/dist/chunk-CKJAECGV.js +0 -2
  158. package/dist/chunk-CPK5D5FY.js +0 -132
  159. package/dist/chunk-CWHBCQGT.mjs +0 -2
  160. package/dist/chunk-E64TU6IU.js +0 -2
  161. package/dist/chunk-F5TXUA4O.mjs +0 -4
  162. package/dist/chunk-GN5C32JB.mjs +0 -2
  163. package/dist/chunk-GRLIPT5V.mjs +0 -132
  164. package/dist/chunk-I557S566.mjs +0 -15
  165. package/dist/chunk-JFFOPHU3.mjs +0 -318
  166. package/dist/chunk-KF3EFJEF.mjs +0 -3
  167. package/dist/chunk-ORFC66EA.js +0 -4
  168. package/dist/chunk-S4GRSNB4.js +0 -2
  169. package/dist/chunk-SCWNM4PC.mjs +0 -2
  170. package/dist/chunk-SKKOMFXH.js +0 -81
  171. package/dist/chunk-TCN22KYP.mjs +0 -7
  172. package/dist/chunk-TUNQUVHU.mjs +0 -81
  173. package/dist/chunk-VIQUXWJC.js +0 -2
  174. package/dist/chunk-WTJGLNTB.js +0 -3
  175. package/dist/chunk-XIM7KMD6.js +0 -2
  176. package/dist/chunk-YPKUHSK4.js +0 -15
  177. package/dist/chunk-ZPKVLTSX.js +0 -2
package/dist/core.d.ts CHANGED
@@ -137,10 +137,51 @@ export declare interface BreachReport {
137
137
  affectedSystems: string[];
138
138
  /** Types of data involved in the breach */
139
139
  dataTypes: string[];
140
- /** Whether sensitive personal data is involved (NDPA Section 27) */
140
+ /** Whether sensitive personal data is involved (NDPA Section 30) */
141
141
  involvesSensitiveData?: boolean;
142
142
  /** Estimated number of data subjects affected */
143
143
  estimatedAffectedSubjects?: number;
144
+ /**
145
+ * Approximate number of personal data RECORDS concerned (distinct from subject count).
146
+ * Required content under NDPA Section 40(1)(a) and Section 40(2).
147
+ */
148
+ approximateRecordCount?: number;
149
+ /**
150
+ * Categories of data subjects affected (e.g. customers, employees, minors, patients).
151
+ * Required content under NDPA Section 40(1)(a) and Section 40(2).
152
+ */
153
+ dataSubjectCategories?: string[];
154
+ /**
155
+ * Likely consequences of the breach for affected data subjects (e.g. identity theft,
156
+ * financial loss, reputational damage). Reported to the NDPC and, where applicable,
157
+ * communicated to data subjects under Section 40(3).
158
+ */
159
+ likelyConsequences?: string;
160
+ /**
161
+ * Measures taken or proposed to mitigate adverse effects of the breach.
162
+ * Required content for Section 40(3) communications to data subjects.
163
+ */
164
+ mitigationMeasures?: string;
165
+ /**
166
+ * Whether this is a phased / interim report submitted before full investigation
167
+ * is complete. The NDPC permits phased reporting where complete information is
168
+ * not available within 72 hours.
169
+ */
170
+ isPhasedReport?: boolean;
171
+ /**
172
+ * ID of the prior phased report this report supplements, if any.
173
+ */
174
+ supplementsReportId?: string;
175
+ /**
176
+ * Data Protection Officer contact details. The DPO is the named contact point
177
+ * for the NDPC per NDPA Section 32(3)(c). Required content in the regulatory
178
+ * report (Section 40(2)).
179
+ */
180
+ dpoContact?: {
181
+ name: string;
182
+ email: string;
183
+ phone?: string;
184
+ };
144
185
  /** Whether the breach is ongoing or contained */
145
186
  status: 'ongoing' | 'contained' | 'resolved';
146
187
  /** Initial actions taken to address the breach */
@@ -796,20 +837,25 @@ export declare interface DsrSubmissionValidationResult {
796
837
  }
797
838
 
798
839
  /**
799
- * Data Subject Rights types aligned with NDPA 2023 Part IV (Sections 29-36)
840
+ * Data Subject Rights types aligned with NDPA 2023 Part VI (Sections 34-38)
841
+ * and the related provisions in Part V (Section 27 — information to the data subject)
842
+ * and Part X (Section 46 — complaint to the Commission).
843
+ *
844
+ * Note: These are guidance labels — not legal advice. Verify with your DPO or counsel.
800
845
  */
801
846
  /**
802
- * Types of data subject requests per NDPA Part IV
803
- * - 'information': Right to be informed (Section 29)
804
- * - 'access': Right of access (Section 30)
805
- * - 'rectification': Right to rectification (Section 31)
806
- * - 'erasure': Right to erasure (Section 32)
807
- * - 'restriction': Right to restrict processing (Section 33)
808
- * - 'portability': Right to data portability (Section 34)
809
- * - 'objection': Right to object (Section 35)
810
- * - 'automated_decision_making': Rights related to automated decision-making (Section 36)
847
+ * Types of data subject requests per NDPA Part VI
848
+ * - 'information': Right to be informed (Section 27 — provision of information; Section 34(1)(a))
849
+ * - 'access': Right of access / confirmation + data copy (Section 34(1)(a)–(b))
850
+ * - 'rectification': Right to rectification (Section 34(1)(c))
851
+ * - 'erasure': Right to erasure (Section 34(1)(d), Section 34(2))
852
+ * - 'restriction': Right to restrict processing (Section 34(1)(e))
853
+ * - 'portability': Right to data portability (Section 38)
854
+ * - 'objection': Right to object (Section 36)
855
+ * - 'automated_decision_making': Rights re. automated decisions / profiling (Section 37)
856
+ * - 'withdraw_consent': Right to withdraw consent (Section 35)
811
857
  */
812
- export declare type DSRType = 'information' | 'access' | 'rectification' | 'erasure' | 'restriction' | 'portability' | 'objection' | 'automated_decision_making';
858
+ export declare type DSRType = 'information' | 'access' | 'rectification' | 'erasure' | 'restriction' | 'portability' | 'objection' | 'automated_decision_making' | 'withdraw_consent';
813
859
 
814
860
  export declare type EffortLevel = 'low' | 'medium' | 'high';
815
861
 
@@ -986,11 +1032,13 @@ declare type Industry = 'fintech' | 'healthcare' | 'ecommerce' | 'saas' | 'educa
986
1032
 
987
1033
  /**
988
1034
  * Returns whether NDPC approval is required for a given transfer mechanism.
989
- * Approval is required for standard contractual clauses (Section 42),
990
- * binding corporate rules (Section 43), and specific NDPC authorization (Section 44).
1035
+ * Under NDPA Section 42(5), the Commission may approve binding corporate rules,
1036
+ * codes of conduct, certification mechanisms, or similar instruments. Standard
1037
+ * contractual clauses are one of the appropriate safeguards under Section 41(1)(a)
1038
+ * and the Commission may approve them per Section 42(4).
991
1039
  *
992
1040
  * @param mechanism The transfer mechanism
993
- * @returns Whether NDPC approval is required
1041
+ * @returns Whether NDPC approval is typically required
994
1042
  */
995
1043
  export declare function isNDPCApprovalRequired(mechanism: TransferMechanism): boolean;
996
1044
 
@@ -1048,6 +1096,23 @@ export declare interface LawfulBasisValidationResult {
1048
1096
  warnings: string[];
1049
1097
  }
1050
1098
 
1099
+ /**
1100
+ * Full disclaimer suitable for PDF/DOCX footers and exported artifacts.
1101
+ */
1102
+ export declare const LEGAL_DISCLAIMER_LONG: string;
1103
+
1104
+ /**
1105
+ * Short disclaimer suitable for component captions and dashboard footers.
1106
+ * One line, no markdown.
1107
+ */
1108
+ export declare const LEGAL_DISCLAIMER_SHORT = "Generated for guidance only. Not legal advice \u2014 verify with your DPO or counsel.";
1109
+
1110
+ /**
1111
+ * Returns the long disclaimer wrapped with a leading heading suitable for
1112
+ * embedding at the foot of an exported document.
1113
+ */
1114
+ export declare function legalDisclaimerBlock(heading?: string): string;
1115
+
1051
1116
  /**
1052
1117
  * Represents a Legitimate Interest Assessment (LIA)
1053
1118
  * Required when the lawful basis is 'legitimate_interests'
@@ -1697,7 +1762,9 @@ export declare interface RequestType {
1697
1762
  /** Description of what this request type entails */
1698
1763
  description: string;
1699
1764
  /**
1700
- * NDPA section reference (e.g., "Section 30" for access requests)
1765
+ * NDPA 2023 section reference for this right
1766
+ * (e.g., "Section 34(1)(a)" for access, "Section 38" for portability).
1767
+ * Used for display purposes only — verify the exact subsection with counsel.
1701
1768
  */
1702
1769
  ndpaSection?: string;
1703
1770
  /**
@@ -1815,6 +1882,15 @@ export declare function sanitizeInput(input: string): string;
1815
1882
  */
1816
1883
  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';
1817
1884
 
1885
+ export declare interface StorageAdapter<T = unknown> {
1886
+ /** Load persisted data. Called once on hook mount. */
1887
+ load(): T | null | Promise<T | null>;
1888
+ /** Persist data. Called on every state change. */
1889
+ save(data: T): void | Promise<void>;
1890
+ /** Clear persisted data. Called on reset. */
1891
+ remove(): void | Promise<void>;
1892
+ }
1893
+
1818
1894
  /** Full context used to generate an adaptive privacy policy. */
1819
1895
  export declare interface TemplateContext {
1820
1896
  /** Organisation details, extended with industry and size. */
@@ -1894,8 +1970,11 @@ export declare interface TransferImpactAssessment {
1894
1970
  }
1895
1971
 
1896
1972
  /**
1897
- * Cross-Border Data Transfer types aligned with NDPA 2023 Part VI (Sections 41-45)
1898
- * Personal data may only be transferred outside Nigeria under specific conditions
1973
+ * Cross-Border Data Transfer types aligned with NDPA 2023 Part VIII (Sections 41-43).
1974
+ * Personal data may only be transferred outside Nigeria under the bases listed in
1975
+ * Section 41(1), where Section 42 defines adequacy and Section 43 lists derogations.
1976
+ *
1977
+ * Note: These are guidance labels — not legal advice. Verify with your DPO or counsel.
1899
1978
  */
1900
1979
  /**
1901
1980
  * Transfer mechanisms recognized under the NDPA
@@ -2006,7 +2085,7 @@ export declare interface ValidateDsrSubmissionOptions {
2006
2085
  /**
2007
2086
  * Allowed request types. When provided, the payload's `requestType`
2008
2087
  * must be one of these — useful for locking the server to a specific
2009
- * set of supported NDPA Part IV §29-36 rights.
2088
+ * set of supported NDPA Part VI §34-38 (plus §35, §36, §37) data-subject rights.
2010
2089
  */
2011
2090
  allowedRequestTypes?: string[];
2012
2091
  }
package/dist/core.js CHANGED
@@ -1,2 +1 @@
1
- 'use strict';var chunkRXL6CZAI_js=require('./chunk-RXL6CZAI.js'),chunk6QPRDQZF_js=require('./chunk-6QPRDQZF.js'),chunkC5QO3SX4_js=require('./chunk-C5QO3SX4.js'),chunkYPKUHSK4_js=require('./chunk-YPKUHSK4.js'),chunkLIM64IV2_js=require('./chunk-LIM64IV2.js'),chunkS4GRSNB4_js=require('./chunk-S4GRSNB4.js'),chunkCPK5D5FY_js=require('./chunk-CPK5D5FY.js'),chunkTDDAYVKK_js=require('./chunk-TDDAYVKK.js'),chunkC4YM4UMI_js=require('./chunk-C4YM4UMI.js'),chunkGOU6FU6Y_js=require('./chunk-GOU6FU6Y.js'),chunkMJGOLP5M_js=require('./chunk-MJGOLP5M.js'),chunkHO5M7M4M_js=require('./chunk-HO5M7M4M.js'),chunkJ5WCPZLW_js=require('./chunk-J5WCPZLW.js'),chunkP42Z5CFE_js=require('./chunk-P42Z5CFE.js'),chunkBKRETVJ6_js=require('./chunk-BKRETVJ6.js'),chunkI54CDQGN_js=require('./chunk-I54CDQGN.js');require('./chunk-MQFZHA2D.js');Object.defineProperty(exports,"NDPRProvider",{enumerable:true,get:function(){return chunkRXL6CZAI_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkRXL6CZAI_js.b}});Object.defineProperty(exports,"useNDPRLocale",{enumerable:true,get:function(){return chunkRXL6CZAI_js.c}});Object.defineProperty(exports,"hausaLocale",{enumerable:true,get:function(){return chunk6QPRDQZF_js.c}});Object.defineProperty(exports,"igboLocale",{enumerable:true,get:function(){return chunk6QPRDQZF_js.b}});Object.defineProperty(exports,"pidginLocale",{enumerable:true,get:function(){return chunk6QPRDQZF_js.d}});Object.defineProperty(exports,"yorubaLocale",{enumerable:true,get:function(){return chunk6QPRDQZF_js.a}});Object.defineProperty(exports,"defaultLocale",{enumerable:true,get:function(){return chunkC5QO3SX4_js.a}});Object.defineProperty(exports,"mergeLocale",{enumerable:true,get:function(){return chunkC5QO3SX4_js.b}});Object.defineProperty(exports,"createDefaultContext",{enumerable:true,get:function(){return chunkYPKUHSK4_js.b}});Object.defineProperty(exports,"evaluatePolicyCompliance",{enumerable:true,get:function(){return chunkYPKUHSK4_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkLIM64IV2_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkLIM64IV2_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkLIM64IV2_js.e}});Object.defineProperty(exports,"findUnfilledTokens",{enumerable:true,get:function(){return chunkLIM64IV2_js.a}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkLIM64IV2_js.b}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunkS4GRSNB4_js.a}});Object.defineProperty(exports,"assemblePolicy",{enumerable:true,get:function(){return chunkCPK5D5FY_js.c}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkTDDAYVKK_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkTDDAYVKK_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkTDDAYVKK_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkTDDAYVKK_js.a}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkC4YM4UMI_js.h}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkC4YM4UMI_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkC4YM4UMI_js.e}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkC4YM4UMI_js.g}});Object.defineProperty(exports,"exportROPAToCSV",{enumerable:true,get:function(){return chunkGOU6FU6Y_js.c}});Object.defineProperty(exports,"generateROPASummary",{enumerable:true,get:function(){return chunkGOU6FU6Y_js.b}});Object.defineProperty(exports,"identifyComplianceGaps",{enumerable:true,get:function(){return chunkGOU6FU6Y_js.d}});Object.defineProperty(exports,"validateProcessingRecord",{enumerable:true,get:function(){return chunkGOU6FU6Y_js.a}});Object.defineProperty(exports,"appendAuditEntry",{enumerable:true,get:function(){return chunkMJGOLP5M_js.c}});Object.defineProperty(exports,"createAuditEntry",{enumerable:true,get:function(){return chunkMJGOLP5M_js.a}});Object.defineProperty(exports,"getAuditLog",{enumerable:true,get:function(){return chunkMJGOLP5M_js.b}});Object.defineProperty(exports,"validateConsent",{enumerable:true,get:function(){return chunkHO5M7M4M_js.a}});Object.defineProperty(exports,"validateConsentOptions",{enumerable:true,get:function(){return chunkHO5M7M4M_js.b}});Object.defineProperty(exports,"formatDSRRequest",{enumerable:true,get:function(){return chunkJ5WCPZLW_js.b}});Object.defineProperty(exports,"validateDsrSubmission",{enumerable:true,get:function(){return chunkJ5WCPZLW_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkP42Z5CFE_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunkBKRETVJ6_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkI54CDQGN_js.a}});//# sourceMappingURL=core.js.map
2
- //# sourceMappingURL=core.js.map
1
+ 'use strict';var chunkUAV7V4EM_js=require('./chunk-UAV7V4EM.js'),chunk4QXTB3L6_js=require('./chunk-4QXTB3L6.js'),chunk7IFSWCQP_js=require('./chunk-7IFSWCQP.js'),chunkLVGT3DLT_js=require('./chunk-LVGT3DLT.js'),chunkQPRYXVH2_js=require('./chunk-QPRYXVH2.js'),chunkQ64735OC_js=require('./chunk-Q64735OC.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js'),chunkYFBDJ4FH_js=require('./chunk-YFBDJ4FH.js'),chunk4CVBQC66_js=require('./chunk-4CVBQC66.js'),chunk3IA3KDII_js=require('./chunk-3IA3KDII.js'),chunkB46SJB5V_js=require('./chunk-B46SJB5V.js'),chunkL2BRFMVS_js=require('./chunk-L2BRFMVS.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js'),chunk3YTAOT5O_js=require('./chunk-3YTAOT5O.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunkZVOIR4QH_js=require('./chunk-ZVOIR4QH.js');require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"NDPRProvider",{enumerable:true,get:function(){return chunkUAV7V4EM_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkUAV7V4EM_js.b}});Object.defineProperty(exports,"useNDPRLocale",{enumerable:true,get:function(){return chunkUAV7V4EM_js.c}});Object.defineProperty(exports,"hausaLocale",{enumerable:true,get:function(){return chunk4QXTB3L6_js.c}});Object.defineProperty(exports,"igboLocale",{enumerable:true,get:function(){return chunk4QXTB3L6_js.b}});Object.defineProperty(exports,"pidginLocale",{enumerable:true,get:function(){return chunk4QXTB3L6_js.d}});Object.defineProperty(exports,"yorubaLocale",{enumerable:true,get:function(){return chunk4QXTB3L6_js.a}});Object.defineProperty(exports,"defaultLocale",{enumerable:true,get:function(){return chunk7IFSWCQP_js.a}});Object.defineProperty(exports,"mergeLocale",{enumerable:true,get:function(){return chunk7IFSWCQP_js.b}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkLVGT3DLT_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkLVGT3DLT_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkLVGT3DLT_js.e}});Object.defineProperty(exports,"findUnfilledTokens",{enumerable:true,get:function(){return chunkLVGT3DLT_js.a}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkLVGT3DLT_js.b}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunkQPRYXVH2_js.a}});Object.defineProperty(exports,"assemblePolicy",{enumerable:true,get:function(){return chunkQ64735OC_js.c}});Object.defineProperty(exports,"createDefaultContext",{enumerable:true,get:function(){return chunkQ64735OC_js.e}});Object.defineProperty(exports,"evaluatePolicyCompliance",{enumerable:true,get:function(){return chunkQ64735OC_js.f}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkWZYCBW2R_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkWZYCBW2R_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkWZYCBW2R_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkWZYCBW2R_js.a}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.h}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.e}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.g}});Object.defineProperty(exports,"exportROPAToCSV",{enumerable:true,get:function(){return chunk4CVBQC66_js.c}});Object.defineProperty(exports,"generateROPASummary",{enumerable:true,get:function(){return chunk4CVBQC66_js.b}});Object.defineProperty(exports,"identifyComplianceGaps",{enumerable:true,get:function(){return chunk4CVBQC66_js.d}});Object.defineProperty(exports,"validateProcessingRecord",{enumerable:true,get:function(){return chunk4CVBQC66_js.a}});Object.defineProperty(exports,"appendAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.c}});Object.defineProperty(exports,"createAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.a}});Object.defineProperty(exports,"getAuditLog",{enumerable:true,get:function(){return chunk3IA3KDII_js.b}});Object.defineProperty(exports,"validateConsent",{enumerable:true,get:function(){return chunkB46SJB5V_js.a}});Object.defineProperty(exports,"validateConsentOptions",{enumerable:true,get:function(){return chunkB46SJB5V_js.b}});Object.defineProperty(exports,"formatDSRRequest",{enumerable:true,get:function(){return chunkL2BRFMVS_js.b}});Object.defineProperty(exports,"validateDsrSubmission",{enumerable:true,get:function(){return chunkL2BRFMVS_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkTQZWJGJ2_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunk3YTAOT5O_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkUXUMYP4L_js.a}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_LONG",{enumerable:true,get:function(){return chunkZVOIR4QH_js.b}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_SHORT",{enumerable:true,get:function(){return chunkZVOIR4QH_js.a}});Object.defineProperty(exports,"legalDisclaimerBlock",{enumerable:true,get:function(){return chunkZVOIR4QH_js.c}});
package/dist/core.mjs CHANGED
@@ -1,2 +1 @@
1
- export{a as NDPRProvider,b as useNDPRConfig,c as useNDPRLocale}from'./chunk-74Z23WUA.mjs';export{c as hausaLocale,b as igboLocale,d as pidginLocale,a as yorubaLocale}from'./chunk-R5FW5XUQ.mjs';export{a as defaultLocale,b as mergeLocale}from'./chunk-XHROISIF.mjs';export{b as createDefaultContext,c as evaluatePolicyCompliance}from'./chunk-I557S566.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,a as findUnfilledTokens,b as generatePolicyText}from'./chunk-CKGJK4D7.mjs';export{a as getComplianceScore}from'./chunk-ABDB7LEV.mjs';export{c as assemblePolicy}from'./chunk-GRLIPT5V.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-TXBZPCGF.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-75TJPK2N.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-SHMJNRHO.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-P3PULLYP.mjs';export{a as validateConsent,b as validateConsentOptions}from'./chunk-U62QYKVG.mjs';export{b as formatDSRRequest,a as validateDsrSubmission}from'./chunk-B4Z5MBUC.mjs';export{a as assessDPIARisk}from'./chunk-6TA2MVTU.mjs';export{a as calculateBreachSeverity}from'./chunk-DJGS7SSN.mjs';export{a as sanitizeInput}from'./chunk-GKKAK6ES.mjs';import'./chunk-WWT2ZSNU.mjs';//# sourceMappingURL=core.mjs.map
2
- //# sourceMappingURL=core.mjs.map
1
+ export{a as NDPRProvider,b as useNDPRConfig,c as useNDPRLocale}from'./chunk-EEQALYOY.mjs';export{c as hausaLocale,b as igboLocale,d as pidginLocale,a as yorubaLocale}from'./chunk-LQTARVPU.mjs';export{a as defaultLocale,b as mergeLocale}from'./chunk-HWHBINVN.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,a as findUnfilledTokens,b as generatePolicyText}from'./chunk-Y3MKMAFQ.mjs';export{a as getComplianceScore}from'./chunk-EFIBHKQE.mjs';export{c as assemblePolicy,e as createDefaultContext,f as evaluatePolicyCompliance}from'./chunk-RMQ7OLNY.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-7BJXI2HI.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-XP5PL6K7.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{a as validateConsent,b as validateConsentOptions}from'./chunk-PJNKQPQP.mjs';export{b as formatDSRRequest,a as validateDsrSubmission}from'./chunk-RZ6GC6WN.mjs';export{a as assessDPIARisk}from'./chunk-LRRENTT5.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.mjs';export{b as LEGAL_DISCLAIMER_LONG,a as LEGAL_DISCLAIMER_SHORT,c as legalDisclaimerBlock}from'./chunk-ITCY2Z66.mjs';import'./chunk-ZJYULEER.mjs';
@@ -19,9 +19,13 @@ export declare function assessTransferRisk(transfer: CrossBorderTransfer): Trans
19
19
  * Database of country adequacy determinations for cross-border data transfers.
20
20
  *
21
21
  * This map is keyed by ISO 3166-1 alpha-2 country code (uppercase).
22
- * Statuses reflect general assessments based on each country's data protection
23
- * framework and are provided for guidance purposes. Organizations should verify
24
- * current NDPC guidance before relying on these determinations.
22
+ *
23
+ * IMPORTANT Statuses with `recognizedBy: 'self-assessment'` are this toolkit's
24
+ * guidance assessments based on each country's data-protection framework. They
25
+ * are NOT NDPC-issued adequacy decisions. NDPC has not (as of publication)
26
+ * published any formal Section 42 adequacy list. Organisations transferring
27
+ * personal data outside Nigeria should perform their own transfer impact
28
+ * assessment and consult counsel before relying on any entry here.
25
29
  */
26
30
  export declare const COUNTRY_ADEQUACY_MAP: Record<string, CountryAdequacy>;
27
31
 
@@ -35,8 +39,16 @@ export declare interface CountryAdequacy {
35
39
  isoCode: string;
36
40
  /** Adequacy status for data protection purposes */
37
41
  adequacyStatus: CountryAdequacyStatus;
38
- /** Authority or framework that recognized the adequacy (e.g. 'NDPC', 'EU') */
39
- recognizedBy: string;
42
+ /**
43
+ * Source of the adequacy determination.
44
+ * - 'NDPC' — formally listed by the Nigeria Data Protection Commission under
45
+ * NDPA Section 42 (no such list has been published at time of writing).
46
+ * - 'EU' — recognized as adequate by EU member-state membership / GDPR.
47
+ * - 'UK' — recognized by the UK ICO.
48
+ * - 'self-assessment' — toolkit maintainers' guidance assessment. Verify
49
+ * independently and confirm with your DPO/counsel before relying on it.
50
+ */
51
+ recognizedBy: 'NDPC' | 'EU' | 'UK' | 'self-assessment';
40
52
  /** Additional notes about the adequacy determination */
41
53
  notes: string;
42
54
  /** Date the adequacy determination was last reviewed */
@@ -47,10 +59,15 @@ export declare interface CountryAdequacy {
47
59
  * Country adequacy determinations for cross-border data transfers
48
60
  * under the Nigeria Data Protection Act (NDPA).
49
61
  *
50
- * This module provides a reference database of adequacy statuses for countries
51
- * that Nigerian businesses commonly transfer personal data to, along with
52
- * helper functions for querying adequacy and determining whether NDPC approval
53
- * is required for a given destination.
62
+ * IMPORTANT Not legal advice and not an NDPC adequacy list.
63
+ *
64
+ * As of publication, the Nigeria Data Protection Commission has not published
65
+ * a formal list of countries it deems adequate under NDPA Section 42. The
66
+ * Commission is empowered to issue such guidelines under Section 42(3), but
67
+ * has not yet done so. The entries in this map are *self-assessments* by the
68
+ * toolkit maintainers based on each country's data-protection framework, and
69
+ * are intended for guidance only. Verify the current NDPC position and consult
70
+ * counsel before relying on any entry here for a transfer impact assessment.
54
71
  */
55
72
  /**
56
73
  * Adequacy status of a country for cross-border data transfers.
@@ -281,11 +298,13 @@ export declare function getTransferMechanismDescription(mechanism: TransferMecha
281
298
 
282
299
  /**
283
300
  * Returns whether NDPC approval is required for a given transfer mechanism.
284
- * Approval is required for standard contractual clauses (Section 42),
285
- * binding corporate rules (Section 43), and specific NDPC authorization (Section 44).
301
+ * Under NDPA Section 42(5), the Commission may approve binding corporate rules,
302
+ * codes of conduct, certification mechanisms, or similar instruments. Standard
303
+ * contractual clauses are one of the appropriate safeguards under Section 41(1)(a)
304
+ * and the Commission may approve them per Section 42(4).
286
305
  *
287
306
  * @param mechanism The transfer mechanism
288
- * @returns Whether NDPC approval is required
307
+ * @returns Whether NDPC approval is typically required
289
308
  */
290
309
  export declare function isNDPCApprovalRequired(mechanism: TransferMechanism): boolean;
291
310
 
@@ -353,8 +372,11 @@ export declare interface TransferImpactAssessment {
353
372
  }
354
373
 
355
374
  /**
356
- * Cross-Border Data Transfer types aligned with NDPA 2023 Part VI (Sections 41-45)
357
- * Personal data may only be transferred outside Nigeria under specific conditions
375
+ * Cross-Border Data Transfer types aligned with NDPA 2023 Part VIII (Sections 41-43).
376
+ * Personal data may only be transferred outside Nigeria under the bases listed in
377
+ * Section 41(1), where Section 42 defines adequacy and Section 43 lists derogations.
378
+ *
379
+ * Note: These are guidance labels — not legal advice. Verify with your DPO or counsel.
358
380
  */
359
381
  /**
360
382
  * Transfer mechanisms recognized under the NDPA
@@ -19,9 +19,13 @@ export declare function assessTransferRisk(transfer: CrossBorderTransfer): Trans
19
19
  * Database of country adequacy determinations for cross-border data transfers.
20
20
  *
21
21
  * This map is keyed by ISO 3166-1 alpha-2 country code (uppercase).
22
- * Statuses reflect general assessments based on each country's data protection
23
- * framework and are provided for guidance purposes. Organizations should verify
24
- * current NDPC guidance before relying on these determinations.
22
+ *
23
+ * IMPORTANT Statuses with `recognizedBy: 'self-assessment'` are this toolkit's
24
+ * guidance assessments based on each country's data-protection framework. They
25
+ * are NOT NDPC-issued adequacy decisions. NDPC has not (as of publication)
26
+ * published any formal Section 42 adequacy list. Organisations transferring
27
+ * personal data outside Nigeria should perform their own transfer impact
28
+ * assessment and consult counsel before relying on any entry here.
25
29
  */
26
30
  export declare const COUNTRY_ADEQUACY_MAP: Record<string, CountryAdequacy>;
27
31
 
@@ -35,8 +39,16 @@ export declare interface CountryAdequacy {
35
39
  isoCode: string;
36
40
  /** Adequacy status for data protection purposes */
37
41
  adequacyStatus: CountryAdequacyStatus;
38
- /** Authority or framework that recognized the adequacy (e.g. 'NDPC', 'EU') */
39
- recognizedBy: string;
42
+ /**
43
+ * Source of the adequacy determination.
44
+ * - 'NDPC' — formally listed by the Nigeria Data Protection Commission under
45
+ * NDPA Section 42 (no such list has been published at time of writing).
46
+ * - 'EU' — recognized as adequate by EU member-state membership / GDPR.
47
+ * - 'UK' — recognized by the UK ICO.
48
+ * - 'self-assessment' — toolkit maintainers' guidance assessment. Verify
49
+ * independently and confirm with your DPO/counsel before relying on it.
50
+ */
51
+ recognizedBy: 'NDPC' | 'EU' | 'UK' | 'self-assessment';
40
52
  /** Additional notes about the adequacy determination */
41
53
  notes: string;
42
54
  /** Date the adequacy determination was last reviewed */
@@ -47,10 +59,15 @@ export declare interface CountryAdequacy {
47
59
  * Country adequacy determinations for cross-border data transfers
48
60
  * under the Nigeria Data Protection Act (NDPA).
49
61
  *
50
- * This module provides a reference database of adequacy statuses for countries
51
- * that Nigerian businesses commonly transfer personal data to, along with
52
- * helper functions for querying adequacy and determining whether NDPC approval
53
- * is required for a given destination.
62
+ * IMPORTANT Not legal advice and not an NDPC adequacy list.
63
+ *
64
+ * As of publication, the Nigeria Data Protection Commission has not published
65
+ * a formal list of countries it deems adequate under NDPA Section 42. The
66
+ * Commission is empowered to issue such guidelines under Section 42(3), but
67
+ * has not yet done so. The entries in this map are *self-assessments* by the
68
+ * toolkit maintainers based on each country's data-protection framework, and
69
+ * are intended for guidance only. Verify the current NDPC position and consult
70
+ * counsel before relying on any entry here for a transfer impact assessment.
54
71
  */
55
72
  /**
56
73
  * Adequacy status of a country for cross-border data transfers.
@@ -281,11 +298,13 @@ export declare function getTransferMechanismDescription(mechanism: TransferMecha
281
298
 
282
299
  /**
283
300
  * Returns whether NDPC approval is required for a given transfer mechanism.
284
- * Approval is required for standard contractual clauses (Section 42),
285
- * binding corporate rules (Section 43), and specific NDPC authorization (Section 44).
301
+ * Under NDPA Section 42(5), the Commission may approve binding corporate rules,
302
+ * codes of conduct, certification mechanisms, or similar instruments. Standard
303
+ * contractual clauses are one of the appropriate safeguards under Section 41(1)(a)
304
+ * and the Commission may approve them per Section 42(4).
286
305
  *
287
306
  * @param mechanism The transfer mechanism
288
- * @returns Whether NDPC approval is required
307
+ * @returns Whether NDPC approval is typically required
289
308
  */
290
309
  export declare function isNDPCApprovalRequired(mechanism: TransferMechanism): boolean;
291
310
 
@@ -353,8 +372,11 @@ export declare interface TransferImpactAssessment {
353
372
  }
354
373
 
355
374
  /**
356
- * Cross-Border Data Transfer types aligned with NDPA 2023 Part VI (Sections 41-45)
357
- * Personal data may only be transferred outside Nigeria under specific conditions
375
+ * Cross-Border Data Transfer types aligned with NDPA 2023 Part VIII (Sections 41-43).
376
+ * Personal data may only be transferred outside Nigeria under the bases listed in
377
+ * Section 41(1), where Section 42 defines adequacy and Section 43 lists derogations.
378
+ *
379
+ * Note: These are guidance labels — not legal advice. Verify with your DPO or counsel.
358
380
  */
359
381
  /**
360
382
  * Transfer mechanisms recognized under the NDPA
@@ -1,3 +1,2 @@
1
1
  "use client";
2
- 'use strict';var chunkNQNFS3QI_js=require('./chunk-NQNFS3QI.js'),chunkMCWV7S2G_js=require('./chunk-MCWV7S2G.js'),chunkC4YM4UMI_js=require('./chunk-C4YM4UMI.js');require('./chunk-E64TU6IU.js'),require('./chunk-ELKB2AFZ.js'),require('./chunk-MQFZHA2D.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var t=react.createContext(null);function A(){let r=react.useContext(t);if(!r)throw new Error("CrossBorder compound components must be wrapped in <CrossBorder.Provider>. Example: <CrossBorder.Provider><CrossBorder.Manager /></CrossBorder.Provider>");return r}var e=({adapter:r,storageKey:d,useLocalStorage:a,initialTransfers:n,onAdd:p,onUpdate:C,onRemove:f,children:i})=>{let m=chunkMCWV7S2G_js.a({adapter:r,storageKey:d,useLocalStorage:a,initialTransfers:n,onAdd:p,onUpdate:C,onRemove:f});return jsxRuntime.jsx(t.Provider,{value:m,children:i})};var q={Provider:e,Manager:chunkNQNFS3QI_js.a};Object.defineProperty(exports,"CrossBorderTransferManager",{enumerable:true,get:function(){return chunkNQNFS3QI_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkMCWV7S2G_js.a}});Object.defineProperty(exports,"COUNTRY_ADEQUACY_MAP",{enumerable:true,get:function(){return chunkC4YM4UMI_js.a}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkC4YM4UMI_js.h}});Object.defineProperty(exports,"getAdequateCountries",{enumerable:true,get:function(){return chunkC4YM4UMI_js.c}});Object.defineProperty(exports,"getCountryAdequacy",{enumerable:true,get:function(){return chunkC4YM4UMI_js.b}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkC4YM4UMI_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkC4YM4UMI_js.e}});Object.defineProperty(exports,"requiresNDPCApproval",{enumerable:true,get:function(){return chunkC4YM4UMI_js.d}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkC4YM4UMI_js.g}});exports.CrossBorder=q;exports.CrossBorderProvider=e;exports.useCrossBorderCompound=A;//# sourceMappingURL=cross-border.js.map
3
- //# sourceMappingURL=cross-border.js.map
2
+ 'use strict';var chunkI3Y4LOSL_js=require('./chunk-I3Y4LOSL.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkYFBDJ4FH_js=require('./chunk-YFBDJ4FH.js');require('./chunk-AME4HJR4.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var s=react.createContext(null);function A(){let r=react.useContext(s);if(!r)throw new Error("CrossBorder compound components must be wrapped in <CrossBorder.Provider>. Example: <CrossBorder.Provider><CrossBorder.Manager /></CrossBorder.Provider>");return r}var t=({adapter:r,storageKey:d,useLocalStorage:a,initialTransfers:n,onAdd:p,onUpdate:C,onRemove:f,children:i})=>{let m=chunkHHK5LHEG_js.a({adapter:r,storageKey:d,useLocalStorage:a,initialTransfers:n,onAdd:p,onUpdate:C,onRemove:f});return jsxRuntime.jsx(s.Provider,{value:m,children:i})};var q={Provider:t,Manager:chunkI3Y4LOSL_js.a};Object.defineProperty(exports,"CrossBorderTransferManager",{enumerable:true,get:function(){return chunkI3Y4LOSL_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"COUNTRY_ADEQUACY_MAP",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.a}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.h}});Object.defineProperty(exports,"getAdequateCountries",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.c}});Object.defineProperty(exports,"getCountryAdequacy",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.b}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.e}});Object.defineProperty(exports,"requiresNDPCApproval",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.d}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.g}});exports.CrossBorder=q;exports.CrossBorderProvider=t;exports.useCrossBorderCompound=A;
@@ -1,3 +1,2 @@
1
1
  "use client";
2
- import {a}from'./chunk-SYMQJO2W.mjs';export{a as CrossBorderTransferManager}from'./chunk-SYMQJO2W.mjs';import {a as a$1}from'./chunk-Z6IIMLZU.mjs';export{a as useCrossBorderTransfer}from'./chunk-Z6IIMLZU.mjs';export{a as COUNTRY_ADEQUACY_MAP,h as assessTransferRisk,c as getAdequateCountries,b as getCountryAdequacy,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,d as requiresNDPCApproval,g as validateTransfer}from'./chunk-75TJPK2N.mjs';import'./chunk-AYKLAEOU.mjs';import'./chunk-6WIP33TW.mjs';import'./chunk-WWT2ZSNU.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var t=createContext(null);function A(){let r=useContext(t);if(!r)throw new Error("CrossBorder compound components must be wrapped in <CrossBorder.Provider>. Example: <CrossBorder.Provider><CrossBorder.Manager /></CrossBorder.Provider>");return r}var e=({adapter:r,storageKey:d,useLocalStorage:a,initialTransfers:n,onAdd:p,onUpdate:C,onRemove:f,children:i})=>{let m=a$1({adapter:r,storageKey:d,useLocalStorage:a,initialTransfers:n,onAdd:p,onUpdate:C,onRemove:f});return jsx(t.Provider,{value:m,children:i})};var q={Provider:e,Manager:a};export{q as CrossBorder,e as CrossBorderProvider,A as useCrossBorderCompound};//# sourceMappingURL=cross-border.mjs.map
3
- //# sourceMappingURL=cross-border.mjs.map
2
+ import {a}from'./chunk-GTYXVAJX.mjs';export{a as CrossBorderTransferManager}from'./chunk-GTYXVAJX.mjs';import {a as a$1}from'./chunk-KDAZQO3N.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as COUNTRY_ADEQUACY_MAP,h as assessTransferRisk,c as getAdequateCountries,b as getCountryAdequacy,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,d as requiresNDPCApproval,g as validateTransfer}from'./chunk-7BJXI2HI.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var s=createContext(null);function A(){let r=useContext(s);if(!r)throw new Error("CrossBorder compound components must be wrapped in <CrossBorder.Provider>. Example: <CrossBorder.Provider><CrossBorder.Manager /></CrossBorder.Provider>");return r}var t=({adapter:r,storageKey:d,useLocalStorage:a,initialTransfers:n,onAdd:p,onUpdate:C,onRemove:f,children:i})=>{let m=a$1({adapter:r,storageKey:d,useLocalStorage:a,initialTransfers:n,onAdd:p,onUpdate:C,onRemove:f});return jsx(s.Provider,{value:m,children:i})};var q={Provider:t,Manager:a};export{q as CrossBorder,t as CrossBorderProvider,A as useCrossBorderCompound};
package/dist/dpia.d.mts CHANGED
@@ -34,8 +34,8 @@ export declare const DPIAProvider: React__default.FC<DPIAProviderProps>;
34
34
 
35
35
  export declare interface DPIAProviderProps {
36
36
  sections: DPIASection[];
37
- initialAnswers?: Record<string, any>;
38
- adapter?: StorageAdapter<Record<string, any>>;
37
+ initialAnswers?: DPIAAnswerMap;
38
+ adapter?: StorageAdapter<DPIAAnswerMap>;
39
39
  storageKey?: string;
40
40
  useLocalStorage?: boolean;
41
41
  onComplete?: (result: DPIAResult) => void;
@@ -85,8 +85,8 @@ export declare interface DPIAQuestion {
85
85
  }
86
86
 
87
87
  /**
88
- * DPIA questionnaire component. Implements NDPA Section 38 requirements
89
- * for conducting Data Protection Impact Assessments on high-risk processing activities.
88
+ * DPIA questionnaire component. Implements NDPA Section 28 requirements
89
+ * for conducting Data Privacy Impact Assessments on high-risk processing activities.
90
90
  */
91
91
  export declare const DPIAQuestionnaire: React__default.FC<DPIAQuestionnaireProps>;
92
92
 
package/dist/dpia.d.ts CHANGED
@@ -34,8 +34,8 @@ export declare const DPIAProvider: React__default.FC<DPIAProviderProps>;
34
34
 
35
35
  export declare interface DPIAProviderProps {
36
36
  sections: DPIASection[];
37
- initialAnswers?: Record<string, any>;
38
- adapter?: StorageAdapter<Record<string, any>>;
37
+ initialAnswers?: DPIAAnswerMap;
38
+ adapter?: StorageAdapter<DPIAAnswerMap>;
39
39
  storageKey?: string;
40
40
  useLocalStorage?: boolean;
41
41
  onComplete?: (result: DPIAResult) => void;
@@ -85,8 +85,8 @@ export declare interface DPIAQuestion {
85
85
  }
86
86
 
87
87
  /**
88
- * DPIA questionnaire component. Implements NDPA Section 38 requirements
89
- * for conducting Data Protection Impact Assessments on high-risk processing activities.
88
+ * DPIA questionnaire component. Implements NDPA Section 28 requirements
89
+ * for conducting Data Privacy Impact Assessments on high-risk processing activities.
90
90
  */
91
91
  export declare const DPIAQuestionnaire: React__default.FC<DPIAQuestionnaireProps>;
92
92
 
package/dist/dpia.js CHANGED
@@ -1,3 +1,2 @@
1
1
  "use client";
2
- 'use strict';var chunk3VQAYQR7_js=require('./chunk-3VQAYQR7.js'),chunk5HL4UBFV_js=require('./chunk-5HL4UBFV.js'),chunkOPYQIJKY_js=require('./chunk-OPYQIJKY.js'),chunkP42Z5CFE_js=require('./chunk-P42Z5CFE.js');require('./chunk-E64TU6IU.js'),require('./chunk-ELKB2AFZ.js');var chunkMQFZHA2D_js=require('./chunk-MQFZHA2D.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var i=react.createContext(null);function v(){let o=react.useContext(i);if(!o)throw new Error("DPIA compound components must be wrapped in <DPIA.Provider>. Example: <DPIA.Provider sections={...}><DPIA.Questionnaire /></DPIA.Provider>");return o}var p=({sections:o,initialAnswers:a,adapter:m,storageKey:I,useLocalStorage:A,onComplete:d,children:D})=>{let u=chunkOPYQIJKY_js.a({sections:o,initialAnswers:a,adapter:m,storageKey:I,useLocalStorage:A,onComplete:d}),c=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},u),{sections:o});return jsxRuntime.jsx(i.Provider,{value:c,children:D})};var y={Provider:p,Questionnaire:chunk5HL4UBFV_js.a,Report:chunk3VQAYQR7_js.a,StepIndicator:chunk3VQAYQR7_js.b};Object.defineProperty(exports,"DPIAReport",{enumerable:true,get:function(){return chunk3VQAYQR7_js.a}});Object.defineProperty(exports,"StepIndicator",{enumerable:true,get:function(){return chunk3VQAYQR7_js.b}});Object.defineProperty(exports,"DPIAQuestionnaire",{enumerable:true,get:function(){return chunk5HL4UBFV_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkOPYQIJKY_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkP42Z5CFE_js.a}});exports.DPIA=y;exports.DPIAProvider=p;exports.useDPIACompound=v;//# sourceMappingURL=dpia.js.map
3
- //# sourceMappingURL=dpia.js.map
2
+ 'use strict';var chunkEZCGTHQV_js=require('./chunk-EZCGTHQV.js'),chunkWDDCKYWA_js=require('./chunk-WDDCKYWA.js'),chunkC7IDR2IV_js=require('./chunk-C7IDR2IV.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js');require('./chunk-ZVOIR4QH.js'),require('./chunk-AME4HJR4.js'),require('./chunk-VWED6UTN.js');var chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var n=react.createContext(null);function v(){let o=react.useContext(n);if(!o)throw new Error("DPIA compound components must be wrapped in <DPIA.Provider>. Example: <DPIA.Provider sections={...}><DPIA.Questionnaire /></DPIA.Provider>");return o}var i=({sections:o,initialAnswers:a,adapter:m,storageKey:A,useLocalStorage:I,onComplete:D,children:d})=>{let u=chunkC7IDR2IV_js.a({sections:o,initialAnswers:a,adapter:m,storageKey:A,useLocalStorage:I,onComplete:D}),f=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},u),{sections:o});return jsxRuntime.jsx(n.Provider,{value:f,children:d})};var C={Provider:i,Questionnaire:chunkWDDCKYWA_js.a,Report:chunkEZCGTHQV_js.a,StepIndicator:chunkEZCGTHQV_js.b};Object.defineProperty(exports,"DPIAReport",{enumerable:true,get:function(){return chunkEZCGTHQV_js.a}});Object.defineProperty(exports,"StepIndicator",{enumerable:true,get:function(){return chunkEZCGTHQV_js.b}});Object.defineProperty(exports,"DPIAQuestionnaire",{enumerable:true,get:function(){return chunkWDDCKYWA_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkC7IDR2IV_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkTQZWJGJ2_js.a}});exports.DPIA=C;exports.DPIAProvider=i;exports.useDPIACompound=v;
package/dist/dpia.mjs CHANGED
@@ -1,3 +1,2 @@
1
1
  "use client";
2
- import {b,a}from'./chunk-TCN22KYP.mjs';export{a as DPIAReport,b as StepIndicator}from'./chunk-TCN22KYP.mjs';import {a as a$1}from'./chunk-LJNNPAFU.mjs';export{a as DPIAQuestionnaire}from'./chunk-LJNNPAFU.mjs';import {a as a$2}from'./chunk-6FGCGLH5.mjs';export{a as useDPIA}from'./chunk-6FGCGLH5.mjs';export{a as assessDPIARisk}from'./chunk-6TA2MVTU.mjs';import'./chunk-AYKLAEOU.mjs';import'./chunk-6WIP33TW.mjs';import {b as b$1,a as a$3}from'./chunk-WWT2ZSNU.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var i=createContext(null);function v(){let o=useContext(i);if(!o)throw new Error("DPIA compound components must be wrapped in <DPIA.Provider>. Example: <DPIA.Provider sections={...}><DPIA.Questionnaire /></DPIA.Provider>");return o}var p=({sections:o,initialAnswers:a,adapter:m,storageKey:I,useLocalStorage:A,onComplete:d,children:D})=>{let u=a$2({sections:o,initialAnswers:a,adapter:m,storageKey:I,useLocalStorage:A,onComplete:d}),c=b$1(a$3({},u),{sections:o});return jsx(i.Provider,{value:c,children:D})};var y={Provider:p,Questionnaire:a$1,Report:a,StepIndicator:b};export{y as DPIA,p as DPIAProvider,v as useDPIACompound};//# sourceMappingURL=dpia.mjs.map
3
- //# sourceMappingURL=dpia.mjs.map
2
+ import {b,a}from'./chunk-O45PKBZA.mjs';export{a as DPIAReport,b as StepIndicator}from'./chunk-O45PKBZA.mjs';import {a as a$1}from'./chunk-ZQZJNKVB.mjs';export{a as DPIAQuestionnaire}from'./chunk-ZQZJNKVB.mjs';import {a as a$2}from'./chunk-H3XJV2IR.mjs';export{a as useDPIA}from'./chunk-H3XJV2IR.mjs';export{a as assessDPIARisk}from'./chunk-LRRENTT5.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-DBZSN4WP.mjs';import {b as b$1,a as a$3}from'./chunk-ZJYULEER.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var n=createContext(null);function v(){let o=useContext(n);if(!o)throw new Error("DPIA compound components must be wrapped in <DPIA.Provider>. Example: <DPIA.Provider sections={...}><DPIA.Questionnaire /></DPIA.Provider>");return o}var i=({sections:o,initialAnswers:a,adapter:m,storageKey:A,useLocalStorage:I,onComplete:D,children:d})=>{let u=a$2({sections:o,initialAnswers:a,adapter:m,storageKey:A,useLocalStorage:I,onComplete:D}),f=b$1(a$3({},u),{sections:o});return jsx(n.Provider,{value:f,children:d})};var C={Provider:i,Questionnaire:a$1,Report:a,StepIndicator:b};export{C as DPIA,i as DPIAProvider,v as useDPIACompound};
package/dist/dsr.d.mts CHANGED
@@ -199,7 +199,7 @@ export declare interface DSRRequest {
199
199
  }
200
200
 
201
201
  /**
202
- * Data Subject Request form component. Implements NDPA Part IV, Sections 29-36
202
+ * Data Subject Request form component. Implements NDPA Part VI (Sections 34-38)
203
203
  * covering data subject rights including access, rectification, erasure, and portability.
204
204
  */
205
205
  export declare const DSRRequestForm: React__default.FC<DSRRequestFormProps>;
@@ -438,20 +438,25 @@ declare interface DSRTrackerProps {
438
438
  }
439
439
 
440
440
  /**
441
- * Data Subject Rights types aligned with NDPA 2023 Part IV (Sections 29-36)
441
+ * Data Subject Rights types aligned with NDPA 2023 Part VI (Sections 34-38)
442
+ * and the related provisions in Part V (Section 27 — information to the data subject)
443
+ * and Part X (Section 46 — complaint to the Commission).
444
+ *
445
+ * Note: These are guidance labels — not legal advice. Verify with your DPO or counsel.
442
446
  */
443
447
  /**
444
- * Types of data subject requests per NDPA Part IV
445
- * - 'information': Right to be informed (Section 29)
446
- * - 'access': Right of access (Section 30)
447
- * - 'rectification': Right to rectification (Section 31)
448
- * - 'erasure': Right to erasure (Section 32)
449
- * - 'restriction': Right to restrict processing (Section 33)
450
- * - 'portability': Right to data portability (Section 34)
451
- * - 'objection': Right to object (Section 35)
452
- * - 'automated_decision_making': Rights related to automated decision-making (Section 36)
448
+ * Types of data subject requests per NDPA Part VI
449
+ * - 'information': Right to be informed (Section 27 — provision of information; Section 34(1)(a))
450
+ * - 'access': Right of access / confirmation + data copy (Section 34(1)(a)–(b))
451
+ * - 'rectification': Right to rectification (Section 34(1)(c))
452
+ * - 'erasure': Right to erasure (Section 34(1)(d), Section 34(2))
453
+ * - 'restriction': Right to restrict processing (Section 34(1)(e))
454
+ * - 'portability': Right to data portability (Section 38)
455
+ * - 'objection': Right to object (Section 36)
456
+ * - 'automated_decision_making': Rights re. automated decisions / profiling (Section 37)
457
+ * - 'withdraw_consent': Right to withdraw consent (Section 35)
453
458
  */
454
- export declare type DSRType = 'information' | 'access' | 'rectification' | 'erasure' | 'restriction' | 'portability' | 'objection' | 'automated_decision_making';
459
+ export declare type DSRType = 'information' | 'access' | 'rectification' | 'erasure' | 'restriction' | 'portability' | 'objection' | 'automated_decision_making' | 'withdraw_consent';
455
460
 
456
461
  /**
457
462
  * Formats a DSR request for display or submission
@@ -481,7 +486,9 @@ export declare interface RequestType {
481
486
  /** Description of what this request type entails */
482
487
  description: string;
483
488
  /**
484
- * NDPA section reference (e.g., "Section 30" for access requests)
489
+ * NDPA 2023 section reference for this right
490
+ * (e.g., "Section 34(1)(a)" for access, "Section 38" for portability).
491
+ * Used for display purposes only — verify the exact subsection with counsel.
485
492
  */
486
493
  ndpaSection?: string;
487
494
  /**
@@ -559,9 +566,10 @@ declare interface UseDSRReturn {
559
566
  */
560
567
  requests: DSRRequest[];
561
568
  /**
562
- * Submit a new request
569
+ * Submit a new request. The hook assigns `id`, `status`, `createdAt`,
570
+ * `updatedAt`, and `dueDate` — pass everything else.
563
571
  */
564
- submitRequest: (requestData: Omit<DSRRequest, 'id' | 'status' | 'submittedAt' | 'updatedAt' | 'estimatedCompletionDate'>) => DSRRequest;
572
+ submitRequest: (requestData: Omit<DSRRequest, 'id' | 'status' | 'createdAt' | 'updatedAt' | 'dueDate'>) => DSRRequest;
565
573
  /**
566
574
  * Update an existing request
567
575
  */
@@ -573,7 +581,12 @@ declare interface UseDSRReturn {
573
581
  /**
574
582
  * Get requests by status
575
583
  */
576
- getRequestsByStatus: (status: RequestStatus) => DSRRequest[];
584
+ /**
585
+ * Filter requests by status. Accepts both the modern `DSRStatus` union and
586
+ * the deprecated `RequestStatus` for backward compatibility — pass the
587
+ * modern values (`'pending' | 'awaitingVerification' | 'inProgress' | ...`).
588
+ */
589
+ getRequestsByStatus: (status: DSRStatus | RequestStatus) => DSRRequest[];
577
590
  /**
578
591
  * Get requests by type
579
592
  */
@@ -646,7 +659,7 @@ export declare interface ValidateDsrSubmissionOptions {
646
659
  /**
647
660
  * Allowed request types. When provided, the payload's `requestType`
648
661
  * must be one of these — useful for locking the server to a specific
649
- * set of supported NDPA Part IV §29-36 rights.
662
+ * set of supported NDPA Part VI §34-38 (plus §35, §36, §37) data-subject rights.
650
663
  */
651
664
  allowedRequestTypes?: string[];
652
665
  }