export declare type DiffResult<T> = {
    added: T[];
    removed: T[];
    modified: T[];
};
export declare function diff<A extends object, B extends object, K extends keyof (A & B)>(oldObject: A, newObject: B): DiffResult<K>;
/**
 * Calculates the difference between two states of the same array.
 *
 * Returns a list of added and removed elements.
 *
 * @template T
 * @param {T[]} oldList
 * @param {T[]} newList
 * @returns {DiffResult<T>}
 * @memberof SubscriptionManager
 */
export declare function diff<T extends string | number>(oldList: T[], newList: T[]): DiffResult<T>;
/**
 * Calculates the difference between two states of the same array.
 *
 * Returns the keys of added and removed elements.
 *
 * @template T
 * @template K
 * @param {T[]} oldList
 * @param {T[]} newList
 * @param {K} key
 * @returns {DiffResult<string>}
 * @memberof SubscriptionManager
 */
export declare function diff<T extends object, K extends keyof T>(oldList: T[], newList: T[], key: K): DiffResult<string>;
export declare function calculateObjectDiff<T extends object>(oldObject: T, newObject: T): DiffResult<string>;
export declare function calculateListDiff<T extends string | number>(oldList: T[], newList: T[]): DiffResult<T>;
export declare function calculateListDiff<T extends object, K extends keyof T>(oldList: T[], newList: T[], key: K): DiffResult<string>;
