/*
 * 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 nsIFileSpec; /* forward declaration */

class nsIMsgMailNewsUrl; /* forward declaration */


/* starting interface:    nsIImapMessageSink */
#define NS_IIMAPMESSAGESINK_IID_STR "b92c9161-2345-4adb-af90-5a42cd898209"

#define NS_IIMAPMESSAGESINK_IID \
  {0xb92c9161, 0x2345, 0x4adb, \
    { 0xaf, 0x90, 0x5a, 0x42, 0xcd, 0x89, 0x82, 0x09 }}

class NS_NO_VTABLE nsIImapMessageSink : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IIMAPMESSAGESINK_IID)

  /* void SetupMsgWriteStream (in string aNativePath, in boolean appendDummyEnvelope); */
  NS_IMETHOD SetupMsgWriteStream(const char *aNativePath, PRBool appendDummyEnvelope) = 0;

  /* void ParseAdoptedMsgLine (in string adoptedMsgLine, in nsMsgKey uidOfMsg); */
  NS_IMETHOD ParseAdoptedMsgLine(const char *adoptedMsgLine, nsMsgKey uidOfMsg) = 0;

  /* void normalEndMsgWriteStream (in nsMsgKey uidOfMessage, in boolean markMsgRead, in nsIImapUrl imapUrl); */
  NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey uidOfMessage, PRBool markMsgRead, nsIImapUrl *imapUrl) = 0;

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

  /* attribute boolean notifyDownloadedLines; */
  NS_IMETHOD GetNotifyDownloadedLines(PRBool *aNotifyDownloadedLines) = 0;
  NS_IMETHOD SetNotifyDownloadedLines(PRBool aNotifyDownloadedLines) = 0;

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

  /* void NotifyMessageFlags (in unsigned long flags, in nsMsgKey messageKey); */
  NS_IMETHOD NotifyMessageFlags(PRUint32 flags, nsMsgKey messageKey) = 0;

  /* void NotifyMessageDeleted (in string onlineFolderName, in boolean deleteAllMsgs, in string msgIdString); */
  NS_IMETHOD NotifyMessageDeleted(const char *onlineFolderName, PRBool deleteAllMsgs, const char *msgIdString) = 0;

  /* void GetMessageSizeFromDB (in string id, in boolean idIsUid, out unsigned long size); */
  NS_IMETHOD GetMessageSizeFromDB(const char *id, PRBool idIsUid, PRUint32 *size) = 0;

  /* void SetContentModified (in nsIImapUrl aImapUrl, in nsImapContentModifiedType modified); */
  NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType modified) = 0;

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

  /* unsigned long getCurMoveCopyMessageInfo (in nsIImapUrl runningUrl, out PRTime date, out string keywords); */
  NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *runningUrl, PRTime *date, char **keywords, PRUint32 *_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIIMAPMESSAGESINK \
  NS_IMETHOD SetupMsgWriteStream(const char *aNativePath, PRBool appendDummyEnvelope); \
  NS_IMETHOD ParseAdoptedMsgLine(const char *adoptedMsgLine, nsMsgKey uidOfMsg); \
  NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey uidOfMessage, PRBool markMsgRead, nsIImapUrl *imapUrl); \
  NS_IMETHOD AbortMsgWriteStream(void); \
  NS_IMETHOD GetNotifyDownloadedLines(PRBool *aNotifyDownloadedLines); \
  NS_IMETHOD SetNotifyDownloadedLines(PRBool aNotifyDownloadedLines); \
  NS_IMETHOD BeginMessageUpload(void); \
  NS_IMETHOD NotifyMessageFlags(PRUint32 flags, nsMsgKey messageKey); \
  NS_IMETHOD NotifyMessageDeleted(const char *onlineFolderName, PRBool deleteAllMsgs, const char *msgIdString); \
  NS_IMETHOD GetMessageSizeFromDB(const char *id, PRBool idIsUid, PRUint32 *size); \
  NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType modified); \
  NS_IMETHOD SetImageCacheSessionForUrl(nsIMsgMailNewsUrl *aMailUrl); \
  NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *runningUrl, PRTime *date, char **keywords, PRUint32 *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIIMAPMESSAGESINK(_to) \
  NS_IMETHOD SetupMsgWriteStream(const char *aNativePath, PRBool appendDummyEnvelope) { return _to SetupMsgWriteStream(aNativePath, appendDummyEnvelope); } \
  NS_IMETHOD ParseAdoptedMsgLine(const char *adoptedMsgLine, nsMsgKey uidOfMsg) { return _to ParseAdoptedMsgLine(adoptedMsgLine, uidOfMsg); } \
  NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey uidOfMessage, PRBool markMsgRead, nsIImapUrl *imapUrl) { return _to NormalEndMsgWriteStream(uidOfMessage, markMsgRead, imapUrl); } \
  NS_IMETHOD AbortMsgWriteStream(void) { return _to AbortMsgWriteStream(); } \
  NS_IMETHOD GetNotifyDownloadedLines(PRBool *aNotifyDownloadedLines) { return _to GetNotifyDownloadedLines(aNotifyDownloadedLines); } \
  NS_IMETHOD SetNotifyDownloadedLines(PRBool aNotifyDownloadedLines) { return _to SetNotifyDownloadedLines(aNotifyDownloadedLines); } \
  NS_IMETHOD BeginMessageUpload(void) { return _to BeginMessageUpload(); } \
  NS_IMETHOD NotifyMessageFlags(PRUint32 flags, nsMsgKey messageKey) { return _to NotifyMessageFlags(flags, messageKey); } \
  NS_IMETHOD NotifyMessageDeleted(const char *onlineFolderName, PRBool deleteAllMsgs, const char *msgIdString) { return _to NotifyMessageDeleted(onlineFolderName, deleteAllMsgs, msgIdString); } \
  NS_IMETHOD GetMessageSizeFromDB(const char *id, PRBool idIsUid, PRUint32 *size) { return _to GetMessageSizeFromDB(id, idIsUid, size); } \
  NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType modified) { return _to SetContentModified(aImapUrl, modified); } \
  NS_IMETHOD SetImageCacheSessionForUrl(nsIMsgMailNewsUrl *aMailUrl) { return _to SetImageCacheSessionForUrl(aMailUrl); } \
  NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *runningUrl, PRTime *date, char **keywords, PRUint32 *_retval) { return _to GetCurMoveCopyMessageInfo(runningUrl, date, keywords, _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_IMETHOD SetupMsgWriteStream(const char *aNativePath, PRBool appendDummyEnvelope) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetupMsgWriteStream(aNativePath, appendDummyEnvelope); } \
  NS_IMETHOD ParseAdoptedMsgLine(const char *adoptedMsgLine, nsMsgKey uidOfMsg) { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseAdoptedMsgLine(adoptedMsgLine, uidOfMsg); } \
  NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey uidOfMessage, PRBool markMsgRead, nsIImapUrl *imapUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->NormalEndMsgWriteStream(uidOfMessage, markMsgRead, imapUrl); } \
  NS_IMETHOD AbortMsgWriteStream(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AbortMsgWriteStream(); } \
  NS_IMETHOD GetNotifyDownloadedLines(PRBool *aNotifyDownloadedLines) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNotifyDownloadedLines(aNotifyDownloadedLines); } \
  NS_IMETHOD SetNotifyDownloadedLines(PRBool aNotifyDownloadedLines) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNotifyDownloadedLines(aNotifyDownloadedLines); } \
  NS_IMETHOD BeginMessageUpload(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginMessageUpload(); } \
  NS_IMETHOD NotifyMessageFlags(PRUint32 flags, nsMsgKey messageKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyMessageFlags(flags, messageKey); } \
  NS_IMETHOD NotifyMessageDeleted(const char *onlineFolderName, PRBool deleteAllMsgs, const char *msgIdString) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyMessageDeleted(onlineFolderName, deleteAllMsgs, msgIdString); } \
  NS_IMETHOD GetMessageSizeFromDB(const char *id, PRBool idIsUid, PRUint32 *size) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageSizeFromDB(id, idIsUid, size); } \
  NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType modified) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentModified(aImapUrl, modified); } \
  NS_IMETHOD SetImageCacheSessionForUrl(nsIMsgMailNewsUrl *aMailUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetImageCacheSessionForUrl(aMailUrl); } \
  NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *runningUrl, PRTime *date, char **keywords, PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurMoveCopyMessageInfo(runningUrl, date, keywords, _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 string aNativePath, in boolean appendDummyEnvelope); */
NS_IMETHODIMP nsImapMessageSink::SetupMsgWriteStream(const char *aNativePath, PRBool appendDummyEnvelope)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ParseAdoptedMsgLine (in string adoptedMsgLine, in nsMsgKey uidOfMsg); */
NS_IMETHODIMP nsImapMessageSink::ParseAdoptedMsgLine(const char *adoptedMsgLine, nsMsgKey uidOfMsg)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void normalEndMsgWriteStream (in nsMsgKey uidOfMessage, in boolean markMsgRead, in nsIImapUrl imapUrl); */
NS_IMETHODIMP nsImapMessageSink::NormalEndMsgWriteStream(nsMsgKey uidOfMessage, PRBool markMsgRead, nsIImapUrl *imapUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute boolean notifyDownloadedLines; */
NS_IMETHODIMP nsImapMessageSink::GetNotifyDownloadedLines(PRBool *aNotifyDownloadedLines)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsImapMessageSink::SetNotifyDownloadedLines(PRBool aNotifyDownloadedLines)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void NotifyMessageFlags (in unsigned long flags, in nsMsgKey messageKey); */
NS_IMETHODIMP nsImapMessageSink::NotifyMessageFlags(PRUint32 flags, nsMsgKey messageKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyMessageDeleted (in string onlineFolderName, in boolean deleteAllMsgs, in string msgIdString); */
NS_IMETHODIMP nsImapMessageSink::NotifyMessageDeleted(const char *onlineFolderName, PRBool deleteAllMsgs, const char *msgIdString)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void GetMessageSizeFromDB (in string id, in boolean idIsUid, out unsigned long size); */
NS_IMETHODIMP nsImapMessageSink::GetMessageSizeFromDB(const char *id, PRBool idIsUid, PRUint32 *size)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SetContentModified (in nsIImapUrl aImapUrl, in nsImapContentModifiedType modified); */
NS_IMETHODIMP nsImapMessageSink::SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType modified)
{
    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 runningUrl, out PRTime date, out string keywords); */
NS_IMETHODIMP nsImapMessageSink::GetCurMoveCopyMessageInfo(nsIImapUrl *runningUrl, PRTime *date, char **keywords, PRUint32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIImapMessageSink_h__ */
