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