/** * Data Subject Access Request (DSAR) Handler * * Handles Data Subject Access Requests as required by GDPR Article 15. * Provides users with information about their personal data processing. * * Added by Pantheon Security for enterprise compliance support. */ import type { DSARResponse } from "./types.js"; /** * DSAR request record */ interface DSARRequest { request_id: string; submitted_at: string; type: "access" | "portability" | "erasure" | "rectification" | "restriction" | "objection"; status: "pending" | "processing" | "completed" | "rejected"; completed_at?: string; response?: DSARResponse; notes?: string; } /** * DSAR Handler class */ export declare class DSARHandler { private static instance; private requestsFile; private requests; private loadPromise; private pendingWrite; private constructor(); /** * Get singleton instance */ static getInstance(): DSARHandler; /** * Load requests from storage */ private load; private _load; /** * Save requests to storage */ private save; /** * Serialize in-process mutations to avoid overlapping load/save cycles. */ private queueWrite; /** * Submit a new DSAR */ submitRequest(type?: DSARRequest["type"]): Promise; /** * Process a DSAR and generate response */ processRequest(requestId: string): Promise; /** * Generate DSAR response */ private generateResponse; /** * Get a sample of actual data for DSAR (without sensitive content) */ private getDataSample; /** * Format retention period for human readability */ private formatRetention; /** * Get request by ID */ getRequest(requestId: string): Promise; /** * Get all requests */ getAllRequests(): Promise; /** * Get pending requests */ getPendingRequests(): Promise; /** * Submit and process a DSAR immediately (for automated systems) */ submitAndProcess(type?: DSARRequest["type"]): Promise; /** * Get summary response (without full personal data) */ getSummaryResponse(): Promise<{ data_categories: string[]; processing_purposes: string[]; legal_bases: string[]; available_rights: string[]; data_recipients: string[]; exportable_data_types: string[]; erasable_data_types: string[]; }>; /** * Get DSAR statistics */ getStatistics(): Promise<{ total_requests: number; pending_requests: number; completed_requests: number; by_type: Record; average_processing_time_hours?: number; }>; } /** * Get the DSAR handler instance */ export declare function getDSARHandler(): DSARHandler; /** * Submit a new DSAR */ export declare function submitDSAR(type?: DSARRequest["type"]): Promise; /** * Process a DSAR */ export declare function processDSAR(requestId: string): Promise; /** * Submit and process a DSAR immediately */ export declare function handleDSAR(type?: DSARRequest["type"]): Promise; /** * Get DSAR summary response */ export declare function getDSARSummary(): Promise>; export {};