+/**
+ * @brief Sets @c ime_process_key_event_with_imengine_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @remarks The ime_process_key_event_cb() callback function is called when the key event
+ * is received from the external keyboard devices or ime_send_key_event() function.
+ *
+ * @param[in] callback_func @c ime_process_key_event_with_imengine_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_process_key_event_with_imengine_cb(ime_process_key_event_with_imengine_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_autocapital_type_set_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @remarks The ime_autocapital_type_set_cb() callback function is called when an optimization hint is set
+ *
+ * @param[in] callback_func @c ime_autocapital_type_set_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_autocapital_type_set_cb(ime_autocapital_type_set_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_prediction_allow_set_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @remarks The ime_prediction_allow_set_cb() callback function is called when an optimization hint is set
+ *
+ * @param[in] callback_func @c ime_prediction_allow_set_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_prediction_allow_set_cb(ime_prediction_allow_set_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_trigger_property_set_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_trigger_property_set_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_trigger_property_set_cb(ime_trigger_property_set_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_candidate_more_window_show_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_candidate_more_window_show_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_candidate_more_window_show_cb(ime_candidate_more_window_show_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_candidate_more_window_hide_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_candidate_more_window_hide_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_candidate_more_window_hide_cb(ime_candidate_more_window_hide_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_aux_select_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_aux_select_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_aux_select_cb(ime_aux_select_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_candidate_select_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_candidate_select_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_candidate_select_cb(ime_candidate_select_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_candidate_table_page_up_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_candidate_table_page_up_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_candidate_table_page_up_cb(ime_candidate_table_page_up_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_candidate_table_page_down_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_candidate_table_page_down_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_candidate_table_page_down_cb(ime_candidate_table_page_down_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_candidate_table_page_size_chaned_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_candidate_table_page_size_chaned_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_candidate_table_page_size_chaned_cb(ime_candidate_table_page_size_chaned_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_candidate_item_layout_set_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_candidate_item_layout_set_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_candidate_item_layout_set_cb(ime_candidate_item_layout_set_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_displayed_candidate_number_chaned_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_displayed_candidate_number_chaned_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_displayed_candidate_number_chaned_cb(ime_displayed_candidate_number_chaned_cb callback_func, void *user_data);
+
+/**
+ * @brief Sets @c ime_candidate_item_long_pressed_cb() event callback function.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] callback_func @c ime_candidate_item_long_pressed_cb() event callback function
+ * @param[in] user_data User data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @post The ime_run() function should be called to start to run IME application's main loop.
+ *
+ * @see ime_run()
+ */
+int ime_event_set_candidate_item_long_pressed_cb(ime_candidate_item_long_pressed_cb callback_func, void *user_data);
+
+/**
+ * @brief Requests to show aux string.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ */
+int ime_show_aux_string(void);
+
+/**
+ * @brief Requests to hide aux string.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ */
+int ime_hide_aux_string(void);
+
+/**
+ * @brief Requests to show lookup table.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ */
+int ime_show_lookup_table(void);
+
+/**
+ * @brief Requests to hide lookup table.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ */
+int ime_hide_lookup_table(void);
+
+/**
+ * @brief Requests to update preedit caret.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] caret The preedit caret
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int ime_update_preedit_caret(int caret);
+
+/**
+ * @brief Requests to update preedit string with commit string.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] preedit The UTF-8 string to be updated in preedit
+ * @param[in] commit The UTF-8 string to be committed
+ * @param[in] attrs @a preedit can be composed of multiple string attributes: underline, highlight color and reversal color
+ * @param[in] caret The preedit caret
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int ime_update_preedit_string_with_commit(const char *preedit, const char *commit, scim::AttributeList &attrs, int caret);
+
+/**
+ * @brief Requests to update aux string.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] str The aux string
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int ime_update_aux_string(const char *str);
+
+/**
+ * @brief Requests to update recapture string.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] offset The offset value from the cursor position
+ * @param[in] len The length of the preedit
+ * @param[in] preedit The UTF-8 string to be updated in preedit
+ * @param[in] commit The UTF-8 string to be committed
+ * @param[in] attrs @a preedit can be composed of multiple string attributes: underline, highlight color and reversal color
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int ime_recapture_string(int offset, int len, const char *preedit, const char *commit, scim::AttributeList &attrs);
+
+/**
+ * @brief Requests to update lookup table.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] table The lookup table
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ */
+int ime_update_lookup_table(scim::LookupTable &table);
+
+/**
+ * @brief Requests to register properties.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] properties The property list
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ */
+int ime_register_properties(scim::PropertyList &properties);
+
+/**
+ * @brief Requests to update property.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] property The imengine property
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ */
+int ime_update_property(scim::Property &property);
+
+/**
+ * @brief Requests to expand candidate.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ */
+int ime_expand_candidate(void);
+
+/**
+ * @brief Requests to contract candidate.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ */
+int ime_contract_candidate(void);
+
+/**
+ * @brief Requests to set candidate sytle.
+ *
+ * @since_tizen 5.5
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] portrait_line The candidate portrait line
+ * @param[in] mode The candidate mode
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ * @retval #IME_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int ime_set_candidate_style(scim::ISF_CANDIDATE_PORTRAIT_LINE_T portrait_line, scim::ISF_CANDIDATE_MODE_T mode);
+