sig
  val cache_all_flush : unit -> unit
  val coords_finger_size_adjust : int -> int -> int * int
  type focus_autoscroll_mode = [ `bring_in | `none | `show ]
  type focus_direction =
      [ `direction_last | `down | `left | `next | `previous | `right | `up ]
  type focus_move_policy = [ `_in | `click | `key_only ]
  type focus_region_show_mode = [ `item | `widget ]
  type slider_indicator_visible_mode =
      [ `always | `default | `none | `on_focus ]
  type policy_quit = [ `last_window_closed | `last_window_hidden | `none ]
  type policy_exit = [ `none | `windows_del ]
  type policy_throttle = [ `config | `hidden_always | `never ]
  type glob_match_flags = [ `no_escape | `nocase | `path | `period ]
  type process_state = [ `background | `foreground ]
  type event_cb = Evas.obj -> Evas.obj -> Evas_event.t -> bool
  val init : unit -> unit
  val shutdown : unit -> unit
  val run : unit -> unit
  val exit : unit -> unit
  val policy_quit_set_bool : Elm.policy_quit -> bool
  val policy_quit_set : Elm.policy_quit -> unit
  val policy_exit_set_bool : Elm.policy_exit -> bool
  val policy_exit_set : Elm.policy_exit -> unit
  val policy_throttle_set_bool : Elm.policy_throttle -> bool
  val policy_throttle_set : Elm.policy_throttle -> unit
  val policy_quit_get : unit -> Elm.policy_quit
  val policy_exit_get : unit -> Elm.policy_exit
  val policy_throttle_get : unit -> Elm.policy_throttle
  val language_set : string -> unit
  val process_state_get : unit -> Elm.process_state
  val connect : 'Evas.Signal.t -> '-> Evas_object_smart.sig_with_cb
  type gesture_type =
      [ `first
      | `last
      | `momentum
      | `n_double_taps
      | `n_flicks
      | `n_lines
      | `n_long_taps
      | `n_taps
      | `n_triple_taps
      | `rotate
      | `zoom ]
  type gesture_state = [ `_end | `abort | `move | `start | `undefined ]
  type gesture_event_cb = Evas.ptr -> unit
  module Gesture_taps_info :
    sig
      type t = { y : int; n : int; timestamp : int; }
      val of_ptr : Evas.ptr -> Elm.Gesture_taps_info.t
    end
  module Gesture_momentum_info :
    sig
      type t = {
        x1 : int;
        y1 : int;
        x2 : int;
        y2 : int;
        tx : int;
        ty : int;
        mx : int;
        my : int;
        n : int;
      }
      val of_ptr : Evas.ptr -> Elm.Gesture_momentum_info.t
    end
  module Gesture_line_info :
    sig
      type t = { momentum : Elm.Gesture_momentum_info.t; angle : float; }
      val of_ptr : Evas.ptr -> Elm.Gesture_line_info.t
    end
  module Gesture_zoom_info :
    sig
      type t = { y : int; radius : int; zoom : float; momentum : float; }
      val of_ptr : Evas.ptr -> Elm.Gesture_zoom_info.t
    end
  module Gesture_rotate_info :
    sig
      type t = {
        y : int;
        radius : int;
        base_angle : float;
        angle : float;
        momentum : float;
      }
      val of_ptr : Evas.ptr -> Elm.Gesture_rotate_info.t
    end
  module Color_class : sig type t = { name : string; desc : string; } end
  type color_class = Elm.Color_class.t
  module Color_overlay :
    sig
      type t = {
        color_class : string;
        color_r : int;
        color_g : int;
        color_b : int;
        color_a : int;
        outline_r : int;
        outline_g : int;
        outline_b : int;
        outline_a : int;
        shadow_r : int;
        shadow_g : int;
        shadow_b : int;
        shadow_a : int;
      }
    end
  type color_overlay = Elm.Color_overlay.t
  type theme
  val need_efreet : unit -> bool
  val need_systray : unit -> bool
  val need_sys_notify : unit -> bool
  val need_eldbus : unit -> bool
  val need_ethumb : unit -> bool
  val need_web : unit -> bool
  type text_format = [ `markup_utf8 | `plain_utf8 ]
  type wrap_type = [ `char | `last | `mixed | `none | `word ]
  type input_panel_layout =
      [ `datetime
      | `email
      | `emoticon
      | `hex
      | `invalid
      | `ip
      | `month
      | `normal
      | `number
      | `numberonly
      | `password
      | `phonenumber
      | `terminal
      | `url
      | `voice ]
  type input_panel_lang = [ `alphabet | `automatic ]
  type autocapital_type = [ `allcharacter | `none | `sentence | `word ]
  type input_panel_return_key_type =
      [ `_done
      | `default
      | `go
      | `join
      | `login
      | `next
      | `search
      | `send
      | `signin ]
  type cnp_mode = [ `markup | `no_image | `plaintext ]
  type illume_command =
      [ `close | `focus_back | `focus_forward | `focus_home ]
  type transit
  type tooltip_orient =
      [ `bottom
      | `bottom_left
      | `bottom_right
      | `center
      | `last
      | `left
      | `none
      | `right
      | `top
      | `top_left
      | `top_right ]
  type tooltip_content_cb = Evas.obj -> Evas.obj -> Evas.obj option
  type 'a tooltip_item_content_cb =
      Evas.obj -> Evas.obj -> '-> Evas.obj option
  val player_add : Evas.obj -> Evas.obj
end