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