//
// 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
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            namespace Telemetry
            {
                typedef enum PlatformTelemetryRegistrationStatus PlatformTelemetryRegistrationStatus;

                interface IPlatformTelemetryClientStatics;

                interface IPlatformTelemetryRegistrationResult;

                interface IPlatformTelemetryRegistrationSettings;

                runtimeclass PlatformTelemetryClient;

                runtimeclass PlatformTelemetryRegistrationResult;

                runtimeclass PlatformTelemetryRegistrationSettings;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            namespace Telemetry
            {
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum PlatformTelemetryRegistrationStatus
                {
                    Success            = 0,
                    SettingsOutOfRange = 1,
                    UnknownFailure     = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.System.Diagnostics.Telemetry.PlatformTelemetryClient)]
                [uuid(9BF3F25D-D5C3-4EEA-8DBE-9C8DBB0D9D8F)]
                interface IPlatformTelemetryClientStatics : IInspectable
                {
                    [overload("Register")] HRESULT Register([in] HSTRING id, [out] [retval] Windows.System.Diagnostics.Telemetry.PlatformTelemetryRegistrationResult** result);
                    [overload("Register")] HRESULT RegisterWithSettings([in] HSTRING id, [in] Windows.System.Diagnostics.Telemetry.PlatformTelemetryRegistrationSettings* settings, [out] [retval] Windows.System.Diagnostics.Telemetry.PlatformTelemetryRegistrationResult** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.System.Diagnostics.Telemetry.PlatformTelemetryRegistrationResult)]
                [uuid(4D8518AB-2292-49BD-A15A-3D71D2145112)]
                interface IPlatformTelemetryRegistrationResult : IInspectable
                {
                    [propget] HRESULT Status([out] [retval] Windows.System.Diagnostics.Telemetry.PlatformTelemetryRegistrationStatus* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.System.Diagnostics.Telemetry.PlatformTelemetryRegistrationSettings)]
                [uuid(819A8582-CA19-415E-BB79-9C224BFA3A73)]
                interface IPlatformTelemetryRegistrationSettings : IInspectable
                {
                    [propget] HRESULT StorageSize([out] [retval] UINT32* value);
                    [propput] HRESULT StorageSize([in] UINT32 value);
                    [propget] HRESULT UploadQuotaSize([out] [retval] UINT32* value);
                    [propput] HRESULT UploadQuotaSize([in] UINT32 value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [static(Windows.System.Diagnostics.Telemetry.IPlatformTelemetryClientStatics, Windows.Foundation.UniversalApiContract, 4.0)]
                [threading(both)]
                runtimeclass PlatformTelemetryClient
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PlatformTelemetryRegistrationResult
                {
                    [default] interface Windows.System.Diagnostics.Telemetry.IPlatformTelemetryRegistrationResult;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 4.0)]
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PlatformTelemetryRegistrationSettings
                {
                    [default] interface Windows.System.Diagnostics.Telemetry.IPlatformTelemetryRegistrationSettings;
                }
            }
        }
    }
}
