sig
  type char_
  type string_
  val edit_distance :
    CCLevenshtein.S.string_ -> CCLevenshtein.S.string_ -> int
  type automaton
  val of_string :
    limit:int -> CCLevenshtein.S.string_ -> CCLevenshtein.S.automaton
  val of_list :
    limit:int -> CCLevenshtein.S.char_ list -> CCLevenshtein.S.automaton
  val debug_print :
    (Pervasives.out_channel -> CCLevenshtein.S.char_ -> unit) ->
    Pervasives.out_channel -> CCLevenshtein.S.automaton -> unit
  val match_with :
    CCLevenshtein.S.automaton -> CCLevenshtein.S.string_ -> bool
  module Index :
    sig
      type 'b t
      val empty : 'CCLevenshtein.S.Index.t
      val is_empty : 'CCLevenshtein.S.Index.t -> bool
      val add :
        'CCLevenshtein.S.Index.t ->
        CCLevenshtein.S.string_ -> '-> 'CCLevenshtein.S.Index.t
      val cardinal : 'CCLevenshtein.S.Index.t -> int
      val remove :
        'CCLevenshtein.S.Index.t ->
        CCLevenshtein.S.string_ -> 'CCLevenshtein.S.Index.t
      val retrieve :
        limit:int ->
        'CCLevenshtein.S.Index.t ->
        CCLevenshtein.S.string_ -> 'CCLevenshtein.klist
      val of_list :
        (CCLevenshtein.S.string_ * 'b) list -> 'CCLevenshtein.S.Index.t
      val to_list :
        'CCLevenshtein.S.Index.t -> (CCLevenshtein.S.string_ * 'b) list
      val add_seq :
        'CCLevenshtein.S.Index.t ->
        (CCLevenshtein.S.string_ * 'a) CCLevenshtein.sequence ->
        'CCLevenshtein.S.Index.t
      val of_seq :
        (CCLevenshtein.S.string_ * 'a) CCLevenshtein.sequence ->
        'CCLevenshtein.S.Index.t
      val to_seq :
        'CCLevenshtein.S.Index.t ->
        (CCLevenshtein.S.string_ * 'a) CCLevenshtein.sequence
      val add_gen :
        'CCLevenshtein.S.Index.t ->
        (CCLevenshtein.S.string_ * 'a) CCLevenshtein.gen ->
        'CCLevenshtein.S.Index.t
      val of_gen :
        (CCLevenshtein.S.string_ * 'a) CCLevenshtein.gen ->
        'CCLevenshtein.S.Index.t
      val to_gen :
        'CCLevenshtein.S.Index.t ->
        (CCLevenshtein.S.string_ * 'a) CCLevenshtein.gen
      val fold :
        ('-> CCLevenshtein.S.string_ -> '-> 'a) ->
        '-> 'CCLevenshtein.S.Index.t -> 'a
      val iter :
        (CCLevenshtein.S.string_ -> '-> unit) ->
        'CCLevenshtein.S.Index.t -> unit
      val to_klist :
        'CCLevenshtein.S.Index.t ->
        (CCLevenshtein.S.string_ * 'b) CCLevenshtein.klist
    end
end