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

#ifndef __gen_nsIMsgLogonRedirector_h__
#define __gen_nsIMsgLogonRedirector_h__


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

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

class nsIPrompt; /* forward declaration */


/* starting interface:    nsMsgLogonRedirectionStates */
#define NS_MSGLOGONREDIRECTIONSTATES_IID_STR "e20261f6-df4f-11d3-b9f9-00108335942a"

#define NS_MSGLOGONREDIRECTIONSTATES_IID \
  {0xe20261f6, 0xdf4f, 0x11d3, \
    { 0xb9, 0xf9, 0x00, 0x10, 0x83, 0x35, 0x94, 0x2a }}

class NS_NO_VTABLE nsMsgLogonRedirectionStates {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_MSGLOGONREDIRECTIONSTATES_IID)

  enum { Idle = 0 };

  enum { Connecting = 1 };

  enum { Negotiating = 2 };

  enum { Waiting = 3 };

  enum { Validating = 4 };

};

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

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

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

/* Header file */
class _MYCLASS_ : public nsMsgLogonRedirectionStates
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSMSGLOGONREDIRECTIONSTATES

  _MYCLASS_();
  virtual ~_MYCLASS_();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, nsMsgLogonRedirectionStates)

_MYCLASS_::_MYCLASS_()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

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

typedef PRInt32 nsMsgLogonRedirectionServiceID;


/* starting interface:    nsMsgLogonRedirectionServiceIDs */
#define NS_MSGLOGONREDIRECTIONSERVICEIDS_IID_STR "182cb845-eb0d-11d3-98b7-001083010e9b"

#define NS_MSGLOGONREDIRECTIONSERVICEIDS_IID \
  {0x182cb845, 0xeb0d, 0x11d3, \
    { 0x98, 0xb7, 0x00, 0x10, 0x83, 0x01, 0x0e, 0x9b }}

class NS_NO_VTABLE nsMsgLogonRedirectionServiceIDs {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_MSGLOGONREDIRECTIONSERVICEIDS_IID)

  enum { Imap = 0 };

  enum { Smtp = 1 };

  enum { AbSync = 2 };

};

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

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

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

/* Header file */
class _MYCLASS_ : public nsMsgLogonRedirectionServiceIDs
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSMSGLOGONREDIRECTIONSERVICEIDS

  _MYCLASS_();
  virtual ~_MYCLASS_();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, nsMsgLogonRedirectionServiceIDs)

_MYCLASS_::_MYCLASS_()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

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


/* starting interface:    nsIMsgLogonRedirectionRequester */
#define NS_IMSGLOGONREDIRECTIONREQUESTER_IID_STR "3c882b66-df4f-11d3-b9f9-00108335942a"

#define NS_IMSGLOGONREDIRECTIONREQUESTER_IID \
  {0x3c882b66, 0xdf4f, 0x11d3, \
    { 0xb9, 0xf9, 0x00, 0x10, 0x83, 0x35, 0x94, 0x2a }}

class NS_NO_VTABLE nsIMsgLogonRedirectionRequester : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGLOGONREDIRECTIONREQUESTER_IID)

  /* void OnLogonRedirectionError (in wstring pErrMsg, in boolean badPassword); */
  NS_IMETHOD OnLogonRedirectionError(const PRUnichar *pErrMsg, PRBool badPassword) = 0;

  /* void OnLogonRedirectionProgress (in nsMsgLogonRedirectionState pState); */
  NS_IMETHOD OnLogonRedirectionProgress(nsMsgLogonRedirectionState pState) = 0;

  /* void OnLogonRedirectionReply (in wstring pHost, in unsigned short pPort, in string pCookieData, in unsigned short pCookieSize); */
  NS_IMETHOD OnLogonRedirectionReply(const PRUnichar *pHost, PRUint16 pPort, const char *pCookieData, PRUint16 pCookieSize) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGLOGONREDIRECTIONREQUESTER \
  NS_IMETHOD OnLogonRedirectionError(const PRUnichar *pErrMsg, PRBool badPassword); \
  NS_IMETHOD OnLogonRedirectionProgress(nsMsgLogonRedirectionState pState); \
  NS_IMETHOD OnLogonRedirectionReply(const PRUnichar *pHost, PRUint16 pPort, const char *pCookieData, PRUint16 pCookieSize); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGLOGONREDIRECTIONREQUESTER(_to) \
  NS_IMETHOD OnLogonRedirectionError(const PRUnichar *pErrMsg, PRBool badPassword) { return _to OnLogonRedirectionError(pErrMsg, badPassword); } \
  NS_IMETHOD OnLogonRedirectionProgress(nsMsgLogonRedirectionState pState) { return _to OnLogonRedirectionProgress(pState); } \
  NS_IMETHOD OnLogonRedirectionReply(const PRUnichar *pHost, PRUint16 pPort, const char *pCookieData, PRUint16 pCookieSize) { return _to OnLogonRedirectionReply(pHost, pPort, pCookieData, pCookieSize); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGLOGONREDIRECTIONREQUESTER(_to) \
  NS_IMETHOD OnLogonRedirectionError(const PRUnichar *pErrMsg, PRBool badPassword) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnLogonRedirectionError(pErrMsg, badPassword); } \
  NS_IMETHOD OnLogonRedirectionProgress(nsMsgLogonRedirectionState pState) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnLogonRedirectionProgress(pState); } \
  NS_IMETHOD OnLogonRedirectionReply(const PRUnichar *pHost, PRUint16 pPort, const char *pCookieData, PRUint16 pCookieSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnLogonRedirectionReply(pHost, pPort, pCookieData, pCookieSize); } 

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

/* Header file */
class nsMsgLogonRedirectionRequester : public nsIMsgLogonRedirectionRequester
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGLOGONREDIRECTIONREQUESTER

  nsMsgLogonRedirectionRequester();
  virtual ~nsMsgLogonRedirectionRequester();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgLogonRedirectionRequester, nsIMsgLogonRedirectionRequester)

nsMsgLogonRedirectionRequester::nsMsgLogonRedirectionRequester()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

/* void OnLogonRedirectionError (in wstring pErrMsg, in boolean badPassword); */
NS_IMETHODIMP nsMsgLogonRedirectionRequester::OnLogonRedirectionError(const PRUnichar *pErrMsg, PRBool badPassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void OnLogonRedirectionProgress (in nsMsgLogonRedirectionState pState); */
NS_IMETHODIMP nsMsgLogonRedirectionRequester::OnLogonRedirectionProgress(nsMsgLogonRedirectionState pState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void OnLogonRedirectionReply (in wstring pHost, in unsigned short pPort, in string pCookieData, in unsigned short pCookieSize); */
NS_IMETHODIMP nsMsgLogonRedirectionRequester::OnLogonRedirectionReply(const PRUnichar *pHost, PRUint16 pPort, const char *pCookieData, PRUint16 pCookieSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIMsgLogonRedirector */
#define NS_IMSGLOGONREDIRECTOR_IID_STR "0c2e96ac-e0ae-11d3-a560-0060b0fc04b7"

#define NS_IMSGLOGONREDIRECTOR_IID \
  {0x0c2e96ac, 0xe0ae, 0x11d3, \
    { 0xa5, 0x60, 0x00, 0x60, 0xb0, 0xfc, 0x04, 0xb7 }}

class NS_NO_VTABLE nsIMsgLogonRedirector : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGLOGONREDIRECTOR_IID)

  /* boolean requiresPassword (in string aUserName, in string aRedirectorType); */
  NS_IMETHOD RequiresPassword(const char *aUserName, const char *aRedirectorType, PRBool *_retval) = 0;

  /* void logon (in string userName, in string password, in string redirectorType, in nsIPrompt aPrompt, in nsIMsgLogonRedirectionRequester listener, in nsMsgLogonRedirectionServiceID aServiceID); */
  NS_IMETHOD Logon(const char *userName, const char *password, const char *redirectorType, nsIPrompt *aPrompt, nsIMsgLogonRedirectionRequester *listener, nsMsgLogonRedirectionServiceID aServiceID) = 0;

  /* void logoff (in string userName); */
  NS_IMETHOD Logoff(const char *userName) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGLOGONREDIRECTOR \
  NS_IMETHOD RequiresPassword(const char *aUserName, const char *aRedirectorType, PRBool *_retval); \
  NS_IMETHOD Logon(const char *userName, const char *password, const char *redirectorType, nsIPrompt *aPrompt, nsIMsgLogonRedirectionRequester *listener, nsMsgLogonRedirectionServiceID aServiceID); \
  NS_IMETHOD Logoff(const char *userName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGLOGONREDIRECTOR(_to) \
  NS_IMETHOD RequiresPassword(const char *aUserName, const char *aRedirectorType, PRBool *_retval) { return _to RequiresPassword(aUserName, aRedirectorType, _retval); } \
  NS_IMETHOD Logon(const char *userName, const char *password, const char *redirectorType, nsIPrompt *aPrompt, nsIMsgLogonRedirectionRequester *listener, nsMsgLogonRedirectionServiceID aServiceID) { return _to Logon(userName, password, redirectorType, aPrompt, listener, aServiceID); } \
  NS_IMETHOD Logoff(const char *userName) { return _to Logoff(userName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGLOGONREDIRECTOR(_to) \
  NS_IMETHOD RequiresPassword(const char *aUserName, const char *aRedirectorType, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->RequiresPassword(aUserName, aRedirectorType, _retval); } \
  NS_IMETHOD Logon(const char *userName, const char *password, const char *redirectorType, nsIPrompt *aPrompt, nsIMsgLogonRedirectionRequester *listener, nsMsgLogonRedirectionServiceID aServiceID) { return !_to ? NS_ERROR_NULL_POINTER : _to->Logon(userName, password, redirectorType, aPrompt, listener, aServiceID); } \
  NS_IMETHOD Logoff(const char *userName) { return !_to ? NS_ERROR_NULL_POINTER : _to->Logoff(userName); } 

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

/* Header file */
class nsMsgLogonRedirector : public nsIMsgLogonRedirector
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGLOGONREDIRECTOR

  nsMsgLogonRedirector();
  virtual ~nsMsgLogonRedirector();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgLogonRedirector, nsIMsgLogonRedirector)

nsMsgLogonRedirector::nsMsgLogonRedirector()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

/* boolean requiresPassword (in string aUserName, in string aRedirectorType); */
NS_IMETHODIMP nsMsgLogonRedirector::RequiresPassword(const char *aUserName, const char *aRedirectorType, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void logon (in string userName, in string password, in string redirectorType, in nsIPrompt aPrompt, in nsIMsgLogonRedirectionRequester listener, in nsMsgLogonRedirectionServiceID aServiceID); */
NS_IMETHODIMP nsMsgLogonRedirector::Logon(const char *userName, const char *password, const char *redirectorType, nsIPrompt *aPrompt, nsIMsgLogonRedirectionRequester *listener, nsMsgLogonRedirectionServiceID aServiceID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void logoff (in string userName); */
NS_IMETHODIMP nsMsgLogonRedirector::Logoff(const char *userName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgLogonRedirector_h__ */
