import type { AnyEntity } from '../typings.js';
import { ChangeSet } from './ChangeSet.js';
import { type Collection } from '../entity/Collection.js';
import type { EntityManager } from '../EntityManager.js';
/** @internal Computes change sets by comparing entity state against original snapshots. */
export declare class ChangeSetComputer {
    #private;
    constructor(em: EntityManager, collectionUpdates: Set<Collection<AnyEntity>>);
    /** Computes a change set for the given entity by diffing against its original state. */
    computeChangeSet<T extends object>(entity: T): ChangeSet<T> | null;
    /**
     * Traverses entity graph and executes `onCreate` and `onUpdate` methods, assigning the values to given properties.
     */
    private processPropertyInitializers;
    private computePayload;
    private processProperty;
    private processToOne;
    private processToMany;
}
