`type t`````
`type file_info``= string * Async.Unix.Stats.t```
`module Event : sig ... end`
`type modify_event_selector` = `[`

`|` ``Any_change`
`|` ``Closed_writable_fd`

`]```
`val create : ?⁠modify_event_selector:modify_event_selector ‑> ?⁠recursive:bool ‑> ?⁠watch_new_dirs:bool ‑> string ‑> (t * file_info list) Async.Deferred.t`

`create path` creates an inotify watching path. Returns the inotify type t itself and the list of files currently being watched. By default, recursively watches all subdirectories of the given path.

`val create_empty : modify_event_selector:modify_event_selector ‑> t Async.Deferred.t`

`create_empty modify_event_selector` creates an inotify that watches nothing until `add` or `add_all` is called.

`val stop : t ‑> unit Async.Deferred.t`

`stop t` stop watching t

`val add : t ‑> string ‑> unit Async.Deferred.t`

`add t path` add the path to t to be watched

`val add_all : ?⁠skip_dir:((string * Async.Unix.Stats.t) ‑> bool Async.Deferred.t) ‑> t ‑> string ‑> file_info list Async.Deferred.t`

`add_all t path` adds the path to t recursively

`val remove : t ‑> string ‑> unit Async.Deferred.t`

`remove t path` remove the path from t

`val stream : t ‑> Event.t Async.Stream.t`

`stream t` returns a stream of filesystem events

`val pipe : t ‑> Event.t Async.Pipe.Reader.t`

`pipe t` returns a pipe of filesystem events