# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.0.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.media as windows_media
import winrt.windows.storage.streams as windows_storage_streams

from winrt.windows.media.control import GlobalSystemMediaTransportControlsSessionPlaybackStatus

Self = typing.TypeVar('Self')

@typing.final
class CurrentSessionChangedEventArgs(winrt.system.Object):
    pass

@typing.final
class GlobalSystemMediaTransportControlsSession(winrt.system.Object):
    # Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackInfo Windows.Media.Control.GlobalSystemMediaTransportControlsSession::GetPlaybackInfo()
    def get_playback_info(self) -> GlobalSystemMediaTransportControlsSessionPlaybackInfo: ...
    # Windows.Media.Control.GlobalSystemMediaTransportControlsSessionTimelineProperties Windows.Media.Control.GlobalSystemMediaTransportControlsSession::GetTimelineProperties()
    def get_timeline_properties(self) -> GlobalSystemMediaTransportControlsSessionTimelineProperties: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryChangeAutoRepeatModeAsync(Windows.Media.MediaPlaybackAutoRepeatMode)
    def try_change_auto_repeat_mode_async(self, requested_auto_repeat_mode: windows_media.MediaPlaybackAutoRepeatMode, /) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryChangeChannelDownAsync()
    def try_change_channel_down_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryChangeChannelUpAsync()
    def try_change_channel_up_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryChangePlaybackPositionAsync(System.Int64)
    def try_change_playback_position_async(self, requested_playback_position: winrt.system.Int64, /) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryChangePlaybackRateAsync(System.Double)
    def try_change_playback_rate_async(self, requested_playback_rate: winrt.system.Double, /) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryChangeShuffleActiveAsync(System.Boolean)
    def try_change_shuffle_active_async(self, requested_shuffle_state: bool, /) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryFastForwardAsync()
    def try_fast_forward_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryGetMediaPropertiesAsync()
    def try_get_media_properties_async(self) -> windows_foundation.IAsyncOperation[typing.Optional[GlobalSystemMediaTransportControlsSessionMediaProperties]]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryPauseAsync()
    def try_pause_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryPlayAsync()
    def try_play_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryRecordAsync()
    def try_record_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryRewindAsync()
    def try_rewind_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TrySkipNextAsync()
    def try_skip_next_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TrySkipPreviousAsync()
    def try_skip_previous_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryStopAsync()
    def try_stop_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSession::TryTogglePlayPauseAsync()
    def try_toggle_play_pause_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Control.GlobalSystemMediaTransportControlsSession::add_MediaPropertiesChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Control.GlobalSystemMediaTransportControlsSession,Windows.Media.Control.MediaPropertiesChangedEventArgs>)
    def add_media_properties_changed(self, handler: windows_foundation.TypedEventHandler[GlobalSystemMediaTransportControlsSession, MediaPropertiesChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Control.GlobalSystemMediaTransportControlsSession::remove_MediaPropertiesChanged(Windows.Foundation.EventRegistrationToken)
    def remove_media_properties_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Control.GlobalSystemMediaTransportControlsSession::add_PlaybackInfoChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Control.GlobalSystemMediaTransportControlsSession,Windows.Media.Control.PlaybackInfoChangedEventArgs>)
    def add_playback_info_changed(self, handler: windows_foundation.TypedEventHandler[GlobalSystemMediaTransportControlsSession, PlaybackInfoChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Control.GlobalSystemMediaTransportControlsSession::remove_PlaybackInfoChanged(Windows.Foundation.EventRegistrationToken)
    def remove_playback_info_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Control.GlobalSystemMediaTransportControlsSession::add_TimelinePropertiesChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Control.GlobalSystemMediaTransportControlsSession,Windows.Media.Control.TimelinePropertiesChangedEventArgs>)
    def add_timeline_properties_changed(self, handler: windows_foundation.TypedEventHandler[GlobalSystemMediaTransportControlsSession, TimelinePropertiesChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Control.GlobalSystemMediaTransportControlsSession::remove_TimelinePropertiesChanged(Windows.Foundation.EventRegistrationToken)
    def remove_timeline_properties_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.String Windows.Media.Control.GlobalSystemMediaTransportControlsSession::get_SourceAppUserModelId()
    @_property
    def source_app_user_model_id(self) -> str: ...

@typing.final
class GlobalSystemMediaTransportControlsSessionManager_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager> Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager::RequestAsync()
    def request_async(cls) -> windows_foundation.IAsyncOperation[GlobalSystemMediaTransportControlsSessionManager]: ...

@typing.final
class GlobalSystemMediaTransportControlsSessionManager(winrt.system.Object, metaclass=GlobalSystemMediaTransportControlsSessionManager_Static):
    # Windows.Media.Control.GlobalSystemMediaTransportControlsSession Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager::GetCurrentSession()
    def get_current_session(self) -> GlobalSystemMediaTransportControlsSession: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Control.GlobalSystemMediaTransportControlsSession> Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager::GetSessions()
    def get_sessions(self) -> typing.Sequence[GlobalSystemMediaTransportControlsSession]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager::add_CurrentSessionChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager,Windows.Media.Control.CurrentSessionChangedEventArgs>)
    def add_current_session_changed(self, handler: windows_foundation.TypedEventHandler[GlobalSystemMediaTransportControlsSessionManager, CurrentSessionChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager::remove_CurrentSessionChanged(Windows.Foundation.EventRegistrationToken)
    def remove_current_session_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager::add_SessionsChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager,Windows.Media.Control.SessionsChangedEventArgs>)
    def add_sessions_changed(self, handler: windows_foundation.TypedEventHandler[GlobalSystemMediaTransportControlsSessionManager, SessionsChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager::remove_SessionsChanged(Windows.Foundation.EventRegistrationToken)
    def remove_sessions_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...

@typing.final
class GlobalSystemMediaTransportControlsSessionMediaProperties(winrt.system.Object):
    # System.String Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties::get_AlbumArtist()
    @_property
    def album_artist(self) -> str: ...
    # System.String Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties::get_AlbumTitle()
    @_property
    def album_title(self) -> str: ...
    # System.Int32 Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties::get_AlbumTrackCount()
    @_property
    def album_track_count(self) -> winrt.system.Int32: ...
    # System.String Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties::get_Artist()
    @_property
    def artist(self) -> str: ...
    # Windows.Foundation.Collections.IVectorView`1<System.String> Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties::get_Genres()
    @_property
    def genres(self) -> typing.Sequence[str]: ...
    # Windows.Foundation.IReference`1<Windows.Media.MediaPlaybackType> Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties::get_PlaybackType()
    @_property
    def playback_type(self) -> typing.Optional[windows_media.MediaPlaybackType]: ...
    # System.String Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties::get_Subtitle()
    @_property
    def subtitle(self) -> str: ...
    # Windows.Storage.Streams.IRandomAccessStreamReference Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties::get_Thumbnail()
    @_property
    def thumbnail(self) -> windows_storage_streams.IRandomAccessStreamReference: ...
    # System.String Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties::get_Title()
    @_property
    def title(self) -> str: ...
    # System.Int32 Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties::get_TrackNumber()
    @_property
    def track_number(self) -> winrt.system.Int32: ...

@typing.final
class GlobalSystemMediaTransportControlsSessionPlaybackControls(winrt.system.Object):
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsChannelDownEnabled()
    @_property
    def is_channel_down_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsChannelUpEnabled()
    @_property
    def is_channel_up_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsFastForwardEnabled()
    @_property
    def is_fast_forward_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsNextEnabled()
    @_property
    def is_next_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsPauseEnabled()
    @_property
    def is_pause_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsPlayEnabled()
    @_property
    def is_play_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsPlayPauseToggleEnabled()
    @_property
    def is_play_pause_toggle_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsPlaybackPositionEnabled()
    @_property
    def is_playback_position_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsPlaybackRateEnabled()
    @_property
    def is_playback_rate_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsPreviousEnabled()
    @_property
    def is_previous_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsRecordEnabled()
    @_property
    def is_record_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsRepeatEnabled()
    @_property
    def is_repeat_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsRewindEnabled()
    @_property
    def is_rewind_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsShuffleEnabled()
    @_property
    def is_shuffle_enabled(self) -> bool: ...
    # System.Boolean Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls::get_IsStopEnabled()
    @_property
    def is_stop_enabled(self) -> bool: ...

@typing.final
class GlobalSystemMediaTransportControlsSessionPlaybackInfo(winrt.system.Object):
    # Windows.Foundation.IReference`1<Windows.Media.MediaPlaybackAutoRepeatMode> Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackInfo::get_AutoRepeatMode()
    @_property
    def auto_repeat_mode(self) -> typing.Optional[windows_media.MediaPlaybackAutoRepeatMode]: ...
    # Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackInfo::get_Controls()
    @_property
    def controls(self) -> GlobalSystemMediaTransportControlsSessionPlaybackControls: ...
    # Windows.Foundation.IReference`1<System.Boolean> Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackInfo::get_IsShuffleActive()
    @_property
    def is_shuffle_active(self) -> typing.Optional[bool]: ...
    # Windows.Foundation.IReference`1<System.Double> Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackInfo::get_PlaybackRate()
    @_property
    def playback_rate(self) -> typing.Optional[winrt.system.Double]: ...
    # Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackStatus Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackInfo::get_PlaybackStatus()
    @_property
    def playback_status(self) -> GlobalSystemMediaTransportControlsSessionPlaybackStatus: ...
    # Windows.Foundation.IReference`1<Windows.Media.MediaPlaybackType> Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackInfo::get_PlaybackType()
    @_property
    def playback_type(self) -> typing.Optional[windows_media.MediaPlaybackType]: ...

@typing.final
class GlobalSystemMediaTransportControlsSessionTimelineProperties(winrt.system.Object):
    # Windows.Foundation.TimeSpan Windows.Media.Control.GlobalSystemMediaTransportControlsSessionTimelineProperties::get_EndTime()
    @_property
    def end_time(self) -> datetime.timedelta: ...
    # Windows.Foundation.DateTime Windows.Media.Control.GlobalSystemMediaTransportControlsSessionTimelineProperties::get_LastUpdatedTime()
    @_property
    def last_updated_time(self) -> datetime.datetime: ...
    # Windows.Foundation.TimeSpan Windows.Media.Control.GlobalSystemMediaTransportControlsSessionTimelineProperties::get_MaxSeekTime()
    @_property
    def max_seek_time(self) -> datetime.timedelta: ...
    # Windows.Foundation.TimeSpan Windows.Media.Control.GlobalSystemMediaTransportControlsSessionTimelineProperties::get_MinSeekTime()
    @_property
    def min_seek_time(self) -> datetime.timedelta: ...
    # Windows.Foundation.TimeSpan Windows.Media.Control.GlobalSystemMediaTransportControlsSessionTimelineProperties::get_Position()
    @_property
    def position(self) -> datetime.timedelta: ...
    # Windows.Foundation.TimeSpan Windows.Media.Control.GlobalSystemMediaTransportControlsSessionTimelineProperties::get_StartTime()
    @_property
    def start_time(self) -> datetime.timedelta: ...

@typing.final
class MediaPropertiesChangedEventArgs(winrt.system.Object):
    pass

@typing.final
class PlaybackInfoChangedEventArgs(winrt.system.Object):
    pass

@typing.final
class SessionsChangedEventArgs(winrt.system.Object):
    pass

@typing.final
class TimelinePropertiesChangedEventArgs(winrt.system.Object):
    pass

