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

#ifndef __gen_flockISocialWebService_h__
#define __gen_flockISocialWebService_h__


#ifndef __gen_nsIDOMElement_h__
#include "nsIDOMElement.h"
#endif

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

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

#ifndef __gen_flockIWebService_h__
#include "flockIWebService.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsITransferable; /* forward declaration */


/* starting interface:    flockISocialWebService */
#define FLOCKISOCIALWEBSERVICE_IID_STR "04f98050-f012-11dc-95ff-1569200c9a66"

#define FLOCKISOCIALWEBSERVICE_IID \
  {0x04f98050, 0xf012, 0x11dc, \
    { 0x95, 0xff, 0x15, 0x69, 0x20, 0x0c, 0x9a, 0x66 }}

/**
 * A "Social" web service is one which supports the concept of "contacts"
 * (a.k.a. "friends", "buddies", etc.).  This generally means that Flock will
 * try to import the contacts so that they can appear in the browser UI, along
 * with relevant notifications as to their status, new content, etc.
 *
 * More documentation here:
 * http://developer.flock.com/wiki/Accounts_Management
 *
 * @see flockISocialAccount
 */
class NS_NO_VTABLE NS_SCRIPTABLE flockISocialWebService : public flockILoginWebService {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKISOCIALWEBSERVICE_IID)

  /**
   * Clear media notification for a given person
   *
   * Typically, this function is called when the user consumes the
   * media of one of his friends. This function set the unseen items
   * count to 0, dismissing the notification for that friend.
   *
   * @param aPersonUrn (in) the RDF URN of the person to clear media
   */
  /* void markAllMediaSeen (in AString aPersonUrn); */
  NS_SCRIPTABLE NS_IMETHOD MarkAllMediaSeen(const nsAString & aPersonUrn) = 0;

  /**
   * Parse the provided status message text into a DOM element.
   */
  /* nsIDOMElement parseStatus (in nsIDOMDocument aDocument, in AString aStatusMessage); */
  NS_SCRIPTABLE NS_IMETHOD ParseStatus(nsIDOMDocument *aDocument, const nsAString & aStatusMessage, nsIDOMElement **_retval) = 0;

  /**
   * Maximum length (in characters) that a status message can be.
   * For services which do not support status, set to 0.
   */
  /* readonly attribute long maxStatusLength; */
  NS_SCRIPTABLE NS_IMETHOD GetMaxStatusLength(PRInt32 *aMaxStatusLength) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockISocialWebService, FLOCKISOCIALWEBSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKISOCIALWEBSERVICE \
  NS_SCRIPTABLE NS_IMETHOD MarkAllMediaSeen(const nsAString & aPersonUrn); \
  NS_SCRIPTABLE NS_IMETHOD ParseStatus(nsIDOMDocument *aDocument, const nsAString & aStatusMessage, nsIDOMElement **_retval); \
  NS_SCRIPTABLE NS_IMETHOD GetMaxStatusLength(PRInt32 *aMaxStatusLength); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKISOCIALWEBSERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD MarkAllMediaSeen(const nsAString & aPersonUrn) { return _to MarkAllMediaSeen(aPersonUrn); } \
  NS_SCRIPTABLE NS_IMETHOD ParseStatus(nsIDOMDocument *aDocument, const nsAString & aStatusMessage, nsIDOMElement **_retval) { return _to ParseStatus(aDocument, aStatusMessage, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetMaxStatusLength(PRInt32 *aMaxStatusLength) { return _to GetMaxStatusLength(aMaxStatusLength); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKISOCIALWEBSERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD MarkAllMediaSeen(const nsAString & aPersonUrn) { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkAllMediaSeen(aPersonUrn); } \
  NS_SCRIPTABLE NS_IMETHOD ParseStatus(nsIDOMDocument *aDocument, const nsAString & aStatusMessage, nsIDOMElement **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseStatus(aDocument, aStatusMessage, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetMaxStatusLength(PRInt32 *aMaxStatusLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxStatusLength(aMaxStatusLength); } 

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

/* Header file */
class _MYCLASS_ : public flockISocialWebService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKISOCIALWEBSERVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void markAllMediaSeen (in AString aPersonUrn); */
NS_IMETHODIMP _MYCLASS_::MarkAllMediaSeen(const nsAString & aPersonUrn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMElement parseStatus (in nsIDOMDocument aDocument, in AString aStatusMessage); */
NS_IMETHODIMP _MYCLASS_::ParseStatus(nsIDOMDocument *aDocument, const nsAString & aStatusMessage, nsIDOMElement **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long maxStatusLength; */
NS_IMETHODIMP _MYCLASS_::GetMaxStatusLength(PRInt32 *aMaxStatusLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    flockISocialAccount */
#define FLOCKISOCIALACCOUNT_IID_STR "6506d5c9-1598-4edb-b7be-8956a23cd22d"

#define FLOCKISOCIALACCOUNT_IID \
  {0x6506d5c9, 0x1598, 0x4edb, \
    { 0xb7, 0xbe, 0x89, 0x56, 0xa2, 0x3c, 0xd2, 0x2d }}

/**
 * Represents an account with a "social" web service.
 *
 * More documentation here:
 * http://developer.flock.com/wiki/Accounts_Management
 *
 * @see flockISocialWebService
 */
class NS_NO_VTABLE NS_SCRIPTABLE flockISocialAccount : public flockIWebServiceAccount {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKISOCIALACCOUNT_IID)

  /** Indicates whether accounts have friend actions */
  /* readonly attribute boolean hasFriendActions; */
  NS_SCRIPTABLE NS_IMETHOD GetHasFriendActions(PRBool *aHasFriendActions) = 0;

  /** Indicates whether accounts have me status message for display */
  /* readonly attribute boolean isMeStatusSupported; */
  NS_SCRIPTABLE NS_IMETHOD GetIsMeStatusSupported(PRBool *aIsMeStatusSupported) = 0;

  /** Indicates whether accounts have friends status message for display */
  /* readonly attribute boolean isFriendStatusSupported; */
  NS_SCRIPTABLE NS_IMETHOD GetIsFriendStatusSupported(PRBool *aIsFriendStatusSupported) = 0;

  /** Indicates whether accounts status message can be set via API call */
  /* readonly attribute boolean isStatusEditable; */
  NS_SCRIPTABLE NS_IMETHOD GetIsStatusEditable(PRBool *aIsStatusEditable) = 0;

  /** Indicates whether accounts support a "Post Link" action */
  /* readonly attribute boolean isPostLinkSupported; */
  NS_SCRIPTABLE NS_IMETHOD GetIsPostLinkSupported(PRBool *aIsPostLinkSupported) = 0;

  /** Indicates whether accounts support a "My Media Favorites" action */
  /* readonly attribute boolean isMyMediaFavoritesSupported; */
  NS_SCRIPTABLE NS_IMETHOD GetIsMyMediaFavoritesSupported(PRBool *aIsMyMediaFavoritesSupported) = 0;

  /**
   * Set the status message.
   *
   * @param aStatusMessage (in) the status message to be set
   * @param aFlockListener (in) aFlockListener.onSuccess() will be called
   *        back when the call succeeds
   */
  /* void setStatus (in AString aStatusMessage, in flockIListener aFlockListener); */
  NS_SCRIPTABLE NS_IMETHOD SetStatus(const nsAString & aStatusMessage, flockIListener *aFlockListener) = 0;

  /**
   * Returns the status string to be used in the editor widget
   *
   * @return the editable status string
   */
  /* AString getEditableStatus (); */
  NS_SCRIPTABLE NS_IMETHOD GetEditableStatus(nsAString & _retval) = 0;

  /**
   * Formats a status message as it ought to be displayed.
   *
   * @param aStatusMessage (in) the pre-formatted status string
   * @return the full status message
   */
  /* AString formatStatusForDisplay (in AString aStatusMessage); */
  NS_SCRIPTABLE NS_IMETHOD FormatStatusForDisplay(const nsAString & aStatusMessage, nsAString & _retval) = 0;

  /**
   * Formats a friend activity description as it ought to be displayed.
   *
   * @param aFriendActivityUrn (in) the RDF node ID of the friend activity
   *        to be used.
   * @return the formatted friend activity description
   */
  /* AString formatFriendActivityForDisplay (in AString aFriendActivityUrn); */
  NS_SCRIPTABLE NS_IMETHOD FormatFriendActivityForDisplay(const nsAString & aFriendActivityUrn, nsAString & _retval) = 0;

  /**
   * Returns an array of me-notification descriptors, each of which consists of
   * the following pieces of information:
   * - tooltip (used as a tooltip in the UI, eg. "Poke", "Message",
   *            "Friend Request"...)
   * - metricsName (the name to be reported to the metrics services when the
                    me-notificaitons is clicked)
   * - class (class name)
   * - count (the number of new notifications of this type. 0 always means no
   *          new. -1 means that there are new noties, but we can't tell how 
              many.)
   * - URL (to be opened in a new tab, to view the actual notifications on the
   *        web service) 
   *
   * @return a JSON string, since we know it will only ever be called from
   *         JavaScript, and JSON is easier to deal with than nsIArrays, etc. 
   */
  /* AString getMeNotifications (); */
  NS_SCRIPTABLE NS_IMETHOD GetMeNotifications(nsAString & _retval) = 0;

  /**
   * Formats a friend update type description as it ought to be displayed.
   *
   * @param aLastUpdateType (in) the last update type
   * @param aStatus (in) the status of the last update
   * @return the formatted friend activity description
   */
  /* AString getFormattedFriendUpdateType (in AString aLastUpdateType, in AString aStatus); */
  NS_SCRIPTABLE NS_IMETHOD GetFormattedFriendUpdateType(const nsAString & aLastUpdateType, const nsAString & aStatus, nsAString & _retval) = 0;

  /**
   * Returns a JSON string representation of an array of action descriptors.
   * Each action descriptor has the following fields:
   * <ul>
   * <li><strong>label</strong> - the name of the action as it should be
   *     displayed in the UI</li>
   * <li><strong>icon</strong> - the chrome address of the icon graphic
   *     corresponding to the action (optional)</li>
   * <li><strong>spec</strong> - possible values:<ul>
   *   <li>"newtab:<url>" - tells the UI to open a new tab with the specified
   *       URL</li>
   *   <li>"newwindow:<url>" - tells the UI to open a new window with the
   *       specified URL</li>
   *   <li>"mediaquery:<query>" - tells the UI to open the media bar with the
   *       specified stream</li>
   *   <li>"method:<interface>:<methodname>" - tells the UI to QI the service
   *       to the specified interface and then call the specified method.
   *       aFriendURN is always passed in as a parameter to this method.</li>
   *   </ul></li>
   * </ul>
   * The newtab and newwindow action spec strings may contain "%currentURL%" as
   * a substitution, which will be replaced with the URL of the current page.
   *
   * @param aFriendURN (in) the RDF node ID of the friend for whom we are
   *        trying to get a list of actions for.
   * @return a JSON string, since we know it will only ever be called from
   *         JavaScript, and JSON is easier to deal with than nsIArrays, etc.
   */
  /* AString getFriendActions (in AString aFriendURN); */
  NS_SCRIPTABLE NS_IMETHOD GetFriendActions(const nsAString & aFriendURN, nsAString & _retval) = 0;

  /**
   * @return the number of friends associated with this account.
   */
  /* long getFriendCount (); */
  NS_SCRIPTABLE NS_IMETHOD GetFriendCount(PRInt32 *_retval) = 0;

  /**
   * Returns an enumerator on the friends for this account.
   *
   * @return a nsISimpleEnumerator of coop Identities.
   */
  /* nsISimpleEnumerator enumerateFriends (); */
  NS_SCRIPTABLE NS_IMETHOD EnumerateFriends(nsISimpleEnumerator **_retval) = 0;

  /**
   * Returns the URL of the invite friends page associated with the account
   *
   * @return the URL of the invite friends page.
   */
  /* AString getInviteFriendsURL (); */
  NS_SCRIPTABLE NS_IMETHOD GetInviteFriendsURL(nsAString & _retval) = 0;

  /**
   * Performs a service-specific action to share arbitrary content with
   * a friend of the logged-in user.
   *
   * @param aFriendURN (in) the RDF node ID of the friend with whom we are
   *        sharing content.
   * @param aTransferable (in) The content to be shared.
   */
  /* void shareWithFriend (in AString aFriendURN, in nsITransferable aTransferable); */
  NS_SCRIPTABLE NS_IMETHOD ShareWithFriend(const nsAString & aFriendURN, nsITransferable *aTransferable) = 0;

  /**
   * Returns the URL of the profile page associated with the identity specified
   * by aFriendURN.
   *
   * @return the URL of the friend profile page
   */
  /* AString getProfileURLForFriend (in AString aFriendURN); */
  NS_SCRIPTABLE NS_IMETHOD GetProfileURLForFriend(const nsAString & aFriendURN, nsAString & _retval) = 0;

  /**
   * Performs a service-specific action to post arbitrary data when the user
   * executes the "Post Link" action for this account.
   *
   * @param aTransferable (in) resulting from a drag and drop onto the Post
   *        Link button. Extract the URL from this transferable. If null, then
   *        the Post Link button was clicked: use the current tab's URL.
   */
  /* void postLink (in nsITransferable aTransferable); */
  NS_SCRIPTABLE NS_IMETHOD PostLink(nsITransferable *aTransferable) = 0;

  /**
   * Clear me notifications of a certain type
   *
   * Typically, this function is called when the user consumes
   * a notification of type aType from their me-card.
   *
   * @param aType (in) the type of me notification to clear
   */
  /* void markAllMeNotificationsSeen (in AString aType); */
  NS_SCRIPTABLE NS_IMETHOD MarkAllMeNotificationsSeen(const nsAString & aType) = 0;

  /**
   * Sends a "Check out Flock!" kind of message to the selected friend.
   *
   * @param aFriendURN (in) the URN of the friend we are messaging.
   */
  /* void shareFlock (in AString aFriendURN); */
  NS_SCRIPTABLE NS_IMETHOD ShareFlock(const nsAString & aFriendURN) = 0;

  /**
   * Perform any service-specific action with the selected friend.
   *
   * @param aAction (in) arbitrary string to select an action.
   * @param aFriendURN (in) the URN of the friend to act upon.
   * @param aActivityURN (in) optional URN of the activity to act upon.
   */
  /* void friendAction (in AString aAction, in AString aFriendURN, in AString aActivityURN); */
  NS_SCRIPTABLE NS_IMETHOD FriendAction(const nsAString & aAction, const nsAString & aFriendURN, const nsAString & aActivityURN) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockISocialAccount, FLOCKISOCIALACCOUNT_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKISOCIALACCOUNT \
  NS_SCRIPTABLE NS_IMETHOD GetHasFriendActions(PRBool *aHasFriendActions); \
  NS_SCRIPTABLE NS_IMETHOD GetIsMeStatusSupported(PRBool *aIsMeStatusSupported); \
  NS_SCRIPTABLE NS_IMETHOD GetIsFriendStatusSupported(PRBool *aIsFriendStatusSupported); \
  NS_SCRIPTABLE NS_IMETHOD GetIsStatusEditable(PRBool *aIsStatusEditable); \
  NS_SCRIPTABLE NS_IMETHOD GetIsPostLinkSupported(PRBool *aIsPostLinkSupported); \
  NS_SCRIPTABLE NS_IMETHOD GetIsMyMediaFavoritesSupported(PRBool *aIsMyMediaFavoritesSupported); \
  NS_SCRIPTABLE NS_IMETHOD SetStatus(const nsAString & aStatusMessage, flockIListener *aFlockListener); \
  NS_SCRIPTABLE NS_IMETHOD GetEditableStatus(nsAString & _retval); \
  NS_SCRIPTABLE NS_IMETHOD FormatStatusForDisplay(const nsAString & aStatusMessage, nsAString & _retval); \
  NS_SCRIPTABLE NS_IMETHOD FormatFriendActivityForDisplay(const nsAString & aFriendActivityUrn, nsAString & _retval); \
  NS_SCRIPTABLE NS_IMETHOD GetMeNotifications(nsAString & _retval); \
  NS_SCRIPTABLE NS_IMETHOD GetFormattedFriendUpdateType(const nsAString & aLastUpdateType, const nsAString & aStatus, nsAString & _retval); \
  NS_SCRIPTABLE NS_IMETHOD GetFriendActions(const nsAString & aFriendURN, nsAString & _retval); \
  NS_SCRIPTABLE NS_IMETHOD GetFriendCount(PRInt32 *_retval); \
  NS_SCRIPTABLE NS_IMETHOD EnumerateFriends(nsISimpleEnumerator **_retval); \
  NS_SCRIPTABLE NS_IMETHOD GetInviteFriendsURL(nsAString & _retval); \
  NS_SCRIPTABLE NS_IMETHOD ShareWithFriend(const nsAString & aFriendURN, nsITransferable *aTransferable); \
  NS_SCRIPTABLE NS_IMETHOD GetProfileURLForFriend(const nsAString & aFriendURN, nsAString & _retval); \
  NS_SCRIPTABLE NS_IMETHOD PostLink(nsITransferable *aTransferable); \
  NS_SCRIPTABLE NS_IMETHOD MarkAllMeNotificationsSeen(const nsAString & aType); \
  NS_SCRIPTABLE NS_IMETHOD ShareFlock(const nsAString & aFriendURN); \
  NS_SCRIPTABLE NS_IMETHOD FriendAction(const nsAString & aAction, const nsAString & aFriendURN, const nsAString & aActivityURN); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKISOCIALACCOUNT(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetHasFriendActions(PRBool *aHasFriendActions) { return _to GetHasFriendActions(aHasFriendActions); } \
  NS_SCRIPTABLE NS_IMETHOD GetIsMeStatusSupported(PRBool *aIsMeStatusSupported) { return _to GetIsMeStatusSupported(aIsMeStatusSupported); } \
  NS_SCRIPTABLE NS_IMETHOD GetIsFriendStatusSupported(PRBool *aIsFriendStatusSupported) { return _to GetIsFriendStatusSupported(aIsFriendStatusSupported); } \
  NS_SCRIPTABLE NS_IMETHOD GetIsStatusEditable(PRBool *aIsStatusEditable) { return _to GetIsStatusEditable(aIsStatusEditable); } \
  NS_SCRIPTABLE NS_IMETHOD GetIsPostLinkSupported(PRBool *aIsPostLinkSupported) { return _to GetIsPostLinkSupported(aIsPostLinkSupported); } \
  NS_SCRIPTABLE NS_IMETHOD GetIsMyMediaFavoritesSupported(PRBool *aIsMyMediaFavoritesSupported) { return _to GetIsMyMediaFavoritesSupported(aIsMyMediaFavoritesSupported); } \
  NS_SCRIPTABLE NS_IMETHOD SetStatus(const nsAString & aStatusMessage, flockIListener *aFlockListener) { return _to SetStatus(aStatusMessage, aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD GetEditableStatus(nsAString & _retval) { return _to GetEditableStatus(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD FormatStatusForDisplay(const nsAString & aStatusMessage, nsAString & _retval) { return _to FormatStatusForDisplay(aStatusMessage, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD FormatFriendActivityForDisplay(const nsAString & aFriendActivityUrn, nsAString & _retval) { return _to FormatFriendActivityForDisplay(aFriendActivityUrn, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetMeNotifications(nsAString & _retval) { return _to GetMeNotifications(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFormattedFriendUpdateType(const nsAString & aLastUpdateType, const nsAString & aStatus, nsAString & _retval) { return _to GetFormattedFriendUpdateType(aLastUpdateType, aStatus, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFriendActions(const nsAString & aFriendURN, nsAString & _retval) { return _to GetFriendActions(aFriendURN, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFriendCount(PRInt32 *_retval) { return _to GetFriendCount(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD EnumerateFriends(nsISimpleEnumerator **_retval) { return _to EnumerateFriends(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetInviteFriendsURL(nsAString & _retval) { return _to GetInviteFriendsURL(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD ShareWithFriend(const nsAString & aFriendURN, nsITransferable *aTransferable) { return _to ShareWithFriend(aFriendURN, aTransferable); } \
  NS_SCRIPTABLE NS_IMETHOD GetProfileURLForFriend(const nsAString & aFriendURN, nsAString & _retval) { return _to GetProfileURLForFriend(aFriendURN, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD PostLink(nsITransferable *aTransferable) { return _to PostLink(aTransferable); } \
  NS_SCRIPTABLE NS_IMETHOD MarkAllMeNotificationsSeen(const nsAString & aType) { return _to MarkAllMeNotificationsSeen(aType); } \
  NS_SCRIPTABLE NS_IMETHOD ShareFlock(const nsAString & aFriendURN) { return _to ShareFlock(aFriendURN); } \
  NS_SCRIPTABLE NS_IMETHOD FriendAction(const nsAString & aAction, const nsAString & aFriendURN, const nsAString & aActivityURN) { return _to FriendAction(aAction, aFriendURN, 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_FLOCKISOCIALACCOUNT(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetHasFriendActions(PRBool *aHasFriendActions) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHasFriendActions(aHasFriendActions); } \
  NS_SCRIPTABLE NS_IMETHOD GetIsMeStatusSupported(PRBool *aIsMeStatusSupported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsMeStatusSupported(aIsMeStatusSupported); } \
  NS_SCRIPTABLE NS_IMETHOD GetIsFriendStatusSupported(PRBool *aIsFriendStatusSupported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsFriendStatusSupported(aIsFriendStatusSupported); } \
  NS_SCRIPTABLE NS_IMETHOD GetIsStatusEditable(PRBool *aIsStatusEditable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsStatusEditable(aIsStatusEditable); } \
  NS_SCRIPTABLE NS_IMETHOD GetIsPostLinkSupported(PRBool *aIsPostLinkSupported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsPostLinkSupported(aIsPostLinkSupported); } \
  NS_SCRIPTABLE NS_IMETHOD GetIsMyMediaFavoritesSupported(PRBool *aIsMyMediaFavoritesSupported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsMyMediaFavoritesSupported(aIsMyMediaFavoritesSupported); } \
  NS_SCRIPTABLE NS_IMETHOD SetStatus(const nsAString & aStatusMessage, flockIListener *aFlockListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStatus(aStatusMessage, aFlockListener); } \
  NS_SCRIPTABLE NS_IMETHOD GetEditableStatus(nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEditableStatus(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD FormatStatusForDisplay(const nsAString & aStatusMessage, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FormatStatusForDisplay(aStatusMessage, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD FormatFriendActivityForDisplay(const nsAString & aFriendActivityUrn, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FormatFriendActivityForDisplay(aFriendActivityUrn, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetMeNotifications(nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMeNotifications(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFormattedFriendUpdateType(const nsAString & aLastUpdateType, const nsAString & aStatus, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFormattedFriendUpdateType(aLastUpdateType, aStatus, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFriendActions(const nsAString & aFriendURN, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFriendActions(aFriendURN, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFriendCount(PRInt32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFriendCount(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD EnumerateFriends(nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateFriends(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetInviteFriendsURL(nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInviteFriendsURL(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD ShareWithFriend(const nsAString & aFriendURN, nsITransferable *aTransferable) { return !_to ? NS_ERROR_NULL_POINTER : _to->ShareWithFriend(aFriendURN, aTransferable); } \
  NS_SCRIPTABLE NS_IMETHOD GetProfileURLForFriend(const nsAString & aFriendURN, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProfileURLForFriend(aFriendURN, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD PostLink(nsITransferable *aTransferable) { return !_to ? NS_ERROR_NULL_POINTER : _to->PostLink(aTransferable); } \
  NS_SCRIPTABLE NS_IMETHOD MarkAllMeNotificationsSeen(const nsAString & aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkAllMeNotificationsSeen(aType); } \
  NS_SCRIPTABLE NS_IMETHOD ShareFlock(const nsAString & aFriendURN) { return !_to ? NS_ERROR_NULL_POINTER : _to->ShareFlock(aFriendURN); } \
  NS_SCRIPTABLE NS_IMETHOD FriendAction(const nsAString & aAction, const nsAString & aFriendURN, const nsAString & aActivityURN) { return !_to ? NS_ERROR_NULL_POINTER : _to->FriendAction(aAction, aFriendURN, aActivityURN); } 

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

/* Header file */
class _MYCLASS_ : public flockISocialAccount
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKISOCIALACCOUNT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute boolean hasFriendActions; */
NS_IMETHODIMP _MYCLASS_::GetHasFriendActions(PRBool *aHasFriendActions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isMeStatusSupported; */
NS_IMETHODIMP _MYCLASS_::GetIsMeStatusSupported(PRBool *aIsMeStatusSupported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isFriendStatusSupported; */
NS_IMETHODIMP _MYCLASS_::GetIsFriendStatusSupported(PRBool *aIsFriendStatusSupported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isStatusEditable; */
NS_IMETHODIMP _MYCLASS_::GetIsStatusEditable(PRBool *aIsStatusEditable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isPostLinkSupported; */
NS_IMETHODIMP _MYCLASS_::GetIsPostLinkSupported(PRBool *aIsPostLinkSupported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isMyMediaFavoritesSupported; */
NS_IMETHODIMP _MYCLASS_::GetIsMyMediaFavoritesSupported(PRBool *aIsMyMediaFavoritesSupported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* AString getEditableStatus (); */
NS_IMETHODIMP _MYCLASS_::GetEditableStatus(nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString formatStatusForDisplay (in AString aStatusMessage); */
NS_IMETHODIMP _MYCLASS_::FormatStatusForDisplay(const nsAString & aStatusMessage, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString formatFriendActivityForDisplay (in AString aFriendActivityUrn); */
NS_IMETHODIMP _MYCLASS_::FormatFriendActivityForDisplay(const nsAString & aFriendActivityUrn, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getMeNotifications (); */
NS_IMETHODIMP _MYCLASS_::GetMeNotifications(nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getFormattedFriendUpdateType (in AString aLastUpdateType, in AString aStatus); */
NS_IMETHODIMP _MYCLASS_::GetFormattedFriendUpdateType(const nsAString & aLastUpdateType, const nsAString & aStatus, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getFriendActions (in AString aFriendURN); */
NS_IMETHODIMP _MYCLASS_::GetFriendActions(const nsAString & aFriendURN, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long getFriendCount (); */
NS_IMETHODIMP _MYCLASS_::GetFriendCount(PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator enumerateFriends (); */
NS_IMETHODIMP _MYCLASS_::EnumerateFriends(nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getInviteFriendsURL (); */
NS_IMETHODIMP _MYCLASS_::GetInviteFriendsURL(nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void shareWithFriend (in AString aFriendURN, in nsITransferable aTransferable); */
NS_IMETHODIMP _MYCLASS_::ShareWithFriend(const nsAString & aFriendURN, nsITransferable *aTransferable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getProfileURLForFriend (in AString aFriendURN); */
NS_IMETHODIMP _MYCLASS_::GetProfileURLForFriend(const nsAString & aFriendURN, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void postLink (in nsITransferable aTransferable); */
NS_IMETHODIMP _MYCLASS_::PostLink(nsITransferable *aTransferable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markAllMeNotificationsSeen (in AString aType); */
NS_IMETHODIMP _MYCLASS_::MarkAllMeNotificationsSeen(const nsAString & aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void shareFlock (in AString aFriendURN); */
NS_IMETHODIMP _MYCLASS_::ShareFlock(const nsAString & aFriendURN)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void friendAction (in AString aAction, in AString aFriendURN, in AString aActivityURN); */
NS_IMETHODIMP _MYCLASS_::FriendAction(const nsAString & aAction, const nsAString & aFriendURN, const nsAString & aActivityURN)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_flockISocialWebService_h__ */
