/*
 * 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 */

class nsIImapFlagAndUidState; /* forward declaration */


/* starting interface:    nsIImapProtocol */
#define NS_IIMAPPROTOCOL_IID_STR "290412eb-5824-4087-8984-05450c9397be"

#define NS_IIMAPPROTOCOL_IID \
  {0x290412eb, 0x5824, 0x4087, \
    { 0x89, 0x84, 0x05, 0x45, 0x0c, 0x93, 0x97, 0xbe }}

class NS_NO_VTABLE nsIImapProtocol : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IIMAPPROTOCOL_IID)

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

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

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

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

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

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

  /* void GetSupportedUserFlags (out unsigned short flags); */
  NS_IMETHOD GetSupportedUserFlags(uint16_t *flags) = 0;

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

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

  /* readonly attribute nsIImapFlagAndUidState flagAndUidState; */
  NS_IMETHOD GetFlagAndUidState(nsIImapFlagAndUidState * *aFlagAndUidState) = 0;

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

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

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

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

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

  /* void OverrideConnectionInfo (in wstring pHost, in unsigned short pPort, in string pCookieData); */
  NS_IMETHOD OverrideConnectionInfo(const PRUnichar * pHost, uint16_t 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_IMETHOD LoadImapUrl(nsIURI *aUrl, nsISupports *aConsumer); \
  NS_IMETHOD IsBusy(bool *aIsConnectionBusy, bool *isInboxConnection); \
  NS_IMETHOD CanHandleUrl(nsIImapUrl *aImapUrl, bool *aCanRunUrl, bool *hasToWait); \
  NS_IMETHOD Initialize(nsIImapHostSessionList *aHostSessionList, nsIImapIncomingServer *aServer); \
  NS_IMETHOD NotifyBodysToDownload(uint32_t *keys, uint32_t count); \
  NS_IMETHOD GetFlagsForUID(uint32_t uid, bool *foundIt, uint16_t *flags, char * *customFlags); \
  NS_IMETHOD GetSupportedUserFlags(uint16_t *flags); \
  NS_IMETHOD GetRunningImapURL(nsIImapUrl * *aImapUrl); \
  NS_IMETHOD GetRunningUrl(nsIURI * *aUrl); \
  NS_IMETHOD GetFlagAndUidState(nsIImapFlagAndUidState * *aFlagAndUidState); \
  NS_IMETHOD TellThreadToDie(bool aIsSafeToClose); \
  NS_IMETHOD GetLastActiveTimeStamp(PRTime *aTimeStamp); \
  NS_IMETHOD PseudoInterruptMsgLoad(nsIMsgFolder *imapFolder, nsIMsgWindow *aMsgWindow, bool *interrupted); \
  NS_IMETHOD GetSelectedMailboxName(char * *folderName); \
  NS_IMETHOD ResetToAuthenticatedState(void); \
  NS_IMETHOD OverrideConnectionInfo(const PRUnichar * pHost, uint16_t 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_IMETHOD LoadImapUrl(nsIURI *aUrl, nsISupports *aConsumer) { return _to LoadImapUrl(aUrl, aConsumer); } \
  NS_IMETHOD IsBusy(bool *aIsConnectionBusy, bool *isInboxConnection) { return _to IsBusy(aIsConnectionBusy, isInboxConnection); } \
  NS_IMETHOD CanHandleUrl(nsIImapUrl *aImapUrl, bool *aCanRunUrl, bool *hasToWait) { return _to CanHandleUrl(aImapUrl, aCanRunUrl, hasToWait); } \
  NS_IMETHOD Initialize(nsIImapHostSessionList *aHostSessionList, nsIImapIncomingServer *aServer) { return _to Initialize(aHostSessionList, aServer); } \
  NS_IMETHOD NotifyBodysToDownload(uint32_t *keys, uint32_t count) { return _to NotifyBodysToDownload(keys, count); } \
  NS_IMETHOD GetFlagsForUID(uint32_t uid, bool *foundIt, uint16_t *flags, char * *customFlags) { return _to GetFlagsForUID(uid, foundIt, flags, customFlags); } \
  NS_IMETHOD GetSupportedUserFlags(uint16_t *flags) { return _to GetSupportedUserFlags(flags); } \
  NS_IMETHOD GetRunningImapURL(nsIImapUrl * *aImapUrl) { return _to GetRunningImapURL(aImapUrl); } \
  NS_IMETHOD GetRunningUrl(nsIURI * *aUrl) { return _to GetRunningUrl(aUrl); } \
  NS_IMETHOD GetFlagAndUidState(nsIImapFlagAndUidState * *aFlagAndUidState) { return _to GetFlagAndUidState(aFlagAndUidState); } \
  NS_IMETHOD TellThreadToDie(bool aIsSafeToClose) { return _to TellThreadToDie(aIsSafeToClose); } \
  NS_IMETHOD GetLastActiveTimeStamp(PRTime *aTimeStamp) { return _to GetLastActiveTimeStamp(aTimeStamp); } \
  NS_IMETHOD PseudoInterruptMsgLoad(nsIMsgFolder *imapFolder, nsIMsgWindow *aMsgWindow, bool *interrupted) { return _to PseudoInterruptMsgLoad(imapFolder, aMsgWindow, interrupted); } \
  NS_IMETHOD GetSelectedMailboxName(char * *folderName) { return _to GetSelectedMailboxName(folderName); } \
  NS_IMETHOD ResetToAuthenticatedState(void) { return _to ResetToAuthenticatedState(); } \
  NS_IMETHOD OverrideConnectionInfo(const PRUnichar * pHost, uint16_t 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_IMETHOD LoadImapUrl(nsIURI *aUrl, nsISupports *aConsumer) { return !_to ? NS_ERROR_NULL_POINTER : _to->LoadImapUrl(aUrl, aConsumer); } \
  NS_IMETHOD IsBusy(bool *aIsConnectionBusy, bool *isInboxConnection) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsBusy(aIsConnectionBusy, isInboxConnection); } \
  NS_IMETHOD CanHandleUrl(nsIImapUrl *aImapUrl, bool *aCanRunUrl, bool *hasToWait) { return !_to ? NS_ERROR_NULL_POINTER : _to->CanHandleUrl(aImapUrl, aCanRunUrl, hasToWait); } \
  NS_IMETHOD Initialize(nsIImapHostSessionList *aHostSessionList, nsIImapIncomingServer *aServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->Initialize(aHostSessionList, aServer); } \
  NS_IMETHOD NotifyBodysToDownload(uint32_t *keys, uint32_t count) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyBodysToDownload(keys, count); } \
  NS_IMETHOD GetFlagsForUID(uint32_t uid, bool *foundIt, uint16_t *flags, char * *customFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlagsForUID(uid, foundIt, flags, customFlags); } \
  NS_IMETHOD GetSupportedUserFlags(uint16_t *flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportedUserFlags(flags); } \
  NS_IMETHOD GetRunningImapURL(nsIImapUrl * *aImapUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRunningImapURL(aImapUrl); } \
  NS_IMETHOD GetRunningUrl(nsIURI * *aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRunningUrl(aUrl); } \
  NS_IMETHOD GetFlagAndUidState(nsIImapFlagAndUidState * *aFlagAndUidState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlagAndUidState(aFlagAndUidState); } \
  NS_IMETHOD TellThreadToDie(bool aIsSafeToClose) { return !_to ? NS_ERROR_NULL_POINTER : _to->TellThreadToDie(aIsSafeToClose); } \
  NS_IMETHOD GetLastActiveTimeStamp(PRTime *aTimeStamp) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastActiveTimeStamp(aTimeStamp); } \
  NS_IMETHOD PseudoInterruptMsgLoad(nsIMsgFolder *imapFolder, nsIMsgWindow *aMsgWindow, bool *interrupted) { return !_to ? NS_ERROR_NULL_POINTER : _to->PseudoInterruptMsgLoad(imapFolder, aMsgWindow, interrupted); } \
  NS_IMETHOD GetSelectedMailboxName(char * *folderName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSelectedMailboxName(folderName); } \
  NS_IMETHOD ResetToAuthenticatedState(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ResetToAuthenticatedState(); } \
  NS_IMETHOD OverrideConnectionInfo(const PRUnichar * pHost, uint16_t 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, bool *isInboxConnection)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CanHandleUrl (in nsIImapUrl aImapUrl, out boolean aCanRunUrl, out boolean hasToWait); */
NS_IMETHODIMP nsImapProtocol::CanHandleUrl(nsIImapUrl *aImapUrl, bool *aCanRunUrl, bool *hasToWait)
{
    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(uint32_t *keys, uint32_t 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(uint32_t uid, bool *foundIt, uint16_t *flags, char * *customFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

/* readonly attribute nsIImapFlagAndUidState flagAndUidState; */
NS_IMETHODIMP nsImapProtocol::GetFlagAndUidState(nsIImapFlagAndUidState * *aFlagAndUidState)
{
    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)
{
    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)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void GetSelectedMailboxName (out string folderName); */
NS_IMETHODIMP nsImapProtocol::GetSelectedMailboxName(char * *folderName)
{
    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, uint16_t pPort, const char * pCookieData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIImapProtocol_h__ */
