/* 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(e5e1be26-a3d4-49b3-8d9f-c1df5192b364)]
interface nsITelephonyCallInfo : nsISupports
{
  /**
   * Indicate the RIL client, 0 ~ (number of client - 1).
   */
  readonly attribute unsigned long clientId;

  /**
   * Call identifier assigned by the RIL.
   */
  readonly attribute unsigned long callIndex;

  /**
   * One of the nsITelephonyService::CALL_STATE_* values.
   */
  readonly attribute unsigned short callState;

  /**
   * The disconnectedReason of a call is defualt to an empty string when the
   * call is "not disconnected", but once the call becomes "disconnected" the
   * disconnectedReason should be a non-empty string no matter the call is
   * disconnected for a noraml reason or an error.
   */
  readonly attribute DOMString disconnectedReason;

  /**
   * Number of the other party.
   */
  readonly attribute DOMString number;

  /**
   * Presentation of the call number.
   * One of the nsITelephonyService::CALL_PRESENTATION_* values.
   */
  readonly attribute unsigned short numberPresentation;

  /**
   * Name of the other party.
   */
  readonly attribute DOMString name;

  /**
   * Presentation of the call name.
   * One of the nsITelephonyService::CALL_PRESENTATION_* values.
   */
  readonly attribute unsigned short namePresentation;

  /**
   * Indicates whether this call is outgoing or incoming.
   */
  readonly attribute boolean isOutgoing;

  /**
   * Indicates whether this call is an emergency call.
   */
  readonly attribute boolean isEmergency;

  /**
   * Indicates whether this call is a conference call.
   */
  readonly attribute boolean isConference;

  /**
   * Indicates whether this call can be switched between states of
   * nsITelephonyService::CALL_STATE_CONNECTED and
   * nsITelephonyService::CALL_STATE_HELD.
   */
  readonly attribute boolean isSwitchable;

  /**
   * Indicates whether this call be be added into a conference.
   */
  readonly attribute boolean isMergeable;
};
