sig
  type t
  val invariant : t Core_kernel.Invariant_intf.inv
  val backend : Import.Config.File_descr_watcher.t
  val create : num_file_descrs:int -> File_descr_watcher_intf.S.t
  val set :
    File_descr_watcher_intf.S.t ->
    Import.File_descr.t -> bool Read_write.t -> unit
  val iter :
    File_descr_watcher_intf.S.t ->
    f:(Import.File_descr.t -> Read_write.Key.t -> unit) -> unit
  module Pre :
    sig
      type t
      val sexp_of_t : File_descr_watcher_intf.S.Pre.t -> Sexplib.Sexp.t
    end
  val pre_check :
    File_descr_watcher_intf.S.t -> File_descr_watcher_intf.S.Pre.t
  module Check_result :
    sig
      type t
      val sexp_of_t :
        File_descr_watcher_intf.S.Check_result.t -> Sexplib.Sexp.t
    end
  val thread_safe_check :
    File_descr_watcher_intf.S.t ->
    File_descr_watcher_intf.S.Pre.t ->
    timeout:File_descr_watcher_intf.Timeout.t ->
    File_descr_watcher_intf.S.Check_result.t
  val post_check :
    File_descr_watcher_intf.S.t ->
    File_descr_watcher_intf.S.Check_result.t ->
    [ `Ok of File_descr_watcher_intf.Post.t Read_write.t
    | `Syscall_interrupted
    | `Timeout ]
  val sexp_of_t : File_descr_watcher_intf.S.t -> Sexplib.Sexp.t
end