import * as Cause from "../../../Cause/core"
import * as O from "../../../Option"
import * as Tp from "../Tuple"
import type { ParSeq } from "./primitives"
/**
 * Returns the first event in this collection of events. If multiple events
 * occur in parallel and before any other events then any of these events
 * may be returned.
 */
export declare function first<A>(self: ParSeq<A>): O.Option<A>
/**
 * Folds over the events in this collection of events using the specified
 * functions.
 */
export declare function fold_<A, B>(
  self: ParSeq<A>,
  emptyCase: B,
  singleCase: (a: A) => B,
  thenCase: (l: B, r: B) => B,
  bothCase: (l: B, r: B) => B
): B
/**
 * Folds over the events in this collection of events using the specified
 * functions.
 *
 * @dataFirst fold_
 */
export declare function fold<A, B>(
  emptyCase: B,
  singleCase: (a: A) => B,
  thenCase: (l: B, r: B) => B,
  bothCase: (l: B, r: B) => B
): (self: ParSeq<A>) => B
/**
 * Constructs a new collection of events for each event in this collection of
 * events, collecting them back into a single collection of events.
 */
export declare function chain_<A, B>(self: ParSeq<A>, f: (a: A) => ParSeq<B>): ParSeq<B>
/**
 * Constructs a new collection of events for each event in this collection of
 * events, collecting them back into a single collection of events.
 *
 * @dataFirst chain_
 */
export declare function chain<A, B>(
  f: (a: A) => ParSeq<B>
): (self: ParSeq<A>) => ParSeq<B>
/**
 * Flattens a collection of collections of events into a single collection
 * of events.
 */
export declare function flatten<A>(self: ParSeq<ParSeq<A>>): ParSeq<A>
/**
 * Converts a ParSeq to a Cause
 */
export declare function toCause<A>(self: ParSeq<A>): Cause.Cause<A>
/**
 * Transforms the type of events in this collection of events with the
 * specified function.
 */
export declare function map_<A, B>(self: ParSeq<A>, f: (a: A) => B): ParSeq<B>
/**
 * Transforms the type of events in this collection of events with the
 * specified function.
 *
 * @dataFirst map_
 */
export declare function map<A, B>(f: (a: A) => B): (self: ParSeq<A>) => ParSeq<B>
/**
 * Combines this collection of events with that collection of events to
 * return the Cartesian product of events using the specified function.
 */
export declare function zipWith_<A, B, C>(
  self: ParSeq<A>,
  that: ParSeq<B>,
  f: (a: A, b: B) => C
): ParSeq<C>
/**
 * Combines this collection of events with that collection of events to
 * return the Cartesian product of events using the specified function.
 *
 * @dataFirst zipWith_
 */
export declare function zipWith<A, B, C>(
  that: ParSeq<B>,
  f: (a: A, b: B) => C
): (self: ParSeq<A>) => ParSeq<C>
/**
 * Combines this collection of events with that collection of events to
 * return the Cartesian product of events, combining the elements into a
 * tuple.
 */
export declare function zip_<A, B>(
  self: ParSeq<A>,
  that: ParSeq<B>
): ParSeq<Tp.Tuple<[A, B]>>
/**
 * Combines this collection of events with that collection of events to
 * return the Cartesian product of events, combining the elements into a
 * tuple.
 *
 * @dataFirst zip_
 */
export declare function zip<B>(
  that: ParSeq<B>
): <A>(self: ParSeq<A>) => ParSeq<Tp.Tuple<[A, B]>>
/**
 * Combines this collection of events with that collection of events to
 * return the Cartesian product of events, keeping only the events from this
 * collection.
 */
export declare function zipLeft_<A, B>(self: ParSeq<A>, that: ParSeq<B>): ParSeq<A>
/**
 * Combines this collection of events with that collection of events to
 * return the Cartesian product of events, keeping only the events from this
 * collection.
 *
 * @dataFirst zipLeft_
 */
export declare function zipLeft<B>(that: ParSeq<B>): <A>(self: ParSeq<A>) => ParSeq<A>
/**
 * Combines this collection of events with that collection of events to
 * return the Cartesian product of events, keeping only the events from that
 * collection.
 */
export declare function zipRight_<A, B>(self: ParSeq<A>, that: ParSeq<B>): ParSeq<B>
/**
 * Combines this collection of events with that collection of events to
 * return the Cartesian product of events, keeping only the events from that
 * collection.
 *
 * @dataFirst zipRight_
 */
export declare function zipRight<B>(that: ParSeq<B>): <A>(self: ParSeq<A>) => ParSeq<B>
//# sourceMappingURL=core.d.ts.map
