sig
  module Flags :
    sig
      type 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 none : Linux_ext.Epoll.Flags.t
      val in_ : Linux_ext.Epoll.Flags.t
      val out : Linux_ext.Epoll.Flags.t
      val pri : Linux_ext.Epoll.Flags.t
      val err : Linux_ext.Epoll.Flags.t
      val hup : Linux_ext.Epoll.Flags.t
      val et : Linux_ext.Epoll.Flags.t
      val oneshot : Linux_ext.Epoll.Flags.t
      val sexp_of_t : Linux_ext.Epoll.Flags.t -> Sexplib.Sexp.t
    end
  type t
  val invariant : Linux_ext.Epoll.t -> unit
  val create :
    (num_file_descrs:int -> max_ready_events:int -> Linux_ext.Epoll.t)
    Core_kernel.Std.Or_error.t
  val find :
    Linux_ext.Epoll.t ->
    Unix.File_descr.t -> Linux_ext.Epoll.Flags.t option
  val find_exn :
    Linux_ext.Epoll.t -> Unix.File_descr.t -> Linux_ext.Epoll.Flags.t
  val set :
    Linux_ext.Epoll.t ->
    Unix.File_descr.t -> Linux_ext.Epoll.Flags.t -> unit
  val remove : Linux_ext.Epoll.t -> Unix.File_descr.t -> unit
  val iter :
    Linux_ext.Epoll.t ->
    f:(Unix.File_descr.t -> Linux_ext.Epoll.Flags.t -> unit) -> unit
  val wait :
    Linux_ext.Epoll.t ->
    timeout:[ `After of Span.t | `Immediately | `Never ] ->
    [ `Ok | `Timeout ]
  val iter_ready :
    Linux_ext.Epoll.t ->
    f:(Unix.File_descr.t -> Linux_ext.Epoll.Flags.t -> unit) -> unit
  val fold_ready :
    Linux_ext.Epoll.t ->
    init:'->
    f:('-> Unix.File_descr.t -> Linux_ext.Epoll.Flags.t -> 'a) -> 'a
  val sexp_of_t : Linux_ext.Epoll.t -> Sexplib.Sexp.t
end