sig
  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 focus : LTerm_widget.t option LTerm_geom.directions
      method on_event :
        ?switch:LTerm_widget_callbacks.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_focus : LTerm_widget.t option LTerm_geom.directions -> 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 focus : t option LTerm_geom.directions
      method on_event :
        ?switch:LTerm_widget_callbacks.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_focus : t option LTerm_geom.directions -> 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 focus : t option LTerm_geom.directions
      method on_event :
        ?switch:LTerm_widget_callbacks.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_focus : t option LTerm_geom.directions -> 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 focus : t option LTerm_geom.directions
      method on_event :
        ?switch:LTerm_widget_callbacks.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_focus : t option LTerm_geom.directions -> 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 modal_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 focus : t option LTerm_geom.directions
      method on_event :
        ?switch:LTerm_widget_callbacks.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 : #-> unit
      method set_allocation : LTerm_geom.rect -> unit
      method set_focus : t option LTerm_geom.directions -> 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 focus : t option LTerm_geom.directions
      method label : string
      method on_click :
        ?switch:LTerm_widget_callbacks.switch -> (unit -> unit) -> unit
      method on_event :
        ?switch:LTerm_widget_callbacks.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_focus : t option LTerm_geom.directions -> 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
  class checkbutton :
    string ->
    bool ->
    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 focus : t option LTerm_geom.directions
      method label : string
      method on_click :
        ?switch:LTerm_widget_callbacks.switch -> (unit -> unit) -> unit
      method on_event :
        ?switch:LTerm_widget_callbacks.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_focus : t option LTerm_geom.directions -> 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 state : bool
      method update_resources : unit
    end
  class type ['a] radio =
    object method id : 'method off : unit method on : unit end
  class ['a] radiogroup :
    object
      method on_state_change :
        ?switch:LTerm_widget_callbacks.switch -> ('a option -> unit) -> unit
      method register_object : 'LTerm_widget.radio -> unit
      method state : 'a option
      method switch_to : '-> unit
    end
  class ['a] radiobutton :
    'LTerm_widget.radiogroup ->
    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 focus : t option LTerm_geom.directions
      method id : 'a
      method label : string
      method off : unit
      method on : unit
      method on_click :
        ?switch:LTerm_widget_callbacks.switch -> (unit -> unit) -> unit
      method on_event :
        ?switch:LTerm_widget_callbacks.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_focus : t option LTerm_geom.directions -> 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 state : bool
      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
  val run_modal :
    LTerm.t ->
    ?save_state:bool ->
    ?load_resources:bool ->
    ?resources_file:string ->
    LTerm_widget.t Lwt_react.event ->
    unit Lwt_react.event -> #LTerm_widget.t -> 'Lwt.t -> 'Lwt.t
  val prepare_simple_run :
    unit ->
    (#LTerm_widget.t -> 'Lwt.t) * (#LTerm_widget.t -> unit -> unit) *
    (?step:React.step -> unit -> unit) * ('-> unit)
end