import { Kind } from '../../kinds/index.js'; import * as O from '../option'; import { TArray } from './array.types'; import * as tApplicative from '../../typeclass/applicative'; import * as tTraversable from '../../typeclass/traversable'; import * as tGroups from '../../typeclass/groups'; /** * produce an empty array of type a * * none :: `() -> a[]` * * none :: `() => A[]` * * @returns `a[]` * * @example * ```ts * pipe(none(), map(x => x + 1)) // [] * ``` */ export declare const none: () => A1[]; /** * of :: a -> a[] * @param a : a * @returns fa: a[] * * @example * ```ts * pipe(1, of) // [1] * ``` */ export declare const of: (a: A) => A[]; /** * getOrElse :: (() -> b) -> a[] -> a | b * * getOrElse :: `(f: () => B) => (fa: A[]) => A | B` * * @param f : () -> b * @returns fa: a[] -> a | b * * @example * ```ts * pipe([1], getOrElse(() => 0)) // 1 * pipe([], getOrElse(() => 0)) // 0 * ``` */ export declare const getOrElse: (f: () => A1) => (fa: A[]) => A1 | A; /** * get :: a[] -> Option * * get :: `(fa: A[]) => Option` * * @param fa: a[] * @returns Option * * @example * ```ts * pipe([1], get) // some(1) * pipe([], get) // none * ``` */ export declare const get: (args_0: A1[]) => O.Option; /** * getOr :: b -> a[] -> a | b * * getOr :: (b: B) => (fa: A[]) => A | B * * @param b : b * @returns fa: a[] -> a | b * * @example * ```ts * pipe([1], getOr(0)) // 1 * pipe([], getOr(0)) // 0 * ``` */ export declare const getOr: (args_0: A1) => (args_0: B1[]) => A1 | B1; /** * map :: (a -> b) -> a[] -> b[] * @param f : a -> b * @returns fa: a[] -> b[] * * @example * ```ts * pipe([1,2,3], map(x => x + 1)) // [2,3,4] * ``` */ export declare const map: (args_0: (args_0: A1) => A2) => (args_0: A1[]) => A2[]; /** * flap :: a -> (a -> b)[] -> b[] * @param a : a * @returns fab: (a -> b)[] -> b[] * * @example * ```ts * pipe([x => x + 1, x => x*2], flap(2)) // [3, 4] * ``` */ export declare const flap: (args_0: A1) => (args_0: ((args_0: A1) => B1)[]) => B1[]; /** * as :: b -> a[] -> b[] * @param b : b * @returns fa: a[] -> b[] * * @example * ```ts * pipe([1,2,3], as(0)) // [0,0,0] * ``` */ export declare const as: (args_0: A1) => (args_0: B1[]) => A1[]; /** * doubleMap :: (a -> b) -> a[][] -> b[][] * @param f : a -> b * @returns fa: a[][] -> b[][] * * @example * ```ts * pipe([[1,2,3],[4,5,6]], doubleMap(x => x + 1)) // [[2,3,4],[5,6,7]] * ``` */ export declare const doubleMap: (args_0: (args_0: A1) => A2) => (args_0: A1[][]) => A2[][]; /** * ap :: `a[] -> (a -> b)[] -> b[]` * * ap :: `(fa: A[]) => (fab: (a: A) => B[]) => B[]` * * @param fa `a[]` * @returns `(a -> b)[] -> b[]` * * @example * ```ts * pipe(of(x=>x+1), ap([1,2,3])) // [2,3,4] */ export declare const ap: (args_0: A1[]) => (args_0: ((args_0: A1) => B1)[]) => B1[]; /** * liftA2 :: `(a b -> c) -> a[] -> b[] -> c[]` * * liftA2 :: `(f: (a: A, b: B) => C) => (fa: A[]) => (fb: B[]) => C[]` * * @param f `(a b -> c)` * @returns `a[] -> b[] -> c[]` * * @example * ```ts * pipe([1,2,3],pipe([1,2,3],liftA2((a, b) => a + b))) // [2,3,4,3,4,5,4,5,6] * pipe([1,2,3],pipe([1,2,3],liftA2((a,b)=> [a,b]))) // [[1,1],[1,2],[1,3],[2,1],[2,2],[2,3],[3,1],[3,2],[3,3]] * ``` */ export declare const liftA2: (args_0: (args_0: A1, args_1: A2) => A3) => (args_0: A1[]) => (args_0: A2[]) => A3[]; /** * product :: `a[] -> b[] -> [a, b][]` * * product :: `(fa: A[]) => (fb: B[]) => [A, B][]` * * @param fa `a[]` * @returns `b[] -> [a, b][]` * * @example * ```ts * pipe([1,2,3], product([1,2,3])) // [[1,1],[1,2],[1,3],[2,1],[2,2],[2,3],[3,1],[3,2],[3,3]] * ``` */ export declare const aproduct: (args_0: A1[]) => (args_0: B1[]) => [A1, B1][]; /** * productMany :: `a[] -> a[][] -> a[][]` * * productMany :: `(fa: A[]) => (faa: A[][]) => A[][]` * * @param fa `a[]` * @returns `a[][] -> a[][]` * * @example * ```ts * pipe([[1,2,3],[4,5,6]], productMany([1,2,3])) // [[1,1,4],[1,1,5],[1,1,6],[1,2,4],[1,2,5],[1,2,6],[1,3,4],[1,3,5],[1,3,6],[2,1,4],[2,1,5],[2,1,6],[2,2,4],[2,2,5],[2,2,6],[2,3,4],[2,3,5],[2,3,6],[3,1,4],[3,1,5],[3,1,6],[3,2,4],[3,2,5],[3,2,6],[3,3,4],[3,3,5],[3,3,6]] * ``` */ export declare const productMany: (args_0: A1[]) => (args_0: A1[][]) => A1[][]; /** * zipWith :: `(a b -> c) -> a[] -> b[] -> c[]` * * zipWith :: `(f: (a: A, b: B) => C) => (fa: A[]) => (fb: B[]) => C[]` * * @param f `(a b -> c)` * @returns `a[] -> b[] -> c[]` * * @example * ```ts * pipe([1,2,3], pipe([1,2,3], zipWith((a, b) => a + b))) // [2,4,6] * ``` */ export declare const zipWith: (args_0: (args_0: A1, args_1: A2) => A3) => (args_0: A1[]) => (args_0: A2[]) => A3[]; /** * zip :: `a[] -> b[] -> [a, b][]` * * zip :: `(fa: A[]) => (fb: B[]) => [A, B][]` * * @param fa `a[]` * @returns `b[] -> [a, b][]` * * @example * ```ts * pipe([4,5,6], zip([1,2,3])) // [[1,4],[2,5],[3,6]] * ``` */ export declare const zip: (args_0: A1[]) => (args_0: B1[]) => [A1, B1][]; /** * flatMap :: `(a -> b[]) -> a[] -> b[]` * * flatMap :: `(f: (a: A) => B[]) => (fa: A[]) => B[]` * * @param f `(a -> b[])` * @returns `a[] -> b[]` * * @example * ```ts * pipe([1,2,3], flatMap(x => [x, x+1])) // [1,2,2,3,3,4] * ``` */ export declare const flatMap: (args_0: (args_0: A1) => A2[]) => (args_0: A1[]) => A2[]; /** * flatten :: a[][] -> a[] * * flatten :: `(faa: A[][]) => A[]` * * @param faa `a[][]` * @returns `a[]` * * @example * ```ts * pipe([[1,2,3],[4,5,6]], flatten) // [1,2,3,4,5,6] * ``` */ export declare const flatten: (args_0: A1[][]) => A1[]; /** * tap :: `(a -> void) -> a[] -> a[]` * * tap :: `(f: (a: A) => void) => (fa: A[]) => A[]` * * @param f `(a -> void)` * @returns `a[] -> a[]` * * @example * ```ts * pipe([1,2,3], tap(console.log)) // [1,2,3] * ``` */ export declare const tap: (args_0: (args_0: A1) => void) => (args_0: A1[]) => A1[]; /** * reduce :: `(b a -> b) b -> a[] -> b` * * reduce :: `(f: (b: B, a: A) => B, b: B) => (fa: A[]) => B` * * @param f `(b a -> b)` * @param b `b` * @returns `a[] -> b` * * @example * ```ts * pipe([1,2,3], reduce((b, a) => b + a, 0)) // 6 * ``` */ export declare const reduce: (args_0: (args_0: A1, args_1: A2) => A1, args_1: A1) => (args_0: A2[]) => A1; export declare const reduceRight: (f: (acc: B, item: A) => B, init: B) => (fa: A[]) => B; export declare const scan: (f: (b: B, a: A) => B, init: B) => (fa: A[]) => B[]; export declare const scanRight: (f: (b: B, a: A) => B, init: B) => (fa: A[]) => B[]; /** * filterMap :: `(a -> Option) -> a[] -> b[]` * * filterMap :: `(f: (a: A) => Option) => (fa: A[]) => B[]` * * @param f `(a -> Option)` * @returns `a[] -> b[]` * * @example * ```ts * pipe([1,2,3], filterMap(x => x > 1 ? some(x) : none)) // [2,3] * ``` */ export declare const filterMap: (args_0: (args_0: A1) => O.Option) => (args_0: A1[]) => A2[]; /** * filter :: `(a -> boolean) -> a[] -> a[]` * * filter :: `(f: (a: A) => boolean) => (fa: A[]) => A[]` * * @param f `(a -> boolean)` * @returns `a[] -> a[]` * * @example * ```ts * pipe([1,2,3], filter(x => x > 1)) // [2,3] * ``` */ export declare const filter: (args_0: (args_0: A1) => boolean) => (args_0: A1[]) => A1[]; /** * compact :: Option[] -> a[] * * compact :: `(fa: Option[]) => A[]` * * @param fa `Option[]` * @returns `a[]` * * @example * ```ts * pipe([some(1), none, some(2)], compact) // [1,2] * ``` */ export declare const compact: (args_0: O.Option[]) => A1[]; export declare const traverse: (F: tApplicative.Applicative) => tTraversable.Traversable.$traverse; export declare const sequence: (F: tApplicative.Applicative) => tTraversable.Traversable.$sequence; export declare const range: (start: number, end: number, step?: number) => number[]; export declare const orElse: (args_0: () => A1[]) => (args_0: A1[]) => A1[]; export declare const or: (args_0: A1[]) => (args_0: A1[]) => A1[]; export declare const concat: (args_0: A1[]) => (args_0: A1[]) => A1[]; export declare const concatMany: (...faa: A[][]) => A[]; export declare const append: (a: A) => (args_0: A[]) => A[]; export declare const prepend: (a: A) => (fa: A[]) => A[]; export declare const pluck: (k: K) => (args_0: A[]) => A[K][]; export declare const takeWhile: (f: (a: A) => boolean) => (fa: A[]) => A[]; export declare const take: (count: number) => (fa: A[]) => A[]; export declare const dropWhile: (f: (a: A) => boolean) => (fa: A[]) => A[]; export declare const drop: (count: number) => (fa: A[]) => A[]; export declare const head: (fa: A[]) => O.Option; export declare const tail: (fa: A[]) => A[]; export declare const list: (fa: A[]) => [A, A[]]; export declare const last: (fa: A[]) => O.Option; export declare const enumerate: (fa: A[]) => [A, number][]; export declare const unique: (fa: A[]) => A[]; export declare const duplicate: (args_0: A[]) => A[]; export declare const reverse: (fa: A[]) => A[]; export declare const some: (f: (a: A) => boolean) => (fa: A[]) => boolean; export declare const every: (f: (a: A) => boolean) => (fa: A[]) => boolean; export declare const find: (f: (a: A) => boolean) => (fa: A[]) => O.Option; export declare const findIndex: (f: (a: A) => boolean) => (fa: A[]) => O.Option; export declare const findLast: (f: (a: A) => boolean) => (fa: A[]) => O.Option; export declare const findLastIndex: (f: (a: A) => boolean) => (fa: A[]) => O.Option; export declare const includes: (a: A) => (fa: A[]) => boolean; export declare const isEmpty: (fa: A[]) => boolean; export declare const count: (fa: A[]) => number; export declare const length: (fa: A[]) => number; export declare const fold: (monoid: tGroups.Monoid) => (args_0: A[]) => A; export declare const sum: (args_0: number[]) => number; export declare const product: (args_0: number[]) => number; export declare const max: (args_0: number[]) => number; export declare const min: (args_0: number[]) => number; export declare const alternateFold: (group: tGroups.Group) => (fa: A[]) => A; export declare const alternateSum: (fa: number[]) => number; export declare const alternateProduct: (fa: number[]) => number; export declare const join: (separator: string) => (fa: string[]) => string; export declare const joinAll: (args_0: string[]) => string; export declare const biggest: (args_0: string[]) => string; export declare const smallestNonEmpty: (args_0: string[]) => string; export declare const split: (separator: string) => (fa: string) => string[];