/**
* adapted from https://github.com/gcanti/fp-ts
*/
import "../../../Operator/index.js";
import type { Predicate, Refinement } from "../../../Function/core.js";
import type { Option } from "../../../Option/index.js";
import type { MutableArray } from "../../../Support/Mutable/index.js";
import type { NonEmptyArray } from "../NonEmptyArray/index.js";
import * as Tp from "../Tuple/index.js";
export declare type Array = ReadonlyArray;
/**
* Composes computations in sequence, using the return value of one computation to determine the next computation.
*
* @ets_data_first chain_
*/
export declare function chain(f: (a: A) => Array): (ma: Array) => Array;
/**
* Composes computations in sequence, using the return value of one computation to determine the next computation.
*/
export declare function chain_(fa: Array, f: (a: A) => Array): Array;
/**
* Splits an array into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of
* the array. Note that `split(n)([])` is `[]`, not `[[]]`. This is intentional, and is consistent with a recursive
* definition of `split`; it satisfies the property that
*
* ```ts
* split(n)(xs).concat(split(n)(ys)) == split(n)(xs.concat(ys)))
* ```
*
* whenever `n` evenly divides the length of `xs`.
*
* @ets_data_first split_
*/
export declare function split(n: number): (as: Array) => Array>;
/**
* Splits an array into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of
* the array. Note that `split(n)([])` is `[]`, not `[[]]`. This is intentional, and is consistent with a recursive
* definition of `split`; it satisfies the property that
*
* ```ts
* split(n)(xs).concat(split(n)(ys)) == split(n)(xs.concat(ys)))
* ```
*
* whenever `n` evenly divides the length of `xs`.
*/
export declare function split_(as: Array, n: number): Array>;
/**
* Filter out optional values
*/
export declare function compact(fa: Array