sig
  type t = Astring.String.sub
  val empty : Astring.String.sub
  val v : ?start:int -> ?stop:int -> string -> Astring.String.sub
  val start_pos : Astring.String.sub -> int
  val stop_pos : Astring.String.sub -> int
  val base_string : Astring.String.sub -> string
  val length : Astring.String.sub -> int
  val get : Astring.String.sub -> int -> char
  val get_byte : Astring.String.sub -> int -> int
  val unsafe_get : Astring.String.sub -> int -> char
  val unsafe_get_byte : Astring.String.sub -> int -> int
  val head : ?rev:bool -> Astring.String.sub -> char option
  val get_head : ?rev:bool -> Astring.String.sub -> char
  val of_string : string -> Astring.String.sub
  val to_string : Astring.String.sub -> string
  val rebase : Astring.String.sub -> Astring.String.sub
  val hash : Astring.String.sub -> int
  val start : Astring.String.sub -> Astring.String.sub
  val stop : Astring.String.sub -> Astring.String.sub
  val base : Astring.String.sub -> Astring.String.sub
  val tail : ?rev:bool -> Astring.String.sub -> Astring.String.sub
  val extend :
    ?rev:bool ->
    ?max:int ->
    ?sat:(char -> bool) -> Astring.String.sub -> Astring.String.sub
  val reduce :
    ?rev:bool ->
    ?max:int ->
    ?sat:(char -> bool) -> Astring.String.sub -> Astring.String.sub
  val extent : Astring.String.sub -> Astring.String.sub -> Astring.String.sub
  val overlap :
    Astring.String.sub -> Astring.String.sub -> Astring.String.sub option
  val append : Astring.String.sub -> Astring.String.sub -> Astring.String.sub
  val concat :
    ?sep:Astring.String.sub -> Astring.String.sub list -> Astring.String.sub
  val is_empty : Astring.String.sub -> bool
  val is_prefix : affix:Astring.String.sub -> Astring.String.sub -> bool
  val is_infix : affix:Astring.String.sub -> Astring.String.sub -> bool
  val is_suffix : affix:Astring.String.sub -> Astring.String.sub -> bool
  val for_all : (char -> bool) -> Astring.String.sub -> bool
  val exists : (char -> bool) -> Astring.String.sub -> bool
  val same_base : Astring.String.sub -> Astring.String.sub -> bool
  val equal_bytes : Astring.String.sub -> Astring.String.sub -> bool
  val compare_bytes : Astring.String.sub -> Astring.String.sub -> int
  val equal : Astring.String.sub -> Astring.String.sub -> bool
  val compare : Astring.String.sub -> Astring.String.sub -> int
  val with_range :
    ?first:int -> ?len:int -> Astring.String.sub -> Astring.String.sub
  val with_index_range :
    ?first:int -> ?last:int -> Astring.String.sub -> Astring.String.sub
  val trim : ?drop:(char -> bool) -> Astring.String.sub -> Astring.String.sub
  val span :
    ?rev:bool ->
    ?min:int ->
    ?max:int ->
    ?sat:(char -> bool) ->
    Astring.String.sub -> Astring.String.sub * Astring.String.sub
  val take :
    ?rev:bool ->
    ?min:int ->
    ?max:int ->
    ?sat:(char -> bool) -> Astring.String.sub -> Astring.String.sub
  val drop :
    ?rev:bool ->
    ?min:int ->
    ?max:int ->
    ?sat:(char -> bool) -> Astring.String.sub -> Astring.String.sub
  val cut :
    ?rev:bool ->
    sep:Astring.String.sub ->
    Astring.String.sub -> (Astring.String.sub * Astring.String.sub) option
  val cuts :
    ?rev:bool ->
    ?empty:bool ->
    sep:Astring.String.sub -> Astring.String.sub -> Astring.String.sub list
  val fields :
    ?empty:bool ->
    ?is_sep:(char -> bool) -> Astring.String.sub -> Astring.String.sub list
  val find :
    ?rev:bool ->
    (char -> bool) -> Astring.String.sub -> Astring.String.sub option
  val find_sub :
    ?rev:bool ->
    sub:Astring.String.sub -> Astring.String.sub -> Astring.String.sub option
  val filter : (char -> bool) -> Astring.String.sub -> Astring.String.sub
  val filter_map :
    (char -> char option) -> Astring.String.sub -> Astring.String.sub
  val map : (char -> char) -> Astring.String.sub -> Astring.String.sub
  val mapi :
    (int -> char -> char) -> Astring.String.sub -> Astring.String.sub
  val fold_left : ('-> char -> 'a) -> '-> Astring.String.sub -> 'a
  val fold_right : (char -> '-> 'a) -> Astring.String.sub -> '-> 'a
  val iter : (char -> unit) -> Astring.String.sub -> unit
  val iteri : (int -> char -> unit) -> Astring.String.sub -> unit
  val pp : Stdlib.Format.formatter -> Astring.String.sub -> unit
  val dump : Stdlib.Format.formatter -> Astring.String.sub -> unit
  val dump_raw : Stdlib.Format.formatter -> Astring.String.sub -> unit
  val of_char : char -> Astring.String.sub
  val to_char : Astring.String.sub -> char option
  val of_bool : bool -> Astring.String.sub
  val to_bool : Astring.String.sub -> bool option
  val of_int : int -> Astring.String.sub
  val to_int : Astring.String.sub -> int option
  val of_nativeint : nativeint -> Astring.String.sub
  val to_nativeint : Astring.String.sub -> nativeint option
  val of_int32 : int32 -> Astring.String.sub
  val to_int32 : Astring.String.sub -> int32 option
  val of_int64 : int64 -> Astring.String.sub
  val to_int64 : Astring.String.sub -> int64 option
  val of_float : float -> Astring.String.sub
  val to_float : Astring.String.sub -> float option
end