/* 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, uuid(0f3dbcd1-9f7b-40a8-aa3c-b5701978ec53)]
interface nsIIccContact : nsISupports
{
  /**
   * The unique identifier of this ICC Contact.
   *
   * Note: This id is composed of the iccid and its record index of EF_ADN.
   */
  readonly attribute DOMString id;

  /**
   * Name list.
   *
   * The container of Alpha-Id in EF_ADN and Second Name in EF_SNE of this contact,
   * where EF_SNE provides the possibility to store a name in different language.
   *
   * @see 10.2.1 Support of two name fields per entry, 3GPP TS 21.111.
   *
   * @param aCount
   *        The number of names.
   *
   * @returns the array of names.
   */
  void getNames([optional] out unsigned long aCount,
                [array, size_is(aCount), retval] out wstring aNames);

  /**
   * Phone number list.
   *
   * The container of the dialing numbers of this contact in EF_ADN and EF_ANR.
   *
   * @see 10.2.2 Support of multiple phone numbers per entry, 3GPP TS 21.111.
   *
   * @param aCount
   *        The number of phone numbers.
   *
   * @returns the array of phone numbers.
   */
  void getNumbers([optional] out unsigned long aCount,
                  [array, size_is(aCount), retval] out wstring aNumbers);

  /**
   * Email list.
   *
   * The container of the emails of this contact in EF_EMAIL.
   *
   * @param aCount
   *        The number of emails.
   *
   * @returns the array of emails.
   */
  void getEmails([optional] out unsigned long aCount,
                 [array, size_is(aCount), retval] out wstring aEmails);
};