sig
  module Monitor :
    sig
      type t
      val path : Bogue.File.Monitor.t -> string
      val start :
        ?delay:float ->
        ?action:(Bogue.File.Monitor.t -> unit) ->
        string -> Bogue.File.Monitor.t
      val delay : Bogue.File.Monitor.t -> float
      val stop : Bogue.File.Monitor.t -> unit
      val ls : Bogue.File.Monitor.t -> string list
      val size : Bogue.File.Monitor.t -> int option
      val modified :
        Bogue.File.Monitor.t -> string list * string list * string list
      val was_modified : Bogue.File.Monitor.t -> bool
    end
  module Mime : sig val type_string : string -> string end
  type t
  type options
  val set_options :
    ?width:int ->
    ?height:int ->
    ?dirs_first:bool ->
    ?show_hidden:bool ->
    ?hide_backup:bool ->
    ?max_selected:int ->
    ?hide_dirs:bool ->
    ?only_dirs:bool ->
    ?select_dir:bool ->
    ?allow_new:bool ->
    ?default_name:string ->
    ?breadcrumb:bool ->
    ?system_icons:bool ->
    ?open_dirs_on_click:bool ->
    ?mimetype:Str.regexp ->
    ?on_select:(int * int -> unit) -> unit -> Bogue.File.options
  type entry
  val filename : Bogue.File.entry -> string
  val lstat_opt : Bogue.File.entry -> Unix.stats option
  val stat_opt : Bogue.File.entry -> Unix.stats option
  val dialog :
    ?full_filter:(Bogue.File.entry -> bool) ->
    ?options:Bogue.File.options -> string -> Bogue.File.t
  val get_layout : Bogue.File.t -> Bogue.Layout.t
  val get_selected : Bogue.File.t -> string list
  val basedir : Bogue.File.t -> string
  val select_file :
    ?dst:Bogue.Layout.t ->
    ?board:Bogue.Main.board ->
    ?w:int ->
    ?h:int ->
    ?mimetype:Str.regexp ->
    ?name:string -> string -> (string -> unit) -> unit
  val select_files :
    ?dst:Bogue.Layout.t ->
    ?board:Bogue.Main.board ->
    ?w:int ->
    ?h:int ->
    ?mimetype:Str.regexp ->
    ?n_files:int -> string -> (string list -> unit) -> unit
  val select_dir :
    ?dst:Bogue.Layout.t ->
    ?board:Bogue.Main.board ->
    ?w:int -> ?h:int -> ?name:string -> string -> (string -> unit) -> unit
  val select_dirs :
    ?dst:Bogue.Layout.t ->
    ?board:Bogue.Main.board ->
    ?w:int ->
    ?h:int -> ?n_dirs:int -> string -> (string list -> unit) -> unit
  val save_as :
    ?dst:Bogue.Layout.t ->
    ?board:Bogue.Main.board ->
    ?w:int -> ?h:int -> ?name:string -> string -> (string -> unit) -> unit
  val ( let@ ) : ('-> 'b) -> '-> 'b
end