import { Flu } from '../flu'; import { Voidable } from '../maybe'; import { Seq } from '.'; export { filter as where, all, any, includes as contains, map as select, flatMap as selectMany, zip, skip, take, relateMap as join, relate as joinPair, groupBy, nth as elementAt, first, last, find as single, as as cast, toArray, toMap, toSet, chain as concat, fold as aggregate, avg as average, count, min, max, sum } from './ops'; export declare class SeqLinq implements Iterable { readonly iter: () => Iterable; constructor(iter: () => Iterable); [Symbol.iterator](): Iterator; static empty(): SeqLinq; /** Create a SeqLinq from a range starting from 0 */ static to(to: number, step?: number): SeqLinq; /** Create a SeqLinq from a range */ static range(from: number, to: number, step?: number): SeqLinq; static repeat(v: T, n: number): SeqLinq; seq(): Seq; flu(): Flu; toFlu(): T extends infer R | Promise ? Flu : never; where(f: (v: T) => unknown): Iterable; all(f: (v: T) => v is S): this is SeqLinq; all(f: (v: T) => unknown): boolean; any(f: (v: T) => unknown): boolean; contains(v: T): boolean; select(f: (v: T) => R): SeqLinq; selectMany(f: (v: T) => Iterable): SeqLinq; zip(other: Iterable): SeqLinq<[T, U]>; skip(n: number): SeqLinq; take(n: number): SeqLinq; join(inner: Iterable, outerKey: (a: T) => K, innerKey: (b: I) => K, selector: (a: T, b: I) => R): SeqLinq; joinPair(inner: Iterable, outerKey: (a: T) => K, innerKey: (b: I) => K): SeqLinq<[T, I]>; groupBy(keyf: (v: T) => K): SeqLinq<[K, T[]]>; groupBy(keyf: (v: T) => K, valf: (v: T) => V): SeqLinq<[K, V[]]>; elementAt(n: number): Voidable; first(): Voidable; last(): Voidable; find(f: (v: T) => unknown): Voidable; cast(): SeqLinq; toArray(): T[]; toSet(): Set; toMap(): T extends [infer K, infer V] ? Map : never; concat(other: Iterable, ...more: Iterable[]): SeqLinq; aggregate(init: R, f: (acc: R, val: T) => R): R; average(defv: T): T extends number | bigint ? T : never; average(): T extends number | bigint ? Voidable : never; count(): number; min(): Voidable; max(): Voidable; sum(defv: T): T extends number | bigint | string ? T : never; sum(): T extends number | bigint | string ? Voidable : never; }