import type { Magma } from './Magma';
/**
* `Semigroup` defines an associative binary operator `combine` on given type `A`.
* `combine` must fulfill the associativity law, which states that for a binary operation `*` on type `A`:
*
* ```
* (a * b) * c === a * (b * c) for all a, b, c, in A
* ```
*
* `Semigroup` defines both an uncurried function `combine_` and a curried function
* `combine` with arguments interchanged for `pipeable` application.
*/
export interface Semigroup extends Magma {
}
export declare function Semigroup(combine: (x: A, y: A) => A): Semigroup;
//# sourceMappingURL=Semigroup.d.ts.map