/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla 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/MPL/
 *
 * 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 the Initial Developer are Copyright (C) 1998
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either of the GNU General Public License Version 2 or later (the "GPL"),
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

typedef unsigned long nsMsgKey;
typedef unsigned long nsMsgViewIndex;

typedef long nsMsgSearchScopeValue;

typedef long nsMsgPriorityValue;
typedef long nsMsgSocketTypeValue;
typedef long nsMsgAuthMethodValue;

typedef unsigned long nsMsgJunkStatus;

typedef unsigned long nsMsgJunkScore;

[scriptable, uuid(94C0D8D8-2045-11d3-8A8F-0060B0FC04D2)]
interface nsMsgPriority {
    const nsMsgPriorityValue notSet = 0;
    const nsMsgPriorityValue none = 1;
    const nsMsgPriorityValue lowest = 2;
    const nsMsgPriorityValue low = 3;
    const nsMsgPriorityValue normal = 4;
    const nsMsgPriorityValue high = 5;
    const nsMsgPriorityValue highest = 6;
    // the default for a priority picker
    const nsMsgPriorityValue Default = 4;
};

/**
 * Defines whether to use SSL or STARTTLS or not.
 * Used by @see nsIMsgIncomingServer.socketType
 * and @see nsISmtpServer.socketType
 */
[scriptable, uuid(bc78bc74-1b34-48e8-ac2b-968e8dff1aeb)]
interface nsMsgSocketType {
    /// No SSL or STARTTLS
    const nsMsgSocketTypeValue plain = 0;
    /// Use TLS via STARTTLS, but only if server offers it.
    /// @deprecated This is vulnerable to MITM attacks
    const nsMsgSocketTypeValue trySTARTTLS = 1;
    /// Insist on TLS via STARTTLS.
    /// Uses normal port.
    const nsMsgSocketTypeValue alwaysSTARTTLS = 2;
    /// Connect via SSL.
    /// Needs special SSL port.
    const nsMsgSocketTypeValue SSL = 3;
};

/**
 * Defines which authentication schemes we should try.
 * Used by @see nsIMsgIncomingServer.authMethod
 * and @see nsISmtpServer.authMethod
 */
[scriptable, uuid(4a10e647-d179-4a53-b7ef-df575ff5f405)]
interface nsMsgAuthMethod {
    // 0 is intentionally undefined and invalid
    /// No login needed. E.g. IP-address-based.
    const nsMsgAuthMethodValue none = 1;
    /// Do not use AUTH commands (e.g. AUTH=PLAIN),
    /// but the original login commands that the protocol specified
    /// (POP: "USER"/"PASS", IMAP: "login", not valid for SMTP)
    const nsMsgAuthMethodValue old = 2;
    /// password in the clear. AUTH=PLAIN/LOGIN or old-style login.
    const nsMsgAuthMethodValue passwordCleartext = 3;
    /// hashed password. CRAM-MD5, DIGEST-MD5
    const nsMsgAuthMethodValue passwordEncrypted = 4;
    /// Kerberos / GSSAPI (Unix single-signon)
    const nsMsgAuthMethodValue GSSAPI = 5;
    /// NTLM is a Windows single-singon scheme.
    /// Includes MSN / Passport.net, which is the same with a different name.
    const nsMsgAuthMethodValue NTLM = 6;
    /// Auth External is cert-based authentication
    const nsMsgAuthMethodValue External = 7;
    /// Encrypted password or Kerberos / GSSAPI or NTLM.
    /// @deprecated - for migration only.
    const nsMsgAuthMethodValue secure = 8;
    /// Let us pick any of the auth types supported by the server.
    /// Discouraged, because vulnerable to MITM attacks, even if server offers secure auth.
    const nsMsgAuthMethodValue anything = 9;
};

typedef unsigned long nsMsgLabelValue;

typedef long nsMsgViewSortOrderValue;
typedef long nsMsgViewSortTypeValue;
typedef long nsMsgViewTypeValue;
typedef long nsMsgViewFlagsTypeValue;
