import { IAsyncEnumerable, IEnumerable, IList, IOrderedAsyncEnumerable } from './interfaces';
export declare class AsyncEnumerable<T> implements IAsyncEnumerable<T> {
    private _linqAsyncEnumerable;
    constructor(items: Iterable<T>);
    static fromArray<T>(items: readonly T[]): IAsyncEnumerable<T>;
    static from<T>(generator: () => AsyncIterableIterator<T>): IAsyncEnumerable<T>;
    [Symbol.asyncIterator](): AsyncIterator<T>;
    ToArrayAsync(): Promise<T[]>;
    ToArray(): T[];
    ToListAsync(): Promise<IList<T>>;
    CountAsync(predicate?: (item: T) => Promise<boolean> | boolean): Promise<number>;
    FirstAsync(predicate?: (item: T) => Promise<boolean> | boolean): Promise<T>;
    FirstOrDefaultAsync(predicate?: (item: T) => Promise<boolean> | boolean, defaultValue?: T): Promise<T | undefined>;
    LastAsync(predicate?: (item: T) => Promise<boolean> | boolean): Promise<T>;
    LastOrDefaultAsync(predicate?: (item: T) => Promise<boolean> | boolean, defaultValue?: T): Promise<T | undefined>;
    SingleAsync(predicate?: (item: T) => Promise<boolean> | boolean): Promise<T>;
    SingleOrDefaultAsync(predicate?: (item: T) => Promise<boolean> | boolean, defaultValue?: T): Promise<T | undefined>;
    Where(predicate: (item: T, index?: number) => Promise<boolean> | boolean): IAsyncEnumerable<T>;
    Select<TResult>(selector: (item: T, index?: number) => Promise<TResult> | TResult): IAsyncEnumerable<TResult>;
    SelectMany<TResult>(selector: (item: T) => IAsyncEnumerable<TResult> | IEnumerable<TResult>): IAsyncEnumerable<TResult>;
    OrderBy<TKey>(keySelector: (item: T) => TKey): IOrderedAsyncEnumerable<T>;
    OrderByDescending<TKey>(keySelector: (item: T) => TKey): IOrderedAsyncEnumerable<T>;
    Distinct<TKey = T>(keySelector?: (item: T) => TKey): IAsyncEnumerable<T>;
    Take(count: number): IAsyncEnumerable<T>;
    Skip(count: number): IAsyncEnumerable<T>;
    TakeWhile(predicate: (item: T) => Promise<boolean> | boolean): IAsyncEnumerable<T>;
    SkipWhile(predicate: (item: T) => Promise<boolean> | boolean): IAsyncEnumerable<T>;
    AggregateAsync<TAccumulate>(seed: TAccumulate, func: (accumulate: TAccumulate, item: T) => Promise<TAccumulate> | TAccumulate): Promise<TAccumulate>;
    SumAsync(selector?: (item: T) => number): Promise<number>;
    AverageAsync(selector?: (item: T) => number): Promise<number>;
    MinAsync(selector?: (item: T) => number): Promise<number>;
    MaxAsync(selector?: (item: T) => number): Promise<number>;
    AnyAsync(predicate?: (item: T) => Promise<boolean> | boolean): Promise<boolean>;
    AllAsync(predicate: (item: T) => Promise<boolean> | boolean): Promise<boolean>;
    ContainsAsync(item: T): Promise<boolean>;
    ToEnumerable(): Promise<IEnumerable<T>>;
}
