/* 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(bea56ecf-472d-4b6b-b462-66753f3c1179)]
interface nsIMobileMessageService : nsISupports
{
  [implicit_jscontext]
  nsIDOMMozSmsMessage createSmsMessage(in long      id,
                                       in unsigned long long threadId,
                                       in DOMString delivery,
                                       in DOMString deliveryStatus,
                                       in DOMString sender,
                                       in DOMString receiver,
                                       in DOMString body,
                                       in DOMString messageClass,
                                       in jsval     timestamp,
                                       in bool      read);

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

  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          body,
                                            in unsigned long long unreadCount,
                                            in DOMString          aLastMessageType);
};
