sig
  type uv_open_flag =
    Uwt_base.Fs_types.uv_open_flag =
      O_RDONLY
    | O_WRONLY
    | O_RDWR
    | O_NONBLOCK
    | O_CREAT
    | O_EXCL
    | O_TRUNC
    | O_APPEND
    | O_NOCTTY
    | O_DSYNC
    | O_SYNC
    | O_RSYNC
    | O_TEMPORARY
    | O_SHORT_LIVED
    | O_SEQUENTIAL
    | O_RANDOM
    | O_DIRECT
    | O_EXLOCK
    | O_NOATIME
    | O_SYMLINK
    | O_NOFOLLOW
    | O_DIRECTORY
  type file_kind =
    Uwt_base.Fs_types.file_kind =
      S_REG
    | S_DIR
    | S_CHR
    | S_BLK
    | S_LNK
    | S_FIFO
    | S_SOCK
    | S_UNKNOWN
  type symlink_mode =
    Uwt_base.Fs_types.symlink_mode =
      S_Default
    | S_Dir
    | S_Junction
  type access_permission =
    Uwt_base.Fs_types.access_permission =
      Read
    | Write
    | Exec
    | Exists
  type stats =
    Uwt_base.Fs_types.stats = {
    st_dev : int;
    st_kind : file_kind;
    st_perm : int;
    st_nlink : int;
    st_uid : int;
    st_gid : int;
    st_rdev : int;
    st_ino : int;
    st_size : int64;
    st_blksize : int;
    st_blocks : int;
    st_flags : int;
    st_gen : int;
    st_atime : int64;
    st_atime_nsec : int;
    st_mtime : int64;
    st_mtime_nsec : int;
    st_ctime : int64;
    st_ctime_nsec : int;
    st_birthtime : int64;
    st_birthtime_nsec : int;
  }
  type clone_mode = No_clone | Try_clone | Force_clone
  val openfile :
    ?perm:int ->
    mode:uv_open_flag list -> string -> Uwt_base.file Uwt_base.uv_result
  val read :
    ?pos:int ->
    ?len:int -> Uwt_base.file -> buf:bytes -> int Uwt_base.uv_result
  val read_ba :
    ?pos:int ->
    ?len:int -> Uwt_base.file -> buf:Uwt_base.buf -> int Uwt_base.uv_result
  val pread :
    ?pos:int ->
    ?len:int ->
    Uwt_base.file -> fd_offset:int64 -> buf:bytes -> int Uwt_base.uv_result
  val pread_ba :
    ?pos:int ->
    ?len:int ->
    Uwt_base.file ->
    fd_offset:int64 -> buf:Uwt_base.buf -> int Uwt_base.uv_result
  val write :
    ?pos:int ->
    ?len:int -> Uwt_base.file -> buf:bytes -> int Uwt_base.uv_result
  val write_string :
    ?pos:int ->
    ?len:int -> Uwt_base.file -> buf:string -> int Uwt_base.uv_result
  val write_ba :
    ?pos:int ->
    ?len:int -> Uwt_base.file -> buf:Uwt_base.buf -> int Uwt_base.uv_result
  val pwrite :
    ?pos:int ->
    ?len:int ->
    Uwt_base.file -> fd_offset:int64 -> buf:bytes -> int Uwt_base.uv_result
  val pwrite_string :
    ?pos:int ->
    ?len:int ->
    Uwt_base.file -> fd_offset:int64 -> buf:string -> int Uwt_base.uv_result
  val pwrite_ba :
    ?pos:int ->
    ?len:int ->
    Uwt_base.file ->
    fd_offset:int64 -> buf:Uwt_base.buf -> int Uwt_base.uv_result
  val writev :
    Uwt_base.file -> Uwt_base.Iovec_write.t list -> int Uwt_base.uv_result
  val pwritev :
    Uwt_base.file ->
    Uwt_base.Iovec_write.t list -> int64 -> int Uwt_base.uv_result
  val close : Uwt_base.file -> unit Uwt_base.uv_result
  val unlink : string -> unit Uwt_base.uv_result
  val mkdir : ?perm:int -> string -> unit Uwt_base.uv_result
  val rmdir : string -> unit Uwt_base.uv_result
  val fsync : Uwt_base.file -> unit Uwt_base.uv_result
  val fdatasync : Uwt_base.file -> unit Uwt_base.uv_result
  val ftruncate : Uwt_base.file -> len:int64 -> unit Uwt_base.uv_result
  val stat : string -> stats Uwt_base.uv_result
  val lstat : string -> stats Uwt_base.uv_result
  val fstat : Uwt_base.file -> stats Uwt_base.uv_result
  val rename : src:string -> dst:string -> unit Uwt_base.uv_result
  val link : target:string -> link_name:string -> unit Uwt_base.uv_result
  val symlink :
    ?mode:symlink_mode ->
    src:string -> dst:string -> unit -> unit Uwt_base.uv_result
  val mkdtemp : string -> string Uwt_base.uv_result
  val sendfile :
    ?pos:int64 ->
    ?len:nativeint ->
    dst:Uwt_base.file ->
    src:Uwt_base.file -> unit -> nativeint Uwt_base.uv_result
  val utime :
    string -> access:float -> modif:float -> unit Uwt_base.uv_result
  val futime :
    Uwt_base.file -> access:float -> modif:float -> unit Uwt_base.uv_result
  val readlink : string -> string Uwt_base.uv_result
  val access : string -> access_permission list -> unit Uwt_base.uv_result
  val chmod : string -> perm:int -> unit Uwt_base.uv_result
  val fchmod : Uwt_base.file -> perm:int -> unit Uwt_base.uv_result
  val chown : string -> uid:int -> gid:int -> unit Uwt_base.uv_result
  val fchown : Uwt_base.file -> uid:int -> gid:int -> unit Uwt_base.uv_result
  val lchown : string -> uid:int -> gid:int -> unit Uwt_base.uv_result
  val scandir : string -> (file_kind * string) array Uwt_base.uv_result
  val realpath : string -> string Uwt_base.uv_result
  val copyfile :
    ?excl:bool ->
    ?clone:clone_mode ->
    src:string -> dst:string -> unit -> unit Uwt_base.uv_result
end