sig
  exception Interrupt
  type prompt = LTerm_text.t
  type history = Zed_utf8.t list
  val common_prefix : string list -> string
  val lookup : Zed_utf8.t -> Zed_utf8.t list -> Zed_utf8.t list
  val lookup_assoc :
    Zed_utf8.t -> (Zed_utf8.t * 'a) list -> (Zed_utf8.t * 'a) list
  type action =
      Edit of LTerm_edit.action
    | Interrupt_or_delete_next_char
    | Complete
    | Complete_bar_next
    | Complete_bar_prev
    | Complete_bar_first
    | Complete_bar_last
    | Complete_bar
    | History_prev
    | History_next
    | Accept
    | Clear_screen
    | Prev_search
    | Cancel_search
    | Break
    | Suspend
  val bindings :
    LTerm_read_line.action list Zed_input.Make(LTerm_key).t Pervasives.ref
  val bind : LTerm_key.t list -> LTerm_read_line.action list -> unit
  val unbind : LTerm_key.t list -> unit
  val actions : (LTerm_read_line.action * string) list
  val doc_of_action : LTerm_read_line.action -> string
  val action_of_name : string -> LTerm_read_line.action
  val name_of_action : LTerm_read_line.action -> string
  val macro : LTerm_read_line.action Zed_macro.t
  type mode = Edition | Search | Set_counter | Add_counter
  class virtual ['a] engine :
    ?history:LTerm_read_line.history ->
    ?clipboard:Zed_edit.clipboard ->
    ?macro:LTerm_read_line.action Zed_macro.t ->
    unit ->
    object
      method clipboard : Zed_edit.clipboard
      method complete : unit
      method completion : unit
      method completion_index : int React.signal
      method completion_words : (Zed_utf8.t * Zed_utf8.t) list React.signal
      method context : unit Zed_edit.context
      method edit : unit Zed_edit.t
      method virtual eval : 'a
      method history : (Zed_utf8.t list * Zed_utf8.t list) React.signal
      method input_next : Zed_rope.t
      method input_prev : Zed_rope.t
      method insert : CamomileLibrary.UChar.t -> unit
      method macro : LTerm_read_line.action Zed_macro.t
      method message : LTerm_text.t option React.signal
      method mode : LTerm_read_line.mode React.signal
      method send_action : LTerm_read_line.action -> unit
      method set_completion : int -> (Zed_utf8.t * Zed_utf8.t) list -> unit
      method show_box : bool
      method stylise : bool -> LTerm_text.t * int
    end
  class virtual ['a] abstract :
    object
      method virtual clipboard : Zed_edit.clipboard
      method virtual complete : unit
      method virtual completion : unit
      method virtual completion_index : int React.signal
      method virtual completion_words :
        (Zed_utf8.t * Zed_utf8.t) list React.signal
      method virtual context : unit Zed_edit.context
      method virtual edit : unit Zed_edit.t
      method virtual eval : 'a
      method virtual history :
        (Zed_utf8.t list * Zed_utf8.t list) React.signal
      method virtual input_next : Zed_rope.t
      method virtual input_prev : Zed_rope.t
      method virtual insert : CamomileLibrary.UChar.t -> unit
      method virtual macro : LTerm_read_line.action Zed_macro.t
      method virtual message : LTerm_text.t option React.signal
      method virtual mode : LTerm_read_line.mode React.signal
      method virtual send_action : LTerm_read_line.action -> unit
      method virtual set_completion :
        int -> (Zed_utf8.t * Zed_utf8.t) list -> unit
      method virtual show_box : bool
      method virtual stylise : bool -> LTerm_text.t * int
    end
  class read_line :
    ?history:LTerm_read_line.history ->
    unit ->
    object
      method clipboard : Zed_edit.clipboard
      method complete : unit
      method completion : unit
      method completion_index : int React.signal
      method completion_words : (Zed_utf8.t * Zed_utf8.t) list React.signal
      method context : unit Zed_edit.context
      method edit : unit Zed_edit.t
      method eval : Zed_utf8.t
      method history : (Zed_utf8.t list * Zed_utf8.t list) React.signal
      method input_next : Zed_rope.t
      method input_prev : Zed_rope.t
      method insert : CamomileLibrary.UChar.t -> unit
      method macro : action Zed_macro.t
      method message : LTerm_text.t option React.signal
      method mode : mode React.signal
      method send_action : action -> unit
      method set_completion : int -> (Zed_utf8.t * Zed_utf8.t) list -> unit
      method show_box : bool
      method stylise : bool -> LTerm_text.t * int
    end
  class read_password :
    unit ->
    object
      method clipboard : Zed_edit.clipboard
      method complete : unit
      method completion : unit
      method completion_index : int React.signal
      method completion_words : (Zed_utf8.t * Zed_utf8.t) list React.signal
      method context : unit Zed_edit.context
      method edit : unit Zed_edit.t
      method eval : Zed_utf8.t
      method history : (Zed_utf8.t list * Zed_utf8.t list) React.signal
      method input_next : Zed_rope.t
      method input_prev : Zed_rope.t
      method insert : CamomileLibrary.UChar.t -> unit
      method macro : action Zed_macro.t
      method message : LTerm_text.t option React.signal
      method mode : mode React.signal
      method send_action : action -> unit
      method set_completion : int -> (Zed_utf8.t * Zed_utf8.t) list -> unit
      method show_box : bool
      method stylise : bool -> LTerm_text.t * int
    end
  type 'a read_keyword_result = Rk_value of '| Rk_error of Zed_utf8.t
  class ['a] read_keyword :
    ?history:LTerm_read_line.history ->
    unit ->
    object
      method clipboard : Zed_edit.clipboard
      method complete : unit
      method completion : unit
      method completion_index : int React.signal
      method completion_words : (Zed_utf8.t * Zed_utf8.t) list React.signal
      method context : unit Zed_edit.context
      method edit : unit Zed_edit.t
      method eval : 'LTerm_read_line.read_keyword_result
      method history : (Zed_utf8.t list * Zed_utf8.t list) React.signal
      method input_next : Zed_rope.t
      method input_prev : Zed_rope.t
      method insert : CamomileLibrary.UChar.t -> unit
      method keywords : (string * 'a) list
      method macro : action Zed_macro.t
      method message : LTerm_text.t option React.signal
      method mode : mode React.signal
      method send_action : action -> unit
      method set_completion : int -> (Zed_utf8.t * Zed_utf8.t) list -> unit
      method show_box : bool
      method stylise : bool -> LTerm_text.t * int
    end
  class virtual ['a] term :
    LTerm.t ->
    object
      val mutable visible : bool
      method virtual clipboard : Zed_edit.clipboard
      method virtual complete : unit
      method virtual completion : unit
      method virtual completion_index : int React.signal
      method completion_start : int React.signal
      method virtual completion_words :
        (Zed_utf8.t * Zed_utf8.t) list React.signal
      method virtual context : unit Zed_edit.context
      method draw_failure : unit Lwt.t
      method draw_success : unit Lwt.t
      method draw_update : unit Lwt.t
      method virtual edit : unit Zed_edit.t
      method virtual eval : 'a
      method private exec : LTerm_read_line.action list -> 'Lwt.t
      method hide : unit Lwt.t
      method virtual history :
        (Zed_utf8.t list * Zed_utf8.t list) React.signal
      method virtual input_next : Zed_rope.t
      method virtual input_prev : Zed_rope.t
      method virtual insert : CamomileLibrary.UChar.t -> unit
      method key_sequence : LTerm_key.t list React.signal
      method virtual macro : action Zed_macro.t
      method virtual message : LTerm_text.t option React.signal
      method virtual mode : mode React.signal
      method prompt : LTerm_read_line.prompt React.signal
      method run : 'Lwt.t
      method virtual send_action : action -> unit
      method virtual set_completion :
        int -> (Zed_utf8.t * Zed_utf8.t) list -> unit
      method set_prompt : LTerm_read_line.prompt React.signal -> unit
      method show : unit Lwt.t
      method virtual show_box : bool
      method size : LTerm_geom.size React.signal
      method virtual stylise : bool -> LTerm_text.t * int
    end
end