/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM /tmp/comm-release/mailnews/imap/public/nsIImapProtocol.idl
 */

#ifndef __gen_nsIImapProtocol_h__
#define __gen_nsIImapProtocol_h__


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

#ifndef __gen_nsIStreamListener_h__
#include "nsIStreamListener.h"
#endif

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

class nsIURI; /* forward declaration */

class nsIImapUrl; /* forward declaration */

class nsIImapProtocol; /* forward declaration */

class nsIImapIncomingServer; /* forward declaration */

class nsIMsgFolder; /* forward declaration */

class nsIImapHostSessionList; /* forward declaration */

class nsIMsgWindow; /* forward declaration */


/* starting interface:    nsIImapProtocol */
#define NS_IIMAPPROTOCOL_IID_STR "177f4140-37ad-4828-880c-42d4ee5d2015"

#define NS_IIMAPPROTOCOL_IID \
  {0x177f4140, 0x37ad, 0x4828, \
    { 0x88, 0x0c, 0x42, 0xd4, 0xee, 0x5d, 0x20, 0x15 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIImapProtocol : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IIMAPPROTOCOL_IID)

  /* void LoadImapUrl (in nsIURI aUrl, in nsISupports aConsumer); */
  NS_SCRIPTABLE NS_IMETHOD LoadImapUrl(nsIURI *aUrl, nsISupports *aConsumer) = 0;

  /* void IsBusy (out boolean aIsConnectionBusy, out boolean isInboxConnection); */
  NS_SCRIPTABLE NS_IMETHOD IsBusy(bool *aIsConnectionBusy NS_OUTPARAM, bool *isInboxConnection NS_OUTPARAM) = 0;

  /* void CanHandleUrl (in nsIImapUrl aImapUrl, out boolean aCanRunUrl, out boolean hasToWait); */
  NS_SCRIPTABLE NS_IMETHOD CanHandleUrl(nsIImapUrl *aImapUrl, bool *aCanRunUrl NS_OUTPARAM, bool *hasToWait NS_OUTPARAM) = 0;

  /* void Initialize (in nsIImapHostSessionList aHostSessionList, in nsIImapIncomingServer aServer); */
  NS_SCRIPTABLE NS_IMETHOD Initialize(nsIImapHostSessionList *aHostSessionList, nsIImapIncomingServer *aServer) = 0;

  /* void NotifyBodysToDownload (out unsigned long keys, in unsigned long count); */
  NS_SCRIPTABLE NS_IMETHOD NotifyBodysToDownload(PRUint32 *keys NS_OUTPARAM, PRUint32 count) = 0;

  /* void GetFlagsForUID (in unsigned long uid, out boolean foundIt, out unsigned short flags, out string customFlags); */
  NS_SCRIPTABLE NS_IMETHOD GetFlagsForUID(PRUint32 uid, bool *foundIt NS_OUTPARAM, PRUint16 *flags NS_OUTPARAM, char * *customFlags NS_OUTPARAM) = 0;

  /* void GetSupportedUserFlags (out unsigned short flags); */
  NS_SCRIPTABLE NS_IMETHOD GetSupportedUserFlags(PRUint16 *flags NS_OUTPARAM) = 0;

  /* void GetRunningImapURL (out nsIImapUrl aImapUrl); */
  NS_SCRIPTABLE NS_IMETHOD GetRunningImapURL(nsIImapUrl * *aImapUrl NS_OUTPARAM) = 0;

  /* void GetRunningUrl (out nsIURI aUrl); */
  NS_SCRIPTABLE NS_IMETHOD GetRunningUrl(nsIURI * *aUrl NS_OUTPARAM) = 0;

  /* void tellThreadToDie (in boolean aIsSafeToClose); */
  NS_SCRIPTABLE NS_IMETHOD TellThreadToDie(bool aIsSafeToClose) = 0;

  /* void GetLastActiveTimeStamp (out PRTime aTimeStamp); */
  NS_SCRIPTABLE NS_IMETHOD GetLastActiveTimeStamp(PRTime *aTimeStamp NS_OUTPARAM) = 0;

  /* void pseudoInterruptMsgLoad (in nsIMsgFolder imapFolder, in nsIMsgWindow aMsgWindow, out boolean interrupted); */
  NS_SCRIPTABLE NS_IMETHOD PseudoInterruptMsgLoad(nsIMsgFolder *imapFolder, nsIMsgWindow *aMsgWindow, bool *interrupted NS_OUTPARAM) = 0;

  /* void GetSelectedMailboxName (out string folderName); */
  NS_SCRIPTABLE NS_IMETHOD GetSelectedMailboxName(char * *folderName NS_OUTPARAM) = 0;

  /* void ResetToAuthenticatedState (); */
  NS_SCRIPTABLE NS_IMETHOD ResetToAuthenticatedState(void) = 0;

  /* void OverrideConnectionInfo (in wstring pHost, in unsigned short pPort, in string pCookieData); */
  NS_SCRIPTABLE NS_IMETHOD OverrideConnectionInfo(const PRUnichar * pHost, PRUint16 pPort, const char * pCookieData) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIImapProtocol, NS_IIMAPPROTOCOL_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIIMAPPROTOCOL \
  NS_SCRIPTABLE NS_IMETHOD LoadImapUrl(nsIURI *aUrl, nsISupports *aConsumer); \
  NS_SCRIPTABLE NS_IMETHOD IsBusy(bool *aIsConnectionBusy NS_OUTPARAM, bool *isInboxConnection NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CanHandleUrl(nsIImapUrl *aImapUrl, bool *aCanRunUrl NS_OUTPARAM, bool *hasToWait NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Initialize(nsIImapHostSessionList *aHostSessionList, nsIImapIncomingServer *aServer); \
  NS_SCRIPTABLE NS_IMETHOD NotifyBodysToDownload(PRUint32 *keys NS_OUTPARAM, PRUint32 count); \
  NS_SCRIPTABLE NS_IMETHOD GetFlagsForUID(PRUint32 uid, bool *foundIt NS_OUTPARAM, PRUint16 *flags NS_OUTPARAM, char * *customFlags NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetSupportedUserFlags(PRUint16 *flags NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetRunningImapURL(nsIImapUrl * *aImapUrl NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetRunningUrl(nsIURI * *aUrl NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD TellThreadToDie(bool aIsSafeToClose); \
  NS_SCRIPTABLE NS_IMETHOD GetLastActiveTimeStamp(PRTime *aTimeStamp NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD PseudoInterruptMsgLoad(nsIMsgFolder *imapFolder, nsIMsgWindow *aMsgWindow, bool *interrupted NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetSelectedMailboxName(char * *folderName NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD ResetToAuthenticatedState(void); \
  NS_SCRIPTABLE NS_IMETHOD OverrideConnectionInfo(const PRUnichar * pHost, PRUint16 pPort, const char * pCookieData); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIIMAPPROTOCOL(_to) \
  NS_SCRIPTABLE NS_IMETHOD LoadImapUrl(nsIURI *aUrl, nsISupports *aConsumer) { return _to LoadImapUrl(aUrl, aConsumer); } \
  NS_SCRIPTABLE NS_IMETHOD IsBusy(bool *aIsConnectionBusy NS_OUTPARAM, bool *isInboxConnection NS_OUTPARAM) { return _to IsBusy(aIsConnectionBusy, isInboxConnection); } \
  NS_SCRIPTABLE NS_IMETHOD CanHandleUrl(nsIImapUrl *aImapUrl, bool *aCanRunUrl NS_OUTPARAM, bool *hasToWait NS_OUTPARAM) { return _to CanHandleUrl(aImapUrl, aCanRunUrl, hasToWait); } \
  NS_SCRIPTABLE NS_IMETHOD Initialize(nsIImapHostSessionList *aHostSessionList, nsIImapIncomingServer *aServer) { return _to Initialize(aHostSessionList, aServer); } \
  NS_SCRIPTABLE NS_IMETHOD NotifyBodysToDownload(PRUint32 *keys NS_OUTPARAM, PRUint32 count) { return _to NotifyBodysToDownload(keys, count); } \
  NS_SCRIPTABLE NS_IMETHOD GetFlagsForUID(PRUint32 uid, bool *foundIt NS_OUTPARAM, PRUint16 *flags NS_OUTPARAM, char * *customFlags NS_OUTPARAM) { return _to GetFlagsForUID(uid, foundIt, flags, customFlags); } \
  NS_SCRIPTABLE NS_IMETHOD GetSupportedUserFlags(PRUint16 *flags NS_OUTPARAM) { return _to GetSupportedUserFlags(flags); } \
  NS_SCRIPTABLE NS_IMETHOD GetRunningImapURL(nsIImapUrl * *aImapUrl NS_OUTPARAM) { return _to GetRunningImapURL(aImapUrl); } \
  NS_SCRIPTABLE NS_IMETHOD GetRunningUrl(nsIURI * *aUrl NS_OUTPARAM) { return _to GetRunningUrl(aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD TellThreadToDie(bool aIsSafeToClose) { return _to TellThreadToDie(aIsSafeToClose); } \
  NS_SCRIPTABLE NS_IMETHOD GetLastActiveTimeStamp(PRTime *aTimeStamp NS_OUTPARAM) { return _to GetLastActiveTimeStamp(aTimeStamp); } \
  NS_SCRIPTABLE NS_IMETHOD PseudoInterruptMsgLoad(nsIMsgFolder *imapFolder, nsIMsgWindow *aMsgWindow, bool *interrupted NS_OUTPARAM) { return _to PseudoInterruptMsgLoad(imapFolder, aMsgWindow, interrupted); } \
  NS_SCRIPTABLE NS_IMETHOD GetSelectedMailboxName(char * *folderName NS_OUTPARAM) { return _to GetSelectedMailboxName(folderName); } \
  NS_SCRIPTABLE NS_IMETHOD ResetToAuthenticatedState(void) { return _to ResetToAuthenticatedState(); } \
  NS_SCRIPTABLE NS_IMETHOD OverrideConnectionInfo(const PRUnichar * pHost, PRUint16 pPort, const char * pCookieData) { return _to OverrideConnectionInfo(pHost, pPort, pCookieData); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIIMAPPROTOCOL(_to) \
  NS_SCRIPTABLE NS_IMETHOD LoadImapUrl(nsIURI *aUrl, nsISupports *aConsumer) { return !_to ? NS_ERROR_NULL_POINTER : _to->LoadImapUrl(aUrl, aConsumer); } \
  NS_SCRIPTABLE NS_IMETHOD IsBusy(bool *aIsConnectionBusy NS_OUTPARAM, bool *isInboxConnection NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsBusy(aIsConnectionBusy, isInboxConnection); } \
  NS_SCRIPTABLE NS_IMETHOD CanHandleUrl(nsIImapUrl *aImapUrl, bool *aCanRunUrl NS_OUTPARAM, bool *hasToWait NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CanHandleUrl(aImapUrl, aCanRunUrl, hasToWait); } \
  NS_SCRIPTABLE NS_IMETHOD Initialize(nsIImapHostSessionList *aHostSessionList, nsIImapIncomingServer *aServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->Initialize(aHostSessionList, aServer); } \
  NS_SCRIPTABLE NS_IMETHOD NotifyBodysToDownload(PRUint32 *keys NS_OUTPARAM, PRUint32 count) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyBodysToDownload(keys, count); } \
  NS_SCRIPTABLE NS_IMETHOD GetFlagsForUID(PRUint32 uid, bool *foundIt NS_OUTPARAM, PRUint16 *flags NS_OUTPARAM, char * *customFlags NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlagsForUID(uid, foundIt, flags, customFlags); } \
  NS_SCRIPTABLE NS_IMETHOD GetSupportedUserFlags(PRUint16 *flags NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportedUserFlags(flags); } \
  NS_SCRIPTABLE NS_IMETHOD GetRunningImapURL(nsIImapUrl * *aImapUrl NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRunningImapURL(aImapUrl); } \
  NS_SCRIPTABLE NS_IMETHOD GetRunningUrl(nsIURI * *aUrl NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRunningUrl(aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD TellThreadToDie(bool aIsSafeToClose) { return !_to ? NS_ERROR_NULL_POINTER : _to->TellThreadToDie(aIsSafeToClose); } \
  NS_SCRIPTABLE NS_IMETHOD GetLastActiveTimeStamp(PRTime *aTimeStamp NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastActiveTimeStamp(aTimeStamp); } \
  NS_SCRIPTABLE NS_IMETHOD PseudoInterruptMsgLoad(nsIMsgFolder *imapFolder, nsIMsgWindow *aMsgWindow, bool *interrupted NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->PseudoInterruptMsgLoad(imapFolder, aMsgWindow, interrupted); } \
  NS_SCRIPTABLE NS_IMETHOD GetSelectedMailboxName(char * *folderName NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSelectedMailboxName(folderName); } \
  NS_SCRIPTABLE NS_IMETHOD ResetToAuthenticatedState(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ResetToAuthenticatedState(); } \
  NS_SCRIPTABLE NS_IMETHOD OverrideConnectionInfo(const PRUnichar * pHost, PRUint16 pPort, const char * pCookieData) { return !_to ? NS_ERROR_NULL_POINTER : _to->OverrideConnectionInfo(pHost, pPort, pCookieData); } 

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

/* Header file */
class nsImapProtocol : public nsIImapProtocol
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIIMAPPROTOCOL

  nsImapProtocol();

private:
  ~nsImapProtocol();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsImapProtocol, nsIImapProtocol)

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

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

/* void LoadImapUrl (in nsIURI aUrl, in nsISupports aConsumer); */
NS_IMETHODIMP nsImapProtocol::LoadImapUrl(nsIURI *aUrl, nsISupports *aConsumer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void IsBusy (out boolean aIsConnectionBusy, out boolean isInboxConnection); */
NS_IMETHODIMP nsImapProtocol::IsBusy(bool *aIsConnectionBusy NS_OUTPARAM, bool *isInboxConnection NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CanHandleUrl (in nsIImapUrl aImapUrl, out boolean aCanRunUrl, out boolean hasToWait); */
NS_IMETHODIMP nsImapProtocol::CanHandleUrl(nsIImapUrl *aImapUrl, bool *aCanRunUrl NS_OUTPARAM, bool *hasToWait NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void Initialize (in nsIImapHostSessionList aHostSessionList, in nsIImapIncomingServer aServer); */
NS_IMETHODIMP nsImapProtocol::Initialize(nsIImapHostSessionList *aHostSessionList, nsIImapIncomingServer *aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyBodysToDownload (out unsigned long keys, in unsigned long count); */
NS_IMETHODIMP nsImapProtocol::NotifyBodysToDownload(PRUint32 *keys NS_OUTPARAM, PRUint32 count)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void GetFlagsForUID (in unsigned long uid, out boolean foundIt, out unsigned short flags, out string customFlags); */
NS_IMETHODIMP nsImapProtocol::GetFlagsForUID(PRUint32 uid, bool *foundIt NS_OUTPARAM, PRUint16 *flags NS_OUTPARAM, char * *customFlags NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void GetSupportedUserFlags (out unsigned short flags); */
NS_IMETHODIMP nsImapProtocol::GetSupportedUserFlags(PRUint16 *flags NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void GetRunningImapURL (out nsIImapUrl aImapUrl); */
NS_IMETHODIMP nsImapProtocol::GetRunningImapURL(nsIImapUrl * *aImapUrl NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void GetRunningUrl (out nsIURI aUrl); */
NS_IMETHODIMP nsImapProtocol::GetRunningUrl(nsIURI * *aUrl NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void tellThreadToDie (in boolean aIsSafeToClose); */
NS_IMETHODIMP nsImapProtocol::TellThreadToDie(bool aIsSafeToClose)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void GetLastActiveTimeStamp (out PRTime aTimeStamp); */
NS_IMETHODIMP nsImapProtocol::GetLastActiveTimeStamp(PRTime *aTimeStamp NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void pseudoInterruptMsgLoad (in nsIMsgFolder imapFolder, in nsIMsgWindow aMsgWindow, out boolean interrupted); */
NS_IMETHODIMP nsImapProtocol::PseudoInterruptMsgLoad(nsIMsgFolder *imapFolder, nsIMsgWindow *aMsgWindow, bool *interrupted NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void GetSelectedMailboxName (out string folderName); */
NS_IMETHODIMP nsImapProtocol::GetSelectedMailboxName(char * *folderName NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ResetToAuthenticatedState (); */
NS_IMETHODIMP nsImapProtocol::ResetToAuthenticatedState()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void OverrideConnectionInfo (in wstring pHost, in unsigned short pPort, in string pCookieData); */
NS_IMETHODIMP nsImapProtocol::OverrideConnectionInfo(const PRUnichar * pHost, PRUint16 pPort, const char * pCookieData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIImapProtocol_h__ */
