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

// If this is changed, change the WebIDL dictionary as well.
dictionary MmsAttachment
{
  DOMString? id;
  DOMString? location;
  nsIDOMBlob content; // If the content blob is a text/plain type, the encoding
                      // for text should always be "utf-8".
};

dictionary MmsDeliveryInfo
{
  DOMString? receiver;
  DOMString? deliveryStatus;
  jsval      deliveryTimestamp; // Date object; null if not available (e.g.,
                                // |delivery| = "received" or not yet delivered).
  DOMString? readStatus;
  jsval      readTimestamp; // Date object. null if not available (e.g.,
                            // |delivery| = "received" or not yet read).
};

[scriptable, builtinclass, uuid(82ca2465-f967-4107-a4da-65b7a15d5dba)]
interface nsIDOMMozMmsMessage : nsISupports
{
  /**
   * |type| is always "mms".
   */
  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 "not-downloaded", "received", "sending", "sent" or "error".
   */
  readonly attribute DOMString delivery;

  [implicit_jscontext]
  readonly attribute jsval     deliveryInfo;   // MmsDeliveryInfo[]

  readonly attribute DOMString sender;

  [implicit_jscontext]
  readonly attribute jsval     receivers;      // DOMString[]

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

  readonly attribute boolean   read;
  readonly attribute DOMString subject;
  readonly attribute DOMString smil;

  [implicit_jscontext]
  readonly attribute jsval     attachments;    // MmsAttachment[]

  [implicit_jscontext]
  readonly attribute jsval     expiryDate;     // Date object
                                               // Expiry date for an MMS to be
                                               // manually downloaded.

  // Request read report from sender or not.
  readonly attribute boolean   readReportRequested;
};
