sig
  val is_terminal : Unix.file_descr -> bool
  val size : Unix.file_descr -> int * int
  val set_size : Unix.file_descr -> int -> int -> unit
  val view : Unix.file_descr -> int * int * int * int
  val position : Unix.file_descr -> int * int
  val set_position : Unix.file_descr -> int -> int -> unit
  val move : Unix.file_descr -> int -> int -> unit
  val move_to_bol : Unix.file_descr -> unit -> unit
  val color :
    Unix.file_descr ->
    ?reset:bool ->
    ?bold:bool ->
    ?underscore:bool ->
    ?blink:bool ->
    ?reverse:bool ->
    ?concealed:bool ->
    ?foreground:Terminal.color -> ?background:Terminal.color -> unit -> unit
  val save : Unix.file_descr -> (unit -> 'a) -> 'a
  val clear_screen : Unix.file_descr -> unit -> unit
  val clear_eol : Unix.file_descr -> unit -> unit
  val clear_line : Unix.file_descr -> unit -> unit
  val scroll : Unix.file_descr -> int -> unit
  val show_cursor : Unix.file_descr -> bool -> unit
  val wrap : Unix.file_descr -> bool -> unit
  val screen :
    Unix.file_descr ->
    ?size:int * int ->
    ?cursor:bool -> ?wrap:bool -> (Unix.file_descr -> 'a) -> 'a
  val output : Unix.file_descr -> bytes -> int -> int -> unit
  val output_substring : Unix.file_descr -> string -> int -> int -> unit
  val output_string : Unix.file_descr -> string -> unit
  val output_substring_utf8 : Unix.file_descr -> string -> int -> int -> unit
  val output_string_utf8 : Unix.file_descr -> string -> unit
  val output_newline : Unix.file_descr -> unit -> unit
  val mode :
    Unix.file_descr ->
    ?echo:bool ->
    ?canonical:bool -> ?control_c:bool -> ?mouse:bool -> (unit -> 'a) -> 'a
  val input : Unix.file_descr -> bytes -> int -> int -> int
  val input_line_utf8 : Unix.file_descr -> string
  val is_empty : Unix.file_descr -> bool
  val input_event : Unix.file_descr -> Terminal.event
end