/**
* @since 2.11.0
*/
import { Monoid } from './Monoid.js';
import { Semigroup } from './Semigroup.js';
/**
* @since 2.11.0
*/
export interface Endomorphism {
(a: A): A;
}
/**
* @category type lambdas
* @since 2.11.0
*/
export declare const URI = "Endomorphism";
/**
* @category type lambdas
* @since 2.11.0
*/
export type URI = typeof URI;
declare module './HKT.js' {
interface URItoKind {
readonly [URI]: Endomorphism;
}
}
/**
* Endomorphism form a `Semigroup` where the `concat` operation is the usual function composition.
*
* @category instances
* @since 2.11.0
*/
export declare const getSemigroup: () => Semigroup>;
/**
* Endomorphism form a `Monoid` where the `empty` value is the `identity` function.
*
* @category instances
* @since 2.11.0
*/
export declare const getMonoid: () => Monoid>;