/* 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"

interface nsIMsgFolder;
interface nsIMsgDBHdr;

typedef long nsAutoSyncStrategyDecisionType;

[scriptable,uuid(0365bec5-3753-43c2-b13e-441747815f37)]
interface nsAutoSyncStrategyDecisions
{
  /// same priority
  const nsAutoSyncStrategyDecisionType Same         = 0x00000001;
  /// higher priority
  const nsAutoSyncStrategyDecisionType Higher       = 0x00000002;
  /// lower priority
  const nsAutoSyncStrategyDecisionType Lower        = 0x00000004;
};

[scriptable, uuid(9cb4baff-3112-4cf8-8463-f81b0aa78f93)] 
interface nsIAutoSyncMsgStrategy : nsISupports {

  /**
   * Returns a relative-priority for the second message by comparing with the first message.
   */
  nsAutoSyncStrategyDecisionType sort(in nsIMsgFolder aFolder, in nsIMsgDBHdr aMsgHdr1, in nsIMsgDBHdr aMsgHdr2);
  
  /**
   * Tests whether the given message should be excluded or not.
   */
  boolean isExcluded(in nsIMsgFolder aFolder, in nsIMsgDBHdr aMsgHdr);
};
