import { Deque } from "tstl/container/Deque";
import { ICollection } from "../basic/ICollection";
import { IForwardIterator } from "tstl/iterator/IForwardIterator";
import { CollectionEvent } from "../basic/CollectionEvent";
export declare class DequeCollection<T> extends Deque<T> implements ICollection<T, Deque<T>, Deque.Iterator<T>, Deque.ReverseIterator<T>> {
    /**
     * @hidden
     */
    private dispatcher_;
    clear(): void;
    /**
     * @inheritdoc
     */
    push_front(val: T): void;
    /**
     * @inheritdoc
     */
    push_back(val: T): void;
    /**
     * @hidden
     */
    protected _Insert_by_range<U extends T, InputIterator extends Readonly<IForwardIterator<U, InputIterator>>>(pos: Deque.Iterator<T>, first: InputIterator, last: InputIterator): Deque.Iterator<T>;
    /**
     * @inheritdoc
     */
    pop_front(): void;
    /**
     * @inheritdoc
     */
    pop_back(): void;
    /**
     * @hidden
     */
    protected _Erase_by_range(first: Deque.Iterator<T>, last: Deque.Iterator<T>): Deque.Iterator<T>;
    /**
     * @inheritdoc
     */
    set(index: number, val: T): void;
    /**
     * @inheritdoc
     */
    refresh(): void;
    /**
     * @inheritdoc
     */
    refresh(it: Deque.Iterator<T>): void;
    /**
     * @inheritdoc
     */
    refresh(first: Deque.Iterator<T>, last: Deque.Iterator<T>): void;
    /**
     * @inheritdoc
     */
    dispatchEvent(event: DequeCollection.Event<T>): void;
    /**
     * @hidden
     */
    private _Notify_insert;
    /**
     * @hidden
     */
    private _Notify_erase;
    /**
     * @inheritdoc
     */
    hasEventListener(type: CollectionEvent.Type): boolean;
    /**
     * @inheritdoc
     */
    addEventListener(type: CollectionEvent.Type, listener: DequeCollection.Listener<T>): void;
    /**
     * @inheritdoc
     */
    removeEventListener(type: CollectionEvent.Type, listener: DequeCollection.Listener<T>): void;
}
export declare namespace DequeCollection {
    type Event<T> = CollectionEvent<T, Deque<T>, Deque.Iterator<T>, Deque.ReverseIterator<T>>;
    type Listener<T> = CollectionEvent.Listener<T, Deque<T>, Deque.Iterator<T>, Deque.ReverseIterator<T>>;
    const Event: typeof CollectionEvent;
    export import Iterator = Deque.Iterator;
    export import ReverseIterator = Deque.ReverseIterator;
}
//# sourceMappingURL=DequeCollection.d.ts.map