sig
  type item = {
    name : string;
    sequence : string;
    comment : string;
    qualities : string;
  }
  module Error :
    sig
      type fasta_pair_to_fastq =
          [ `cannot_convert_to_phred_score of int list
          | `sequence_names_mismatch of string * string ]
      type parsing =
          [ `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 ]
      type t =
          [ `cannot_convert_to_phred_score of int list
          | `incomplete_input of Biocaml_pos.t * string list * string option
          | `sequence_and_qualities_do_not_match of
              Biocaml_pos.t * string * string
          | `sequence_names_mismatch of string * string
          | `wrong_comment_line of Biocaml_pos.t * string
          | `wrong_name_line of Biocaml_pos.t * string ]
      val t_of_sexp : Sexplib.Sexp.t -> Biocaml_fastq.Error.t
      val sexp_of_t : Biocaml_fastq.Error.t -> Sexplib.Sexp.t
      val t_to_string : Biocaml_fastq.Error.t -> string
    end
  exception Error of Biocaml_fastq.Error.t
  val in_channel_to_item_stream :
    ?buffer_size:int ->
    ?filename:string ->
    Pervasives.in_channel ->
    (Biocaml_fastq.item, [> Biocaml_fastq.Error.parsing ]) Core.Result.t
    Stream.t
  val in_channel_to_item_stream_exn :
    ?buffer_size:int ->
    ?filename:string -> Pervasives.in_channel -> Biocaml_fastq.item Stream.t
  val item_to_string : Biocaml_fastq.item -> string
  module Transform :
    sig
      val string_to_item :
        ?filename:string ->
        unit ->
        (string,
         (Biocaml_fastq.item, [> Biocaml_fastq.Error.parsing ]) Core.Result.t)
        Biocaml_transform.t
      val item_to_string :
        unit -> (Biocaml_fastq.item, string) Biocaml_transform.t
      val trim :
        [ `beginning of int | `ending of int ] ->
        (Biocaml_fastq.item,
         (Biocaml_fastq.item, [> `invalid_size of int ]) Core.Result.t)
        Biocaml_transform.t
      val fasta_pair_to_fastq :
        ?phred_score_offset:[ `offset33 | `offset64 ] ->
        unit ->
        (Biocaml_fasta.char_seq Biocaml_fasta.item *
         Biocaml_fasta.int_seq Biocaml_fasta.item,
         (Biocaml_fastq.item, [> Biocaml_fastq.Error.fasta_pair_to_fastq ])
         Core.Result.t)
        Biocaml_transform.t
      val fastq_to_fasta_pair :
        ?phred_score_offset:[ `offset33 | `offset64 ] ->
        unit ->
        (Biocaml_fastq.item,
         (Biocaml_fasta.char_seq Biocaml_fasta.item *
          Biocaml_fasta.int_seq Biocaml_fasta.item,
          [> `cannot_convert_ascii_phred_score of string ])
         Core.Result.t)
        Biocaml_transform.t
    end
  val item_of_sexp : Sexplib.Sexp.t -> Biocaml_fastq.item
  val sexp_of_item : Biocaml_fastq.item -> Sexplib.Sexp.t
end