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