import { GroupedAsyncEnumerable } from "./GroupedAsyncEnumerable"; import { IObjectType, ValueType } from "../Common/Type"; import { IOrderDefinition } from "../Enumerable/Interface/IOrderDefinition"; declare module "./AsyncEnumerable" { interface AsyncEnumerable { select(type: IObjectType, selector: ((item: T) => TReturn | PromiseLike)): AsyncEnumerable; select(selector: ((item: T) => TReturn | PromiseLike)): AsyncEnumerable; select(typeOrSelector: IObjectType | ((item: T) => TReturn | PromiseLike), selector?: ((item: T) => TReturn)): AsyncEnumerable; selectMany(selector: (item: T) => Iterable | AsyncIterable): AsyncEnumerable; where(predicate: (item: T) => boolean | PromiseLike): AsyncEnumerable; orderBy(...selectors: IOrderDefinition[]): AsyncEnumerable; skip(skip: number): AsyncEnumerable; take(take: number): AsyncEnumerable; groupBy(keySelector: (item: T) => K | PromiseLike): AsyncEnumerable>; distinct(selector?: (item: T) => any | PromiseLike): AsyncEnumerable; innerJoin(array2: AsyncIterable, relation: (item: T, item2: T2) => boolean | PromiseLike, resultSelector: (item1: T, item2: T2) => TResult | PromiseLike): AsyncEnumerable; leftJoin(array2: AsyncIterable, relation: (item: T, item2: T2) => boolean | PromiseLike, resultSelector: (item1: T, item2: T2 | null) => TResult | PromiseLike): AsyncEnumerable; rightJoin(array2: AsyncIterable, relation: (item: T, item2: T2) => boolean | PromiseLike, resultSelector: (item1: T | null, item2: T2) => TResult | PromiseLike): AsyncEnumerable; fullJoin(array2: AsyncIterable, relation: (item: T, item2: T2) => boolean | PromiseLike, resultSelector: (item1: T | null, item2: T2 | null) => TResult | PromiseLike): AsyncEnumerable; groupJoin(array2: AsyncIterable, relation: (item: T, item2: T2) => boolean | PromiseLike, resultSelector: (item1: T, item2: T2[]) => TResult | PromiseLike): AsyncEnumerable; union(array2: AsyncIterable, isUnionAll?: boolean): AsyncEnumerable; intersect(array2: AsyncIterable): AsyncEnumerable; except(array2: AsyncIterable): AsyncEnumerable; pivot ValueType | PromiseLike; }, TM extends { [key: string]: (item: T[]) => ValueType | PromiseLike; }, TResult extends { [key in (keyof TD & keyof TM)]: ValueType; }>(dimensions: TD, metrics: TM): AsyncEnumerable; } }