declare class Node { static readonly Undefined: Node; element: E; next: Node; prev: Node; constructor(element: E); } export declare class LinkedList { private _first; private _last; private _size; get size(): number; isEmpty(): boolean; reverse(): Node; clear(): void; unshift(element: E): () => void; push(element: E): () => void; private _insert; shift(): E | undefined; pop(): E | undefined; private _remove; [Symbol.iterator](): Iterator; toArray(): E[]; } declare type Listener = [(e: T) => void, any] | ((e: T) => void); export interface IDisposable { dispose(): void; } export declare class Event { private static readonly _noop; private _deliveryQueue?; protected _listeners?: LinkedList>; private _event?; get event(): (listener: (e: T) => any, thisArgs?: any) => IDisposable; fire(event: T): void; } export {};