import { type Covariant } from '@effect/typeclass/Covariant';
import { type Kind, type TypeLambda } from 'effect/HKT';
export type Cofree<F extends TypeLambda, R, O, E, A> = [A, Kind<F, R, O, E, Cofree<F, R, O, E, A>>];
export declare const unwrap: <F extends TypeLambda, R, O, E, A>(wa: Cofree<F, R, O, E, A>) => Kind<F, R, O, E, Cofree<F, R, O, E, A>>;
export declare const extract: <F extends TypeLambda, R, O, E, A>(wa: Cofree<F, R, O, E, A>) => A;
export declare const duplicate: <F extends TypeLambda>(F: Covariant<F>) => <R, O, E, A>(self: Cofree<F, R, O, E, A>) => Cofree<F, R, O, E, Cofree<F, R, O, E, A>>;
export declare const extend: <F extends TypeLambda>(F: Covariant<F>) => <R, O, E, A, B>(self: Cofree<F, R, O, E, A>, f: (wa: Cofree<F, R, O, E, A>) => B) => Cofree<F, R, O, E, B>;
export declare const mapComposition: <F extends TypeLambda>(F: Covariant<F>) => <R, O, E, A, B>(self: Cofree<F, R, O, E, A>, f: (a: A) => B) => Cofree<F, R, O, E, B>;
export declare const distHisto: <F extends TypeLambda>(F: Covariant<F>) => <R, O, E, A>(self: Kind<F, R, O, E, Cofree<F, R, O, E, A>>) => Cofree<F, R, O, E, Kind<F, R, O, E, A>>;
