sig
  type socket
  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_t.failure -> unit) ->
    ?timeout:float ->
    priority:'->
    'Duppy.scheduler ->
    Duppy.Io_t.socket ->
    Duppy.Io_t.marker -> (string * string option -> unit) -> unit
  val write :
    ?exec:(unit -> unit) ->
    ?on_error:(Duppy.Io_t.failure -> unit) ->
    ?bigarray:Duppy.Io_t.bigarray ->
    ?string:Stdlib.Bytes.t ->
    ?timeout:float ->
    priority:'-> 'Duppy.scheduler -> Duppy.Io_t.socket -> unit
end