/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl/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 nsIImapMessageSink : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IIMAPMESSAGESINK_IID)

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

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

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

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

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

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

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

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

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

  /* unsigned long getCurMoveCopyMessageInfo (in nsIImapUrl aRunningUrl, out PRTime aDate, out ACString aKeywords); */
  NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *aRunningUrl, PRTime *aDate, nsACString & aKeywords, uint32_t *_retval) = 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_IMETHOD SetupMsgWriteStream(nsIFile *aFile, bool aAppendDummyEnvelope) override; \
  NS_IMETHOD ParseAdoptedMsgLine(const char * aAdoptedMsgLine, nsMsgKey aUidOfMsg, nsIImapUrl *aImapUrl) override; \
  NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey aUidOfMessage, bool aMarkMsgRead, nsIImapUrl *aImapUrl, int32_t aUpdatedMessageSize) override; \
  NS_IMETHOD AbortMsgWriteStream(void) override; \
  NS_IMETHOD BeginMessageUpload(void) override; \
  NS_IMETHOD NotifyMessageFlags(uint32_t aFlags, const nsACString & aKeywords, nsMsgKey aMessageKey, uint64_t aHighestModSeq) override; \
  NS_IMETHOD NotifyMessageDeleted(const char * aOnlineFolderName, bool aDeleteAllMsgs, const char * aMsgIdString) override; \
  NS_IMETHOD GetMessageSizeFromDB(const char * aId, uint32_t *aSize) override; \
  NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType aModified) override; \
  NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *aRunningUrl, PRTime *aDate, nsACString & aKeywords, uint32_t *_retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIIMAPMESSAGESINK \
  NS_METHOD SetupMsgWriteStream(nsIFile *aFile, bool aAppendDummyEnvelope); \
  NS_METHOD ParseAdoptedMsgLine(const char * aAdoptedMsgLine, nsMsgKey aUidOfMsg, nsIImapUrl *aImapUrl); \
  NS_METHOD NormalEndMsgWriteStream(nsMsgKey aUidOfMessage, bool aMarkMsgRead, nsIImapUrl *aImapUrl, int32_t aUpdatedMessageSize); \
  NS_METHOD AbortMsgWriteStream(void); \
  NS_METHOD BeginMessageUpload(void); \
  NS_METHOD NotifyMessageFlags(uint32_t aFlags, const nsACString & aKeywords, nsMsgKey aMessageKey, uint64_t aHighestModSeq); \
  NS_METHOD NotifyMessageDeleted(const char * aOnlineFolderName, bool aDeleteAllMsgs, const char * aMsgIdString); \
  NS_METHOD GetMessageSizeFromDB(const char * aId, uint32_t *aSize); \
  NS_METHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType aModified); \
  NS_METHOD GetCurMoveCopyMessageInfo(nsIImapUrl *aRunningUrl, PRTime *aDate, nsACString & aKeywords, uint32_t *_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(nsIFile *aFile, bool aAppendDummyEnvelope) override { return _to SetupMsgWriteStream(aFile, aAppendDummyEnvelope); } \
  NS_IMETHOD ParseAdoptedMsgLine(const char * aAdoptedMsgLine, nsMsgKey aUidOfMsg, nsIImapUrl *aImapUrl) override { return _to ParseAdoptedMsgLine(aAdoptedMsgLine, aUidOfMsg, aImapUrl); } \
  NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey aUidOfMessage, bool aMarkMsgRead, nsIImapUrl *aImapUrl, int32_t aUpdatedMessageSize) override { return _to NormalEndMsgWriteStream(aUidOfMessage, aMarkMsgRead, aImapUrl, aUpdatedMessageSize); } \
  NS_IMETHOD AbortMsgWriteStream(void) override { return _to AbortMsgWriteStream(); } \
  NS_IMETHOD BeginMessageUpload(void) override { return _to BeginMessageUpload(); } \
  NS_IMETHOD NotifyMessageFlags(uint32_t aFlags, const nsACString & aKeywords, nsMsgKey aMessageKey, uint64_t aHighestModSeq) override { return _to NotifyMessageFlags(aFlags, aKeywords, aMessageKey, aHighestModSeq); } \
  NS_IMETHOD NotifyMessageDeleted(const char * aOnlineFolderName, bool aDeleteAllMsgs, const char * aMsgIdString) override { return _to NotifyMessageDeleted(aOnlineFolderName, aDeleteAllMsgs, aMsgIdString); } \
  NS_IMETHOD GetMessageSizeFromDB(const char * aId, uint32_t *aSize) override { return _to GetMessageSizeFromDB(aId, aSize); } \
  NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType aModified) override { return _to SetContentModified(aImapUrl, aModified); } \
  NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *aRunningUrl, PRTime *aDate, nsACString & aKeywords, uint32_t *_retval) override { 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_IMETHOD SetupMsgWriteStream(nsIFile *aFile, bool aAppendDummyEnvelope) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetupMsgWriteStream(aFile, aAppendDummyEnvelope); } \
  NS_IMETHOD ParseAdoptedMsgLine(const char * aAdoptedMsgLine, nsMsgKey aUidOfMsg, nsIImapUrl *aImapUrl) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseAdoptedMsgLine(aAdoptedMsgLine, aUidOfMsg, aImapUrl); } \
  NS_IMETHOD NormalEndMsgWriteStream(nsMsgKey aUidOfMessage, bool aMarkMsgRead, nsIImapUrl *aImapUrl, int32_t aUpdatedMessageSize) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NormalEndMsgWriteStream(aUidOfMessage, aMarkMsgRead, aImapUrl, aUpdatedMessageSize); } \
  NS_IMETHOD AbortMsgWriteStream(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AbortMsgWriteStream(); } \
  NS_IMETHOD BeginMessageUpload(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginMessageUpload(); } \
  NS_IMETHOD NotifyMessageFlags(uint32_t aFlags, const nsACString & aKeywords, nsMsgKey aMessageKey, uint64_t aHighestModSeq) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyMessageFlags(aFlags, aKeywords, aMessageKey, aHighestModSeq); } \
  NS_IMETHOD NotifyMessageDeleted(const char * aOnlineFolderName, bool aDeleteAllMsgs, const char * aMsgIdString) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyMessageDeleted(aOnlineFolderName, aDeleteAllMsgs, aMsgIdString); } \
  NS_IMETHOD GetMessageSizeFromDB(const char * aId, uint32_t *aSize) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageSizeFromDB(aId, aSize); } \
  NS_IMETHOD SetContentModified(nsIImapUrl *aImapUrl, nsImapContentModifiedType aModified) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentModified(aImapUrl, aModified); } \
  NS_IMETHOD GetCurMoveCopyMessageInfo(nsIImapUrl *aRunningUrl, PRTime *aDate, nsACString & aKeywords, uint32_t *_retval) override { 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_ISUPPORTS(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 nsIImapUrl aImapUrl); */
NS_IMETHODIMP nsImapMessageSink::ParseAdoptedMsgLine(const char * aAdoptedMsgLine, nsMsgKey aUidOfMsg, nsIImapUrl *aImapUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void normalEndMsgWriteStream (in nsMsgKey aUidOfMessage, in boolean aMarkMsgRead, in nsIImapUrl aImapUrl, in long aUpdatedMessageSize); */
NS_IMETHODIMP nsImapMessageSink::NormalEndMsgWriteStream(nsMsgKey aUidOfMessage, bool aMarkMsgRead, nsIImapUrl *aImapUrl, int32_t aUpdatedMessageSize)
{
    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(uint32_t aFlags, const nsACString & aKeywords, nsMsgKey aMessageKey, uint64_t 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, uint32_t *aSize)
{
    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;
}

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

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


#endif /* __gen_nsIImapMessageSink_h__ */
