import { AsyncSequence } from "./async/types.js"; import { Sequence } from "./sync/types.js"; export type Predicate = (obj: T) => boolean; export type AnyPredicate = (obj: T) => unknown; export type FilterPredicate = (obj: TElement) => obj is TFiltered; export type Converter = (obj: TFrom) => TTo; export type BiConverter = (first: TFromFirst, second: TFromSecond) => TTo; export type Action = (obj: T) => unknown; export type Accumulator = (acc: TAccumulator, obj: TElement) => TAccumulator; export type Comparer = (first: T, second: T) => number; export type Equater = (first: T, second: T) => boolean; export type MaybeAsyncIterable = Iterable | AsyncIterable; export type MaybeAsyncIterator = Iterator | AsyncIterator; export type MaybeAsyncGenerator = Generator | AsyncGenerator; export type AsyncFunction any> = TFunc extends (...args: infer P) => infer R ? (...args: P) => Promise> : never; export type MaybePromise = T | Promise; export type MaybePromiseLike = T | PromiseLike; export type MaybeAsyncFunction any> = TFunc extends (...args: infer P) => infer R ? (...args: P) => MaybePromise : never; export type MaybeAsyncSequence = Sequence | AsyncSequence; export type AsyncPredicate = AsyncFunction>; export type AsyncAnyPredicate = AsyncFunction>; export type MaybeAsyncPredicate = MaybeAsyncFunction>; export type MaybeAsyncAnyPredicate = MaybeAsyncFunction>; export type AsyncConverter = AsyncFunction>; export type MaybeAsyncConverter = MaybeAsyncFunction>; export type AsyncBiConverter = AsyncFunction>; export type MaybeAsyncBiConverter = MaybeAsyncFunction>; export type AsyncAction = AsyncFunction>; export type MaybeAsyncAction = MaybeAsyncFunction>; export type AsyncAccumulator = AsyncFunction>; export type MaybeAsyncAccumulator = MaybeAsyncFunction>; export type AsyncComparer = AsyncFunction>; export type MaybeAsyncComparer = MaybeAsyncFunction>; export type AsyncEquater = AsyncFunction>; export type MaybeAsyncEquater = MaybeAsyncFunction>;