sig
  type t
  type connection
  type action = Bogue.Widget.t -> Bogue.Widget.t -> Tsdl.Sdl.event -> unit
  type action_priority = Forget | Join | Replace | Main
  val connect :
    Bogue.Widget.t ->
    Bogue.Widget.t ->
    Bogue.Widget.action ->
    ?priority:Bogue.Widget.action_priority ->
    ?update_target:bool ->
    ?join:Bogue.Widget.connection ->
    Bogue.Trigger.t list -> Bogue.Widget.connection
  val connect_main :
    Bogue.Widget.t ->
    Bogue.Widget.t ->
    Bogue.Widget.action ->
    ?update_target:bool ->
    ?join:Bogue.Widget.connection ->
    Bogue.Trigger.t list -> Bogue.Widget.connection
  val add_connection : Bogue.Widget.t -> Bogue.Widget.connection -> unit
  val update : Bogue.Widget.t -> unit
  val on_release : release:(Bogue.Widget.t -> unit) -> Bogue.Widget.t -> unit
  val on_button_release :
    release:(Bogue.Widget.t -> unit) -> Bogue.Widget.t -> unit
  val on_click : click:(Bogue.Widget.t -> unit) -> Bogue.Widget.t -> unit
  val mouse_over :
    ?enter:(Bogue.Widget.t -> unit) ->
    ?leave:(Bogue.Widget.t -> unit) -> Bogue.Widget.t -> unit
  val box :
    ?w:int -> ?h:int -> ?style:Bogue.Style.t -> unit -> Bogue.Widget.t
  val check_box :
    ?state:bool -> ?style:Bogue.Check.style -> unit -> Bogue.Widget.t
  val set_check_state : Bogue.Widget.t -> bool -> unit
  val text_display : ?w:int -> ?h:int -> string -> Bogue.Widget.t
  val rich_text :
    ?size:int ->
    ?w:int -> ?h:int -> Bogue.Text_display.words list -> Bogue.Widget.t
  val verbatim : string -> Bogue.Widget.t
  val html : ?w:int -> ?h:int -> string -> Bogue.Widget.t
  val label :
    ?size:int ->
    ?fg:Bogue.Draw.color ->
    ?font:Bogue.Label.font ->
    ?align:Bogue.Draw.align -> string -> Bogue.Widget.t
  val icon : ?size:int -> ?fg:Bogue.Draw.color -> string -> Bogue.Widget.t
  val empty : w:int -> h:int -> unit -> Bogue.Widget.t
  val image :
    ?w:int ->
    ?h:int ->
    ?bg:Bogue.Draw.color ->
    ?noscale:bool -> ?angle:float -> string -> Bogue.Widget.t
  val image_from_svg :
    ?w:int -> ?h:int -> ?bg:Bogue.Draw.color -> string -> Bogue.Widget.t
  val image_copy : ?rotate:float -> Bogue.Widget.t -> Bogue.Widget.t
  val text_input :
    ?text:string ->
    ?prompt:string ->
    ?size:int ->
    ?filter:Bogue.Text_input.filter ->
    ?max_size:int -> unit -> Bogue.Widget.t
  val button :
    ?kind:Bogue.Button.kind ->
    ?label:Bogue.Label.t ->
    ?label_on:Bogue.Label.t ->
    ?label_off:Bogue.Label.t ->
    ?fg:Bogue.Draw.color ->
    ?bg_on:Bogue.Style.background ->
    ?bg_off:Bogue.Style.background ->
    ?bg_over:Bogue.Style.background option ->
    ?state:bool ->
    ?border_radius:int ->
    ?border_color:Bogue.Draw.color ->
    ?action:(bool -> unit) -> string -> Bogue.Widget.t
  val slider :
    ?priority:Bogue.Widget.action_priority ->
    ?step:int ->
    ?value:int ->
    ?kind:Bogue.Slider.kind ->
    ?var:(int Bogue.Avar.t, int) Bogue.Tvar.t ->
    ?length:int ->
    ?thickness:int ->
    ?tick_size:int -> ?lock:bool -> ?w:int -> ?h:int -> int -> Bogue.Widget.t
  val slider_with_action :
    ?priority:Bogue.Widget.action_priority ->
    ?step:int ->
    ?kind:Bogue.Slider.kind ->
    value:int ->
    ?length:int ->
    ?thickness:int ->
    ?tick_size:int -> action:(int -> unit) -> int -> Bogue.Widget.t
  val sdl_area :
    w:int -> h:int -> ?style:Bogue.Style.t -> unit -> Bogue.Widget.t
  val check_box_with_label : string -> Bogue.Widget.t * Bogue.Widget.t
  val get_state : Bogue.Widget.t -> bool
  val get_text : Bogue.Widget.t -> string
  val size : Bogue.Widget.t -> int * int
  val set_state : Bogue.Widget.t -> bool -> unit
  val set_text : Bogue.Widget.t -> string -> unit
  val set_cursor : Bogue.Widget.t -> Tsdl.Sdl.cursor option -> unit
  val get_box : Bogue.Widget.t -> Bogue.Box.t
  val get_check : Bogue.Widget.t -> Bogue.Check.t
  val get_label : Bogue.Widget.t -> Bogue.Label.t
  val get_button : Bogue.Widget.t -> Bogue.Button.t
  val get_slider : Bogue.Widget.t -> Bogue.Slider.t
  val get_text_display : Bogue.Widget.t -> Bogue.Text_display.t
  val get_text_input : Bogue.Widget.t -> Bogue.Text_input.t
  val get_image : Bogue.Widget.t -> Bogue.Image.t
  val get_sdl_area : Bogue.Widget.t -> Bogue.Sdl_area.t
  val map_text : (string -> string) -> Bogue.Widget.action
end