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

#ifndef __gen_flockIFacebookAPI_h__
#define __gen_flockIFacebookAPI_h__


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

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

#ifndef __gen_flockIError_h__
#include "flockIError.h"
#endif

#ifndef __gen_flockIListener_h__
#include "flockIListener.h"
#endif

#ifndef __gen_flockIMediaItem_h__
#include "flockIMediaItem.h"
#endif

#ifndef __gen_flockIPhotoUpload_h__
#include "flockIPhotoUpload.h"
#endif

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

#ifndef __gen_flockIMediaUploadWebService_h__
#include "flockIMediaUploadWebService.h"
#endif

#ifndef __gen_flockIBlogWebService_h__
#include "flockIBlogWebService.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:    flockIFacebookAPI */
#define FLOCKIFACEBOOKAPI_IID_STR "567877f0-1235-1eab-b0de-0804729c9a66"

#define FLOCKIFACEBOOKAPI_IID \
  {0x567877f0, 0x1235, 0x1eab, \
    { 0xb0, 0xde, 0x08, 0x04, 0x72, 0x9c, 0x9a, 0x66 }}

/**
 * A generic JavaScript wrapper for Facebook's api.
 *
 * Reference: http://developers.facebook.com/index.php
 *
 * All api calls except auth.createToken() and auth.getSession() are exposed.
 * These calls are wrapped in the authenticate() method.
 */
class NS_NO_VTABLE NS_SCRIPTABLE flockIFacebookAPI : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIFACEBOOKAPI_IID)

  /* attribute AString uid; */
  NS_SCRIPTABLE NS_IMETHOD GetUid(nsAString & aUid) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetUid(const nsAString & aUid) = 0;

  /**
   * Authenticate with Facebook using the desktop method
   *
   * @li 1) call auth.createToken() to create a shared token
   * @li 2) open a window with Facebook's API authorization page
   * @li 3) call auth.getSession() to get session/secret for subsequent calls.
   *
   * Notes:
   *   Ability to directly call auth.createToken() is not exposed.
   *   Ability to directly call auth.getSession() is not exposed.
   *
   * @param aFlockListener (in) a flockIListener which responds whether the
   *                       user was successful authenticated / session setup
   */
  /* void authenticate (in flockIListener aFlockListener); */
  NS_SCRIPTABLE NS_IMETHOD Authenticate(flockIListener *aFlockListener) = 0;

  /* void deauthenticate (); */
  NS_SCRIPTABLE NS_IMETHOD Deauthenticate(void) = 0;

  /**
   * Get a list of identifiers for friends of the authenticated user
   *
   * @param aFlockListener (in) a flockIListener which responds onSuccess with
   *                       the list of identifers for the user's friends.
   *                       (example identifier: @c iPF_ahrjO4z3fpYh8-ySIMA.. )
   */
  /* void friendsGet (in flockIListener aFlockListener); */
  NS_SCRIPTABLE NS_IMETHOD FriendsGet(flockIListener *aFlockListener) = 0;

  /**
   * Get a list containing all notifications of the currently logged in user
   *
   * @param aFlockListener (in) a flockIListener which responds onSuccess with
   *                       the notifications list
   */
  /* void notificationsGet (in flockIListener aFlockListener); */
  NS_SCRIPTABLE NS_IMETHOD NotificationsGet(flockIListener *aFlockListener) = 0;

  /**
   * Check if the session is still valid
   *
   * @param aFlockListener (in) a flockIListener which responds onSuccess if
   *                       session is still valid, or onError if the session
   *                       is not or there were other problems.
   */
  /* void sessionPing (in flockIListener aFlockListener); */
  NS_SCRIPTABLE NS_IMETHOD SessionPing(flockIListener *aFlockListener) = 0;

  /**
   * Get information for a list of users (specified by identifiers)
   *
   * @param aFlockListener (in) a flockIListener which responds onSuccess with
   *                       a wrappedJS object. The object correspond to the
   *                       JSON response from Facebook.
   *                       see: http://developer.facebook.com/documentation.php
   * 
   * @param users (in) a comma separated list of users for which to retrieve
   *                   info.
   *
   * @param fields (in) an optional comma separated list of fields requested
   *                    from the service (ex: @c 'clubs,books,birthday' ).
   *                    If not specified the query will be for a (flock)
   *                    default set of fields.
   */
  /* void usersGetInfo (in flockIListener aFlockListener, in AString users, in AString fields); */
  NS_SCRIPTABLE NS_IMETHOD UsersGetInfo(flockIListener *aFlockListener, const nsAString & users, const nsAString & fields) = 0;

  /**
   * Get the list of users, friends of the current authenticated user,
   * who uploaded at least one photo since aLastSeen
   *
   * @param aFlockListener (in) a flockIListener which responds onSuccess with
   *                       a nsISimpleEnumerator of property bags. Each property
   *                       bag contains:
   *                       AString uid: the user id on Facebook
   *                       Int32 count: the number of photos uploaded
   *                       since aLastSeen
   *
   *
   * @param aLastSeen (in) the date from which we want to observe updates,
   *                       as a string containing the number of seconds
   *                       since Epoch.
   *
   */
  /* void getUpdatedMediaFriends (in flockIListener aFlockListener, in string aLastSeen); */
  NS_SCRIPTABLE NS_IMETHOD GetUpdatedMediaFriends(flockIListener *aFlockListener, const char *aLastSeen) = 0;

  /* void eventsGetInWindow (); */
  NS_SCRIPTABLE NS_IMETHOD EventsGetInWindow(void) = 0;

  /* void friendsGetAppUsers (); */
  NS_SCRIPTABLE NS_IMETHOD FriendsGetAppUsers(void) = 0;

  /* void friendsGetTyped (); */
  NS_SCRIPTABLE NS_IMETHOD FriendsGetTyped(void) = 0;

  /* void friendsAreFriends (); */
  NS_SCRIPTABLE NS_IMETHOD FriendsAreFriends(void) = 0;

  /* void messagesGetCount (); */
  NS_SCRIPTABLE NS_IMETHOD MessagesGetCount(void) = 0;

  /* void photosGetAlbums (); */
  NS_SCRIPTABLE NS_IMETHOD PhotosGetAlbums(void) = 0;

  /* void photosGetCommentCount (); */
  NS_SCRIPTABLE NS_IMETHOD PhotosGetCommentCount(void) = 0;

  /* void photosGetFromAlbum (); */
  NS_SCRIPTABLE NS_IMETHOD PhotosGetFromAlbum(void) = 0;

  /* void photosGetOfUser (); */
  NS_SCRIPTABLE NS_IMETHOD PhotosGetOfUser(void) = 0;

  /* void pokesGetCount (); */
  NS_SCRIPTABLE NS_IMETHOD PokesGetCount(void) = 0;

  /* string getFacebookURL (in string aUrlType, in string aFriendId); */
  NS_SCRIPTABLE NS_IMETHOD GetFacebookURL(const char *aUrlType, const char *aFriendId, char **_retval) = 0;

  /**
   * Get a list of albums for a desired user
   *
   * @param aFlockListener (in) A flockIListener which responds
   *                       flickIListener#onSuccess() with an enumerator of
   *                       flockIPhotoAlbum.
   * @param aUserId (in) A user id to get albums for.
   */
  /* void getAlbums (in flockIListener aFlockListener, in AString aUserId); */
  NS_SCRIPTABLE NS_IMETHOD GetAlbums(flockIListener *aFlockListener, const nsAString & aUserId) = 0;

  /**
   * Create an album for this user
   *
   * @param aFlockListener (in) A flockIListener which responds
   *                       flockIListener#onSuccess() with with the album that
   *                       was created.
   * @param aAlbumTitle (in) The title of the new album to create.
   */
  /* void createAlbum (in flockIListener aFlockListener, in AString aAlbumTitle); */
  NS_SCRIPTABLE NS_IMETHOD CreateAlbum(flockIListener *aFlockListener, const nsAString & aAlbumTitle) = 0;

  /**
   * Get a list of photos, optionally from a particular album
   *
   * @param aFlockListener (in) A flockIListener which responds
   *                       flockIListener#onSuccess() with an enumerator of
   *                       flockIPhotoAlbum.
   * @param aSubj (in) [optional] Return only photos tagged with this user's
   *                              user id.
   * @param aAlbumID (in) [optional] Return photos only from this album.
   * @param aPidList (in) [optional] Only return photos form this comma
   *                                 separated list.
   *
   * Note: if aSubj is set then only photos tagged with the user id will
   *       be returned as a subset of the other to params.
   */
  /* void getPhotos (in flockIListener aFlockListener, in AString aSubj, in AString aAlbumID, in AString aPidList); */
  NS_SCRIPTABLE NS_IMETHOD GetPhotos(flockIListener *aFlockListener, const nsAString & aSubj, const nsAString & aAlbumID, const nsAString & aPidList) = 0;

  /**
   * Upload photos to Facebook from the Flock Photo Uploader.
   *
   * @param aUploadListener (in) A flockIPhotoUploadAPIListener.
   * @param aPhoto (in) An AString containing the full filename of the photo
   *                    to upload.
   * @param aParams (in) An nsIPropertyBag2 containing paramaters to pass to
   *                     flockIPhotoAPI#upload2.
   * @param aUpload (in) A flockIPhotoUpload.
   */
  /* void uploadPhotosViaUploader (in flockIPhotoUploadAPIListener aUploadListener, in AString aPhoto, in nsIPropertyBag2 aParams, in flockIPhotoUpload aUpload); */
  NS_SCRIPTABLE NS_IMETHOD UploadPhotosViaUploader(flockIPhotoUploadAPIListener *aUploadListener, const nsAString & aPhoto, nsIPropertyBag2 *aParams, flockIPhotoUpload *aUpload) = 0;

  /**
   * Tag photos in Facebook
   * @param aFlockListener (in) A flockIListener which responds...
   * @param aPid (in) An AString containing the id of the photo to be tagged.
   * @param aTagUid (in) An AString containing the user id of the user being
   *                     tagged. Either aTagUid or aTagText must be
   *                     specified.
   * @param aTagText (in) An AString containing some text identifying the
   *                      person being tagged. Either aTagUid or aTagText
   *                      must be specified. This parameter is ignored if
   *                      aTagUid is specified.
   * @param aX (in) An AString containing the horizontal position of the tag,
   *                as a percentage from 0 to 100 from the left of the photo.
   * @param aY (in) An AString containing the vertical position of the tag,
   *                as a percentage from 0 to 100 from the top of the photo.
   * @param aTags (in) An AString containing a JSON-serialized array
   *                   representing a list of tags to be added to the photo.
   *                   If the aTags parameter is specified, the aX, aY,
   *                   aTagUid, and aTagText parameters are ignored. Each
   *                   tag in the list must specify: "x", "y", and either
   *                   the user id "uid" or free-form "text"
   *                   identifying the person being tagged. An example of
   *                   this is the string:
   *                     [ {"x":"30.0","y":"30.0","uid":1234567890},
   *                       {"x":"70.0","y":"70.0","text":"some person"} ]
   */
  /* void addTag (in flockIListener aFlockListener, in AString aPid, in AString aTagUid, in AString aTagText, in AString aX, in AString aY, in AString aTags); */
  NS_SCRIPTABLE NS_IMETHOD AddTag(flockIListener *aFlockListener, const nsAString & aPid, const nsAString & aTagUid, const nsAString & aTagText, const nsAString & aX, const nsAString & aY, const nsAString & aTags) = 0;

  /**
   * Set the status of the current user.
   *
   * @param aFlockListener (in) A flockIListener which responds...(may be null)
   * @param aFQLQuery (in) An AString containing the new status text.
   *                       Leave blank to clear the status.
   */
  /* void setStatus (in flockIListener aFlockListener, in AString aNewStatus); */
  NS_SCRIPTABLE NS_IMETHOD SetStatus(flockIListener *aFlockListener, const nsAString & aNewStatus) = 0;

  /**
   * Add Flock's box to the user profile, and authorize Flock to publish
   * full stories.
   *
   * see: http://www.new.facebook.com/editapps.php?v=all
   */
  /* void addProfileBox (in flockIListener aFlockListener); */
  NS_SCRIPTABLE NS_IMETHOD AddProfileBox(flockIListener *aFlockListener) = 0;

  /**
   * Report a status change to the FB profile page.
   * Status updates for Facebook are ignored.
   *
   * @param aFlockListener (in) A flockIListener which responds...(may be null)
   * @param aAccount (in) The account where the user changed his status
   * @param aStatus (in) The text of the new status
   */
  /* void reportStatus (in flockIListener aFlockListener, in flockISocialAccount aAccount, in AString aStatus); */
  NS_SCRIPTABLE NS_IMETHOD ReportStatus(flockIListener *aFlockListener, flockISocialAccount *aAccount, const nsAString & aStatus) = 0;

  /**
   * Report a blog post publication to the FB profile page
   *
   * @param aFlockListener (in) A flockIListener which responds...(may be null)
   * @param aService (in) The service where the post was published
   * @param aPostTitle (in) The title of the new blog post
   * @param aPostPermalink (in) The permalink of the new blog post
   */
  /* void reportBlog (in flockIListener aFlockListener, in flockIBlogAccount aAccount, in AString aTitle, in AString aBody, in AString aPermalink); */
  NS_SCRIPTABLE NS_IMETHOD ReportBlog(flockIListener *aFlockListener, flockIBlogAccount *aAccount, const nsAString & aTitle, const nsAString & aBody, const nsAString & aPermalink) = 0;

  /**
   * Report upload of a batch of public photos to a given service.
   * Uploads to Facebook are ignored. Do NOT include any private
   * photo in aPhotoList.
   *
   * @param aFlockListener (in) A flockIListener which responds...(may be null)
   * @param aAccount (in) The account to which photos were uploaded
   * @param aPhotoList (in) enumerator of flockIMediaItem representing the
   *    public photos uploaded
   */
  /* void reportUpload (in flockIListener aFlockListener, in flockIMediaUploadAccount aAccount, in nsISimpleEnumerator aPhotoList); */
  NS_SCRIPTABLE NS_IMETHOD ReportUpload(flockIListener *aFlockListener, flockIMediaUploadAccount *aAccount, nsISimpleEnumerator *aPhotoList) = 0;

  /**
   * Perform a FQL query.
   *
   * @param aFlockListener (in) A flockIListener which responds
   *                       flockIListener#onSuccess() with the XML response.
   * @param aFQLQuery (in) An AString containing the FQL query to perform.
   */
  /* void doFQLQuery (in flockIListener aFlockListener, in AString aFQLQuery); */
  NS_SCRIPTABLE NS_IMETHOD DoFQLQuery(flockIListener *aFlockListener, const nsAString & aFQLQuery) = 0;

  /**
   * Create a facebookPhoto ojbect
   */
  /* flockIMediaItem createPhoto (); */
  NS_SCRIPTABLE NS_IMETHOD CreatePhoto(flockIMediaItem **_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIFacebookAPI, FLOCKIFACEBOOKAPI_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIFACEBOOKAPI \
  NS_SCRIPTABLE NS_IMETHOD GetUid(nsAString & aUid); \
  NS_SCRIPTABLE NS_IMETHOD SetUid(const nsAString & aUid); \
  NS_SCRIPTABLE NS_IMETHOD Authenticate(flockIListener *aFlockListener); \
  NS_SCRIPTABLE NS_IMETHOD Deauthenticate(void); \
  NS_SCRIPTABLE NS_IMETHOD FriendsGet(flockIListener *aFlockListener); \
  NS_SCRIPTABLE NS_IMETHOD NotificationsGet(flockIListener *aFlockListener); \
  NS_SCRIPTABLE NS_IMETHOD SessionPing(flockIListener *aFlockListener); \
  NS_SCRIPTABLE NS_IMETHOD UsersGetInfo(flockIListener *aFlockListener, const nsAString & users, const nsAString & fields); \
  NS_SCRIPTABLE NS_IMETHOD GetUpdatedMediaFriends(flockIListener *aFlockListener, const char *aLastSeen); \
  NS_SCRIPTABLE NS_IMETHOD EventsGetInWindow(void); \
  NS_SCRIPTABLE NS_IMETHOD FriendsGetAppUsers(void); \
  NS_SCRIPTABLE NS_IMETHOD FriendsGetTyped(void); \
  NS_SCRIPTABLE NS_IMETHOD FriendsAreFriends(void); \
  NS_SCRIPTABLE NS_IMETHOD MessagesGetCount(void); \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetAlbums(void); \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetCommentCount(void); \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetFromAlbum(void); \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetOfUser(void); \
  NS_SCRIPTABLE NS_IMETHOD PokesGetCount(void); \
  NS_SCRIPTABLE NS_IMETHOD GetFacebookURL(const char *aUrlType, const char *aFriendId, char **_retval); \
  NS_SCRIPTABLE NS_IMETHOD GetAlbums(flockIListener *aFlockListener, const nsAString & aUserId); \
  NS_SCRIPTABLE NS_IMETHOD CreateAlbum(flockIListener *aFlockListener, const nsAString & aAlbumTitle); \
  NS_SCRIPTABLE NS_IMETHOD GetPhotos(flockIListener *aFlockListener, const nsAString & aSubj, const nsAString & aAlbumID, const nsAString & aPidList); \
  NS_SCRIPTABLE NS_IMETHOD UploadPhotosViaUploader(flockIPhotoUploadAPIListener *aUploadListener, const nsAString & aPhoto, nsIPropertyBag2 *aParams, flockIPhotoUpload *aUpload); \
  NS_SCRIPTABLE NS_IMETHOD AddTag(flockIListener *aFlockListener, const nsAString & aPid, const nsAString & aTagUid, const nsAString & aTagText, const nsAString & aX, const nsAString & aY, const nsAString & aTags); \
  NS_SCRIPTABLE NS_IMETHOD SetStatus(flockIListener *aFlockListener, const nsAString & aNewStatus); \
  NS_SCRIPTABLE NS_IMETHOD AddProfileBox(flockIListener *aFlockListener); \
  NS_SCRIPTABLE NS_IMETHOD ReportStatus(flockIListener *aFlockListener, flockISocialAccount *aAccount, const nsAString & aStatus); \
  NS_SCRIPTABLE NS_IMETHOD ReportBlog(flockIListener *aFlockListener, flockIBlogAccount *aAccount, const nsAString & aTitle, const nsAString & aBody, const nsAString & aPermalink); \
  NS_SCRIPTABLE NS_IMETHOD ReportUpload(flockIListener *aFlockListener, flockIMediaUploadAccount *aAccount, nsISimpleEnumerator *aPhotoList); \
  NS_SCRIPTABLE NS_IMETHOD DoFQLQuery(flockIListener *aFlockListener, const nsAString & aFQLQuery); \
  NS_SCRIPTABLE NS_IMETHOD CreatePhoto(flockIMediaItem **_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIFACEBOOKAPI(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetUid(nsAString & aUid) { return _to GetUid(aUid); } \
  NS_SCRIPTABLE NS_IMETHOD SetUid(const nsAString & aUid) { return _to SetUid(aUid); } \
  NS_SCRIPTABLE NS_IMETHOD Authenticate(flockIListener *aFlockListener) { return _to Authenticate(aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD Deauthenticate(void) { return _to Deauthenticate(); } \
  NS_SCRIPTABLE NS_IMETHOD FriendsGet(flockIListener *aFlockListener) { return _to FriendsGet(aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD NotificationsGet(flockIListener *aFlockListener) { return _to NotificationsGet(aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD SessionPing(flockIListener *aFlockListener) { return _to SessionPing(aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD UsersGetInfo(flockIListener *aFlockListener, const nsAString & users, const nsAString & fields) { return _to UsersGetInfo(aFlockListener, users, fields); } \
  NS_SCRIPTABLE NS_IMETHOD GetUpdatedMediaFriends(flockIListener *aFlockListener, const char *aLastSeen) { return _to GetUpdatedMediaFriends(aFlockListener, aLastSeen); } \
  NS_SCRIPTABLE NS_IMETHOD EventsGetInWindow(void) { return _to EventsGetInWindow(); } \
  NS_SCRIPTABLE NS_IMETHOD FriendsGetAppUsers(void) { return _to FriendsGetAppUsers(); } \
  NS_SCRIPTABLE NS_IMETHOD FriendsGetTyped(void) { return _to FriendsGetTyped(); } \
  NS_SCRIPTABLE NS_IMETHOD FriendsAreFriends(void) { return _to FriendsAreFriends(); } \
  NS_SCRIPTABLE NS_IMETHOD MessagesGetCount(void) { return _to MessagesGetCount(); } \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetAlbums(void) { return _to PhotosGetAlbums(); } \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetCommentCount(void) { return _to PhotosGetCommentCount(); } \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetFromAlbum(void) { return _to PhotosGetFromAlbum(); } \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetOfUser(void) { return _to PhotosGetOfUser(); } \
  NS_SCRIPTABLE NS_IMETHOD PokesGetCount(void) { return _to PokesGetCount(); } \
  NS_SCRIPTABLE NS_IMETHOD GetFacebookURL(const char *aUrlType, const char *aFriendId, char **_retval) { return _to GetFacebookURL(aUrlType, aFriendId, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetAlbums(flockIListener *aFlockListener, const nsAString & aUserId) { return _to GetAlbums(aFlockListener, aUserId); } \
  NS_SCRIPTABLE NS_IMETHOD CreateAlbum(flockIListener *aFlockListener, const nsAString & aAlbumTitle) { return _to CreateAlbum(aFlockListener, aAlbumTitle); } \
  NS_SCRIPTABLE NS_IMETHOD GetPhotos(flockIListener *aFlockListener, const nsAString & aSubj, const nsAString & aAlbumID, const nsAString & aPidList) { return _to GetPhotos(aFlockListener, aSubj, aAlbumID, aPidList); } \
  NS_SCRIPTABLE NS_IMETHOD UploadPhotosViaUploader(flockIPhotoUploadAPIListener *aUploadListener, const nsAString & aPhoto, nsIPropertyBag2 *aParams, flockIPhotoUpload *aUpload) { return _to UploadPhotosViaUploader(aUploadListener, aPhoto, aParams, aUpload); } \
  NS_SCRIPTABLE NS_IMETHOD AddTag(flockIListener *aFlockListener, const nsAString & aPid, const nsAString & aTagUid, const nsAString & aTagText, const nsAString & aX, const nsAString & aY, const nsAString & aTags) { return _to AddTag(aFlockListener, aPid, aTagUid, aTagText, aX, aY, aTags); } \
  NS_SCRIPTABLE NS_IMETHOD SetStatus(flockIListener *aFlockListener, const nsAString & aNewStatus) { return _to SetStatus(aFlockListener, aNewStatus); } \
  NS_SCRIPTABLE NS_IMETHOD AddProfileBox(flockIListener *aFlockListener) { return _to AddProfileBox(aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD ReportStatus(flockIListener *aFlockListener, flockISocialAccount *aAccount, const nsAString & aStatus) { return _to ReportStatus(aFlockListener, aAccount, aStatus); } \
  NS_SCRIPTABLE NS_IMETHOD ReportBlog(flockIListener *aFlockListener, flockIBlogAccount *aAccount, const nsAString & aTitle, const nsAString & aBody, const nsAString & aPermalink) { return _to ReportBlog(aFlockListener, aAccount, aTitle, aBody, aPermalink); } \
  NS_SCRIPTABLE NS_IMETHOD ReportUpload(flockIListener *aFlockListener, flockIMediaUploadAccount *aAccount, nsISimpleEnumerator *aPhotoList) { return _to ReportUpload(aFlockListener, aAccount, aPhotoList); } \
  NS_SCRIPTABLE NS_IMETHOD DoFQLQuery(flockIListener *aFlockListener, const nsAString & aFQLQuery) { return _to DoFQLQuery(aFlockListener, aFQLQuery); } \
  NS_SCRIPTABLE NS_IMETHOD CreatePhoto(flockIMediaItem **_retval) { return _to CreatePhoto(_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_FLOCKIFACEBOOKAPI(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetUid(nsAString & aUid) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUid(aUid); } \
  NS_SCRIPTABLE NS_IMETHOD SetUid(const nsAString & aUid) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUid(aUid); } \
  NS_SCRIPTABLE NS_IMETHOD Authenticate(flockIListener *aFlockListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->Authenticate(aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD Deauthenticate(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Deauthenticate(); } \
  NS_SCRIPTABLE NS_IMETHOD FriendsGet(flockIListener *aFlockListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->FriendsGet(aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD NotificationsGet(flockIListener *aFlockListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotificationsGet(aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD SessionPing(flockIListener *aFlockListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->SessionPing(aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD UsersGetInfo(flockIListener *aFlockListener, const nsAString & users, const nsAString & fields) { return !_to ? NS_ERROR_NULL_POINTER : _to->UsersGetInfo(aFlockListener, users, fields); } \
  NS_SCRIPTABLE NS_IMETHOD GetUpdatedMediaFriends(flockIListener *aFlockListener, const char *aLastSeen) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUpdatedMediaFriends(aFlockListener, aLastSeen); } \
  NS_SCRIPTABLE NS_IMETHOD EventsGetInWindow(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EventsGetInWindow(); } \
  NS_SCRIPTABLE NS_IMETHOD FriendsGetAppUsers(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->FriendsGetAppUsers(); } \
  NS_SCRIPTABLE NS_IMETHOD FriendsGetTyped(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->FriendsGetTyped(); } \
  NS_SCRIPTABLE NS_IMETHOD FriendsAreFriends(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->FriendsAreFriends(); } \
  NS_SCRIPTABLE NS_IMETHOD MessagesGetCount(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->MessagesGetCount(); } \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetAlbums(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PhotosGetAlbums(); } \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetCommentCount(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PhotosGetCommentCount(); } \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetFromAlbum(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PhotosGetFromAlbum(); } \
  NS_SCRIPTABLE NS_IMETHOD PhotosGetOfUser(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PhotosGetOfUser(); } \
  NS_SCRIPTABLE NS_IMETHOD PokesGetCount(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PokesGetCount(); } \
  NS_SCRIPTABLE NS_IMETHOD GetFacebookURL(const char *aUrlType, const char *aFriendId, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFacebookURL(aUrlType, aFriendId, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetAlbums(flockIListener *aFlockListener, const nsAString & aUserId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlbums(aFlockListener, aUserId); } \
  NS_SCRIPTABLE NS_IMETHOD CreateAlbum(flockIListener *aFlockListener, const nsAString & aAlbumTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateAlbum(aFlockListener, aAlbumTitle); } \
  NS_SCRIPTABLE NS_IMETHOD GetPhotos(flockIListener *aFlockListener, const nsAString & aSubj, const nsAString & aAlbumID, const nsAString & aPidList) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPhotos(aFlockListener, aSubj, aAlbumID, aPidList); } \
  NS_SCRIPTABLE NS_IMETHOD UploadPhotosViaUploader(flockIPhotoUploadAPIListener *aUploadListener, const nsAString & aPhoto, nsIPropertyBag2 *aParams, flockIPhotoUpload *aUpload) { return !_to ? NS_ERROR_NULL_POINTER : _to->UploadPhotosViaUploader(aUploadListener, aPhoto, aParams, aUpload); } \
  NS_SCRIPTABLE NS_IMETHOD AddTag(flockIListener *aFlockListener, const nsAString & aPid, const nsAString & aTagUid, const nsAString & aTagText, const nsAString & aX, const nsAString & aY, const nsAString & aTags) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddTag(aFlockListener, aPid, aTagUid, aTagText, aX, aY, aTags); } \
  NS_SCRIPTABLE NS_IMETHOD SetStatus(flockIListener *aFlockListener, const nsAString & aNewStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStatus(aFlockListener, aNewStatus); } \
  NS_SCRIPTABLE NS_IMETHOD AddProfileBox(flockIListener *aFlockListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddProfileBox(aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD ReportStatus(flockIListener *aFlockListener, flockISocialAccount *aAccount, const nsAString & aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReportStatus(aFlockListener, aAccount, aStatus); } \
  NS_SCRIPTABLE NS_IMETHOD ReportBlog(flockIListener *aFlockListener, flockIBlogAccount *aAccount, const nsAString & aTitle, const nsAString & aBody, const nsAString & aPermalink) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReportBlog(aFlockListener, aAccount, aTitle, aBody, aPermalink); } \
  NS_SCRIPTABLE NS_IMETHOD ReportUpload(flockIListener *aFlockListener, flockIMediaUploadAccount *aAccount, nsISimpleEnumerator *aPhotoList) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReportUpload(aFlockListener, aAccount, aPhotoList); } \
  NS_SCRIPTABLE NS_IMETHOD DoFQLQuery(flockIListener *aFlockListener, const nsAString & aFQLQuery) { return !_to ? NS_ERROR_NULL_POINTER : _to->DoFQLQuery(aFlockListener, aFQLQuery); } \
  NS_SCRIPTABLE NS_IMETHOD CreatePhoto(flockIMediaItem **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreatePhoto(_retval); } 

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

/* Header file */
class _MYCLASS_ : public flockIFacebookAPI
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIFACEBOOKAPI

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute AString uid; */
NS_IMETHODIMP _MYCLASS_::GetUid(nsAString & aUid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetUid(const nsAString & aUid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void authenticate (in flockIListener aFlockListener); */
NS_IMETHODIMP _MYCLASS_::Authenticate(flockIListener *aFlockListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deauthenticate (); */
NS_IMETHODIMP _MYCLASS_::Deauthenticate()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void friendsGet (in flockIListener aFlockListener); */
NS_IMETHODIMP _MYCLASS_::FriendsGet(flockIListener *aFlockListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notificationsGet (in flockIListener aFlockListener); */
NS_IMETHODIMP _MYCLASS_::NotificationsGet(flockIListener *aFlockListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void sessionPing (in flockIListener aFlockListener); */
NS_IMETHODIMP _MYCLASS_::SessionPing(flockIListener *aFlockListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void usersGetInfo (in flockIListener aFlockListener, in AString users, in AString fields); */
NS_IMETHODIMP _MYCLASS_::UsersGetInfo(flockIListener *aFlockListener, const nsAString & users, const nsAString & fields)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUpdatedMediaFriends (in flockIListener aFlockListener, in string aLastSeen); */
NS_IMETHODIMP _MYCLASS_::GetUpdatedMediaFriends(flockIListener *aFlockListener, const char *aLastSeen)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void eventsGetInWindow (); */
NS_IMETHODIMP _MYCLASS_::EventsGetInWindow()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void friendsGetAppUsers (); */
NS_IMETHODIMP _MYCLASS_::FriendsGetAppUsers()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void friendsGetTyped (); */
NS_IMETHODIMP _MYCLASS_::FriendsGetTyped()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void friendsAreFriends (); */
NS_IMETHODIMP _MYCLASS_::FriendsAreFriends()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void messagesGetCount (); */
NS_IMETHODIMP _MYCLASS_::MessagesGetCount()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void photosGetAlbums (); */
NS_IMETHODIMP _MYCLASS_::PhotosGetAlbums()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void photosGetCommentCount (); */
NS_IMETHODIMP _MYCLASS_::PhotosGetCommentCount()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void photosGetFromAlbum (); */
NS_IMETHODIMP _MYCLASS_::PhotosGetFromAlbum()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void photosGetOfUser (); */
NS_IMETHODIMP _MYCLASS_::PhotosGetOfUser()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void pokesGetCount (); */
NS_IMETHODIMP _MYCLASS_::PokesGetCount()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string getFacebookURL (in string aUrlType, in string aFriendId); */
NS_IMETHODIMP _MYCLASS_::GetFacebookURL(const char *aUrlType, const char *aFriendId, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getAlbums (in flockIListener aFlockListener, in AString aUserId); */
NS_IMETHODIMP _MYCLASS_::GetAlbums(flockIListener *aFlockListener, const nsAString & aUserId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createAlbum (in flockIListener aFlockListener, in AString aAlbumTitle); */
NS_IMETHODIMP _MYCLASS_::CreateAlbum(flockIListener *aFlockListener, const nsAString & aAlbumTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPhotos (in flockIListener aFlockListener, in AString aSubj, in AString aAlbumID, in AString aPidList); */
NS_IMETHODIMP _MYCLASS_::GetPhotos(flockIListener *aFlockListener, const nsAString & aSubj, const nsAString & aAlbumID, const nsAString & aPidList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uploadPhotosViaUploader (in flockIPhotoUploadAPIListener aUploadListener, in AString aPhoto, in nsIPropertyBag2 aParams, in flockIPhotoUpload aUpload); */
NS_IMETHODIMP _MYCLASS_::UploadPhotosViaUploader(flockIPhotoUploadAPIListener *aUploadListener, const nsAString & aPhoto, nsIPropertyBag2 *aParams, flockIPhotoUpload *aUpload)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addTag (in flockIListener aFlockListener, in AString aPid, in AString aTagUid, in AString aTagText, in AString aX, in AString aY, in AString aTags); */
NS_IMETHODIMP _MYCLASS_::AddTag(flockIListener *aFlockListener, const nsAString & aPid, const nsAString & aTagUid, const nsAString & aTagText, const nsAString & aX, const nsAString & aY, const nsAString & aTags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setStatus (in flockIListener aFlockListener, in AString aNewStatus); */
NS_IMETHODIMP _MYCLASS_::SetStatus(flockIListener *aFlockListener, const nsAString & aNewStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addProfileBox (in flockIListener aFlockListener); */
NS_IMETHODIMP _MYCLASS_::AddProfileBox(flockIListener *aFlockListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void reportStatus (in flockIListener aFlockListener, in flockISocialAccount aAccount, in AString aStatus); */
NS_IMETHODIMP _MYCLASS_::ReportStatus(flockIListener *aFlockListener, flockISocialAccount *aAccount, const nsAString & aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void reportBlog (in flockIListener aFlockListener, in flockIBlogAccount aAccount, in AString aTitle, in AString aBody, in AString aPermalink); */
NS_IMETHODIMP _MYCLASS_::ReportBlog(flockIListener *aFlockListener, flockIBlogAccount *aAccount, const nsAString & aTitle, const nsAString & aBody, const nsAString & aPermalink)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void reportUpload (in flockIListener aFlockListener, in flockIMediaUploadAccount aAccount, in nsISimpleEnumerator aPhotoList); */
NS_IMETHODIMP _MYCLASS_::ReportUpload(flockIListener *aFlockListener, flockIMediaUploadAccount *aAccount, nsISimpleEnumerator *aPhotoList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void doFQLQuery (in flockIListener aFlockListener, in AString aFQLQuery); */
NS_IMETHODIMP _MYCLASS_::DoFQLQuery(flockIListener *aFlockListener, const nsAString & aFQLQuery)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* flockIMediaItem createPhoto (); */
NS_IMETHODIMP _MYCLASS_::CreatePhoto(flockIMediaItem **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_flockIFacebookAPI_h__ */
