import { HashMultiSet } from "tstl/container/HashMultiSet";
import { ICollection } from "../basic/ICollection";
import { CollectionEvent } from "../basic/CollectionEvent";
export declare class HashMultiSetCollection<T> extends HashMultiSet<T> implements ICollection<T, HashMultiSet<T>, HashMultiSet.Iterator<T>, HashMultiSet.ReverseIterator<T>> {
    /**
     * @hidden
     */
    private dispatcher_;
    clear(): void;
    /**
     * @hidden
     */
    protected _Handle_insert(first: HashMultiSet.Iterator<T>, last: HashMultiSet.Iterator<T>): void;
    /**
     * @hidden
     */
    protected _Handle_erase(first: HashMultiSet.Iterator<T>, last: HashMultiSet.Iterator<T>): void;
    /**
     * @inheritDoc
     */
    dispatchEvent(event: HashMultiSetCollection.Event<T>): void;
    /**
     * @inheritDoc
     */
    refresh(): void;
    /**
     * @inheritDoc
     */
    refresh(it: HashMultiSet.Iterator<T>): void;
    /**
     * @inheritDoc
     */
    refresh(first: HashMultiSet.Iterator<T>, last: HashMultiSet.Iterator<T>): void;
    /**
     * @inheritDoc
     */
    hasEventListener(type: CollectionEvent.Type): boolean;
    /**
     * @inheritDoc
     */
    addEventListener(type: CollectionEvent.Type, listener: HashMultiSetCollection.Listener<T>): void;
    /**
     * @inheritDoc
     */
    removeEventListener(type: CollectionEvent.Type, listener: HashMultiSetCollection.Listener<T>): void;
}
export declare namespace HashMultiSetCollection {
    type Event<T> = CollectionEvent<T, HashMultiSet<T>, HashMultiSet.Iterator<T>, HashMultiSet.ReverseIterator<T>>;
    type Listener<T> = CollectionEvent.Listener<T, HashMultiSet<T>, HashMultiSet.Iterator<T>, HashMultiSet.ReverseIterator<T>>;
    const Event: typeof CollectionEvent;
    export import Iterator = HashMultiSet.Iterator;
    export import ReverseIterator = HashMultiSet.ReverseIterator;
}
//# sourceMappingURL=HashMultiSetCollection.d.ts.map