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

#ifndef __gen_nsIMsgComposeService_h__
#define __gen_nsIMsgComposeService_h__


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

#ifndef __gen_nsIMsgCompose_h__
#include "nsIMsgCompose.h"
#endif

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

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

class nsIDocShell; /* forward declaration */

class nsIMsgWindow; /* forward declaration */

class nsIMsgIdentity; /* forward declaration */

class nsIMsgIncomingServer; /* forward declaration */

class nsIMsgDBHdr; /* forward declaration */


/* starting interface:    nsIMsgComposeService */
#define NS_IMSGCOMPOSESERVICE_IID_STR "041782bf-e523-444b-a268-d90868fd2b50"

#define NS_IMSGCOMPOSESERVICE_IID \
  {0x041782bf, 0xe523, 0x444b, \
    { 0xa2, 0x68, 0xd9, 0x08, 0x68, 0xfd, 0x2b, 0x50 }}

class NS_NO_VTABLE nsIMsgComposeService : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGCOMPOSESERVICE_IID)

  /* void OpenComposeWindow (in string msgComposeWindowURL, in nsIMsgDBHdr msgHdr, in string originalMsgURI, in MSG_ComposeType type, in MSG_ComposeFormat format, in nsIMsgIdentity identity, in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD OpenComposeWindow(const char * msgComposeWindowURL, nsIMsgDBHdr *msgHdr, const char * originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsIMsgIdentity *identity, nsIMsgWindow *aMsgWindow) = 0;

  /* void OpenComposeWindowWithURI (in string msgComposeWindowURL, in nsIURI aURI, [optional] in nsIMsgIdentity aIdentity); */
  NS_IMETHOD OpenComposeWindowWithURI(const char * msgComposeWindowURL, nsIURI *aURI, nsIMsgIdentity *aIdentity) = 0;

  /* void OpenComposeWindowWithParams (in string msgComposeWindowURL, in nsIMsgComposeParams params); */
  NS_IMETHOD OpenComposeWindowWithParams(const char * msgComposeWindowURL, nsIMsgComposeParams *params) = 0;

  /* nsIMsgCompose initCompose (in nsIMsgComposeParams aParams, [optional] in mozIDOMWindowProxy aWindow, [optional] in nsIDocShell aDocShell); */
  NS_IMETHOD InitCompose(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell, nsIMsgCompose * *_retval) = 0;

  /* readonly attribute nsIMsgIdentity defaultIdentity; */
  NS_IMETHOD GetDefaultIdentity(nsIMsgIdentity * *aDefaultIdentity) = 0;

  /* void TimeStamp (in string label, in boolean resetTime); */
  NS_IMETHOD TimeStamp(const char * label, bool resetTime) = 0;

  /* readonly attribute boolean logComposePerformance; */
  NS_IMETHOD GetLogComposePerformance(bool *aLogComposePerformance) = 0;

  /* [noscript] boolean determineComposeHTML (in nsIMsgIdentity aIdentity, in MSG_ComposeFormat aFormat); */
  NS_IMETHOD DetermineComposeHTML(nsIMsgIdentity *aIdentity, MSG_ComposeFormat aFormat, bool *_retval) = 0;

  /* nsIMsgComposeParams getParamsForMailto (in nsIURI aURI); */
  NS_IMETHOD GetParamsForMailto(nsIURI *aURI, nsIMsgComposeParams * *_retval) = 0;

  enum {
    kForwardAsDefault = 0U,
    kForwardAsAttachment = 1U,
    kForwardInline = 2U
  };

  /* void forwardMessage (in AString forwardTo, in nsIMsgDBHdr msgHdr, in nsIMsgWindow msgWindow, in nsIMsgIncomingServer server, in unsigned long aForwardType); */
  NS_IMETHOD ForwardMessage(const nsAString & forwardTo, nsIMsgDBHdr *msgHdr, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server, uint32_t aForwardType) = 0;

  /* void replyWithTemplate (in nsIMsgDBHdr msgHdr, in string templateUri, in nsIMsgWindow msgWindow, in nsIMsgIncomingServer server); */
  NS_IMETHOD ReplyWithTemplate(nsIMsgDBHdr *msgHdr, const char * templateUri, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server) = 0;

  /* void registerComposeDocShell (in nsIDocShell aDocShell, in nsIMsgCompose aMsgCompose); */
  NS_IMETHOD RegisterComposeDocShell(nsIDocShell *aDocShell, nsIMsgCompose *aMsgCompose) = 0;

  /* void unregisterComposeDocShell (in nsIDocShell aDocShell); */
  NS_IMETHOD UnregisterComposeDocShell(nsIDocShell *aDocShell) = 0;

  /* nsIMsgCompose getMsgComposeForDocShell (in nsIDocShell aDocShell); */
  NS_IMETHOD GetMsgComposeForDocShell(nsIDocShell *aDocShell, nsIMsgCompose * *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgComposeService, NS_IMSGCOMPOSESERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGCOMPOSESERVICE \
  NS_IMETHOD OpenComposeWindow(const char * msgComposeWindowURL, nsIMsgDBHdr *msgHdr, const char * originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsIMsgIdentity *identity, nsIMsgWindow *aMsgWindow) override; \
  NS_IMETHOD OpenComposeWindowWithURI(const char * msgComposeWindowURL, nsIURI *aURI, nsIMsgIdentity *aIdentity) override; \
  NS_IMETHOD OpenComposeWindowWithParams(const char * msgComposeWindowURL, nsIMsgComposeParams *params) override; \
  NS_IMETHOD InitCompose(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell, nsIMsgCompose * *_retval) override; \
  NS_IMETHOD GetDefaultIdentity(nsIMsgIdentity * *aDefaultIdentity) override; \
  NS_IMETHOD TimeStamp(const char * label, bool resetTime) override; \
  NS_IMETHOD GetLogComposePerformance(bool *aLogComposePerformance) override; \
  NS_IMETHOD DetermineComposeHTML(nsIMsgIdentity *aIdentity, MSG_ComposeFormat aFormat, bool *_retval) override; \
  NS_IMETHOD GetParamsForMailto(nsIURI *aURI, nsIMsgComposeParams * *_retval) override; \
  NS_IMETHOD ForwardMessage(const nsAString & forwardTo, nsIMsgDBHdr *msgHdr, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server, uint32_t aForwardType) override; \
  NS_IMETHOD ReplyWithTemplate(nsIMsgDBHdr *msgHdr, const char * templateUri, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server) override; \
  NS_IMETHOD RegisterComposeDocShell(nsIDocShell *aDocShell, nsIMsgCompose *aMsgCompose) override; \
  NS_IMETHOD UnregisterComposeDocShell(nsIDocShell *aDocShell) override; \
  NS_IMETHOD GetMsgComposeForDocShell(nsIDocShell *aDocShell, nsIMsgCompose * *_retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIMSGCOMPOSESERVICE \
  NS_METHOD OpenComposeWindow(const char * msgComposeWindowURL, nsIMsgDBHdr *msgHdr, const char * originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsIMsgIdentity *identity, nsIMsgWindow *aMsgWindow); \
  NS_METHOD OpenComposeWindowWithURI(const char * msgComposeWindowURL, nsIURI *aURI, nsIMsgIdentity *aIdentity); \
  NS_METHOD OpenComposeWindowWithParams(const char * msgComposeWindowURL, nsIMsgComposeParams *params); \
  NS_METHOD InitCompose(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell, nsIMsgCompose * *_retval); \
  NS_METHOD GetDefaultIdentity(nsIMsgIdentity * *aDefaultIdentity); \
  NS_METHOD TimeStamp(const char * label, bool resetTime); \
  NS_METHOD GetLogComposePerformance(bool *aLogComposePerformance); \
  NS_METHOD DetermineComposeHTML(nsIMsgIdentity *aIdentity, MSG_ComposeFormat aFormat, bool *_retval); \
  NS_METHOD GetParamsForMailto(nsIURI *aURI, nsIMsgComposeParams * *_retval); \
  NS_METHOD ForwardMessage(const nsAString & forwardTo, nsIMsgDBHdr *msgHdr, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server, uint32_t aForwardType); \
  NS_METHOD ReplyWithTemplate(nsIMsgDBHdr *msgHdr, const char * templateUri, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server); \
  NS_METHOD RegisterComposeDocShell(nsIDocShell *aDocShell, nsIMsgCompose *aMsgCompose); \
  NS_METHOD UnregisterComposeDocShell(nsIDocShell *aDocShell); \
  NS_METHOD GetMsgComposeForDocShell(nsIDocShell *aDocShell, nsIMsgCompose * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOMPOSESERVICE(_to) \
  NS_IMETHOD OpenComposeWindow(const char * msgComposeWindowURL, nsIMsgDBHdr *msgHdr, const char * originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsIMsgIdentity *identity, nsIMsgWindow *aMsgWindow) override { return _to OpenComposeWindow(msgComposeWindowURL, msgHdr, originalMsgURI, type, format, identity, aMsgWindow); } \
  NS_IMETHOD OpenComposeWindowWithURI(const char * msgComposeWindowURL, nsIURI *aURI, nsIMsgIdentity *aIdentity) override { return _to OpenComposeWindowWithURI(msgComposeWindowURL, aURI, aIdentity); } \
  NS_IMETHOD OpenComposeWindowWithParams(const char * msgComposeWindowURL, nsIMsgComposeParams *params) override { return _to OpenComposeWindowWithParams(msgComposeWindowURL, params); } \
  NS_IMETHOD InitCompose(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell, nsIMsgCompose * *_retval) override { return _to InitCompose(aParams, aWindow, aDocShell, _retval); } \
  NS_IMETHOD GetDefaultIdentity(nsIMsgIdentity * *aDefaultIdentity) override { return _to GetDefaultIdentity(aDefaultIdentity); } \
  NS_IMETHOD TimeStamp(const char * label, bool resetTime) override { return _to TimeStamp(label, resetTime); } \
  NS_IMETHOD GetLogComposePerformance(bool *aLogComposePerformance) override { return _to GetLogComposePerformance(aLogComposePerformance); } \
  NS_IMETHOD DetermineComposeHTML(nsIMsgIdentity *aIdentity, MSG_ComposeFormat aFormat, bool *_retval) override { return _to DetermineComposeHTML(aIdentity, aFormat, _retval); } \
  NS_IMETHOD GetParamsForMailto(nsIURI *aURI, nsIMsgComposeParams * *_retval) override { return _to GetParamsForMailto(aURI, _retval); } \
  NS_IMETHOD ForwardMessage(const nsAString & forwardTo, nsIMsgDBHdr *msgHdr, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server, uint32_t aForwardType) override { return _to ForwardMessage(forwardTo, msgHdr, msgWindow, server, aForwardType); } \
  NS_IMETHOD ReplyWithTemplate(nsIMsgDBHdr *msgHdr, const char * templateUri, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server) override { return _to ReplyWithTemplate(msgHdr, templateUri, msgWindow, server); } \
  NS_IMETHOD RegisterComposeDocShell(nsIDocShell *aDocShell, nsIMsgCompose *aMsgCompose) override { return _to RegisterComposeDocShell(aDocShell, aMsgCompose); } \
  NS_IMETHOD UnregisterComposeDocShell(nsIDocShell *aDocShell) override { return _to UnregisterComposeDocShell(aDocShell); } \
  NS_IMETHOD GetMsgComposeForDocShell(nsIDocShell *aDocShell, nsIMsgCompose * *_retval) override { return _to GetMsgComposeForDocShell(aDocShell, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGCOMPOSESERVICE(_to) \
  NS_IMETHOD OpenComposeWindow(const char * msgComposeWindowURL, nsIMsgDBHdr *msgHdr, const char * originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsIMsgIdentity *identity, nsIMsgWindow *aMsgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenComposeWindow(msgComposeWindowURL, msgHdr, originalMsgURI, type, format, identity, aMsgWindow); } \
  NS_IMETHOD OpenComposeWindowWithURI(const char * msgComposeWindowURL, nsIURI *aURI, nsIMsgIdentity *aIdentity) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenComposeWindowWithURI(msgComposeWindowURL, aURI, aIdentity); } \
  NS_IMETHOD OpenComposeWindowWithParams(const char * msgComposeWindowURL, nsIMsgComposeParams *params) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenComposeWindowWithParams(msgComposeWindowURL, params); } \
  NS_IMETHOD InitCompose(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell, nsIMsgCompose * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InitCompose(aParams, aWindow, aDocShell, _retval); } \
  NS_IMETHOD GetDefaultIdentity(nsIMsgIdentity * *aDefaultIdentity) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultIdentity(aDefaultIdentity); } \
  NS_IMETHOD TimeStamp(const char * label, bool resetTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TimeStamp(label, resetTime); } \
  NS_IMETHOD GetLogComposePerformance(bool *aLogComposePerformance) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogComposePerformance(aLogComposePerformance); } \
  NS_IMETHOD DetermineComposeHTML(nsIMsgIdentity *aIdentity, MSG_ComposeFormat aFormat, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DetermineComposeHTML(aIdentity, aFormat, _retval); } \
  NS_IMETHOD GetParamsForMailto(nsIURI *aURI, nsIMsgComposeParams * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParamsForMailto(aURI, _retval); } \
  NS_IMETHOD ForwardMessage(const nsAString & forwardTo, nsIMsgDBHdr *msgHdr, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server, uint32_t aForwardType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ForwardMessage(forwardTo, msgHdr, msgWindow, server, aForwardType); } \
  NS_IMETHOD ReplyWithTemplate(nsIMsgDBHdr *msgHdr, const char * templateUri, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ReplyWithTemplate(msgHdr, templateUri, msgWindow, server); } \
  NS_IMETHOD RegisterComposeDocShell(nsIDocShell *aDocShell, nsIMsgCompose *aMsgCompose) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterComposeDocShell(aDocShell, aMsgCompose); } \
  NS_IMETHOD UnregisterComposeDocShell(nsIDocShell *aDocShell) override { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterComposeDocShell(aDocShell); } \
  NS_IMETHOD GetMsgComposeForDocShell(nsIDocShell *aDocShell, nsIMsgCompose * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMsgComposeForDocShell(aDocShell, _retval); } 

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

/* Header file */
class nsMsgComposeService : public nsIMsgComposeService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOMPOSESERVICE

  nsMsgComposeService();

private:
  ~nsMsgComposeService();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMsgComposeService, nsIMsgComposeService)

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

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

/* void OpenComposeWindow (in string msgComposeWindowURL, in nsIMsgDBHdr msgHdr, in string originalMsgURI, in MSG_ComposeType type, in MSG_ComposeFormat format, in nsIMsgIdentity identity, in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgComposeService::OpenComposeWindow(const char * msgComposeWindowURL, nsIMsgDBHdr *msgHdr, const char * originalMsgURI, MSG_ComposeType type, MSG_ComposeFormat format, nsIMsgIdentity *identity, nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void OpenComposeWindowWithURI (in string msgComposeWindowURL, in nsIURI aURI, [optional] in nsIMsgIdentity aIdentity); */
NS_IMETHODIMP nsMsgComposeService::OpenComposeWindowWithURI(const char * msgComposeWindowURL, nsIURI *aURI, nsIMsgIdentity *aIdentity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void OpenComposeWindowWithParams (in string msgComposeWindowURL, in nsIMsgComposeParams params); */
NS_IMETHODIMP nsMsgComposeService::OpenComposeWindowWithParams(const char * msgComposeWindowURL, nsIMsgComposeParams *params)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgCompose initCompose (in nsIMsgComposeParams aParams, [optional] in mozIDOMWindowProxy aWindow, [optional] in nsIDocShell aDocShell); */
NS_IMETHODIMP nsMsgComposeService::InitCompose(nsIMsgComposeParams *aParams, mozIDOMWindowProxy *aWindow, nsIDocShell *aDocShell, nsIMsgCompose * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgIdentity defaultIdentity; */
NS_IMETHODIMP nsMsgComposeService::GetDefaultIdentity(nsIMsgIdentity * *aDefaultIdentity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void TimeStamp (in string label, in boolean resetTime); */
NS_IMETHODIMP nsMsgComposeService::TimeStamp(const char * label, bool resetTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean logComposePerformance; */
NS_IMETHODIMP nsMsgComposeService::GetLogComposePerformance(bool *aLogComposePerformance)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] boolean determineComposeHTML (in nsIMsgIdentity aIdentity, in MSG_ComposeFormat aFormat); */
NS_IMETHODIMP nsMsgComposeService::DetermineComposeHTML(nsIMsgIdentity *aIdentity, MSG_ComposeFormat aFormat, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgComposeParams getParamsForMailto (in nsIURI aURI); */
NS_IMETHODIMP nsMsgComposeService::GetParamsForMailto(nsIURI *aURI, nsIMsgComposeParams * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void forwardMessage (in AString forwardTo, in nsIMsgDBHdr msgHdr, in nsIMsgWindow msgWindow, in nsIMsgIncomingServer server, in unsigned long aForwardType); */
NS_IMETHODIMP nsMsgComposeService::ForwardMessage(const nsAString & forwardTo, nsIMsgDBHdr *msgHdr, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server, uint32_t aForwardType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void replyWithTemplate (in nsIMsgDBHdr msgHdr, in string templateUri, in nsIMsgWindow msgWindow, in nsIMsgIncomingServer server); */
NS_IMETHODIMP nsMsgComposeService::ReplyWithTemplate(nsIMsgDBHdr *msgHdr, const char * templateUri, nsIMsgWindow *msgWindow, nsIMsgIncomingServer *server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerComposeDocShell (in nsIDocShell aDocShell, in nsIMsgCompose aMsgCompose); */
NS_IMETHODIMP nsMsgComposeService::RegisterComposeDocShell(nsIDocShell *aDocShell, nsIMsgCompose *aMsgCompose)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregisterComposeDocShell (in nsIDocShell aDocShell); */
NS_IMETHODIMP nsMsgComposeService::UnregisterComposeDocShell(nsIDocShell *aDocShell)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgCompose getMsgComposeForDocShell (in nsIDocShell aDocShell); */
NS_IMETHODIMP nsMsgComposeService::GetMsgComposeForDocShell(nsIDocShell *aDocShell, nsIMsgCompose * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgComposeService_h__ */
