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

#ifndef __gen_nsIAutoSyncState_h__
#define __gen_nsIAutoSyncState_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
class nsIMsgFolder; /* forward declaration */

class nsIArray; /* forward declaration */

class nsIMutableArray; /* forward declaration */


/* starting interface:    nsIAutoSyncState */
#define NS_IAUTOSYNCSTATE_IID_STR "7512f927-b8f0-48c4-b101-03e859e61281"

#define NS_IAUTOSYNCSTATE_IID \
  {0x7512f927, 0xb8f0, 0x48c4, \
    { 0xb1, 0x01, 0x03, 0xe8, 0x59, 0xe6, 0x12, 0x81 }}

class NS_NO_VTABLE nsIAutoSyncState : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IAUTOSYNCSTATE_IID)

  enum {
    stCompletedIdle = 0,
    stStatusIssued = 1,
    stUpdateNeeded = 2,
    stUpdateIssued = 3,
    stDownloadInProgress = 4,
    stReadyToDownload = 5
  };

  /* void rollback (); */
  NS_IMETHOD Rollback(void) = 0;

  /* void resetDownloadQ (); */
  NS_IMETHOD ResetDownloadQ(void) = 0;

  /* void tryCurrentGroupAgain (in unsigned long aRetryCount); */
  NS_IMETHOD TryCurrentGroupAgain(uint32_t aRetryCount) = 0;

  /* void resetRetryCounter (); */
  NS_IMETHOD ResetRetryCounter(void) = 0;

  /* boolean isSibling (in nsIAutoSyncState aAnotherStateObj); */
  NS_IMETHOD IsSibling(nsIAutoSyncState *aAnotherStateObj, bool *_retval) = 0;

  /* void updateFolder (); */
  NS_IMETHOD UpdateFolder(void) = 0;

  /* void downloadMessagesForOffline (in nsIArray aMessageList); */
  NS_IMETHOD DownloadMessagesForOffline(nsIArray *aMessageList) = 0;

  /* nsIMutableArray getNextGroupOfMessages (in unsigned long aSuggestedGroupSizeLimit, out unsigned long aActualGroupSize); */
  NS_IMETHOD GetNextGroupOfMessages(uint32_t aSuggestedGroupSizeLimit, uint32_t *aActualGroupSize, nsIMutableArray * *_retval) = 0;

  /* unsigned long processExistingHeaders (in unsigned long aNumberOfHeadersToProcess); */
  NS_IMETHOD ProcessExistingHeaders(uint32_t aNumberOfHeadersToProcess, uint32_t *_retval) = 0;

  /* [noscript] readonly attribute PRTime lastSyncTime; */
  NS_IMETHOD GetLastSyncTime(PRTime *aLastSyncTime) = 0;

  /* [noscript] attribute PRTime lastUpdateTime; */
  NS_IMETHOD GetLastUpdateTime(PRTime *aLastUpdateTime) = 0;
  NS_IMETHOD SetLastUpdateTime(PRTime aLastUpdateTime) = 0;

  /* attribute long state; */
  NS_IMETHOD GetState(int32_t *aState) = 0;
  NS_IMETHOD SetState(int32_t aState) = 0;

  /* readonly attribute long pendingMessageCount; */
  NS_IMETHOD GetPendingMessageCount(int32_t *aPendingMessageCount) = 0;

  /* readonly attribute long totalMessageCount; */
  NS_IMETHOD GetTotalMessageCount(int32_t *aTotalMessageCount) = 0;

  /* readonly attribute nsIMsgFolder ownerFolder; */
  NS_IMETHOD GetOwnerFolder(nsIMsgFolder * *aOwnerFolder) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAutoSyncState, NS_IAUTOSYNCSTATE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIAUTOSYNCSTATE \
  NS_IMETHOD Rollback(void) override; \
  NS_IMETHOD ResetDownloadQ(void) override; \
  NS_IMETHOD TryCurrentGroupAgain(uint32_t aRetryCount) override; \
  NS_IMETHOD ResetRetryCounter(void) override; \
  NS_IMETHOD IsSibling(nsIAutoSyncState *aAnotherStateObj, bool *_retval) override; \
  NS_IMETHOD UpdateFolder(void) override; \
  NS_IMETHOD DownloadMessagesForOffline(nsIArray *aMessageList) override; \
  NS_IMETHOD GetNextGroupOfMessages(uint32_t aSuggestedGroupSizeLimit, uint32_t *aActualGroupSize, nsIMutableArray * *_retval) override; \
  NS_IMETHOD ProcessExistingHeaders(uint32_t aNumberOfHeadersToProcess, uint32_t *_retval) override; \
  NS_IMETHOD GetLastSyncTime(PRTime *aLastSyncTime) override; \
  NS_IMETHOD GetLastUpdateTime(PRTime *aLastUpdateTime) override; \
  NS_IMETHOD SetLastUpdateTime(PRTime aLastUpdateTime) override; \
  NS_IMETHOD GetState(int32_t *aState) override; \
  NS_IMETHOD SetState(int32_t aState) override; \
  NS_IMETHOD GetPendingMessageCount(int32_t *aPendingMessageCount) override; \
  NS_IMETHOD GetTotalMessageCount(int32_t *aTotalMessageCount) override; \
  NS_IMETHOD GetOwnerFolder(nsIMsgFolder * *aOwnerFolder) 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_NSIAUTOSYNCSTATE \
  NS_METHOD Rollback(void); \
  NS_METHOD ResetDownloadQ(void); \
  NS_METHOD TryCurrentGroupAgain(uint32_t aRetryCount); \
  NS_METHOD ResetRetryCounter(void); \
  NS_METHOD IsSibling(nsIAutoSyncState *aAnotherStateObj, bool *_retval); \
  NS_METHOD UpdateFolder(void); \
  NS_METHOD DownloadMessagesForOffline(nsIArray *aMessageList); \
  NS_METHOD GetNextGroupOfMessages(uint32_t aSuggestedGroupSizeLimit, uint32_t *aActualGroupSize, nsIMutableArray * *_retval); \
  NS_METHOD ProcessExistingHeaders(uint32_t aNumberOfHeadersToProcess, uint32_t *_retval); \
  NS_METHOD GetLastSyncTime(PRTime *aLastSyncTime); \
  NS_METHOD GetLastUpdateTime(PRTime *aLastUpdateTime); \
  NS_METHOD SetLastUpdateTime(PRTime aLastUpdateTime); \
  NS_METHOD GetState(int32_t *aState); \
  NS_METHOD SetState(int32_t aState); \
  NS_METHOD GetPendingMessageCount(int32_t *aPendingMessageCount); \
  NS_METHOD GetTotalMessageCount(int32_t *aTotalMessageCount); \
  NS_METHOD GetOwnerFolder(nsIMsgFolder * *aOwnerFolder); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIAUTOSYNCSTATE(_to) \
  NS_IMETHOD Rollback(void) override { return _to Rollback(); } \
  NS_IMETHOD ResetDownloadQ(void) override { return _to ResetDownloadQ(); } \
  NS_IMETHOD TryCurrentGroupAgain(uint32_t aRetryCount) override { return _to TryCurrentGroupAgain(aRetryCount); } \
  NS_IMETHOD ResetRetryCounter(void) override { return _to ResetRetryCounter(); } \
  NS_IMETHOD IsSibling(nsIAutoSyncState *aAnotherStateObj, bool *_retval) override { return _to IsSibling(aAnotherStateObj, _retval); } \
  NS_IMETHOD UpdateFolder(void) override { return _to UpdateFolder(); } \
  NS_IMETHOD DownloadMessagesForOffline(nsIArray *aMessageList) override { return _to DownloadMessagesForOffline(aMessageList); } \
  NS_IMETHOD GetNextGroupOfMessages(uint32_t aSuggestedGroupSizeLimit, uint32_t *aActualGroupSize, nsIMutableArray * *_retval) override { return _to GetNextGroupOfMessages(aSuggestedGroupSizeLimit, aActualGroupSize, _retval); } \
  NS_IMETHOD ProcessExistingHeaders(uint32_t aNumberOfHeadersToProcess, uint32_t *_retval) override { return _to ProcessExistingHeaders(aNumberOfHeadersToProcess, _retval); } \
  NS_IMETHOD GetLastSyncTime(PRTime *aLastSyncTime) override { return _to GetLastSyncTime(aLastSyncTime); } \
  NS_IMETHOD GetLastUpdateTime(PRTime *aLastUpdateTime) override { return _to GetLastUpdateTime(aLastUpdateTime); } \
  NS_IMETHOD SetLastUpdateTime(PRTime aLastUpdateTime) override { return _to SetLastUpdateTime(aLastUpdateTime); } \
  NS_IMETHOD GetState(int32_t *aState) override { return _to GetState(aState); } \
  NS_IMETHOD SetState(int32_t aState) override { return _to SetState(aState); } \
  NS_IMETHOD GetPendingMessageCount(int32_t *aPendingMessageCount) override { return _to GetPendingMessageCount(aPendingMessageCount); } \
  NS_IMETHOD GetTotalMessageCount(int32_t *aTotalMessageCount) override { return _to GetTotalMessageCount(aTotalMessageCount); } \
  NS_IMETHOD GetOwnerFolder(nsIMsgFolder * *aOwnerFolder) override { return _to GetOwnerFolder(aOwnerFolder); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIAUTOSYNCSTATE(_to) \
  NS_IMETHOD Rollback(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Rollback(); } \
  NS_IMETHOD ResetDownloadQ(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ResetDownloadQ(); } \
  NS_IMETHOD TryCurrentGroupAgain(uint32_t aRetryCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TryCurrentGroupAgain(aRetryCount); } \
  NS_IMETHOD ResetRetryCounter(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ResetRetryCounter(); } \
  NS_IMETHOD IsSibling(nsIAutoSyncState *aAnotherStateObj, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsSibling(aAnotherStateObj, _retval); } \
  NS_IMETHOD UpdateFolder(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateFolder(); } \
  NS_IMETHOD DownloadMessagesForOffline(nsIArray *aMessageList) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DownloadMessagesForOffline(aMessageList); } \
  NS_IMETHOD GetNextGroupOfMessages(uint32_t aSuggestedGroupSizeLimit, uint32_t *aActualGroupSize, nsIMutableArray * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextGroupOfMessages(aSuggestedGroupSizeLimit, aActualGroupSize, _retval); } \
  NS_IMETHOD ProcessExistingHeaders(uint32_t aNumberOfHeadersToProcess, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ProcessExistingHeaders(aNumberOfHeadersToProcess, _retval); } \
  NS_IMETHOD GetLastSyncTime(PRTime *aLastSyncTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastSyncTime(aLastSyncTime); } \
  NS_IMETHOD GetLastUpdateTime(PRTime *aLastUpdateTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastUpdateTime(aLastUpdateTime); } \
  NS_IMETHOD SetLastUpdateTime(PRTime aLastUpdateTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastUpdateTime(aLastUpdateTime); } \
  NS_IMETHOD GetState(int32_t *aState) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } \
  NS_IMETHOD SetState(int32_t aState) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetState(aState); } \
  NS_IMETHOD GetPendingMessageCount(int32_t *aPendingMessageCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPendingMessageCount(aPendingMessageCount); } \
  NS_IMETHOD GetTotalMessageCount(int32_t *aTotalMessageCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTotalMessageCount(aTotalMessageCount); } \
  NS_IMETHOD GetOwnerFolder(nsIMsgFolder * *aOwnerFolder) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOwnerFolder(aOwnerFolder); } 

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

/* Header file */
class nsAutoSyncState : public nsIAutoSyncState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIAUTOSYNCSTATE

  nsAutoSyncState();

private:
  ~nsAutoSyncState();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsAutoSyncState, nsIAutoSyncState)

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

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

/* void rollback (); */
NS_IMETHODIMP nsAutoSyncState::Rollback()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resetDownloadQ (); */
NS_IMETHODIMP nsAutoSyncState::ResetDownloadQ()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void tryCurrentGroupAgain (in unsigned long aRetryCount); */
NS_IMETHODIMP nsAutoSyncState::TryCurrentGroupAgain(uint32_t aRetryCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resetRetryCounter (); */
NS_IMETHODIMP nsAutoSyncState::ResetRetryCounter()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isSibling (in nsIAutoSyncState aAnotherStateObj); */
NS_IMETHODIMP nsAutoSyncState::IsSibling(nsIAutoSyncState *aAnotherStateObj, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateFolder (); */
NS_IMETHODIMP nsAutoSyncState::UpdateFolder()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void downloadMessagesForOffline (in nsIArray aMessageList); */
NS_IMETHODIMP nsAutoSyncState::DownloadMessagesForOffline(nsIArray *aMessageList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMutableArray getNextGroupOfMessages (in unsigned long aSuggestedGroupSizeLimit, out unsigned long aActualGroupSize); */
NS_IMETHODIMP nsAutoSyncState::GetNextGroupOfMessages(uint32_t aSuggestedGroupSizeLimit, uint32_t *aActualGroupSize, nsIMutableArray * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* unsigned long processExistingHeaders (in unsigned long aNumberOfHeadersToProcess); */
NS_IMETHODIMP nsAutoSyncState::ProcessExistingHeaders(uint32_t aNumberOfHeadersToProcess, uint32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] readonly attribute PRTime lastSyncTime; */
NS_IMETHODIMP nsAutoSyncState::GetLastSyncTime(PRTime *aLastSyncTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] attribute PRTime lastUpdateTime; */
NS_IMETHODIMP nsAutoSyncState::GetLastUpdateTime(PRTime *aLastUpdateTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAutoSyncState::SetLastUpdateTime(PRTime aLastUpdateTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long state; */
NS_IMETHODIMP nsAutoSyncState::GetState(int32_t *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAutoSyncState::SetState(int32_t aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long pendingMessageCount; */
NS_IMETHODIMP nsAutoSyncState::GetPendingMessageCount(int32_t *aPendingMessageCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long totalMessageCount; */
NS_IMETHODIMP nsAutoSyncState::GetTotalMessageCount(int32_t *aTotalMessageCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgFolder ownerFolder; */
NS_IMETHODIMP nsAutoSyncState::GetOwnerFolder(nsIMsgFolder * *aOwnerFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIAutoSyncState_h__ */
