import { Func } from "../CommonDelegates";
import '../index';
export declare class List<T> {
    constructor(array?: Array<T> | null);
    get Items(): Array<T>;
    private _Array;
    get Array(): Array<T>;
    get Count(): number;
    Select<RType>(func: Func<T, RType>): List<RType>;
    SelectMany<RType>(func: (arg: T) => RType[]): List<RType>;
    Sort(compareFun: (a: T, b: T) => number): List<T>;
    Reverse(): List<T>;
    Foreach(func: (arg: T) => void): void;
    Any(func?: (arg: T) => boolean): boolean;
    All(func: (arg: T) => boolean): boolean;
    get IsEmpty(): boolean;
    Add(item: T): void;
    EnsureItem(item: T, comparer?: (obj1: T, obj2: T) => boolean): T;
    AddRange(items: List<T> | Array<T>): void;
    Union(another: List<T> | Array<T>): List<T>;
    Where(func: Func<T, boolean>): List<T>;
    ItemAt(index: number): T;
    IndexOf(item: T): number;
    RemoveAt(index: any): {
        removedItem: T;
    };
    RemoveRange(index: number, length: number): {
        removed: T[];
    };
    RemoveWhere(func: Func<T, boolean>): {
        removedItems: T[];
    };
    GetRange(index: number, length?: number | undefined): List<T>;
    Insert(index: number, item: T): void;
    InsertRange(index: number, items: List<T> | Array<T>): void;
    FirstOrNull(func?: Func<T, boolean>): T | null;
    First(func?: Func<T, boolean>): T;
    LastOrNull(func?: Func<T, boolean> | null): T | null;
    Last(func?: Func<T, boolean> | null): T;
    Skip(countToSkip: number): List<T>;
    Take(countToTake: number): List<T>;
    Contains(obj: T): boolean;
    Distinct(): List<T>;
    Except(excepted: List<T> | T[]): List<T>;
    Clone(): List<T>;
    Intersect(otherList: List<T> | T[]): List<T>;
    Reset(): void;
    ToMap<TKey>(keySelector: (item: T) => TKey, distinctItems: boolean): Map<TKey, T[]>;
    _EnsureObservers(): ((changedArray: Array<T>, added: Array<T>, removed: Array<T>) => void)[];
}
//# sourceMappingURL=List.d.ts.map