/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM /tmp/comm-release/mailnews/compose/public/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 nsIDOMWindow; /* forward declaration */

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

/* 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 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_ISUPPORTS1(nsMsgComposeNotificationType, nsIMsgComposeNotificationType)

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

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

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


/* 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_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGCOMPOSERECYCLINGLISTENER_IID)

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

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

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgComposeRecyclingListener, NS_IMSGCOMPOSERECYCLINGLISTENER_IID)

/* 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 "6d04ec94-0277-45f0-b71a-08606ad24916"

#define NS_IMSGCOMPOSE_IID \
  {0x6d04ec94, 0x0277, 0x45f0, \
    { 0xb7, 0x1a, 0x08, 0x60, 0x6a, 0xd2, 0x49, 0x16 }}

class NS_NO_VTABLE nsIMsgCompose : public nsIMsgSendListener {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGCOMPOSE_IID)

  /* void initialize (in nsIMsgComposeParams aParams, [optional] in nsIDOMWindow aWindow, [optional] in nsIDocShell aDocShell); */
  NS_IMETHOD Initialize(nsIMsgComposeParams *aParams, nsIDOMWindow *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 CloseWindow (in boolean reclycleIt); */
  NS_IMETHOD CloseWindow(bool reclycleIt) = 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;

  /* unsigned long checkAndPopulateRecipients (in boolean aPopulateMailList, in boolean aReturnNonHTMLRecipients, out AString aNonHTMLRecipients); */
  NS_IMETHOD CheckAndPopulateRecipients(bool aPopulateMailList, bool aReturnNonHTMLRecipients, nsAString & aNonHTMLRecipients, uint32_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;

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

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

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

  /* readonly attribute nsIDOMWindow domWindow; */
  NS_IMETHOD GetDomWindow(nsIDOMWindow * *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;

  /* 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;

  /* 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;

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

  /* attribute boolean recycledWindow; */
  NS_IMETHOD GetRecycledWindow(bool *aRecycledWindow) = 0;
  NS_IMETHOD SetRecycledWindow(bool aRecycledWindow) = 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;

};

  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, nsIDOMWindow *aWindow, nsIDocShell *aDocShell); \
  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(bool reclycleIt); \
  NS_IMETHOD Abort(void); \
  NS_IMETHOD QuoteMessage(const char * msgURI); \
  NS_IMETHOD AttachmentPrettyName(const nsACString & url, const char * charset, nsACString & _retval); \
  NS_IMETHOD CheckAndPopulateRecipients(bool aPopulateMailList, bool aReturnNonHTMLRecipients, nsAString & aNonHTMLRecipients, uint32_t *_retval); \
  NS_IMETHOD BodyConvertible(int32_t *_retval); \
  NS_IMETHOD GetIdentity(nsIMsgIdentity * *aIdentity); \
  NS_IMETHOD SetIdentity(nsIMsgIdentity *aIdentity); \
  NS_IMETHOD CheckCharsetConversion(nsIMsgIdentity *identity, char * *fallbackCharset, bool *_retval); \
  NS_IMETHOD GetMessageSend(nsIMsgSend * *aMessageSend); \
  NS_IMETHOD ClearMessageSend(void); \
  NS_IMETHOD GetEditor(nsIEditor * *aEditor); \
  NS_IMETHOD GetDomWindow(nsIDOMWindow * *aDomWindow); \
  NS_IMETHOD GetCompFields(nsIMsgCompFields * *aCompFields); \
  NS_IMETHOD GetComposeHTML(bool *aComposeHTML); \
  NS_IMETHOD GetType(MSG_ComposeType *aType); \
  NS_IMETHOD SetType(MSG_ComposeType aType); \
  NS_IMETHOD GetWrapLength(int32_t *aWrapLength); \
  NS_IMETHOD GetBodyModified(bool *aBodyModified); \
  NS_IMETHOD SetBodyModified(bool 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, bool aQuoted, nsString *aMsgBody); \
  NS_IMETHOD ProcessReplyFlags(void); \
  NS_IMETHOD RememberQueuedDisposition(void); \
  NS_IMETHOD ConvertAndLoadComposeWindow(nsString & aPrefix, nsString & aBuf, nsString & aSignature, bool aQuoted, bool aHTMLEditor); \
  NS_IMETHOD NotifyStateListeners(int32_t aNotificationType, nsresult aResult); \
  NS_IMETHOD GetProgress(nsIMsgProgress * *aProgress); \
  NS_IMETHOD BuildBodyMessageAndSignature(void); \
  NS_IMETHOD BuildQuotedMessageAndSignature(void); \
  NS_IMETHOD GetQuotingToFollow(bool *quotingToFollow); \
  NS_IMETHOD GetRecyclingListener(nsIMsgComposeRecyclingListener * *aRecyclingListener); \
  NS_IMETHOD SetRecyclingListener(nsIMsgComposeRecyclingListener *aRecyclingListener); \
  NS_IMETHOD GetRecycledWindow(bool *aRecycledWindow); \
  NS_IMETHOD SetRecycledWindow(bool aRecycledWindow); \
  NS_IMETHOD GetOriginalMsgURI(char * *aOriginalMsgURI); \
  NS_IMETHOD GetDeleteDraft(bool *aDeleteDraft); \
  NS_IMETHOD SetDeleteDraft(bool aDeleteDraft); \
  NS_IMETHOD GetInsertingQuotedContent(bool *aInsertingQuotedContent); \
  NS_IMETHOD SetInsertingQuotedContent(bool aInsertingQuotedContent); \
  NS_IMETHOD AddMsgSendListener(nsIMsgSendListener *sendListener); \
  NS_IMETHOD RemoveMsgSendListener(nsIMsgSendListener *sendListener); 

/* 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, nsIDOMWindow *aWindow, nsIDocShell *aDocShell) { return _to Initialize(aParams, aWindow, aDocShell); } \
  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(bool 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 nsACString & url, const char * charset, nsACString & _retval) { return _to AttachmentPrettyName(url, charset, _retval); } \
  NS_IMETHOD CheckAndPopulateRecipients(bool aPopulateMailList, bool aReturnNonHTMLRecipients, nsAString & aNonHTMLRecipients, uint32_t *_retval) { return _to CheckAndPopulateRecipients(aPopulateMailList, aReturnNonHTMLRecipients, aNonHTMLRecipients, _retval); } \
  NS_IMETHOD BodyConvertible(int32_t *_retval) { return _to BodyConvertible(_retval); } \
  NS_IMETHOD GetIdentity(nsIMsgIdentity * *aIdentity) { return _to GetIdentity(aIdentity); } \
  NS_IMETHOD SetIdentity(nsIMsgIdentity *aIdentity) { return _to SetIdentity(aIdentity); } \
  NS_IMETHOD CheckCharsetConversion(nsIMsgIdentity *identity, char * *fallbackCharset, bool *_retval) { return _to CheckCharsetConversion(identity, fallbackCharset, _retval); } \
  NS_IMETHOD GetMessageSend(nsIMsgSend * *aMessageSend) { return _to GetMessageSend(aMessageSend); } \
  NS_IMETHOD ClearMessageSend(void) { return _to ClearMessageSend(); } \
  NS_IMETHOD GetEditor(nsIEditor * *aEditor) { return _to GetEditor(aEditor); } \
  NS_IMETHOD GetDomWindow(nsIDOMWindow * *aDomWindow) { return _to GetDomWindow(aDomWindow); } \
  NS_IMETHOD GetCompFields(nsIMsgCompFields * *aCompFields) { return _to GetCompFields(aCompFields); } \
  NS_IMETHOD GetComposeHTML(bool *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(int32_t *aWrapLength) { return _to GetWrapLength(aWrapLength); } \
  NS_IMETHOD GetBodyModified(bool *aBodyModified) { return _to GetBodyModified(aBodyModified); } \
  NS_IMETHOD SetBodyModified(bool 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, bool 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, bool aQuoted, bool aHTMLEditor) { return _to ConvertAndLoadComposeWindow(aPrefix, aBuf, aSignature, aQuoted, aHTMLEditor); } \
  NS_IMETHOD NotifyStateListeners(int32_t aNotificationType, nsresult aResult) { return _to NotifyStateListeners(aNotificationType, aResult); } \
  NS_IMETHOD GetProgress(nsIMsgProgress * *aProgress) { return _to GetProgress(aProgress); } \
  NS_IMETHOD BuildBodyMessageAndSignature(void) { return _to BuildBodyMessageAndSignature(); } \
  NS_IMETHOD BuildQuotedMessageAndSignature(void) { return _to BuildQuotedMessageAndSignature(); } \
  NS_IMETHOD GetQuotingToFollow(bool *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(bool *aRecycledWindow) { return _to GetRecycledWindow(aRecycledWindow); } \
  NS_IMETHOD SetRecycledWindow(bool aRecycledWindow) { return _to SetRecycledWindow(aRecycledWindow); } \
  NS_IMETHOD GetOriginalMsgURI(char * *aOriginalMsgURI) { return _to GetOriginalMsgURI(aOriginalMsgURI); } \
  NS_IMETHOD GetDeleteDraft(bool *aDeleteDraft) { return _to GetDeleteDraft(aDeleteDraft); } \
  NS_IMETHOD SetDeleteDraft(bool aDeleteDraft) { return _to SetDeleteDraft(aDeleteDraft); } \
  NS_IMETHOD GetInsertingQuotedContent(bool *aInsertingQuotedContent) { return _to GetInsertingQuotedContent(aInsertingQuotedContent); } \
  NS_IMETHOD SetInsertingQuotedContent(bool aInsertingQuotedContent) { return _to SetInsertingQuotedContent(aInsertingQuotedContent); } \
  NS_IMETHOD AddMsgSendListener(nsIMsgSendListener *sendListener) { return _to AddMsgSendListener(sendListener); } \
  NS_IMETHOD RemoveMsgSendListener(nsIMsgSendListener *sendListener) { return _to RemoveMsgSendListener(sendListener); } 

/* 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, nsIDOMWindow *aWindow, nsIDocShell *aDocShell) { return !_to ? NS_ERROR_NULL_POINTER : _to->Initialize(aParams, aWindow, aDocShell); } \
  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(bool 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 nsACString & url, const char * charset, nsACString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachmentPrettyName(url, charset, _retval); } \
  NS_IMETHOD CheckAndPopulateRecipients(bool aPopulateMailList, bool aReturnNonHTMLRecipients, nsAString & aNonHTMLRecipients, uint32_t *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckAndPopulateRecipients(aPopulateMailList, aReturnNonHTMLRecipients, aNonHTMLRecipients, _retval); } \
  NS_IMETHOD BodyConvertible(int32_t *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->BodyConvertible(_retval); } \
  NS_IMETHOD GetIdentity(nsIMsgIdentity * *aIdentity) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIdentity(aIdentity); } \
  NS_IMETHOD SetIdentity(nsIMsgIdentity *aIdentity) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIdentity(aIdentity); } \
  NS_IMETHOD CheckCharsetConversion(nsIMsgIdentity *identity, char * *fallbackCharset, bool *_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 ClearMessageSend(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearMessageSend(); } \
  NS_IMETHOD GetEditor(nsIEditor * *aEditor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEditor(aEditor); } \
  NS_IMETHOD GetDomWindow(nsIDOMWindow * *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(bool *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(int32_t *aWrapLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWrapLength(aWrapLength); } \
  NS_IMETHOD GetBodyModified(bool *aBodyModified) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBodyModified(aBodyModified); } \
  NS_IMETHOD SetBodyModified(bool 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, bool 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, bool aQuoted, bool aHTMLEditor) { return !_to ? NS_ERROR_NULL_POINTER : _to->ConvertAndLoadComposeWindow(aPrefix, aBuf, aSignature, aQuoted, aHTMLEditor); } \
  NS_IMETHOD NotifyStateListeners(int32_t 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 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(bool *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(bool *aRecycledWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecycledWindow(aRecycledWindow); } \
  NS_IMETHOD SetRecycledWindow(bool 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(bool *aDeleteDraft) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeleteDraft(aDeleteDraft); } \
  NS_IMETHOD SetDeleteDraft(bool aDeleteDraft) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDeleteDraft(aDeleteDraft); } \
  NS_IMETHOD GetInsertingQuotedContent(bool *aInsertingQuotedContent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInsertingQuotedContent(aInsertingQuotedContent); } \
  NS_IMETHOD SetInsertingQuotedContent(bool aInsertingQuotedContent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInsertingQuotedContent(aInsertingQuotedContent); } \
  NS_IMETHOD AddMsgSendListener(nsIMsgSendListener *sendListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddMsgSendListener(sendListener); } \
  NS_IMETHOD RemoveMsgSendListener(nsIMsgSendListener *sendListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveMsgSendListener(sendListener); } 

#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 nsIMsgComposeParams aParams, [optional] in nsIDOMWindow aWindow, [optional] in nsIDocShell aDocShell); */
NS_IMETHODIMP nsMsgCompose::Initialize(nsIMsgComposeParams *aParams, nsIDOMWindow *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 CloseWindow (in boolean reclycleIt); */
NS_IMETHODIMP nsMsgCompose::CloseWindow(bool 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 AUTF8String url, in string charset); */
NS_IMETHODIMP nsMsgCompose::AttachmentPrettyName(const nsACString & url, const char * charset, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* unsigned long checkAndPopulateRecipients (in boolean aPopulateMailList, in boolean aReturnNonHTMLRecipients, out AString aNonHTMLRecipients); */
NS_IMETHODIMP nsMsgCompose::CheckAndPopulateRecipients(bool aPopulateMailList, bool aReturnNonHTMLRecipients, nsAString & aNonHTMLRecipients, uint32_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;
}

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

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

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

/* readonly attribute nsIDOMWindow domWindow; */
NS_IMETHODIMP nsMsgCompose::GetDomWindow(nsIDOMWindow * *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;
}

/* 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;
}

/* 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;
}

/* 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(bool *aRecycledWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgCompose::SetRecycledWindow(bool 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(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;
}

/* 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_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); \
  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__ */
