diff --git a/src/net/java/sip/communicator/service/protocol/event/MessageDeliveredEvent.java b/src/net/java/sip/communicator/service/protocol/event/MessageDeliveredEvent.java
new file mode 100644
index 000000000..0a61331ae
--- /dev/null
+++ b/src/net/java/sip/communicator/service/protocol/event/MessageDeliveredEvent.java
@@ -0,0 +1,69 @@
+/*
+ * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package net.java.sip.communicator.service.protocol.event;
+
+import java.util.*;
+import net.java.sip.communicator.service.protocol.*;
+
+/**
+ * MessageDeliveredEvents confirm successful delivery of an instant
+ * message.
+ *
+ * @author Emil Ivov
+ */
+public class MessageDeliveredEvent
+ extends EventObject
+{
+ /**
+ * The contact that has sent this message.
+ */
+ private Contact to = null;
+
+ /**
+ * A timestamp indicating the exact date when the event occurred.
+ */
+ private Date timestamp = null;
+
+ /**
+ * Creates a MessageDeliveredEvent representing delivery of the
+ * source message to the specified to contact.
+ *
+ * @param source the Message whose delivery this event represents.
+ * @param to the Contact that this message was sent to.
+ * @param timestamp a date indicating the exact moment when the event
+ * ocurred
+ */
+ public MessageDeliveredEvent(Message source, Contact to, Date timestamp)
+ {
+ super(source);
+
+ this.to = to;
+ this.timestamp = timestamp;
+ }
+
+ /**
+ * Returns a reference to the Contact that Message was
+ * sent to.
+ *
+ * @return a reference to the Contact that has send the
+ * Message whose reception this event represents.
+ */
+ public Contact getDestinationContact()
+ {
+ return to;
+ }
+
+ /**
+ * A timestamp indicating the exact date when the event ocurred.
+ * @return a Date indicating when the event ocurred.
+ */
+ public Date getTimestamp()
+ {
+ return timestamp;
+ }
+
+}
diff --git a/src/net/java/sip/communicator/service/protocol/event/MessageDeliveryFailedEvent.java b/src/net/java/sip/communicator/service/protocol/event/MessageDeliveryFailedEvent.java
new file mode 100644
index 000000000..e39548d85
--- /dev/null
+++ b/src/net/java/sip/communicator/service/protocol/event/MessageDeliveryFailedEvent.java
@@ -0,0 +1,97 @@
+/*
+ * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package net.java.sip.communicator.service.protocol.event;
+
+import java.util.*;
+import net.java.sip.communicator.service.protocol.*;
+
+/**
+ * MessageDeliveredEvents confirm successful delivery of an instant
+ * message.
+ *
+ * @author Emil Ivov
+ */
+public class MessageDeliveryFailedEvent
+ extends EventObject
+{
+ /**
+ * The contact that this message has been sent to.
+ */
+ private Contact to = null;
+
+
+ /**
+ * An error code indicating the reason for the failure of this delivery.
+ */
+ private int errorCode = -1;
+
+ /**
+ * A timestamp indicating the exact date when the event occurred.
+ */
+ private Date timestamp = null;
+
+
+ /**
+ * Creates a MessageDeliveryFailedEvent indicating failure of
+ * delivery of the source message to the specified to
+ * contact.
+ *
+ * @param source the Message whose delivery this event represents.
+ * @param to the Contact that this message was sent to.
+ * @param errorCode an errorCode indicating the reason of the failure.
+ * @param timestamp the exacte Date when it was determined that delivery
+ * had failed.
+ */
+ public MessageDeliveryFailedEvent(Message source,
+ Contact to,
+ int errorCode,
+ Date timestamp )
+ {
+ super(source);
+
+ this.to = to;
+
+ this.errorCode = errorCode;
+
+ this.timestamp = timestamp;
+ }
+ /**
+ * Returns a reference to the Contact that the source (failed)
+ * Message was sent to.
+ *
+ * @return a reference to the Contact that the source failed
+ * Message wwas sent to.
+ */
+ public Contact getDestinationContact()
+ {
+ return to;
+ }
+
+ /**
+ * Returns an error code descibing the reason for the failure of the
+ * message delivery.
+ * @return an error code descibing the reason for the failure of the
+ * message delivery.
+ */
+ public int getErrorCode()
+ {
+ return errorCode;
+ }
+
+
+ /**
+ * A timestamp indicating the exact date when the event ocurred (in this
+ * case it is the moment when it was determined that message delivery
+ * has failed).
+ * @return a Date indicating when the event ocurred.
+ */
+ public Date getTimestamp()
+ {
+ return timestamp;
+ }
+
+}
diff --git a/src/net/java/sip/communicator/service/protocol/event/MessageReceivedEvent.java b/src/net/java/sip/communicator/service/protocol/event/MessageReceivedEvent.java
new file mode 100644
index 000000000..91c19f5a0
--- /dev/null
+++ b/src/net/java/sip/communicator/service/protocol/event/MessageReceivedEvent.java
@@ -0,0 +1,67 @@
+/*
+ * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package net.java.sip.communicator.service.protocol.event;
+
+import java.util.*;
+import net.java.sip.communicator.service.protocol.*;
+
+/**
+ * MessageReceivedEvents indicate reception of an instant message.
+ *
+ * @author Emil Ivov
+ */
+public class MessageReceivedEvent
+ extends EventObject
+{
+ /**
+ * The contact that has sent this message.
+ */
+ private Contact from = null;
+
+ /**
+ * A timestamp indicating the exact date when the event occurred.
+ */
+ private Date timestamp = null;
+
+ /**
+ * Creates a MessageReceivedEvent representing reception of the
+ * source message received from the specified from
+ * contact.
+ *
+ * @param source the Message whose reception this event represents.
+ * @param from the Contact that has sent this message.
+ * @param timestamp the exact date when the event ocurred.
+ */
+ public MessageReceivedEvent(Message source, Contact from, Date timestamp)
+ {
+ super(source);
+
+ this.from = from;
+ this.timestamp = timestamp;
+ }
+
+ /**
+ * Returns a reference to the Contact that has send the
+ * Message whose reception this event represents.
+ *
+ * @return a reference to the Contact that has send the
+ * Message whose reception this event represents.
+ */
+ public Contact getSourceContact()
+ {
+ return from;
+ }
+
+ /**
+ * A timestamp indicating the exact date when the event ocurred.
+ * @return a Date indicating when the event ocurred.
+ */
+ public Date getTimestamp()
+ {
+ return timestamp;
+ }
+}