import { Collector } from "../collector/types.js"; import { MaybeAsyncComparisonOrComparer, AsyncComparer } from "../comparer/types.js"; import { MaybeAsyncEqualityComparison } from "../equality-comparer/types.js"; import { AsyncRandomOptions } from "../random/types.js"; import { MaybeAsyncAnyPredicate, MaybeAsyncConverter, MaybeAsyncBiConverter, MaybeAsyncAccumulator, MaybeAsyncAction, MaybeAsyncFunction, MaybePromise, MaybeAsyncIterable } from "../types.js"; export type AsyncSequencePipeline = MaybeAsyncFunction<(sequence: AsyncSequence) => TResult>; export interface AsyncSequence extends AsyncIterable { iterator(): AsyncIterator; apply(pipeline: AsyncSequencePipeline): MaybePromise; count(predicate?: MaybeAsyncAnyPredicate): Promise; nonEnumeratedCount(): Promise; fastCount(): Promise; maxCount(): Promise; select(selector: MaybeAsyncConverter): AsyncSequence; selectMany(selector: MaybeAsyncConverter>): AsyncSequence; where(predicate: MaybeAsyncAnyPredicate): AsyncSequence; where(predicate: MaybeAsyncAnyPredicate): AsyncSequence; groupBy(keySelector: MaybeAsyncConverter, elementSelector?: undefined, keyComparer?: MaybeAsyncEqualityComparison): AsyncSequence>; groupBy(keySelector: MaybeAsyncConverter, elementSelector: MaybeAsyncConverter, keyComparer?: MaybeAsyncEqualityComparison): AsyncSequence>; join(sequence: MaybeAsyncIterable, firstKeySelector: MaybeAsyncConverter, secondKeySelector: MaybeAsyncConverter, resultSelector?: undefined, keyComparer?: MaybeAsyncEqualityComparison): AsyncSequence<[TElement, TOther]>; join(sequence: MaybeAsyncIterable, firstKeySelector: MaybeAsyncConverter, secondKeySelector: MaybeAsyncConverter, resultSelector: MaybeAsyncBiConverter, keyComparer?: MaybeAsyncEqualityComparison): AsyncSequence; groupJoin(sequence: MaybeAsyncIterable, firstKeySelector: MaybeAsyncConverter, secondKeySelector: MaybeAsyncConverter, resultSelector?: undefined, keyComparer?: MaybeAsyncEqualityComparison): AsyncSequence>; groupJoin(sequence: MaybeAsyncIterable, firstKeySelector: MaybeAsyncConverter, secondKeySelector: MaybeAsyncConverter, resultSelector: MaybeAsyncBiConverter, TResult>, keyComparer?: MaybeAsyncEqualityComparison): AsyncSequence; contains(obj: TElement, equater?: MaybeAsyncEqualityComparison): Promise; sequenceEquals(sequence: MaybeAsyncIterable, equater?: MaybeAsyncEqualityComparison): Promise; append(obj: TElement): AsyncSequence; prepend(obj: TElement): AsyncSequence; remove(obj: TElement, all?: boolean, equater?: MaybeAsyncEqualityComparison): AsyncSequence; concat(...sequences: MaybeAsyncIterable[]): AsyncSequence; first(predicate?: MaybeAsyncAnyPredicate): Promise; firstOrDefault(predicate?: MaybeAsyncAnyPredicate, def?: TElement): Promise; last(predicate?: MaybeAsyncAnyPredicate): Promise; lastOrDefault(predicate?: MaybeAsyncAnyPredicate, def?: TElement): Promise; single(predicate?: MaybeAsyncAnyPredicate): Promise; singleOrDefault(predicate?: MaybeAsyncAnyPredicate, def?: TElement): Promise; elementAt(index: number): Promise; elementAtOrDefault(index: number, def?: TElement): Promise; aggregate(accumulator: MaybeAsyncAccumulator): Promise; aggregate(accumulator: MaybeAsyncAccumulator, seed?: TAccumulator): Promise; aggregate(accumulator: MaybeAsyncAccumulator, seed?: TAccumulator, resultSelector?: MaybeAsyncConverter): Promise; min(): Promise; minBy(selector: MaybeAsyncConverter): Promise; max(): Promise; maxBy(selector: MaybeAsyncConverter): Promise; bounds(comparer?: MaybeAsyncComparisonOrComparer): Promise<[min: TElement, max: TElement]>; boundsBy(selector: MaybeAsyncConverter, comparer?: MaybeAsyncComparisonOrComparer): Promise<[min: TElement, max: TElement]>; order(comparer?: MaybeAsyncComparisonOrComparer): AsyncSequence; orderBy(selector: MaybeAsyncConverter, comparer?: MaybeAsyncComparisonOrComparer): AsyncSequence; orderDescending(comparer?: MaybeAsyncComparisonOrComparer): AsyncSequence; orderByDescending(selector: MaybeAsyncConverter, comparer?: MaybeAsyncComparisonOrComparer): AsyncSequence; partition(equater?: MaybeAsyncEqualityComparison): AsyncSequence>; partitionBy(selector: MaybeAsyncConverter, equater?: MaybeAsyncEqualityComparison): AsyncSequence>; distinct(equater?: MaybeAsyncEqualityComparison): AsyncSequence; distinctBy(selector: MaybeAsyncConverter, equater?: MaybeAsyncEqualityComparison): AsyncSequence; union(sequence: MaybeAsyncIterable, equater?: MaybeAsyncEqualityComparison): AsyncSequence; unionBy(sequence: MaybeAsyncIterable, selector: MaybeAsyncConverter, equater?: MaybeAsyncEqualityComparison): AsyncSequence; except(sequence: MaybeAsyncIterable, equater?: MaybeAsyncEqualityComparison): AsyncSequence; exceptBy(sequence: MaybeAsyncIterable, selector: MaybeAsyncConverter, equater?: MaybeAsyncEqualityComparison): AsyncSequence; intersect(sequence: MaybeAsyncIterable, equater?: MaybeAsyncEqualityComparison): AsyncSequence; intersectBy(sequence: MaybeAsyncIterable, selector: MaybeAsyncConverter, equater?: MaybeAsyncEqualityComparison): AsyncSequence; all(predicate: MaybeAsyncAnyPredicate): Promise; any(predicate: MaybeAsyncAnyPredicate): Promise; any(): Promise; none(predicate: MaybeAsyncAnyPredicate): Promise; none(): Promise; skip(n: number): AsyncSequence; skipLast(n: number): AsyncSequence; skipWhile(condition: MaybeAsyncAnyPredicate): AsyncSequence; take(n: number): AsyncSequence; takeLast(n: number): AsyncSequence; takeWhile(condition: MaybeAsyncAnyPredicate): AsyncSequence; peek(action: MaybeAsyncAction): AsyncSequence; forEach(action: MaybeAsyncAction): Promise; zip(sequence: MaybeAsyncIterable): AsyncSequence<[TElement, TOther]>; indexed(): AsyncSequence<[number, TElement]>; reversed(): AsyncSequence; chunked(size: number): AsyncSequence>; chunked(size: number, transformer: AsyncSequencePipeline): AsyncSequence; random(options?: AsyncRandomOptions): Promise; cached(): AsyncSequence; asArray(): Promise; toArray(): Promise; toMap(keySelector: MaybeAsyncConverter): Promise>; toMap(keySelector: MaybeAsyncConverter, valueSelector: MaybeAsyncConverter): Promise>; toSet(): Promise>; toObject(keySelector: MaybeAsyncConverter): Promise>; toObject(keySelector: MaybeAsyncConverter, valueSelector: MaybeAsyncConverter): Promise>; collect(collector: Collector): Promise; } export interface GroupedAsyncSequence extends AsyncSequence { get key(): TKey; } export interface OrderedAsyncSequence extends AsyncSequence { get comparer(): AsyncComparer; thenSelf(comparer?: MaybeAsyncComparisonOrComparer): OrderedAsyncSequence; thenBy(selector: MaybeAsyncConverter, comparer?: MaybeAsyncComparisonOrComparer): OrderedAsyncSequence; thenSelfDescending(comparer?: MaybeAsyncComparisonOrComparer): OrderedAsyncSequence; thenByDescending(selector: MaybeAsyncConverter, comparer?: MaybeAsyncComparisonOrComparer): OrderedAsyncSequence; }