/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * 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, 1999 Netscape Communications Corporation.  All Rights
 * Reserved.
 */

#include "nsrootidl.idl"
#include "nsISupports.idl"
#include "nsIMsgFolder.idl"
#include "nsIFileSpec.idl"
#include "nsIMessage.idl"
#include "nsIMsgCopyServiceListener.idl"
#include "nsISupportsArray.idl"

%{C++
#include "nsITransactionManager.h"
%}

interface nsITransactionManager;

[scriptable, uuid(bce41600-28df-11d3-abf7-00805f8ac968)]
interface nsIMsgCopyService : nsISupports {

    /**
     *
     */
	void CopyMessages(in nsIMsgFolder srcFolder,
	                  in nsISupportsArray messages,
					  in nsIMsgFolder dstFolder,
					  in boolean isMove,
                      in nsIMsgCopyServiceListener listener,
                      in nsISupports listenerData,
					  in nsITransactionManager txnMgr);

    /**
     *
     */
	void CopyFileMessage(in nsIFileSpec fileSpec,
                         in nsIMsgFolder dstFolder,
                         in nsIMessage msgToReplace,
                         in boolean isDraft,
                         in nsIMsgCopyServiceListener listener,
                         in nsISupports listenerData,
                         in nsITransactionManager txnMgr);

    /**
     * Notify the message copy service that the destination folder has finished
     * it's messages copying operation so that the copy service can continue
     * copying the rest of the messages if there are more to copy with.
     * aSupport and dstFolder uniquely identify a copy service request.
     *
     * aSupport -- the originator of CopyMessages or CopyFileMessage; it can
     *             be either a nsIMsgFolder or a nsIFileSpec
     * dstFolder -- the destination folder which performs the copy operation
     * result -- the result of the copy operation
     */
	void NotifyCompletion(in nsISupports aSupport,
						  in nsIMsgFolder dstFolder,
                          in nsresult result);

};
