sig
  type item = {
    name : string;
    sequence : string;
    comment : string;
    qualities : string;
  }
  val split_name : string -> string * string option
  module MakeIO :
    functor (Future : Future.S->
      sig
        val read :
          Future.Reader.t ->
          Biocaml_fastq.item Core.Std.Or_error.t Future.Pipe.Reader.t
        val write :
          Future.Writer.t ->
          Biocaml_fastq.item Future.Pipe.Reader.t -> unit Future.Deferred.t
        val write_file :
          ?perm:int ->
          ?append:bool ->
          string ->
          Biocaml_fastq.item Future.Pipe.Reader.t -> unit Future.Deferred.t
      end
  val read :
    Future_std.Reader.t -> item Core.Std.Or_error.t Future_std.Pipe.Reader.t
  val write :
    Future_std.Writer.t ->
    item Future_std.Pipe.Reader.t -> unit Future_std.Deferred.t
  val write_file :
    ?perm:int ->
    ?append:bool ->
    string -> item Future_std.Pipe.Reader.t -> unit Future_std.Deferred.t
  module Illumina :
    sig
      type surface = [ `Bottom | `Top ]
      type tile = private {
        surface : Biocaml_fastq.Illumina.surface;
        swath : int;
        number : int;
      }
      val tile_of_string :
        string -> Biocaml_fastq.Illumina.tile Core.Std.Or_error.t
      val tile_to_string : Biocaml_fastq.Illumina.tile -> string
      type sequence_id = private {
        instrument : string;
        run_number : int;
        flowcell_id : string;
        lane : int;
        tile : Biocaml_fastq.Illumina.tile;
        x_pos : int;
        y_pos : int;
        read : int;
        is_filtered : bool;
        control_number : int;
        index : string;
      }
      val sequence_id_of_string :
        string -> Biocaml_fastq.Illumina.sequence_id Core.Std.Or_error.t
    end
  val item_to_string : Biocaml_fastq.item -> string
  val name_of_line :
    ?pos:Biocaml_internal_utils.Pos.t ->
    Biocaml_internal_utils.Line.t -> string Core.Std.Or_error.t
  val sequence_of_line :
    ?pos:Biocaml_internal_utils.Pos.t ->
    Biocaml_internal_utils.Line.t -> string
  val comment_of_line :
    ?pos:Biocaml_internal_utils.Pos.t ->
    Biocaml_internal_utils.Line.t -> string Core.Std.Or_error.t
  val qualities_of_line :
    ?pos:Biocaml_internal_utils.Pos.t ->
    ?sequence:string ->
    Biocaml_internal_utils.Line.t -> string Core.Std.Or_error.t
  val item_of_sexp : Sexplib.Sexp.t -> Biocaml_fastq.item
  val sexp_of_item : Biocaml_fastq.item -> Sexplib.Sexp.t
end