/**
 * Property comparison functions for visible-state diffing.
 *
 * Covers node property maps, edge property maps, and per-node-view property deltas.
 * Pure functions — no side effects, no I/O, no classes.
 *
 * @module domain/services/comparison/diffProperties
 */
type NodePropEntry = {
    node: string;
    key: string;
    value: unknown;
};
type NodePropChanged = {
    node: string;
    key: string;
    leftValue: unknown;
    rightValue: unknown;
};
/**
 * Finds removed and changed entries by iterating the left map against the right.
 */
export declare function findNodePropRemovedAndChanged(left: Map<string, NodePropEntry>, right: Map<string, NodePropEntry>): {
    removed: NodePropEntry[];
    changed: NodePropChanged[];
};
/**
 * Finds entries present in right but absent from left.
 */
export declare function findNodePropAdded(left: Map<string, NodePropEntry>, right: Map<string, NodePropEntry>): NodePropEntry[];
/**
 * Computes added, removed, and changed deltas between two node property maps.
 */
export declare function compareNodePropertyMaps(left: Map<string, NodePropEntry>, right: Map<string, NodePropEntry>): {
    added: NodePropEntry[];
    removed: NodePropEntry[];
    changed: NodePropChanged[];
};
type EdgePropEntry = {
    from: string;
    to: string;
    label: string;
    key: string;
    value: unknown;
};
type EdgePropChanged = {
    from: string;
    to: string;
    label: string;
    key: string;
    leftValue: unknown;
    rightValue: unknown;
};
/**
 * Finds removed and changed entries by iterating the left edge property map against the right.
 */
export declare function findEdgePropRemovedAndChanged(left: Map<string, EdgePropEntry>, right: Map<string, EdgePropEntry>): {
    removed: EdgePropEntry[];
    changed: EdgePropChanged[];
};
/**
 * Finds edge property entries present in right but absent from left.
 */
export declare function findEdgePropAdded(left: Map<string, EdgePropEntry>, right: Map<string, EdgePropEntry>): EdgePropEntry[];
/**
 * Computes added, removed, and changed deltas between two edge property maps.
 */
export declare function compareEdgePropertyMaps(left: Map<string, EdgePropEntry>, right: Map<string, EdgePropEntry>): {
    added: EdgePropEntry[];
    removed: EdgePropEntry[];
    changed: EdgePropChanged[];
};
type ViewPropAdded = {
    key: string;
    value: unknown;
};
type ViewPropRemoved = {
    key: string;
    value: unknown;
};
type ViewPropChanged = {
    key: string;
    leftValue: unknown;
    rightValue: unknown;
};
type ViewPropertyDelta = {
    added: ViewPropAdded[];
    removed: ViewPropRemoved[];
    changed: ViewPropChanged[];
};
/**
 * Computes the ownership status of a key in left and right property records.
 */
export declare function keyOwnership(key: string, left: Record<string, unknown>, // nosemgrep: ts-no-record-string-unknown-outside-adapters -- 0025B; nosemgrep: ts-no-unknown-outside-adapters -- 0025B
right: Record<string, unknown>): {
    leftHas: boolean;
    rightHas: boolean;
};
/**
 * Classifies a property key that exists in both sides as changed or unchanged.
 */
export declare function classifySharedPropertyKey(key: string, props: {
    left: Record<string, unknown>;
    right: Record<string, unknown>;
}, // nosemgrep: ts-no-record-string-unknown-outside-adapters -- 0025B; nosemgrep: ts-no-unknown-outside-adapters -- 0025B
changed: ViewPropChanged[]): void;
/**
 * Classifies a single property key into added, removed, or changed.
 */
export declare function classifyPropertyKey(key: string, props: {
    left: Record<string, unknown>;
    right: Record<string, unknown>;
}, // nosemgrep: ts-no-record-string-unknown-outside-adapters -- 0025B; nosemgrep: ts-no-unknown-outside-adapters -- 0025B
delta: ViewPropertyDelta): void;
/**
 * Compares property records from two node views and returns the delta.
 */
export declare function compareNodeViewProperties(leftProps: Record<string, unknown>, // nosemgrep: ts-no-record-string-unknown-outside-adapters -- 0025B; nosemgrep: ts-no-unknown-outside-adapters -- 0025B
rightProps: Record<string, unknown>): ViewPropertyDelta;
export {};
