/**
 * GDPR Deletion Service (Phase 2: Hard Deletion)
 *
 * Implements cryptographic erasure and physical deletion for GDPR Article 17 compliance.
 * Uses encryption + key deletion to make data irretrievable while maintaining immutability.
 */
export interface DeletionRequest {
    id: string;
    user_id: string;
    entity_id?: string;
    relationship_id?: string;
    deletion_type: "entity" | "relationship" | "user_data_complete";
    status: "pending" | "in_progress" | "completed" | "rejected" | "extended";
    requested_at: string;
    soft_deleted_at?: string;
    hard_deleted_at?: string;
    completed_at?: string;
    deadline: string;
    backup_deletion_deadline?: string;
    reason?: string;
    legal_basis?: "user_request" | "consent_withdrawal" | "unlawful_processing" | "legal_obligation" | "user_objection";
    deletion_method?: "soft_only" | "cryptographic_erasure" | "physical_deletion";
    retention_period_days?: number;
    retention_reason?: string;
}
export interface DeletionRequestResult {
    success: boolean;
    deletion_request_id?: string;
    error?: string;
}
/**
 * Create a GDPR deletion request
 *
 * @param userId - User ID requesting deletion
 * @param deletionType - Type of deletion (entity, relationship, or user_data_complete)
 * @param entityId - Entity ID (if deletion_type is "entity")
 * @param relationshipId - Relationship ID (if deletion_type is "relationship")
 * @param legalBasis - Legal basis for deletion
 * @param retentionPeriodDays - Days to retain before hard deletion (for legal obligations)
 * @param retentionReason - Reason for retention period
 * @returns Deletion request result
 */
export declare function createDeletionRequest(userId: string, deletionType: "entity" | "relationship" | "user_data_complete", entityId?: string, relationshipId?: string, legalBasis?: DeletionRequest["legal_basis"], retentionPeriodDays?: number, retentionReason?: string): Promise<DeletionRequestResult>;
/**
 * Process deletion request (orchestrates soft + hard deletion)
 *
 * @param deletionRequestId - Deletion request ID
 * @returns Processing result
 */
export declare function processDeletionRequest(deletionRequestId: string): Promise<DeletionRequestResult>;
/**
 * Cryptographic erasure: Encrypt observations with user-specific key, then delete key
 *
 * Makes data irretrievable while maintaining database structure and immutability.
 * GDPR-compliant method recognized by regulators.
 *
 * @param userId - User ID
 * @param entityId - Optional entity ID (if deleting specific entity)
 */
export declare function cryptographicErasure(userId: string, entityId?: string): Promise<void>;
/**
 * Physical deletion: Delete observations and snapshots
 *
 * Only used after legal retention periods expire.
 * Breaks immutability - last resort.
 *
 * @param userId - User ID
 * @param entityId - Optional entity ID (if deleting specific entity)
 */
export declare function physicalDeletion(userId: string, entityId?: string): Promise<void>;
/**
 * Get deletion requests for user
 *
 * @param userId - User ID
 * @param status - Optional status filter
 * @returns Deletion requests
 */
export declare function getDeletionRequests(userId: string, status?: "pending" | "in_progress" | "completed" | "rejected" | "extended"): Promise<DeletionRequest[]>;
/**
 * Extend deletion request deadline (max 90 days total)
 *
 * @param deletionRequestId - Deletion request ID
 * @param extensionReason - Reason for extension
 * @param additionalDays - Additional days to extend (default 30)
 * @returns Extension result
 */
export declare function extendDeletionDeadline(deletionRequestId: string, extensionReason: string, additionalDays?: number): Promise<DeletionRequestResult>;
//# sourceMappingURL=gdpr_deletion.d.ts.map