import type { CollectionAfterItemEvent } from "@arcgis/core/core/Collection";
import Collection from "@arcgis/core/core/Collection";
import type { ChangeEvent } from "../support/esri.js";
import type { CompareOptions } from "./array.js";
export type { CompareOptions, ChangeEvent };
/**
 * Raised when items are added or removed from a collection like object.
 */
export interface AfterItemChangeEvent<TCollection, TItem> extends CollectionAfterItemEvent<TItem> {
    /**
     * The collection like object that raised the event.
     */
    target: TCollection;
}
/**
 * Compares two collections and invokes callbacks for items that are new,
 * missing, or matching in the second collection relative to the first.
 *
 * @param collection1 The first collection.
 * @param collection2 The second collection to compare to the first.
 * @param options Options specifying the callbacks to invoke.
 */
export declare function compare<T, U>(collection1: Collection<T> | Iterable<T>, collection2: Collection<U> | Iterable<U>, options: CompareOptions<T, U>): void;
/**
 * Compares two collections and invokes callbacks for items that are new,
 * missing, or matching in the second collection relative to the first.
 *
 * @param collection1 The first collection.
 * @param collection2 The second collection to compare to the first.
 * @param options Options specifying the callbacks to invoke.
 */
export declare function compareAsync<T, U>(collection1: Collection<T> | Iterable<T>, collection2: Collection<U> | Iterable<U>, options: CompareOptions<T, U>): Promise<void>;
