+/**
+ * modest_mail_operation_new:
+ * @id: a #ModestMailOperationId identification of operation type.
+ * @source: a #GObject which creates this new operation.
+ *
+ * Creates a new instance of class #ModestMailOperation, using parameters
+ * to initialize its private structure. @source parameter may be NULL.
+ **/
+ModestMailOperation* modest_mail_operation_new (ModestMailOperationTypeOperation type,
+ GObject *source);
+
+/**
+ * modest_mail_operation_new_with_error_handling:
+ * @id: a #ModestMailOperationId identification of operation type.
+ * @source: a #GObject which creates this new operation.
+ * @error_handler: a #ErrorCheckingUserCallback function to performs operations when
+ * an error occurs.
+ *
+ * Creates a new instance of class #ModestMailOperation, using parameters
+ * to initialize its private structure. @source parameter may be NULL.
+ * @error_handler can not be NULL, but it will be returned an mail operation
+ * object without error handling capability.
+ **/
+ModestMailOperation* modest_mail_operation_new_with_error_handling (ModestMailOperationTypeOperation op_type,
+ GObject *source,
+ ErrorCheckingUserCallback error_handler,
+ gpointer user_data);
+/**
+ * modest_mail_operation_execute_error_handler
+ * @self: a #ModestMailOperation
+ *
+ * Executes error handler if exists. The error handler is the one that
+ * MUST free the user data passed to the
+ * modest_mail_operation_new_with_error_handling constructor
+ **/
+void
+modest_mail_operation_execute_error_handler (ModestMailOperation *self);
+
+/**
+ * modest_mail_operation_get_type_operation
+ * @self: a #ModestMailOperation
+ *
+ * Gets the private op_type field of mail operation. This op_type
+ * identifies the class/type of mail operation.
+ **/
+ModestMailOperationTypeOperation
+modest_mail_operation_get_type_operation (ModestMailOperation *self);
+
+/**
+ * modest_mail_operation_is_mine
+ * @self: a #ModestMailOperation
+ * @source: a #GObject to check if it have created @self operation.
+ *
+ * Check if @source object its owner of @self mail operation.
+ *
+ * returns: TRUE if source its owner, FALSE otherwise.
+ **/
+gboolean
+modest_mail_operation_is_mine (ModestMailOperation *self,
+ GObject *me);
+
+/**
+ * modest_mail_operation_get_source
+ * @self: a #ModestMailOperation
+ *
+ * returns a new reference to the object that created the mail
+ * operation passed to the constructor, or NULL if none. The caller
+ * must free the new reference
+ **/
+GObject *
+modest_mail_operation_get_source (ModestMailOperation *self);