`sig type t = Buffer.t val create : int -> BatBuffer.t val contents : BatBuffer.t -> string val to_bytes : BatBuffer.t -> Bytes.t val sub : BatBuffer.t -> int -> int -> string val blit : BatBuffer.t -> int -> string -> int -> int -> unit val nth : BatBuffer.t -> int -> char val length : BatBuffer.t -> int val clear : BatBuffer.t -> unit val reset : BatBuffer.t -> unit val add_char : BatBuffer.t -> char -> unit val add_string : BatBuffer.t -> string -> unit val add_bytes : BatBuffer.t -> Bytes.t -> unit val add_substring : BatBuffer.t -> string -> int -> int -> unit val add_subbytes : BatBuffer.t -> Bytes.t -> int -> int -> unit val add_substitute : BatBuffer.t -> (string -> string) -> string -> unit val add_buffer : BatBuffer.t -> BatBuffer.t -> unit val add_input : BatBuffer.t -> BatInnerIO.input -> int -> unit val add_channel : BatBuffer.t -> BatInnerIO.input -> int -> unit val output_buffer : BatBuffer.t -> string BatInnerIO.output val enum : BatBuffer.t -> char BatEnum.t val of_enum : char BatEnum.t -> BatBuffer.t val print : 'a BatInnerIO.output -> BatBuffer.t -> unit end`