sig
  type t
  module Options :
    sig
      type error_handler =
          Ignore
        | Print
        | Raise
        | Handle_with of (string -> unit Async.Std.Deferred.t)
      type t = {
        min_depth : int;
        max_depth : int option;
        follow_links : bool;
        on_open_errors : Async_find.Options.error_handler;
        on_stat_errors : Async_find.Options.error_handler;
        filter :
          (string * Async.Std.Unix.Stats.t -> bool Async.Std.Deferred.t)
          option;
        skip_dir :
          (string * Async.Std.Unix.Stats.t -> bool Async.Std.Deferred.t)
          option;
        relative_paths : bool;
      }
      val default : Async_find.Options.t
      val ignore_errors : Async_find.Options.t
    end
  val create : ?options:Async_find.Options.t -> string -> Async_find.t
  val next :
    Async_find.t ->
    (string * Async.Std.Unix.Stats.t) option Async.Std.Deferred.t
  val close : Async_find.t -> unit Async.Std.Deferred.t
  val iter :
    Async_find.t ->
    f:(string * Async.Std.Unix.Stats.t -> unit Async.Std.Deferred.t) ->
    unit Async.Std.Deferred.t
  val fold :
    Async_find.t ->
    init:'->
    f:('-> string * Async.Std.Unix.Stats.t -> 'Async.Std.Deferred.t) ->
    'Async.Std.Deferred.t
  val to_list :
    Async_find.t ->
    (string * Async.Std.Unix.Stats.t) list Async.Std.Deferred.t
  val find_all :
    ?options:Async_find.Options.t ->
    string -> (string * Async.Std.Unix.Stats.t) list Async.Std.Deferred.t
end