/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * The contents of this file are subject to the Netscape Public License
 * Version 1.0 (the "NPL"); you may not use this file except in
 * compliance with the NPL.  You may obtain a copy of the NPL at
 * http://www.mozilla.org/NPL/
 *
 * Software distributed under the NPL is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
 * for the specific language governing rights and limitations under the
 * NPL.
 *
 * The Initial Developer of this code under the NPL is Netscape
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
 * Reserved.
 */

#include "nsISupports.idl"

/* just stub the interfaces for now */

interface nsIMsgHdr : nsISupports
{
};

interface nsIMsgDBHdr : nsIMsgHdr
{
};

/******************************************************************************

this is commented out because it doesn't match nsIMessage.h, and I don't
want anyone to try to use it yet.

the problem is nsIMessage.h has interfaces that pass references to nsStrings.

but, you can't do that in idl.

#include "nsISupports.idl"
#include "MailNewsTypes.idl"

[ptr] native nsString(nsString);
[ptr] native nsString2(nsString2);
native nsMsgPriority(nsMsgPriority);

%{C++
class nsString;
class nsString2;
%} 

[scriptable, uuid(4e994f60-c317-11d2-8cc9-0060b0fc14a3)]
interface nsIMsgHdr : nsISupports
{
  nsString GetProperty(in string propertyName);
  void SetProperty(in string propertyName, in nsString propertyStr);

  unsigned long GetUint32Property(in string propertyName);
  void SetUint32Property(in string propertyName, in unsigned long propertyVal);

  attribute unsigned short numReferences;
  nsString2 GetStringReference(in long refNum);

  attribute long long date;
  attribute string messageId;
  attribute string references;
  attribute string CCList;
  attribute string recipients;
  attribute boolean recipientsIsNewsgroup;
  attribute string author;

  void SetRecipientsArray(in string names,
                          in string addresses,
                          in unsigned long numaddresses);

  void SetCCListArray(in string names,
                      in string addresses,
                      in unsigned long numAddresses);

  readonly attribute string mime2EncodedAuthor;
  readonly attribute string mime2EncodedSubject;
  readonly attribute string mime2EncodedRecipients;

  readonly attribute string authorCollationKey;
  readonly attribute string subjectCollationKey;
  readonly attribute string recipientsCollationKey;

  attribute string messageKey;
  attribute nsMsgKey threadID;
  attribute unsigned long messageSize;
  attribute unsigned long lineCount;
  attribute nsMsgPriority priority;
  readonly attribute unsigned long messageOffset;
  readonly attribute unsigned long statusOffset;
  readonly attribute string charSet;

  void MarkRead(in boolean markRead);
  
};

interface nsIMsgDBHdr : nsIMsgHdr
{

};
*******************************************************************************/

