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

#ifndef __gen_flockIAccountService_h__
#define __gen_flockIAccountService_h__


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

#ifndef __gen_nsIObserver_h__
#include "nsIObserver.h"
#endif

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


/* starting interface:    flockIAccountObserver */
#define FLOCKIACCOUNTOBSERVER_IID_STR "88e9b869-1234-4be9-9f08-5881f28d392e"

#define FLOCKIACCOUNTOBSERVER_IID \
  {0x88e9b869, 0x1234, 0x4be9, \
    { 0x9f, 0x08, 0x58, 0x81, 0xf2, 0x8d, 0x39, 0x2e }}

class NS_NO_VTABLE NS_SCRIPTABLE flockIAccountObserver : public nsIObserver {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIACCOUNTOBSERVER_IID)

  /**
   * Functionality to be performed when AccountService observes that an account
   * has been authenticated.
   *
   * @param aAccount (in) XPCOM Account that has been authenticated
   */
  /* void onAccountAuthenticated (in flockIWebServiceAccount aAccount); */
  NS_SCRIPTABLE NS_IMETHOD OnAccountAuthenticated(flockIWebServiceAccount *aAccount) = 0;

  /**
   * Functionality to be performed when AccountService observes that an account
   * has just been unauthenticated.
   *
   * @param aAccount (in) XPCOM Account that has been unauthenticated
   */
  /* void onAccountUnauthenticated (in flockIWebServiceAccount aAccount); */
  NS_SCRIPTABLE NS_IMETHOD OnAccountUnauthenticated(flockIWebServiceAccount *aAccount) = 0;

  /**
   * @param aAccount (in) XPCOM Account that has started refreshing
   */
  /* void onAccountRefreshing (in flockIWebServiceAccount aAccount); */
  NS_SCRIPTABLE NS_IMETHOD OnAccountRefreshing(flockIWebServiceAccount *aAccount) = 0;

  /**
   * @param aAccount (in) XPCOM Account that has finished refreshing
   */
  /* void onAccountNoLongerRefreshing (in flockIWebServiceAccount aAccount); */
  NS_SCRIPTABLE NS_IMETHOD OnAccountNoLongerRefreshing(flockIWebServiceAccount *aAccount) = 0;

  /**
   * @param aAccount (in) XPCOM Account that has been removed
   */
  /* void onAccountRemoved (in flockIWebServiceAccount aAccount); */
  NS_SCRIPTABLE NS_IMETHOD OnAccountRemoved(flockIWebServiceAccount *aAccount) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIAccountObserver, FLOCKIACCOUNTOBSERVER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIACCOUNTOBSERVER \
  NS_SCRIPTABLE NS_IMETHOD OnAccountAuthenticated(flockIWebServiceAccount *aAccount); \
  NS_SCRIPTABLE NS_IMETHOD OnAccountUnauthenticated(flockIWebServiceAccount *aAccount); \
  NS_SCRIPTABLE NS_IMETHOD OnAccountRefreshing(flockIWebServiceAccount *aAccount); \
  NS_SCRIPTABLE NS_IMETHOD OnAccountNoLongerRefreshing(flockIWebServiceAccount *aAccount); \
  NS_SCRIPTABLE NS_IMETHOD OnAccountRemoved(flockIWebServiceAccount *aAccount); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIACCOUNTOBSERVER(_to) \
  NS_SCRIPTABLE NS_IMETHOD OnAccountAuthenticated(flockIWebServiceAccount *aAccount) { return _to OnAccountAuthenticated(aAccount); } \
  NS_SCRIPTABLE NS_IMETHOD OnAccountUnauthenticated(flockIWebServiceAccount *aAccount) { return _to OnAccountUnauthenticated(aAccount); } \
  NS_SCRIPTABLE NS_IMETHOD OnAccountRefreshing(flockIWebServiceAccount *aAccount) { return _to OnAccountRefreshing(aAccount); } \
  NS_SCRIPTABLE NS_IMETHOD OnAccountNoLongerRefreshing(flockIWebServiceAccount *aAccount) { return _to OnAccountNoLongerRefreshing(aAccount); } \
  NS_SCRIPTABLE NS_IMETHOD OnAccountRemoved(flockIWebServiceAccount *aAccount) { return _to OnAccountRemoved(aAccount); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIACCOUNTOBSERVER(_to) \
  NS_SCRIPTABLE NS_IMETHOD OnAccountAuthenticated(flockIWebServiceAccount *aAccount) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAccountAuthenticated(aAccount); } \
  NS_SCRIPTABLE NS_IMETHOD OnAccountUnauthenticated(flockIWebServiceAccount *aAccount) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAccountUnauthenticated(aAccount); } \
  NS_SCRIPTABLE NS_IMETHOD OnAccountRefreshing(flockIWebServiceAccount *aAccount) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAccountRefreshing(aAccount); } \
  NS_SCRIPTABLE NS_IMETHOD OnAccountNoLongerRefreshing(flockIWebServiceAccount *aAccount) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAccountNoLongerRefreshing(aAccount); } \
  NS_SCRIPTABLE NS_IMETHOD OnAccountRemoved(flockIWebServiceAccount *aAccount) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAccountRemoved(aAccount); } 

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

/* Header file */
class _MYCLASS_ : public flockIAccountObserver
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIACCOUNTOBSERVER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void onAccountAuthenticated (in flockIWebServiceAccount aAccount); */
NS_IMETHODIMP _MYCLASS_::OnAccountAuthenticated(flockIWebServiceAccount *aAccount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onAccountUnauthenticated (in flockIWebServiceAccount aAccount); */
NS_IMETHODIMP _MYCLASS_::OnAccountUnauthenticated(flockIWebServiceAccount *aAccount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onAccountRefreshing (in flockIWebServiceAccount aAccount); */
NS_IMETHODIMP _MYCLASS_::OnAccountRefreshing(flockIWebServiceAccount *aAccount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onAccountNoLongerRefreshing (in flockIWebServiceAccount aAccount); */
NS_IMETHODIMP _MYCLASS_::OnAccountNoLongerRefreshing(flockIWebServiceAccount *aAccount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onAccountRemoved (in flockIWebServiceAccount aAccount); */
NS_IMETHODIMP _MYCLASS_::OnAccountRemoved(flockIWebServiceAccount *aAccount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    flockIAccountService */
#define FLOCKIACCOUNTSERVICE_IID_STR "d6844567-1258-4a92-8ecd-20b810683b78"

#define FLOCKIACCOUNTSERVICE_IID \
  {0xd6844567, 0x1258, 0x4a92, \
    { 0x8e, 0xcd, 0x20, 0xb8, 0x10, 0x68, 0x3b, 0x78 }}

class NS_NO_VTABLE NS_SCRIPTABLE flockIAccountService : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIACCOUNTSERVICE_IID)

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

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

  /**
   * Tells the Account Service to send a change notification for a
   * specific account.
   *
   * @param aMethod (in) The type of change.
   * @param aAccount (in) The XPCOM account that has changed.
   */
  /* void notifyObservers (in AString aMethod, in flockIWebServiceAccount aAccount); */
  NS_SCRIPTABLE NS_IMETHOD NotifyObservers(const nsAString & aMethod, flockIWebServiceAccount *aAccount) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIAccountService, FLOCKIACCOUNTSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIACCOUNTSERVICE \
  NS_SCRIPTABLE NS_IMETHOD AddObserver(flockIAccountObserver *aObserver); \
  NS_SCRIPTABLE NS_IMETHOD RemoveObserver(flockIAccountObserver *aObserver); \
  NS_SCRIPTABLE NS_IMETHOD NotifyObservers(const nsAString & aMethod, flockIWebServiceAccount *aAccount); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIACCOUNTSERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD AddObserver(flockIAccountObserver *aObserver) { return _to AddObserver(aObserver); } \
  NS_SCRIPTABLE NS_IMETHOD RemoveObserver(flockIAccountObserver *aObserver) { return _to RemoveObserver(aObserver); } \
  NS_SCRIPTABLE NS_IMETHOD NotifyObservers(const nsAString & aMethod, flockIWebServiceAccount *aAccount) { return _to NotifyObservers(aMethod, aAccount); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIACCOUNTSERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD AddObserver(flockIAccountObserver *aObserver) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddObserver(aObserver); } \
  NS_SCRIPTABLE NS_IMETHOD RemoveObserver(flockIAccountObserver *aObserver) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveObserver(aObserver); } \
  NS_SCRIPTABLE NS_IMETHOD NotifyObservers(const nsAString & aMethod, flockIWebServiceAccount *aAccount) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyObservers(aMethod, aAccount); } 

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

/* Header file */
class _MYCLASS_ : public flockIAccountService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIACCOUNTSERVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

/* void notifyObservers (in AString aMethod, in flockIWebServiceAccount aAccount); */
NS_IMETHODIMP _MYCLASS_::NotifyObservers(const nsAString & aMethod, flockIWebServiceAccount *aAccount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_flockIAccountService_h__ */
