import { IDetachable } from "./IDetachable.js"; import { IDisposable } from "./IDisposable.js"; export interface IList extends IDisposable { get(itemIndex: number): TItem; first(): TItem; last(): TItem; add(item: TItem): void; insertAt(index: number, item: TItem): void; removeFirst(): TItem; removeLast(): TItem; removeAt(index: number): TItem; remove(index: number, count: number): TItem[]; clear(): void; length(): number; onAdded(addedCallback: () => void): IDetachable; onRemoved(removedCallback: () => void): IDetachable; onDisposed(disposedCallback: () => void): IDetachable; join(seperator?: string): string; toArray(): TItem[]; any(callback?: (item: TItem, index: number) => boolean): boolean; all(callback: (item: TItem) => boolean): boolean; forEach(callback: (item: TItem, index: number) => void): void; select(callback: (item: TItem, index: number) => T2): List; where(callback: (item: TItem, index: number) => boolean): List; orderBy(compareFn: (a: TItem, b: TItem) => number): List; orderByDesc(compareFn: (a: TItem, b: TItem) => number): List; clone(): List; concat(list: List): List; concatArray(array: TItem[]): List; } export declare class List implements IList { private privList; private privSubscriptionIdCounter; private privAddSubscriptions; private privRemoveSubscriptions; private privDisposedSubscriptions; private privDisposeReason; constructor(list?: TItem[]); get(itemIndex: number): TItem; first(): TItem; last(): TItem; add(item: TItem): void; insertAt(index: number, item: TItem): void; removeFirst(): TItem; removeLast(): TItem; removeAt(index: number): TItem; remove(index: number, count: number): TItem[]; clear(): void; length(): number; onAdded(addedCallback: () => void): IDetachable; onRemoved(removedCallback: () => void): IDetachable; onDisposed(disposedCallback: () => void): IDetachable; join(seperator?: string): string; toArray(): TItem[]; any(callback?: (item: TItem, index: number) => boolean): boolean; all(callback: (item: TItem) => boolean): boolean; forEach(callback: (item: TItem, index: number) => void): void; select(callback: (item: TItem, index: number) => T2): List; where(callback: (item: TItem, index: number) => boolean): List; orderBy(compareFn: (a: TItem, b: TItem) => number): List; orderByDesc(compareFn: (a: TItem, b: TItem) => number): List; clone(): List; concat(list: List): List; concatArray(array: TItem[]): List; isDisposed(): boolean; dispose(reason?: string): void; private throwIfDisposed; private triggerSubscriptions; }