/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"
#include "MailNewsTypes2.idl"

interface nsIDBChangeListener;
interface nsIMsgDBHdr;

[scriptable, uuid(22baf00b-939d-42c3-ac51-21d99dfa1f05)]

interface nsIDBChangeAnnouncer  : nsISupports {
 /* these 2 calls return NS_OK on success, NS_COMFALSE on failure */
  void AddListener(in nsIDBChangeListener listener);
  void RemoveListener(in nsIDBChangeListener listener);

  void NotifyHdrChangeAll(in nsIMsgDBHdr aHdrChanged, in unsigned long aOldFlags, in unsigned long aNewFlags, 
                                in nsIDBChangeListener instigator);
  void NotifyHdrAddedAll(in nsIMsgDBHdr aHdrAdded, in nsMsgKey parentKey, in long flags, 
                               in nsIDBChangeListener instigator);
  void NotifyHdrDeletedAll(in nsIMsgDBHdr aHdrDeleted, in nsMsgKey parentKey, in long flags, 
                                 in nsIDBChangeListener instigator);
  void NotifyParentChangedAll(in nsMsgKey keyReparented, in nsMsgKey oldParent, in nsMsgKey newParent, in nsIDBChangeListener instigator); 

  void NotifyReadChanged(in nsIDBChangeListener instigator);

  void NotifyJunkScoreChanged(in nsIDBChangeListener aInstigator);

  void NotifyAnnouncerGoingAway();
};

