//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0018
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace ExchangeActiveSyncProvisioning
        {
            apicontract EasContract;

            typedef enum EasDisallowConvenienceLogonResult EasDisallowConvenienceLogonResult;

            typedef enum EasEncryptionProviderType EasEncryptionProviderType;

            typedef enum EasMaxInactivityTimeLockResult EasMaxInactivityTimeLockResult;

            typedef enum EasMaxPasswordFailedAttemptsResult EasMaxPasswordFailedAttemptsResult;

            typedef enum EasMinPasswordComplexCharactersResult EasMinPasswordComplexCharactersResult;

            typedef enum EasMinPasswordLengthResult EasMinPasswordLengthResult;

            typedef enum EasPasswordExpirationResult EasPasswordExpirationResult;

            typedef enum EasPasswordHistoryResult EasPasswordHistoryResult;

            typedef enum EasRequireEncryptionResult EasRequireEncryptionResult;

            interface IEasClientDeviceInformation;

            interface IEasClientDeviceInformation2;

            interface IEasClientSecurityPolicy;

            interface IEasComplianceResults;

            interface IEasComplianceResults2;

            runtimeclass EasClientDeviceInformation;

            runtimeclass EasClientSecurityPolicy;

            runtimeclass EasComplianceResults;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Security
    {
        namespace ExchangeActiveSyncProvisioning
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.Security.ExchangeActiveSyncProvisioning.EasComplianceResults*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Security
    {
        namespace ExchangeActiveSyncProvisioning
        {
            [contractversion(1.0)]
            apicontract EasContract
            {
            }

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            enum EasDisallowConvenienceLogonResult
            {
                NotEvaluated              = 0,
                Compliant                 = 1,
                CanBeCompliant            = 2,
                RequestedPolicyIsStricter = 3
            };

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            enum EasEncryptionProviderType
            {
                NotEvaluated      = 0,
                WindowsEncryption = 1,
                OtherEncryption   = 2
            };

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            enum EasMaxInactivityTimeLockResult
            {
                NotEvaluated              = 0,
                Compliant                 = 1,
                CanBeCompliant            = 2,
                RequestedPolicyIsStricter = 3,
                InvalidParameter          = 4
            };

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            enum EasMaxPasswordFailedAttemptsResult
            {
                NotEvaluated              = 0,
                Compliant                 = 1,
                CanBeCompliant            = 2,
                RequestedPolicyIsStricter = 3,
                InvalidParameter          = 4
            };

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            enum EasMinPasswordComplexCharactersResult
            {
                NotEvaluated                             = 0,
                Compliant                                = 1,
                CanBeCompliant                           = 2,
                RequestedPolicyIsStricter                = 3,
                RequestedPolicyNotEnforceable            = 4,
                InvalidParameter                         = 5,
                CurrentUserHasBlankPassword              = 6,
                AdminsHaveBlankPassword                  = 7,
                UserCannotChangePassword                 = 8,
                AdminsCannotChangePassword               = 9,
                LocalControlledUsersCannotChangePassword = 10,
                ConnectedAdminsProviderPolicyIsWeak      = 11,
                ConnectedUserProviderPolicyIsWeak        = 12,
                ChangeConnectedAdminsPassword            = 13,
                ChangeConnectedUserPassword              = 14
            };

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            enum EasMinPasswordLengthResult
            {
                NotEvaluated                             = 0,
                Compliant                                = 1,
                CanBeCompliant                           = 2,
                RequestedPolicyIsStricter                = 3,
                RequestedPolicyNotEnforceable            = 4,
                InvalidParameter                         = 5,
                CurrentUserHasBlankPassword              = 6,
                AdminsHaveBlankPassword                  = 7,
                UserCannotChangePassword                 = 8,
                AdminsCannotChangePassword               = 9,
                LocalControlledUsersCannotChangePassword = 10,
                ConnectedAdminsProviderPolicyIsWeak      = 11,
                ConnectedUserProviderPolicyIsWeak        = 12,
                ChangeConnectedAdminsPassword            = 13,
                ChangeConnectedUserPassword              = 14
            };

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            enum EasPasswordExpirationResult
            {
                NotEvaluated                             = 0,
                Compliant                                = 1,
                CanBeCompliant                           = 2,
                RequestedPolicyIsStricter                = 3,
                RequestedExpirationIncompatible          = 4,
                InvalidParameter                         = 5,
                UserCannotChangePassword                 = 6,
                AdminsCannotChangePassword               = 7,
                LocalControlledUsersCannotChangePassword = 8
            };

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            enum EasPasswordHistoryResult
            {
                NotEvaluated              = 0,
                Compliant                 = 1,
                CanBeCompliant            = 2,
                RequestedPolicyIsStricter = 3,
                InvalidParameter          = 4
            };

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            enum EasRequireEncryptionResult
            {
                NotEvaluated               = 0,
                Compliant                  = 1,
                CanBeCompliant             = 2,
                NotProvisionedOnAllVolumes = 3,
                [deprecated("DeFixedDataNotSupported may be altered or unavailable for releases after Windows 8.1. Instead, use FixedDataNotSupported.", deprecate, Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                DeFixedDataNotSupported    = 4,
                [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                FixedDataNotSupported      = 4,
                [deprecated("DeHardwareNotCompliant may be altered or unavailable for releases after Windows 8.1. Instead, use HardwareNotCompliant.", deprecate, Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                DeHardwareNotCompliant     = 5,
                [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                HardwareNotCompliant       = 5,
                [deprecated("DeWinReNotConfigured may be altered or unavailable for releases after Windows 8.1. Instead, use LockNotConfigured.", deprecate, Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                DeWinReNotConfigured       = 6,
                [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                LockNotConfigured          = 6,
                [deprecated("DeProtectionSuspended may be altered or unavailable for releases after Windows 8.1. Instead, use ProtectionSuspended.", deprecate, Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                DeProtectionSuspended      = 7,
                [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                ProtectionSuspended        = 7,
                [deprecated("DeOsVolumeNotProtected may be altered or unavailable for releases after Windows 8.1. Instead, use OsVolumeNotProtected.", deprecate, Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                DeOsVolumeNotProtected     = 8,
                [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                OsVolumeNotProtected       = 8,
                [deprecated("DeProtectionNotYetEnabled may be altered or unavailable for releases after Windows 8.1. Instead, use ProtectionNotYetEnabled.", deprecate, Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                DeProtectionNotYetEnabled  = 9,
                [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                ProtectionNotYetEnabled    = 9,
                NoFeatureLicense           = 10,
                OsNotProtected             = 11,
                [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
                UnexpectedFailure          = 12
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation)]
            [uuid(54DFD981-1968-4CA3-B958-E595D16505EB)]
            interface IEasClientDeviceInformation : IInspectable
            {
                [propget] HRESULT Id([out] [retval] GUID* value);
                [propget] HRESULT OperatingSystem([out] [retval] HSTRING* value);
                [propget] HRESULT FriendlyName([out] [retval] HSTRING* value);
                [propget] HRESULT SystemManufacturer([out] [retval] HSTRING* value);
                [propget] HRESULT SystemProductName([out] [retval] HSTRING* value);
                [propget] HRESULT SystemSku([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation)]
            [uuid(FFB35923-BB26-4D6A-81BC-165AEE0AD754)]
            interface IEasClientDeviceInformation2 : IInspectable
                requires
                    Windows.Security.ExchangeActiveSyncProvisioning.IEasClientDeviceInformation
            {
                [propget] HRESULT SystemHardwareVersion([out] [retval] HSTRING* value);
                [propget] HRESULT SystemFirmwareVersion([out] [retval] HSTRING* value);
            }

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            [exclusiveto(Windows.Security.ExchangeActiveSyncProvisioning.EasClientSecurityPolicy)]
            [uuid(45B72362-DFBA-4A9B-ACED-6FE2ADCB6420)]
            interface IEasClientSecurityPolicy : IInspectable
            {
                [propget] HRESULT RequireEncryption([out] [retval] boolean* value);
                [propput] HRESULT RequireEncryption([in] boolean value);
                [propget] HRESULT MinPasswordLength([out] [retval] BYTE* value);
                [propput] HRESULT MinPasswordLength([in] BYTE value);
                [propget] HRESULT DisallowConvenienceLogon([out] [retval] boolean* value);
                [propput] HRESULT DisallowConvenienceLogon([in] boolean value);
                [propget] HRESULT MinPasswordComplexCharacters([out] [retval] BYTE* value);
                [propput] HRESULT MinPasswordComplexCharacters([in] BYTE value);
                [propget] HRESULT PasswordExpiration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT PasswordExpiration([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT PasswordHistory([out] [retval] UINT32* value);
                [propput] HRESULT PasswordHistory([in] UINT32 value);
                [propget] HRESULT MaxPasswordFailedAttempts([out] [retval] BYTE* value);
                [propput] HRESULT MaxPasswordFailedAttempts([in] BYTE value);
                [propget] HRESULT MaxInactivityTimeLock([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT MaxInactivityTimeLock([in] Windows.Foundation.TimeSpan value);
                HRESULT CheckCompliance([out] [retval] Windows.Security.ExchangeActiveSyncProvisioning.EasComplianceResults** result);
                HRESULT ApplyAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.ExchangeActiveSyncProvisioning.EasComplianceResults*>** operation);
            }

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            [exclusiveto(Windows.Security.ExchangeActiveSyncProvisioning.EasComplianceResults)]
            [uuid(463C299C-7F19-4C66-B403-CB45DD57A2B3)]
            interface IEasComplianceResults : IInspectable
            {
                [propget] HRESULT Compliant([out] [retval] boolean* value);
                [propget] HRESULT RequireEncryptionResult([out] [retval] Windows.Security.ExchangeActiveSyncProvisioning.EasRequireEncryptionResult* value);
                [propget] HRESULT MinPasswordLengthResult([out] [retval] Windows.Security.ExchangeActiveSyncProvisioning.EasMinPasswordLengthResult* value);
                [propget] HRESULT DisallowConvenienceLogonResult([out] [retval] Windows.Security.ExchangeActiveSyncProvisioning.EasDisallowConvenienceLogonResult* value);
                [propget] HRESULT MinPasswordComplexCharactersResult([out] [retval] Windows.Security.ExchangeActiveSyncProvisioning.EasMinPasswordComplexCharactersResult* value);
                [propget] HRESULT PasswordExpirationResult([out] [retval] Windows.Security.ExchangeActiveSyncProvisioning.EasPasswordExpirationResult* value);
                [propget] HRESULT PasswordHistoryResult([out] [retval] Windows.Security.ExchangeActiveSyncProvisioning.EasPasswordHistoryResult* value);
                [propget] HRESULT MaxPasswordFailedAttemptsResult([out] [retval] Windows.Security.ExchangeActiveSyncProvisioning.EasMaxPasswordFailedAttemptsResult* value);
                [propget] HRESULT MaxInactivityTimeLockResult([out] [retval] Windows.Security.ExchangeActiveSyncProvisioning.EasMaxInactivityTimeLockResult* value);
            }

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            [exclusiveto(Windows.Security.ExchangeActiveSyncProvisioning.EasComplianceResults)]
            [uuid(2FBE60C9-1AA8-47F5-88BB-CB3EF0BFFB15)]
            interface IEasComplianceResults2 : IInspectable
                requires
                    Windows.Security.ExchangeActiveSyncProvisioning.IEasComplianceResults
            {
                [propget] HRESULT EncryptionProviderType([out] [retval] Windows.Security.ExchangeActiveSyncProvisioning.EasEncryptionProviderType* value);
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass EasClientDeviceInformation
            {
                [default] interface Windows.Security.ExchangeActiveSyncProvisioning.IEasClientDeviceInformation;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Security.ExchangeActiveSyncProvisioning.IEasClientDeviceInformation2;
            }

            [activatable(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            [threading(both)]
            runtimeclass EasClientSecurityPolicy
            {
                [default] interface Windows.Security.ExchangeActiveSyncProvisioning.IEasClientSecurityPolicy;
            }

            [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)]
            runtimeclass EasComplianceResults
            {
                [default] interface Windows.Security.ExchangeActiveSyncProvisioning.IEasComplianceResults;
                [contract(Windows.Security.ExchangeActiveSyncProvisioning.EasContract, 1.0)] interface Windows.Security.ExchangeActiveSyncProvisioning.IEasComplianceResults2;
            }
        }
    }
}
