import { Semigroup, combine } from "./semigroup"; export interface Monoid extends Semigroup { identity: () => A; } export interface MonoidDictionary> { identity: () => M; } export interface MonoidConstructor> { create(a: A): M; identity: () => M; } export declare type AnyMonoid = string | Array | Monoid; export declare function identity(m: ArrayConstructor): any[]; export declare function identity(m: StringConstructor): string; export declare function identity>(m: MonoidDictionary): M; export { combine };