/* -*- 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(84052876-90e9-4e21-ad38-13e2bb751d8f)]
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 unsigned long index);
  nsIMsgDBHdr getChild(in nsMsgKey msgKey);
  nsIMsgDBHdr getChildHdrAt(in unsigned long index);
  nsIMsgDBHdr getRootHdr(out long index);
  void removeChildAt(in unsigned long index);
  void removeChildHdr(in nsIMsgDBHdr child, in nsIDBChangeAnnouncer announcer);

  void markChildRead(in boolean bRead);

  nsIMsgDBHdr getFirstUnreadChild();

  nsISimpleEnumerator enumerateMessages(in nsMsgKey parent);
};
