sig
  type color =
      Black
    | Red
    | Green
    | Yellow
    | Blue
    | Magenta
    | Cyan
    | White
    | Default
  type style =
      Reset
    | Bold
    | Underlined
    | Blink
    | Inverse
    | Hidden
    | Foreground of ANSITerminal.color
    | Background of ANSITerminal.color
  val black : ANSITerminal.style
  val red : ANSITerminal.style
  val green : ANSITerminal.style
  val yellow : ANSITerminal.style
  val blue : ANSITerminal.style
  val magenta : ANSITerminal.style
  val cyan : ANSITerminal.style
  val white : ANSITerminal.style
  val default : ANSITerminal.style
  val on_black : ANSITerminal.style
  val on_red : ANSITerminal.style
  val on_green : ANSITerminal.style
  val on_yellow : ANSITerminal.style
  val on_blue : ANSITerminal.style
  val on_magenta : ANSITerminal.style
  val on_cyan : ANSITerminal.style
  val on_white : ANSITerminal.style
  val on_default : ANSITerminal.style
  val set_autoreset : bool -> unit
  val print_string : ANSITerminal.style list -> string -> unit
  val printf :
    ANSITerminal.style list -> ('a, unit, string, unit) format4 -> 'a
  type loc = Above | Below | Screen
  val erase : ANSITerminal.loc -> unit
  val set_cursor : int -> int -> unit
  val move_cursor : int -> int -> unit
  val save_cursor : unit -> unit
  val restore_cursor : unit -> unit
  val scroll : int -> unit
end