sig   type path = string   val write_file :     Pvem_lwt_unix.IO.path ->     content:string ->     (unit, [> `IO of [> `Write_file_exn of Pvem_lwt_unix.IO.path * exn ] ])     Pvem_lwt_unix.Deferred_result.t   val read_file :     Pvem_lwt_unix.IO.path ->     (string, [> `IO of [> `Read_file_exn of Pvem_lwt_unix.IO.path * exn ] ])     Pvem_lwt_unix.Deferred_result.t   val with_out_channel :     ?buffer_size:int ->     f:(Lwt_io.output_channel ->        ('a,         [> `IO of              [> `Exn of exn | `File_exists of string | `Wrong_path of string ] ]         as 'err)        Pvem_lwt_unix.Deferred_result.t) ->     [ `Append_to_file of string     | `Channel of Lwt_io.output_channel     | `Create_file of string     | `Overwrite_file of string     | `Stderr     | `Stdout ] -> ('a, 'err) Pvem_lwt_unix.Deferred_result.t   val write :     Lwt_io.output_channel ->     string ->     (unit, [> `IO of [> `Exn of exn ] ]) Pvem_lwt_unix.Deferred_result.t   val flush :     Lwt_io.output_channel ->     (unit, [> `IO of [> `Exn of exn ] ]) Pvem_lwt_unix.Deferred_result.t   val with_in_channel :     [ `Channel of Lwt_io.input_channel | `File of string | `Stdin ] ->     ?buffer_size:int ->     f:(Lwt_io.input_channel ->        ('a, [> `IO of [> `Exn of exn ] ] as 'err)        Pvem_lwt_unix.Deferred_result.t) ->     ('a, 'err) Pvem_lwt_unix.Deferred_result.t   val read :     ?count:int ->     Lwt_io.input_channel ->     (string, [> `IO of [> `Exn of exn ] ]) Pvem_lwt_unix.Deferred_result.t   val error_to_string :     [< `IO of          [< `Exn of exn           | `File_exists of string           | `Read_file_exn of string * exn           | `Write_file_exn of string * exn           | `Wrong_path of string ] ] ->     string end