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

#ifndef __gen_nsIImapMessageSink_h__
#define __gen_nsIImapMessageSink_h__


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

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

#ifndef __gen_nsIImapUrl_h__
#include "nsIImapUrl.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 */


/* starting interface:    nsIImapMessageSink */
#define NS_IIMAPMESSAGESINK_IID_STR "6ffb6a92-e43a-405f-92ea-92cf81a5e17b"

#define NS_IIMAPMESSAGESINK_IID \
  {0x6ffb6a92, 0xe43a, 0x405f, \
    { 0x92, 0xea, 0x92, 0xcf, 0x81, 0xa5, 0xe1, 0x7b }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIImapMessageSink : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IIMAPMESSAGESINK_IID)

  /* void setupMsgWriteStream (in nsIFile aFile, in boolean aAppendDummyEnvelope); */
  NS_SCRIPTABLE NS_IMETHOD SetupMsgWriteStream(nsIFile *aFile, bool aAppendDummyEnvelope) = 0;

  /* void parseAdoptedMsgLine (in string aAdoptedMsgLine, in nsMsgKey aUidOfMsg, in long aSizeOfMsg, in nsIImapUrl aImapUrl); */
  NS_SCRIPTABLE NS_IMETHOD ParseAdoptedMsgLine(const char * aAdoptedMsgLine, nsMsgKey aUidOfMsg, PRInt32 aSizeOfMsg, nsIImapUrl *aImapUrl) = 0;

  /* void normalEndMsgWriteStream (in nsMsgKey aUidOfMessage, in boolean aMarkMsgRead, in nsIImapUrl aImapUrl); */
  NS_SCRIPTABLE NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey aUidOfMessage, bool aMarkMsgRead, nsIImapUrl *aImapUrl) = 0;

  /* void abortMsgWriteStream (); */
  NS_SCRIPTABLE NS_IMETHOD AbortMsgWriteStream(void) = 0;

  /* void beginMessageUpload (); */
  NS_SCRIPTABLE NS_IMETHOD BeginMessageUpload(void) = 0;

  /* void notifyMessageFlags (in unsigned long aFlags, in ACString aKeywords, in nsMsgKey aMessageKey, in unsigned long long aHighestModSeq); */
  NS_SCRIPTABLE NS_IMETHOD NotifyMessageFlags(PRUint32 aFlags, const nsACString & aKeywords, nsMsgKey aMessageKey, PRUint64 aHighestModSeq) = 0;

  /* void notifyMessageDeleted (in string aOnlineFolderName, in boolean aDeleteAllMsgs, in string aMsgIdString); */
  NS_SCRIPTABLE NS_IMETHOD NotifyMessageDeleted(const char * aOnlineFolderName, bool aDeleteAllMsgs, const char * aMsgIdString) = 0;

  /* void getMessageSizeFromDB (in string aId, out unsigned long aSize); */
  NS_SCRIPTABLE NS_IMETHOD GetMessageSizeFromDB(const char * aId, PRUint32 *aSize NS_OUTPARAM) = 0;

  /* void setContentModified (in nsIImapUrl aImapUrl, in nsImapContentModifiedType aModified); */
  NS_SCRIPTABLE NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType aModified) = 0;

  /* void setImageCacheSessionForUrl (in nsIMsgMailNewsUrl aMailUrl); */
  NS_SCRIPTABLE NS_IMETHOD SetImageCacheSessionForUrl(nsIMsgMailNewsUrl *aMailUrl) = 0;

  /* unsigned long getCurMoveCopyMessageInfo (in nsIImapUrl aRunningUrl, out PRTime aDate, out ACString aKeywords); */
  NS_SCRIPTABLE NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *aRunningUrl, PRTime *aDate NS_OUTPARAM, nsACString & aKeywords NS_OUTPARAM, PRUint32 *_retval NS_OUTPARAM) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIImapMessageSink, NS_IIMAPMESSAGESINK_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIIMAPMESSAGESINK \
  NS_SCRIPTABLE NS_IMETHOD SetupMsgWriteStream(nsIFile *aFile, bool aAppendDummyEnvelope); \
  NS_SCRIPTABLE NS_IMETHOD ParseAdoptedMsgLine(const char * aAdoptedMsgLine, nsMsgKey aUidOfMsg, PRInt32 aSizeOfMsg, nsIImapUrl *aImapUrl); \
  NS_SCRIPTABLE NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey aUidOfMessage, bool aMarkMsgRead, nsIImapUrl *aImapUrl); \
  NS_SCRIPTABLE NS_IMETHOD AbortMsgWriteStream(void); \
  NS_SCRIPTABLE NS_IMETHOD BeginMessageUpload(void); \
  NS_SCRIPTABLE NS_IMETHOD NotifyMessageFlags(PRUint32 aFlags, const nsACString & aKeywords, nsMsgKey aMessageKey, PRUint64 aHighestModSeq); \
  NS_SCRIPTABLE NS_IMETHOD NotifyMessageDeleted(const char * aOnlineFolderName, bool aDeleteAllMsgs, const char * aMsgIdString); \
  NS_SCRIPTABLE NS_IMETHOD GetMessageSizeFromDB(const char * aId, PRUint32 *aSize NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType aModified); \
  NS_SCRIPTABLE NS_IMETHOD SetImageCacheSessionForUrl(nsIMsgMailNewsUrl *aMailUrl); \
  NS_SCRIPTABLE NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *aRunningUrl, PRTime *aDate NS_OUTPARAM, nsACString & aKeywords NS_OUTPARAM, PRUint32 *_retval NS_OUTPARAM); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIIMAPMESSAGESINK(_to) \
  NS_SCRIPTABLE NS_IMETHOD SetupMsgWriteStream(nsIFile *aFile, bool aAppendDummyEnvelope) { return _to SetupMsgWriteStream(aFile, aAppendDummyEnvelope); } \
  NS_SCRIPTABLE NS_IMETHOD ParseAdoptedMsgLine(const char * aAdoptedMsgLine, nsMsgKey aUidOfMsg, PRInt32 aSizeOfMsg, nsIImapUrl *aImapUrl) { return _to ParseAdoptedMsgLine(aAdoptedMsgLine, aUidOfMsg, aSizeOfMsg, aImapUrl); } \
  NS_SCRIPTABLE NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey aUidOfMessage, bool aMarkMsgRead, nsIImapUrl *aImapUrl) { return _to NormalEndMsgWriteStream(aUidOfMessage, aMarkMsgRead, aImapUrl); } \
  NS_SCRIPTABLE NS_IMETHOD AbortMsgWriteStream(void) { return _to AbortMsgWriteStream(); } \
  NS_SCRIPTABLE NS_IMETHOD BeginMessageUpload(void) { return _to BeginMessageUpload(); } \
  NS_SCRIPTABLE NS_IMETHOD NotifyMessageFlags(PRUint32 aFlags, const nsACString & aKeywords, nsMsgKey aMessageKey, PRUint64 aHighestModSeq) { return _to NotifyMessageFlags(aFlags, aKeywords, aMessageKey, aHighestModSeq); } \
  NS_SCRIPTABLE NS_IMETHOD NotifyMessageDeleted(const char * aOnlineFolderName, bool aDeleteAllMsgs, const char * aMsgIdString) { return _to NotifyMessageDeleted(aOnlineFolderName, aDeleteAllMsgs, aMsgIdString); } \
  NS_SCRIPTABLE NS_IMETHOD GetMessageSizeFromDB(const char * aId, PRUint32 *aSize NS_OUTPARAM) { return _to GetMessageSizeFromDB(aId, aSize); } \
  NS_SCRIPTABLE NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType aModified) { return _to SetContentModified(aImapUrl, aModified); } \
  NS_SCRIPTABLE NS_IMETHOD SetImageCacheSessionForUrl(nsIMsgMailNewsUrl *aMailUrl) { return _to SetImageCacheSessionForUrl(aMailUrl); } \
  NS_SCRIPTABLE NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *aRunningUrl, PRTime *aDate NS_OUTPARAM, nsACString & aKeywords NS_OUTPARAM, PRUint32 *_retval NS_OUTPARAM) { return _to GetCurMoveCopyMessageInfo(aRunningUrl, aDate, aKeywords, _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_NSIIMAPMESSAGESINK(_to) \
  NS_SCRIPTABLE NS_IMETHOD SetupMsgWriteStream(nsIFile *aFile, bool aAppendDummyEnvelope) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetupMsgWriteStream(aFile, aAppendDummyEnvelope); } \
  NS_SCRIPTABLE NS_IMETHOD ParseAdoptedMsgLine(const char * aAdoptedMsgLine, nsMsgKey aUidOfMsg, PRInt32 aSizeOfMsg, nsIImapUrl *aImapUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseAdoptedMsgLine(aAdoptedMsgLine, aUidOfMsg, aSizeOfMsg, aImapUrl); } \
  NS_SCRIPTABLE NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey aUidOfMessage, bool aMarkMsgRead, nsIImapUrl *aImapUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->NormalEndMsgWriteStream(aUidOfMessage, aMarkMsgRead, aImapUrl); } \
  NS_SCRIPTABLE NS_IMETHOD AbortMsgWriteStream(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AbortMsgWriteStream(); } \
  NS_SCRIPTABLE NS_IMETHOD BeginMessageUpload(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginMessageUpload(); } \
  NS_SCRIPTABLE NS_IMETHOD NotifyMessageFlags(PRUint32 aFlags, const nsACString & aKeywords, nsMsgKey aMessageKey, PRUint64 aHighestModSeq) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyMessageFlags(aFlags, aKeywords, aMessageKey, aHighestModSeq); } \
  NS_SCRIPTABLE NS_IMETHOD NotifyMessageDeleted(const char * aOnlineFolderName, bool aDeleteAllMsgs, const char * aMsgIdString) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyMessageDeleted(aOnlineFolderName, aDeleteAllMsgs, aMsgIdString); } \
  NS_SCRIPTABLE NS_IMETHOD GetMessageSizeFromDB(const char * aId, PRUint32 *aSize NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageSizeFromDB(aId, aSize); } \
  NS_SCRIPTABLE NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType aModified) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentModified(aImapUrl, aModified); } \
  NS_SCRIPTABLE NS_IMETHOD SetImageCacheSessionForUrl(nsIMsgMailNewsUrl *aMailUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetImageCacheSessionForUrl(aMailUrl); } \
  NS_SCRIPTABLE NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *aRunningUrl, PRTime *aDate NS_OUTPARAM, nsACString & aKeywords NS_OUTPARAM, PRUint32 *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurMoveCopyMessageInfo(aRunningUrl, aDate, aKeywords, _retval); } 

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

/* Header file */
class nsImapMessageSink : public nsIImapMessageSink
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIIMAPMESSAGESINK

  nsImapMessageSink();

private:
  ~nsImapMessageSink();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsImapMessageSink, nsIImapMessageSink)

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

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

/* void setupMsgWriteStream (in nsIFile aFile, in boolean aAppendDummyEnvelope); */
NS_IMETHODIMP nsImapMessageSink::SetupMsgWriteStream(nsIFile *aFile, bool aAppendDummyEnvelope)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void parseAdoptedMsgLine (in string aAdoptedMsgLine, in nsMsgKey aUidOfMsg, in long aSizeOfMsg, in nsIImapUrl aImapUrl); */
NS_IMETHODIMP nsImapMessageSink::ParseAdoptedMsgLine(const char * aAdoptedMsgLine, nsMsgKey aUidOfMsg, PRInt32 aSizeOfMsg, nsIImapUrl *aImapUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void normalEndMsgWriteStream (in nsMsgKey aUidOfMessage, in boolean aMarkMsgRead, in nsIImapUrl aImapUrl); */
NS_IMETHODIMP nsImapMessageSink::NormalEndMsgWriteStream(nsMsgKey aUidOfMessage, bool aMarkMsgRead, nsIImapUrl *aImapUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void abortMsgWriteStream (); */
NS_IMETHODIMP nsImapMessageSink::AbortMsgWriteStream()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void beginMessageUpload (); */
NS_IMETHODIMP nsImapMessageSink::BeginMessageUpload()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyMessageFlags (in unsigned long aFlags, in ACString aKeywords, in nsMsgKey aMessageKey, in unsigned long long aHighestModSeq); */
NS_IMETHODIMP nsImapMessageSink::NotifyMessageFlags(PRUint32 aFlags, const nsACString & aKeywords, nsMsgKey aMessageKey, PRUint64 aHighestModSeq)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyMessageDeleted (in string aOnlineFolderName, in boolean aDeleteAllMsgs, in string aMsgIdString); */
NS_IMETHODIMP nsImapMessageSink::NotifyMessageDeleted(const char * aOnlineFolderName, bool aDeleteAllMsgs, const char * aMsgIdString)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMessageSizeFromDB (in string aId, out unsigned long aSize); */
NS_IMETHODIMP nsImapMessageSink::GetMessageSizeFromDB(const char * aId, PRUint32 *aSize NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setContentModified (in nsIImapUrl aImapUrl, in nsImapContentModifiedType aModified); */
NS_IMETHODIMP nsImapMessageSink::SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType aModified)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setImageCacheSessionForUrl (in nsIMsgMailNewsUrl aMailUrl); */
NS_IMETHODIMP nsImapMessageSink::SetImageCacheSessionForUrl(nsIMsgMailNewsUrl *aMailUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* unsigned long getCurMoveCopyMessageInfo (in nsIImapUrl aRunningUrl, out PRTime aDate, out ACString aKeywords); */
NS_IMETHODIMP nsImapMessageSink::GetCurMoveCopyMessageInfo(nsIImapUrl *aRunningUrl, PRTime *aDate NS_OUTPARAM, nsACString & aKeywords NS_OUTPARAM, PRUint32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIImapMessageSink_h__ */
