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

#ifndef __gen_nsIUpdateService_h__
#define __gen_nsIUpdateService_h__


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

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


/* starting interface:    nsIUpdateItem */
#define NS_IUPDATEITEM_IID_STR "37648f86-0f77-4007-929e-673a75d5438f"

#define NS_IUPDATEITEM_IID \
  {0x37648f86, 0x0f77, 0x4007, \
    { 0x92, 0x9e, 0x67, 0x3a, 0x75, 0xd5, 0x43, 0x8f }}

class NS_NO_VTABLE nsIUpdateItem : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IUPDATEITEM_IID)

  /* readonly attribute string id; */
  NS_IMETHOD GetId(char * *aId) = 0;

  /* readonly attribute string version; */
  NS_IMETHOD GetVersion(char * *aVersion) = 0;

  /* readonly attribute string minAppVersion; */
  NS_IMETHOD GetMinAppVersion(char * *aMinAppVersion) = 0;

  /* readonly attribute string maxAppVersion; */
  NS_IMETHOD GetMaxAppVersion(char * *aMaxAppVersion) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute long row; */
  NS_IMETHOD GetRow(PRInt32 *aRow) = 0;

  /* readonly attribute wstring xpiURL; */
  NS_IMETHOD GetXpiURL(PRUnichar * *aXpiURL) = 0;

  /* readonly attribute wstring iconURL; */
  NS_IMETHOD GetIconURL(PRUnichar * *aIconURL) = 0;

  /* readonly attribute wstring updateRDF; */
  NS_IMETHOD GetUpdateRDF(PRUnichar * *aUpdateRDF) = 0;

  enum { TYPE_APP = 1U };

  enum { TYPE_EXTENSION = 2U };

  enum { TYPE_THEME = 4U };

  enum { TYPE_LOCALE = 8U };

  enum { TYPE_ADDON = 14U };

  enum { TYPE_ANY = 15U };

  /* readonly attribute long type; */
  NS_IMETHOD GetType(PRInt32 *aType) = 0;

  /* void init (in string aID, in string aVersion, in string aMinAppVersion, in string aMaxAppVersion, in wstring aName, in long aRow, in wstring aUpdateURL, in wstring aIconURL, in wstring aUpdateRDF, in long aType); */
  NS_IMETHOD Init(const char *aID, const char *aVersion, const char *aMinAppVersion, const char *aMaxAppVersion, const PRUnichar *aName, PRInt32 aRow, const PRUnichar *aUpdateURL, const PRUnichar *aIconURL, const PRUnichar *aUpdateRDF, PRInt32 aType) = 0;

  /* readonly attribute wstring objectSource; */
  NS_IMETHOD GetObjectSource(PRUnichar * *aObjectSource) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIUPDATEITEM \
  NS_IMETHOD GetId(char * *aId); \
  NS_IMETHOD GetVersion(char * *aVersion); \
  NS_IMETHOD GetMinAppVersion(char * *aMinAppVersion); \
  NS_IMETHOD GetMaxAppVersion(char * *aMaxAppVersion); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetRow(PRInt32 *aRow); \
  NS_IMETHOD GetXpiURL(PRUnichar * *aXpiURL); \
  NS_IMETHOD GetIconURL(PRUnichar * *aIconURL); \
  NS_IMETHOD GetUpdateRDF(PRUnichar * *aUpdateRDF); \
  NS_IMETHOD GetType(PRInt32 *aType); \
  NS_IMETHOD Init(const char *aID, const char *aVersion, const char *aMinAppVersion, const char *aMaxAppVersion, const PRUnichar *aName, PRInt32 aRow, const PRUnichar *aUpdateURL, const PRUnichar *aIconURL, const PRUnichar *aUpdateRDF, PRInt32 aType); \
  NS_IMETHOD GetObjectSource(PRUnichar * *aObjectSource); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIUPDATEITEM(_to) \
  NS_IMETHOD GetId(char * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetVersion(char * *aVersion) { return _to GetVersion(aVersion); } \
  NS_IMETHOD GetMinAppVersion(char * *aMinAppVersion) { return _to GetMinAppVersion(aMinAppVersion); } \
  NS_IMETHOD GetMaxAppVersion(char * *aMaxAppVersion) { return _to GetMaxAppVersion(aMaxAppVersion); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetRow(PRInt32 *aRow) { return _to GetRow(aRow); } \
  NS_IMETHOD GetXpiURL(PRUnichar * *aXpiURL) { return _to GetXpiURL(aXpiURL); } \
  NS_IMETHOD GetIconURL(PRUnichar * *aIconURL) { return _to GetIconURL(aIconURL); } \
  NS_IMETHOD GetUpdateRDF(PRUnichar * *aUpdateRDF) { return _to GetUpdateRDF(aUpdateRDF); } \
  NS_IMETHOD GetType(PRInt32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD Init(const char *aID, const char *aVersion, const char *aMinAppVersion, const char *aMaxAppVersion, const PRUnichar *aName, PRInt32 aRow, const PRUnichar *aUpdateURL, const PRUnichar *aIconURL, const PRUnichar *aUpdateRDF, PRInt32 aType) { return _to Init(aID, aVersion, aMinAppVersion, aMaxAppVersion, aName, aRow, aUpdateURL, aIconURL, aUpdateRDF, aType); } \
  NS_IMETHOD GetObjectSource(PRUnichar * *aObjectSource) { return _to GetObjectSource(aObjectSource); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIUPDATEITEM(_to) \
  NS_IMETHOD GetId(char * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetVersion(char * *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
  NS_IMETHOD GetMinAppVersion(char * *aMinAppVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinAppVersion(aMinAppVersion); } \
  NS_IMETHOD GetMaxAppVersion(char * *aMaxAppVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxAppVersion(aMaxAppVersion); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetRow(PRInt32 *aRow) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRow(aRow); } \
  NS_IMETHOD GetXpiURL(PRUnichar * *aXpiURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetXpiURL(aXpiURL); } \
  NS_IMETHOD GetIconURL(PRUnichar * *aIconURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIconURL(aIconURL); } \
  NS_IMETHOD GetUpdateRDF(PRUnichar * *aUpdateRDF) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUpdateRDF(aUpdateRDF); } \
  NS_IMETHOD GetType(PRInt32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD Init(const char *aID, const char *aVersion, const char *aMinAppVersion, const char *aMaxAppVersion, const PRUnichar *aName, PRInt32 aRow, const PRUnichar *aUpdateURL, const PRUnichar *aIconURL, const PRUnichar *aUpdateRDF, PRInt32 aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(aID, aVersion, aMinAppVersion, aMaxAppVersion, aName, aRow, aUpdateURL, aIconURL, aUpdateRDF, aType); } \
  NS_IMETHOD GetObjectSource(PRUnichar * *aObjectSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetObjectSource(aObjectSource); } 

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

/* Header file */
class nsUpdateItem : public nsIUpdateItem
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIUPDATEITEM

  nsUpdateItem();

private:
  ~nsUpdateItem();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsUpdateItem, nsIUpdateItem)

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

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

/* readonly attribute string id; */
NS_IMETHODIMP nsUpdateItem::GetId(char * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string version; */
NS_IMETHODIMP nsUpdateItem::GetVersion(char * *aVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string minAppVersion; */
NS_IMETHODIMP nsUpdateItem::GetMinAppVersion(char * *aMinAppVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string maxAppVersion; */
NS_IMETHODIMP nsUpdateItem::GetMaxAppVersion(char * *aMaxAppVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP nsUpdateItem::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long row; */
NS_IMETHODIMP nsUpdateItem::GetRow(PRInt32 *aRow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring xpiURL; */
NS_IMETHODIMP nsUpdateItem::GetXpiURL(PRUnichar * *aXpiURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring iconURL; */
NS_IMETHODIMP nsUpdateItem::GetIconURL(PRUnichar * *aIconURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring updateRDF; */
NS_IMETHODIMP nsUpdateItem::GetUpdateRDF(PRUnichar * *aUpdateRDF)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long type; */
NS_IMETHODIMP nsUpdateItem::GetType(PRInt32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void init (in string aID, in string aVersion, in string aMinAppVersion, in string aMaxAppVersion, in wstring aName, in long aRow, in wstring aUpdateURL, in wstring aIconURL, in wstring aUpdateRDF, in long aType); */
NS_IMETHODIMP nsUpdateItem::Init(const char *aID, const char *aVersion, const char *aMinAppVersion, const char *aMaxAppVersion, const PRUnichar *aName, PRInt32 aRow, const PRUnichar *aUpdateURL, const PRUnichar *aIconURL, const PRUnichar *aUpdateRDF, PRInt32 aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring objectSource; */
NS_IMETHODIMP nsUpdateItem::GetObjectSource(PRUnichar * *aObjectSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIAppUpdateInfoItem */
#define NS_IAPPUPDATEINFOITEM_IID_STR "24aee3ca-a274-4247-bd3b-d0acbb5a98aa"

#define NS_IAPPUPDATEINFOITEM_IID \
  {0x24aee3ca, 0xa274, 0x4247, \
    { 0xbd, 0x3b, 0xd0, 0xac, 0xbb, 0x5a, 0x98, 0xaa }}

class NS_NO_VTABLE nsIAppUpdateInfoItem : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IAPPUPDATEINFOITEM_IID)

  /* readonly attribute wstring internalName; */
  NS_IMETHOD GetInternalName(PRUnichar * *aInternalName) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute wstring URL; */
  NS_IMETHOD GetURL(PRUnichar * *aURL) = 0;

  /* readonly attribute wstring infoURL; */
  NS_IMETHOD GetInfoURL(PRUnichar * *aInfoURL) = 0;

  /* readonly attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIAPPUPDATEINFOITEM \
  NS_IMETHOD GetInternalName(PRUnichar * *aInternalName); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetURL(PRUnichar * *aURL); \
  NS_IMETHOD GetInfoURL(PRUnichar * *aInfoURL); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIAPPUPDATEINFOITEM(_to) \
  NS_IMETHOD GetInternalName(PRUnichar * *aInternalName) { return _to GetInternalName(aInternalName); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetURL(PRUnichar * *aURL) { return _to GetURL(aURL); } \
  NS_IMETHOD GetInfoURL(PRUnichar * *aInfoURL) { return _to GetInfoURL(aInfoURL); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIAPPUPDATEINFOITEM(_to) \
  NS_IMETHOD GetInternalName(PRUnichar * *aInternalName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInternalName(aInternalName); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetURL(PRUnichar * *aURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetURL(aURL); } \
  NS_IMETHOD GetInfoURL(PRUnichar * *aInfoURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInfoURL(aInfoURL); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } 

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

/* Header file */
class nsAppUpdateInfoItem : public nsIAppUpdateInfoItem
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIAPPUPDATEINFOITEM

  nsAppUpdateInfoItem();

private:
  ~nsAppUpdateInfoItem();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsAppUpdateInfoItem, nsIAppUpdateInfoItem)

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

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

/* readonly attribute wstring internalName; */
NS_IMETHODIMP nsAppUpdateInfoItem::GetInternalName(PRUnichar * *aInternalName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP nsAppUpdateInfoItem::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring URL; */
NS_IMETHODIMP nsAppUpdateInfoItem::GetURL(PRUnichar * *aURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring infoURL; */
NS_IMETHODIMP nsAppUpdateInfoItem::GetInfoURL(PRUnichar * *aInfoURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring description; */
NS_IMETHODIMP nsAppUpdateInfoItem::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIAppUpdateInfo */
#define NS_IAPPUPDATEINFO_IID_STR "2daab124-9bc7-4c35-bb7b-0fecdea03ce8"

#define NS_IAPPUPDATEINFO_IID \
  {0x2daab124, 0x9bc7, 0x4c35, \
    { 0xbb, 0x7b, 0x0f, 0xec, 0xde, 0xa0, 0x3c, 0xe8 }}

class NS_NO_VTABLE nsIAppUpdateInfo : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IAPPUPDATEINFO_IID)

  /* readonly attribute wstring updateVersion; */
  NS_IMETHOD GetUpdateVersion(PRUnichar * *aUpdateVersion) = 0;

  /* readonly attribute wstring updateDisplayVersion; */
  NS_IMETHOD GetUpdateDisplayVersion(PRUnichar * *aUpdateDisplayVersion) = 0;

  /* readonly attribute wstring updateInfoURL; */
  NS_IMETHOD GetUpdateInfoURL(PRUnichar * *aUpdateInfoURL) = 0;

  /* void getCollection (in string aCollectionName, out unsigned long aItemCount, [array, size_is (aItemCount), retval] out nsIAppUpdateInfoItem aItems); */
  NS_IMETHOD GetCollection(const char *aCollectionName, PRUint32 *aItemCount, nsIAppUpdateInfoItem ***aItems) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIAPPUPDATEINFO \
  NS_IMETHOD GetUpdateVersion(PRUnichar * *aUpdateVersion); \
  NS_IMETHOD GetUpdateDisplayVersion(PRUnichar * *aUpdateDisplayVersion); \
  NS_IMETHOD GetUpdateInfoURL(PRUnichar * *aUpdateInfoURL); \
  NS_IMETHOD GetCollection(const char *aCollectionName, PRUint32 *aItemCount, nsIAppUpdateInfoItem ***aItems); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIAPPUPDATEINFO(_to) \
  NS_IMETHOD GetUpdateVersion(PRUnichar * *aUpdateVersion) { return _to GetUpdateVersion(aUpdateVersion); } \
  NS_IMETHOD GetUpdateDisplayVersion(PRUnichar * *aUpdateDisplayVersion) { return _to GetUpdateDisplayVersion(aUpdateDisplayVersion); } \
  NS_IMETHOD GetUpdateInfoURL(PRUnichar * *aUpdateInfoURL) { return _to GetUpdateInfoURL(aUpdateInfoURL); } \
  NS_IMETHOD GetCollection(const char *aCollectionName, PRUint32 *aItemCount, nsIAppUpdateInfoItem ***aItems) { return _to GetCollection(aCollectionName, aItemCount, aItems); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIAPPUPDATEINFO(_to) \
  NS_IMETHOD GetUpdateVersion(PRUnichar * *aUpdateVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUpdateVersion(aUpdateVersion); } \
  NS_IMETHOD GetUpdateDisplayVersion(PRUnichar * *aUpdateDisplayVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUpdateDisplayVersion(aUpdateDisplayVersion); } \
  NS_IMETHOD GetUpdateInfoURL(PRUnichar * *aUpdateInfoURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUpdateInfoURL(aUpdateInfoURL); } \
  NS_IMETHOD GetCollection(const char *aCollectionName, PRUint32 *aItemCount, nsIAppUpdateInfoItem ***aItems) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCollection(aCollectionName, aItemCount, aItems); } 

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

/* Header file */
class nsAppUpdateInfo : public nsIAppUpdateInfo
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIAPPUPDATEINFO

  nsAppUpdateInfo();

private:
  ~nsAppUpdateInfo();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsAppUpdateInfo, nsIAppUpdateInfo)

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

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

/* readonly attribute wstring updateVersion; */
NS_IMETHODIMP nsAppUpdateInfo::GetUpdateVersion(PRUnichar * *aUpdateVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring updateDisplayVersion; */
NS_IMETHODIMP nsAppUpdateInfo::GetUpdateDisplayVersion(PRUnichar * *aUpdateDisplayVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring updateInfoURL; */
NS_IMETHODIMP nsAppUpdateInfo::GetUpdateInfoURL(PRUnichar * *aUpdateInfoURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCollection (in string aCollectionName, out unsigned long aItemCount, [array, size_is (aItemCount), retval] out nsIAppUpdateInfoItem aItems); */
NS_IMETHODIMP nsAppUpdateInfo::GetCollection(const char *aCollectionName, PRUint32 *aItemCount, nsIAppUpdateInfoItem ***aItems)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIUpdateService */
#define NS_IUPDATESERVICE_IID_STR "c8a2339e-770a-417d-ab9c-efde1f23ba24"

#define NS_IUPDATESERVICE_IID \
  {0xc8a2339e, 0x770a, 0x417d, \
    { 0xab, 0x9c, 0xef, 0xde, 0x1f, 0x23, 0xba, 0x24 }}

class NS_NO_VTABLE nsIUpdateService : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IUPDATESERVICE_IID)

  /* void watchForUpdates (); */
  NS_IMETHOD WatchForUpdates(void) = 0;

  enum { SOURCE_EVENT_USER = 1U };

  enum { SOURCE_EVENT_BACKGROUND = 2U };

  enum { SOURCE_EVENT_MISMATCH = 4U };

  /* void checkForUpdates ([array, size_is (aItemCount)] in nsIUpdateItem aItems, in unsigned long aItemCount, in unsigned short aUpdateTypes, in unsigned short aSourceEvent, in nsIDOMWindowInternal aParentWindow); */
  NS_IMETHOD CheckForUpdates(nsIUpdateItem **aItems, PRUint32 aItemCount, PRUint16 aUpdateTypes, PRUint16 aSourceEvent, nsIDOMWindowInternal *aParentWindow) = 0;

  /* void checkForUpdatesInternal ([array, size_is (aItemCount)] in nsIUpdateItem aItems, in unsigned long aItemCount, in unsigned short aUpdateTypes, in unsigned short aSourceEvent); */
  NS_IMETHOD CheckForUpdatesInternal(nsIUpdateItem **aItems, PRUint32 aItemCount, PRUint16 aUpdateTypes, PRUint16 aSourceEvent) = 0;

  /* readonly attribute long updateCount; */
  NS_IMETHOD GetUpdateCount(PRInt32 *aUpdateCount) = 0;

  /* readonly attribute unsigned short updateSeverity; */
  NS_IMETHOD GetUpdateSeverity(PRUint16 *aUpdateSeverity) = 0;

  /* attribute boolean appUpdatesAvailable; */
  NS_IMETHOD GetAppUpdatesAvailable(PRBool *aAppUpdatesAvailable) = 0;
  NS_IMETHOD SetAppUpdatesAvailable(PRBool aAppUpdatesAvailable) = 0;

  /* attribute long extensionUpdatesAvailable; */
  NS_IMETHOD GetExtensionUpdatesAvailable(PRInt32 *aExtensionUpdatesAvailable) = 0;
  NS_IMETHOD SetExtensionUpdatesAvailable(PRInt32 aExtensionUpdatesAvailable) = 0;

  /* readonly attribute nsIAppUpdateInfo newestVersion; */
  NS_IMETHOD GetNewestVersion(nsIAppUpdateInfo * *aNewestVersion) = 0;

  /* readonly attribute nsIAppUpdateInfo currentVersion; */
  NS_IMETHOD GetCurrentVersion(nsIAppUpdateInfo * *aCurrentVersion) = 0;

  enum { SEVERITY_HIGH = 2U };

  enum { SEVERITY_MEDIUM = 1U };

  enum { SEVERITY_LOW = 0U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIUPDATESERVICE \
  NS_IMETHOD WatchForUpdates(void); \
  NS_IMETHOD CheckForUpdates(nsIUpdateItem **aItems, PRUint32 aItemCount, PRUint16 aUpdateTypes, PRUint16 aSourceEvent, nsIDOMWindowInternal *aParentWindow); \
  NS_IMETHOD CheckForUpdatesInternal(nsIUpdateItem **aItems, PRUint32 aItemCount, PRUint16 aUpdateTypes, PRUint16 aSourceEvent); \
  NS_IMETHOD GetUpdateCount(PRInt32 *aUpdateCount); \
  NS_IMETHOD GetUpdateSeverity(PRUint16 *aUpdateSeverity); \
  NS_IMETHOD GetAppUpdatesAvailable(PRBool *aAppUpdatesAvailable); \
  NS_IMETHOD SetAppUpdatesAvailable(PRBool aAppUpdatesAvailable); \
  NS_IMETHOD GetExtensionUpdatesAvailable(PRInt32 *aExtensionUpdatesAvailable); \
  NS_IMETHOD SetExtensionUpdatesAvailable(PRInt32 aExtensionUpdatesAvailable); \
  NS_IMETHOD GetNewestVersion(nsIAppUpdateInfo * *aNewestVersion); \
  NS_IMETHOD GetCurrentVersion(nsIAppUpdateInfo * *aCurrentVersion); \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIUPDATESERVICE(_to) \
  NS_IMETHOD WatchForUpdates(void) { return _to WatchForUpdates(); } \
  NS_IMETHOD CheckForUpdates(nsIUpdateItem **aItems, PRUint32 aItemCount, PRUint16 aUpdateTypes, PRUint16 aSourceEvent, nsIDOMWindowInternal *aParentWindow) { return _to CheckForUpdates(aItems, aItemCount, aUpdateTypes, aSourceEvent, aParentWindow); } \
  NS_IMETHOD CheckForUpdatesInternal(nsIUpdateItem **aItems, PRUint32 aItemCount, PRUint16 aUpdateTypes, PRUint16 aSourceEvent) { return _to CheckForUpdatesInternal(aItems, aItemCount, aUpdateTypes, aSourceEvent); } \
  NS_IMETHOD GetUpdateCount(PRInt32 *aUpdateCount) { return _to GetUpdateCount(aUpdateCount); } \
  NS_IMETHOD GetUpdateSeverity(PRUint16 *aUpdateSeverity) { return _to GetUpdateSeverity(aUpdateSeverity); } \
  NS_IMETHOD GetAppUpdatesAvailable(PRBool *aAppUpdatesAvailable) { return _to GetAppUpdatesAvailable(aAppUpdatesAvailable); } \
  NS_IMETHOD SetAppUpdatesAvailable(PRBool aAppUpdatesAvailable) { return _to SetAppUpdatesAvailable(aAppUpdatesAvailable); } \
  NS_IMETHOD GetExtensionUpdatesAvailable(PRInt32 *aExtensionUpdatesAvailable) { return _to GetExtensionUpdatesAvailable(aExtensionUpdatesAvailable); } \
  NS_IMETHOD SetExtensionUpdatesAvailable(PRInt32 aExtensionUpdatesAvailable) { return _to SetExtensionUpdatesAvailable(aExtensionUpdatesAvailable); } \
  NS_IMETHOD GetNewestVersion(nsIAppUpdateInfo * *aNewestVersion) { return _to GetNewestVersion(aNewestVersion); } \
  NS_IMETHOD GetCurrentVersion(nsIAppUpdateInfo * *aCurrentVersion) { return _to GetCurrentVersion(aCurrentVersion); } \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIUPDATESERVICE(_to) \
  NS_IMETHOD WatchForUpdates(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->WatchForUpdates(); } \
  NS_IMETHOD CheckForUpdates(nsIUpdateItem **aItems, PRUint32 aItemCount, PRUint16 aUpdateTypes, PRUint16 aSourceEvent, nsIDOMWindowInternal *aParentWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckForUpdates(aItems, aItemCount, aUpdateTypes, aSourceEvent, aParentWindow); } \
  NS_IMETHOD CheckForUpdatesInternal(nsIUpdateItem **aItems, PRUint32 aItemCount, PRUint16 aUpdateTypes, PRUint16 aSourceEvent) { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckForUpdatesInternal(aItems, aItemCount, aUpdateTypes, aSourceEvent); } \
  NS_IMETHOD GetUpdateCount(PRInt32 *aUpdateCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUpdateCount(aUpdateCount); } \
  NS_IMETHOD GetUpdateSeverity(PRUint16 *aUpdateSeverity) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUpdateSeverity(aUpdateSeverity); } \
  NS_IMETHOD GetAppUpdatesAvailable(PRBool *aAppUpdatesAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAppUpdatesAvailable(aAppUpdatesAvailable); } \
  NS_IMETHOD SetAppUpdatesAvailable(PRBool aAppUpdatesAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAppUpdatesAvailable(aAppUpdatesAvailable); } \
  NS_IMETHOD GetExtensionUpdatesAvailable(PRInt32 *aExtensionUpdatesAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtensionUpdatesAvailable(aExtensionUpdatesAvailable); } \
  NS_IMETHOD SetExtensionUpdatesAvailable(PRInt32 aExtensionUpdatesAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetExtensionUpdatesAvailable(aExtensionUpdatesAvailable); } \
  NS_IMETHOD GetNewestVersion(nsIAppUpdateInfo * *aNewestVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewestVersion(aNewestVersion); } \
  NS_IMETHOD GetCurrentVersion(nsIAppUpdateInfo * *aCurrentVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurrentVersion(aCurrentVersion); } \

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

/* Header file */
class nsUpdateService : public nsIUpdateService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIUPDATESERVICE

  nsUpdateService();

private:
  ~nsUpdateService();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsUpdateService, nsIUpdateService)

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

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

/* void watchForUpdates (); */
NS_IMETHODIMP nsUpdateService::WatchForUpdates()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void checkForUpdates ([array, size_is (aItemCount)] in nsIUpdateItem aItems, in unsigned long aItemCount, in unsigned short aUpdateTypes, in unsigned short aSourceEvent, in nsIDOMWindowInternal aParentWindow); */
NS_IMETHODIMP nsUpdateService::CheckForUpdates(nsIUpdateItem **aItems, PRUint32 aItemCount, PRUint16 aUpdateTypes, PRUint16 aSourceEvent, nsIDOMWindowInternal *aParentWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void checkForUpdatesInternal ([array, size_is (aItemCount)] in nsIUpdateItem aItems, in unsigned long aItemCount, in unsigned short aUpdateTypes, in unsigned short aSourceEvent); */
NS_IMETHODIMP nsUpdateService::CheckForUpdatesInternal(nsIUpdateItem **aItems, PRUint32 aItemCount, PRUint16 aUpdateTypes, PRUint16 aSourceEvent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long updateCount; */
NS_IMETHODIMP nsUpdateService::GetUpdateCount(PRInt32 *aUpdateCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short updateSeverity; */
NS_IMETHODIMP nsUpdateService::GetUpdateSeverity(PRUint16 *aUpdateSeverity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean appUpdatesAvailable; */
NS_IMETHODIMP nsUpdateService::GetAppUpdatesAvailable(PRBool *aAppUpdatesAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsUpdateService::SetAppUpdatesAvailable(PRBool aAppUpdatesAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long extensionUpdatesAvailable; */
NS_IMETHODIMP nsUpdateService::GetExtensionUpdatesAvailable(PRInt32 *aExtensionUpdatesAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsUpdateService::SetExtensionUpdatesAvailable(PRInt32 aExtensionUpdatesAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIAppUpdateInfo newestVersion; */
NS_IMETHODIMP nsUpdateService::GetNewestVersion(nsIAppUpdateInfo * *aNewestVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIAppUpdateInfo currentVersion; */
NS_IMETHODIMP nsUpdateService::GetCurrentVersion(nsIAppUpdateInfo * *aCurrentVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIVersionChecker */
#define NS_IVERSIONCHECKER_IID_STR "22d35700-5765-42e1-914b-a0da7c911a8c"

#define NS_IVERSIONCHECKER_IID \
  {0x22d35700, 0x5765, 0x42e1, \
    { 0x91, 0x4b, 0xa0, 0xda, 0x7c, 0x91, 0x1a, 0x8c }}

class NS_NO_VTABLE nsIVersionChecker : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IVERSIONCHECKER_IID)

  /* long compare (in string aVersionA, in string aVersionB); */
  NS_IMETHOD Compare(const char *aVersionA, const char *aVersionB, PRInt32 *_retval) = 0;

  /* boolean isValidVersion (in string aVersion); */
  NS_IMETHOD IsValidVersion(const char *aVersion, PRBool *_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIVERSIONCHECKER \
  NS_IMETHOD Compare(const char *aVersionA, const char *aVersionB, PRInt32 *_retval); \
  NS_IMETHOD IsValidVersion(const char *aVersion, PRBool *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIVERSIONCHECKER(_to) \
  NS_IMETHOD Compare(const char *aVersionA, const char *aVersionB, PRInt32 *_retval) { return _to Compare(aVersionA, aVersionB, _retval); } \
  NS_IMETHOD IsValidVersion(const char *aVersion, PRBool *_retval) { return _to IsValidVersion(aVersion, _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_NSIVERSIONCHECKER(_to) \
  NS_IMETHOD Compare(const char *aVersionA, const char *aVersionB, PRInt32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Compare(aVersionA, aVersionB, _retval); } \
  NS_IMETHOD IsValidVersion(const char *aVersion, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsValidVersion(aVersion, _retval); } 

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

/* Header file */
class nsVersionChecker : public nsIVersionChecker
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIVERSIONCHECKER

  nsVersionChecker();

private:
  ~nsVersionChecker();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsVersionChecker, nsIVersionChecker)

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

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

/* long compare (in string aVersionA, in string aVersionB); */
NS_IMETHODIMP nsVersionChecker::Compare(const char *aVersionA, const char *aVersionB, PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isValidVersion (in string aVersion); */
NS_IMETHODIMP nsVersionChecker::IsValidVersion(const char *aVersion, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIUpdateService_h__ */
