sig
  type t = Evas.obj
  type box_data
  type box_layout = Evas_object.t -> Evas_object.box_data -> unit
  type 'a event_cb = Evas.t -> Evas_object.t -> '-> unit
  val rectangle_add : Evas.t -> Evas_object.t
  val box_layout_flow_horizontal :
    Evas_object.t -> Evas_object.box_data -> unit
  val box_layout_horizontal : Evas_object.t -> Evas_object.box_data -> unit
  val box_layout_vertical : Evas_object.t -> Evas_object.box_data -> unit
  val box_layout_stack : Evas_object.t -> Evas_object.box_data -> unit
  val box_layout_homogeneous_vertical :
    Evas_object.t -> Evas_object.box_data -> unit
  val box_layout_homogeneous_horizontal :
    Evas_object.t -> Evas_object.box_data -> unit
  val box_layout_flow_vertical :
    Evas_object.t -> Evas_object.box_data -> unit
  val clip_set : Evas_object.t -> Evas_object.t -> unit
  val ref : Evas_object.t -> unit
  val unref : Evas_object.t -> unit
  val ref_get : Evas_object.t -> int
  val del : Evas_object.t -> unit
  val move : Evas_object.t -> int -> int -> unit
  val resize : Evas_object.t -> int -> int -> unit
  val geometry_get : Evas_object.t -> int * int * int * int
  val geometry_set : Evas_object.t -> int -> int -> int -> int -> unit
  val show : Evas_object.t -> unit
  val hide : Evas_object.t -> unit
  val visible_get : Evas_object.t -> bool
  val color_set : Evas_object.t -> int -> int -> int -> int -> unit
  val color_get : Evas_object.t -> int * int * int * int
  val evas_get : Evas_object.t -> Evas.t
  val clip_get : Evas_object.t -> Evas_object.t option
  val clip_unset : Evas_object.t -> unit
  val clipees_get : Evas_object.t -> Evas_object.t list
  val clipees_has : Evas_object.t -> bool
  val focus_set : Evas_object.t -> bool -> unit
  val focus_get : Evas_object.t -> bool
  val layer_set : Evas_object.t -> int -> unit
  val layer_get : Evas_object.t -> int
  val name_set : Evas_object.t -> string -> unit
  val name_get : Evas_object.t -> string
  val type_get : Evas_object.t -> string
  val raise : Evas_object.t -> unit
  val lower : Evas_object.t -> unit
  val stack_above : Evas_object.t -> Evas_object.t -> unit
  val stack_below : Evas_object.t -> Evas_object.t -> unit
  val above_get : Evas_object.t -> Evas_object.t option
  val below_get : Evas_object.t -> Evas_object.t option
  val event_callback_add_mouse_in :
    Evas_object.t -> Evas_event.mouse_in Evas_object.event_cb -> unit
  val event_callback_add_mouse_out :
    Evas_object.t -> Evas_event.mouse_out Evas_object.event_cb -> unit
  val event_callback_add_mouse_down :
    Evas_object.t -> Evas_event.mouse_down Evas_object.event_cb -> unit
  val event_callback_add_mouse_up :
    Evas_object.t -> Evas_event.mouse_up Evas_object.event_cb -> unit
  val event_callback_add_mouse_move :
    Evas_object.t -> Evas_event.mouse_move Evas_object.event_cb -> unit
  val event_callback_add_mouse_wheel :
    Evas_object.t -> Evas_event.mouse_wheel Evas_object.event_cb -> unit
  val event_callback_add_multi_down :
    Evas_object.t -> Evas_event.multi_down Evas_object.event_cb -> unit
  val event_callback_add_multi_up :
    Evas_object.t -> Evas_event.multi_up Evas_object.event_cb -> unit
  val event_callback_add_multi_move :
    Evas_object.t -> Evas_event.multi_move Evas_object.event_cb -> unit
  val event_callback_add_free :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_key_down :
    Evas_object.t -> Evas_event.key_down Evas_object.event_cb -> unit
  val event_callback_add_key_up :
    Evas_object.t -> Evas_event.key_up Evas_object.event_cb -> unit
  val event_callback_add_focus_in :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_focus_out :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_show :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_hide :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_move :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_resize :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_restack :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_del :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_hold :
    Evas_object.t -> Evas_event.hold Evas_object.event_cb -> unit
  val event_callback_add_changed_size_hints :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_image_preloaded :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_add_image_unloaded :
    Evas_object.t -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_mouse_in :
    Evas_object.t ->
    Evas.callback_priority ->
    Evas_event.mouse_in Evas_object.event_cb -> unit
  val event_callback_priority_add_mouse_out :
    Evas_object.t ->
    Evas.callback_priority ->
    Evas_event.mouse_out Evas_object.event_cb -> unit
  val event_callback_priority_add_mouse_down :
    Evas_object.t ->
    Evas.callback_priority ->
    Evas_event.mouse_down Evas_object.event_cb -> unit
  val event_callback_priority_add_mouse_up :
    Evas_object.t ->
    Evas.callback_priority ->
    Evas_event.mouse_up Evas_object.event_cb -> unit
  val event_callback_priority_add_mouse_move :
    Evas_object.t ->
    Evas.callback_priority ->
    Evas_event.mouse_move Evas_object.event_cb -> unit
  val event_callback_priority_add_mouse_wheel :
    Evas_object.t ->
    Evas.callback_priority ->
    Evas_event.mouse_wheel Evas_object.event_cb -> unit
  val event_callback_priority_add_multi_down :
    Evas_object.t ->
    Evas.callback_priority ->
    Evas_event.multi_down Evas_object.event_cb -> unit
  val event_callback_priority_add_multi_up :
    Evas_object.t ->
    Evas.callback_priority ->
    Evas_event.multi_up Evas_object.event_cb -> unit
  val event_callback_priority_add_multi_move :
    Evas_object.t ->
    Evas.callback_priority ->
    Evas_event.multi_move Evas_object.event_cb -> unit
  val event_callback_priority_add_free :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_key_down :
    Evas_object.t ->
    Evas.callback_priority ->
    Evas_event.key_down Evas_object.event_cb -> unit
  val event_callback_priority_add_key_up :
    Evas_object.t ->
    Evas.callback_priority -> Evas_event.key_up Evas_object.event_cb -> unit
  val event_callback_priority_add_focus_in :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_focus_out :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_show :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_hide :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_move :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_resize :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_restack :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_del :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_hold :
    Evas_object.t ->
    Evas.callback_priority -> Evas_event.hold Evas_object.event_cb -> unit
  val event_callback_priority_add_changed_size_hints :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_image_preloaded :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val event_callback_priority_add_image_unloaded :
    Evas_object.t ->
    Evas.callback_priority -> unit Evas_object.event_cb -> unit
  val pass_events_set : Evas_object.t -> bool -> unit
  val pass_events_get : Evas_object.t -> bool
  val repeat_events_set : Evas_object.t -> bool -> unit
  val repeat_events_get : Evas_object.t -> bool
  val propagate_events_set : Evas_object.t -> bool -> unit
  val propagate_events_get : Evas_object.t -> bool
  val freeze_events_set : Evas_object.t -> bool -> unit
  val freeze_events_get : Evas_object.t -> bool
  val map_enable_set : Evas_object.t -> bool -> unit
  val map_enable_get : Evas_object.t -> bool
  val map_set : Evas_object.t -> Evas.map -> unit
  val map_get : Evas_object.t -> Evas.map
  type size_hint =
      [ `align of float
      | `center
      | `expand
      | `fill
      | `halign of float
      | `hcenter
      | `hexpand
      | `hfill
      | `hweight of float
      | `hweight0
      | `valign of float
      | `vcenter
      | `vexpand
      | `vfill
      | `vweight of float
      | `vweight0
      | `weight of float
      | `weight0 ]
  val size_hint_min_get : Evas_object.t -> int * int
  val size_hint_min_set : Evas_object.t -> int -> int -> unit
  val size_hint_max_get : Evas_object.t -> int * int
  val size_hint_max_set : Evas_object.t -> int -> int -> unit
  val size_hint_display_mode_get : Evas_object.t -> Evas.display_mode
  val size_hint_display_mode_set : Evas_object.t -> Evas.display_mode -> unit
  val size_hint_request_get : Evas_object.t -> int * int
  val size_hint_request_set : Evas_object.t -> int -> int -> unit
  val size_hint_aspect_get : Evas_object.t -> Evas.aspect_control * int * int
  val size_hint_aspect_set :
    Evas_object.t -> Evas.aspect_control -> int -> int -> unit
  val size_hint_align_get : Evas_object.t -> float * float
  val size_hint_align_set : Evas_object.t -> float -> float -> unit
  val size_hint_weight_get : Evas_object.t -> float * float
  val size_hint_weight_set : Evas_object.t -> float -> float -> unit
  val size_hint_padding_get : Evas_object.t -> int * int * int * int
  val size_hint_padding_set :
    Evas_object.t -> int -> int -> int -> int -> unit
  val size_hint_set : Evas_object.t -> Evas_object.size_hint list -> unit
  type pointer_mode = [ `autograb | `nograb | `nograb_no_repeat_updown ]
  val pointer_mode_set : Evas_object.t -> Evas_object.pointer_mode -> unit
  val pointer_mode_get : Evas_object.t -> Evas_object.pointer_mode
  val anti_alias_set : Evas_object.t -> bool -> unit
  val anti_alias_get : Evas_object.t -> bool
  val scale_set : Evas_object.t -> float -> unit
  val scale_get : Evas_object.t -> float
  val render_op_set : Evas_object.t -> Evas.render_op -> unit
  val render_op_get : Evas_object.t -> Evas.render_op
  val precise_is_inside_set : Evas_object.t -> bool -> unit
  val precise_is_inside_get : Evas_object.t -> bool
  val static_clip_set : Evas_object.t -> bool -> unit
  val static_clip_get : Evas_object.t -> bool
  val name_find : Evas.t -> string -> Evas_object.t option
  val name_child_find :
    Evas_object.t -> string -> int -> Evas_object.t option
  val top_at_xy_get :
    Evas.t -> int -> int -> bool -> bool -> Evas_object.t option
  val top_at_pointer_get : Evas.t -> Evas_object.t option
  val top_in_rectangle_get :
    Evas.t ->
    int -> int -> int -> int -> bool -> bool -> Evas_object.t option
  val bottom_get : Evas.t -> Evas_object.t option
  val top_get : Evas.t -> Evas_object.t option
  val line_add : Evas.t -> Evas.obj
  val line_xy_set : Evas.obj -> int -> int -> int -> int -> unit
  val line_xy_get : Evas.obj -> int * int * int * int
end