/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 "nsISimpleEnumerator.idl"
#include "MailNewsTypes2.idl"

interface nsIMsgDBHdr;

interface nsIDBChangeAnnouncer;

[scriptable, uuid(873a1a47-d8ba-47cc-b1ef-355654d00000)]
interface nsIMsgThread : nsISupports {
  attribute nsMsgKey threadKey;
  attribute unsigned long flags;
  attribute ACString subject;
  attribute unsigned long newestMsgDate;
  readonly attribute unsigned long numChildren;
  readonly attribute unsigned long numUnreadChildren;

  void addChild(in nsIMsgDBHdr child, in nsIMsgDBHdr inReplyTo, in boolean threadInThread, in nsIDBChangeAnnouncer announcer);
  nsMsgKey getChildKeyAt(in long index);
  nsIMsgDBHdr getChild(in nsMsgKey msgKey);
  nsIMsgDBHdr getChildHdrAt(in long index);
  nsIMsgDBHdr getRootHdr(out long index);
  void removeChildAt(in long index);
  void removeChildHdr(in nsIMsgDBHdr child, in nsIDBChangeAnnouncer announcer);

  void markChildRead(in boolean bRead);

  nsIMsgDBHdr getFirstUnreadChild();

  nsISimpleEnumerator enumerateMessages(in nsMsgKey parent);
};
