/* 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"

%{C++
#define SMS_DATABASE_SERVICE_CID \
{ 0x2454c2a1, 0xefdd, 0x4d96,    \
{ 0x83, 0xbd, 0x51, 0xa2, 0x9a, 0x21, 0xf5, 0xab } }
#define SMS_DATABASE_SERVICE_CONTRACTID "@mozilla.org/sms/smsdatabaseservice;1"
%}

interface nsIDOMMozSmsFilter;
interface nsISmsRequest;

[scriptable, uuid(c2cb2af7-6b96-4915-bcc8-54ad705d6110)]
interface nsISmsDatabaseService : nsISupports
{
  // Takes some information required to save the message and returns its id.
  long saveReceivedMessage(in DOMString aSender, in DOMString aBody, in DOMString aMessageClass, in unsigned long long aDate);
  // Takes some information required to save the message and returns its id.
  long saveSentMessage(in DOMString aReceiver, in DOMString aBody, in unsigned long long aDate);
  void setMessageDeliveryStatus(in long aMessageId, in DOMString aDeliveryStatus);

  [binaryname(GetMessageMoz)]
  void getMessage(in long messageId, in nsISmsRequest request);
  void deleteMessage(in long messageId, in nsISmsRequest request);
  void createMessageList(in nsIDOMMozSmsFilter filter, in boolean reverse, in nsISmsRequest request);
  void getNextMessageInList(in long listId, in nsISmsRequest request);
  void clearMessageList(in long listId);
  void markMessageRead(in long messageId, in boolean value, in nsISmsRequest request);

  void getThreadList(in nsISmsRequest request);
};
