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

#ifndef __gen_nsIMsgCompose_h__
#define __gen_nsIMsgCompose_h__


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

#ifndef __gen_nsIMsgCompFields_h__
#include "nsIMsgCompFields.h"
#endif

#ifndef __gen_nsIMsgComposeParams_h__
#include "nsIMsgComposeParams.h"
#endif

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

class nsIMsgIdentity; /* forward declaration */

class nsIMsgProgress; /* forward declaration */

class nsIDOMWindowInternal; /* forward declaration */

class nsIDOMWindow; /* forward declaration */

class nsIDOMNode; /* forward declaration */

class nsIEditor; /* forward declaration */

class nsIMsgWindow; /* forward declaration */

typedef PRInt32 MSG_ComposeSaveType;


/* starting interface:    nsIMsgCompSaveType */
#define NS_IMSGCOMPSAVETYPE_IID_STR "6953e50a-7531-11d3-85fe-006008948010"

#define NS_IMSGCOMPSAVETYPE_IID \
  {0x6953e50a, 0x7531, 0x11d3, \
    { 0x85, 0xfe, 0x00, 0x60, 0x08, 0x94, 0x80, 0x10 }}

class NS_NO_VTABLE nsIMsgCompSaveType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGCOMPSAVETYPE_IID)

  enum { File = 0 };

  enum { Template = 1 };

  enum { Draft = 2 };

};

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

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOMPSAVETYPE(_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_NSIMSGCOMPSAVETYPE(_to) \

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

/* Header file */
class nsMsgCompSaveType : public nsIMsgCompSaveType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOMPSAVETYPE

  nsMsgCompSaveType();

private:
  ~nsMsgCompSaveType();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgCompSaveType, nsIMsgCompSaveType)

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

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

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

typedef PRInt32 MSG_DeliverMode;


/* starting interface:    nsIMsgCompDeliverMode */
#define NS_IMSGCOMPDELIVERMODE_IID_STR "a9f27dd7-8f89-4de3-8fbf-41b789c16ee5"

#define NS_IMSGCOMPDELIVERMODE_IID \
  {0xa9f27dd7, 0x8f89, 0x4de3, \
    { 0x8f, 0xbf, 0x41, 0xb7, 0x89, 0xc1, 0x6e, 0xe5 }}

class NS_NO_VTABLE nsIMsgCompDeliverMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGCOMPDELIVERMODE_IID)

  enum { Now = 0 };

  enum { Later = 1 };

  enum { Save = 2 };

  enum { SaveAs = 3 };

  enum { SaveAsDraft = 4 };

  enum { SaveAsTemplate = 5 };

  enum { SendUnsent = 6 };

  enum { AutoSaveAsDraft = 7 };

};

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

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOMPDELIVERMODE(_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_NSIMSGCOMPDELIVERMODE(_to) \

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

/* Header file */
class nsMsgCompDeliverMode : public nsIMsgCompDeliverMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOMPDELIVERMODE

  nsMsgCompDeliverMode();

private:
  ~nsMsgCompDeliverMode();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgCompDeliverMode, nsIMsgCompDeliverMode)

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

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

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


/* starting interface:    nsIMsgCompSendFormat */
#define NS_IMSGCOMPSENDFORMAT_IID_STR "f38ea280-e090-11d3-a449-e3153319347c"

#define NS_IMSGCOMPSENDFORMAT_IID \
  {0xf38ea280, 0xe090, 0x11d3, \
    { 0xa4, 0x49, 0xe3, 0x15, 0x33, 0x19, 0x34, 0x7c }}

class NS_NO_VTABLE nsIMsgCompSendFormat {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGCOMPSENDFORMAT_IID)

  enum { AskUser = 4 };

  enum { PlainText = 1 };

  enum { HTML = 2 };

  enum { Both = 3 };

};

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

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOMPSENDFORMAT(_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_NSIMSGCOMPSENDFORMAT(_to) \

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

/* Header file */
class nsMsgCompSendFormat : public nsIMsgCompSendFormat
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOMPSENDFORMAT

  nsMsgCompSendFormat();

private:
  ~nsMsgCompSendFormat();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgCompSendFormat, nsIMsgCompSendFormat)

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

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

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


/* starting interface:    nsIMsgCompConvertible */
#define NS_IMSGCOMPCONVERTIBLE_IID_STR "9638af92-1dd1-11b2-bef1-ca5fee0abc62"

#define NS_IMSGCOMPCONVERTIBLE_IID \
  {0x9638af92, 0x1dd1, 0x11b2, \
    { 0xbe, 0xf1, 0xca, 0x5f, 0xee, 0x0a, 0xbc, 0x62 }}

class NS_NO_VTABLE nsIMsgCompConvertible {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGCOMPCONVERTIBLE_IID)

  enum { Plain = 1 };

  enum { Yes = 2 };

  enum { Altering = 3 };

  enum { No = 4 };

};

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

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOMPCONVERTIBLE(_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_NSIMSGCOMPCONVERTIBLE(_to) \

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

/* Header file */
class nsMsgCompConvertible : public nsIMsgCompConvertible
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOMPCONVERTIBLE

  nsMsgCompConvertible();

private:
  ~nsMsgCompConvertible();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgCompConvertible, nsIMsgCompConvertible)

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

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

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


/* starting interface:    nsIMsgComposeStateListener */
#define NS_IMSGCOMPOSESTATELISTENER_IID_STR "e72c6981-992a-11d3-a449-eb15bb19bc7c"

#define NS_IMSGCOMPOSESTATELISTENER_IID \
  {0xe72c6981, 0x992a, 0x11d3, \
    { 0xa4, 0x49, 0xeb, 0x15, 0xbb, 0x19, 0xbc, 0x7c }}

class NS_NO_VTABLE nsIMsgComposeStateListener : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGCOMPOSESTATELISTENER_IID)

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

  /* void ComposeProcessDone (in nsresult aResult); */
  NS_IMETHOD ComposeProcessDone(nsresult aResult) = 0;

  /* void SaveInFolderDone (in string folderName); */
  NS_IMETHOD SaveInFolderDone(const char *folderName) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGCOMPOSESTATELISTENER \
  NS_IMETHOD NotifyComposeFieldsReady(void); \
  NS_IMETHOD ComposeProcessDone(nsresult aResult); \
  NS_IMETHOD SaveInFolderDone(const char *folderName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOMPOSESTATELISTENER(_to) \
  NS_IMETHOD NotifyComposeFieldsReady(void) { return _to NotifyComposeFieldsReady(); } \
  NS_IMETHOD ComposeProcessDone(nsresult aResult) { return _to ComposeProcessDone(aResult); } \
  NS_IMETHOD SaveInFolderDone(const char *folderName) { return _to SaveInFolderDone(folderName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGCOMPOSESTATELISTENER(_to) \
  NS_IMETHOD NotifyComposeFieldsReady(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyComposeFieldsReady(); } \
  NS_IMETHOD ComposeProcessDone(nsresult aResult) { return !_to ? NS_ERROR_NULL_POINTER : _to->ComposeProcessDone(aResult); } \
  NS_IMETHOD SaveInFolderDone(const char *folderName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveInFolderDone(folderName); } 

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

/* Header file */
class nsMsgComposeStateListener : public nsIMsgComposeStateListener
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOMPOSESTATELISTENER

  nsMsgComposeStateListener();

private:
  ~nsMsgComposeStateListener();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgComposeStateListener, nsIMsgComposeStateListener)

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

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

/* void NotifyComposeFieldsReady (); */
NS_IMETHODIMP nsMsgComposeStateListener::NotifyComposeFieldsReady()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ComposeProcessDone (in nsresult aResult); */
NS_IMETHODIMP nsMsgComposeStateListener::ComposeProcessDone(nsresult aResult)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SaveInFolderDone (in string folderName); */
NS_IMETHODIMP nsMsgComposeStateListener::SaveInFolderDone(const char *folderName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* TODO: we should create an interface for this enum! */
typedef enum {
   eComposeFieldsReady,
   eComposeProcessDone,
   eSaveInFolderDone
} TStateListenerNotification;

/* starting interface:    nsIMsgComposeRecyclingListener */
#define NS_IMSGCOMPOSERECYCLINGLISTENER_IID_STR "0b28cc56-1dd2-11b2-bbe4-99e6a314f8ba"

#define NS_IMSGCOMPOSERECYCLINGLISTENER_IID \
  {0x0b28cc56, 0x1dd2, 0x11b2, \
    { 0xbb, 0xe4, 0x99, 0xe6, 0xa3, 0x14, 0xf8, 0xba }}

class NS_NO_VTABLE nsIMsgComposeRecyclingListener : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGCOMPOSERECYCLINGLISTENER_IID)

  /* void onClose (); */
  NS_IMETHOD OnClose(void) = 0;

  /* void onReopen (in nsIMsgComposeParams params); */
  NS_IMETHOD OnReopen(nsIMsgComposeParams *params) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGCOMPOSERECYCLINGLISTENER \
  NS_IMETHOD OnClose(void); \
  NS_IMETHOD OnReopen(nsIMsgComposeParams *params); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOMPOSERECYCLINGLISTENER(_to) \
  NS_IMETHOD OnClose(void) { return _to OnClose(); } \
  NS_IMETHOD OnReopen(nsIMsgComposeParams *params) { return _to OnReopen(params); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGCOMPOSERECYCLINGLISTENER(_to) \
  NS_IMETHOD OnClose(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnClose(); } \
  NS_IMETHOD OnReopen(nsIMsgComposeParams *params) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnReopen(params); } 

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

/* Header file */
class nsMsgComposeRecyclingListener : public nsIMsgComposeRecyclingListener
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOMPOSERECYCLINGLISTENER

  nsMsgComposeRecyclingListener();

private:
  ~nsMsgComposeRecyclingListener();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgComposeRecyclingListener, nsIMsgComposeRecyclingListener)

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

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

/* void onClose (); */
NS_IMETHODIMP nsMsgComposeRecyclingListener::OnClose()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onReopen (in nsIMsgComposeParams params); */
NS_IMETHODIMP nsMsgComposeRecyclingListener::OnReopen(nsIMsgComposeParams *params)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIMsgCompose */
#define NS_IMSGCOMPOSE_IID_STR "a56e2be5-76c2-4647-857d-ca71b129b4d6"

#define NS_IMSGCOMPOSE_IID \
  {0xa56e2be5, 0x76c2, 0x4647, \
    { 0x85, 0x7d, 0xca, 0x71, 0xb1, 0x29, 0xb4, 0xd6 }}

class NS_NO_VTABLE nsIMsgCompose : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGCOMPOSE_IID)

  /* void Initialize (in nsIDOMWindowInternal aWindow, in nsIMsgComposeParams aParams); */
  NS_IMETHOD Initialize(nsIDOMWindowInternal *aWindow, nsIMsgComposeParams *aParams) = 0;

  /* void SetDocumentCharset (in string charset); */
  NS_IMETHOD SetDocumentCharset(const char *charset) = 0;

  /* void RegisterStateListener (in nsIMsgComposeStateListener stateListener); */
  NS_IMETHOD RegisterStateListener(nsIMsgComposeStateListener *stateListener) = 0;

  /* void UnregisterStateListener (in nsIMsgComposeStateListener stateListener); */
  NS_IMETHOD UnregisterStateListener(nsIMsgComposeStateListener *stateListener) = 0;

  /* void SendMsg (in MSG_DeliverMode deliverMode, in nsIMsgIdentity identity, in string accountKey, in nsIMsgWindow aMsgWindow, in nsIMsgProgress progress); */
  NS_IMETHOD SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char *accountKey, nsIMsgWindow *aMsgWindow, nsIMsgProgress *progress) = 0;

  /* void CloseWindow (in boolean reclycleIt); */
  NS_IMETHOD CloseWindow(PRBool reclycleIt) = 0;

  /* void abort (); */
  NS_IMETHOD Abort(void) = 0;

  /* void quoteMessage (in string msgURI); */
  NS_IMETHOD QuoteMessage(const char *msgURI) = 0;

  /* AUTF8String AttachmentPrettyName (in string url, in string charset); */
  NS_IMETHOD AttachmentPrettyName(const char *url, const char *charset, nsACString & _retval) = 0;

  /* unsigned long CheckAndPopulateRecipients (in boolean populateMailList, in boolean returnNonHTMLRecipients, out wstring nonHTMLRecipients); */
  NS_IMETHOD CheckAndPopulateRecipients(PRBool populateMailList, PRBool returnNonHTMLRecipients, PRUnichar **nonHTMLRecipients, PRUint32 *_retval) = 0;

  /* long bodyConvertible (); */
  NS_IMETHOD BodyConvertible(PRInt32 *_retval) = 0;

  /* void SetSignature (in nsIMsgIdentity identity); */
  NS_IMETHOD SetSignature(nsIMsgIdentity *identity) = 0;

  /* boolean checkCharsetConversion (in nsIMsgIdentity identity, out string fallbackCharset); */
  NS_IMETHOD CheckCharsetConversion(nsIMsgIdentity *identity, char **fallbackCharset, PRBool *_retval) = 0;

  /* readonly attribute nsIMsgSend messageSend; */
  NS_IMETHOD GetMessageSend(nsIMsgSend * *aMessageSend) = 0;

  /* readonly attribute nsIEditor editor; */
  NS_IMETHOD GetEditor(nsIEditor * *aEditor) = 0;

  /* readonly attribute nsIDOMWindowInternal domWindow; */
  NS_IMETHOD GetDomWindow(nsIDOMWindowInternal * *aDomWindow) = 0;

  /* readonly attribute nsIMsgCompFields compFields; */
  NS_IMETHOD GetCompFields(nsIMsgCompFields * *aCompFields) = 0;

  /* readonly attribute boolean composeHTML; */
  NS_IMETHOD GetComposeHTML(PRBool *aComposeHTML) = 0;

  /* attribute MSG_ComposeType type; */
  NS_IMETHOD GetType(MSG_ComposeType *aType) = 0;
  NS_IMETHOD SetType(MSG_ComposeType aType) = 0;

  /* readonly attribute long wrapLength; */
  NS_IMETHOD GetWrapLength(PRInt32 *aWrapLength) = 0;

  /* attribute boolean bodyModified; */
  NS_IMETHOD GetBodyModified(PRBool *aBodyModified) = 0;
  NS_IMETHOD SetBodyModified(PRBool aBodyModified) = 0;

  /**
   *  Init the editor THIS USED TO BE [noscript]
   *  Now, this is called after editor is created,
   *  which is triggered by loading startup url from JS.
   *  The completion of document loading is detected by observing 
   *  the "obs_documentCreated" command
   */
  /* void initEditor (in nsIEditor editor, in nsIDOMWindow contentWindow); */
  NS_IMETHOD InitEditor(nsIEditor *editor, nsIDOMWindow *contentWindow) = 0;

  /* [noscript] void clearEditor (); */
  NS_IMETHOD ClearEditor(void) = 0;

  /* [noscript] void setCiteReference (in nsString citeReference); */
  NS_IMETHOD SetCiteReference(nsString citeReference) = 0;

  /* [noscript] attribute string savedFolderURI; */
  NS_IMETHOD GetSavedFolderURI(char * *aSavedFolderURI) = 0;
  NS_IMETHOD SetSavedFolderURI(const char * aSavedFolderURI) = 0;

  /* [noscript] void processSignature (in nsIMsgIdentity identity, in boolean aQuoted, inout nsString aMsgBody); */
  NS_IMETHOD ProcessSignature(nsIMsgIdentity *identity, PRBool aQuoted, nsString *aMsgBody) = 0;

  /* [noscript] void processReplyFlags (); */
  NS_IMETHOD ProcessReplyFlags(void) = 0;

  /* [noscript] void rememberQueuedDisposition (); */
  NS_IMETHOD RememberQueuedDisposition(void) = 0;

  /* [noscript] void convertAndLoadComposeWindow (in nsStringRef aPrefix, in nsStringRef aBuf, in nsStringRef aSignature, in boolean aQuoted, in boolean aHTMLEditor); */
  NS_IMETHOD ConvertAndLoadComposeWindow(nsString & aPrefix, nsString & aBuf, nsString & aSignature, PRBool aQuoted, PRBool aHTMLEditor) = 0;

  /* [noscript] void notifyStateListeners (in TStateListenerNotification aNotificationType, in nsresult aResult); */
  NS_IMETHOD NotifyStateListeners(TStateListenerNotification aNotificationType, nsresult aResult) = 0;

  /* readonly attribute nsIMsgProgress progress; */
  NS_IMETHOD GetProgress(nsIMsgProgress * *aProgress) = 0;

  /* nsIMsgSendListener getExternalSendListener (); */
  NS_IMETHOD GetExternalSendListener(nsIMsgSendListener **_retval) = 0;

  /* [noscript] void buildBodyMessageAndSignature (); */
  NS_IMETHOD BuildBodyMessageAndSignature(void) = 0;

  /* [noscript] void buildQuotedMessageAndSignature (); */
  NS_IMETHOD BuildQuotedMessageAndSignature(void) = 0;

  /* [noscript] void getQuotingToFollow (out boolean quotingToFollow); */
  NS_IMETHOD GetQuotingToFollow(PRBool *quotingToFollow) = 0;

  /* attribute nsIMsgComposeRecyclingListener recyclingListener; */
  NS_IMETHOD GetRecyclingListener(nsIMsgComposeRecyclingListener * *aRecyclingListener) = 0;
  NS_IMETHOD SetRecyclingListener(nsIMsgComposeRecyclingListener * aRecyclingListener) = 0;

  /* attribute boolean recycledWindow; */
  NS_IMETHOD GetRecycledWindow(PRBool *aRecycledWindow) = 0;
  NS_IMETHOD SetRecycledWindow(PRBool aRecycledWindow) = 0;

  /* readonly attribute string originalMsgURI; */
  NS_IMETHOD GetOriginalMsgURI(char * *aOriginalMsgURI) = 0;

  /* attribute boolean deleteDraft; */
  NS_IMETHOD GetDeleteDraft(PRBool *aDeleteDraft) = 0;
  NS_IMETHOD SetDeleteDraft(PRBool aDeleteDraft) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGCOMPOSE \
  NS_IMETHOD Initialize(nsIDOMWindowInternal *aWindow, nsIMsgComposeParams *aParams); \
  NS_IMETHOD SetDocumentCharset(const char *charset); \
  NS_IMETHOD RegisterStateListener(nsIMsgComposeStateListener *stateListener); \
  NS_IMETHOD UnregisterStateListener(nsIMsgComposeStateListener *stateListener); \
  NS_IMETHOD SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char *accountKey, nsIMsgWindow *aMsgWindow, nsIMsgProgress *progress); \
  NS_IMETHOD CloseWindow(PRBool reclycleIt); \
  NS_IMETHOD Abort(void); \
  NS_IMETHOD QuoteMessage(const char *msgURI); \
  NS_IMETHOD AttachmentPrettyName(const char *url, const char *charset, nsACString & _retval); \
  NS_IMETHOD CheckAndPopulateRecipients(PRBool populateMailList, PRBool returnNonHTMLRecipients, PRUnichar **nonHTMLRecipients, PRUint32 *_retval); \
  NS_IMETHOD BodyConvertible(PRInt32 *_retval); \
  NS_IMETHOD SetSignature(nsIMsgIdentity *identity); \
  NS_IMETHOD CheckCharsetConversion(nsIMsgIdentity *identity, char **fallbackCharset, PRBool *_retval); \
  NS_IMETHOD GetMessageSend(nsIMsgSend * *aMessageSend); \
  NS_IMETHOD GetEditor(nsIEditor * *aEditor); \
  NS_IMETHOD GetDomWindow(nsIDOMWindowInternal * *aDomWindow); \
  NS_IMETHOD GetCompFields(nsIMsgCompFields * *aCompFields); \
  NS_IMETHOD GetComposeHTML(PRBool *aComposeHTML); \
  NS_IMETHOD GetType(MSG_ComposeType *aType); \
  NS_IMETHOD SetType(MSG_ComposeType aType); \
  NS_IMETHOD GetWrapLength(PRInt32 *aWrapLength); \
  NS_IMETHOD GetBodyModified(PRBool *aBodyModified); \
  NS_IMETHOD SetBodyModified(PRBool aBodyModified); \
  NS_IMETHOD InitEditor(nsIEditor *editor, nsIDOMWindow *contentWindow); \
  NS_IMETHOD ClearEditor(void); \
  NS_IMETHOD SetCiteReference(nsString citeReference); \
  NS_IMETHOD GetSavedFolderURI(char * *aSavedFolderURI); \
  NS_IMETHOD SetSavedFolderURI(const char * aSavedFolderURI); \
  NS_IMETHOD ProcessSignature(nsIMsgIdentity *identity, PRBool aQuoted, nsString *aMsgBody); \
  NS_IMETHOD ProcessReplyFlags(void); \
  NS_IMETHOD RememberQueuedDisposition(void); \
  NS_IMETHOD ConvertAndLoadComposeWindow(nsString & aPrefix, nsString & aBuf, nsString & aSignature, PRBool aQuoted, PRBool aHTMLEditor); \
  NS_IMETHOD NotifyStateListeners(TStateListenerNotification aNotificationType, nsresult aResult); \
  NS_IMETHOD GetProgress(nsIMsgProgress * *aProgress); \
  NS_IMETHOD GetExternalSendListener(nsIMsgSendListener **_retval); \
  NS_IMETHOD BuildBodyMessageAndSignature(void); \
  NS_IMETHOD BuildQuotedMessageAndSignature(void); \
  NS_IMETHOD GetQuotingToFollow(PRBool *quotingToFollow); \
  NS_IMETHOD GetRecyclingListener(nsIMsgComposeRecyclingListener * *aRecyclingListener); \
  NS_IMETHOD SetRecyclingListener(nsIMsgComposeRecyclingListener * aRecyclingListener); \
  NS_IMETHOD GetRecycledWindow(PRBool *aRecycledWindow); \
  NS_IMETHOD SetRecycledWindow(PRBool aRecycledWindow); \
  NS_IMETHOD GetOriginalMsgURI(char * *aOriginalMsgURI); \
  NS_IMETHOD GetDeleteDraft(PRBool *aDeleteDraft); \
  NS_IMETHOD SetDeleteDraft(PRBool aDeleteDraft); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOMPOSE(_to) \
  NS_IMETHOD Initialize(nsIDOMWindowInternal *aWindow, nsIMsgComposeParams *aParams) { return _to Initialize(aWindow, aParams); } \
  NS_IMETHOD SetDocumentCharset(const char *charset) { return _to SetDocumentCharset(charset); } \
  NS_IMETHOD RegisterStateListener(nsIMsgComposeStateListener *stateListener) { return _to RegisterStateListener(stateListener); } \
  NS_IMETHOD UnregisterStateListener(nsIMsgComposeStateListener *stateListener) { return _to UnregisterStateListener(stateListener); } \
  NS_IMETHOD SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char *accountKey, nsIMsgWindow *aMsgWindow, nsIMsgProgress *progress) { return _to SendMsg(deliverMode, identity, accountKey, aMsgWindow, progress); } \
  NS_IMETHOD CloseWindow(PRBool reclycleIt) { return _to CloseWindow(reclycleIt); } \
  NS_IMETHOD Abort(void) { return _to Abort(); } \
  NS_IMETHOD QuoteMessage(const char *msgURI) { return _to QuoteMessage(msgURI); } \
  NS_IMETHOD AttachmentPrettyName(const char *url, const char *charset, nsACString & _retval) { return _to AttachmentPrettyName(url, charset, _retval); } \
  NS_IMETHOD CheckAndPopulateRecipients(PRBool populateMailList, PRBool returnNonHTMLRecipients, PRUnichar **nonHTMLRecipients, PRUint32 *_retval) { return _to CheckAndPopulateRecipients(populateMailList, returnNonHTMLRecipients, nonHTMLRecipients, _retval); } \
  NS_IMETHOD BodyConvertible(PRInt32 *_retval) { return _to BodyConvertible(_retval); } \
  NS_IMETHOD SetSignature(nsIMsgIdentity *identity) { return _to SetSignature(identity); } \
  NS_IMETHOD CheckCharsetConversion(nsIMsgIdentity *identity, char **fallbackCharset, PRBool *_retval) { return _to CheckCharsetConversion(identity, fallbackCharset, _retval); } \
  NS_IMETHOD GetMessageSend(nsIMsgSend * *aMessageSend) { return _to GetMessageSend(aMessageSend); } \
  NS_IMETHOD GetEditor(nsIEditor * *aEditor) { return _to GetEditor(aEditor); } \
  NS_IMETHOD GetDomWindow(nsIDOMWindowInternal * *aDomWindow) { return _to GetDomWindow(aDomWindow); } \
  NS_IMETHOD GetCompFields(nsIMsgCompFields * *aCompFields) { return _to GetCompFields(aCompFields); } \
  NS_IMETHOD GetComposeHTML(PRBool *aComposeHTML) { return _to GetComposeHTML(aComposeHTML); } \
  NS_IMETHOD GetType(MSG_ComposeType *aType) { return _to GetType(aType); } \
  NS_IMETHOD SetType(MSG_ComposeType aType) { return _to SetType(aType); } \
  NS_IMETHOD GetWrapLength(PRInt32 *aWrapLength) { return _to GetWrapLength(aWrapLength); } \
  NS_IMETHOD GetBodyModified(PRBool *aBodyModified) { return _to GetBodyModified(aBodyModified); } \
  NS_IMETHOD SetBodyModified(PRBool aBodyModified) { return _to SetBodyModified(aBodyModified); } \
  NS_IMETHOD InitEditor(nsIEditor *editor, nsIDOMWindow *contentWindow) { return _to InitEditor(editor, contentWindow); } \
  NS_IMETHOD ClearEditor(void) { return _to ClearEditor(); } \
  NS_IMETHOD SetCiteReference(nsString citeReference) { return _to SetCiteReference(citeReference); } \
  NS_IMETHOD GetSavedFolderURI(char * *aSavedFolderURI) { return _to GetSavedFolderURI(aSavedFolderURI); } \
  NS_IMETHOD SetSavedFolderURI(const char * aSavedFolderURI) { return _to SetSavedFolderURI(aSavedFolderURI); } \
  NS_IMETHOD ProcessSignature(nsIMsgIdentity *identity, PRBool aQuoted, nsString *aMsgBody) { return _to ProcessSignature(identity, aQuoted, aMsgBody); } \
  NS_IMETHOD ProcessReplyFlags(void) { return _to ProcessReplyFlags(); } \
  NS_IMETHOD RememberQueuedDisposition(void) { return _to RememberQueuedDisposition(); } \
  NS_IMETHOD ConvertAndLoadComposeWindow(nsString & aPrefix, nsString & aBuf, nsString & aSignature, PRBool aQuoted, PRBool aHTMLEditor) { return _to ConvertAndLoadComposeWindow(aPrefix, aBuf, aSignature, aQuoted, aHTMLEditor); } \
  NS_IMETHOD NotifyStateListeners(TStateListenerNotification aNotificationType, nsresult aResult) { return _to NotifyStateListeners(aNotificationType, aResult); } \
  NS_IMETHOD GetProgress(nsIMsgProgress * *aProgress) { return _to GetProgress(aProgress); } \
  NS_IMETHOD GetExternalSendListener(nsIMsgSendListener **_retval) { return _to GetExternalSendListener(_retval); } \
  NS_IMETHOD BuildBodyMessageAndSignature(void) { return _to BuildBodyMessageAndSignature(); } \
  NS_IMETHOD BuildQuotedMessageAndSignature(void) { return _to BuildQuotedMessageAndSignature(); } \
  NS_IMETHOD GetQuotingToFollow(PRBool *quotingToFollow) { return _to GetQuotingToFollow(quotingToFollow); } \
  NS_IMETHOD GetRecyclingListener(nsIMsgComposeRecyclingListener * *aRecyclingListener) { return _to GetRecyclingListener(aRecyclingListener); } \
  NS_IMETHOD SetRecyclingListener(nsIMsgComposeRecyclingListener * aRecyclingListener) { return _to SetRecyclingListener(aRecyclingListener); } \
  NS_IMETHOD GetRecycledWindow(PRBool *aRecycledWindow) { return _to GetRecycledWindow(aRecycledWindow); } \
  NS_IMETHOD SetRecycledWindow(PRBool aRecycledWindow) { return _to SetRecycledWindow(aRecycledWindow); } \
  NS_IMETHOD GetOriginalMsgURI(char * *aOriginalMsgURI) { return _to GetOriginalMsgURI(aOriginalMsgURI); } \
  NS_IMETHOD GetDeleteDraft(PRBool *aDeleteDraft) { return _to GetDeleteDraft(aDeleteDraft); } \
  NS_IMETHOD SetDeleteDraft(PRBool aDeleteDraft) { return _to SetDeleteDraft(aDeleteDraft); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGCOMPOSE(_to) \
  NS_IMETHOD Initialize(nsIDOMWindowInternal *aWindow, nsIMsgComposeParams *aParams) { return !_to ? NS_ERROR_NULL_POINTER : _to->Initialize(aWindow, aParams); } \
  NS_IMETHOD SetDocumentCharset(const char *charset) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDocumentCharset(charset); } \
  NS_IMETHOD RegisterStateListener(nsIMsgComposeStateListener *stateListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterStateListener(stateListener); } \
  NS_IMETHOD UnregisterStateListener(nsIMsgComposeStateListener *stateListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterStateListener(stateListener); } \
  NS_IMETHOD SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char *accountKey, nsIMsgWindow *aMsgWindow, nsIMsgProgress *progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SendMsg(deliverMode, identity, accountKey, aMsgWindow, progress); } \
  NS_IMETHOD CloseWindow(PRBool reclycleIt) { return !_to ? NS_ERROR_NULL_POINTER : _to->CloseWindow(reclycleIt); } \
  NS_IMETHOD Abort(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Abort(); } \
  NS_IMETHOD QuoteMessage(const char *msgURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->QuoteMessage(msgURI); } \
  NS_IMETHOD AttachmentPrettyName(const char *url, const char *charset, nsACString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachmentPrettyName(url, charset, _retval); } \
  NS_IMETHOD CheckAndPopulateRecipients(PRBool populateMailList, PRBool returnNonHTMLRecipients, PRUnichar **nonHTMLRecipients, PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckAndPopulateRecipients(populateMailList, returnNonHTMLRecipients, nonHTMLRecipients, _retval); } \
  NS_IMETHOD BodyConvertible(PRInt32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->BodyConvertible(_retval); } \
  NS_IMETHOD SetSignature(nsIMsgIdentity *identity) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSignature(identity); } \
  NS_IMETHOD CheckCharsetConversion(nsIMsgIdentity *identity, char **fallbackCharset, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckCharsetConversion(identity, fallbackCharset, _retval); } \
  NS_IMETHOD GetMessageSend(nsIMsgSend * *aMessageSend) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageSend(aMessageSend); } \
  NS_IMETHOD GetEditor(nsIEditor * *aEditor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEditor(aEditor); } \
  NS_IMETHOD GetDomWindow(nsIDOMWindowInternal * *aDomWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDomWindow(aDomWindow); } \
  NS_IMETHOD GetCompFields(nsIMsgCompFields * *aCompFields) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCompFields(aCompFields); } \
  NS_IMETHOD GetComposeHTML(PRBool *aComposeHTML) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetComposeHTML(aComposeHTML); } \
  NS_IMETHOD GetType(MSG_ComposeType *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD SetType(MSG_ComposeType aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetType(aType); } \
  NS_IMETHOD GetWrapLength(PRInt32 *aWrapLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWrapLength(aWrapLength); } \
  NS_IMETHOD GetBodyModified(PRBool *aBodyModified) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBodyModified(aBodyModified); } \
  NS_IMETHOD SetBodyModified(PRBool aBodyModified) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBodyModified(aBodyModified); } \
  NS_IMETHOD InitEditor(nsIEditor *editor, nsIDOMWindow *contentWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->InitEditor(editor, contentWindow); } \
  NS_IMETHOD ClearEditor(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearEditor(); } \
  NS_IMETHOD SetCiteReference(nsString citeReference) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCiteReference(citeReference); } \
  NS_IMETHOD GetSavedFolderURI(char * *aSavedFolderURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSavedFolderURI(aSavedFolderURI); } \
  NS_IMETHOD SetSavedFolderURI(const char * aSavedFolderURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSavedFolderURI(aSavedFolderURI); } \
  NS_IMETHOD ProcessSignature(nsIMsgIdentity *identity, PRBool aQuoted, nsString *aMsgBody) { return !_to ? NS_ERROR_NULL_POINTER : _to->ProcessSignature(identity, aQuoted, aMsgBody); } \
  NS_IMETHOD ProcessReplyFlags(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ProcessReplyFlags(); } \
  NS_IMETHOD RememberQueuedDisposition(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->RememberQueuedDisposition(); } \
  NS_IMETHOD ConvertAndLoadComposeWindow(nsString & aPrefix, nsString & aBuf, nsString & aSignature, PRBool aQuoted, PRBool aHTMLEditor) { return !_to ? NS_ERROR_NULL_POINTER : _to->ConvertAndLoadComposeWindow(aPrefix, aBuf, aSignature, aQuoted, aHTMLEditor); } \
  NS_IMETHOD NotifyStateListeners(TStateListenerNotification aNotificationType, nsresult aResult) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyStateListeners(aNotificationType, aResult); } \
  NS_IMETHOD GetProgress(nsIMsgProgress * *aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProgress(aProgress); } \
  NS_IMETHOD GetExternalSendListener(nsIMsgSendListener **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExternalSendListener(_retval); } \
  NS_IMETHOD BuildBodyMessageAndSignature(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->BuildBodyMessageAndSignature(); } \
  NS_IMETHOD BuildQuotedMessageAndSignature(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->BuildQuotedMessageAndSignature(); } \
  NS_IMETHOD GetQuotingToFollow(PRBool *quotingToFollow) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetQuotingToFollow(quotingToFollow); } \
  NS_IMETHOD GetRecyclingListener(nsIMsgComposeRecyclingListener * *aRecyclingListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecyclingListener(aRecyclingListener); } \
  NS_IMETHOD SetRecyclingListener(nsIMsgComposeRecyclingListener * aRecyclingListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecyclingListener(aRecyclingListener); } \
  NS_IMETHOD GetRecycledWindow(PRBool *aRecycledWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecycledWindow(aRecycledWindow); } \
  NS_IMETHOD SetRecycledWindow(PRBool aRecycledWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecycledWindow(aRecycledWindow); } \
  NS_IMETHOD GetOriginalMsgURI(char * *aOriginalMsgURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOriginalMsgURI(aOriginalMsgURI); } \
  NS_IMETHOD GetDeleteDraft(PRBool *aDeleteDraft) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeleteDraft(aDeleteDraft); } \
  NS_IMETHOD SetDeleteDraft(PRBool aDeleteDraft) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDeleteDraft(aDeleteDraft); } 

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

/* Header file */
class nsMsgCompose : public nsIMsgCompose
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOMPOSE

  nsMsgCompose();

private:
  ~nsMsgCompose();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgCompose, nsIMsgCompose)

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

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

/* void Initialize (in nsIDOMWindowInternal aWindow, in nsIMsgComposeParams aParams); */
NS_IMETHODIMP nsMsgCompose::Initialize(nsIDOMWindowInternal *aWindow, nsIMsgComposeParams *aParams)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SetDocumentCharset (in string charset); */
NS_IMETHODIMP nsMsgCompose::SetDocumentCharset(const char *charset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void RegisterStateListener (in nsIMsgComposeStateListener stateListener); */
NS_IMETHODIMP nsMsgCompose::RegisterStateListener(nsIMsgComposeStateListener *stateListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void UnregisterStateListener (in nsIMsgComposeStateListener stateListener); */
NS_IMETHODIMP nsMsgCompose::UnregisterStateListener(nsIMsgComposeStateListener *stateListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SendMsg (in MSG_DeliverMode deliverMode, in nsIMsgIdentity identity, in string accountKey, in nsIMsgWindow aMsgWindow, in nsIMsgProgress progress); */
NS_IMETHODIMP nsMsgCompose::SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char *accountKey, nsIMsgWindow *aMsgWindow, nsIMsgProgress *progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CloseWindow (in boolean reclycleIt); */
NS_IMETHODIMP nsMsgCompose::CloseWindow(PRBool reclycleIt)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void abort (); */
NS_IMETHODIMP nsMsgCompose::Abort()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void quoteMessage (in string msgURI); */
NS_IMETHODIMP nsMsgCompose::QuoteMessage(const char *msgURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AUTF8String AttachmentPrettyName (in string url, in string charset); */
NS_IMETHODIMP nsMsgCompose::AttachmentPrettyName(const char *url, const char *charset, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* unsigned long CheckAndPopulateRecipients (in boolean populateMailList, in boolean returnNonHTMLRecipients, out wstring nonHTMLRecipients); */
NS_IMETHODIMP nsMsgCompose::CheckAndPopulateRecipients(PRBool populateMailList, PRBool returnNonHTMLRecipients, PRUnichar **nonHTMLRecipients, PRUint32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long bodyConvertible (); */
NS_IMETHODIMP nsMsgCompose::BodyConvertible(PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SetSignature (in nsIMsgIdentity identity); */
NS_IMETHODIMP nsMsgCompose::SetSignature(nsIMsgIdentity *identity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean checkCharsetConversion (in nsIMsgIdentity identity, out string fallbackCharset); */
NS_IMETHODIMP nsMsgCompose::CheckCharsetConversion(nsIMsgIdentity *identity, char **fallbackCharset, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgSend messageSend; */
NS_IMETHODIMP nsMsgCompose::GetMessageSend(nsIMsgSend * *aMessageSend)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIEditor editor; */
NS_IMETHODIMP nsMsgCompose::GetEditor(nsIEditor * *aEditor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIDOMWindowInternal domWindow; */
NS_IMETHODIMP nsMsgCompose::GetDomWindow(nsIDOMWindowInternal * *aDomWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgCompFields compFields; */
NS_IMETHODIMP nsMsgCompose::GetCompFields(nsIMsgCompFields * *aCompFields)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean composeHTML; */
NS_IMETHODIMP nsMsgCompose::GetComposeHTML(PRBool *aComposeHTML)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute MSG_ComposeType type; */
NS_IMETHODIMP nsMsgCompose::GetType(MSG_ComposeType *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgCompose::SetType(MSG_ComposeType aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long wrapLength; */
NS_IMETHODIMP nsMsgCompose::GetWrapLength(PRInt32 *aWrapLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean bodyModified; */
NS_IMETHODIMP nsMsgCompose::GetBodyModified(PRBool *aBodyModified)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgCompose::SetBodyModified(PRBool aBodyModified)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void initEditor (in nsIEditor editor, in nsIDOMWindow contentWindow); */
NS_IMETHODIMP nsMsgCompose::InitEditor(nsIEditor *editor, nsIDOMWindow *contentWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void clearEditor (); */
NS_IMETHODIMP nsMsgCompose::ClearEditor()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void setCiteReference (in nsString citeReference); */
NS_IMETHODIMP nsMsgCompose::SetCiteReference(nsString citeReference)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] attribute string savedFolderURI; */
NS_IMETHODIMP nsMsgCompose::GetSavedFolderURI(char * *aSavedFolderURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgCompose::SetSavedFolderURI(const char * aSavedFolderURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void processSignature (in nsIMsgIdentity identity, in boolean aQuoted, inout nsString aMsgBody); */
NS_IMETHODIMP nsMsgCompose::ProcessSignature(nsIMsgIdentity *identity, PRBool aQuoted, nsString *aMsgBody)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void processReplyFlags (); */
NS_IMETHODIMP nsMsgCompose::ProcessReplyFlags()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void rememberQueuedDisposition (); */
NS_IMETHODIMP nsMsgCompose::RememberQueuedDisposition()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void convertAndLoadComposeWindow (in nsStringRef aPrefix, in nsStringRef aBuf, in nsStringRef aSignature, in boolean aQuoted, in boolean aHTMLEditor); */
NS_IMETHODIMP nsMsgCompose::ConvertAndLoadComposeWindow(nsString & aPrefix, nsString & aBuf, nsString & aSignature, PRBool aQuoted, PRBool aHTMLEditor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void notifyStateListeners (in TStateListenerNotification aNotificationType, in nsresult aResult); */
NS_IMETHODIMP nsMsgCompose::NotifyStateListeners(TStateListenerNotification aNotificationType, nsresult aResult)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgProgress progress; */
NS_IMETHODIMP nsMsgCompose::GetProgress(nsIMsgProgress * *aProgress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgSendListener getExternalSendListener (); */
NS_IMETHODIMP nsMsgCompose::GetExternalSendListener(nsIMsgSendListener **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void buildBodyMessageAndSignature (); */
NS_IMETHODIMP nsMsgCompose::BuildBodyMessageAndSignature()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void buildQuotedMessageAndSignature (); */
NS_IMETHODIMP nsMsgCompose::BuildQuotedMessageAndSignature()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void getQuotingToFollow (out boolean quotingToFollow); */
NS_IMETHODIMP nsMsgCompose::GetQuotingToFollow(PRBool *quotingToFollow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgComposeRecyclingListener recyclingListener; */
NS_IMETHODIMP nsMsgCompose::GetRecyclingListener(nsIMsgComposeRecyclingListener * *aRecyclingListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgCompose::SetRecyclingListener(nsIMsgComposeRecyclingListener * aRecyclingListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean recycledWindow; */
NS_IMETHODIMP nsMsgCompose::GetRecycledWindow(PRBool *aRecycledWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgCompose::SetRecycledWindow(PRBool aRecycledWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string originalMsgURI; */
NS_IMETHODIMP nsMsgCompose::GetOriginalMsgURI(char * *aOriginalMsgURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean deleteDraft; */
NS_IMETHODIMP nsMsgCompose::GetDeleteDraft(PRBool *aDeleteDraft)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgCompose::SetDeleteDraft(PRBool aDeleteDraft)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIMsgComposeSendListener */
#define NS_IMSGCOMPOSESENDLISTENER_IID_STR "acc72780-2cea-11d5-9daa-bacdeac1eefc"

#define NS_IMSGCOMPOSESENDLISTENER_IID \
  {0xacc72780, 0x2cea, 0x11d5, \
    { 0x9d, 0xaa, 0xba, 0xcd, 0xea, 0xc1, 0xee, 0xfc }}

class NS_NO_VTABLE nsIMsgComposeSendListener : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGCOMPOSESENDLISTENER_IID)

  /* void setMsgCompose (in nsIMsgCompose msgCompose); */
  NS_IMETHOD SetMsgCompose(nsIMsgCompose *msgCompose) = 0;

  /* void setDeliverMode (in MSG_DeliverMode deliverMode); */
  NS_IMETHOD SetDeliverMode(MSG_DeliverMode deliverMode) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGCOMPOSESENDLISTENER \
  NS_IMETHOD SetMsgCompose(nsIMsgCompose *msgCompose); \
  NS_IMETHOD SetDeliverMode(MSG_DeliverMode deliverMode); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOMPOSESENDLISTENER(_to) \
  NS_IMETHOD SetMsgCompose(nsIMsgCompose *msgCompose) { return _to SetMsgCompose(msgCompose); } \
  NS_IMETHOD SetDeliverMode(MSG_DeliverMode deliverMode) { return _to SetDeliverMode(deliverMode); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGCOMPOSESENDLISTENER(_to) \
  NS_IMETHOD SetMsgCompose(nsIMsgCompose *msgCompose) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMsgCompose(msgCompose); } \
  NS_IMETHOD SetDeliverMode(MSG_DeliverMode deliverMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDeliverMode(deliverMode); } 

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

/* Header file */
class nsMsgComposeSendListener : public nsIMsgComposeSendListener
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOMPOSESENDLISTENER

  nsMsgComposeSendListener();

private:
  ~nsMsgComposeSendListener();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgComposeSendListener, nsIMsgComposeSendListener)

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

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

/* void setMsgCompose (in nsIMsgCompose msgCompose); */
NS_IMETHODIMP nsMsgComposeSendListener::SetMsgCompose(nsIMsgCompose *msgCompose)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setDeliverMode (in MSG_DeliverMode deliverMode); */
NS_IMETHODIMP nsMsgComposeSendListener::SetDeliverMode(MSG_DeliverMode deliverMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgCompose_h__ */
