//
// 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";
import "Windows.Storage.idl";

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

        typedef struct TimeSpan TimeSpan;
    }
}
namespace Windows
{
    namespace Storage
    {
        runtimeclass StorageFile;

        runtimeclass StorageFolder;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace AppRecording
        {
            apicontract AppRecordingContract;

            typedef enum AppRecordingSaveScreenshotOption AppRecordingSaveScreenshotOption;

            interface IAppRecordingManager;

            interface IAppRecordingManagerStatics;

            interface IAppRecordingResult;

            interface IAppRecordingSaveScreenshotResult;

            interface IAppRecordingSavedScreenshotInfo;

            interface IAppRecordingStatus;

            interface IAppRecordingStatusDetails;

            runtimeclass AppRecordingManager;

            runtimeclass AppRecordingResult;

            runtimeclass AppRecordingSaveScreenshotResult;

            runtimeclass AppRecordingSavedScreenshotInfo;

            runtimeclass AppRecordingStatus;

            runtimeclass AppRecordingStatusDetails;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace AppRecording
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Media.AppRecording.AppRecordingSavedScreenshotInfo*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.AppRecording.AppRecordingSavedScreenshotInfo*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.AppRecording.AppRecordingSavedScreenshotInfo*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.AppRecording.AppRecordingResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.AppRecording.AppRecordingSaveScreenshotResult*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace AppRecording
        {
            [contractversion(1.0)]
            apicontract AppRecordingContract
            {
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            enum AppRecordingSaveScreenshotOption
            {
                None              = 0,
                HdrContentVisible = 1
            };

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [exclusiveto(Windows.Media.AppRecording.AppRecordingManager)]
            [uuid(E7E26076-A044-48E2-A512-3094D574C7CC)]
            interface IAppRecordingManager : IInspectable
            {
                HRESULT GetStatus([out] [retval] Windows.Media.AppRecording.AppRecordingStatus** result);
                HRESULT StartRecordingToFileAsync([in] Windows.Storage.StorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.AppRecording.AppRecordingResult*>** operation);
                HRESULT RecordTimeSpanToFileAsync([in] Windows.Foundation.DateTime startTime, [in] Windows.Foundation.TimeSpan duration, [in] Windows.Storage.StorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.AppRecording.AppRecordingResult*>** operation);
                [propget] HRESULT SupportedScreenshotMediaEncodingSubtypes([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                HRESULT SaveScreenshotToFilesAsync([in] Windows.Storage.StorageFolder* folder, [in] HSTRING filenamePrefix, [in] Windows.Media.AppRecording.AppRecordingSaveScreenshotOption option, [in] Windows.Foundation.Collections.IIterable<HSTRING>* requestedFormats, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.AppRecording.AppRecordingSaveScreenshotResult*>** operation);
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [exclusiveto(Windows.Media.AppRecording.AppRecordingManager)]
            [uuid(50E709F7-38CE-4BD3-9DB2-E72BBE9DE11D)]
            interface IAppRecordingManagerStatics : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.Media.AppRecording.AppRecordingManager** result);
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [exclusiveto(Windows.Media.AppRecording.AppRecordingResult)]
            [uuid(3A900864-C66D-46F9-B2D9-5BC2DAD070D7)]
            interface IAppRecordingResult : IInspectable
            {
                [propget] HRESULT Succeeded([out] [retval] boolean* value);
                [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
                [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT IsFileTruncated([out] [retval] boolean* value);
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [exclusiveto(Windows.Media.AppRecording.AppRecordingSaveScreenshotResult)]
            [uuid(9C5B8D0A-0ABB-4457-AAEE-24F9C12EC778)]
            interface IAppRecordingSaveScreenshotResult : IInspectable
            {
                [propget] HRESULT Succeeded([out] [retval] boolean* value);
                [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
                [propget] HRESULT SavedScreenshotInfos([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.AppRecording.AppRecordingSavedScreenshotInfo*>** value);
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [exclusiveto(Windows.Media.AppRecording.AppRecordingSavedScreenshotInfo)]
            [uuid(9B642D0A-189A-4D00-BF25-E1BB1249D594)]
            interface IAppRecordingSavedScreenshotInfo : IInspectable
            {
                [propget] HRESULT File([out] [retval] Windows.Storage.StorageFile** value);
                [propget] HRESULT MediaEncodingSubtype([out] [retval] HSTRING* value);
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [exclusiveto(Windows.Media.AppRecording.AppRecordingStatus)]
            [uuid(1D0CC82C-BC18-4B8A-A6EF-127EFAB3B5D9)]
            interface IAppRecordingStatus : IInspectable
            {
                [propget] HRESULT CanRecord([out] [retval] boolean* value);
                [propget] HRESULT CanRecordTimeSpan([out] [retval] boolean* value);
                [propget] HRESULT HistoricalBufferDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Details([out] [retval] Windows.Media.AppRecording.AppRecordingStatusDetails** value);
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [exclusiveto(Windows.Media.AppRecording.AppRecordingStatusDetails)]
            [uuid(B538A9B0-14ED-4412-AC45-6D672C9C9949)]
            interface IAppRecordingStatusDetails : IInspectable
            {
                [propget] HRESULT IsAnyAppBroadcasting([out] [retval] boolean* value);
                [propget] HRESULT IsCaptureResourceUnavailable([out] [retval] boolean* value);
                [propget] HRESULT IsGameStreamInProgress([out] [retval] boolean* value);
                [propget] HRESULT IsTimeSpanRecordingDisabled([out] [retval] boolean* value);
                [propget] HRESULT IsGpuConstrained([out] [retval] boolean* value);
                [propget] HRESULT IsAppInactive([out] [retval] boolean* value);
                [propget] HRESULT IsBlockedForApp([out] [retval] boolean* value);
                [propget] HRESULT IsDisabledByUser([out] [retval] boolean* value);
                [propget] HRESULT IsDisabledBySystem([out] [retval] boolean* value);
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.AppRecording.IAppRecordingManagerStatics, Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [threading(both)]
            runtimeclass AppRecordingManager
            {
                [default] interface Windows.Media.AppRecording.IAppRecordingManager;
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppRecordingResult
            {
                [default] interface Windows.Media.AppRecording.IAppRecordingResult;
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppRecordingSaveScreenshotResult
            {
                [default] interface Windows.Media.AppRecording.IAppRecordingSaveScreenshotResult;
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppRecordingSavedScreenshotInfo
            {
                [default] interface Windows.Media.AppRecording.IAppRecordingSavedScreenshotInfo;
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppRecordingStatus
            {
                [default] interface Windows.Media.AppRecording.IAppRecordingStatus;
            }

            [contract(Windows.Media.AppRecording.AppRecordingContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppRecordingStatusDetails
            {
                [default] interface Windows.Media.AppRecording.IAppRecordingStatusDetails;
            }
        }
    }
}
