/**
 * ConflictTarget — runtime-backed identity of a conflict's structural target.
 *
 * Identifies what entity, edge, or property a conflict is about. Carries a
 * content-addressed `targetDigest` for grouping and deduplication.
 *
 * @module domain/types/conflict/ConflictTarget
 */
type TargetKind = 'node' | 'edge' | 'node_property' | 'edge_property';
type ConflictTargetSelector = {
    targetKind: TargetKind;
    entityId?: string;
    propertyKey?: string;
    from?: string;
    to?: string;
    label?: string;
};
/**
 * A runtime-backed identity for a conflict's structural target.
 *
 * Describes which entity, edge, or property is contested, along with
 * a content-addressed digest for deterministic grouping.
 *
 * Instances are frozen on construction. All invariants are validated eagerly.
 */
export default class ConflictTarget {
    readonly targetKind: TargetKind;
    readonly targetDigest: string;
    readonly entityId: string | undefined;
    readonly propertyKey: string | undefined;
    readonly from: string | undefined;
    readonly to: string | undefined;
    readonly label: string | undefined;
    readonly edgeKey: string | undefined;
    /**
     * Creates a new ConflictTarget with validated fields.
     */
    constructor({ targetKind, targetDigest, entityId, propertyKey, from, to, label, edgeKey }: {
        targetKind: TargetKind;
        targetDigest: string;
        entityId?: string;
        propertyKey?: string;
        from?: string;
        to?: string;
        label?: string;
        edgeKey?: string;
    });
    /**
     * Tests whether this target references the given entity by id, source, or destination.
     */
    touchesEntity(entityId: string): boolean;
    /**
     * Tests whether this target matches a user-supplied target selector filter.
     *
     * A null or undefined selector matches all targets.
     */
    matchesSelector(selector: ConflictTargetSelector | null | undefined): boolean;
}
export {};
