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

#ifndef __gen_flockIPeopleService_h__
#define __gen_flockIPeopleService_h__


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

#ifndef __gen_nsIObserver_h__
#include "nsIObserver.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:    flockIPeopleObserver */
#define FLOCKIPEOPLEOBSERVER_IID_STR "8548ef3c-4569-4aba-bbd0-dc53d5463999"

#define FLOCKIPEOPLEOBSERVER_IID \
  {0x8548ef3c, 0x4569, 0x4aba, \
    { 0xbb, 0xd0, 0xdc, 0x53, 0xd5, 0x46, 0x39, 0x99 }}

class NS_NO_VTABLE NS_SCRIPTABLE flockIPeopleObserver : public nsIObserver {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIPEOPLEOBSERVER_IID)

  /**
   * onFriendRemove
   * Functionality to be performed when PeopleService observes that a friend
   * has been removed
   * @param aFriendUrn : URN of Friend that has been removed
   */
  /* void onFriendRemove (in AString aFriendUrn); */
  NS_SCRIPTABLE NS_IMETHOD OnFriendRemove(const nsAString & aFriendUrn) = 0;

  /**
   * onFriendUpdate
   * Functionality to be performed when PeopleService observes that a friend
   * has been updated. There is no guarantee that the FriendActivityLog
   * is updated at this point, if you plan to use it use onActivityUpdate.
   * @param aFriendUrn : URN of Friend that has been removed
   */
  /* void onFriendUpdate (in AString AFriendUrn); */
  NS_SCRIPTABLE NS_IMETHOD OnFriendUpdate(const nsAString & AFriendUrn) = 0;

  /**
   * onInsertFriend
   * Functionality to be performed when PeopleService observes that account
   * aAccountId has a new friend
   * @param aFriendUrn : URN of Friend that has been removed
   */
  /* void onInsertFriend (in AString aFriendUrn); */
  NS_SCRIPTABLE NS_IMETHOD OnInsertFriend(const nsAString & aFriendUrn) = 0;

  /**
   * Called when a friend has a new activity (status change, new photo...)
   * This will be called after onFriendUpdate
   * @param aActivityUrn: URN of the new activity
   */
  /* void onNewActivity (in AString aActivityUrn); */
  NS_SCRIPTABLE NS_IMETHOD OnNewActivity(const nsAString & aActivityUrn) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIPeopleObserver, FLOCKIPEOPLEOBSERVER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIPEOPLEOBSERVER \
  NS_SCRIPTABLE NS_IMETHOD OnFriendRemove(const nsAString & aFriendUrn); \
  NS_SCRIPTABLE NS_IMETHOD OnFriendUpdate(const nsAString & AFriendUrn); \
  NS_SCRIPTABLE NS_IMETHOD OnInsertFriend(const nsAString & aFriendUrn); \
  NS_SCRIPTABLE NS_IMETHOD OnNewActivity(const nsAString & aActivityUrn); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIPEOPLEOBSERVER(_to) \
  NS_SCRIPTABLE NS_IMETHOD OnFriendRemove(const nsAString & aFriendUrn) { return _to OnFriendRemove(aFriendUrn); } \
  NS_SCRIPTABLE NS_IMETHOD OnFriendUpdate(const nsAString & AFriendUrn) { return _to OnFriendUpdate(AFriendUrn); } \
  NS_SCRIPTABLE NS_IMETHOD OnInsertFriend(const nsAString & aFriendUrn) { return _to OnInsertFriend(aFriendUrn); } \
  NS_SCRIPTABLE NS_IMETHOD OnNewActivity(const nsAString & aActivityUrn) { return _to OnNewActivity(aActivityUrn); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIPEOPLEOBSERVER(_to) \
  NS_SCRIPTABLE NS_IMETHOD OnFriendRemove(const nsAString & aFriendUrn) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnFriendRemove(aFriendUrn); } \
  NS_SCRIPTABLE NS_IMETHOD OnFriendUpdate(const nsAString & AFriendUrn) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnFriendUpdate(AFriendUrn); } \
  NS_SCRIPTABLE NS_IMETHOD OnInsertFriend(const nsAString & aFriendUrn) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnInsertFriend(aFriendUrn); } \
  NS_SCRIPTABLE NS_IMETHOD OnNewActivity(const nsAString & aActivityUrn) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnNewActivity(aActivityUrn); } 

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

/* Header file */
class _MYCLASS_ : public flockIPeopleObserver
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIPEOPLEOBSERVER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void onFriendRemove (in AString aFriendUrn); */
NS_IMETHODIMP _MYCLASS_::OnFriendRemove(const nsAString & aFriendUrn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onFriendUpdate (in AString AFriendUrn); */
NS_IMETHODIMP _MYCLASS_::OnFriendUpdate(const nsAString & AFriendUrn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onInsertFriend (in AString aFriendUrn); */
NS_IMETHODIMP _MYCLASS_::OnInsertFriend(const nsAString & aFriendUrn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onNewActivity (in AString aActivityUrn); */
NS_IMETHODIMP _MYCLASS_::OnNewActivity(const nsAString & aActivityUrn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    flockIPeopleService */
#define FLOCKIPEOPLESERVICE_IID_STR "47271700-0c08-11dd-9079-e51956d89593"

#define FLOCKIPEOPLESERVICE_IID \
  {0x47271700, 0x0c08, 0x11dd, \
    { 0x90, 0x79, 0xe5, 0x19, 0x56, 0xd8, 0x95, 0x93 }}

class NS_NO_VTABLE NS_SCRIPTABLE flockIPeopleService : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIPEOPLESERVICE_IID)

  /**
   * peopleIconLit
   * Indicates the highlight state of the people icon.
   */
  /* readonly attribute boolean peopleIconLit; */
  NS_SCRIPTABLE NS_IMETHOD GetPeopleIconLit(PRBool *aPeopleIconLit) = 0;

  /**
   * AddObserver
   * Registers a given listener for a notifications regarding the specified
   * topic.
   * @param anObserve : The interface pointer which will receive notifications.
   */
  /* void addObserver (in flockIPeopleObserver aObserver); */
  NS_SCRIPTABLE NS_IMETHOD AddObserver(flockIPeopleObserver *aObserver) = 0;

  /**
   * removeObserver
   * Unregisters a given listener from notifications regarding the specified
   * topic.
   * @param aObserver : The interface pointer which will stop recieving
   *                    notifications.
   */
  /* void removeObserver (in flockIPeopleObserver aObserver); */
  NS_SCRIPTABLE NS_IMETHOD RemoveObserver(flockIPeopleObserver *aObserver) = 0;

  /**
   * togglePeopleIcon
   * Toggle the people icon between highlighted and unhighlighted state.
   * @param aToggleOn : A toggle value of true will set the icon to a
   *                    highlighted state.
   */
  /* void togglePeopleIcon (in boolean aToggleOn); */
  NS_SCRIPTABLE NS_IMETHOD TogglePeopleIcon(PRBool aToggleOn) = 0;

  /**
   * numObservers
   * return the number of observers (people sidebar and My World when opened).
   */
  /* PRUint16 numObservers (); */
  NS_SCRIPTABLE NS_IMETHOD NumObservers(PRUint16 *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIPeopleService, FLOCKIPEOPLESERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIPEOPLESERVICE \
  NS_SCRIPTABLE NS_IMETHOD GetPeopleIconLit(PRBool *aPeopleIconLit); \
  NS_SCRIPTABLE NS_IMETHOD AddObserver(flockIPeopleObserver *aObserver); \
  NS_SCRIPTABLE NS_IMETHOD RemoveObserver(flockIPeopleObserver *aObserver); \
  NS_SCRIPTABLE NS_IMETHOD TogglePeopleIcon(PRBool aToggleOn); \
  NS_SCRIPTABLE NS_IMETHOD NumObservers(PRUint16 *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIPEOPLESERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetPeopleIconLit(PRBool *aPeopleIconLit) { return _to GetPeopleIconLit(aPeopleIconLit); } \
  NS_SCRIPTABLE NS_IMETHOD AddObserver(flockIPeopleObserver *aObserver) { return _to AddObserver(aObserver); } \
  NS_SCRIPTABLE NS_IMETHOD RemoveObserver(flockIPeopleObserver *aObserver) { return _to RemoveObserver(aObserver); } \
  NS_SCRIPTABLE NS_IMETHOD TogglePeopleIcon(PRBool aToggleOn) { return _to TogglePeopleIcon(aToggleOn); } \
  NS_SCRIPTABLE NS_IMETHOD NumObservers(PRUint16 *_retval) { return _to NumObservers(_retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIPEOPLESERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetPeopleIconLit(PRBool *aPeopleIconLit) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPeopleIconLit(aPeopleIconLit); } \
  NS_SCRIPTABLE NS_IMETHOD AddObserver(flockIPeopleObserver *aObserver) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddObserver(aObserver); } \
  NS_SCRIPTABLE NS_IMETHOD RemoveObserver(flockIPeopleObserver *aObserver) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveObserver(aObserver); } \
  NS_SCRIPTABLE NS_IMETHOD TogglePeopleIcon(PRBool aToggleOn) { return !_to ? NS_ERROR_NULL_POINTER : _to->TogglePeopleIcon(aToggleOn); } \
  NS_SCRIPTABLE NS_IMETHOD NumObservers(PRUint16 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->NumObservers(_retval); } 

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

/* Header file */
class _MYCLASS_ : public flockIPeopleService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIPEOPLESERVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute boolean peopleIconLit; */
NS_IMETHODIMP _MYCLASS_::GetPeopleIconLit(PRBool *aPeopleIconLit)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addObserver (in flockIPeopleObserver aObserver); */
NS_IMETHODIMP _MYCLASS_::AddObserver(flockIPeopleObserver *aObserver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeObserver (in flockIPeopleObserver aObserver); */
NS_IMETHODIMP _MYCLASS_::RemoveObserver(flockIPeopleObserver *aObserver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void togglePeopleIcon (in boolean aToggleOn); */
NS_IMETHODIMP _MYCLASS_::TogglePeopleIcon(PRBool aToggleOn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* PRUint16 numObservers (); */
NS_IMETHODIMP _MYCLASS_::NumObservers(PRUint16 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_flockIPeopleService_h__ */
