sig
  type item = {
    matches : int;
    mismatches : int;
    rep_matches : int;
    n_count : int;
    q_num_insert : int;
    q_base_insert : int;
    t_num_insert : int;
    t_base_insert : int;
    q_name : string;
    q_strand : char;
    q_size : int;
    q_start : int;
    q_end : int;
    t_name : string;
    t_strand : char option;
    t_size : int;
    t_start : int;
    t_end : int;
    block_count : int;
    block_sizes : int list;
    q_starts : int list;
    t_starts : int list;
  }
  module Error :
    sig
      type t =
          [ `incomplete_input of Biocaml_pos.t * string list * string option
          | `invalid_int of Biocaml_pos.t * string * string
          | `invalid_number_of_columns of Biocaml_pos.t * string * int
          | `invalid_strands of Biocaml_pos.t * string * string ]
    end
  exception Error of Biocaml_psl.Error.t
  val in_channel_to_item_stream :
    ?buffer_size:int ->
    ?filename:string ->
    Pervasives.in_channel ->
    (Biocaml_psl.item, [> Biocaml_psl.Error.t ]) Core.Result.t Stream.t
  val in_channel_to_item_stream_exn :
    ?buffer_size:int ->
    ?filename:string -> Pervasives.in_channel -> Biocaml_psl.item Stream.t
  module Transform :
    sig
      val string_to_item :
        ?filename:string ->
        unit ->
        (string, (Biocaml_psl.item, [> Biocaml_psl.Error.t ]) Core.Result.t)
        Biocaml_transform.t
    end
  val line_to_item :
    Biocaml_pos.t ->
    Biocaml_line.t ->
    (Biocaml_psl.item, Biocaml_psl.Error.t) Core.Std.Result.t
  val item_of_sexp : Sexplib.Sexp.t -> Biocaml_psl.item
  val sexp_of_item : Biocaml_psl.item -> Sexplib.Sexp.t
end