sig
  type marker = Length of int | Split of string
  type bigarray =
      (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t
  type failure =
      Io_error
    | Unix of Unix.error * string * string
    | Unknown of exn
    | Timeout
  val read :
    ?recursive:bool ->
    ?init:string ->
    ?on_error:(string * Duppy.Io.failure -> unit) ->
    ?timeout:float ->
    priority:'->
    'Duppy.scheduler ->
    Unix.file_descr ->
    Duppy.Io.marker -> (string * string option -> unit) -> unit
  val write :
    ?exec:(unit -> unit) ->
    ?on_error:(Duppy.Io.failure -> unit) ->
    ?bigarray:Duppy.Io.bigarray ->
    ?string:string ->
    ?timeout:float ->
    priority:'-> 'Duppy.scheduler -> Unix.file_descr -> unit
end