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

[scriptable, builtinclass, uuid(db9ff254-2745-11e3-aa37-8793b90fc643)]
interface nsIDOMMozSmsMessage : nsISupports
{
  /**
   * |type| is always "sms".
   */
  readonly attribute DOMString type;

  readonly attribute long      id;

  readonly attribute unsigned long long threadId;

  /**
   * Integrated Circuit Card Identifier.
   *
   * Will be null if ICC is not available.
   */
  readonly attribute DOMString iccId;

  /**
   * Should be "received", "sending", "sent" or "error".
   */
  readonly attribute DOMString delivery;

  /**
   * Possible delivery status values for above delivery states are:
   *
   * "received": "success"
   * "sending" : "pending", or "not-applicable" if the message was sent without
   *             status report requisition.
   * "sent"    : "pending", "success", "error", or "not-applicable"
   *             if the message was sent without status report requisition.
   * "error"   : "error"
   */
  readonly attribute DOMString deliveryStatus;

  readonly attribute DOMString sender;
  readonly attribute DOMString receiver;
  readonly attribute DOMString body;

  /**
   * Should be "normal", "class-0", "class-1", "class-2" or "class-3".
   */
  readonly attribute DOMString messageClass;

  [implicit_jscontext]
  readonly attribute jsval     timestamp; // Date object.

  [implicit_jscontext]
  readonly attribute jsval     deliveryTimestamp;
                               // Date object; null if not available (e.g.,
                               // |delivery| = "received" or not yet delivered).

  readonly attribute boolean   read;
};
