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

[scriptable, uuid(6fdb6007-51d0-456c-8b2e-dc0aea456298)]
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 long requestId, [optional] in unsigned long long processId);
  void deleteMessage(in long messageId, in long requestId, [optional] in unsigned long long processId);

  void createMessageList(in nsIDOMMozSmsFilter filter, in boolean reverse, in long requestId, [optional] in unsigned long long processId);
  void getNextMessageInList(in long listId, in long requestId, [optional] in unsigned long long processId);
  void clearMessageList(in long listId);
  void markMessageRead(in long messageId, in boolean value, in long requestId, [optional] in unsigned long long processId);
};
