/**
 * StateDiff - Deterministic state diff engine for PULSE subscriptions.
 *
 * Computes what changed between two materialized WarpState states.
 * Used by the subscription system to notify handlers of graph changes.
 *
 * @module domain/services/state/StateDiff
 * @see ROADMAP.md PL/DIFF/1
 */
import type { WarpState } from '../JoinReducer.ts';
export interface EdgeChange {
    from: string;
    to: string;
    label: string;
}
export interface PropSet {
    key: string;
    nodeId: string;
    propKey: string;
    oldValue: unknown;
    newValue: unknown;
}
export interface PropRemoved {
    key: string;
    nodeId: string;
    propKey: string;
    oldValue: unknown;
}
type StateDiffResultFields = {
    readonly nodes: {
        readonly added: string[];
        readonly removed: string[];
    };
    readonly edges: {
        readonly added: EdgeChange[];
        readonly removed: EdgeChange[];
    };
    readonly props: {
        readonly set: PropSet[];
        readonly removed: PropRemoved[];
    };
};
export declare class StateDiffResult {
    readonly nodes: {
        readonly added: readonly string[];
        readonly removed: readonly string[];
    };
    readonly edges: {
        readonly added: readonly Readonly<EdgeChange>[];
        readonly removed: readonly Readonly<EdgeChange>[];
    };
    readonly props: {
        readonly set: readonly Readonly<PropSet>[];
        readonly removed: readonly Readonly<PropRemoved>[];
    };
    constructor({ nodes, edges, props }: StateDiffResultFields);
}
/**
 * Computes a deterministic diff between two materialized states.
 */
export declare function diffStates(before: WarpState | null, after: WarpState): StateDiffResult;
/**
 * Returns true if the diff represents no changes.
 */
export declare function isEmptyDiff(diff: StateDiffResult): boolean;
/**
 * Creates an empty diff result.
 */
export declare function createEmptyDiff(): StateDiffResult;
export {};
