import { Eval, Kind } from '@fp4ts/core';
import { Eq, Monoid } from '@fp4ts/cats-kernel';
import { Foldable } from '../../../foldable';
import { Applicative } from '../../../applicative';
import { Ior } from '../../ior';
import { Option } from '../../option';
import { MonoidK } from '../../../monoid-k';
import { List } from '../list';
import { Vector } from '../vector';
import { Chain } from './algebra';
export declare const isEmpty: (c: Chain) => boolean;
export declare const nonEmpty: (c: Chain) => boolean;
export declare const head: (c: Chain) => A;
export declare const headOption: (c: Chain) => Option;
export declare const tail: (c: Chain) => Chain;
export declare const last: (c: Chain) => A;
export declare const lastOption: (c: Chain) => Option;
export declare const init: (c: Chain) => Chain;
export declare const popHead: (c: Chain) => Option<[A, Chain]>;
export declare const uncons: (c: Chain) => Option<[A, Chain]>;
export declare const popLast: (c: Chain) => Option<[A, Chain]>;
export declare const prepend: (x: AA) => (xs: Chain) => Chain;
export declare const cons: (x: AA) => (xs: Chain) => Chain;
export declare const append: (x: AA) => (xs: Chain) => Chain;
export declare const snoc: (x: AA) => (xs: Chain) => Chain;
export declare const size: (xs: Chain) => number;
export declare const iterator: (c: Chain) => Iterator;
export declare const reversedIterator: (c: Chain) => Iterator;
export declare const reverse: (xs: Chain) => Chain;
export declare const concat: (y: Chain) => (x: Chain) => Chain;
export declare const deleteFirst: (f: (a: A) => boolean) => (xs: Chain) => Option<[A, Chain]>;
export declare const filter: (f: (a: A) => boolean) => (xs: Chain) => Chain;
export declare const collect: (p: (a: A) => Option) => (xs: Chain) => Chain;
export declare const collectWhile: (p: (a: A) => Option) => (xs: Chain) => Chain;
export declare const map: (f: (a: A) => B) => (xs: Chain) => Chain;
export declare const flatMap: (f: (a: A) => Chain) => (xs: Chain) => Chain;
export declare const coflatMap: (f: (as: Chain) => B) => (xs: Chain) => Chain;
export declare const flatten: (xxs: Chain>) => Chain;
export declare const align: (ys: Chain) => (xs: Chain) => Chain>;
export declare const zip: (ys: Chain) => (xs: Chain) => Chain<[A, B]>;
export declare const zipWithIndex: (xs: Chain) => Chain<[A, number]>;
export declare const zipWith: (ys: Chain, f: (a: A, b: B) => C) => (xs: Chain) => Chain;
export declare const forEach: (f: (a: A) => void) => (xs: Chain) => void;
export declare const foldLeft: (z: B, f: (b: B, a: A) => B) => (xs: Chain) => B;
export declare const foldRight: (z: B, f: (a: A, b: B) => B) => (xs: Chain) => B;
export declare const folding: (M: Monoid) => (c: Chain) => A;
export declare const traverse: (G: Applicative) => (f: (a: A) => Kind) => (xs: Chain) => Kind]>;
export declare const toArray: (xs: Chain) => A[];
export declare const toList: (xs: Chain) => List;
export declare const toVector: (xs: Chain) => Vector;
export declare const traverseViaChain: (G: Applicative, F: Foldable) => (xs: Kind, f: (a: A, i: number) => Kind) => Kind]>;
export declare const traverseFilterViaChain: (G: Applicative, F: Foldable) => (xs: Kind, f: (a: A, i: number) => Kind]>) => Kind]>;
export declare const prepend_: (xs: Chain, x: A) => Chain;
export declare const cons_: (xs: Chain, x: A) => Chain;
export declare const append_: (xs: Chain, x: A) => Chain;
export declare const snoc_: (xs: Chain, x: A) => Chain;
export declare const concat_: (x: Chain, y: Chain) => Chain;
export declare const deleteFirst_: (xs: Chain, f: (a: A) => boolean) => Option<[A, Chain]>;
export declare const filter_: (xs: Chain, p: (a: A) => boolean) => Chain;
export declare const collect_: (xs: Chain, f: (a: A) => Option) => Chain;
export declare const collectWhile_: (xs: Chain, f: (a: A) => Option) => Chain;
export declare const map_: (xs: Chain, f: (a: A) => B) => Chain;
export declare const flatMap_: (xs: Chain, f: (a: A) => Chain) => Chain;
export declare const coflatMap_: (xs: Chain, f: (as: Chain) => B) => Chain;
export declare const align_: (xs: Chain, ys: Chain) => Chain>;
export declare const zip_: (xs: Chain, ys: Chain) => Chain<[A, B]>;
export declare const zipWith_: (xs: Chain, ys: Chain) => (f: (a: A, b: B) => C) => Chain;
export declare const forEach_: (xs: Chain, f: (a: A) => void) => void;
export declare const foldLeft_: (c: Chain, z: B, f: (b: B, a: A) => B) => B;
export declare const foldRight_: (c: Chain, z: B, f: (a: A, b: B) => B) => B;
export declare const foldRightEval_: (c: Chain, ez: Eval, f: (a: A, eb: Eval) => Eval) => Eval;
export declare const foldMap_: (M: Monoid) => (c: Chain, f: (a: A) => M) => M;
export declare const foldMapLeft_: (M: Monoid) => (c: Chain, f: (a: A) => M) => M;
export declare const foldMapK_: (F: MonoidK) => (c: Chain, f: (a: A) => Kind) => Kind;
export declare const traverse_: (G: Applicative) => (xs: Chain, f: (a: A) => Kind) => Kind]>;
export declare const traverseFilter_: (G: Applicative) => (xs: Chain, f: (a: A) => Kind]>) => Kind]>;
export declare const equals_: (E: Eq) => (xs: Chain, ys: Chain) => boolean;
//# sourceMappingURL=operators.d.ts.map