/** * GDPR Right to Erasure (Article 17). * * Cascade-deletes all data held on a specific contact across Neo4j stores: * 1. Messages within attributed Conversations (via Person.sessionId) * 2. Conversations left empty after message removal * 3. Emails matching the contact's email (fromAddress or toAddresses) * 4. AccessGrants via (Person)-[:HAS_ACCESS]->(AccessGrant) * 5. Visitor-graph data (Task 357): * - :Session reachable via (Person)-[:VISITED]->(Session) * - all :HAS_EVENT children (PageView/Click/ScrollMilestone) * - :AnonVisitor via (Person)-[:OWNS_VISITOR]->(AnonVisitor) * :Page and :Listing are content metadata and are intentionally preserved. * 6. Person node itself (DETACH DELETE) * * Requires `confirm: true` to execute. Without it, returns a preview * of what would be deleted (counts per node type) but does not delete. */ interface ContactEraseParams { nodeId?: string; email?: string; telephone?: string; confirm?: boolean; accountId: string; } interface ErasePreview { confirmed: false; identifier: string; counts: EraseCounts; } interface EraseReceipt { confirmed: true; identifier: string; counts: EraseCounts; } interface EraseCounts { messages: number; conversations: number; emails: number; accessGrants: number; /** Visitor-graph Sessions removed (Task 357). */ visitorSessions: number; /** Visitor-graph event nodes removed (PageView + Click + ScrollMilestone). */ visitorEvents: number; /** AnonVisitor nodes owned by this Person and removed. */ anonVisitors: number; person: number; } export type ContactEraseResult = ErasePreview | EraseReceipt; export declare function contactErase(params: ContactEraseParams): Promise; export {}; //# sourceMappingURL=contact-erase.d.ts.map