sig
  type t
  exception No_such_encoding of string
  val create :
    ?windows:bool ->
    ?model:string ->
    ?incoming_encoding:string ->
    ?outgoing_encoding:string ->
    Lwt_unix.file_descr ->
    Lwt_io.input_channel ->
    Lwt_unix.file_descr -> Lwt_io.output_channel -> LTerm.t Lwt.t
  val model : LTerm.t -> string
  val colors : LTerm.t -> int
  val windows : LTerm.t -> bool
  val is_a_tty : LTerm.t -> bool
  val incoming_is_a_tty : LTerm.t -> bool
  val outgoing_is_a_tty : LTerm.t -> bool
  val escape_time : LTerm.t -> float
  val set_escape_time : LTerm.t -> float -> unit
  exception Not_a_tty
  val size : LTerm.t -> LTerm_geom.size
  type mode
  val enter_raw_mode : LTerm.t -> LTerm.mode Lwt.t
  val leave_raw_mode : LTerm.t -> LTerm.mode -> unit Lwt.t
  val enable_mouse : LTerm.t -> unit Lwt.t
  val disable_mouse : LTerm.t -> unit Lwt.t
  val show_cursor : LTerm.t -> unit Lwt.t
  val hide_cursor : LTerm.t -> unit Lwt.t
  val goto : LTerm.t -> LTerm_geom.coord -> unit Lwt.t
  val move : LTerm.t -> int -> int -> unit Lwt.t
  val clear_screen : LTerm.t -> unit Lwt.t
  val clear_screen_next : LTerm.t -> unit Lwt.t
  val clear_screen_prev : LTerm.t -> unit Lwt.t
  val clear_line : LTerm.t -> unit Lwt.t
  val clear_line_next : LTerm.t -> unit Lwt.t
  val clear_line_prev : LTerm.t -> unit Lwt.t
  val save_state : LTerm.t -> unit Lwt.t
  val load_state : LTerm.t -> unit Lwt.t
  val read_event : LTerm.t -> LTerm_event.t Lwt.t
  val fprint : LTerm.t -> Zed_utf8.t -> unit Lwt.t
  val fprintl : LTerm.t -> Zed_utf8.t -> unit Lwt.t
  val fprintf :
    LTerm.t -> ('a, unit, Zed_utf8.t, unit Lwt.t) Pervasives.format4 -> 'a
  val fprints : LTerm.t -> LTerm_text.t -> unit Lwt.t
  val fprintlf :
    LTerm.t -> ('a, unit, Zed_utf8.t, unit Lwt.t) Pervasives.format4 -> 'a
  val fprintls : LTerm.t -> LTerm_text.t -> unit Lwt.t
  val print : Zed_utf8.t -> unit Lwt.t
  val printl : Zed_utf8.t -> unit Lwt.t
  val printf : ('a, unit, Zed_utf8.t, unit Lwt.t) Pervasives.format4 -> 'a
  val prints : LTerm_text.t -> unit Lwt.t
  val printlf : ('a, unit, Zed_utf8.t, unit Lwt.t) Pervasives.format4 -> 'a
  val printls : LTerm_text.t -> unit Lwt.t
  val eprint : Zed_utf8.t -> unit Lwt.t
  val eprintl : Zed_utf8.t -> unit Lwt.t
  val eprintf : ('a, unit, Zed_utf8.t, unit Lwt.t) Pervasives.format4 -> 'a
  val eprints : LTerm_text.t -> unit Lwt.t
  val eprintlf : ('a, unit, Zed_utf8.t, unit Lwt.t) Pervasives.format4 -> 'a
  val eprintls : LTerm_text.t -> unit Lwt.t
  type context
  val with_context : LTerm.t -> (LTerm.context -> 'Lwt.t) -> 'Lwt.t
  val update_style : LTerm.context -> LTerm_style.t -> unit Lwt.t
  val context_term : LTerm.context -> LTerm.t
  val context_oc : LTerm.context -> Lwt_io.output_channel
  val encode_string : LTerm.t -> Zed_utf8.t -> string
  val encode_char : LTerm.t -> CamomileLibrary.UChar.t -> string
  val set_style : LTerm.t -> LTerm_style.t -> unit Lwt.t
  val render : LTerm.t -> LTerm_draw.matrix -> unit Lwt.t
  val render_update :
    LTerm.t -> LTerm_draw.matrix -> LTerm_draw.matrix -> unit Lwt.t
  val print_box : LTerm.t -> LTerm_draw.matrix -> unit Lwt.t
  val print_box_with_newlines : LTerm.t -> LTerm_draw.matrix -> unit Lwt.t
  val flush : LTerm.t -> unit Lwt.t
  val stdout : LTerm.t Lwt.t Lazy.t
  val stderr : LTerm.t Lwt.t Lazy.t
  val get_size_from_fd : Lwt_unix.file_descr -> LTerm_geom.size Lwt.t
  val set_size_from_fd : Lwt_unix.file_descr -> LTerm_geom.size -> unit Lwt.t
  val set_io :
    ?incoming_fd:Lwt_unix.file_descr ->
    ?incoming_channel:Lwt_io.input_channel ->
    ?outgoing_fd:Lwt_unix.file_descr ->
    ?outgoing_channel:Lwt_io.output_channel -> LTerm.t -> unit Lwt.t
  val get_size : LTerm.t -> LTerm_geom.size Lwt.t
  val set_size : LTerm.t -> LTerm_geom.size -> unit Lwt.t
end