module TimeRelative : sig type t val forever : t val zero : t val compare : t -> t -> int val min : t -> t -> t val max : t -> t -> t val add : t -> t -> t val sub : t -> t -> t val of_s : int64 -> t (* - *) val bin : t Bin.t val caqti : t Caqti_type.t val jsont : t Jsont.t val pp : Format.formatter -> t -> unit end module TimeAbsolute : sig type t val never : t val zero : t val compare : t -> t -> int val min : t -> t -> t val max : t -> t -> t val diff : t -> t -> TimeRelative.t val add : t -> TimeRelative.t -> t val sub : t -> TimeRelative.t -> t val of_s : int64 -> t val of_ptime : Ptime.t -> t val pp : Format.formatter -> t -> unit end module Timestamp : sig type t val never : t val zero : t val compare : t -> t -> int val equal : t -> t -> bool val min : t -> t -> t val max : t -> t -> t val diff : t -> t -> TimeRelative.t val of_s : int64 -> t (* none if t = never *) val to_s : t -> int64 option val of_absolute : TimeAbsolute.t -> t val of_ptime : Ptime.t -> t (* - *) val bin : t Bin.t val caqti : t Caqti_type.t val jsont : t Jsont.t val pp : Format.formatter -> t -> unit end