sig
  module Clock :
    sig
      type t = Core.Linux_ext.Timerfd.Clock.t
      val realtime : t
      val monotonic : t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val compare : t -> t -> int
      val bin_t : t Core_kernel.Std.Bin_prot.Type_class.t
      val bin_read_t : t Core_kernel.Std.Bin_prot.Read.reader
      val __bin_read_t__ : (int -> t) Core_kernel.Std.Bin_prot.Read.reader
      val bin_reader_t : t Core_kernel.Std.Bin_prot.Type_class.reader
      val bin_size_t : t Core_kernel.Std.Bin_prot.Size.sizer
      val bin_write_t : t Core_kernel.Std.Bin_prot.Write.writer
      val bin_writer_t : t Core_kernel.Std.Bin_prot.Type_class.writer
    end
  module Flags :
    sig
      type t = Core.Linux_ext.Timerfd.Flags.t
      val of_int : int -> t
      val to_int_exn : t -> int
      val equal : t -> t -> bool
      val empty : t
      val ( + ) : t -> t -> t
      val ( - ) : t -> t -> t
      val intersect : t -> t -> t
      val complement : t -> t
      val is_empty : t -> bool
      val do_intersect : t -> t -> bool
      val are_disjoint : t -> t -> bool
      val nonblock : t
      val cloexec : t
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  type t = Core.Linux_ext.Timerfd.t
  val create : (?flags:Flags.t -> Clock.t -> t) Core_kernel.Std.Or_error.t
  val set : t -> [ `After of Core.Span.t | `At of Core.Time.t ] -> unit
  val set_repeating :
    ?initial:[ `After of Core.Span.t | `At of Core.Time.t ] ->
    t -> Core.Span.t -> unit
  val clear : t -> unit
  type repeat =
    Core.Linux_ext.Timerfd.repeat = {
    fire_after : Core.Span.t;
    interval : Core.Span.t;
  }
  val get :
    t -> [ `Fire_after of Core.Span.t | `Not_armed | `Repeat of repeat ]
  val t_of_sexp : Sexplib.Sexp.t -> t
  val sexp_of_t : t -> Sexplib.Sexp.t
  val compare : t -> t -> int
  val bin_t : t Core_kernel.Std.Bin_prot.Type_class.t
  val bin_read_t : t Core_kernel.Std.Bin_prot.Read.reader
  val __bin_read_t__ : (int -> t) Core_kernel.Std.Bin_prot.Read.reader
  val bin_reader_t : t Core_kernel.Std.Bin_prot.Type_class.reader
  val bin_size_t : t Core_kernel.Std.Bin_prot.Size.sizer
  val bin_write_t : t Core_kernel.Std.Bin_prot.Write.writer
  val bin_writer_t : t Core_kernel.Std.Bin_prot.Type_class.writer
end