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

#ifndef __gen_nsIImapMailFolderSink_h__
#define __gen_nsIImapMailFolderSink_h__


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

#ifndef __gen_MailNewsTypes2_h__
#include "MailNewsTypes2.h"
#endif

#ifndef __gen_nsIImapProtocol_h__
#include "nsIImapProtocol.h"
#endif

#ifndef __gen_nsIMailboxSpec_h__
#include "nsIMailboxSpec.h"
#endif

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

class nsIImapMockChannel; /* forward declaration */

class nsIMsgWindow; /* forward declaration */

class nsIImapHeaderXferInfo; /* forward declaration */

typedef PRInt32  ImapOnlineCopyState;


/* starting interface:    ImapOnlineCopyStateType */
#define IMAPONLINECOPYSTATETYPE_IID_STR "5f7484b0-68b4-11d3-a53e-0060b0fc04b7"

#define IMAPONLINECOPYSTATETYPE_IID \
  {0x5f7484b0, 0x68b4, 0x11d3, \
    { 0xa5, 0x3e, 0x00, 0x60, 0xb0, 0xfc, 0x04, 0xb7 }}

class NS_NO_VTABLE NS_SCRIPTABLE ImapOnlineCopyStateType {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(IMAPONLINECOPYSTATETYPE_IID)

  enum {
    kInProgress = 0,
    kSuccessfulCopy = 1,
    kSuccessfulMove = 2,
    kSuccessfulDelete = 3,
    kFailedDelete = 4,
    kReadyForAppendData = 5,
    kFailedAppend = 6,
    kInterruptedState = 7,
    kFailedCopy = 8,
    kFailedMove = 9
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(ImapOnlineCopyStateType, IMAPONLINECOPYSTATETYPE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMAPONLINECOPYSTATETYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMAPONLINECOPYSTATETYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMAPONLINECOPYSTATETYPE(_to) \

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

/* Header file */
class _MYCLASS_ : public ImapOnlineCopyStateType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMAPONLINECOPYSTATETYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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


/* starting interface:    nsIImapMailFolderSink */
#define NS_IIMAPMAILFOLDERSINK_IID_STR "525e1278-a39d-46d6-9dbc-b48c7e1d4faa"

#define NS_IIMAPMAILFOLDERSINK_IID \
  {0x525e1278, 0xa39d, 0x46d6, \
    { 0x9d, 0xbc, 0xb4, 0x8c, 0x7e, 0x1d, 0x4f, 0xaa }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIImapMailFolderSink : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IIMAPMAILFOLDERSINK_IID)

  /* attribute boolean folderNeedsACLListed; */
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsACLListed(bool *aFolderNeedsACLListed) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsACLListed(bool aFolderNeedsACLListed) = 0;

  /* attribute boolean folderNeedsSubscribing; */
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsSubscribing(bool *aFolderNeedsSubscribing) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsSubscribing(bool aFolderNeedsSubscribing) = 0;

  /* attribute boolean folderNeedsAdded; */
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsAdded(bool *aFolderNeedsAdded) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsAdded(bool aFolderNeedsAdded) = 0;

  /* attribute unsigned long aclFlags; */
  NS_SCRIPTABLE NS_IMETHOD GetAclFlags(PRUint32 *aAclFlags) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetAclFlags(PRUint32 aAclFlags) = 0;

  /* attribute long uidValidity; */
  NS_SCRIPTABLE NS_IMETHOD GetUidValidity(PRInt32 *aUidValidity) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetUidValidity(PRInt32 aUidValidity) = 0;

  /* attribute boolean folderQuotaCommandIssued; */
  NS_SCRIPTABLE NS_IMETHOD GetFolderQuotaCommandIssued(bool *aFolderQuotaCommandIssued) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetFolderQuotaCommandIssued(bool aFolderQuotaCommandIssued) = 0;

  /* void setFolderQuotaData (in ACString aFolderQuotaRoot, in unsigned long aFolderQuotaUsedKB, in unsigned long aFolderQuotaMaxKB); */
  NS_SCRIPTABLE NS_IMETHOD SetFolderQuotaData(const nsACString & aFolderQuotaRoot, PRUint32 aFolderQuotaUsedKB, PRUint32 aFolderQuotaMaxKB) = 0;

  /* readonly attribute boolean shouldDownloadAllHeaders; */
  NS_SCRIPTABLE NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders) = 0;

  /* readonly attribute char onlineDelimiter; */
  NS_SCRIPTABLE NS_IMETHOD GetOnlineDelimiter(char *aOnlineDelimiter) = 0;

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

  /* void UpdateImapMailboxInfo (in nsIImapProtocol aProtocol, in nsIMailboxSpec aSpec); */
  NS_SCRIPTABLE NS_IMETHOD UpdateImapMailboxInfo(nsIImapProtocol *aProtocol, nsIMailboxSpec *aSpec) = 0;

  /* void UpdateImapMailboxStatus (in nsIImapProtocol aProtocol, in nsIMailboxSpec aSpec); */
  NS_SCRIPTABLE NS_IMETHOD UpdateImapMailboxStatus(nsIImapProtocol *aProtocol, nsIMailboxSpec *aSpec) = 0;

  /* void getMsgHdrsToDownload (out boolean aMore, out long aTotalCount, out unsigned long aCount, [array, size_is (aCount), retval] out nsMsgKey aKeys); */
  NS_SCRIPTABLE NS_IMETHOD GetMsgHdrsToDownload(bool *aMore NS_OUTPARAM, PRInt32 *aTotalCount NS_OUTPARAM, PRUint32 *aCount NS_OUTPARAM, nsMsgKey **aKeys NS_OUTPARAM) = 0;

  /* void parseMsgHdrs (in nsIImapProtocol aProtocol, in nsIImapHeaderXferInfo aHdrXferInfo); */
  NS_SCRIPTABLE NS_IMETHOD ParseMsgHdrs(nsIImapProtocol *aProtocol, nsIImapHeaderXferInfo *aHdrXferInfo) = 0;

  /* void AbortHeaderParseStream (in nsIImapProtocol aProtocol); */
  NS_SCRIPTABLE NS_IMETHOD AbortHeaderParseStream(nsIImapProtocol *aProtocol) = 0;

  /* void OnlineCopyCompleted (in nsIImapProtocol aProtocol, in ImapOnlineCopyState aCopyState); */
  NS_SCRIPTABLE NS_IMETHOD OnlineCopyCompleted(nsIImapProtocol *aProtocol, ImapOnlineCopyState aCopyState) = 0;

  /* void StartMessage (in nsIMsgMailNewsUrl aUrl); */
  NS_SCRIPTABLE NS_IMETHOD StartMessage(nsIMsgMailNewsUrl *aUrl) = 0;

  /* void EndMessage (in nsIMsgMailNewsUrl aUrl, in nsMsgKey uidOfMessage); */
  NS_SCRIPTABLE NS_IMETHOD EndMessage(nsIMsgMailNewsUrl *aUrl, nsMsgKey uidOfMessage) = 0;

  /* void NotifySearchHit (in nsIMsgMailNewsUrl aUrl, in string hitLine); */
  NS_SCRIPTABLE NS_IMETHOD NotifySearchHit(nsIMsgMailNewsUrl *aUrl, const char * hitLine) = 0;

  /* void copyNextStreamMessage (in boolean copySucceeded, in nsISupports copyState); */
  NS_SCRIPTABLE NS_IMETHOD CopyNextStreamMessage(bool copySucceeded, nsISupports *copyState) = 0;

  /* void closeMockChannel (in nsIImapMockChannel aChannel); */
  NS_SCRIPTABLE NS_IMETHOD CloseMockChannel(nsIImapMockChannel *aChannel) = 0;

  /* void setUrlState (in nsIImapProtocol aProtocol, in nsIMsgMailNewsUrl aUrl, in boolean isRunning, in boolean aSuspend, in nsresult status); */
  NS_SCRIPTABLE NS_IMETHOD SetUrlState(nsIImapProtocol *aProtocol, nsIMsgMailNewsUrl *aUrl, bool isRunning, bool aSuspend, nsresult status) = 0;

  /* void releaseUrlCacheEntry (in nsIMsgMailNewsUrl aUrl); */
  NS_SCRIPTABLE NS_IMETHOD ReleaseUrlCacheEntry(nsIMsgMailNewsUrl *aUrl) = 0;

  /* void headerFetchCompleted (in nsIImapProtocol aProtocol); */
  NS_SCRIPTABLE NS_IMETHOD HeaderFetchCompleted(nsIImapProtocol *aProtocol) = 0;

  /* void setBiffStateAndUpdate (in long biffState); */
  NS_SCRIPTABLE NS_IMETHOD SetBiffStateAndUpdate(PRInt32 biffState) = 0;

  /* void progressStatus (in nsIImapProtocol aProtocol, in unsigned long aMsgId, in wstring extraInfo); */
  NS_SCRIPTABLE NS_IMETHOD ProgressStatus(nsIImapProtocol *aProtocol, PRUint32 aMsgId, const PRUnichar * extraInfo) = 0;

  /* void percentProgress (in nsIImapProtocol aProtocol, in wstring aMessage, in long long aCurrentProgress, in long long aMaxProgressProgressInfo); */
  NS_SCRIPTABLE NS_IMETHOD PercentProgress(nsIImapProtocol *aProtocol, const PRUnichar * aMessage, PRInt64 aCurrentProgress, PRInt64 aMaxProgressProgressInfo) = 0;

  /* void clearFolderRights (); */
  NS_SCRIPTABLE NS_IMETHOD ClearFolderRights(void) = 0;

  /* void setCopyResponseUid (in string msgIdString, in nsIImapUrl aUrl); */
  NS_SCRIPTABLE NS_IMETHOD SetCopyResponseUid(const char * msgIdString, nsIImapUrl *aUrl) = 0;

  /* void setAppendMsgUid (in nsMsgKey newKey, in nsIImapUrl aUrl); */
  NS_SCRIPTABLE NS_IMETHOD SetAppendMsgUid(nsMsgKey newKey, nsIImapUrl *aUrl) = 0;

  /* ACString getMessageId (in nsIImapUrl aUrl); */
  NS_SCRIPTABLE NS_IMETHOD GetMessageId(nsIImapUrl *aUrl, nsACString & _retval NS_OUTPARAM) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIImapMailFolderSink, NS_IIMAPMAILFOLDERSINK_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIIMAPMAILFOLDERSINK \
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsACLListed(bool *aFolderNeedsACLListed); \
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsACLListed(bool aFolderNeedsACLListed); \
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsSubscribing(bool *aFolderNeedsSubscribing); \
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsSubscribing(bool aFolderNeedsSubscribing); \
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsAdded(bool *aFolderNeedsAdded); \
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsAdded(bool aFolderNeedsAdded); \
  NS_SCRIPTABLE NS_IMETHOD GetAclFlags(PRUint32 *aAclFlags); \
  NS_SCRIPTABLE NS_IMETHOD SetAclFlags(PRUint32 aAclFlags); \
  NS_SCRIPTABLE NS_IMETHOD GetUidValidity(PRInt32 *aUidValidity); \
  NS_SCRIPTABLE NS_IMETHOD SetUidValidity(PRInt32 aUidValidity); \
  NS_SCRIPTABLE NS_IMETHOD GetFolderQuotaCommandIssued(bool *aFolderQuotaCommandIssued); \
  NS_SCRIPTABLE NS_IMETHOD SetFolderQuotaCommandIssued(bool aFolderQuotaCommandIssued); \
  NS_SCRIPTABLE NS_IMETHOD SetFolderQuotaData(const nsACString & aFolderQuotaRoot, PRUint32 aFolderQuotaUsedKB, PRUint32 aFolderQuotaMaxKB); \
  NS_SCRIPTABLE NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders); \
  NS_SCRIPTABLE NS_IMETHOD GetOnlineDelimiter(char *aOnlineDelimiter); \
  NS_SCRIPTABLE NS_IMETHOD OnNewIdleMessages(void); \
  NS_SCRIPTABLE NS_IMETHOD UpdateImapMailboxInfo(nsIImapProtocol *aProtocol, nsIMailboxSpec *aSpec); \
  NS_SCRIPTABLE NS_IMETHOD UpdateImapMailboxStatus(nsIImapProtocol *aProtocol, nsIMailboxSpec *aSpec); \
  NS_SCRIPTABLE NS_IMETHOD GetMsgHdrsToDownload(bool *aMore NS_OUTPARAM, PRInt32 *aTotalCount NS_OUTPARAM, PRUint32 *aCount NS_OUTPARAM, nsMsgKey **aKeys NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD ParseMsgHdrs(nsIImapProtocol *aProtocol, nsIImapHeaderXferInfo *aHdrXferInfo); \
  NS_SCRIPTABLE NS_IMETHOD AbortHeaderParseStream(nsIImapProtocol *aProtocol); \
  NS_SCRIPTABLE NS_IMETHOD OnlineCopyCompleted(nsIImapProtocol *aProtocol, ImapOnlineCopyState aCopyState); \
  NS_SCRIPTABLE NS_IMETHOD StartMessage(nsIMsgMailNewsUrl *aUrl); \
  NS_SCRIPTABLE NS_IMETHOD EndMessage(nsIMsgMailNewsUrl *aUrl, nsMsgKey uidOfMessage); \
  NS_SCRIPTABLE NS_IMETHOD NotifySearchHit(nsIMsgMailNewsUrl *aUrl, const char * hitLine); \
  NS_SCRIPTABLE NS_IMETHOD CopyNextStreamMessage(bool copySucceeded, nsISupports *copyState); \
  NS_SCRIPTABLE NS_IMETHOD CloseMockChannel(nsIImapMockChannel *aChannel); \
  NS_SCRIPTABLE NS_IMETHOD SetUrlState(nsIImapProtocol *aProtocol, nsIMsgMailNewsUrl *aUrl, bool isRunning, bool aSuspend, nsresult status); \
  NS_SCRIPTABLE NS_IMETHOD ReleaseUrlCacheEntry(nsIMsgMailNewsUrl *aUrl); \
  NS_SCRIPTABLE NS_IMETHOD HeaderFetchCompleted(nsIImapProtocol *aProtocol); \
  NS_SCRIPTABLE NS_IMETHOD SetBiffStateAndUpdate(PRInt32 biffState); \
  NS_SCRIPTABLE NS_IMETHOD ProgressStatus(nsIImapProtocol *aProtocol, PRUint32 aMsgId, const PRUnichar * extraInfo); \
  NS_SCRIPTABLE NS_IMETHOD PercentProgress(nsIImapProtocol *aProtocol, const PRUnichar * aMessage, PRInt64 aCurrentProgress, PRInt64 aMaxProgressProgressInfo); \
  NS_SCRIPTABLE NS_IMETHOD ClearFolderRights(void); \
  NS_SCRIPTABLE NS_IMETHOD SetCopyResponseUid(const char * msgIdString, nsIImapUrl *aUrl); \
  NS_SCRIPTABLE NS_IMETHOD SetAppendMsgUid(nsMsgKey newKey, nsIImapUrl *aUrl); \
  NS_SCRIPTABLE NS_IMETHOD GetMessageId(nsIImapUrl *aUrl, nsACString & _retval NS_OUTPARAM); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIIMAPMAILFOLDERSINK(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsACLListed(bool *aFolderNeedsACLListed) { return _to GetFolderNeedsACLListed(aFolderNeedsACLListed); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsACLListed(bool aFolderNeedsACLListed) { return _to SetFolderNeedsACLListed(aFolderNeedsACLListed); } \
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsSubscribing(bool *aFolderNeedsSubscribing) { return _to GetFolderNeedsSubscribing(aFolderNeedsSubscribing); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsSubscribing(bool aFolderNeedsSubscribing) { return _to SetFolderNeedsSubscribing(aFolderNeedsSubscribing); } \
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsAdded(bool *aFolderNeedsAdded) { return _to GetFolderNeedsAdded(aFolderNeedsAdded); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsAdded(bool aFolderNeedsAdded) { return _to SetFolderNeedsAdded(aFolderNeedsAdded); } \
  NS_SCRIPTABLE NS_IMETHOD GetAclFlags(PRUint32 *aAclFlags) { return _to GetAclFlags(aAclFlags); } \
  NS_SCRIPTABLE NS_IMETHOD SetAclFlags(PRUint32 aAclFlags) { return _to SetAclFlags(aAclFlags); } \
  NS_SCRIPTABLE NS_IMETHOD GetUidValidity(PRInt32 *aUidValidity) { return _to GetUidValidity(aUidValidity); } \
  NS_SCRIPTABLE NS_IMETHOD SetUidValidity(PRInt32 aUidValidity) { return _to SetUidValidity(aUidValidity); } \
  NS_SCRIPTABLE NS_IMETHOD GetFolderQuotaCommandIssued(bool *aFolderQuotaCommandIssued) { return _to GetFolderQuotaCommandIssued(aFolderQuotaCommandIssued); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolderQuotaCommandIssued(bool aFolderQuotaCommandIssued) { return _to SetFolderQuotaCommandIssued(aFolderQuotaCommandIssued); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolderQuotaData(const nsACString & aFolderQuotaRoot, PRUint32 aFolderQuotaUsedKB, PRUint32 aFolderQuotaMaxKB) { return _to SetFolderQuotaData(aFolderQuotaRoot, aFolderQuotaUsedKB, aFolderQuotaMaxKB); } \
  NS_SCRIPTABLE NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders) { return _to GetShouldDownloadAllHeaders(aShouldDownloadAllHeaders); } \
  NS_SCRIPTABLE NS_IMETHOD GetOnlineDelimiter(char *aOnlineDelimiter) { return _to GetOnlineDelimiter(aOnlineDelimiter); } \
  NS_SCRIPTABLE NS_IMETHOD OnNewIdleMessages(void) { return _to OnNewIdleMessages(); } \
  NS_SCRIPTABLE NS_IMETHOD UpdateImapMailboxInfo(nsIImapProtocol *aProtocol, nsIMailboxSpec *aSpec) { return _to UpdateImapMailboxInfo(aProtocol, aSpec); } \
  NS_SCRIPTABLE NS_IMETHOD UpdateImapMailboxStatus(nsIImapProtocol *aProtocol, nsIMailboxSpec *aSpec) { return _to UpdateImapMailboxStatus(aProtocol, aSpec); } \
  NS_SCRIPTABLE NS_IMETHOD GetMsgHdrsToDownload(bool *aMore NS_OUTPARAM, PRInt32 *aTotalCount NS_OUTPARAM, PRUint32 *aCount NS_OUTPARAM, nsMsgKey **aKeys NS_OUTPARAM) { return _to GetMsgHdrsToDownload(aMore, aTotalCount, aCount, aKeys); } \
  NS_SCRIPTABLE NS_IMETHOD ParseMsgHdrs(nsIImapProtocol *aProtocol, nsIImapHeaderXferInfo *aHdrXferInfo) { return _to ParseMsgHdrs(aProtocol, aHdrXferInfo); } \
  NS_SCRIPTABLE NS_IMETHOD AbortHeaderParseStream(nsIImapProtocol *aProtocol) { return _to AbortHeaderParseStream(aProtocol); } \
  NS_SCRIPTABLE NS_IMETHOD OnlineCopyCompleted(nsIImapProtocol *aProtocol, ImapOnlineCopyState aCopyState) { return _to OnlineCopyCompleted(aProtocol, aCopyState); } \
  NS_SCRIPTABLE NS_IMETHOD StartMessage(nsIMsgMailNewsUrl *aUrl) { return _to StartMessage(aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD EndMessage(nsIMsgMailNewsUrl *aUrl, nsMsgKey uidOfMessage) { return _to EndMessage(aUrl, uidOfMessage); } \
  NS_SCRIPTABLE NS_IMETHOD NotifySearchHit(nsIMsgMailNewsUrl *aUrl, const char * hitLine) { return _to NotifySearchHit(aUrl, hitLine); } \
  NS_SCRIPTABLE NS_IMETHOD CopyNextStreamMessage(bool copySucceeded, nsISupports *copyState) { return _to CopyNextStreamMessage(copySucceeded, copyState); } \
  NS_SCRIPTABLE NS_IMETHOD CloseMockChannel(nsIImapMockChannel *aChannel) { return _to CloseMockChannel(aChannel); } \
  NS_SCRIPTABLE NS_IMETHOD SetUrlState(nsIImapProtocol *aProtocol, nsIMsgMailNewsUrl *aUrl, bool isRunning, bool aSuspend, nsresult status) { return _to SetUrlState(aProtocol, aUrl, isRunning, aSuspend, status); } \
  NS_SCRIPTABLE NS_IMETHOD ReleaseUrlCacheEntry(nsIMsgMailNewsUrl *aUrl) { return _to ReleaseUrlCacheEntry(aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD HeaderFetchCompleted(nsIImapProtocol *aProtocol) { return _to HeaderFetchCompleted(aProtocol); } \
  NS_SCRIPTABLE NS_IMETHOD SetBiffStateAndUpdate(PRInt32 biffState) { return _to SetBiffStateAndUpdate(biffState); } \
  NS_SCRIPTABLE NS_IMETHOD ProgressStatus(nsIImapProtocol *aProtocol, PRUint32 aMsgId, const PRUnichar * extraInfo) { return _to ProgressStatus(aProtocol, aMsgId, extraInfo); } \
  NS_SCRIPTABLE NS_IMETHOD PercentProgress(nsIImapProtocol *aProtocol, const PRUnichar * aMessage, PRInt64 aCurrentProgress, PRInt64 aMaxProgressProgressInfo) { return _to PercentProgress(aProtocol, aMessage, aCurrentProgress, aMaxProgressProgressInfo); } \
  NS_SCRIPTABLE NS_IMETHOD ClearFolderRights(void) { return _to ClearFolderRights(); } \
  NS_SCRIPTABLE NS_IMETHOD SetCopyResponseUid(const char * msgIdString, nsIImapUrl *aUrl) { return _to SetCopyResponseUid(msgIdString, aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD SetAppendMsgUid(nsMsgKey newKey, nsIImapUrl *aUrl) { return _to SetAppendMsgUid(newKey, aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD GetMessageId(nsIImapUrl *aUrl, nsACString & _retval NS_OUTPARAM) { return _to GetMessageId(aUrl, _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_NSIIMAPMAILFOLDERSINK(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsACLListed(bool *aFolderNeedsACLListed) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolderNeedsACLListed(aFolderNeedsACLListed); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsACLListed(bool aFolderNeedsACLListed) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolderNeedsACLListed(aFolderNeedsACLListed); } \
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsSubscribing(bool *aFolderNeedsSubscribing) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolderNeedsSubscribing(aFolderNeedsSubscribing); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsSubscribing(bool aFolderNeedsSubscribing) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolderNeedsSubscribing(aFolderNeedsSubscribing); } \
  NS_SCRIPTABLE NS_IMETHOD GetFolderNeedsAdded(bool *aFolderNeedsAdded) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolderNeedsAdded(aFolderNeedsAdded); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolderNeedsAdded(bool aFolderNeedsAdded) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolderNeedsAdded(aFolderNeedsAdded); } \
  NS_SCRIPTABLE NS_IMETHOD GetAclFlags(PRUint32 *aAclFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAclFlags(aAclFlags); } \
  NS_SCRIPTABLE NS_IMETHOD SetAclFlags(PRUint32 aAclFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAclFlags(aAclFlags); } \
  NS_SCRIPTABLE NS_IMETHOD GetUidValidity(PRInt32 *aUidValidity) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUidValidity(aUidValidity); } \
  NS_SCRIPTABLE NS_IMETHOD SetUidValidity(PRInt32 aUidValidity) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUidValidity(aUidValidity); } \
  NS_SCRIPTABLE NS_IMETHOD GetFolderQuotaCommandIssued(bool *aFolderQuotaCommandIssued) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolderQuotaCommandIssued(aFolderQuotaCommandIssued); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolderQuotaCommandIssued(bool aFolderQuotaCommandIssued) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolderQuotaCommandIssued(aFolderQuotaCommandIssued); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolderQuotaData(const nsACString & aFolderQuotaRoot, PRUint32 aFolderQuotaUsedKB, PRUint32 aFolderQuotaMaxKB) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolderQuotaData(aFolderQuotaRoot, aFolderQuotaUsedKB, aFolderQuotaMaxKB); } \
  NS_SCRIPTABLE NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShouldDownloadAllHeaders(aShouldDownloadAllHeaders); } \
  NS_SCRIPTABLE NS_IMETHOD GetOnlineDelimiter(char *aOnlineDelimiter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOnlineDelimiter(aOnlineDelimiter); } \
  NS_SCRIPTABLE NS_IMETHOD OnNewIdleMessages(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnNewIdleMessages(); } \
  NS_SCRIPTABLE NS_IMETHOD UpdateImapMailboxInfo(nsIImapProtocol *aProtocol, nsIMailboxSpec *aSpec) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateImapMailboxInfo(aProtocol, aSpec); } \
  NS_SCRIPTABLE NS_IMETHOD UpdateImapMailboxStatus(nsIImapProtocol *aProtocol, nsIMailboxSpec *aSpec) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateImapMailboxStatus(aProtocol, aSpec); } \
  NS_SCRIPTABLE NS_IMETHOD GetMsgHdrsToDownload(bool *aMore NS_OUTPARAM, PRInt32 *aTotalCount NS_OUTPARAM, PRUint32 *aCount NS_OUTPARAM, nsMsgKey **aKeys NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMsgHdrsToDownload(aMore, aTotalCount, aCount, aKeys); } \
  NS_SCRIPTABLE NS_IMETHOD ParseMsgHdrs(nsIImapProtocol *aProtocol, nsIImapHeaderXferInfo *aHdrXferInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseMsgHdrs(aProtocol, aHdrXferInfo); } \
  NS_SCRIPTABLE NS_IMETHOD AbortHeaderParseStream(nsIImapProtocol *aProtocol) { return !_to ? NS_ERROR_NULL_POINTER : _to->AbortHeaderParseStream(aProtocol); } \
  NS_SCRIPTABLE NS_IMETHOD OnlineCopyCompleted(nsIImapProtocol *aProtocol, ImapOnlineCopyState aCopyState) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnlineCopyCompleted(aProtocol, aCopyState); } \
  NS_SCRIPTABLE NS_IMETHOD StartMessage(nsIMsgMailNewsUrl *aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->StartMessage(aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD EndMessage(nsIMsgMailNewsUrl *aUrl, nsMsgKey uidOfMessage) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndMessage(aUrl, uidOfMessage); } \
  NS_SCRIPTABLE NS_IMETHOD NotifySearchHit(nsIMsgMailNewsUrl *aUrl, const char * hitLine) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifySearchHit(aUrl, hitLine); } \
  NS_SCRIPTABLE NS_IMETHOD CopyNextStreamMessage(bool copySucceeded, nsISupports *copyState) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyNextStreamMessage(copySucceeded, copyState); } \
  NS_SCRIPTABLE NS_IMETHOD CloseMockChannel(nsIImapMockChannel *aChannel) { return !_to ? NS_ERROR_NULL_POINTER : _to->CloseMockChannel(aChannel); } \
  NS_SCRIPTABLE NS_IMETHOD SetUrlState(nsIImapProtocol *aProtocol, nsIMsgMailNewsUrl *aUrl, bool isRunning, bool aSuspend, nsresult status) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUrlState(aProtocol, aUrl, isRunning, aSuspend, status); } \
  NS_SCRIPTABLE NS_IMETHOD ReleaseUrlCacheEntry(nsIMsgMailNewsUrl *aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReleaseUrlCacheEntry(aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD HeaderFetchCompleted(nsIImapProtocol *aProtocol) { return !_to ? NS_ERROR_NULL_POINTER : _to->HeaderFetchCompleted(aProtocol); } \
  NS_SCRIPTABLE NS_IMETHOD SetBiffStateAndUpdate(PRInt32 biffState) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBiffStateAndUpdate(biffState); } \
  NS_SCRIPTABLE NS_IMETHOD ProgressStatus(nsIImapProtocol *aProtocol, PRUint32 aMsgId, const PRUnichar * extraInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->ProgressStatus(aProtocol, aMsgId, extraInfo); } \
  NS_SCRIPTABLE NS_IMETHOD PercentProgress(nsIImapProtocol *aProtocol, const PRUnichar * aMessage, PRInt64 aCurrentProgress, PRInt64 aMaxProgressProgressInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->PercentProgress(aProtocol, aMessage, aCurrentProgress, aMaxProgressProgressInfo); } \
  NS_SCRIPTABLE NS_IMETHOD ClearFolderRights(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearFolderRights(); } \
  NS_SCRIPTABLE NS_IMETHOD SetCopyResponseUid(const char * msgIdString, nsIImapUrl *aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCopyResponseUid(msgIdString, aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD SetAppendMsgUid(nsMsgKey newKey, nsIImapUrl *aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAppendMsgUid(newKey, aUrl); } \
  NS_SCRIPTABLE NS_IMETHOD GetMessageId(nsIImapUrl *aUrl, nsACString & _retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageId(aUrl, _retval); } 

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

/* Header file */
class nsImapMailFolderSink : public nsIImapMailFolderSink
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIIMAPMAILFOLDERSINK

  nsImapMailFolderSink();

private:
  ~nsImapMailFolderSink();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsImapMailFolderSink, nsIImapMailFolderSink)

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

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

/* attribute boolean folderNeedsACLListed; */
NS_IMETHODIMP nsImapMailFolderSink::GetFolderNeedsACLListed(bool *aFolderNeedsACLListed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsImapMailFolderSink::SetFolderNeedsACLListed(bool aFolderNeedsACLListed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean folderNeedsSubscribing; */
NS_IMETHODIMP nsImapMailFolderSink::GetFolderNeedsSubscribing(bool *aFolderNeedsSubscribing)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsImapMailFolderSink::SetFolderNeedsSubscribing(bool aFolderNeedsSubscribing)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean folderNeedsAdded; */
NS_IMETHODIMP nsImapMailFolderSink::GetFolderNeedsAdded(bool *aFolderNeedsAdded)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsImapMailFolderSink::SetFolderNeedsAdded(bool aFolderNeedsAdded)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long aclFlags; */
NS_IMETHODIMP nsImapMailFolderSink::GetAclFlags(PRUint32 *aAclFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsImapMailFolderSink::SetAclFlags(PRUint32 aAclFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long uidValidity; */
NS_IMETHODIMP nsImapMailFolderSink::GetUidValidity(PRInt32 *aUidValidity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsImapMailFolderSink::SetUidValidity(PRInt32 aUidValidity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean folderQuotaCommandIssued; */
NS_IMETHODIMP nsImapMailFolderSink::GetFolderQuotaCommandIssued(bool *aFolderQuotaCommandIssued)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsImapMailFolderSink::SetFolderQuotaCommandIssued(bool aFolderQuotaCommandIssued)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFolderQuotaData (in ACString aFolderQuotaRoot, in unsigned long aFolderQuotaUsedKB, in unsigned long aFolderQuotaMaxKB); */
NS_IMETHODIMP nsImapMailFolderSink::SetFolderQuotaData(const nsACString & aFolderQuotaRoot, PRUint32 aFolderQuotaUsedKB, PRUint32 aFolderQuotaMaxKB)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean shouldDownloadAllHeaders; */
NS_IMETHODIMP nsImapMailFolderSink::GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute char onlineDelimiter; */
NS_IMETHODIMP nsImapMailFolderSink::GetOnlineDelimiter(char *aOnlineDelimiter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void OnNewIdleMessages (); */
NS_IMETHODIMP nsImapMailFolderSink::OnNewIdleMessages()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void UpdateImapMailboxInfo (in nsIImapProtocol aProtocol, in nsIMailboxSpec aSpec); */
NS_IMETHODIMP nsImapMailFolderSink::UpdateImapMailboxInfo(nsIImapProtocol *aProtocol, nsIMailboxSpec *aSpec)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void UpdateImapMailboxStatus (in nsIImapProtocol aProtocol, in nsIMailboxSpec aSpec); */
NS_IMETHODIMP nsImapMailFolderSink::UpdateImapMailboxStatus(nsIImapProtocol *aProtocol, nsIMailboxSpec *aSpec)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMsgHdrsToDownload (out boolean aMore, out long aTotalCount, out unsigned long aCount, [array, size_is (aCount), retval] out nsMsgKey aKeys); */
NS_IMETHODIMP nsImapMailFolderSink::GetMsgHdrsToDownload(bool *aMore NS_OUTPARAM, PRInt32 *aTotalCount NS_OUTPARAM, PRUint32 *aCount NS_OUTPARAM, nsMsgKey **aKeys NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void parseMsgHdrs (in nsIImapProtocol aProtocol, in nsIImapHeaderXferInfo aHdrXferInfo); */
NS_IMETHODIMP nsImapMailFolderSink::ParseMsgHdrs(nsIImapProtocol *aProtocol, nsIImapHeaderXferInfo *aHdrXferInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void AbortHeaderParseStream (in nsIImapProtocol aProtocol); */
NS_IMETHODIMP nsImapMailFolderSink::AbortHeaderParseStream(nsIImapProtocol *aProtocol)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void OnlineCopyCompleted (in nsIImapProtocol aProtocol, in ImapOnlineCopyState aCopyState); */
NS_IMETHODIMP nsImapMailFolderSink::OnlineCopyCompleted(nsIImapProtocol *aProtocol, ImapOnlineCopyState aCopyState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void StartMessage (in nsIMsgMailNewsUrl aUrl); */
NS_IMETHODIMP nsImapMailFolderSink::StartMessage(nsIMsgMailNewsUrl *aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void EndMessage (in nsIMsgMailNewsUrl aUrl, in nsMsgKey uidOfMessage); */
NS_IMETHODIMP nsImapMailFolderSink::EndMessage(nsIMsgMailNewsUrl *aUrl, nsMsgKey uidOfMessage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifySearchHit (in nsIMsgMailNewsUrl aUrl, in string hitLine); */
NS_IMETHODIMP nsImapMailFolderSink::NotifySearchHit(nsIMsgMailNewsUrl *aUrl, const char * hitLine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyNextStreamMessage (in boolean copySucceeded, in nsISupports copyState); */
NS_IMETHODIMP nsImapMailFolderSink::CopyNextStreamMessage(bool copySucceeded, nsISupports *copyState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void closeMockChannel (in nsIImapMockChannel aChannel); */
NS_IMETHODIMP nsImapMailFolderSink::CloseMockChannel(nsIImapMockChannel *aChannel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setUrlState (in nsIImapProtocol aProtocol, in nsIMsgMailNewsUrl aUrl, in boolean isRunning, in boolean aSuspend, in nsresult status); */
NS_IMETHODIMP nsImapMailFolderSink::SetUrlState(nsIImapProtocol *aProtocol, nsIMsgMailNewsUrl *aUrl, bool isRunning, bool aSuspend, nsresult status)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void releaseUrlCacheEntry (in nsIMsgMailNewsUrl aUrl); */
NS_IMETHODIMP nsImapMailFolderSink::ReleaseUrlCacheEntry(nsIMsgMailNewsUrl *aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void headerFetchCompleted (in nsIImapProtocol aProtocol); */
NS_IMETHODIMP nsImapMailFolderSink::HeaderFetchCompleted(nsIImapProtocol *aProtocol)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setBiffStateAndUpdate (in long biffState); */
NS_IMETHODIMP nsImapMailFolderSink::SetBiffStateAndUpdate(PRInt32 biffState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void progressStatus (in nsIImapProtocol aProtocol, in unsigned long aMsgId, in wstring extraInfo); */
NS_IMETHODIMP nsImapMailFolderSink::ProgressStatus(nsIImapProtocol *aProtocol, PRUint32 aMsgId, const PRUnichar * extraInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void percentProgress (in nsIImapProtocol aProtocol, in wstring aMessage, in long long aCurrentProgress, in long long aMaxProgressProgressInfo); */
NS_IMETHODIMP nsImapMailFolderSink::PercentProgress(nsIImapProtocol *aProtocol, const PRUnichar * aMessage, PRInt64 aCurrentProgress, PRInt64 aMaxProgressProgressInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearFolderRights (); */
NS_IMETHODIMP nsImapMailFolderSink::ClearFolderRights()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCopyResponseUid (in string msgIdString, in nsIImapUrl aUrl); */
NS_IMETHODIMP nsImapMailFolderSink::SetCopyResponseUid(const char * msgIdString, nsIImapUrl *aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setAppendMsgUid (in nsMsgKey newKey, in nsIImapUrl aUrl); */
NS_IMETHODIMP nsImapMailFolderSink::SetAppendMsgUid(nsMsgKey newKey, nsIImapUrl *aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getMessageId (in nsIImapUrl aUrl); */
NS_IMETHODIMP nsImapMailFolderSink::GetMessageId(nsIImapUrl *aUrl, nsACString & _retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIImapMailFolderSink_h__ */
