sig
  type item =
    Biocaml_fastq.item = {
    name : string;
    sequence : string;
    comment : string;
    qualities : string;
  }
  module Error :
    sig
      type t =
          [ `incomplete_input of Biocaml_pos.t * string list * string option
          | `sequence_and_qualities_do_not_match of
              Biocaml_pos.t * string * string
          | `wrong_comment_line of Biocaml_pos.t * string
          | `wrong_name_line of Biocaml_pos.t * string ]
      val t_to_string : t -> string
      val t_of_sexp : Sexplib.Sexp.t -> t
      val t_of_sexp__ : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  val in_channel_to_item_stream :
    ?buffer_size:int ->
    ?filename:string -> in_channel -> (item, Error.t) Core.Result.t Stream.t
  module Exceptionful :
    sig
      exception Error of Error.t
      val in_channel_to_item_stream :
        ?buffer_size:int -> ?filename:string -> in_channel -> item Stream.t
    end
  module Transform :
    sig
      val string_to_item :
        ?filename:string ->
        unit ->
        (string, (item, [> Error.t ]) Core.Result.t) Biocaml_transform.t
      val item_to_string : unit -> (item, string) Biocaml_transform.t
      val trim :
        [ `beginning of int | `ending of int ] ->
        (item, (item, [> `invalid_size of int ]) Core.Result.t)
        Biocaml_transform.t
    end
  val item_of_sexp : Sexplib.Sexp.t -> item
  val sexp_of_item : item -> Sexplib.Sexp.t
end