/**
 * 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<ContactEraseResult>;
export {};
//# sourceMappingURL=contact-erase.d.ts.map