/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIDOMMozSmsMessage;
interface nsIDOMMozMmsMessage;
interface nsIDOMMozMobileMessageThread;
interface nsIDOMMozSmsSegmentInfo;

%{C++
#define MOBILE_MESSAGE_SERVICE_CID { 0x829c1dd6, 0x0466, 0x4591, { 0x83, 0x6f, 0xb8, 0xf6, 0xfd, 0x1f, 0x7b, 0xa5 } }
#define MOBILE_MESSAGE_SERVICE_CONTRACTID "@mozilla.org/mobilemessage/mobilemessageservice;1"
%}

[scriptable, builtinclass, uuid(67d038b2-0039-11e3-9fd3-83de190730f7)]
interface nsIMobileMessageService : nsISupports
{
  [implicit_jscontext]
  nsIDOMMozSmsMessage createSmsMessage(in long      id,
                                       in unsigned long long threadId,
                                       in DOMString iccId,
                                       in DOMString delivery,
                                       in DOMString deliveryStatus,
                                       in DOMString sender,
                                       in DOMString receiver,
                                       in DOMString body,
                                       in DOMString messageClass,
                                       in jsval     timestamp,
                                       in jsval     sentTimestamp,
                                       in jsval     deliveryTimestamp,
                                       in bool      read);

  [implicit_jscontext]
  nsIDOMMozMmsMessage createMmsMessage(in long      id,
                                       in unsigned long long threadId,
                                       in DOMString iccId,
                                       in DOMString delivery,
                                       in jsval     deliveryInfo,
                                       in DOMString sender,
                                       in jsval     receivers,
                                       in jsval     timestamp,
                                       in jsval     sentTimestamp,
                                       in boolean   read,
                                       in DOMString subject,
                                       in DOMString smil,
                                       in jsval     attachments,
                                       in jsval     expiryDate,
                                       in boolean   readReportRequested);

  nsIDOMMozSmsSegmentInfo createSmsSegmentInfo(in long segments,
                                               in long charsPerSegment,
                                               in long charsAvailableInLastSegment);

  [implicit_jscontext]
  nsIDOMMozMobileMessageThread createThread(in unsigned long long id,
                                            in jsval              participants,
                                            in jsval              timestamp,
                                            in DOMString          lastMessageSubject,
                                            in DOMString          body,
                                            in unsigned long long unreadCount,
                                            in DOMString          aLastMessageType);
};
