import { Monoid as MO, Semigroup as SE } from '@effect/typeclass';
import type { TypeLambda } from 'effect/HKT';
import * as FN from './Function.js';
/**
 * A unary function where argument type is return type.
 * @category datatype
 */
export interface Endo<A> extends FN.FunctionIn<A, A> {
}
/**
 * @category type lambda
 */
export interface EndoTypeLambda extends TypeLambda {
    readonly type: Endo<this['Target']>;
}
/**
 * @category instances
 */
export declare const getSemigroup: <A>() => SE.Semigroup<Endo<A>>;
/**
 * @category instances
 */
export declare const getMonoid: <A>() => MO.Monoid<Endo<A>>;
//# sourceMappingURL=Endo.d.ts.map