/* -*- 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.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/NPL/
 *
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1999 Netscape Communications Corporation. All
 * Rights Reserved.
 *
 * Contributor(s): 
 */

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

[ptr] native nsString(nsString); 
%{ C++
#include "nsString.h"
%}

[scriptable, uuid(5cb11c00-cb8b-11d2-8d67-00805f8a6617)]

interface  nsIDBFolderInfo : nsISupports {
	attribute long Flags;
	long		  OrFlags(in long flags);
	long		  AndFlags(in long flags);
	void	  SetHighWater(in nsMsgKey highwater, in boolean force);
	attribute nsMsgKey HighWater;
	attribute nsMsgKey ExpiredMark;
	attribute unsigned long FolderSize;
	attribute nsMsgKey LastMessageLoaded;
	attribute unsigned long FolderDate;
	void ChangeNumNewMessages(in long delta);
	void ChangeNumMessages(in long delta);
	void ChangeNumVisibleMessages(in long delta);
	attribute long NumNewMessages;
	attribute long NumMessages;
	attribute long NumVisibleMessages;
	attribute long ImapUidValidity;
	attribute unsigned long Version;
	attribute long ImapTotalPendingMessages;
	attribute long ImapUnreadPendingMessages;
	attribute wchar IMAPHierarchySeparator;
    void ChangeExpungedBytes(in long delta);

	void GetCharPtrProperty(in string propertyName, out string resultProperty);
	void SetUint32Property(in string propertyName, in unsigned long propertyValue);
	unsigned long GetUint32Property(in string propertyName);

	[noscript] void GetCharacterSet(in nsString result);
	[noscript] void SetCharacterSet(in nsString result);

			   void GetCharPtrCharacterSet(out string result);

	[noscript] void GetLocale(in nsString result);
	[noscript] void SetLocale(in nsString locale);
    
	[noscript] void SetMailboxName(in nsString newBoxName);
	[noscript] void GetMailboxName(in nsString boxName);


	[noscript] void GetProperty(in string propertyName, in nsString resultProperty);
	[noscript] void SetProperty(in string propertyName, in nsString propertyStr);
	[noscript] void SetKnownArtsSet(in nsString newsArtSet);
	[noscript] void GetKnownArtsSet(in nsString newsArtSet);
};


