type Hash = unknown;
interface Delegate<T = any> {
    sort: (a: any, b: any) => number;
    hash_for_item?: (item: T) => Hash;
    set_animated_items: (items: Array<T>) => void;
    duration?: () => number;
    easing?: () => string;
}
interface Metrics {
    left: string;
    top: string;
    opacity: number;
    position: string;
    zIndex: number;
}
declare class SiblingAnimator {
    private container_element;
    private delegate;
    private hash_to_animated_metrics_map;
    private hash_to_animated_items_map;
    private private_element;
    private discrete_hashes_set;
    private previous_hashes_set;
    private addition_items_array;
    private rendered_once;
    private highest_z_index;
    constructor(delegate: Delegate);
    set_container_element(element?: HTMLElement): void;
    set_discrete_items(items: Array<unknown>): void;
    private hash_for_item;
    private animated_hashes_set;
    get animated_items(): unknown[];
    get discrete_items(): Array<unknown>;
    set discrete_items(items: Array<unknown>);
    private inform_delegate;
    private animate_element;
    private animate_set;
    private numeric_value;
    layout(unused_animated_items?: Array<unknown>): void;
    metrics_for_item(item: unknown): Metrics;
}

export { SiblingAnimator };
export type { Delegate, Metrics };
