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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Storage.Streams.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace System
    {
        namespace Profile
        {
            typedef enum PlatformDataCollectionLevel PlatformDataCollectionLevel;

            interface IAnalyticsInfoStatics;

            interface IAnalyticsVersionInfo;

            interface IHardwareToken;

            interface IHardwareIdentificationStatics;

            interface ISharedModeSettingsStatics;

            interface IPlatformDiagnosticsAndUsageDataSettingsStatics;

            interface IRetailInfoStatics;

            interface IKnownRetailInfoPropertiesStatics;

            runtimeclass AnalyticsVersionInfo;

            runtimeclass AnalyticsInfo;

            runtimeclass HardwareToken;

            runtimeclass HardwareIdentification;

            runtimeclass SharedModeSettings;

            runtimeclass PlatformDiagnosticsAndUsageDataSettings;

            runtimeclass RetailInfo;

            runtimeclass KnownRetailInfoProperties;
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace System
    {
        namespace Profile
        {
            [version(0x0A000000)]
            enum PlatformDataCollectionLevel
            {
                Security = 0,
                Basic    = 1,
                Enhanced = 2,
                Full     = 3
            };

            [exclusiveto(Windows.System.Profile.AnalyticsInfo)]
            [uuid(1D5EE066-188D-5BA9-4387-ACAEB0E7E305)]
            [version(0x0A000000)]
            interface IAnalyticsInfoStatics : IInspectable
            {
                [propget] HRESULT VersionInfo([out] [retval] Windows.System.Profile.AnalyticsVersionInfo** value);
                [propget] HRESULT DeviceForm([out] [retval] HSTRING* value);
            }

            [exclusiveto(Windows.System.Profile.AnalyticsVersionInfo)]
            [uuid(926130B8-9955-4C74-BDC1-7CD0DECF9B03)]
            [version(0x0A000000)]
            interface IAnalyticsVersionInfo : IInspectable
            {
                [propget] HRESULT DeviceFamily([out] [retval] HSTRING* value);
                [propget] HRESULT DeviceFamilyVersion([out] [retval] HSTRING* value);
            }

            [exclusiveto(Windows.System.Profile.HardwareToken)]
            [uuid(28F6D4C0-FB12-40A4-8167-7F4E03D2724C)]
            [version(0x06020000)]
            interface IHardwareToken : IInspectable
            {
                [propget] HRESULT Id([out] [retval] Windows.Storage.Streams.IBuffer** value);
                [propget] HRESULT Signature([out] [retval] Windows.Storage.Streams.IBuffer** value);
                [propget] HRESULT Certificate([out] [retval] Windows.Storage.Streams.IBuffer** value);
            }

            [exclusiveto(Windows.System.Profile.HardwareIdentification)]
            [uuid(971260E0-F170-4A42-BD55-A900B212DAE2)]
            [version(0x06020000)]
            interface IHardwareIdentificationStatics : IInspectable
            {
                HRESULT GetPackageSpecificToken([in] Windows.Storage.Streams.IBuffer* nonce, [out] [retval] Windows.System.Profile.HardwareToken** packageSpecificHardwareToken);
            }

            [exclusiveto(Windows.System.Profile.SharedModeSettings)]
            [uuid(893DF40E-CAD6-4D50-8C49-6FCFC03EDB29)]
            [version(0x0A000000)]
            interface ISharedModeSettingsStatics : IInspectable
            {
                [propget] HRESULT IsEnabled([out] [retval] boolean* value);
            }

            [exclusiveto(Windows.System.Profile.PlatformDiagnosticsAndUsageDataSettings)]
            [uuid(B6E24C1B-7B1C-4B32-8C62-A66597CE723A)]
            [version(0x0A000000)]
            interface IPlatformDiagnosticsAndUsageDataSettingsStatics : IInspectable
            {
                [propget] HRESULT CollectionLevel([out] [retval] Windows.System.Profile.PlatformDataCollectionLevel* value);
                [eventadd] HRESULT CollectionLevelChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT CollectionLevelChanged([in] EventRegistrationToken token);
                HRESULT CanCollectDiagnostics([in] Windows.System.Profile.PlatformDataCollectionLevel level, [out] [retval] boolean* result);
            }

            [exclusiveto(Windows.System.Profile.RetailInfo)]
            [uuid(0712C6B8-8B92-4F2A-8499-031F1798D6EF)]
            [version(0x0A000000)]
            interface IRetailInfoStatics : IInspectable
            {
                [propget] HRESULT IsDemoModeEnabled([out] [retval] boolean* value);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>** value);
            }

            [exclusiveto(Windows.System.Profile.KnownRetailInfoProperties)]
            [uuid(99571178-500F-487E-8E75-29E551728712)]
            [version(0x0A000000)]
            interface IKnownRetailInfoPropertiesStatics : IInspectable
            {
                [propget] HRESULT RetailAccessCode([out] [retval] HSTRING* value);
                [propget] HRESULT ManufacturerName([out] [retval] HSTRING* value);
                [propget] HRESULT ModelName([out] [retval] HSTRING* value);
                [propget] HRESULT DisplayModelName([out] [retval] HSTRING* value);
                [propget] HRESULT Price([out] [retval] HSTRING* value);
                [propget] HRESULT IsFeatured([out] [retval] HSTRING* value);
                [propget] HRESULT FormFactor([out] [retval] HSTRING* value);
                [propget] HRESULT ScreenSize([out] [retval] HSTRING* value);
                [propget] HRESULT Weight([out] [retval] HSTRING* value);
                [propget] HRESULT DisplayDescription([out] [retval] HSTRING* value);
                [propget] HRESULT BatteryLifeDescription([out] [retval] HSTRING* value);
                [propget] HRESULT ProcessorDescription([out] [retval] HSTRING* value);
                [propget] HRESULT Memory([out] [retval] HSTRING* value);
                [propget] HRESULT StorageDescription([out] [retval] HSTRING* value);
                [propget] HRESULT GraphicsDescription([out] [retval] HSTRING* value);
                [propget] HRESULT FrontCameraDescription([out] [retval] HSTRING* value);
                [propget] HRESULT RearCameraDescription([out] [retval] HSTRING* value);
                [propget] HRESULT HasNfc([out] [retval] HSTRING* value);
                [propget] HRESULT HasSdSlot([out] [retval] HSTRING* value);
                [propget] HRESULT HasOpticalDrive([out] [retval] HSTRING* value);
                [propget] HRESULT IsOfficeInstalled([out] [retval] HSTRING* value);
                [propget] HRESULT WindowsEdition([out] [retval] HSTRING* value);
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AnalyticsVersionInfo
            {
                [default] interface Windows.System.Profile.IAnalyticsVersionInfo;
            }

            [marshaling_behavior(agile)]
            [static(Windows.System.Profile.IAnalyticsInfoStatics, 0x0A000000)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AnalyticsInfo
            {
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass HardwareToken
            {
                [default] interface Windows.System.Profile.IHardwareToken;
            }

            [marshaling_behavior(standard)]
            [static(Windows.System.Profile.IHardwareIdentificationStatics, 0x06020000)]
            [version(0x06020000)]
            runtimeclass HardwareIdentification
            {
            }

            [marshaling_behavior(agile)]
            [static(Windows.System.Profile.ISharedModeSettingsStatics, 0x0A000000)]
            [version(0x0A000000)]
            runtimeclass SharedModeSettings
            {
            }

            [marshaling_behavior(agile)]
            [static(Windows.System.Profile.IPlatformDiagnosticsAndUsageDataSettingsStatics, 0x0A000000)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass PlatformDiagnosticsAndUsageDataSettings
            {
            }

            [marshaling_behavior(agile)]
            [static(Windows.System.Profile.IRetailInfoStatics, 0x0A000000)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass RetailInfo
            {
            }

            [marshaling_behavior(agile)]
            [static(Windows.System.Profile.IKnownRetailInfoPropertiesStatics, 0x0A000000)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass KnownRetailInfoProperties
            {
            }
        }
    }
}
