/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM flockIPeopleUtils.idl
 */

#ifndef __gen_flockIPeopleUtils_h__
#define __gen_flockIPeopleUtils_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

#ifndef __gen_flockIPerson_h__
#include "flockIPerson.h"
#endif

#ifndef __gen_nsISimpleEnumerator_h__
#include "nsISimpleEnumerator.h"
#endif

#ifndef __gen_flockISocialWebService_h__
#include "flockISocialWebService.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif

/* starting interface:    flockIPeopleUtils */
#define FLOCKIPEOPLEUTILS_IID_STR "9afb1665-34cc-4878-8522-3c9b8ab4d4d5"

#define FLOCKIPEOPLEUTILS_IID \
  {0x9afb1665, 0x34cc, 0x4878, \
    { 0x85, 0x22, 0x3c, 0x9b, 0x8a, 0xb4, 0xd4, 0xd5 }}

class NS_NO_VTABLE flockIPeopleUtils : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIPEOPLEUTILS_IID)

  /**
   * Add a person to the friends list of a given account, on the local
   * storage. This function should only be called by back-end services,
   * and only to locally add people that are on the friends list of the
   * user on the server.
   *
   * @param aAccount : the account to add the person to
   * @param aPerson : the new person to be added
   *
   * @return the id of the newly added person in the storage layer
   */
  /* AString addPerson (in flockISocialWebServiceAccount aAccount, in flockIPerson aPerson); */
  NS_IMETHOD AddPerson(flockISocialWebServiceAccount *aAccount, flockIPerson *aPerson, nsAString & _retval) = 0;

  /**
   * Remove a person from the friends list of a given account, on the local
   * storage. This function should only be called by back-end services,
   * and only to locally remove people that are no longer on the friends list
   * of the user on the server.
   *
   * @param aAccount : the account to remove the person from
   * @param aPerson : the person to be removed
   *
   * @return nothing
   */
  /* void removePerson (in flockISocialWebServiceAccount aAccount, in flockIPerson aPerson); */
  NS_IMETHOD RemovePerson(flockISocialWebServiceAccount *aAccount, flockIPerson *aPerson) = 0;

  /**
   * Retrieves the person represented by aPersonUrn
   *
   * @param aPersonUrn : the urn of Person to return
   *
   * @return flockIPerson representation of person
   */
  /* flockIPerson getPerson (in AString aPersonUrn); */
  NS_IMETHOD GetPerson(const nsAString & aPersonUrn, flockIPerson **_retval) = 0;

  /**
   * Increments the number of unseen media for a given friend. Currently
   * the UI is not exposing the number, only showing "new stuff/no new stuff".
   *
   * @param aAccount : the account to which the person is friend of
   * @param aPersonId : the id of the person who has new media
   * @param aCount : the number of new unseen media (NOT the total number)
   * @param aLatest : the timestamp of the most recent unseen media
   *                  for that person
   *
   * @return nothing
   */
  /* void incrementMedia (in flockISocialWebServiceAccount aAccount, in AString aPersonId, in long aCount, in long long aLatest); */
  NS_IMETHOD IncrementMedia(flockISocialWebServiceAccount *aAccount, const nsAString & aPersonId, PRInt32 aCount, PRInt64 aLatest) = 0;

  /**
   * Cause the people icon in the Flockbar (close to the favorites toolbar)
   * to light up, indicating new information on the user's account.
   * It will stay orange until the user opens the people sidebar.
   *
   * @return nothing
   */
  /* void lightPeopleIcon (); */
  NS_IMETHOD LightPeopleIcon(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIPEOPLEUTILS \
  NS_IMETHOD AddPerson(flockISocialWebServiceAccount *aAccount, flockIPerson *aPerson, nsAString & _retval); \
  NS_IMETHOD RemovePerson(flockISocialWebServiceAccount *aAccount, flockIPerson *aPerson); \
  NS_IMETHOD GetPerson(const nsAString & aPersonUrn, flockIPerson **_retval); \
  NS_IMETHOD IncrementMedia(flockISocialWebServiceAccount *aAccount, const nsAString & aPersonId, PRInt32 aCount, PRInt64 aLatest); \
  NS_IMETHOD LightPeopleIcon(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIPEOPLEUTILS(_to) \
  NS_IMETHOD AddPerson(flockISocialWebServiceAccount *aAccount, flockIPerson *aPerson, nsAString & _retval) { return _to AddPerson(aAccount, aPerson, _retval); } \
  NS_IMETHOD RemovePerson(flockISocialWebServiceAccount *aAccount, flockIPerson *aPerson) { return _to RemovePerson(aAccount, aPerson); } \
  NS_IMETHOD GetPerson(const nsAString & aPersonUrn, flockIPerson **_retval) { return _to GetPerson(aPersonUrn, _retval); } \
  NS_IMETHOD IncrementMedia(flockISocialWebServiceAccount *aAccount, const nsAString & aPersonId, PRInt32 aCount, PRInt64 aLatest) { return _to IncrementMedia(aAccount, aPersonId, aCount, aLatest); } \
  NS_IMETHOD LightPeopleIcon(void) { return _to LightPeopleIcon(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIPEOPLEUTILS(_to) \
  NS_IMETHOD AddPerson(flockISocialWebServiceAccount *aAccount, flockIPerson *aPerson, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddPerson(aAccount, aPerson, _retval); } \
  NS_IMETHOD RemovePerson(flockISocialWebServiceAccount *aAccount, flockIPerson *aPerson) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemovePerson(aAccount, aPerson); } \
  NS_IMETHOD GetPerson(const nsAString & aPersonUrn, flockIPerson **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPerson(aPersonUrn, _retval); } \
  NS_IMETHOD IncrementMedia(flockISocialWebServiceAccount *aAccount, const nsAString & aPersonId, PRInt32 aCount, PRInt64 aLatest) { return !_to ? NS_ERROR_NULL_POINTER : _to->IncrementMedia(aAccount, aPersonId, aCount, aLatest); } \
  NS_IMETHOD LightPeopleIcon(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->LightPeopleIcon(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public flockIPeopleUtils
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIPEOPLEUTILS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, flockIPeopleUtils)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* AString addPerson (in flockISocialWebServiceAccount aAccount, in flockIPerson aPerson); */
NS_IMETHODIMP _MYCLASS_::AddPerson(flockISocialWebServiceAccount *aAccount, flockIPerson *aPerson, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removePerson (in flockISocialWebServiceAccount aAccount, in flockIPerson aPerson); */
NS_IMETHODIMP _MYCLASS_::RemovePerson(flockISocialWebServiceAccount *aAccount, flockIPerson *aPerson)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* flockIPerson getPerson (in AString aPersonUrn); */
NS_IMETHODIMP _MYCLASS_::GetPerson(const nsAString & aPersonUrn, flockIPerson **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void incrementMedia (in flockISocialWebServiceAccount aAccount, in AString aPersonId, in long aCount, in long long aLatest); */
NS_IMETHODIMP _MYCLASS_::IncrementMedia(flockISocialWebServiceAccount *aAccount, const nsAString & aPersonId, PRInt32 aCount, PRInt64 aLatest)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void lightPeopleIcon (); */
NS_IMETHODIMP _MYCLASS_::LightPeopleIcon()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_flockIPeopleUtils_h__ */
