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

#ifndef __gen_nsIMsgSendListener_h__
#include "nsIMsgSendListener.h"
#endif

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

class nsIMsgIdentity; /* forward declaration */

class nsIMsgProgress; /* forward declaration */

class nsIDocShell; /* forward declaration */

class mozIDOMWindowProxy; /* forward declaration */

class nsIEditor; /* forward declaration */

class nsIMsgWindow; /* forward declaration */

typedef int32_t  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_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGCOMPSAVETYPE_IID)

  enum {
    File = 0,
    Template = 1,
    Draft = 2
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgCompSaveType, NS_IMSGCOMPSAVETYPE_IID)

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

/* 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_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_ISUPPORTS(nsMsgCompSaveType, nsIMsgCompSaveType)

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

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

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

typedef int32_t  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_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGCOMPDELIVERMODE_IID)

  enum {
    Now = 0,
    Later = 1,
    Save = 2,
    SaveAs = 3,
    SaveAsDraft = 4,
    SaveAsTemplate = 5,
    SendUnsent = 6,
    AutoSaveAsDraft = 7,
    Background = 8
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgCompDeliverMode, NS_IMSGCOMPDELIVERMODE_IID)

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

/* 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_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_ISUPPORTS(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_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGCOMPSENDFORMAT_IID)

  enum {
    AskUser = 4,
    PlainText = 1,
    HTML = 2,
    Both = 3
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgCompSendFormat, NS_IMSGCOMPSENDFORMAT_IID)

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

/* 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_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_ISUPPORTS(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_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGCOMPCONVERTIBLE_IID)

  enum {
    Plain = 1,
    Yes = 2,
    Altering = 3,
    No = 4
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgCompConvertible, NS_IMSGCOMPCONVERTIBLE_IID)

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

/* 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_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_ISUPPORTS(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 "6ce49b2a-07dc-4783-b307-9a355423163f"

#define NS_IMSGCOMPOSESTATELISTENER_IID \
  {0x6ce49b2a, 0x07dc, 0x4783, \
    { 0xb3, 0x07, 0x9a, 0x35, 0x54, 0x23, 0x16, 0x3f }}

class NS_NO_VTABLE nsIMsgComposeStateListener : public nsISupports {
 public:

  NS_DECLARE_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;

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

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgComposeStateListener, NS_IMSGCOMPOSESTATELISTENER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGCOMPOSESTATELISTENER \
  NS_IMETHOD NotifyComposeFieldsReady(void) override; \
  NS_IMETHOD ComposeProcessDone(nsresult aResult) override; \
  NS_IMETHOD SaveInFolderDone(const char * folderName) override; \
  NS_IMETHOD NotifyComposeBodyReady(void) 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_NSIMSGCOMPOSESTATELISTENER \
  NS_METHOD NotifyComposeFieldsReady(void); \
  NS_METHOD ComposeProcessDone(nsresult aResult); \
  NS_METHOD SaveInFolderDone(const char * folderName); \
  NS_METHOD NotifyComposeBodyReady(void); 

/* 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) override { return _to NotifyComposeFieldsReady(); } \
  NS_IMETHOD ComposeProcessDone(nsresult aResult) override { return _to ComposeProcessDone(aResult); } \
  NS_IMETHOD SaveInFolderDone(const char * folderName) override { return _to SaveInFolderDone(folderName); } \
  NS_IMETHOD NotifyComposeBodyReady(void) override { return _to NotifyComposeBodyReady(); } 

/* 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) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyComposeFieldsReady(); } \
  NS_IMETHOD ComposeProcessDone(nsresult aResult) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ComposeProcessDone(aResult); } \
  NS_IMETHOD SaveInFolderDone(const char * folderName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveInFolderDone(folderName); } \
  NS_IMETHOD NotifyComposeBodyReady(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyComposeBodyReady(); } 

#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_ISUPPORTS(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;
}

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

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


/* starting interface:    nsIMsgComposeNotificationType */
#define NS_IMSGCOMPOSENOTIFICATIONTYPE_IID_STR "061aae23-7e0a-4818-9a15-1b5db3ceb7f4"

#define NS_IMSGCOMPOSENOTIFICATIONTYPE_IID \
  {0x061aae23, 0x7e0a, 0x4818, \
    { 0x9a, 0x15, 0x1b, 0x5d, 0xb3, 0xce, 0xb7, 0xf4 }}

class NS_NO_VTABLE nsIMsgComposeNotificationType {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGCOMPOSENOTIFICATIONTYPE_IID)

  enum {
    ComposeFieldsReady = 0,
    ComposeProcessDone = 1,
    SaveInFolderDone = 2,
    ComposeBodyReady = 3
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgComposeNotificationType, NS_IMSGCOMPOSENOTIFICATIONTYPE_IID)

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

/* 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_NSIMSGCOMPOSENOTIFICATIONTYPE \

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

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

/* Header file */
class nsMsgComposeNotificationType : public nsIMsgComposeNotificationType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOMPOSENOTIFICATIONTYPE

  nsMsgComposeNotificationType();

private:
  ~nsMsgComposeNotificationType();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMsgComposeNotificationType, nsIMsgComposeNotificationType)

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

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

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


/* starting interface:    nsIMsgCompose */
#define NS_IMSGCOMPOSE_IID_STR "c6544b6b-06dd-43ac-89b5-949d7c81bb7b"

#define NS_IMSGCOMPOSE_IID \
  {0xc6544b6b, 0x06dd, 0x43ac, \
    { 0x89, 0xb5, 0x94, 0x9d, 0x7c, 0x81, 0xbb, 0x7b }}

class NS_NO_VTABLE nsIMsgCompose : public nsIMsgSendListener {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGCOMPOSE_IID)

  /* void initialize (in nsIMsgComposeParams aParams, [optional] in mozIDOMWindowProxy aWindow, [optional] in nsIDocShell aDocShell); */
  NS_IMETHOD Initialize(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell) = 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 sendMsgToServer (in MSG_DeliverMode deliverMode, in nsIMsgIdentity identity, in string accountKey); */
  NS_IMETHOD SendMsgToServer(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char * accountKey) = 0;

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

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

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

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

  /* void expandMailingLists (); */
  NS_IMETHOD ExpandMailingLists(void) = 0;

  /* long determineHTMLAction (in long aConvertible); */
  NS_IMETHOD DetermineHTMLAction(int32_t aConvertible, int32_t *_retval) = 0;

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

  /* attribute nsIMsgIdentity identity; */
  NS_IMETHOD GetIdentity(nsIMsgIdentity * *aIdentity) = 0;
  NS_IMETHOD SetIdentity(nsIMsgIdentity *aIdentity) = 0;

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

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

  /* void clearMessageSend (); */
  NS_IMETHOD ClearMessageSend(void) = 0;

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

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

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

  /* readonly attribute boolean composeHTML; */
  NS_IMETHOD GetComposeHTML(bool *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(int32_t *aWrapLength) = 0;

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

  /* readonly attribute ACString bodyRaw; */
  NS_IMETHOD GetBodyRaw(nsACString & aBodyRaw) = 0;

  /* void initEditor (in nsIEditor editor, in mozIDOMWindowProxy contentWindow); */
  NS_IMETHOD InitEditor(nsIEditor *editor, mozIDOMWindowProxy *contentWindow) = 0;

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

  /* 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, bool 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, bool aQuoted, bool aHTMLEditor) = 0;

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

  /* readonly attribute nsIMsgProgress progress; */
  NS_IMETHOD GetProgress(nsIMsgProgress * *aProgress) = 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(bool *quotingToFollow) = 0;

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

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

  /* attribute boolean insertingQuotedContent; */
  NS_IMETHOD GetInsertingQuotedContent(bool *aInsertingQuotedContent) = 0;
  NS_IMETHOD SetInsertingQuotedContent(bool aInsertingQuotedContent) = 0;

  /* void addMsgSendListener (in nsIMsgSendListener sendListener); */
  NS_IMETHOD AddMsgSendListener(nsIMsgSendListener *sendListener) = 0;

  /* void removeMsgSendListener (in nsIMsgSendListener sendListener); */
  NS_IMETHOD RemoveMsgSendListener(nsIMsgSendListener *sendListener) = 0;

  /* readonly attribute MSG_DeliverMode deliverMode; */
  NS_IMETHOD GetDeliverMode(MSG_DeliverMode *aDeliverMode) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgCompose, NS_IMSGCOMPOSE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGCOMPOSE \
  NS_IMETHOD Initialize(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell) override; \
  NS_IMETHOD SetDocumentCharset(const char * charset) override; \
  NS_IMETHOD RegisterStateListener(nsIMsgComposeStateListener *stateListener) override; \
  NS_IMETHOD UnregisterStateListener(nsIMsgComposeStateListener *stateListener) override; \
  NS_IMETHOD SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char * accountKey, nsIMsgWindow *aMsgWindow, nsIMsgProgress *progress) override; \
  NS_IMETHOD SendMsgToServer(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char * accountKey) override; \
  NS_IMETHOD CloseWindow(void) override; \
  NS_IMETHOD Abort(void) override; \
  NS_IMETHOD QuoteMessage(const char * msgURI) override; \
  NS_IMETHOD AttachmentPrettyName(const nsACString & url, const char * charset, nsACString & _retval) override; \
  NS_IMETHOD ExpandMailingLists(void) override; \
  NS_IMETHOD DetermineHTMLAction(int32_t aConvertible, int32_t *_retval) override; \
  NS_IMETHOD BodyConvertible(int32_t *_retval) override; \
  NS_IMETHOD GetIdentity(nsIMsgIdentity * *aIdentity) override; \
  NS_IMETHOD SetIdentity(nsIMsgIdentity *aIdentity) override; \
  NS_IMETHOD CheckCharsetConversion(nsIMsgIdentity *identity, char * *fallbackCharset, bool *_retval) override; \
  NS_IMETHOD GetMessageSend(nsIMsgSend * *aMessageSend) override; \
  NS_IMETHOD SetMessageSend(nsIMsgSend *aMessageSend) override; \
  NS_IMETHOD ClearMessageSend(void) override; \
  NS_IMETHOD GetEditor(nsIEditor * *aEditor) override; \
  NS_IMETHOD SetEditor(nsIEditor *aEditor) override; \
  NS_IMETHOD GetDomWindow(mozIDOMWindowProxy * *aDomWindow) override; \
  NS_IMETHOD GetCompFields(nsIMsgCompFields * *aCompFields) override; \
  NS_IMETHOD GetComposeHTML(bool *aComposeHTML) override; \
  NS_IMETHOD GetType(MSG_ComposeType *aType) override; \
  NS_IMETHOD SetType(MSG_ComposeType aType) override; \
  NS_IMETHOD GetWrapLength(int32_t *aWrapLength) override; \
  NS_IMETHOD GetBodyModified(bool *aBodyModified) override; \
  NS_IMETHOD SetBodyModified(bool aBodyModified) override; \
  NS_IMETHOD GetBodyRaw(nsACString & aBodyRaw) override; \
  NS_IMETHOD InitEditor(nsIEditor *editor, mozIDOMWindowProxy *contentWindow) override; \
  NS_IMETHOD SetCiteReference(nsString citeReference) override; \
  NS_IMETHOD GetSavedFolderURI(char * *aSavedFolderURI) override; \
  NS_IMETHOD SetSavedFolderURI(const char * aSavedFolderURI) override; \
  NS_IMETHOD ProcessSignature(nsIMsgIdentity *identity, bool aQuoted, nsString *aMsgBody) override; \
  NS_IMETHOD ProcessReplyFlags(void) override; \
  NS_IMETHOD RememberQueuedDisposition(void) override; \
  NS_IMETHOD ConvertAndLoadComposeWindow(nsString & aPrefix, nsString & aBuf, nsString & aSignature, bool aQuoted, bool aHTMLEditor) override; \
  NS_IMETHOD NotifyStateListeners(int32_t aNotificationType, nsresult aResult) override; \
  NS_IMETHOD GetProgress(nsIMsgProgress * *aProgress) override; \
  NS_IMETHOD BuildBodyMessageAndSignature(void) override; \
  NS_IMETHOD BuildQuotedMessageAndSignature(void) override; \
  NS_IMETHOD GetQuotingToFollow(bool *quotingToFollow) override; \
  NS_IMETHOD GetOriginalMsgURI(char * *aOriginalMsgURI) override; \
  NS_IMETHOD GetDeleteDraft(bool *aDeleteDraft) override; \
  NS_IMETHOD SetDeleteDraft(bool aDeleteDraft) override; \
  NS_IMETHOD GetInsertingQuotedContent(bool *aInsertingQuotedContent) override; \
  NS_IMETHOD SetInsertingQuotedContent(bool aInsertingQuotedContent) override; \
  NS_IMETHOD AddMsgSendListener(nsIMsgSendListener *sendListener) override; \
  NS_IMETHOD RemoveMsgSendListener(nsIMsgSendListener *sendListener) override; \
  NS_IMETHOD GetDeliverMode(MSG_DeliverMode *aDeliverMode) 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_NSIMSGCOMPOSE \
  NS_METHOD Initialize(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell); \
  NS_METHOD SetDocumentCharset(const char * charset); \
  NS_METHOD RegisterStateListener(nsIMsgComposeStateListener *stateListener); \
  NS_METHOD UnregisterStateListener(nsIMsgComposeStateListener *stateListener); \
  NS_METHOD SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char * accountKey, nsIMsgWindow *aMsgWindow, nsIMsgProgress *progress); \
  NS_METHOD SendMsgToServer(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char * accountKey); \
  NS_METHOD CloseWindow(void); \
  NS_METHOD Abort(void); \
  NS_METHOD QuoteMessage(const char * msgURI); \
  NS_METHOD AttachmentPrettyName(const nsACString & url, const char * charset, nsACString & _retval); \
  NS_METHOD ExpandMailingLists(void); \
  NS_METHOD DetermineHTMLAction(int32_t aConvertible, int32_t *_retval); \
  NS_METHOD BodyConvertible(int32_t *_retval); \
  NS_METHOD GetIdentity(nsIMsgIdentity * *aIdentity); \
  NS_METHOD SetIdentity(nsIMsgIdentity *aIdentity); \
  NS_METHOD CheckCharsetConversion(nsIMsgIdentity *identity, char * *fallbackCharset, bool *_retval); \
  NS_METHOD GetMessageSend(nsIMsgSend * *aMessageSend); \
  NS_METHOD SetMessageSend(nsIMsgSend *aMessageSend); \
  NS_METHOD ClearMessageSend(void); \
  NS_METHOD GetEditor(nsIEditor * *aEditor); \
  NS_METHOD SetEditor(nsIEditor *aEditor); \
  NS_METHOD GetDomWindow(mozIDOMWindowProxy * *aDomWindow); \
  NS_METHOD GetCompFields(nsIMsgCompFields * *aCompFields); \
  NS_METHOD GetComposeHTML(bool *aComposeHTML); \
  NS_METHOD GetType(MSG_ComposeType *aType); \
  NS_METHOD SetType(MSG_ComposeType aType); \
  NS_METHOD GetWrapLength(int32_t *aWrapLength); \
  NS_METHOD GetBodyModified(bool *aBodyModified); \
  NS_METHOD SetBodyModified(bool aBodyModified); \
  NS_METHOD GetBodyRaw(nsACString & aBodyRaw); \
  NS_METHOD InitEditor(nsIEditor *editor, mozIDOMWindowProxy *contentWindow); \
  NS_METHOD SetCiteReference(nsString citeReference); \
  NS_METHOD GetSavedFolderURI(char * *aSavedFolderURI); \
  NS_METHOD SetSavedFolderURI(const char * aSavedFolderURI); \
  NS_METHOD ProcessSignature(nsIMsgIdentity *identity, bool aQuoted, nsString *aMsgBody); \
  NS_METHOD ProcessReplyFlags(void); \
  NS_METHOD RememberQueuedDisposition(void); \
  NS_METHOD ConvertAndLoadComposeWindow(nsString & aPrefix, nsString & aBuf, nsString & aSignature, bool aQuoted, bool aHTMLEditor); \
  NS_METHOD NotifyStateListeners(int32_t aNotificationType, nsresult aResult); \
  NS_METHOD GetProgress(nsIMsgProgress * *aProgress); \
  NS_METHOD BuildBodyMessageAndSignature(void); \
  NS_METHOD BuildQuotedMessageAndSignature(void); \
  NS_METHOD GetQuotingToFollow(bool *quotingToFollow); \
  NS_METHOD GetOriginalMsgURI(char * *aOriginalMsgURI); \
  NS_METHOD GetDeleteDraft(bool *aDeleteDraft); \
  NS_METHOD SetDeleteDraft(bool aDeleteDraft); \
  NS_METHOD GetInsertingQuotedContent(bool *aInsertingQuotedContent); \
  NS_METHOD SetInsertingQuotedContent(bool aInsertingQuotedContent); \
  NS_METHOD AddMsgSendListener(nsIMsgSendListener *sendListener); \
  NS_METHOD RemoveMsgSendListener(nsIMsgSendListener *sendListener); \
  NS_METHOD GetDeliverMode(MSG_DeliverMode *aDeliverMode); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOMPOSE(_to) \
  NS_IMETHOD Initialize(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell) override { return _to Initialize(aParams, aWindow, aDocShell); } \
  NS_IMETHOD SetDocumentCharset(const char * charset) override { return _to SetDocumentCharset(charset); } \
  NS_IMETHOD RegisterStateListener(nsIMsgComposeStateListener *stateListener) override { return _to RegisterStateListener(stateListener); } \
  NS_IMETHOD UnregisterStateListener(nsIMsgComposeStateListener *stateListener) override { return _to UnregisterStateListener(stateListener); } \
  NS_IMETHOD SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char * accountKey, nsIMsgWindow *aMsgWindow, nsIMsgProgress *progress) override { return _to SendMsg(deliverMode, identity, accountKey, aMsgWindow, progress); } \
  NS_IMETHOD SendMsgToServer(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char * accountKey) override { return _to SendMsgToServer(deliverMode, identity, accountKey); } \
  NS_IMETHOD CloseWindow(void) override { return _to CloseWindow(); } \
  NS_IMETHOD Abort(void) override { return _to Abort(); } \
  NS_IMETHOD QuoteMessage(const char * msgURI) override { return _to QuoteMessage(msgURI); } \
  NS_IMETHOD AttachmentPrettyName(const nsACString & url, const char * charset, nsACString & _retval) override { return _to AttachmentPrettyName(url, charset, _retval); } \
  NS_IMETHOD ExpandMailingLists(void) override { return _to ExpandMailingLists(); } \
  NS_IMETHOD DetermineHTMLAction(int32_t aConvertible, int32_t *_retval) override { return _to DetermineHTMLAction(aConvertible, _retval); } \
  NS_IMETHOD BodyConvertible(int32_t *_retval) override { return _to BodyConvertible(_retval); } \
  NS_IMETHOD GetIdentity(nsIMsgIdentity * *aIdentity) override { return _to GetIdentity(aIdentity); } \
  NS_IMETHOD SetIdentity(nsIMsgIdentity *aIdentity) override { return _to SetIdentity(aIdentity); } \
  NS_IMETHOD CheckCharsetConversion(nsIMsgIdentity *identity, char * *fallbackCharset, bool *_retval) override { return _to CheckCharsetConversion(identity, fallbackCharset, _retval); } \
  NS_IMETHOD GetMessageSend(nsIMsgSend * *aMessageSend) override { return _to GetMessageSend(aMessageSend); } \
  NS_IMETHOD SetMessageSend(nsIMsgSend *aMessageSend) override { return _to SetMessageSend(aMessageSend); } \
  NS_IMETHOD ClearMessageSend(void) override { return _to ClearMessageSend(); } \
  NS_IMETHOD GetEditor(nsIEditor * *aEditor) override { return _to GetEditor(aEditor); } \
  NS_IMETHOD SetEditor(nsIEditor *aEditor) override { return _to SetEditor(aEditor); } \
  NS_IMETHOD GetDomWindow(mozIDOMWindowProxy * *aDomWindow) override { return _to GetDomWindow(aDomWindow); } \
  NS_IMETHOD GetCompFields(nsIMsgCompFields * *aCompFields) override { return _to GetCompFields(aCompFields); } \
  NS_IMETHOD GetComposeHTML(bool *aComposeHTML) override { return _to GetComposeHTML(aComposeHTML); } \
  NS_IMETHOD GetType(MSG_ComposeType *aType) override { return _to GetType(aType); } \
  NS_IMETHOD SetType(MSG_ComposeType aType) override { return _to SetType(aType); } \
  NS_IMETHOD GetWrapLength(int32_t *aWrapLength) override { return _to GetWrapLength(aWrapLength); } \
  NS_IMETHOD GetBodyModified(bool *aBodyModified) override { return _to GetBodyModified(aBodyModified); } \
  NS_IMETHOD SetBodyModified(bool aBodyModified) override { return _to SetBodyModified(aBodyModified); } \
  NS_IMETHOD GetBodyRaw(nsACString & aBodyRaw) override { return _to GetBodyRaw(aBodyRaw); } \
  NS_IMETHOD InitEditor(nsIEditor *editor, mozIDOMWindowProxy *contentWindow) override { return _to InitEditor(editor, contentWindow); } \
  NS_IMETHOD SetCiteReference(nsString citeReference) override { return _to SetCiteReference(citeReference); } \
  NS_IMETHOD GetSavedFolderURI(char * *aSavedFolderURI) override { return _to GetSavedFolderURI(aSavedFolderURI); } \
  NS_IMETHOD SetSavedFolderURI(const char * aSavedFolderURI) override { return _to SetSavedFolderURI(aSavedFolderURI); } \
  NS_IMETHOD ProcessSignature(nsIMsgIdentity *identity, bool aQuoted, nsString *aMsgBody) override { return _to ProcessSignature(identity, aQuoted, aMsgBody); } \
  NS_IMETHOD ProcessReplyFlags(void) override { return _to ProcessReplyFlags(); } \
  NS_IMETHOD RememberQueuedDisposition(void) override { return _to RememberQueuedDisposition(); } \
  NS_IMETHOD ConvertAndLoadComposeWindow(nsString & aPrefix, nsString & aBuf, nsString & aSignature, bool aQuoted, bool aHTMLEditor) override { return _to ConvertAndLoadComposeWindow(aPrefix, aBuf, aSignature, aQuoted, aHTMLEditor); } \
  NS_IMETHOD NotifyStateListeners(int32_t aNotificationType, nsresult aResult) override { return _to NotifyStateListeners(aNotificationType, aResult); } \
  NS_IMETHOD GetProgress(nsIMsgProgress * *aProgress) override { return _to GetProgress(aProgress); } \
  NS_IMETHOD BuildBodyMessageAndSignature(void) override { return _to BuildBodyMessageAndSignature(); } \
  NS_IMETHOD BuildQuotedMessageAndSignature(void) override { return _to BuildQuotedMessageAndSignature(); } \
  NS_IMETHOD GetQuotingToFollow(bool *quotingToFollow) override { return _to GetQuotingToFollow(quotingToFollow); } \
  NS_IMETHOD GetOriginalMsgURI(char * *aOriginalMsgURI) override { return _to GetOriginalMsgURI(aOriginalMsgURI); } \
  NS_IMETHOD GetDeleteDraft(bool *aDeleteDraft) override { return _to GetDeleteDraft(aDeleteDraft); } \
  NS_IMETHOD SetDeleteDraft(bool aDeleteDraft) override { return _to SetDeleteDraft(aDeleteDraft); } \
  NS_IMETHOD GetInsertingQuotedContent(bool *aInsertingQuotedContent) override { return _to GetInsertingQuotedContent(aInsertingQuotedContent); } \
  NS_IMETHOD SetInsertingQuotedContent(bool aInsertingQuotedContent) override { return _to SetInsertingQuotedContent(aInsertingQuotedContent); } \
  NS_IMETHOD AddMsgSendListener(nsIMsgSendListener *sendListener) override { return _to AddMsgSendListener(sendListener); } \
  NS_IMETHOD RemoveMsgSendListener(nsIMsgSendListener *sendListener) override { return _to RemoveMsgSendListener(sendListener); } \
  NS_IMETHOD GetDeliverMode(MSG_DeliverMode *aDeliverMode) override { return _to GetDeliverMode(aDeliverMode); } 

/* 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(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Initialize(aParams, aWindow, aDocShell); } \
  NS_IMETHOD SetDocumentCharset(const char * charset) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDocumentCharset(charset); } \
  NS_IMETHOD RegisterStateListener(nsIMsgComposeStateListener *stateListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterStateListener(stateListener); } \
  NS_IMETHOD UnregisterStateListener(nsIMsgComposeStateListener *stateListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterStateListener(stateListener); } \
  NS_IMETHOD SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char * accountKey, nsIMsgWindow *aMsgWindow, nsIMsgProgress *progress) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SendMsg(deliverMode, identity, accountKey, aMsgWindow, progress); } \
  NS_IMETHOD SendMsgToServer(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char * accountKey) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SendMsgToServer(deliverMode, identity, accountKey); } \
  NS_IMETHOD CloseWindow(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CloseWindow(); } \
  NS_IMETHOD Abort(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Abort(); } \
  NS_IMETHOD QuoteMessage(const char * msgURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->QuoteMessage(msgURI); } \
  NS_IMETHOD AttachmentPrettyName(const nsACString & url, const char * charset, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachmentPrettyName(url, charset, _retval); } \
  NS_IMETHOD ExpandMailingLists(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ExpandMailingLists(); } \
  NS_IMETHOD DetermineHTMLAction(int32_t aConvertible, int32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DetermineHTMLAction(aConvertible, _retval); } \
  NS_IMETHOD BodyConvertible(int32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->BodyConvertible(_retval); } \
  NS_IMETHOD GetIdentity(nsIMsgIdentity * *aIdentity) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIdentity(aIdentity); } \
  NS_IMETHOD SetIdentity(nsIMsgIdentity *aIdentity) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIdentity(aIdentity); } \
  NS_IMETHOD CheckCharsetConversion(nsIMsgIdentity *identity, char * *fallbackCharset, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckCharsetConversion(identity, fallbackCharset, _retval); } \
  NS_IMETHOD GetMessageSend(nsIMsgSend * *aMessageSend) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageSend(aMessageSend); } \
  NS_IMETHOD SetMessageSend(nsIMsgSend *aMessageSend) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMessageSend(aMessageSend); } \
  NS_IMETHOD ClearMessageSend(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearMessageSend(); } \
  NS_IMETHOD GetEditor(nsIEditor * *aEditor) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEditor(aEditor); } \
  NS_IMETHOD SetEditor(nsIEditor *aEditor) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEditor(aEditor); } \
  NS_IMETHOD GetDomWindow(mozIDOMWindowProxy * *aDomWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDomWindow(aDomWindow); } \
  NS_IMETHOD GetCompFields(nsIMsgCompFields * *aCompFields) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCompFields(aCompFields); } \
  NS_IMETHOD GetComposeHTML(bool *aComposeHTML) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetComposeHTML(aComposeHTML); } \
  NS_IMETHOD GetType(MSG_ComposeType *aType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD SetType(MSG_ComposeType aType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetType(aType); } \
  NS_IMETHOD GetWrapLength(int32_t *aWrapLength) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWrapLength(aWrapLength); } \
  NS_IMETHOD GetBodyModified(bool *aBodyModified) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBodyModified(aBodyModified); } \
  NS_IMETHOD SetBodyModified(bool aBodyModified) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBodyModified(aBodyModified); } \
  NS_IMETHOD GetBodyRaw(nsACString & aBodyRaw) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBodyRaw(aBodyRaw); } \
  NS_IMETHOD InitEditor(nsIEditor *editor, mozIDOMWindowProxy *contentWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InitEditor(editor, contentWindow); } \
  NS_IMETHOD SetCiteReference(nsString citeReference) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCiteReference(citeReference); } \
  NS_IMETHOD GetSavedFolderURI(char * *aSavedFolderURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSavedFolderURI(aSavedFolderURI); } \
  NS_IMETHOD SetSavedFolderURI(const char * aSavedFolderURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSavedFolderURI(aSavedFolderURI); } \
  NS_IMETHOD ProcessSignature(nsIMsgIdentity *identity, bool aQuoted, nsString *aMsgBody) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ProcessSignature(identity, aQuoted, aMsgBody); } \
  NS_IMETHOD ProcessReplyFlags(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ProcessReplyFlags(); } \
  NS_IMETHOD RememberQueuedDisposition(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RememberQueuedDisposition(); } \
  NS_IMETHOD ConvertAndLoadComposeWindow(nsString & aPrefix, nsString & aBuf, nsString & aSignature, bool aQuoted, bool aHTMLEditor) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ConvertAndLoadComposeWindow(aPrefix, aBuf, aSignature, aQuoted, aHTMLEditor); } \
  NS_IMETHOD NotifyStateListeners(int32_t aNotificationType, nsresult aResult) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyStateListeners(aNotificationType, aResult); } \
  NS_IMETHOD GetProgress(nsIMsgProgress * *aProgress) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProgress(aProgress); } \
  NS_IMETHOD BuildBodyMessageAndSignature(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->BuildBodyMessageAndSignature(); } \
  NS_IMETHOD BuildQuotedMessageAndSignature(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->BuildQuotedMessageAndSignature(); } \
  NS_IMETHOD GetQuotingToFollow(bool *quotingToFollow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetQuotingToFollow(quotingToFollow); } \
  NS_IMETHOD GetOriginalMsgURI(char * *aOriginalMsgURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOriginalMsgURI(aOriginalMsgURI); } \
  NS_IMETHOD GetDeleteDraft(bool *aDeleteDraft) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeleteDraft(aDeleteDraft); } \
  NS_IMETHOD SetDeleteDraft(bool aDeleteDraft) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDeleteDraft(aDeleteDraft); } \
  NS_IMETHOD GetInsertingQuotedContent(bool *aInsertingQuotedContent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInsertingQuotedContent(aInsertingQuotedContent); } \
  NS_IMETHOD SetInsertingQuotedContent(bool aInsertingQuotedContent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInsertingQuotedContent(aInsertingQuotedContent); } \
  NS_IMETHOD AddMsgSendListener(nsIMsgSendListener *sendListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddMsgSendListener(sendListener); } \
  NS_IMETHOD RemoveMsgSendListener(nsIMsgSendListener *sendListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveMsgSendListener(sendListener); } \
  NS_IMETHOD GetDeliverMode(MSG_DeliverMode *aDeliverMode) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeliverMode(aDeliverMode); } 

#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_ISUPPORTS(nsMsgCompose, nsIMsgCompose)

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

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

/* void initialize (in nsIMsgComposeParams aParams, [optional] in mozIDOMWindowProxy aWindow, [optional] in nsIDocShell aDocShell); */
NS_IMETHODIMP nsMsgCompose::Initialize(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell)
{
    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 sendMsgToServer (in MSG_DeliverMode deliverMode, in nsIMsgIdentity identity, in string accountKey); */
NS_IMETHODIMP nsMsgCompose::SendMsgToServer(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char * accountKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CloseWindow (); */
NS_IMETHODIMP nsMsgCompose::CloseWindow()
{
    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 AUTF8String url, in string charset); */
NS_IMETHODIMP nsMsgCompose::AttachmentPrettyName(const nsACString & url, const char * charset, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void expandMailingLists (); */
NS_IMETHODIMP nsMsgCompose::ExpandMailingLists()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long determineHTMLAction (in long aConvertible); */
NS_IMETHODIMP nsMsgCompose::DetermineHTMLAction(int32_t aConvertible, int32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute nsIMsgIdentity identity; */
NS_IMETHODIMP nsMsgCompose::GetIdentity(nsIMsgIdentity * *aIdentity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgCompose::SetIdentity(nsIMsgIdentity *aIdentity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void clearMessageSend (); */
NS_IMETHODIMP nsMsgCompose::ClearMessageSend()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* readonly attribute mozIDOMWindowProxy domWindow; */
NS_IMETHODIMP nsMsgCompose::GetDomWindow(mozIDOMWindowProxy * *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(bool *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(int32_t *aWrapLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* readonly attribute ACString bodyRaw; */
NS_IMETHODIMP nsMsgCompose::GetBodyRaw(nsACString & aBodyRaw)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* 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, bool 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, bool aQuoted, bool aHTMLEditor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* readonly attribute nsIMsgProgress progress; */
NS_IMETHODIMP nsMsgCompose::GetProgress(nsIMsgProgress * *aProgress)
{
    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(bool *quotingToFollow)
{
    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(bool *aDeleteDraft)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgCompose::SetDeleteDraft(bool aDeleteDraft)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean insertingQuotedContent; */
NS_IMETHODIMP nsMsgCompose::GetInsertingQuotedContent(bool *aInsertingQuotedContent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgCompose::SetInsertingQuotedContent(bool aInsertingQuotedContent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addMsgSendListener (in nsIMsgSendListener sendListener); */
NS_IMETHODIMP nsMsgCompose::AddMsgSendListener(nsIMsgSendListener *sendListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeMsgSendListener (in nsIMsgSendListener sendListener); */
NS_IMETHODIMP nsMsgCompose::RemoveMsgSendListener(nsIMsgSendListener *sendListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute MSG_DeliverMode deliverMode; */
NS_IMETHODIMP nsMsgCompose::GetDeliverMode(MSG_DeliverMode *aDeliverMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIMsgComposeSendListener */
#define NS_IMSGCOMPOSESENDLISTENER_IID_STR "ad6ee068-b225-47f9-a50e-8e48440282ca"

#define NS_IMSGCOMPOSESENDLISTENER_IID \
  {0xad6ee068, 0xb225, 0x47f9, \
    { 0xa5, 0x0e, 0x8e, 0x48, 0x44, 0x02, 0x82, 0xca }}

class NS_NO_VTABLE nsIMsgComposeSendListener : public nsISupports {
 public:

  NS_DECLARE_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;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgComposeSendListener, NS_IMSGCOMPOSESENDLISTENER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGCOMPOSESENDLISTENER \
  NS_IMETHOD SetMsgCompose(nsIMsgCompose *msgCompose) override; \
  NS_IMETHOD SetDeliverMode(MSG_DeliverMode deliverMode) 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_NSIMSGCOMPOSESENDLISTENER \
  NS_METHOD SetMsgCompose(nsIMsgCompose *msgCompose); \
  NS_METHOD 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) override { return _to SetMsgCompose(msgCompose); } \
  NS_IMETHOD SetDeliverMode(MSG_DeliverMode deliverMode) override { 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) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMsgCompose(msgCompose); } \
  NS_IMETHOD SetDeliverMode(MSG_DeliverMode deliverMode) override { 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_ISUPPORTS(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__ */
