/* 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 "domstubs.idl"

interface nsIArray;
interface nsIDOMContact;

[scriptable, uuid(eba48030-89e8-11e1-b0c4-0800200c9a66)]
interface nsIDOMContactAddress : nsISupports
{
  attribute DOMString type;
  attribute DOMString streetAddress;
  attribute DOMString locality;
  attribute DOMString region;
  attribute DOMString postalCode;
  attribute DOMString countryName;
};

[scriptable, uuid(e2cb19c0-e4aa-11e1-9b23-0800200c9a66)]
interface nsIDOMContactField : nsISupports
{
  attribute jsval type; // DOMString[] for primary/favorite (use:"PREF"), "home", "work", etc.
  attribute DOMString value;
};

[scriptable, uuid(ed0ab260-e4aa-11e1-9b23-0800200c9a66)]
interface nsIDOMContactTelField : nsIDOMContactField
{
  attribute DOMString carrier;
};

[scriptable, uuid(cb008c06-3bf8-495c-8865-f9ca1673a1e1)]
interface nsIDOMContactFindSortOptions : nsISupports
{
  attribute DOMString sortBy;       // "givenName" or "familyName"
  attribute DOMString sortOrder;    // e.g. "descending"
};

[scriptable, uuid(e13ca4c5-c9cd-40bb-95e9-b636d42f5edf)]
interface nsIDOMContactFindOptions : nsIDOMContactFindSortOptions
{
  attribute DOMString filterValue;  // e.g. "Tom"
  attribute DOMString filterOp;     // e.g. "contains"
  attribute jsval filterBy;         // DOMString[], e.g. ["givenName", "nickname"]
  attribute unsigned long filterLimit;
};

[scriptable, uuid(f0ddb360-e4aa-11e1-9b23-0800200c9a66)]
interface nsIDOMContactProperties : nsISupports
{
  attribute jsval         name;               // DOMString[]
  attribute jsval         honorificPrefix;    // DOMString[]
  attribute jsval         givenName;          // DOMString[]
  attribute jsval         additionalName;     // DOMString[]
  attribute jsval         familyName;         // DOMString[]
  attribute jsval         honorificSuffix;    // DOMString[]
  attribute jsval         nickname;           // DOMString[]
  attribute jsval         email;              // ContactField[]
  attribute jsval         photo;              // nsIDOMBlob[]
  attribute jsval         url;                // ContactField[]
  attribute jsval         category;           // DOMString[]
  attribute jsval         adr;                // ContactAddress[]
  attribute jsval         tel;                // ContactTelField[]
  attribute jsval         org;                // DOMString[]
  attribute jsval         jobTitle;           // DOMString[]
  attribute jsval         bday;               // Date
  attribute jsval         note;               // DOMString[]
  attribute jsval         impp;               // ContactField[]
  attribute jsval         anniversary;        // Date
  attribute jsval         sex;                // DOMString
  attribute jsval         genderIdentity;     // DOMString
};
