sig
  module Span :
    sig
      type t = private Core_int63.t
      val typerep_of_t : Time_ns.Span.t Typerep_lib.Std.Typerep.t
      val typename_of_t : Time_ns.Span.t Typerep_lib.Std.Typename.t
      val ( >= ) : t -> t -> bool
      val ( <= ) : t -> t -> bool
      val ( = ) : t -> t -> bool
      val ( > ) : t -> t -> bool
      val ( < ) : t -> t -> bool
      val ( <> ) : t -> t -> bool
      val validate_lbound : min:t Comparable_intf.bound -> t Validate.check
      val validate_ubound : max:t Comparable_intf.bound -> t Validate.check
      val validate_bound :
        min:t Comparable_intf.bound ->
        max:t Comparable_intf.bound -> t Validate.check
      val validate_positive : t Validate.check
      val validate_non_negative : t Validate.check
      val validate_negative : t Validate.check
      val validate_non_positive : t Validate.check
      val is_positive : t -> bool
      val is_non_negative : t -> bool
      val is_negative : t -> bool
      val is_non_positive : t -> bool
      val equal : t Equal.equal
      val nanosecond : Time_ns.Span.t
      val microsecond : Time_ns.Span.t
      val millisecond : Time_ns.Span.t
      val second : Time_ns.Span.t
      val minute : Time_ns.Span.t
      val hour : Time_ns.Span.t
      val day : Time_ns.Span.t
      val of_ns : float -> Time_ns.Span.t
      val of_us : float -> Time_ns.Span.t
      val of_ms : float -> Time_ns.Span.t
      val of_sec : float -> Time_ns.Span.t
      val of_min : float -> Time_ns.Span.t
      val of_hr : float -> Time_ns.Span.t
      val of_day : float -> Time_ns.Span.t
      val to_ns : Time_ns.Span.t -> float
      val to_us : Time_ns.Span.t -> float
      val to_ms : Time_ns.Span.t -> float
      val to_sec : Time_ns.Span.t -> float
      val to_min : Time_ns.Span.t -> float
      val to_hr : Time_ns.Span.t -> float
      val to_day : Time_ns.Span.t -> float
      val of_sec_with_microsecond_precision : float -> Time_ns.Span.t
      val of_int_sec : int -> Time_ns.Span.t
      val to_int_sec : Time_ns.Span.t -> int
      val zero : Time_ns.Span.t
      val min_value : Time_ns.Span.t
      val max_value : Time_ns.Span.t
      val ( + ) : Time_ns.Span.t -> Time_ns.Span.t -> Time_ns.Span.t
      val ( - ) : Time_ns.Span.t -> Time_ns.Span.t -> Time_ns.Span.t
      val abs : Time_ns.Span.t -> Time_ns.Span.t
      val neg : Time_ns.Span.t -> Time_ns.Span.t
      val scale : Time_ns.Span.t -> float -> Time_ns.Span.t
      val scale_int : Time_ns.Span.t -> int -> Time_ns.Span.t
      val scale_int63 : Time_ns.Span.t -> Core_int63.t -> Time_ns.Span.t
      val div : Time_ns.Span.t -> Time_ns.Span.t -> Core_int63.t
      val ( / ) : Time_ns.Span.t -> float -> Time_ns.Span.t
      val ( // ) : Time_ns.Span.t -> Time_ns.Span.t -> float
      val create :
        ?sign:Float.Sign.t ->
        ?day:int ->
        ?hr:int ->
        ?min:int ->
        ?sec:int -> ?ms:int -> ?us:int -> ?ns:int -> unit -> Time_ns.Span.t
      module Parts :
        sig
          type t = {
            sign : Float.Sign.t;
            hr : int;
            min : int;
            sec : int;
            ms : int;
            us : int;
            ns : int;
          }
          val t_of_sexp : Sexplib.Sexp.t -> Time_ns.Span.Parts.t
          val sexp_of_t : Time_ns.Span.Parts.t -> Sexplib.Sexp.t
        end
      val to_parts : Time_ns.Span.t -> Time_ns.Span.Parts.t
      val of_parts : Time_ns.Span.Parts.t -> Time_ns.Span.t
      val ( >=. ) : t -> t -> bool
      val ( <=. ) : t -> t -> bool
      val ( =. ) : t -> t -> bool
      val ( >. ) : t -> t -> bool
      val ( <. ) : t -> t -> bool
      val ( <>. ) : t -> t -> bool
      val robustly_compare : t -> t -> int
      val to_int63_ns : Time_ns.Span.t -> Core_int63.t
      val of_int63_ns : Core_int63.t -> Time_ns.Span.t
      val to_int_ns : Time_ns.Span.t -> int
      val of_int_ns : int -> Time_ns.Span.t
      val since_unix_epoch : unit -> Time_ns.Span.t
      module Alternate_sexp :
        sig
          type t = t
          val t_of_sexp : Sexplib.Sexp.t -> Time_ns.Span.t
          val sexp_of_t : Time_ns.Span.t -> Sexplib.Sexp.t
        end
      val bin_t : Time_ns.Span.t Bin_prot.Type_class.t
      val bin_read_t : Time_ns.Span.t Bin_prot.Read.reader
      val __bin_read_t__ : (int -> Time_ns.Span.t) Bin_prot.Read.reader
      val bin_reader_t : Time_ns.Span.t Bin_prot.Type_class.reader
      val bin_size_t : Time_ns.Span.t Bin_prot.Size.sizer
      val bin_write_t : Time_ns.Span.t Bin_prot.Write.writer
      val bin_writer_t : Time_ns.Span.t Bin_prot.Type_class.writer
      val compare : Time_ns.Span.t -> Time_ns.Span.t -> int
    end
  type t = private Core_int63.t
  val typerep_of_t : Time_ns.t Typerep_lib.Std.Typerep.t
  val typename_of_t : Time_ns.t Typerep_lib.Std.Typename.t
  val ( >= ) : t -> t -> bool
  val ( <= ) : t -> t -> bool
  val ( = ) : t -> t -> bool
  val ( > ) : t -> t -> bool
  val ( < ) : t -> t -> bool
  val ( <> ) : t -> t -> bool
  val equal : t Equal.equal
  module Alternate_sexp :
    sig
      type t = t
      val t_of_sexp : Sexplib.Sexp.t -> Time_ns.t
      val sexp_of_t : Time_ns.t -> Sexplib.Sexp.t
    end
  val epoch : Time_ns.t
  val min_value : Time_ns.t
  val max_value : Time_ns.t
  val now : unit -> Time_ns.t
  val add : Time_ns.t -> Time_ns.Span.t -> Time_ns.t
  val sub : Time_ns.t -> Time_ns.Span.t -> Time_ns.t
  val diff : Time_ns.t -> Time_ns.t -> Time_ns.Span.t
  val abs_diff : Time_ns.t -> Time_ns.t -> Time_ns.Span.t
  val to_span_since_epoch : Time_ns.t -> Time_ns.Span.t
  val of_span_since_epoch : Time_ns.Span.t -> Time_ns.t
  val to_int63_ns_since_epoch : Time_ns.t -> Core_int63.t
  val of_int63_ns_since_epoch : Core_int63.t -> Time_ns.t
  val to_int_ns_since_epoch : Time_ns.t -> int
  val of_int_ns_since_epoch : int -> Time_ns.t
  val next_multiple :
    ?can_equal_after:bool ->
    base:Time_ns.t ->
    after:Time_ns.t -> interval:Time_ns.Span.t -> unit -> Time_ns.t
  val bin_t : Time_ns.t Bin_prot.Type_class.t
  val bin_read_t : Time_ns.t Bin_prot.Read.reader
  val __bin_read_t__ : (int -> Time_ns.t) Bin_prot.Read.reader
  val bin_reader_t : Time_ns.t Bin_prot.Type_class.reader
  val bin_size_t : Time_ns.t Bin_prot.Size.sizer
  val bin_write_t : Time_ns.t Bin_prot.Write.writer
  val bin_writer_t : Time_ns.t Bin_prot.Type_class.writer
  val compare : Time_ns.t -> Time_ns.t -> int
end