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

#ifndef __gen_nsIMsgOfflineImapOperation_h__
#define __gen_nsIMsgOfflineImapOperation_h__


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

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

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
typedef PRUint16 imapMessageFlagsType;

typedef PRInt32 nsOfflineImapOperationType;


/* starting interface:    nsIMsgOfflineImapOperation */
#define NS_IMSGOFFLINEIMAPOPERATION_IID_STR "e576dace-db4f-4d23-aa6f-57165504848f"

#define NS_IMSGOFFLINEIMAPOPERATION_IID \
  {0xe576dace, 0xdb4f, 0x4d23, \
    { 0xaa, 0x6f, 0x57, 0x16, 0x55, 0x04, 0x84, 0x8f }}

class NS_NO_VTABLE nsIMsgOfflineImapOperation : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGOFFLINEIMAPOPERATION_IID)

  enum { kFlagsChanged = 1 };

  enum { kMsgMoved = 2 };

  enum { kMsgCopy = 4 };

  enum { kMoveResult = 8 };

  enum { kAppendDraft = 16 };

  enum { kAddedHeader = 32 };

  enum { kDeletedMsg = 64 };

  enum { kMsgMarkedDeleted = 128 };

  enum { kAppendTemplate = 256 };

  enum { kDeleteAllMsgs = 512 };

  enum { kAddKeywords = 1024 };

  enum { kRemoveKeywords = 2048 };

  /* attribute nsOfflineImapOperationType operation; */
  NS_IMETHOD GetOperation(nsOfflineImapOperationType *aOperation) = 0;
  NS_IMETHOD SetOperation(nsOfflineImapOperationType aOperation) = 0;

  /* void clearOperation (in nsOfflineImapOperationType operation); */
  NS_IMETHOD ClearOperation(nsOfflineImapOperationType operation) = 0;

  /* attribute nsMsgKey messageKey; */
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) = 0;
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) = 0;

  /* attribute imapMessageFlagsType flagOperation; */
  NS_IMETHOD GetFlagOperation(imapMessageFlagsType *aFlagOperation) = 0;
  NS_IMETHOD SetFlagOperation(imapMessageFlagsType aFlagOperation) = 0;

  /* attribute imapMessageFlagsType newFlags; */
  NS_IMETHOD GetNewFlags(imapMessageFlagsType *aNewFlags) = 0;
  NS_IMETHOD SetNewFlags(imapMessageFlagsType aNewFlags) = 0;

  /* attribute string destinationFolderURI; */
  NS_IMETHOD GetDestinationFolderURI(char * *aDestinationFolderURI) = 0;
  NS_IMETHOD SetDestinationFolderURI(const char * aDestinationFolderURI) = 0;

  /* attribute string sourceFolderURI; */
  NS_IMETHOD GetSourceFolderURI(char * *aSourceFolderURI) = 0;
  NS_IMETHOD SetSourceFolderURI(const char * aSourceFolderURI) = 0;

  /* void addKeywordToAdd (in string aKeyword); */
  NS_IMETHOD AddKeywordToAdd(const char *aKeyword) = 0;

  /* void addKeywordToRemove (in string aKeyword); */
  NS_IMETHOD AddKeywordToRemove(const char *aKeyword) = 0;

  /* readonly attribute string keywordsToAdd; */
  NS_IMETHOD GetKeywordsToAdd(char * *aKeywordsToAdd) = 0;

  /* readonly attribute string keywordsToRemove; */
  NS_IMETHOD GetKeywordsToRemove(char * *aKeywordsToRemove) = 0;

  /* readonly attribute long numberOfCopies; */
  NS_IMETHOD GetNumberOfCopies(PRInt32 *aNumberOfCopies) = 0;

  /* void addMessageCopyOperation (in string destinationBox); */
  NS_IMETHOD AddMessageCopyOperation(const char *destinationBox) = 0;

  /* string getCopyDestination (in long copyIndex); */
  NS_IMETHOD GetCopyDestination(PRInt32 copyIndex, char **_retval) = 0;

  /* attribute unsigned long msgSize; */
  NS_IMETHOD GetMsgSize(PRUint32 *aMsgSize) = 0;
  NS_IMETHOD SetMsgSize(PRUint32 aMsgSize) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGOFFLINEIMAPOPERATION \
  NS_IMETHOD GetOperation(nsOfflineImapOperationType *aOperation); \
  NS_IMETHOD SetOperation(nsOfflineImapOperationType aOperation); \
  NS_IMETHOD ClearOperation(nsOfflineImapOperationType operation); \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey); \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey); \
  NS_IMETHOD GetFlagOperation(imapMessageFlagsType *aFlagOperation); \
  NS_IMETHOD SetFlagOperation(imapMessageFlagsType aFlagOperation); \
  NS_IMETHOD GetNewFlags(imapMessageFlagsType *aNewFlags); \
  NS_IMETHOD SetNewFlags(imapMessageFlagsType aNewFlags); \
  NS_IMETHOD GetDestinationFolderURI(char * *aDestinationFolderURI); \
  NS_IMETHOD SetDestinationFolderURI(const char * aDestinationFolderURI); \
  NS_IMETHOD GetSourceFolderURI(char * *aSourceFolderURI); \
  NS_IMETHOD SetSourceFolderURI(const char * aSourceFolderURI); \
  NS_IMETHOD AddKeywordToAdd(const char *aKeyword); \
  NS_IMETHOD AddKeywordToRemove(const char *aKeyword); \
  NS_IMETHOD GetKeywordsToAdd(char * *aKeywordsToAdd); \
  NS_IMETHOD GetKeywordsToRemove(char * *aKeywordsToRemove); \
  NS_IMETHOD GetNumberOfCopies(PRInt32 *aNumberOfCopies); \
  NS_IMETHOD AddMessageCopyOperation(const char *destinationBox); \
  NS_IMETHOD GetCopyDestination(PRInt32 copyIndex, char **_retval); \
  NS_IMETHOD GetMsgSize(PRUint32 *aMsgSize); \
  NS_IMETHOD SetMsgSize(PRUint32 aMsgSize); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGOFFLINEIMAPOPERATION(_to) \
  NS_IMETHOD GetOperation(nsOfflineImapOperationType *aOperation) { return _to GetOperation(aOperation); } \
  NS_IMETHOD SetOperation(nsOfflineImapOperationType aOperation) { return _to SetOperation(aOperation); } \
  NS_IMETHOD ClearOperation(nsOfflineImapOperationType operation) { return _to ClearOperation(operation); } \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) { return _to GetMessageKey(aMessageKey); } \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) { return _to SetMessageKey(aMessageKey); } \
  NS_IMETHOD GetFlagOperation(imapMessageFlagsType *aFlagOperation) { return _to GetFlagOperation(aFlagOperation); } \
  NS_IMETHOD SetFlagOperation(imapMessageFlagsType aFlagOperation) { return _to SetFlagOperation(aFlagOperation); } \
  NS_IMETHOD GetNewFlags(imapMessageFlagsType *aNewFlags) { return _to GetNewFlags(aNewFlags); } \
  NS_IMETHOD SetNewFlags(imapMessageFlagsType aNewFlags) { return _to SetNewFlags(aNewFlags); } \
  NS_IMETHOD GetDestinationFolderURI(char * *aDestinationFolderURI) { return _to GetDestinationFolderURI(aDestinationFolderURI); } \
  NS_IMETHOD SetDestinationFolderURI(const char * aDestinationFolderURI) { return _to SetDestinationFolderURI(aDestinationFolderURI); } \
  NS_IMETHOD GetSourceFolderURI(char * *aSourceFolderURI) { return _to GetSourceFolderURI(aSourceFolderURI); } \
  NS_IMETHOD SetSourceFolderURI(const char * aSourceFolderURI) { return _to SetSourceFolderURI(aSourceFolderURI); } \
  NS_IMETHOD AddKeywordToAdd(const char *aKeyword) { return _to AddKeywordToAdd(aKeyword); } \
  NS_IMETHOD AddKeywordToRemove(const char *aKeyword) { return _to AddKeywordToRemove(aKeyword); } \
  NS_IMETHOD GetKeywordsToAdd(char * *aKeywordsToAdd) { return _to GetKeywordsToAdd(aKeywordsToAdd); } \
  NS_IMETHOD GetKeywordsToRemove(char * *aKeywordsToRemove) { return _to GetKeywordsToRemove(aKeywordsToRemove); } \
  NS_IMETHOD GetNumberOfCopies(PRInt32 *aNumberOfCopies) { return _to GetNumberOfCopies(aNumberOfCopies); } \
  NS_IMETHOD AddMessageCopyOperation(const char *destinationBox) { return _to AddMessageCopyOperation(destinationBox); } \
  NS_IMETHOD GetCopyDestination(PRInt32 copyIndex, char **_retval) { return _to GetCopyDestination(copyIndex, _retval); } \
  NS_IMETHOD GetMsgSize(PRUint32 *aMsgSize) { return _to GetMsgSize(aMsgSize); } \
  NS_IMETHOD SetMsgSize(PRUint32 aMsgSize) { return _to SetMsgSize(aMsgSize); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGOFFLINEIMAPOPERATION(_to) \
  NS_IMETHOD GetOperation(nsOfflineImapOperationType *aOperation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperation(aOperation); } \
  NS_IMETHOD SetOperation(nsOfflineImapOperationType aOperation) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOperation(aOperation); } \
  NS_IMETHOD ClearOperation(nsOfflineImapOperationType operation) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearOperation(operation); } \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageKey(aMessageKey); } \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMessageKey(aMessageKey); } \
  NS_IMETHOD GetFlagOperation(imapMessageFlagsType *aFlagOperation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlagOperation(aFlagOperation); } \
  NS_IMETHOD SetFlagOperation(imapMessageFlagsType aFlagOperation) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFlagOperation(aFlagOperation); } \
  NS_IMETHOD GetNewFlags(imapMessageFlagsType *aNewFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewFlags(aNewFlags); } \
  NS_IMETHOD SetNewFlags(imapMessageFlagsType aNewFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNewFlags(aNewFlags); } \
  NS_IMETHOD GetDestinationFolderURI(char * *aDestinationFolderURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDestinationFolderURI(aDestinationFolderURI); } \
  NS_IMETHOD SetDestinationFolderURI(const char * aDestinationFolderURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDestinationFolderURI(aDestinationFolderURI); } \
  NS_IMETHOD GetSourceFolderURI(char * *aSourceFolderURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSourceFolderURI(aSourceFolderURI); } \
  NS_IMETHOD SetSourceFolderURI(const char * aSourceFolderURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSourceFolderURI(aSourceFolderURI); } \
  NS_IMETHOD AddKeywordToAdd(const char *aKeyword) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddKeywordToAdd(aKeyword); } \
  NS_IMETHOD AddKeywordToRemove(const char *aKeyword) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddKeywordToRemove(aKeyword); } \
  NS_IMETHOD GetKeywordsToAdd(char * *aKeywordsToAdd) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetKeywordsToAdd(aKeywordsToAdd); } \
  NS_IMETHOD GetKeywordsToRemove(char * *aKeywordsToRemove) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetKeywordsToRemove(aKeywordsToRemove); } \
  NS_IMETHOD GetNumberOfCopies(PRInt32 *aNumberOfCopies) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumberOfCopies(aNumberOfCopies); } \
  NS_IMETHOD AddMessageCopyOperation(const char *destinationBox) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddMessageCopyOperation(destinationBox); } \
  NS_IMETHOD GetCopyDestination(PRInt32 copyIndex, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCopyDestination(copyIndex, _retval); } \
  NS_IMETHOD GetMsgSize(PRUint32 *aMsgSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMsgSize(aMsgSize); } \
  NS_IMETHOD SetMsgSize(PRUint32 aMsgSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMsgSize(aMsgSize); } 

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

/* Header file */
class nsMsgOfflineImapOperation : public nsIMsgOfflineImapOperation
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGOFFLINEIMAPOPERATION

  nsMsgOfflineImapOperation();

private:
  ~nsMsgOfflineImapOperation();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgOfflineImapOperation, nsIMsgOfflineImapOperation)

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

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

/* attribute nsOfflineImapOperationType operation; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetOperation(nsOfflineImapOperationType *aOperation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetOperation(nsOfflineImapOperationType aOperation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearOperation (in nsOfflineImapOperationType operation); */
NS_IMETHODIMP nsMsgOfflineImapOperation::ClearOperation(nsOfflineImapOperationType operation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgKey messageKey; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetMessageKey(nsMsgKey *aMessageKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetMessageKey(nsMsgKey aMessageKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute imapMessageFlagsType flagOperation; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetFlagOperation(imapMessageFlagsType *aFlagOperation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetFlagOperation(imapMessageFlagsType aFlagOperation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute imapMessageFlagsType newFlags; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetNewFlags(imapMessageFlagsType *aNewFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetNewFlags(imapMessageFlagsType aNewFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string destinationFolderURI; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetDestinationFolderURI(char * *aDestinationFolderURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetDestinationFolderURI(const char * aDestinationFolderURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string sourceFolderURI; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetSourceFolderURI(char * *aSourceFolderURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetSourceFolderURI(const char * aSourceFolderURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addKeywordToAdd (in string aKeyword); */
NS_IMETHODIMP nsMsgOfflineImapOperation::AddKeywordToAdd(const char *aKeyword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addKeywordToRemove (in string aKeyword); */
NS_IMETHODIMP nsMsgOfflineImapOperation::AddKeywordToRemove(const char *aKeyword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string keywordsToAdd; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetKeywordsToAdd(char * *aKeywordsToAdd)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string keywordsToRemove; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetKeywordsToRemove(char * *aKeywordsToRemove)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long numberOfCopies; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetNumberOfCopies(PRInt32 *aNumberOfCopies)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addMessageCopyOperation (in string destinationBox); */
NS_IMETHODIMP nsMsgOfflineImapOperation::AddMessageCopyOperation(const char *destinationBox)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string getCopyDestination (in long copyIndex); */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetCopyDestination(PRInt32 copyIndex, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long msgSize; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetMsgSize(PRUint32 *aMsgSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetMsgSize(PRUint32 aMsgSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgOfflineImapOperation_h__ */
