/*
 * BEGIN FLOCK GPL
 *
 * Copyright Flock Inc. 2005-2008
 * http://flock.com
 *
 * This file may be used under the terms of the
 * GNU General Public License Version 2 or later (the "GPL"),
 * http://www.gnu.org/licenses/gpl.html
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * END FLOCK GPL
 */
 
#include "nsISupports.idl"
#include "nsIObserver.idl"
#include "flockISocialWebService.idl"
 
[scriptable, uuid(460c07ab-a514-4dc6-a8b3-b3f3480a87f2)]
interface flockIPeopleObserver : nsIObserver
{
  /**
   * 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);
  
  /**
   * onFriendUpdate
   * Functionality to be performed when PeopleService observes that a friend
   * has been updated
   * @param aFriendUrn : URN of Friend that has been removed
   */
  void onFriendUpdate(in AString AFriendUrn);
  
  /**
   * 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);
};

[scriptable, uuid(7acba239-d5d9-4223-a8e9-e25ce0395008)]
interface flockIPeopleService : nsISupports
{
  /**
   * 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);

  /**
   * 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);
};
