import { Ord, Equal, NonEmptyArguments } from "@effect-ts-app/core/Prelude";
import { Order } from "@fp-ts/core/typeclass/Order";
import { NonEmptyArray, NonEmptyReadonlyArray } from "@fp-ts/data/ReadonlyArray";
import { Predicate } from "@fp-ts/data/Predicate";
import { Chunk } from "@fp-ts/data/Chunk";
import { Effect } from "@effect/io/Effect";
import * as Option from "./Option.js";
import * as Dur from "@fp-ts/data/Duration";
export * from "@fp-ts/data/ReadonlyArray";
/**
* @tsplus getter ets/Ord toOrder
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function convertOrd(_: Ord): Order;
/**
* @tsplus getter Generator toArray
* @tsplus getter Iterable toArray
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function toArray(gen: Generator): A[];
/**
* Remove duplicates from an array, keeping the first occurrence of an element.
* @tsplus pipeable Array uniq
* @tsplus pipeable ReadonlyArray uniq
* @tsplus static fp-ts/data/ReadonlyArray.Ops uniq
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function uniq(E: Equal): (self: ReadonlyArray) => ReadonlyArray;
/**
* @tsplus static fp-ts/data/Duration.Ops makeMillis
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare const millis_: (millis: number) => Dur.Duration;
export declare const isArray: (arg: any) => arg is any[];
/**
* @tsplus static fp-ts/data/ReadonlyArray.Ops findFirstMap
* @tsplus static Array.Ops findFirstMap
* @tsplus pipeable Array findFirstMap
* @tsplus pipeable fp-ts/data/ReadonlyArray findFirstMap
* @tsplus pipeable ReadonlyArray findFirstMap
* @tsplus pipeable NonEmptyArray findFirstMap
* @tsplus pipeable NonEmptyArrayReadonlyArray findFirstMap
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function findFirstMap(f: (a: A) => Option.Option): (as: ReadonlyArray) => Option.None | Option.Some;
/**
* @tsplus static fp-ts/data/ReadonlyArray.NonEmptyArray.Ops fromArray
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function NEAFromArray(ar: Array): Option.None | Option.Some<[T, ...T[]]>;
/**
* @tsplus static fp-ts/data/ReadonlyArray/NonEmptyReadonlyArray.Ops fromArray
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function NEROArrayFromArray(ar: ReadonlyArray): Option.None | Option.Some;
/**
* @tsplus pipeable Array sortWith
* @tsplus pipeable ReadonlyArray sortWith
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function sortWith(...ords: NonEmptyArguments>): (a: ReadonlyArray) => ReadonlyArray;
/**
* @tsplus pipeable Array sortByO
* @tsplus pipeable ReadonlyArray sortByO
* @tsplus pipeable NonEmptyArray sortByO
* @tsplus pipeable NonEmptyArrayReadonlyArray sortByO
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function sortByO(ords: Option.Option>>): (a: ReadonlyArray) => ReadonlyArray;
/**
* @tsplus fluent ReadonlyArray groupByT
* @tsplus fluent Array groupByT
* @tsplus fluent NonEmptyArray groupByT
* @tsplus fluent NonEmptyArrayReadonlyArray groupByT
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function groupByT(as: ReadonlyArray, f: (a: A) => Key): ReadonlyArray]>;
/**
* @tsplus operator ReadonlyArray &
* @tsplus fluent ReadonlyArray concat
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function concat_(self: ReadonlyArray, that: ReadonlyArray): ReadonlyArray;
/**
* Concatenates two ReadonlyArray together
* @tsplus operator ReadonlyArray +
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare const concatOperator: (self: ReadonlyArray, that: ReadonlyArray) => ReadonlyArray;
/**
* Prepends `a` to ReadonlyArray
* @tsplus operator ReadonlyArray + 1.0
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function prependOperatorStrict(a: A, self: ReadonlyArray): ReadonlyArray;
/**
* Prepends `a` to ReadonlyArray
* @tsplus operator ReadonlyArray >
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function prependOperator(a: A, self: ReadonlyArray): ReadonlyArray;
/**
* Prepends `a` to ReadonlyArray
* @tsplus fluent ReadonlyArray prepend
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function prepend_(tail: ReadonlyArray, head: B): ReadonlyArray;
/**
* Appends `a` to ReadonlyArray
* @tsplus fluent ReadonlyArray append
* @tsplus operator ReadonlyArray <
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function append_(init: ReadonlyArray, end: B): ReadonlyArray;
/**
* @tsplus operator ReadonlyArray + 1.0
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare const appendOperator: (self: ReadonlyArray, a: A) => ReadonlyArray;
/**
* @tsplus fluent ReadonlyArray randomElement 1
* @tsplus fluent Array randomElement 1
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function randomElement(a: ReadonlyArray): A;
/**
* @tsplus fluent fp-ts/data/ReadonlyArray/NonEmptyReadonlyArray randomElement 2
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function randomElementNA(a: NonEmptyReadonlyArray): A;
/**
* @tsplus pipeable Array mapNonEmpty
* @tsplus pipeable fp-ts/data/ReadonlyArray mapNonEmpty
* @tsplus pipeable fp-ts/data/ReadonlyArray/NonEmptyReadonlyArray mapNonEmpty
* @tsplus pipeable fp-ts/data/ReadonlyArray.NonEmptyArray mapNonEmpty
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare const mapRA: (f: (a: A) => B) => (self: readonly [A, ...A[]]) => [B, ...B[]];
/**
* @tsplus fluent fp-ts/data/ReadonlyArray/NonEmptyReadonlyArray sortBy
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function sortBy(na: NonEmptyReadonlyArray, ords: readonly Ord[]): readonly [A, ...A[]];
/**
* @tsplus static fp-ts/data/ReadonlyArray.Ops sortWithNonEmpty
* @tsplus pipeable ReadonlyArray sortWithNonEmpty
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function sortWithNonEmpty(...ords: NonEmptyArguments>): (a: NonEmptyReadonlyArray) => NonEmptyArray;
/**
* @tsplus static fp-ts/data/ReadonlyArray/NonEmptyReadonlyArray __call
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare const makeNA: (...elements: Elements) => [Elements[number], ...Elements[number][]];
/**
* @tsplus fluent ReadonlyArray filterWith
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function filterWith(self: ReadonlyArray, predicates: ReadonlyArray>): A[];
/**
* Split the `items` array into multiple, smaller chunks of the given `size`.
*/
export declare function _chunk_(items_: Iterable, size: number): Generator;
/**
* Split the `items` array into multiple, smaller chunks of the given `size`.
* @tsplus fluent Array chunk
* @tsplus fluent ReadonlyArray chunk
* @tsplus fluent fp-ts/data/Chunk chunk
* @tsplus fluent Iterable chunk
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function chunk_(items_: Iterable, size: number): import("@fp-ts/data/Chunk").Chunk;
/**
* @tsplus getter Array toChunk
* @tsplus getter ReadonlyArray toChunk
* @tsplus getter Iterable toChunk
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function toChunk(items: Iterable): import("@fp-ts/data/Chunk").Chunk;
/**
* @tsplus getter ReadonlyArray toNonEmpty
* @tsplus getter Array toNonEmpty
* @tsplus getter fp-ts/data/ReadonlyArray toNonEmpty
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare const toNonEmptyArray: (a: readonly A[]) => Option.None | Option.Some;
/**
* @tsplus getter Iterable toArray
* @tsplus getter Iterator toArray
* @tsplus getter Generator toArray
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare const iterableToArray: {
(arrayLike: ArrayLike): T[];
(arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
(iterable: Iterable | ArrayLike): T_2[];
(iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
};
/**
* @tsplus getter Iterable toNonEmptyArray
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function CollectionToNonEmptyReadonlyArray(c: Iterable): Option.None | Option.Some;
/**
* @tsplus getter fp-ts/data/Chunk toNonEmptyArray
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function ChunkToNonEmptyReadonlyArray(c: Chunk): Option.None | Option.Some;
/**
* @tsplus fluent Array forEachEffectPar
* @tsplus fluent ReadonlyArray forEachEffectPar
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function ext_forEachEffectPar(as: ReadonlyArray, f: (a: A) => Effect): import("@effect/io/Effect").Effect>;
/**
* @tsplus fluent fp-ts/data/Chunk forEachEffectPar
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function ext_CNKforEachEffectPar(as: Chunk, f: (a: A) => Effect): import("@effect/io/Effect").Effect>;
/**
* @tsplus fluent fp-ts/data/ReadonlyArray/NonEmptyReadonlyArray forEachEffectPar
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function ext_NAforEachEffectPar(as: NonEmptyReadonlyArray, f: (a: A) => Effect): import("@effect/io/Effect").Effect;
/**
* @tsplus fluent fp-ts/data/ReadonlyArray/NonEmptyReadonlyArray forEachEffect
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function ext_NAforEach(as: NonEmptyReadonlyArray, f: (a: A) => Effect): import("@effect/io/Effect").Effect;
/**
* @tsplus fluent fp-ts/data/ReadonlyArray/NonEmptyReadonlyArray forEachEffectWithIndexPar
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function ext_NAforEachEffectWithIndexPar(as: NonEmptyReadonlyArray, f: (a: A, i: number) => Effect): import("@effect/io/Effect").Effect;
/**
* @tsplus fluent fp-ts/data/ReadonlyArray/NonEmptyReadonlyArray forEachEffectWithIndex
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function ext_NAforEachWithIndex(as: NonEmptyReadonlyArray, f: (a: A, i: number) => Effect): import("@effect/io/Effect").Effect;
/**
* @tsplus fluent ReadonlyArray forEachEffectWithIndex
* @tsplus fluent Array forEachEffectWithIndex
* @tsplus fluent fp-ts/data/Chunk forEachEffectWithIndex
* @tsplus fluent ets/Set forEachEffectWithIndex
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function ext_forEachWithIndex(as: Iterable, f: (a: A, i: number) => Effect): import("@effect/io/Effect").Effect>;
/**
* @tsplus fluent ReadonlyArray forEachEffectParWithIndex
* @tsplus fluent Array forEachEffectParWithIndex
* @tsplus fluent fp-ts/data/Chunk forEachEffectParWithIndex
* @tsplus fluent ets/Set forEachEffectParWithIndex
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare function ext_forEachParWithIndex(as: Iterable, f: (a: A, i: number) => Effect): import("@effect/io/Effect").Effect>;
/**
* @tsplus getter Iterable toChunk
* @tsplus getter Iterator toChunk
* @tsplus getter Generator toChunk
* @tsplus location "@effect-ts-app/core/Array"
*/
export declare const ext_itToChunk: (self: Iterable) => import("@fp-ts/data/Chunk").Chunk;
//# sourceMappingURL=Array.d.ts.map