sig
  module Header :
    sig
      type t = Biocaml_bam_alt.Header.t
      val of_sam : Biocaml_sam.header -> t
      val to_sam : t -> Biocaml_sam.header
    end
  type alignment = Biocaml_sam.alignment
  module Alignment0 :
    sig
      type t = Biocaml_bam_alt.Alignment0.t
      val qname : t -> string option
      val flags : t -> Biocaml_sam.Flags.t Core.Std.Or_error.t
      val rname : t -> Header.t -> string option Core.Std.Or_error.t
      val pos : t -> int option
      val mapq : t -> int option
      val cigar : t -> Biocaml_sam.cigar_op list Core.Std.Or_error.t
      val rnext :
        t -> Header.t -> Biocaml_sam.rnext option Core.Std.Or_error.t
      val pnext : t -> int option
      val tlen : t -> int option
      val seq : t -> string option
      val qual : t -> Biocaml_phred_score.t list Core.Std.Or_error.t
      val optional_fields :
        t -> Biocaml_sam.optional_field list Core.Std.Or_error.t
      val decode : t -> Header.t -> alignment Core.Std.Or_error.t
      val encode : alignment -> Header.t -> t Core.Std.Or_error.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  val read0 :
    in_channel ->
    (Header.t * Alignment0.t Core.Std.Or_error.t Stream.t)
    Core.Std.Or_error.t
  val with_file0 :
    string ->
    f:(Header.t ->
       Alignment0.t Core.Std.Or_error.t Stream.t -> 'Core.Std.Or_error.t) ->
    'Core.Std.Or_error.t
  val write0 : Header.t -> Alignment0.t Stream.t -> out_channel -> unit
  val read :
    in_channel ->
    (Header.t * alignment Core.Std.Or_error.t Stream.t) Core.Std.Or_error.t
  val with_file :
    string ->
    f:(Header.t ->
       alignment Core.Std.Or_error.t Stream.t -> 'Core.Std.Or_error.t) ->
    'Core.Std.Or_error.t
  val write :
    Header.t -> alignment Stream.t -> out_channel -> unit Core.Std.Or_error.t
end