sig
  type header = private string list
  type item = private { description : string; sequence : string; }
  type fmt = {
    allow_sharp_comments : bool;
    allow_semicolon_comments : bool;
    allow_empty_lines : bool;
    comments_only_at_top : bool;
    max_line_length : int option;
    alphabet : string option;
  }
  val default_fmt : Biocaml_fasta.fmt
  val sequence_to_int_list : string -> int list Core.Std.Or_error.t
  type item0 = private
      [< `Comment of string
       | `Description of string
       | `Empty_line
       | `Partial_sequence of string ]
  val parse_item0 :
    ?allow_sharp_comments:bool ->
    ?allow_semicolon_comments:bool ->
    ?allow_empty_lines:bool ->
    ?max_line_length:int ->
    ?alphabet:string ->
    Biocaml_internal_utils.Line.t -> Biocaml_fasta.item0 Core.Std.Or_error.t
  val read0 :
    ?start:Biocaml_internal_utils.Pos.t ->
    ?allow_sharp_comments:bool ->
    ?allow_semicolon_comments:bool ->
    ?allow_empty_lines:bool ->
    ?max_line_length:int ->
    ?alphabet:string ->
    Pervasives.in_channel ->
    Biocaml_fasta.item0 Core.Std.Or_error.t Biocaml_internal_utils.Stream.t
  val read :
    ?start:Biocaml_internal_utils.Pos.t ->
    ?fmt:Biocaml_fasta.fmt ->
    Pervasives.in_channel ->
    (Biocaml_fasta.header *
     Biocaml_fasta.item Core.Std.Or_error.t Biocaml_internal_utils.Stream.t)
    Core.Std.Or_error.t
  val with_file :
    ?fmt:Biocaml_fasta.fmt ->
    string ->
    f:(Biocaml_fasta.header ->
       Biocaml_fasta.item Core.Std.Or_error.t Biocaml_internal_utils.Stream.t ->
       'Core.Std.Or_error.t) ->
    'Core.Std.Or_error.t
end