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

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

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Media
    {
        typedef enum MediaPlaybackAutoRepeatMode MediaPlaybackAutoRepeatMode;

        typedef enum MediaPlaybackType MediaPlaybackType;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStreamReference;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Control
        {
            typedef enum GlobalSystemMediaTransportControlsSessionPlaybackStatus GlobalSystemMediaTransportControlsSessionPlaybackStatus;

            interface ICurrentSessionChangedEventArgs;

            interface IGlobalSystemMediaTransportControlsSession;

            interface IGlobalSystemMediaTransportControlsSessionManager;

            interface IGlobalSystemMediaTransportControlsSessionManagerStatics;

            interface IGlobalSystemMediaTransportControlsSessionMediaProperties;

            interface IGlobalSystemMediaTransportControlsSessionPlaybackControls;

            interface IGlobalSystemMediaTransportControlsSessionPlaybackInfo;

            interface IGlobalSystemMediaTransportControlsSessionTimelineProperties;

            interface IMediaPropertiesChangedEventArgs;

            interface IPlaybackInfoChangedEventArgs;

            interface ISessionsChangedEventArgs;

            interface ITimelinePropertiesChangedEventArgs;

            runtimeclass CurrentSessionChangedEventArgs;

            runtimeclass GlobalSystemMediaTransportControlsSession;

            runtimeclass GlobalSystemMediaTransportControlsSessionManager;

            runtimeclass GlobalSystemMediaTransportControlsSessionMediaProperties;

            runtimeclass GlobalSystemMediaTransportControlsSessionPlaybackControls;

            runtimeclass GlobalSystemMediaTransportControlsSessionPlaybackInfo;

            runtimeclass GlobalSystemMediaTransportControlsSessionTimelineProperties;

            runtimeclass MediaPropertiesChangedEventArgs;

            runtimeclass PlaybackInfoChangedEventArgs;

            runtimeclass SessionsChangedEventArgs;

            runtimeclass TimelinePropertiesChangedEventArgs;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Control.GlobalSystemMediaTransportControlsSession*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Control.GlobalSystemMediaTransportControlsSession*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Control.GlobalSystemMediaTransportControlsSession*, Windows.Media.Control.MediaPropertiesChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Control.GlobalSystemMediaTransportControlsSession*, Windows.Media.Control.PlaybackInfoChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Control.GlobalSystemMediaTransportControlsSession*, Windows.Media.Control.TimelinePropertiesChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager*, Windows.Media.Control.CurrentSessionChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager*, Windows.Media.Control.SessionsChangedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Control
        {
            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            enum GlobalSystemMediaTransportControlsSessionPlaybackStatus
            {
                Closed   = 0,
                Opened   = 1,
                Changing = 2,
                Stopped  = 3,
                Playing  = 4,
                Paused   = 5
            };

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.CurrentSessionChangedEventArgs)]
            [uuid(6969CB39-0BFA-5FE0-8D73-09CC5E5408E1)]
            interface ICurrentSessionChangedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.GlobalSystemMediaTransportControlsSession)]
            [uuid(7148C835-9B14-5AE2-AB85-DC9B1C14E1A8)]
            interface IGlobalSystemMediaTransportControlsSession : IInspectable
            {
                [propget] HRESULT SourceAppUserModelId([out] [retval] HSTRING* value);
                HRESULT TryGetMediaPropertiesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties*>** operation);
                HRESULT GetTimelineProperties([out] [retval] Windows.Media.Control.GlobalSystemMediaTransportControlsSessionTimelineProperties** result);
                HRESULT GetPlaybackInfo([out] [retval] Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackInfo** result);
                HRESULT TryPlayAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryPauseAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryStopAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryRecordAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryFastForwardAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryRewindAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TrySkipNextAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TrySkipPreviousAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryChangeChannelUpAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryChangeChannelDownAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryTogglePlayPauseAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryChangeAutoRepeatModeAsync([in] Windows.Media.MediaPlaybackAutoRepeatMode requestedAutoRepeatMode, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryChangePlaybackRateAsync([in] DOUBLE requestedPlaybackRate, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryChangeShuffleActiveAsync([in] boolean requestedShuffleState, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT TryChangePlaybackPositionAsync([in] INT64 requestedPlaybackPosition, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                [eventadd] HRESULT TimelinePropertiesChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Control.GlobalSystemMediaTransportControlsSession*, Windows.Media.Control.TimelinePropertiesChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT TimelinePropertiesChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT PlaybackInfoChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Control.GlobalSystemMediaTransportControlsSession*, Windows.Media.Control.PlaybackInfoChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PlaybackInfoChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT MediaPropertiesChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Control.GlobalSystemMediaTransportControlsSession*, Windows.Media.Control.MediaPropertiesChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MediaPropertiesChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager)]
            [uuid(CACE8EAC-E86E-504A-AB31-5FF8FF1BCE49)]
            interface IGlobalSystemMediaTransportControlsSessionManager : IInspectable
            {
                HRESULT GetCurrentSession([out] [retval] Windows.Media.Control.GlobalSystemMediaTransportControlsSession** result);
                HRESULT GetSessions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Control.GlobalSystemMediaTransportControlsSession*>** result);
                [eventadd] HRESULT CurrentSessionChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager*, Windows.Media.Control.CurrentSessionChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT CurrentSessionChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT SessionsChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager*, Windows.Media.Control.SessionsChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT SessionsChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager)]
            [uuid(2050C4EE-11A0-57DE-AED7-C97C70338245)]
            interface IGlobalSystemMediaTransportControlsSessionManagerStatics : IInspectable
            {
                HRESULT RequestAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties)]
            [uuid(68856CF6-ADB4-54B2-AC16-05837907ACB6)]
            interface IGlobalSystemMediaTransportControlsSessionMediaProperties : IInspectable
            {
                [propget] HRESULT Title([out] [retval] HSTRING* value);
                [propget] HRESULT Subtitle([out] [retval] HSTRING* value);
                [propget] HRESULT AlbumArtist([out] [retval] HSTRING* value);
                [propget] HRESULT Artist([out] [retval] HSTRING* value);
                [propget] HRESULT AlbumTitle([out] [retval] HSTRING* value);
                [propget] HRESULT TrackNumber([out] [retval] INT32* value);
                [propget] HRESULT Genres([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT AlbumTrackCount([out] [retval] INT32* value);
                [propget] HRESULT PlaybackType([out] [retval] Windows.Foundation.IReference<Windows.Media.MediaPlaybackType>** value);
                [propget] HRESULT Thumbnail([out] [retval] Windows.Storage.Streams.IRandomAccessStreamReference** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls)]
            [uuid(6501A3E6-BC7A-503A-BB1B-68F158F3FB03)]
            interface IGlobalSystemMediaTransportControlsSessionPlaybackControls : IInspectable
            {
                [propget] HRESULT IsPlayEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsPauseEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsStopEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsRecordEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsFastForwardEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsRewindEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsNextEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsPreviousEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsChannelUpEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsChannelDownEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsPlayPauseToggleEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsShuffleEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsRepeatEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsPlaybackRateEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsPlaybackPositionEnabled([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackInfo)]
            [uuid(94B4B6CF-E8BA-51AD-87A7-C10ADE106127)]
            interface IGlobalSystemMediaTransportControlsSessionPlaybackInfo : IInspectable
            {
                [propget] HRESULT Controls([out] [retval] Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls** value);
                [propget] HRESULT PlaybackStatus([out] [retval] Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackStatus* value);
                [propget] HRESULT PlaybackType([out] [retval] Windows.Foundation.IReference<Windows.Media.MediaPlaybackType>** value);
                [propget] HRESULT AutoRepeatMode([out] [retval] Windows.Foundation.IReference<Windows.Media.MediaPlaybackAutoRepeatMode>** value);
                [propget] HRESULT PlaybackRate([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                [propget] HRESULT IsShuffleActive([out] [retval] Windows.Foundation.IReference<boolean>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.GlobalSystemMediaTransportControlsSessionTimelineProperties)]
            [uuid(EDE34136-6F25-588D-8ECF-EA5B6735AAA5)]
            interface IGlobalSystemMediaTransportControlsSessionTimelineProperties : IInspectable
            {
                [propget] HRESULT StartTime([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT EndTime([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT MinSeekTime([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT MaxSeekTime([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT LastUpdatedTime([out] [retval] Windows.Foundation.DateTime* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.MediaPropertiesChangedEventArgs)]
            [uuid(7D3741CB-ADF0-5CEF-91BA-CFABCDD77678)]
            interface IMediaPropertiesChangedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.PlaybackInfoChangedEventArgs)]
            [uuid(786756C2-BC0D-50A5-8807-054291FEF139)]
            interface IPlaybackInfoChangedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.SessionsChangedEventArgs)]
            [uuid(BBF0CD32-42C4-5A58-B317-F34BBFBD26E0)]
            interface ISessionsChangedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Media.Control.TimelinePropertiesChangedEventArgs)]
            [uuid(29033A2F-C923-5A77-BCAF-055FF415AD32)]
            interface ITimelinePropertiesChangedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            runtimeclass CurrentSessionChangedEventArgs
            {
                [default] interface Windows.Media.Control.ICurrentSessionChangedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            runtimeclass GlobalSystemMediaTransportControlsSession
            {
                [default] interface Windows.Media.Control.IGlobalSystemMediaTransportControlsSession;
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.Control.IGlobalSystemMediaTransportControlsSessionManagerStatics, Windows.Foundation.UniversalApiContract, 7.0)]
            [threading(both)]
            runtimeclass GlobalSystemMediaTransportControlsSessionManager
            {
                [default] interface Windows.Media.Control.IGlobalSystemMediaTransportControlsSessionManager;
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            runtimeclass GlobalSystemMediaTransportControlsSessionMediaProperties
            {
                [default] interface Windows.Media.Control.IGlobalSystemMediaTransportControlsSessionMediaProperties;
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            runtimeclass GlobalSystemMediaTransportControlsSessionPlaybackControls
            {
                [default] interface Windows.Media.Control.IGlobalSystemMediaTransportControlsSessionPlaybackControls;
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            runtimeclass GlobalSystemMediaTransportControlsSessionPlaybackInfo
            {
                [default] interface Windows.Media.Control.IGlobalSystemMediaTransportControlsSessionPlaybackInfo;
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            runtimeclass GlobalSystemMediaTransportControlsSessionTimelineProperties
            {
                [default] interface Windows.Media.Control.IGlobalSystemMediaTransportControlsSessionTimelineProperties;
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            runtimeclass MediaPropertiesChangedEventArgs
            {
                [default] interface Windows.Media.Control.IMediaPropertiesChangedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            runtimeclass PlaybackInfoChangedEventArgs
            {
                [default] interface Windows.Media.Control.IPlaybackInfoChangedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            runtimeclass SessionsChangedEventArgs
            {
                [default] interface Windows.Media.Control.ISessionsChangedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [marshaling_behavior(agile)]
            runtimeclass TimelinePropertiesChangedEventArgs
            {
                [default] interface Windows.Media.Control.ITimelinePropertiesChangedEventArgs;
            }
        }
    }
}
