/**
 * 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<string, unknown>;
}
export declare function resolvePersonMatch(identifier: PersonIdentifier, accountId: string, options?: ResolveOptions): ResolvedMatch;
//# sourceMappingURL=resolve-person.d.ts.map