sig
  type t
  type filter = Tag of string | Subsystem_devtype of string * string option
  type netlink_source = Udev | Kernel
  val create :
    ?source:Libudev.Monitor.netlink_source ->
    Libudev.Context.t -> Libudev.Monitor.t
  val set_filter : Libudev.Monitor.t -> Libudev.Monitor.filter list -> unit
  val start : Libudev.Monitor.t -> unit
  exception Timeout
  val receive_device :
    ?timeout:float -> Libudev.Monitor.t -> Libudev.Device.t
  val context : Libudev.Monitor.t -> Libudev.Context.t
  val set_receive_buffer_size : Libudev.Monitor.t -> int -> unit
  val fd : Libudev.Monitor.t -> Unix.file_descr
end