/** * Shared Person resolution helper. * * Builds a Cypher MATCH clause and query params to find a Person node * by one of three identifiers: nodeId (elementId), email, or telephone. * Priority: nodeId > email > telephone. * * Used by: contact-delete, contact-update, contact-export, contact-erase. * NOT used by: contact-create (dedup OR logic), contact-lookup (name search). * * trashed Person nodes are excluded by default. `contact-erase` * passes `includeTrashed: true` because GDPR Article 17 must cascade-delete * trashed persons too (they were marked but not yet emptied). Trashed * persons also have nulled email/telephone (UNIQUE_KEYS_BY_LABEL snapshot), * so identifier-by-email/telephone already fails — the filter is primarily * relevant to the nodeId path and guards against the legacy deletedAt * soft-delete state surfaced by `notTrashed()`. */ export interface PersonIdentifier { nodeId?: string; email?: string; telephone?: string; } export interface ResolveOptions { /** Set true for GDPR erasure paths that must match trashed persons too. */ includeTrashed?: boolean; } export interface ResolvedMatch { matchClause: string; queryParams: Record; } export declare function resolvePersonMatch(identifier: PersonIdentifier, accountId: string, options?: ResolveOptions): ResolvedMatch; //# sourceMappingURL=resolve-person.d.ts.map