export type ArraySubject = Promise | A[];
export type ObjectSubject = Promise> | Record;
export const all: (doc: ArraySubject | A>) => Promise;
export const allValues: (doc: ObjectSubject | A>) => Promise>;
export const entries: (doc: ObjectSubject | A>) => Promise<[string, A][]>;
export const every: (
(fn: FilterFn, doc: ArraySubject) => Promise
) & (
(fn: FilterFn) => Every
);
export type Every = (doc: ArraySubject) => Promise;
export const filter: (
(fn: FilterFn, doc: ArraySubject) => Promise
) & (
(fn: FilterFn) => Filter
);
export type Filter = (doc: ArraySubject) => Promise;
export type FilterFn = (item: A, index: number) => Promise | boolean;
export const map: (
(fn: MapFn, doc: ArraySubject) => Promise
) & (
(fn: MapFn) => Mapper
);
export type Mapper = (doc: ArraySubject) => Promise;
export type MapFn = (item: A, index: number) => B;
export const reduce: (
(fn: ReduceFn, initialValue: B, doc: ArraySubject) => Promise
) & (
(fn: ReduceFn, initialValue: B) => Reducer
) & (
(fn: ReduceFn) => (initialValue: B) => Reducer
);
export type Reducer = (doc: ArraySubject) => Promise;
export type ReduceFn = (acc: B, item: A, index: number) => Promise | B;
export const some: (
(fn: FilterFn, doc: ArraySubject) => Promise
) & (
(fn: FilterFn) => Some
);
export type Some = (doc: ArraySubject) => Promise;
export const pipeline: (
(fns: [(a: A) => B], initialValue: A) => Promise
) & (
(fns: [(a: A) => B]) => Pipeline
) & (
(fns: [
(a: A) => B,
(b: B) => C
], initialValue: A) => Promise
) & (
(fns: [
(a: A) => B,
(b: B) => C
]) => Pipeline
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D
], initialValue: A) => Promise
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D
]) => Pipeline
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E
], initialValue: A) => Promise
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E
]) => Pipeline
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E,
(e: E) => F
], initialValue: A) => Promise
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E,
(e: E) => F
]) => Pipeline
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E,
(e: E) => F,
(f: F) => G
], initialValue: A) => Promise
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E,
(e: E) => F,
(f: F) => G
]) => Pipeline
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E,
(e: E) => F,
(f: F) => G,
(g: G) => H
], initialValue: A) => Promise
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E,
(e: E) => F,
(f: F) => G,
(g: G) => H
]) => Pipeline
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E,
(e: E) => F,
(f: F) => G,
(g: G) => H,
(h: H) => I
], initialValue: A) => Promise
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E,
(e: E) => F,
(f: F) => G,
(g: G) => H,
(h: H) => I
]) => Pipeline
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E,
(e: E) => F,
(f: F) => G,
(g: G) => H,
(h: H) => I,
...Function[] // eslint-disable-line @typescript-eslint/ban-types
], initialValue: A) => Promise
) & (
(fns: [
(a: A) => B,
(b: B) => C,
(c: C) => D,
(d: D) => E,
(e: E) => F,
(f: F) => G,
(g: G) => H,
(h: H) => I,
...Function[] // eslint-disable-line @typescript-eslint/ban-types
]) => Pipeline
);
export type Pipeline = (initialValue: A) => Promise;