import * as Chunk from "../Collections/Immutable/Chunk"
import type { Effect } from "./effect"
/**
 * Filters the collection using the specified effectual predicate.
 *
 * @dataFirst filter_
 */
export declare function filter<A, R, E>(
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): (as: Iterable<A>) => Effect<R, E, readonly A[]>
/**
 * Filters the collection using the specified effectual predicate.
 */
export declare function filter_<A, R, E>(
  as: Iterable<A>,
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): Effect<R, E, readonly A[]>
/**
 * Filters the collection in parallel using the specified effectual predicate.
 * See `filter` for a sequential version of it.
 */
export declare function filterPar_<A, R, E>(
  as: Iterable<A>,
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): Effect<R, E, Chunk.Chunk<A>>
/**
 * Filters the collection in parallel using the specified effectual predicate.
 * See `filter` for a sequential version of it.
 *
 * @dataFirst filterPar_
 */
export declare function filterPar<A, R, E>(
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<A>>
/**
 * Filters the collection in parallel using the specified effectual predicate.
 * See `filter` for a sequential version of it.
 *
 * This method will use up to `n` fibers.
 */
export declare function filterParN_<A, R, E>(
  as: Iterable<A>,
  n: number,
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): Effect<R, E, Chunk.Chunk<A>>
/**
 * Filters the collection in parallel using the specified effectual predicate.
 * See `filter` for a sequential version of it.
 *
 * This method will use up to `n` fibers.
 *
 * @dataFirst filterParN_
 */
export declare function filterParN<A, R, E>(
  n: number,
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<A>>
/**
 * Filters the collection using the specified effectual predicate, removing
 * all elements that satisfy the predicate.
 *
 * @dataFirst filterNot_
 */
export declare function filterNot<A, R, E>(
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): (as: Iterable<A>) => Effect<R, E, readonly A[]>
/**
 * Filters the collection using the specified effectual predicate, removing
 * all elements that satisfy the predicate.
 */
export declare function filterNot_<A, R, E>(
  as: Iterable<A>,
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): Effect<R, E, readonly A[]>
/**
 * Filters the collection in parallel using the specified effectual predicate.
 * See `filterNot` for a sequential version of it.
 */
export declare function filterNotPar_<A, R, E>(
  as: Iterable<A>,
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): Effect<R, E, Chunk.Chunk<A>>
/**
 * Filters the collection in parallel using the specified effectual predicate.
 * See `filterNot` for a sequential version of it.
 *
 * @dataFirst filterNotPar_
 */
export declare function filterNotPar<A, R, E>(
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<A>>
/**
 * Filters the collection in parallel using the specified effectual predicate.
 * See `filterNot` for a sequential version of it.
 */
export declare function filterNotParN_<A, R, E>(
  as: Iterable<A>,
  n: number,
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): Effect<R, E, Chunk.Chunk<A>>
/**
 * Filters the collection in parallel using the specified effectual predicate.
 * See `filterNot` for a sequential version of it.
 *
 * @dataFirst filterNotParN_
 */
export declare function filterNotParN<R, E, A>(
  n: number,
  f: (a: A) => Effect<R, E, boolean>,
  __trace?: string
): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<A>>
//# sourceMappingURL=filter.d.ts.map
