/** * @since 0.24.0 */ import * as Duration from "effect/Duration" import type * as bounded from "../Bounded.js" import * as monoid from "../Monoid.js" import * as semigroup from "../Semigroup.js" /** * @category instances * @since 0.24.0 */ export const Bounded: bounded.Bounded = { compare: Duration.Order, maxBound: Duration.infinity, minBound: Duration.zero } /** * @category instances * @since 0.24.0 */ export const SemigroupSum: semigroup.Semigroup = semigroup.make(Duration.sum) /** * @category instances * @since 0.24.0 */ export const MonoidSum: monoid.Monoid = monoid.fromSemigroup( SemigroupSum, Duration.zero ) /** * @category instances * @since 0.24.0 */ export const SemigroupMax: semigroup.Semigroup = semigroup.make(Duration.max) /** * @category instances * @since 0.24.0 */ export const MonoidMax: monoid.Monoid = monoid.fromSemigroup( SemigroupMax, Duration.zero ) /** * @category instances * @since 0.24.0 */ export const SemigroupMin: semigroup.Semigroup = semigroup.make(Duration.min) /** * @category instances * @since 0.24.0 */ export const MonoidMin: monoid.Monoid = monoid.fromSemigroup( SemigroupMin, Duration.infinity )