import { Kind, $type, TyK, TyVar, HKT } from '@fp4ts/core';
import { Eq } from '@fp4ts/cats-kernel';
import { Foldable } from '../../../foldable';
import { Align } from '../../../align';
import { MonoidK } from '../../../monoid-k';
import { Functor } from '../../../functor';
import { FunctorFilter } from '../../../functor-filter';
import { Applicative } from '../../../applicative';
import { Alternative } from '../../../alternative';
import { CoflatMap } from '../../../coflat-map';
import { Monad } from '../../../monad';
import { Either } from '../../either';
import { Option } from '../../option';
import { Vector } from '../vector';
import { List } from '../list';
import { Chain as ChainBase } from './algebra';
import { TraversableFilter } from '../../../traversable-filter';
/**
* @category Collection
*/
export type Chain = ChainBase;
/**
* @category Collection
*/
export declare const Chain: ChainObj;
interface ChainObj {
(...xs: A[]): Chain;
pure(x: A): Chain;
singleton(x: A): Chain;
empty: Chain;
of(...xs: A[]): Chain;
fromArray(xs: A[]): Chain;
fromList(xs: List): Chain;
fromVector(xs: Vector): Chain;
traverseViaChain(G: Applicative, F: Foldable): (xs: Kind, f: (a: A, i: number) => Kind) => Kind]>;
traverseFilterViaChain(G: Applicative, F: Foldable): (xs: Kind, f: (a: A, i: number) => Kind]>) => Kind]>;
tailRecM(s: S): (f: (s: S) => Chain>) => Chain;
Eq(E: Eq): Eq>;
readonly Align: Align;
readonly MonoidK: MonoidK;
readonly Functor: Functor;
readonly FunctorFilter: FunctorFilter;
readonly Alternative: Alternative;
readonly CoflatMap: CoflatMap;
readonly Monad: Monad;
readonly TraversableFilter: TraversableFilter;
}
declare module './algebra' {
interface Chain extends HKT {
}
}
/**
* @category Type Constructor
* @category Collection
*/
export interface ChainF extends TyK<[unknown]> {
[$type]: Chain>;
}
export {};
//# sourceMappingURL=chain.d.ts.map