import { IOrderedEnumerable, IEnumerable, IQueryable, IKeyValue, IGrouping } from "./Enumerables"; import { Action, Selector, Aggregator, Predicate, Indexer, Type, Dynamic } from "./Types"; import { Comparer } from "./Comparers"; export declare abstract class EnumerableCollection implements IQueryable { abstract copy(): IQueryable; abstract asEnumerable(): IEnumerable; abstract toArray(): TElement[]; toList(): IList; toDictionary(keySelector: Selector, valueSelector: Selector): IDictionary; reverse(): IEnumerable; concat(other: TElement[] | IQueryable, ...others: Array>): IEnumerable; contains(element: TElement): boolean; where(predicate: Predicate): IEnumerable; select(selector: Selector): IEnumerable; selectMany(selector: Selector | IEnumerable>): IEnumerable; elementAt(index: number): TElement; except(other: IQueryable): IEnumerable; first(): TElement; first(predicate: Predicate): TElement; groupBy(keySelector: Selector): IEnumerable>; groupBy(keySelector: Selector, valueSelector: Selector): IEnumerable>; last(): TElement; last(predicate: Predicate): TElement; single(): TElement; single(predicate: Predicate): TElement; singleOrDefault(): TElement | undefined; singleOrDefault(predicate: Predicate): TElement | undefined; distinct(): IEnumerable; distinct(keySelector: Selector): IEnumerable; min(): TElement; min(selector: Selector): TSelectorOut; orderBy(keySelector: Selector): IOrderedEnumerable; orderBy(keySelector: Selector, comparer: Comparer): IOrderedEnumerable; orderByDescending(keySelector: Selector): IOrderedEnumerable; max(): TElement; max(selector: Selector): TSelectorOut; sum(selector: Selector): number; skip(amount: number): IEnumerable; take(amount: number): IEnumerable; union(other: IQueryable): IEnumerable; aggregate(aggregator: Aggregator): TElement; aggregate(aggregator: Aggregator, initialValue: TValue): TValue; any(): boolean; any(predicate: Predicate): boolean; all(predicate: Predicate): boolean; average(selector: Selector): number; count(): number; count(predicate: Predicate): number; elementAtOrDefault(index: number): TElement | undefined; firstOrDefault(): TElement | undefined; firstOrDefault(predicate: Predicate): TElement | undefined; lastOrDefault(): TElement | undefined; lastOrDefault(predicate: Predicate): TElement | undefined; forEach(action: Action): void; } export declare abstract class ArrayQueryable extends EnumerableCollection { protected source: TElement[]; abstract copy(): IQueryable; constructor(); constructor(elements: TElement[]); asArray(): TElement[]; toArray(): TElement[]; toList(): IList; asEnumerable(): IEnumerable; aggregate(aggregator: Aggregator): TElement; aggregate(aggregator: Aggregator, initialValue: TValue): TValue; any(): boolean; any(predicate: Predicate): boolean; all(predicate: Predicate): boolean; average(selector: Selector): number; count(): number; count(predicate: Predicate): number; elementAtOrDefault(index: number): TElement | undefined; firstOrDefault(): TElement | undefined; firstOrDefault(predicate: Predicate): TElement | undefined; groupBy(keySelector: Selector): IEnumerable>; groupBy(keySelector: Selector, valueSelector: Selector): IEnumerable>; lastOrDefault(): TElement | undefined; lastOrDefault(predicate: Predicate): TElement | undefined; forEach(action: Action): void; } export interface IReadOnlyList extends IQueryable { copy(): IList; get(index: number): TElement | undefined; indexOf(element: TElement): number; } export interface IList extends IReadOnlyList { asReadOnly(): IReadOnlyList; asArray(): TElement[]; clear(): void; push(element: TElement): number; pushRange(elements: TElement[] | IQueryable): number; pushFront(element: TElement): number; pop(): TElement | undefined; popFront(): TElement | undefined; remove(element: TElement): void; removeAt(index: number): TElement | undefined; set(index: number, element: TElement): void; insert(index: number, element: TElement): void; } export declare class List extends ArrayQueryable implements IList { copy(): IList; asReadOnly(): IReadOnlyList; clear(): void; remove(element: TElement): void; removeAt(index: number): TElement | undefined; get(index: number): TElement | undefined; push(element: TElement): number; pushRange(elements: TElement[] | IQueryable): number; pushFront(element: TElement): number; pop(): TElement | undefined; popFront(): TElement | undefined; set(index: number, element: TElement): void; insert(index: number, element: TElement): void; indexOf(element: TElement): number; } export interface IStack extends IQueryable { copy(): IStack; asArray(): TElement[]; clear(): void; peek(): TElement | undefined; pop(): TElement | undefined; push(element: TElement): number; } export declare class Stack extends ArrayQueryable implements IStack { copy(): IStack; clear(): void; peek(): TElement | undefined; pop(): TElement | undefined; push(element: TElement): number; } export interface IReadOnlyDictionary extends IQueryable> { copy(): IDictionary; containsKey(key: TKey): boolean; containsValue(value: TValue): boolean; getKeys(): IList; getValues(): IList; get(key: TKey): TValue; } export interface IDictionary extends IReadOnlyDictionary { asReadOnly(): IReadOnlyDictionary; clear(): void; remove(key: TKey): void; set(key: TKey, value: TValue): void; setOrUpdate(key: TKey, value: TValue): void; } export declare class Dictionary extends EnumerableCollection> implements IDictionary { static fromArray(array: TArray[], keySelector: Selector, valueSelector: Selector): IDictionary; static fromJsObject(object: Dynamic): IDictionary; protected dictionary: Dynamic; protected keyType: Type; constructor(); constructor(keyValuePairs: Array>); copy(): IDictionary; asReadOnly(): IReadOnlyDictionary; asEnumerable(): IEnumerable>; toArray(): Array>; clear(): void; containsKey(key: TKey): boolean; containsValue(value: TValue): boolean; getKeys(): IList; protected getKeysFast(): string[]; getValues(): IList; remove(key: TKey): void; get(key: TKey): TValue; set(key: TKey, value: TValue): void; setOrUpdate(key: TKey, value: TValue): void; }