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

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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Management
    {
        typedef enum MdmAlertDataType MdmAlertDataType;

        typedef enum MdmAlertMark MdmAlertMark;

        typedef enum MdmSessionState MdmSessionState;

        interface IMdmAlert;

        interface IMdmSession;

        interface IMdmSessionManagerStatics;

        runtimeclass MdmAlert;

        runtimeclass MdmSession;

        runtimeclass MdmSessionManager;
    }
}

// Generic instantiations
namespace Windows
{
    namespace Management
    {
        declare
        {
            interface Windows.Foundation.Collections.IIterable<Windows.Management.MdmAlert*>;

            interface Windows.Foundation.Collections.IIterator<Windows.Management.MdmAlert*>;

            interface Windows.Foundation.Collections.IVectorView<Windows.Management.MdmAlert*>;
        }
    }
}

// Type definition
namespace Windows
{
    namespace Management
    {
        [contract(Windows.Foundation.UniversalApiContract, 4.0)]
        enum MdmAlertDataType
        {
            String  = 0,
            Base64  = 1,
            Boolean = 2,
            Integer = 3
        };

        [contract(Windows.Foundation.UniversalApiContract, 4.0)]
        enum MdmAlertMark
        {
            None          = 0,
            Fatal         = 1,
            Critical      = 2,
            Warning       = 3,
            Informational = 4
        };

        [contract(Windows.Foundation.UniversalApiContract, 4.0)]
        enum MdmSessionState
        {
            NotStarted           = 0,
            Starting             = 1,
            Connecting           = 2,
            Communicating        = 3,
            AlertStatusAvailable = 4,
            Retrying             = 5,
            Completed            = 6
        };

        [contract(Windows.Foundation.UniversalApiContract, 4.0)]
        [exclusiveto(Windows.Management.MdmAlert)]
        [uuid(B0FBC327-28C1-4B52-A548-C5807CAF70B6)]
        interface IMdmAlert : IInspectable
        {
            [propget] HRESULT Data([out] [retval] HSTRING* value);
            [propput] HRESULT Data([in] HSTRING value);
            [propget] HRESULT Format([out] [retval] Windows.Management.MdmAlertDataType* value);
            [propput] HRESULT Format([in] Windows.Management.MdmAlertDataType value);
            [propget] HRESULT Mark([out] [retval] Windows.Management.MdmAlertMark* value);
            [propput] HRESULT Mark([in] Windows.Management.MdmAlertMark value);
            [propget] HRESULT Source([out] [retval] HSTRING* value);
            [propput] HRESULT Source([in] HSTRING value);
            [propget] HRESULT Status([out] [retval] UINT32* value);
            [propget] HRESULT Target([out] [retval] HSTRING* value);
            [propput] HRESULT Target([in] HSTRING value);
            [propget] HRESULT Type([out] [retval] HSTRING* value);
            [propput] HRESULT Type([in] HSTRING value);
        }

        [contract(Windows.Foundation.UniversalApiContract, 4.0)]
        [exclusiveto(Windows.Management.MdmSession)]
        [uuid(FE89314C-8F64-4797-A9D7-9D88F86AE166)]
        interface IMdmSession : IInspectable
        {
            [propget] HRESULT Alerts([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Management.MdmAlert*>** value);
            [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
            [propget] HRESULT Id([out] [retval] HSTRING* value);
            [propget] HRESULT State([out] [retval] Windows.Management.MdmSessionState* value);
            HRESULT AttachAsync([out] [retval] Windows.Foundation.IAsyncAction** action);
            HRESULT Delete();
            [overload("StartAsync")] HRESULT StartAsync([out] [retval] Windows.Foundation.IAsyncAction** action);
            [overload("StartAsync")] HRESULT StartWithAlertsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Management.MdmAlert*>* alerts, [out] [retval] Windows.Foundation.IAsyncAction** action);
        }

        [contract(Windows.Foundation.UniversalApiContract, 4.0)]
        [exclusiveto(Windows.Management.MdmSessionManager)]
        [uuid(CF4AD959-F745-4B79-9B5C-DE0BF8EFE44B)]
        interface IMdmSessionManagerStatics : IInspectable
        {
            [propget] HRESULT SessionIds([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
            HRESULT TryCreateSession([out] [retval] Windows.Management.MdmSession** result);
            HRESULT DeleteSessionById([in] HSTRING sessionId);
            HRESULT GetSessionById([in] HSTRING sessionId, [out] [retval] Windows.Management.MdmSession** result);
        }

        [activatable(Windows.Foundation.UniversalApiContract, 4.0)]
        [contract(Windows.Foundation.UniversalApiContract, 4.0)]
        [marshaling_behavior(standard)]
        runtimeclass MdmAlert
        {
            [default] interface Windows.Management.IMdmAlert;
        }

        [contract(Windows.Foundation.UniversalApiContract, 4.0)]
        [marshaling_behavior(standard)]
        runtimeclass MdmSession
        {
            [default] interface Windows.Management.IMdmSession;
        }

        [contract(Windows.Foundation.UniversalApiContract, 4.0)]
        [marshaling_behavior(standard)]
        [static(Windows.Management.IMdmSessionManagerStatics, Windows.Foundation.UniversalApiContract, 4.0)]
        runtimeclass MdmSessionManager
        {
        }
    }
}
