sig
  type switch
  val register :
    LTerm_widget.switch option -> 'Lwt_sequence.t -> '-> unit
  val stop : LTerm_widget.switch -> unit
  val exec_callbacks : ('-> unit) Lwt_sequence.t -> '-> unit
  val exec_filters : ('-> bool) Lwt_sequence.t -> '-> bool
  class t :
    string ->
    object
      method allocation : LTerm_geom.rect
      method can_focus : bool
      method children : LTerm_widget.t list
      method cursor_position : LTerm_geom.coord option
      method draw : LTerm_draw.context -> LTerm_widget.t -> unit
      method on_event :
        ?switch:LTerm_widget.switch -> (LTerm_event.t -> bool) -> unit
      method parent : LTerm_widget.t option
      method queue_draw : unit
      method resource_class : string
      method resources : LTerm_resources.t
      method send_event : LTerm_event.t -> unit
      method set_allocation : LTerm_geom.rect -> unit
      method set_parent : LTerm_widget.t option -> unit
      method set_queue_draw : (unit -> unit) -> unit
      method set_resource_class : string -> unit
      method set_resources : LTerm_resources.t -> unit
      method size_request : LTerm_geom.size
      method update_resources : unit
    end
  class label :
    string ->
    object
      method allocation : LTerm_geom.rect
      method can_focus : bool
      method children : t list
      method cursor_position : LTerm_geom.coord option
      method draw : LTerm_draw.context -> t -> unit
      method on_event : ?switch:switch -> (LTerm_event.t -> bool) -> unit
      method parent : t option
      method queue_draw : unit
      method resource_class : string
      method resources : LTerm_resources.t
      method send_event : LTerm_event.t -> unit
      method set_allocation : LTerm_geom.rect -> unit
      method set_parent : t option -> unit
      method set_queue_draw : (unit -> unit) -> unit
      method set_resource_class : string -> unit
      method set_resources : LTerm_resources.t -> unit
      method set_text : string -> unit
      method size_request : LTerm_geom.size
      method text : string
      method update_resources : unit
    end
  exception Out_of_range
  class type box =
    object
      method add : ?position:int -> ?expand:bool -> #LTerm_widget.t -> unit
      method allocation : LTerm_geom.rect
      method can_focus : bool
      method children : t list
      method cursor_position : LTerm_geom.coord option
      method draw : LTerm_draw.context -> t -> unit
      method on_event : ?switch:switch -> (LTerm_event.t -> bool) -> unit
      method parent : t option
      method queue_draw : unit
      method remove : #LTerm_widget.t -> unit
      method resource_class : string
      method resources : LTerm_resources.t
      method send_event : LTerm_event.t -> unit
      method set_allocation : LTerm_geom.rect -> unit
      method set_parent : t option -> unit
      method set_queue_draw : (unit -> unit) -> unit
      method set_resource_class : string -> unit
      method set_resources : LTerm_resources.t -> unit
      method size_request : LTerm_geom.size
      method update_resources : unit
    end
  class hbox : box
  class vbox : box
  class frame :
    object
      method allocation : LTerm_geom.rect
      method can_focus : bool
      method children : t list
      method cursor_position : LTerm_geom.coord option
      method draw : LTerm_draw.context -> t -> unit
      method empty : unit
      method on_event : ?switch:switch -> (LTerm_event.t -> bool) -> unit
      method parent : t option
      method queue_draw : unit
      method resource_class : string
      method resources : LTerm_resources.t
      method send_event : LTerm_event.t -> unit
      method set : #LTerm_widget.t -> unit
      method set_allocation : LTerm_geom.rect -> unit
      method set_parent : t option -> unit
      method set_queue_draw : (unit -> unit) -> unit
      method set_resource_class : string -> unit
      method set_resources : LTerm_resources.t -> unit
      method size_request : LTerm_geom.size
      method update_resources : unit
    end
  class hline : t
  class vline : t
  class button :
    string ->
    object
      method allocation : LTerm_geom.rect
      method can_focus : bool
      method children : t list
      method cursor_position : LTerm_geom.coord option
      method draw : LTerm_draw.context -> t -> unit
      method label : string
      method on_click : ?switch:LTerm_widget.switch -> (unit -> unit) -> unit
      method on_event : ?switch:switch -> (LTerm_event.t -> bool) -> unit
      method parent : t option
      method queue_draw : unit
      method resource_class : string
      method resources : LTerm_resources.t
      method send_event : LTerm_event.t -> unit
      method set_allocation : LTerm_geom.rect -> unit
      method set_label : string -> unit
      method set_parent : t option -> unit
      method set_queue_draw : (unit -> unit) -> unit
      method set_resource_class : string -> unit
      method set_resources : LTerm_resources.t -> unit
      method size_request : LTerm_geom.size
      method update_resources : unit
    end
  val run :
    LTerm.t ->
    ?save_state:bool ->
    ?load_resources:bool ->
    ?resources_file:string -> #LTerm_widget.t -> 'Lwt.t -> 'Lwt.t
end