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

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

import winrt._winrt
import winrt.system
import winrt.windows.devices.enumeration as windows_devices_enumeration
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.foundation.numerics as windows_foundation_numerics
import winrt.windows.graphics.directx.direct3d11 as windows_graphics_directx_direct3d11
import winrt.windows.media as windows_media
import winrt.windows.media.audio as windows_media_audio
import winrt.windows.media.casting as windows_media_casting
import winrt.windows.media.core as windows_media_core
import winrt.windows.media.mediaproperties as windows_media_mediaproperties
import winrt.windows.media.protection as windows_media_protection
import winrt.windows.storage as windows_storage
import winrt.windows.storage.streams as windows_storage_streams
import winrt.windows.ui.composition as windows_ui_composition

from winrt.windows.media.playback import AutoLoadedDisplayPropertyKind, FailedMediaStreamKind, MediaBreakInsertionMethod, MediaCommandEnablingRule, MediaPlaybackItemChangedReason, MediaPlaybackItemErrorCode, MediaPlaybackSessionVideoConstrictionReason, MediaPlaybackState, MediaPlayerAudioCategory, MediaPlayerAudioDeviceType, MediaPlayerError, MediaPlayerState, SphericalVideoProjectionMode, StereoscopicVideoRenderMode, TimedMetadataTrackPresentationMode

Self = typing.TypeVar('Self')

@typing.final
class BackgroundMediaPlayer_Static(winrt._winrt.IInspectable_Static):
    # System.Boolean Windows.Media.Playback.BackgroundMediaPlayer::IsMediaPlaying()
    # @deprecated("Use MediaPlayer instead of BackgroundMediaPlayer.  For more info, see MSDN.")
    def is_media_playing(cls) -> bool: ...
    # System.Void Windows.Media.Playback.BackgroundMediaPlayer::SendMessageToBackground(Windows.Foundation.Collections.ValueSet)
    # @deprecated("Use MediaPlayer instead of BackgroundMediaPlayer.  For more info, see MSDN.")
    def send_message_to_background(cls, value: windows_foundation_collections.ValueSet, /) -> None: ...
    # System.Void Windows.Media.Playback.BackgroundMediaPlayer::SendMessageToForeground(Windows.Foundation.Collections.ValueSet)
    # @deprecated("Use MediaPlayer instead of BackgroundMediaPlayer.  For more info, see MSDN.")
    def send_message_to_foreground(cls, value: windows_foundation_collections.ValueSet, /) -> None: ...
    # System.Void Windows.Media.Playback.BackgroundMediaPlayer::Shutdown()
    # @deprecated("Use MediaPlayer instead of BackgroundMediaPlayer.  For more info, see MSDN.")
    def shutdown(cls) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.BackgroundMediaPlayer::add_MessageReceivedFromBackground(Windows.Foundation.EventHandler`1<Windows.Media.Playback.MediaPlayerDataReceivedEventArgs>)
    # @deprecated("Use MediaPlayer instead of BackgroundMediaPlayer.  For more info, see MSDN.")
    def add_message_received_from_background(cls, value: windows_foundation.EventHandler[MediaPlayerDataReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.BackgroundMediaPlayer::remove_MessageReceivedFromBackground(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Use MediaPlayer instead of BackgroundMediaPlayer.  For more info, see MSDN.")
    def remove_message_received_from_background(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.BackgroundMediaPlayer::add_MessageReceivedFromForeground(Windows.Foundation.EventHandler`1<Windows.Media.Playback.MediaPlayerDataReceivedEventArgs>)
    # @deprecated("Use MediaPlayer instead of BackgroundMediaPlayer.  For more info, see MSDN.")
    def add_message_received_from_foreground(cls, value: windows_foundation.EventHandler[MediaPlayerDataReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.BackgroundMediaPlayer::remove_MessageReceivedFromForeground(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Use MediaPlayer instead of BackgroundMediaPlayer.  For more info, see MSDN.")
    def remove_message_received_from_foreground(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Media.Playback.MediaPlayer Windows.Media.Playback.BackgroundMediaPlayer::get_Current()
    @_property
    def current(cls) -> MediaPlayer: ...

@typing.final
class BackgroundMediaPlayer(winrt.system.Object, metaclass=BackgroundMediaPlayer_Static):
    pass

@typing.final
class CurrentMediaPlaybackItemChangedEventArgs(winrt.system.Object):
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.CurrentMediaPlaybackItemChangedEventArgs::get_NewItem()
    @_property
    def new_item(self) -> MediaPlaybackItem: ...
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.CurrentMediaPlaybackItemChangedEventArgs::get_OldItem()
    @_property
    def old_item(self) -> MediaPlaybackItem: ...
    # Windows.Media.Playback.MediaPlaybackItemChangedReason Windows.Media.Playback.CurrentMediaPlaybackItemChangedEventArgs::get_Reason()
    @_property
    def reason(self) -> MediaPlaybackItemChangedReason: ...

@typing.final
class MediaBreak(winrt.system.Object):
    @typing.overload
    def __new__(cls: typing.Type[Self], insertion_method: MediaBreakInsertionMethod) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], insertion_method: MediaBreakInsertionMethod, presentation_position: datetime.timedelta) -> Self: ...
    # System.Boolean Windows.Media.Playback.MediaBreak::get_CanStart()
    @_property
    def can_start(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaBreak::put_CanStart(System.Boolean)
    @can_start.setter
    def can_start(self, value: bool) -> None: ...
    # Windows.Foundation.Collections.ValueSet Windows.Media.Playback.MediaBreak::get_CustomProperties()
    @_property
    def custom_properties(self) -> windows_foundation_collections.ValueSet: ...
    # Windows.Media.Playback.MediaBreakInsertionMethod Windows.Media.Playback.MediaBreak::get_InsertionMethod()
    @_property
    def insertion_method(self) -> MediaBreakInsertionMethod: ...
    # Windows.Media.Playback.MediaPlaybackList Windows.Media.Playback.MediaBreak::get_PlaybackList()
    @_property
    def playback_list(self) -> MediaPlaybackList: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.Playback.MediaBreak::get_PresentationPosition()
    @_property
    def presentation_position(self) -> typing.Optional[datetime.timedelta]: ...

@typing.final
class MediaBreakEndedEventArgs(winrt.system.Object):
    # Windows.Media.Playback.MediaBreak Windows.Media.Playback.MediaBreakEndedEventArgs::get_MediaBreak()
    @_property
    def media_break(self) -> MediaBreak: ...

@typing.final
class MediaBreakManager(winrt.system.Object):
    # System.Void Windows.Media.Playback.MediaBreakManager::PlayBreak(Windows.Media.Playback.MediaBreak)
    def play_break(self, value: MediaBreak, /) -> None: ...
    # System.Void Windows.Media.Playback.MediaBreakManager::SkipCurrentBreak()
    def skip_current_break(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaBreakManager::add_BreakEnded(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaBreakManager,Windows.Media.Playback.MediaBreakEndedEventArgs>)
    def add_break_ended(self, handler: windows_foundation.TypedEventHandler[MediaBreakManager, MediaBreakEndedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaBreakManager::remove_BreakEnded(Windows.Foundation.EventRegistrationToken)
    def remove_break_ended(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaBreakManager::add_BreakSkipped(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaBreakManager,Windows.Media.Playback.MediaBreakSkippedEventArgs>)
    def add_break_skipped(self, handler: windows_foundation.TypedEventHandler[MediaBreakManager, MediaBreakSkippedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaBreakManager::remove_BreakSkipped(Windows.Foundation.EventRegistrationToken)
    def remove_break_skipped(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaBreakManager::add_BreakStarted(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaBreakManager,Windows.Media.Playback.MediaBreakStartedEventArgs>)
    def add_break_started(self, handler: windows_foundation.TypedEventHandler[MediaBreakManager, MediaBreakStartedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaBreakManager::remove_BreakStarted(Windows.Foundation.EventRegistrationToken)
    def remove_break_started(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaBreakManager::add_BreaksSeekedOver(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaBreakManager,Windows.Media.Playback.MediaBreakSeekedOverEventArgs>)
    def add_breaks_seeked_over(self, handler: windows_foundation.TypedEventHandler[MediaBreakManager, MediaBreakSeekedOverEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaBreakManager::remove_BreaksSeekedOver(Windows.Foundation.EventRegistrationToken)
    def remove_breaks_seeked_over(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Media.Playback.MediaBreak Windows.Media.Playback.MediaBreakManager::get_CurrentBreak()
    @_property
    def current_break(self) -> MediaBreak: ...
    # Windows.Media.Playback.MediaPlaybackSession Windows.Media.Playback.MediaBreakManager::get_PlaybackSession()
    @_property
    def playback_session(self) -> MediaPlaybackSession: ...

@typing.final
class MediaBreakSchedule(winrt.system.Object):
    # System.Void Windows.Media.Playback.MediaBreakSchedule::InsertMidrollBreak(Windows.Media.Playback.MediaBreak)
    def insert_midroll_break(self, media_break: MediaBreak, /) -> None: ...
    # System.Void Windows.Media.Playback.MediaBreakSchedule::RemoveMidrollBreak(Windows.Media.Playback.MediaBreak)
    def remove_midroll_break(self, media_break: MediaBreak, /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaBreakSchedule::add_ScheduleChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaBreakSchedule,System.Object>)
    def add_schedule_changed(self, handler: windows_foundation.TypedEventHandler[MediaBreakSchedule, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaBreakSchedule::remove_ScheduleChanged(Windows.Foundation.EventRegistrationToken)
    def remove_schedule_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Media.Playback.MediaBreak Windows.Media.Playback.MediaBreakSchedule::get_PrerollBreak()
    @_property
    def preroll_break(self) -> MediaBreak: ...
    # System.Void Windows.Media.Playback.MediaBreakSchedule::put_PrerollBreak(Windows.Media.Playback.MediaBreak)
    @preroll_break.setter
    def preroll_break(self, value: MediaBreak) -> None: ...
    # Windows.Media.Playback.MediaBreak Windows.Media.Playback.MediaBreakSchedule::get_PostrollBreak()
    @_property
    def postroll_break(self) -> MediaBreak: ...
    # System.Void Windows.Media.Playback.MediaBreakSchedule::put_PostrollBreak(Windows.Media.Playback.MediaBreak)
    @postroll_break.setter
    def postroll_break(self, value: MediaBreak) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Playback.MediaBreak> Windows.Media.Playback.MediaBreakSchedule::get_MidrollBreaks()
    @_property
    def midroll_breaks(self) -> typing.Sequence[MediaBreak]: ...
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.MediaBreakSchedule::get_PlaybackItem()
    @_property
    def playback_item(self) -> MediaPlaybackItem: ...

@typing.final
class MediaBreakSeekedOverEventArgs(winrt.system.Object):
    # Windows.Foundation.TimeSpan Windows.Media.Playback.MediaBreakSeekedOverEventArgs::get_NewPosition()
    @_property
    def new_position(self) -> datetime.timedelta: ...
    # Windows.Foundation.TimeSpan Windows.Media.Playback.MediaBreakSeekedOverEventArgs::get_OldPosition()
    @_property
    def old_position(self) -> datetime.timedelta: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Playback.MediaBreak> Windows.Media.Playback.MediaBreakSeekedOverEventArgs::get_SeekedOverBreaks()
    @_property
    def seeked_over_breaks(self) -> typing.Sequence[MediaBreak]: ...

@typing.final
class MediaBreakSkippedEventArgs(winrt.system.Object):
    # Windows.Media.Playback.MediaBreak Windows.Media.Playback.MediaBreakSkippedEventArgs::get_MediaBreak()
    @_property
    def media_break(self) -> MediaBreak: ...

@typing.final
class MediaBreakStartedEventArgs(winrt.system.Object):
    # Windows.Media.Playback.MediaBreak Windows.Media.Playback.MediaBreakStartedEventArgs::get_MediaBreak()
    @_property
    def media_break(self) -> MediaBreak: ...

@typing.final
class MediaItemDisplayProperties(winrt.system.Object):
    # System.Void Windows.Media.Playback.MediaItemDisplayProperties::ClearAll()
    def clear_all(self) -> None: ...
    # Windows.Media.MediaPlaybackType Windows.Media.Playback.MediaItemDisplayProperties::get_Type()
    @_property
    def type(self) -> windows_media.MediaPlaybackType: ...
    # System.Void Windows.Media.Playback.MediaItemDisplayProperties::put_Type(Windows.Media.MediaPlaybackType)
    @type.setter
    def type(self, value: windows_media.MediaPlaybackType) -> None: ...
    # Windows.Storage.Streams.RandomAccessStreamReference Windows.Media.Playback.MediaItemDisplayProperties::get_Thumbnail()
    @_property
    def thumbnail(self) -> windows_storage_streams.RandomAccessStreamReference: ...
    # System.Void Windows.Media.Playback.MediaItemDisplayProperties::put_Thumbnail(Windows.Storage.Streams.RandomAccessStreamReference)
    @thumbnail.setter
    def thumbnail(self, value: windows_storage_streams.RandomAccessStreamReference) -> None: ...
    # Windows.Media.MusicDisplayProperties Windows.Media.Playback.MediaItemDisplayProperties::get_MusicProperties()
    @_property
    def music_properties(self) -> windows_media.MusicDisplayProperties: ...
    # Windows.Media.VideoDisplayProperties Windows.Media.Playback.MediaItemDisplayProperties::get_VideoProperties()
    @_property
    def video_properties(self) -> windows_media.VideoDisplayProperties: ...

@typing.final
class MediaPlaybackAudioTrackList(winrt.system.Object, windows_media_core.ISingleSelectMediaTrackList, winrt._winrt.Sequence[windows_media_core.AudioTrack]):
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[windows_media_core.AudioTrack]: ...
    @typing.overload
    def __getitem__(self, index: typing.SupportsIndex) -> windows_media_core.AudioTrack: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winrt.system.Array[windows_media_core.AudioTrack]: ...
    # Windows.Foundation.Collections.IIterator`1<Windows.Media.Core.AudioTrack> Windows.Media.Playback.MediaPlaybackAudioTrackList::First()
    def first(self) -> windows_foundation_collections.IIterator[windows_media_core.AudioTrack]: ...
    # Windows.Media.Core.AudioTrack Windows.Media.Playback.MediaPlaybackAudioTrackList::GetAt(System.UInt32)
    def get_at(self, index: winrt.system.UInt32, /) -> windows_media_core.AudioTrack: ...
    # System.UInt32 Windows.Media.Playback.MediaPlaybackAudioTrackList::GetMany(System.UInt32,Windows.Media.Core.AudioTrack[])
    def get_many(self, start_index: winrt.system.UInt32, items: typing.Union[winrt.system.Array[windows_media_core.AudioTrack], winrt.system.WriteableBuffer], /) -> winrt.system.UInt32: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackAudioTrackList::IndexOf(Windows.Media.Core.AudioTrack,System.UInt32&)
    def index_of(self, value: windows_media_core.AudioTrack, /) -> typing.Tuple[bool, winrt.system.UInt32]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackAudioTrackList::add_SelectedIndexChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Core.ISingleSelectMediaTrackList,System.Object>)
    def add_selected_index_changed(self, handler: windows_foundation.TypedEventHandler[windows_media_core.ISingleSelectMediaTrackList, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackAudioTrackList::remove_SelectedIndexChanged(Windows.Foundation.EventRegistrationToken)
    def remove_selected_index_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.UInt32 Windows.Media.Playback.MediaPlaybackAudioTrackList::get_Size()
    @_property
    def size(self) -> winrt.system.UInt32: ...
    # System.Int32 Windows.Media.Playback.MediaPlaybackAudioTrackList::get_SelectedIndex()
    @_property
    def selected_index(self) -> winrt.system.Int32: ...
    # System.Void Windows.Media.Playback.MediaPlaybackAudioTrackList::put_SelectedIndex(System.Int32)
    @selected_index.setter
    def selected_index(self, value: winrt.system.Int32) -> None: ...

@typing.final
class MediaPlaybackCommandManager(winrt.system.Object):
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManager::add_AutoRepeatModeReceived(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManager,Windows.Media.Playback.MediaPlaybackCommandManagerAutoRepeatModeReceivedEventArgs>)
    def add_auto_repeat_mode_received(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerAutoRepeatModeReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::remove_AutoRepeatModeReceived(Windows.Foundation.EventRegistrationToken)
    def remove_auto_repeat_mode_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManager::add_FastForwardReceived(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManager,Windows.Media.Playback.MediaPlaybackCommandManagerFastForwardReceivedEventArgs>)
    def add_fast_forward_received(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerFastForwardReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::remove_FastForwardReceived(Windows.Foundation.EventRegistrationToken)
    def remove_fast_forward_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManager::add_NextReceived(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManager,Windows.Media.Playback.MediaPlaybackCommandManagerNextReceivedEventArgs>)
    def add_next_received(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerNextReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::remove_NextReceived(Windows.Foundation.EventRegistrationToken)
    def remove_next_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManager::add_PauseReceived(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManager,Windows.Media.Playback.MediaPlaybackCommandManagerPauseReceivedEventArgs>)
    def add_pause_received(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerPauseReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::remove_PauseReceived(Windows.Foundation.EventRegistrationToken)
    def remove_pause_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManager::add_PlayReceived(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManager,Windows.Media.Playback.MediaPlaybackCommandManagerPlayReceivedEventArgs>)
    def add_play_received(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerPlayReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::remove_PlayReceived(Windows.Foundation.EventRegistrationToken)
    def remove_play_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManager::add_PositionReceived(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManager,Windows.Media.Playback.MediaPlaybackCommandManagerPositionReceivedEventArgs>)
    def add_position_received(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerPositionReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::remove_PositionReceived(Windows.Foundation.EventRegistrationToken)
    def remove_position_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManager::add_PreviousReceived(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManager,Windows.Media.Playback.MediaPlaybackCommandManagerPreviousReceivedEventArgs>)
    def add_previous_received(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerPreviousReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::remove_PreviousReceived(Windows.Foundation.EventRegistrationToken)
    def remove_previous_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManager::add_RateReceived(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManager,Windows.Media.Playback.MediaPlaybackCommandManagerRateReceivedEventArgs>)
    def add_rate_received(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerRateReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::remove_RateReceived(Windows.Foundation.EventRegistrationToken)
    def remove_rate_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManager::add_RewindReceived(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManager,Windows.Media.Playback.MediaPlaybackCommandManagerRewindReceivedEventArgs>)
    def add_rewind_received(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerRewindReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::remove_RewindReceived(Windows.Foundation.EventRegistrationToken)
    def remove_rewind_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManager::add_ShuffleReceived(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManager,Windows.Media.Playback.MediaPlaybackCommandManagerShuffleReceivedEventArgs>)
    def add_shuffle_received(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerShuffleReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::remove_ShuffleReceived(Windows.Foundation.EventRegistrationToken)
    def remove_shuffle_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManager::get_IsEnabled()
    @_property
    def is_enabled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManager::put_IsEnabled(System.Boolean)
    @is_enabled.setter
    def is_enabled(self, value: bool) -> None: ...
    # Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior Windows.Media.Playback.MediaPlaybackCommandManager::get_AutoRepeatModeBehavior()
    @_property
    def auto_repeat_mode_behavior(self) -> MediaPlaybackCommandManagerCommandBehavior: ...
    # Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior Windows.Media.Playback.MediaPlaybackCommandManager::get_FastForwardBehavior()
    @_property
    def fast_forward_behavior(self) -> MediaPlaybackCommandManagerCommandBehavior: ...
    # Windows.Media.Playback.MediaPlayer Windows.Media.Playback.MediaPlaybackCommandManager::get_MediaPlayer()
    @_property
    def media_player(self) -> MediaPlayer: ...
    # Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior Windows.Media.Playback.MediaPlaybackCommandManager::get_NextBehavior()
    @_property
    def next_behavior(self) -> MediaPlaybackCommandManagerCommandBehavior: ...
    # Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior Windows.Media.Playback.MediaPlaybackCommandManager::get_PauseBehavior()
    @_property
    def pause_behavior(self) -> MediaPlaybackCommandManagerCommandBehavior: ...
    # Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior Windows.Media.Playback.MediaPlaybackCommandManager::get_PlayBehavior()
    @_property
    def play_behavior(self) -> MediaPlaybackCommandManagerCommandBehavior: ...
    # Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior Windows.Media.Playback.MediaPlaybackCommandManager::get_PositionBehavior()
    @_property
    def position_behavior(self) -> MediaPlaybackCommandManagerCommandBehavior: ...
    # Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior Windows.Media.Playback.MediaPlaybackCommandManager::get_PreviousBehavior()
    @_property
    def previous_behavior(self) -> MediaPlaybackCommandManagerCommandBehavior: ...
    # Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior Windows.Media.Playback.MediaPlaybackCommandManager::get_RateBehavior()
    @_property
    def rate_behavior(self) -> MediaPlaybackCommandManagerCommandBehavior: ...
    # Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior Windows.Media.Playback.MediaPlaybackCommandManager::get_RewindBehavior()
    @_property
    def rewind_behavior(self) -> MediaPlaybackCommandManagerCommandBehavior: ...
    # Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior Windows.Media.Playback.MediaPlaybackCommandManager::get_ShuffleBehavior()
    @_property
    def shuffle_behavior(self) -> MediaPlaybackCommandManagerCommandBehavior: ...

@typing.final
class MediaPlaybackCommandManagerAutoRepeatModeReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Media.Playback.MediaPlaybackCommandManagerAutoRepeatModeReceivedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerAutoRepeatModeReceivedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerAutoRepeatModeReceivedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...
    # Windows.Media.MediaPlaybackAutoRepeatMode Windows.Media.Playback.MediaPlaybackCommandManagerAutoRepeatModeReceivedEventArgs::get_AutoRepeatMode()
    @_property
    def auto_repeat_mode(self) -> windows_media.MediaPlaybackAutoRepeatMode: ...

@typing.final
class MediaPlaybackCommandManagerCommandBehavior(winrt.system.Object):
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior::add_IsEnabledChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior,System.Object>)
    def add_is_enabled_changed(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackCommandManagerCommandBehavior, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior::remove_IsEnabledChanged(Windows.Foundation.EventRegistrationToken)
    def remove_is_enabled_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Media.Playback.MediaCommandEnablingRule Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior::get_EnablingRule()
    @_property
    def enabling_rule(self) -> MediaCommandEnablingRule: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior::put_EnablingRule(Windows.Media.Playback.MediaCommandEnablingRule)
    @enabling_rule.setter
    def enabling_rule(self, value: MediaCommandEnablingRule) -> None: ...
    # Windows.Media.Playback.MediaPlaybackCommandManager Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior::get_CommandManager()
    @_property
    def command_manager(self) -> MediaPlaybackCommandManager: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerCommandBehavior::get_IsEnabled()
    @_property
    def is_enabled(self) -> bool: ...

@typing.final
class MediaPlaybackCommandManagerFastForwardReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Media.Playback.MediaPlaybackCommandManagerFastForwardReceivedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerFastForwardReceivedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerFastForwardReceivedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...

@typing.final
class MediaPlaybackCommandManagerNextReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Media.Playback.MediaPlaybackCommandManagerNextReceivedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerNextReceivedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerNextReceivedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...

@typing.final
class MediaPlaybackCommandManagerPauseReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Media.Playback.MediaPlaybackCommandManagerPauseReceivedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerPauseReceivedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerPauseReceivedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...

@typing.final
class MediaPlaybackCommandManagerPlayReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Media.Playback.MediaPlaybackCommandManagerPlayReceivedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerPlayReceivedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerPlayReceivedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...

@typing.final
class MediaPlaybackCommandManagerPositionReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Media.Playback.MediaPlaybackCommandManagerPositionReceivedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerPositionReceivedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerPositionReceivedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Playback.MediaPlaybackCommandManagerPositionReceivedEventArgs::get_Position()
    @_property
    def position(self) -> datetime.timedelta: ...

@typing.final
class MediaPlaybackCommandManagerPreviousReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Media.Playback.MediaPlaybackCommandManagerPreviousReceivedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerPreviousReceivedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerPreviousReceivedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...

@typing.final
class MediaPlaybackCommandManagerRateReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Media.Playback.MediaPlaybackCommandManagerRateReceivedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerRateReceivedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerRateReceivedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...
    # System.Double Windows.Media.Playback.MediaPlaybackCommandManagerRateReceivedEventArgs::get_PlaybackRate()
    @_property
    def playback_rate(self) -> winrt.system.Double: ...

@typing.final
class MediaPlaybackCommandManagerRewindReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Media.Playback.MediaPlaybackCommandManagerRewindReceivedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerRewindReceivedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerRewindReceivedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...

@typing.final
class MediaPlaybackCommandManagerShuffleReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Media.Playback.MediaPlaybackCommandManagerShuffleReceivedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerShuffleReceivedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackCommandManagerShuffleReceivedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackCommandManagerShuffleReceivedEventArgs::get_IsShuffleRequested()
    @_property
    def is_shuffle_requested(self) -> bool: ...

@typing.final
class MediaPlaybackItem_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.MediaPlaybackItem::FindFromMediaSource(Windows.Media.Core.MediaSource)
    def find_from_media_source(cls, source: windows_media_core.MediaSource, /) -> MediaPlaybackItem: ...

@typing.final
class MediaPlaybackItem(winrt.system.Object, IMediaPlaybackSource, metaclass=MediaPlaybackItem_Static):
    @typing.overload
    def __new__(cls: typing.Type[Self], source: windows_media_core.MediaSource, start_time: datetime.timedelta) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], source: windows_media_core.MediaSource, start_time: datetime.timedelta, duration_limit: datetime.timedelta) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], source: windows_media_core.MediaSource) -> Self: ...
    # System.Void Windows.Media.Playback.MediaPlaybackItem::ApplyDisplayProperties(Windows.Media.Playback.MediaItemDisplayProperties)
    def apply_display_properties(self, value: MediaItemDisplayProperties, /) -> None: ...
    # Windows.Media.Playback.MediaItemDisplayProperties Windows.Media.Playback.MediaPlaybackItem::GetDisplayProperties()
    def get_display_properties(self) -> MediaItemDisplayProperties: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackItem::add_AudioTracksChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackItem,Windows.Foundation.Collections.IVectorChangedEventArgs>)
    def add_audio_tracks_changed(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackItem, windows_foundation_collections.IVectorChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackItem::remove_AudioTracksChanged(Windows.Foundation.EventRegistrationToken)
    def remove_audio_tracks_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackItem::add_TimedMetadataTracksChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackItem,Windows.Foundation.Collections.IVectorChangedEventArgs>)
    def add_timed_metadata_tracks_changed(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackItem, windows_foundation_collections.IVectorChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackItem::remove_TimedMetadataTracksChanged(Windows.Foundation.EventRegistrationToken)
    def remove_timed_metadata_tracks_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackItem::add_VideoTracksChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackItem,Windows.Foundation.Collections.IVectorChangedEventArgs>)
    def add_video_tracks_changed(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackItem, windows_foundation_collections.IVectorChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackItem::remove_VideoTracksChanged(Windows.Foundation.EventRegistrationToken)
    def remove_video_tracks_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Media.Playback.MediaPlaybackAudioTrackList Windows.Media.Playback.MediaPlaybackItem::get_AudioTracks()
    @_property
    def audio_tracks(self) -> MediaPlaybackAudioTrackList: ...
    # Windows.Media.Core.MediaSource Windows.Media.Playback.MediaPlaybackItem::get_Source()
    @_property
    def source(self) -> windows_media_core.MediaSource: ...
    # Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList Windows.Media.Playback.MediaPlaybackItem::get_TimedMetadataTracks()
    @_property
    def timed_metadata_tracks(self) -> MediaPlaybackTimedMetadataTrackList: ...
    # Windows.Media.Playback.MediaPlaybackVideoTrackList Windows.Media.Playback.MediaPlaybackItem::get_VideoTracks()
    @_property
    def video_tracks(self) -> MediaPlaybackVideoTrackList: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackItem::get_CanSkip()
    @_property
    def can_skip(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackItem::put_CanSkip(System.Boolean)
    @can_skip.setter
    def can_skip(self, value: bool) -> None: ...
    # Windows.Media.Playback.MediaBreakSchedule Windows.Media.Playback.MediaPlaybackItem::get_BreakSchedule()
    @_property
    def break_schedule(self) -> MediaBreakSchedule: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.Playback.MediaPlaybackItem::get_DurationLimit()
    @_property
    def duration_limit(self) -> typing.Optional[datetime.timedelta]: ...
    # Windows.Foundation.TimeSpan Windows.Media.Playback.MediaPlaybackItem::get_StartTime()
    @_property
    def start_time(self) -> datetime.timedelta: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackItem::get_IsDisabledInPlaybackList()
    @_property
    def is_disabled_in_playback_list(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackItem::put_IsDisabledInPlaybackList(System.Boolean)
    @is_disabled_in_playback_list.setter
    def is_disabled_in_playback_list(self, value: bool) -> None: ...
    # Windows.Media.Playback.AutoLoadedDisplayPropertyKind Windows.Media.Playback.MediaPlaybackItem::get_AutoLoadedDisplayProperties()
    @_property
    def auto_loaded_display_properties(self) -> AutoLoadedDisplayPropertyKind: ...
    # System.Void Windows.Media.Playback.MediaPlaybackItem::put_AutoLoadedDisplayProperties(Windows.Media.Playback.AutoLoadedDisplayPropertyKind)
    @auto_loaded_display_properties.setter
    def auto_loaded_display_properties(self, value: AutoLoadedDisplayPropertyKind) -> None: ...
    # System.Double Windows.Media.Playback.MediaPlaybackItem::get_TotalDownloadProgress()
    @_property
    def total_download_progress(self) -> winrt.system.Double: ...

@typing.final
class MediaPlaybackItemError(winrt.system.Object):
    # Windows.Media.Playback.MediaPlaybackItemErrorCode Windows.Media.Playback.MediaPlaybackItemError::get_ErrorCode()
    @_property
    def error_code(self) -> MediaPlaybackItemErrorCode: ...
    # Windows.Foundation.HResult Windows.Media.Playback.MediaPlaybackItemError::get_ExtendedError()
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class MediaPlaybackItemFailedEventArgs(winrt.system.Object):
    # Windows.Media.Playback.MediaPlaybackItemError Windows.Media.Playback.MediaPlaybackItemFailedEventArgs::get_Error()
    @_property
    def error(self) -> MediaPlaybackItemError: ...
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.MediaPlaybackItemFailedEventArgs::get_Item()
    @_property
    def item(self) -> MediaPlaybackItem: ...

@typing.final
class MediaPlaybackItemOpenedEventArgs(winrt.system.Object):
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.MediaPlaybackItemOpenedEventArgs::get_Item()
    @_property
    def item(self) -> MediaPlaybackItem: ...

@typing.final
class MediaPlaybackList(winrt.system.Object, IMediaPlaybackSource):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.MediaPlaybackList::MoveNext()
    def move_next(self) -> MediaPlaybackItem: ...
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.MediaPlaybackList::MovePrevious()
    def move_previous(self) -> MediaPlaybackItem: ...
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.MediaPlaybackList::MoveTo(System.UInt32)
    def move_to(self, item_index: winrt.system.UInt32, /) -> MediaPlaybackItem: ...
    # System.Void Windows.Media.Playback.MediaPlaybackList::SetShuffledItems(Windows.Foundation.Collections.IIterable`1<Windows.Media.Playback.MediaPlaybackItem>)
    def set_shuffled_items(self, value: typing.Iterable[MediaPlaybackItem], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackList::add_CurrentItemChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackList,Windows.Media.Playback.CurrentMediaPlaybackItemChangedEventArgs>)
    def add_current_item_changed(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackList, CurrentMediaPlaybackItemChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackList::remove_CurrentItemChanged(Windows.Foundation.EventRegistrationToken)
    def remove_current_item_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackList::add_ItemFailed(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackList,Windows.Media.Playback.MediaPlaybackItemFailedEventArgs>)
    def add_item_failed(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackList, MediaPlaybackItemFailedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackList::remove_ItemFailed(Windows.Foundation.EventRegistrationToken)
    def remove_item_failed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackList::add_ItemOpened(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackList,Windows.Media.Playback.MediaPlaybackItemOpenedEventArgs>)
    def add_item_opened(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackList, MediaPlaybackItemOpenedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackList::remove_ItemOpened(Windows.Foundation.EventRegistrationToken)
    def remove_item_opened(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackList::get_ShuffleEnabled()
    @_property
    def shuffle_enabled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackList::put_ShuffleEnabled(System.Boolean)
    @shuffle_enabled.setter
    def shuffle_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackList::get_AutoRepeatEnabled()
    @_property
    def auto_repeat_enabled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackList::put_AutoRepeatEnabled(System.Boolean)
    @auto_repeat_enabled.setter
    def auto_repeat_enabled(self, value: bool) -> None: ...
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.MediaPlaybackList::get_CurrentItem()
    @_property
    def current_item(self) -> MediaPlaybackItem: ...
    # System.UInt32 Windows.Media.Playback.MediaPlaybackList::get_CurrentItemIndex()
    @_property
    def current_item_index(self) -> winrt.system.UInt32: ...
    # Windows.Foundation.Collections.IObservableVector`1<Windows.Media.Playback.MediaPlaybackItem> Windows.Media.Playback.MediaPlaybackList::get_Items()
    @_property
    def items(self) -> windows_foundation_collections.IObservableVector[MediaPlaybackItem]: ...
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.MediaPlaybackList::get_StartingItem()
    @_property
    def starting_item(self) -> MediaPlaybackItem: ...
    # System.Void Windows.Media.Playback.MediaPlaybackList::put_StartingItem(Windows.Media.Playback.MediaPlaybackItem)
    @starting_item.setter
    def starting_item(self, value: MediaPlaybackItem) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.Playback.MediaPlaybackList::get_MaxPrefetchTime()
    @_property
    def max_prefetch_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.Playback.MediaPlaybackList::put_MaxPrefetchTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @max_prefetch_time.setter
    def max_prefetch_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Playback.MediaPlaybackItem> Windows.Media.Playback.MediaPlaybackList::get_ShuffledItems()
    @_property
    def shuffled_items(self) -> typing.Sequence[MediaPlaybackItem]: ...
    # Windows.Foundation.IReference`1<System.UInt32> Windows.Media.Playback.MediaPlaybackList::get_MaxPlayedItemsToKeepOpen()
    @_property
    def max_played_items_to_keep_open(self) -> typing.Optional[winrt.system.UInt32]: ...
    # System.Void Windows.Media.Playback.MediaPlaybackList::put_MaxPlayedItemsToKeepOpen(Windows.Foundation.IReference`1<System.UInt32>)
    @max_played_items_to_keep_open.setter
    def max_played_items_to_keep_open(self, value: typing.Optional[winrt.system.UInt32]) -> None: ...

@typing.final
class MediaPlaybackSession(winrt.system.Object):
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.MediaTimeRange> Windows.Media.Playback.MediaPlaybackSession::GetBufferedRanges()
    def get_buffered_ranges(self) -> typing.Sequence[windows_media.MediaTimeRange]: ...
    # Windows.Media.Playback.MediaPlaybackSessionOutputDegradationPolicyState Windows.Media.Playback.MediaPlaybackSession::GetOutputDegradationPolicyState()
    def get_output_degradation_policy_state(self) -> MediaPlaybackSessionOutputDegradationPolicyState: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.MediaTimeRange> Windows.Media.Playback.MediaPlaybackSession::GetPlayedRanges()
    def get_played_ranges(self) -> typing.Sequence[windows_media.MediaTimeRange]: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.MediaTimeRange> Windows.Media.Playback.MediaPlaybackSession::GetSeekableRanges()
    def get_seekable_ranges(self) -> typing.Sequence[windows_media.MediaTimeRange]: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackSession::IsSupportedPlaybackRateRange(System.Double,System.Double)
    def is_supported_playback_rate_range(self, rate1: winrt.system.Double, rate2: winrt.system.Double, /) -> bool: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_BufferingEnded(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_buffering_ended(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_BufferingEnded(Windows.Foundation.EventRegistrationToken)
    def remove_buffering_ended(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_BufferingProgressChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_buffering_progress_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_BufferingProgressChanged(Windows.Foundation.EventRegistrationToken)
    def remove_buffering_progress_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_BufferingStarted(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_buffering_started(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_BufferingStarted(Windows.Foundation.EventRegistrationToken)
    def remove_buffering_started(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_DownloadProgressChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_download_progress_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_DownloadProgressChanged(Windows.Foundation.EventRegistrationToken)
    def remove_download_progress_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_NaturalDurationChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_natural_duration_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_NaturalDurationChanged(Windows.Foundation.EventRegistrationToken)
    def remove_natural_duration_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_NaturalVideoSizeChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_natural_video_size_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_NaturalVideoSizeChanged(Windows.Foundation.EventRegistrationToken)
    def remove_natural_video_size_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_PlaybackRateChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_playback_rate_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_PlaybackRateChanged(Windows.Foundation.EventRegistrationToken)
    def remove_playback_rate_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_PlaybackStateChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_playback_state_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_PlaybackStateChanged(Windows.Foundation.EventRegistrationToken)
    def remove_playback_state_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_PositionChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_position_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_PositionChanged(Windows.Foundation.EventRegistrationToken)
    def remove_position_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_SeekCompleted(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_seek_completed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_SeekCompleted(Windows.Foundation.EventRegistrationToken)
    def remove_seek_completed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_BufferedRangesChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_buffered_ranges_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_BufferedRangesChanged(Windows.Foundation.EventRegistrationToken)
    def remove_buffered_ranges_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_PlayedRangesChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_played_ranges_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_PlayedRangesChanged(Windows.Foundation.EventRegistrationToken)
    def remove_played_ranges_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_SeekableRangesChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_seekable_ranges_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_SeekableRangesChanged(Windows.Foundation.EventRegistrationToken)
    def remove_seekable_ranges_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackSession::add_SupportedPlaybackRatesChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackSession,System.Object>)
    def add_supported_playback_rates_changed(self, value: windows_foundation.TypedEventHandler[MediaPlaybackSession, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::remove_SupportedPlaybackRatesChanged(Windows.Foundation.EventRegistrationToken)
    def remove_supported_playback_rates_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Media.MediaProperties.StereoscopicVideoPackingMode Windows.Media.Playback.MediaPlaybackSession::get_StereoscopicVideoPackingMode()
    @_property
    def stereoscopic_video_packing_mode(self) -> windows_media_mediaproperties.StereoscopicVideoPackingMode: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::put_StereoscopicVideoPackingMode(Windows.Media.MediaProperties.StereoscopicVideoPackingMode)
    @stereoscopic_video_packing_mode.setter
    def stereoscopic_video_packing_mode(self, value: windows_media_mediaproperties.StereoscopicVideoPackingMode) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Playback.MediaPlaybackSession::get_Position()
    @_property
    def position(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::put_Position(Windows.Foundation.TimeSpan)
    @position.setter
    def position(self, value: datetime.timedelta) -> None: ...
    # System.Double Windows.Media.Playback.MediaPlaybackSession::get_PlaybackRate()
    @_property
    def playback_rate(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::put_PlaybackRate(System.Double)
    @playback_rate.setter
    def playback_rate(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.Rect Windows.Media.Playback.MediaPlaybackSession::get_NormalizedSourceRect()
    @_property
    def normalized_source_rect(self) -> windows_foundation.Rect: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::put_NormalizedSourceRect(Windows.Foundation.Rect)
    @normalized_source_rect.setter
    def normalized_source_rect(self, value: typing.Union[windows_foundation.Rect, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single, winrt.system.Single]]) -> None: ...
    # System.Double Windows.Media.Playback.MediaPlaybackSession::get_BufferingProgress()
    @_property
    def buffering_progress(self) -> winrt.system.Double: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackSession::get_CanPause()
    @_property
    def can_pause(self) -> bool: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackSession::get_CanSeek()
    @_property
    def can_seek(self) -> bool: ...
    # System.Double Windows.Media.Playback.MediaPlaybackSession::get_DownloadProgress()
    @_property
    def download_progress(self) -> winrt.system.Double: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackSession::get_IsProtected()
    @_property
    def is_protected(self) -> bool: ...
    # Windows.Media.Playback.MediaPlayer Windows.Media.Playback.MediaPlaybackSession::get_MediaPlayer()
    @_property
    def media_player(self) -> MediaPlayer: ...
    # Windows.Foundation.TimeSpan Windows.Media.Playback.MediaPlaybackSession::get_NaturalDuration()
    @_property
    def natural_duration(self) -> datetime.timedelta: ...
    # System.UInt32 Windows.Media.Playback.MediaPlaybackSession::get_NaturalVideoHeight()
    @_property
    def natural_video_height(self) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.Media.Playback.MediaPlaybackSession::get_NaturalVideoWidth()
    @_property
    def natural_video_width(self) -> winrt.system.UInt32: ...
    # Windows.Media.Playback.MediaPlaybackState Windows.Media.Playback.MediaPlaybackSession::get_PlaybackState()
    @_property
    def playback_state(self) -> MediaPlaybackState: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackSession::get_IsMirroring()
    @_property
    def is_mirroring(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::put_IsMirroring(System.Boolean)
    @is_mirroring.setter
    def is_mirroring(self, value: bool) -> None: ...
    # Windows.Media.Playback.MediaPlaybackSphericalVideoProjection Windows.Media.Playback.MediaPlaybackSession::get_SphericalVideoProjection()
    @_property
    def spherical_video_projection(self) -> MediaPlaybackSphericalVideoProjection: ...
    # Windows.Media.MediaProperties.MediaRotation Windows.Media.Playback.MediaPlaybackSession::get_PlaybackRotation()
    @_property
    def playback_rotation(self) -> windows_media_mediaproperties.MediaRotation: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSession::put_PlaybackRotation(Windows.Media.MediaProperties.MediaRotation)
    @playback_rotation.setter
    def playback_rotation(self, value: windows_media_mediaproperties.MediaRotation) -> None: ...

@typing.final
class MediaPlaybackSessionBufferingStartedEventArgs(winrt.system.Object):
    # System.Boolean Windows.Media.Playback.MediaPlaybackSessionBufferingStartedEventArgs::get_IsPlaybackInterruption()
    @_property
    def is_playback_interruption(self) -> bool: ...

@typing.final
class MediaPlaybackSessionOutputDegradationPolicyState(winrt.system.Object):
    # Windows.Media.Playback.MediaPlaybackSessionVideoConstrictionReason Windows.Media.Playback.MediaPlaybackSessionOutputDegradationPolicyState::get_VideoConstrictionReason()
    @_property
    def video_constriction_reason(self) -> MediaPlaybackSessionVideoConstrictionReason: ...

@typing.final
class MediaPlaybackSphericalVideoProjection(winrt.system.Object):
    # Windows.Foundation.Numerics.Quaternion Windows.Media.Playback.MediaPlaybackSphericalVideoProjection::get_ViewOrientation()
    @_property
    def view_orientation(self) -> windows_foundation_numerics.Quaternion: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSphericalVideoProjection::put_ViewOrientation(Windows.Foundation.Numerics.Quaternion)
    @view_orientation.setter
    def view_orientation(self, value: typing.Union[windows_foundation_numerics.Quaternion, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single, winrt.system.Single]]) -> None: ...
    # Windows.Media.Playback.SphericalVideoProjectionMode Windows.Media.Playback.MediaPlaybackSphericalVideoProjection::get_ProjectionMode()
    @_property
    def projection_mode(self) -> SphericalVideoProjectionMode: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSphericalVideoProjection::put_ProjectionMode(Windows.Media.Playback.SphericalVideoProjectionMode)
    @projection_mode.setter
    def projection_mode(self, value: SphericalVideoProjectionMode) -> None: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackSphericalVideoProjection::get_IsEnabled()
    @_property
    def is_enabled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSphericalVideoProjection::put_IsEnabled(System.Boolean)
    @is_enabled.setter
    def is_enabled(self, value: bool) -> None: ...
    # System.Double Windows.Media.Playback.MediaPlaybackSphericalVideoProjection::get_HorizontalFieldOfViewInDegrees()
    @_property
    def horizontal_field_of_view_in_degrees(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSphericalVideoProjection::put_HorizontalFieldOfViewInDegrees(System.Double)
    @horizontal_field_of_view_in_degrees.setter
    def horizontal_field_of_view_in_degrees(self, value: winrt.system.Double) -> None: ...
    # Windows.Media.MediaProperties.SphericalVideoFrameFormat Windows.Media.Playback.MediaPlaybackSphericalVideoProjection::get_FrameFormat()
    @_property
    def frame_format(self) -> windows_media_mediaproperties.SphericalVideoFrameFormat: ...
    # System.Void Windows.Media.Playback.MediaPlaybackSphericalVideoProjection::put_FrameFormat(Windows.Media.MediaProperties.SphericalVideoFrameFormat)
    @frame_format.setter
    def frame_format(self, value: windows_media_mediaproperties.SphericalVideoFrameFormat) -> None: ...

@typing.final
class MediaPlaybackTimedMetadataTrackList(winrt.system.Object, winrt._winrt.Sequence[windows_media_core.TimedMetadataTrack]):
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[windows_media_core.TimedMetadataTrack]: ...
    @typing.overload
    def __getitem__(self, index: typing.SupportsIndex) -> windows_media_core.TimedMetadataTrack: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winrt.system.Array[windows_media_core.TimedMetadataTrack]: ...
    # Windows.Foundation.Collections.IIterator`1<Windows.Media.Core.TimedMetadataTrack> Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList::First()
    def first(self) -> windows_foundation_collections.IIterator[windows_media_core.TimedMetadataTrack]: ...
    # Windows.Media.Core.TimedMetadataTrack Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList::GetAt(System.UInt32)
    def get_at(self, index: winrt.system.UInt32, /) -> windows_media_core.TimedMetadataTrack: ...
    # System.UInt32 Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList::GetMany(System.UInt32,Windows.Media.Core.TimedMetadataTrack[])
    def get_many(self, start_index: winrt.system.UInt32, items: typing.Union[winrt.system.Array[windows_media_core.TimedMetadataTrack], winrt.system.WriteableBuffer], /) -> winrt.system.UInt32: ...
    # Windows.Media.Playback.TimedMetadataTrackPresentationMode Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList::GetPresentationMode(System.UInt32)
    def get_presentation_mode(self, index: winrt.system.UInt32, /) -> TimedMetadataTrackPresentationMode: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList::IndexOf(Windows.Media.Core.TimedMetadataTrack,System.UInt32&)
    def index_of(self, value: windows_media_core.TimedMetadataTrack, /) -> typing.Tuple[bool, winrt.system.UInt32]: ...
    # System.Void Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList::SetPresentationMode(System.UInt32,Windows.Media.Playback.TimedMetadataTrackPresentationMode)
    def set_presentation_mode(self, index: winrt.system.UInt32, value: TimedMetadataTrackPresentationMode, /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList::add_PresentationModeChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList,Windows.Media.Playback.TimedMetadataPresentationModeChangedEventArgs>)
    def add_presentation_mode_changed(self, handler: windows_foundation.TypedEventHandler[MediaPlaybackTimedMetadataTrackList, TimedMetadataPresentationModeChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList::remove_PresentationModeChanged(Windows.Foundation.EventRegistrationToken)
    def remove_presentation_mode_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.UInt32 Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList::get_Size()
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class MediaPlaybackVideoTrackList(winrt.system.Object, windows_media_core.ISingleSelectMediaTrackList, winrt._winrt.Sequence[windows_media_core.VideoTrack]):
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[windows_media_core.VideoTrack]: ...
    @typing.overload
    def __getitem__(self, index: typing.SupportsIndex) -> windows_media_core.VideoTrack: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winrt.system.Array[windows_media_core.VideoTrack]: ...
    # Windows.Foundation.Collections.IIterator`1<Windows.Media.Core.VideoTrack> Windows.Media.Playback.MediaPlaybackVideoTrackList::First()
    def first(self) -> windows_foundation_collections.IIterator[windows_media_core.VideoTrack]: ...
    # Windows.Media.Core.VideoTrack Windows.Media.Playback.MediaPlaybackVideoTrackList::GetAt(System.UInt32)
    def get_at(self, index: winrt.system.UInt32, /) -> windows_media_core.VideoTrack: ...
    # System.UInt32 Windows.Media.Playback.MediaPlaybackVideoTrackList::GetMany(System.UInt32,Windows.Media.Core.VideoTrack[])
    def get_many(self, start_index: winrt.system.UInt32, items: typing.Union[winrt.system.Array[windows_media_core.VideoTrack], winrt.system.WriteableBuffer], /) -> winrt.system.UInt32: ...
    # System.Boolean Windows.Media.Playback.MediaPlaybackVideoTrackList::IndexOf(Windows.Media.Core.VideoTrack,System.UInt32&)
    def index_of(self, value: windows_media_core.VideoTrack, /) -> typing.Tuple[bool, winrt.system.UInt32]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlaybackVideoTrackList::add_SelectedIndexChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Core.ISingleSelectMediaTrackList,System.Object>)
    def add_selected_index_changed(self, handler: windows_foundation.TypedEventHandler[windows_media_core.ISingleSelectMediaTrackList, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlaybackVideoTrackList::remove_SelectedIndexChanged(Windows.Foundation.EventRegistrationToken)
    def remove_selected_index_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.UInt32 Windows.Media.Playback.MediaPlaybackVideoTrackList::get_Size()
    @_property
    def size(self) -> winrt.system.UInt32: ...
    # System.Int32 Windows.Media.Playback.MediaPlaybackVideoTrackList::get_SelectedIndex()
    @_property
    def selected_index(self) -> winrt.system.Int32: ...
    # System.Void Windows.Media.Playback.MediaPlaybackVideoTrackList::put_SelectedIndex(System.Int32)
    @selected_index.setter
    def selected_index(self, value: winrt.system.Int32) -> None: ...

@typing.final
class MediaPlayer(winrt.system.Object, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # System.Void Windows.Media.Playback.MediaPlayer::AddAudioEffect(System.String,System.Boolean,Windows.Foundation.Collections.IPropertySet)
    def add_audio_effect(self, activatable_class_id: str, effect_optional: bool, configuration: windows_foundation_collections.IPropertySet, /) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::AddVideoEffect(System.String,System.Boolean,Windows.Foundation.Collections.IPropertySet)
    def add_video_effect(self, activatable_class_id: str, effect_optional: bool, effect_configuration: windows_foundation_collections.IPropertySet, /) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::Close()
    def close(self) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::CopyFrameToStereoscopicVideoSurfaces(Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface,Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface)
    def copy_frame_to_stereoscopic_video_surfaces(self, destination_left_eye: windows_graphics_directx_direct3d11.IDirect3DSurface, destination_right_eye: windows_graphics_directx_direct3d11.IDirect3DSurface, /) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::CopyFrameToVideoSurface(Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface)
    def copy_frame_to_video_surface(self, destination: windows_graphics_directx_direct3d11.IDirect3DSurface, /) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::CopyFrameToVideoSurface(Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface,Windows.Foundation.Rect)
    def copy_frame_to_video_surface_with_target_rectangle(self, destination: windows_graphics_directx_direct3d11.IDirect3DSurface, target_rectangle: typing.Union[windows_foundation.Rect, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single, winrt.system.Single]], /) -> None: ...
    # Windows.Media.Casting.CastingSource Windows.Media.Playback.MediaPlayer::GetAsCastingSource()
    def get_as_casting_source(self) -> windows_media_casting.CastingSource: ...
    # Windows.Media.Playback.MediaPlayerSurface Windows.Media.Playback.MediaPlayer::GetSurface(Windows.UI.Composition.Compositor)
    def get_surface(self, compositor: windows_ui_composition.Compositor, /) -> MediaPlayerSurface: ...
    # System.Void Windows.Media.Playback.MediaPlayer::Pause()
    def pause(self) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::Play()
    def play(self) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::RemoveAllEffects()
    def remove_all_effects(self) -> None: ...
    # System.Boolean Windows.Media.Playback.MediaPlayer::RenderSubtitlesToSurface(Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface)
    def render_subtitles_to_surface(self, destination: windows_graphics_directx_direct3d11.IDirect3DSurface, /) -> bool: ...
    # System.Boolean Windows.Media.Playback.MediaPlayer::RenderSubtitlesToSurface(Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface,Windows.Foundation.Rect)
    def render_subtitles_to_surface_with_target_rectangle(self, destination: windows_graphics_directx_direct3d11.IDirect3DSurface, target_rectangle: typing.Union[windows_foundation.Rect, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single, winrt.system.Single]], /) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlayer::SetFileSource(Windows.Storage.IStorageFile)
    # @deprecated("Use Source instead of SetFileSource.  For more info, see MSDN.")
    def set_file_source(self, file: windows_storage.IStorageFile, /) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::SetMediaSource(Windows.Media.Core.IMediaSource)
    # @deprecated("Use Source instead of SetMediaSource.  For more info, see MSDN.")
    def set_media_source(self, source: windows_media_core.IMediaSource, /) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::SetStreamSource(Windows.Storage.Streams.IRandomAccessStream)
    # @deprecated("Use Source instead of SetStreamSource.  For more info, see MSDN.")
    def set_stream_source(self, stream: windows_storage_streams.IRandomAccessStream, /) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::SetSurfaceSize(Windows.Foundation.Size)
    def set_surface_size(self, size: typing.Union[windows_foundation.Size, typing.Tuple[winrt.system.Single, winrt.system.Single]], /) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::SetUriSource(Windows.Foundation.Uri)
    # @deprecated("Use Source instead of SetUriSource.  For more info, see MSDN.")
    def set_uri_source(self, value: windows_foundation.Uri, /) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::StepBackwardOneFrame()
    def step_backward_one_frame(self) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayer::StepForwardOneFrame()
    def step_forward_one_frame(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_BufferingEnded(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    # @deprecated("Use PlaybackSession.BufferingEnded instead of BufferingEnded.  For more info, see MSDN.")
    def add_buffering_ended(self, value: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_BufferingEnded(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Use PlaybackSession.BufferingEnded instead of BufferingEnded.  For more info, see MSDN.")
    def remove_buffering_ended(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_BufferingStarted(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    # @deprecated("Use PlaybackSession.BufferingStarted instead of BufferingStarted.  For more info, see MSDN.")
    def add_buffering_started(self, value: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_BufferingStarted(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Use PlaybackSession.BufferingStarted instead of BufferingStarted.  For more info, see MSDN.")
    def remove_buffering_started(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_CurrentStateChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    # @deprecated("Use PlaybackSession.PlaybackStateChanged instead of CurrentStateChanged.  For more info, see MSDN.")
    def add_current_state_changed(self, value: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_CurrentStateChanged(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Use PlaybackSession.PlaybackStateChanged instead of CurrentStateChanged.  For more info, see MSDN.")
    def remove_current_state_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_MediaEnded(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    def add_media_ended(self, value: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_MediaEnded(Windows.Foundation.EventRegistrationToken)
    def remove_media_ended(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_MediaFailed(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,Windows.Media.Playback.MediaPlayerFailedEventArgs>)
    def add_media_failed(self, value: windows_foundation.TypedEventHandler[MediaPlayer, MediaPlayerFailedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_MediaFailed(Windows.Foundation.EventRegistrationToken)
    def remove_media_failed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_MediaOpened(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    def add_media_opened(self, value: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_MediaOpened(Windows.Foundation.EventRegistrationToken)
    def remove_media_opened(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_MediaPlayerRateChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,Windows.Media.Playback.MediaPlayerRateChangedEventArgs>)
    # @deprecated("Use PlaybackSession.PlaybackRateChanged instead of MediaPlayerRateChanged.  For more info, see MSDN.")
    def add_media_player_rate_changed(self, value: windows_foundation.TypedEventHandler[MediaPlayer, MediaPlayerRateChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_MediaPlayerRateChanged(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Use PlaybackSession.PlaybackRateChanged instead of MediaPlayerRateChanged.  For more info, see MSDN.")
    def remove_media_player_rate_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_PlaybackMediaMarkerReached(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,Windows.Media.Playback.PlaybackMediaMarkerReachedEventArgs>)
    # @deprecated("Use media tracks on MediaPlaybackItem instead of PlaybackMediaMarkers.  For more info, see MSDN.")
    def add_playback_media_marker_reached(self, value: windows_foundation.TypedEventHandler[MediaPlayer, PlaybackMediaMarkerReachedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_PlaybackMediaMarkerReached(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Use media tracks on MediaPlaybackItem instead of PlaybackMediaMarkers.  For more info, see MSDN.")
    def remove_playback_media_marker_reached(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_SeekCompleted(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    # @deprecated("Use PlaybackSession.SeekCompleted instead of SeekCompleted.  For more info, see MSDN.")
    def add_seek_completed(self, value: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_SeekCompleted(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Use PlaybackSession.SeekCompleted instead of SeekCompleted.  For more info, see MSDN.")
    def remove_seek_completed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_VolumeChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    def add_volume_changed(self, value: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_VolumeChanged(Windows.Foundation.EventRegistrationToken)
    def remove_volume_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_IsMutedChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    def add_is_muted_changed(self, value: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_IsMutedChanged(Windows.Foundation.EventRegistrationToken)
    def remove_is_muted_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_SourceChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    def add_source_changed(self, value: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_SourceChanged(Windows.Foundation.EventRegistrationToken)
    def remove_source_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_VideoFrameAvailable(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    def add_video_frame_available(self, value: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_VideoFrameAvailable(Windows.Foundation.EventRegistrationToken)
    def remove_video_frame_available(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Playback.MediaPlayer::add_SubtitleFrameChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Playback.MediaPlayer,System.Object>)
    def add_subtitle_frame_changed(self, handler: windows_foundation.TypedEventHandler[MediaPlayer, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Playback.MediaPlayer::remove_SubtitleFrameChanged(Windows.Foundation.EventRegistrationToken)
    def remove_subtitle_frame_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.Double Windows.Media.Playback.MediaPlayer::get_Volume()
    @_property
    def volume(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_Volume(System.Double)
    @volume.setter
    def volume(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Playback.MediaPlayer::get_Position()
    @_property
    def position(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_Position(Windows.Foundation.TimeSpan)
    @position.setter
    def position(self, value: datetime.timedelta) -> None: ...
    # System.Double Windows.Media.Playback.MediaPlayer::get_PlaybackRate()
    @_property
    def playback_rate(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_PlaybackRate(System.Double)
    @playback_rate.setter
    def playback_rate(self, value: winrt.system.Double) -> None: ...
    # System.Boolean Windows.Media.Playback.MediaPlayer::get_IsLoopingEnabled()
    @_property
    def is_looping_enabled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_IsLoopingEnabled(System.Boolean)
    @is_looping_enabled.setter
    def is_looping_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.Playback.MediaPlayer::get_IsMuted()
    @_property
    def is_muted(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_IsMuted(System.Boolean)
    @is_muted.setter
    def is_muted(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.Playback.MediaPlayer::get_AutoPlay()
    @_property
    def auto_play(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_AutoPlay(System.Boolean)
    @auto_play.setter
    def auto_play(self, value: bool) -> None: ...
    # Windows.Media.Playback.MediaPlayerState Windows.Media.Playback.MediaPlayer::get_CurrentState()
    @_property
    def current_state(self) -> MediaPlayerState: ...
    # Windows.Foundation.TimeSpan Windows.Media.Playback.MediaPlayer::get_NaturalDuration()
    @_property
    def natural_duration(self) -> datetime.timedelta: ...
    # Windows.Media.Playback.PlaybackMediaMarkerSequence Windows.Media.Playback.MediaPlayer::get_PlaybackMediaMarkers()
    @_property
    def playback_media_markers(self) -> PlaybackMediaMarkerSequence: ...
    # System.Boolean Windows.Media.Playback.MediaPlayer::get_IsProtected()
    @_property
    def is_protected(self) -> bool: ...
    # System.Double Windows.Media.Playback.MediaPlayer::get_BufferingProgress()
    @_property
    def buffering_progress(self) -> winrt.system.Double: ...
    # System.Boolean Windows.Media.Playback.MediaPlayer::get_CanPause()
    @_property
    def can_pause(self) -> bool: ...
    # System.Boolean Windows.Media.Playback.MediaPlayer::get_CanSeek()
    @_property
    def can_seek(self) -> bool: ...
    # Windows.Media.Playback.MediaPlayerAudioDeviceType Windows.Media.Playback.MediaPlayer::get_AudioDeviceType()
    @_property
    def audio_device_type(self) -> MediaPlayerAudioDeviceType: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_AudioDeviceType(Windows.Media.Playback.MediaPlayerAudioDeviceType)
    @audio_device_type.setter
    def audio_device_type(self, value: MediaPlayerAudioDeviceType) -> None: ...
    # Windows.Media.Playback.MediaPlayerAudioCategory Windows.Media.Playback.MediaPlayer::get_AudioCategory()
    @_property
    def audio_category(self) -> MediaPlayerAudioCategory: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_AudioCategory(Windows.Media.Playback.MediaPlayerAudioCategory)
    @audio_category.setter
    def audio_category(self, value: MediaPlayerAudioCategory) -> None: ...
    # Windows.Media.SystemMediaTransportControls Windows.Media.Playback.MediaPlayer::get_SystemMediaTransportControls()
    @_property
    def system_media_transport_controls(self) -> windows_media.SystemMediaTransportControls: ...
    # Windows.Foundation.TimeSpan Windows.Media.Playback.MediaPlayer::get_TimelineControllerPositionOffset()
    @_property
    def timeline_controller_position_offset(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_TimelineControllerPositionOffset(Windows.Foundation.TimeSpan)
    @timeline_controller_position_offset.setter
    def timeline_controller_position_offset(self, value: datetime.timedelta) -> None: ...
    # Windows.Media.MediaTimelineController Windows.Media.Playback.MediaPlayer::get_TimelineController()
    @_property
    def timeline_controller(self) -> windows_media.MediaTimelineController: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_TimelineController(Windows.Media.MediaTimelineController)
    @timeline_controller.setter
    def timeline_controller(self, value: windows_media.MediaTimelineController) -> None: ...
    # Windows.Media.Playback.StereoscopicVideoRenderMode Windows.Media.Playback.MediaPlayer::get_StereoscopicVideoRenderMode()
    @_property
    def stereoscopic_video_render_mode(self) -> StereoscopicVideoRenderMode: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_StereoscopicVideoRenderMode(Windows.Media.Playback.StereoscopicVideoRenderMode)
    @stereoscopic_video_render_mode.setter
    def stereoscopic_video_render_mode(self, value: StereoscopicVideoRenderMode) -> None: ...
    # System.Boolean Windows.Media.Playback.MediaPlayer::get_RealTimePlayback()
    @_property
    def real_time_playback(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_RealTimePlayback(System.Boolean)
    @real_time_playback.setter
    def real_time_playback(self, value: bool) -> None: ...
    # Windows.Devices.Enumeration.DeviceInformation Windows.Media.Playback.MediaPlayer::get_AudioDevice()
    @_property
    def audio_device(self) -> windows_devices_enumeration.DeviceInformation: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_AudioDevice(Windows.Devices.Enumeration.DeviceInformation)
    @audio_device.setter
    def audio_device(self, value: windows_devices_enumeration.DeviceInformation) -> None: ...
    # System.Double Windows.Media.Playback.MediaPlayer::get_AudioBalance()
    @_property
    def audio_balance(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_AudioBalance(System.Double)
    @audio_balance.setter
    def audio_balance(self, value: winrt.system.Double) -> None: ...
    # Windows.Media.Playback.MediaPlaybackCommandManager Windows.Media.Playback.MediaPlayer::get_CommandManager()
    @_property
    def command_manager(self) -> MediaPlaybackCommandManager: ...
    # Windows.Media.Playback.MediaBreakManager Windows.Media.Playback.MediaPlayer::get_BreakManager()
    @_property
    def break_manager(self) -> MediaBreakManager: ...
    # Windows.Media.Playback.MediaPlaybackSession Windows.Media.Playback.MediaPlayer::get_PlaybackSession()
    @_property
    def playback_session(self) -> MediaPlaybackSession: ...
    # System.Boolean Windows.Media.Playback.MediaPlayer::get_IsVideoFrameServerEnabled()
    @_property
    def is_video_frame_server_enabled(self) -> bool: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_IsVideoFrameServerEnabled(System.Boolean)
    @is_video_frame_server_enabled.setter
    def is_video_frame_server_enabled(self, value: bool) -> None: ...
    # Windows.Media.Audio.AudioStateMonitor Windows.Media.Playback.MediaPlayer::get_AudioStateMonitor()
    @_property
    def audio_state_monitor(self) -> windows_media_audio.AudioStateMonitor: ...
    # Windows.Media.Protection.MediaProtectionManager Windows.Media.Playback.MediaPlayer::get_ProtectionManager()
    @_property
    def protection_manager(self) -> windows_media_protection.MediaProtectionManager: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_ProtectionManager(Windows.Media.Protection.MediaProtectionManager)
    @protection_manager.setter
    def protection_manager(self, value: windows_media_protection.MediaProtectionManager) -> None: ...
    # Windows.Media.Playback.IMediaPlaybackSource Windows.Media.Playback.MediaPlayer::get_Source()
    @_property
    def source(self) -> IMediaPlaybackSource: ...
    # System.Void Windows.Media.Playback.MediaPlayer::put_Source(Windows.Media.Playback.IMediaPlaybackSource)
    @source.setter
    def source(self, value: IMediaPlaybackSource) -> None: ...

@typing.final
class MediaPlayerDataReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Collections.ValueSet Windows.Media.Playback.MediaPlayerDataReceivedEventArgs::get_Data()
    @_property
    def data(self) -> windows_foundation_collections.ValueSet: ...

@typing.final
class MediaPlayerFailedEventArgs(winrt.system.Object):
    # Windows.Media.Playback.MediaPlayerError Windows.Media.Playback.MediaPlayerFailedEventArgs::get_Error()
    @_property
    def error(self) -> MediaPlayerError: ...
    # System.String Windows.Media.Playback.MediaPlayerFailedEventArgs::get_ErrorMessage()
    @_property
    def error_message(self) -> str: ...
    # Windows.Foundation.HResult Windows.Media.Playback.MediaPlayerFailedEventArgs::get_ExtendedErrorCode()
    @_property
    def extended_error_code(self) -> windows_foundation.HResult: ...

@typing.final
class MediaPlayerRateChangedEventArgs(winrt.system.Object):
    # System.Double Windows.Media.Playback.MediaPlayerRateChangedEventArgs::get_NewRate()
    @_property
    def new_rate(self) -> winrt.system.Double: ...

@typing.final
class MediaPlayerSurface(winrt.system.Object, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Playback.MediaPlayerSurface::Close()
    def close(self) -> None: ...
    # Windows.UI.Composition.ICompositionSurface Windows.Media.Playback.MediaPlayerSurface::get_CompositionSurface()
    @_property
    def composition_surface(self) -> windows_ui_composition.ICompositionSurface: ...
    # Windows.UI.Composition.Compositor Windows.Media.Playback.MediaPlayerSurface::get_Compositor()
    @_property
    def compositor(self) -> windows_ui_composition.Compositor: ...
    # Windows.Media.Playback.MediaPlayer Windows.Media.Playback.MediaPlayerSurface::get_MediaPlayer()
    @_property
    def media_player(self) -> MediaPlayer: ...

@typing.final
class PlaybackMediaMarker(winrt.system.Object):
    @typing.overload
    def __new__(cls: typing.Type[Self], value: datetime.timedelta) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], value: datetime.timedelta, media_market_type: str, text: str) -> Self: ...
    # System.String Windows.Media.Playback.PlaybackMediaMarker::get_MediaMarkerType()
    @_property
    def media_marker_type(self) -> str: ...
    # System.String Windows.Media.Playback.PlaybackMediaMarker::get_Text()
    @_property
    def text(self) -> str: ...
    # Windows.Foundation.TimeSpan Windows.Media.Playback.PlaybackMediaMarker::get_Time()
    @_property
    def time(self) -> datetime.timedelta: ...

@typing.final
class PlaybackMediaMarkerReachedEventArgs(winrt.system.Object):
    # Windows.Media.Playback.PlaybackMediaMarker Windows.Media.Playback.PlaybackMediaMarkerReachedEventArgs::get_PlaybackMediaMarker()
    @_property
    def playback_media_marker(self) -> PlaybackMediaMarker: ...

@typing.final
class PlaybackMediaMarkerSequence(winrt.system.Object):
    def __iter__(self) -> typing.Iterator[PlaybackMediaMarker]: ...
    # System.Void Windows.Media.Playback.PlaybackMediaMarkerSequence::Clear()
    def clear(self) -> None: ...
    # Windows.Foundation.Collections.IIterator`1<Windows.Media.Playback.PlaybackMediaMarker> Windows.Media.Playback.PlaybackMediaMarkerSequence::First()
    def first(self) -> windows_foundation_collections.IIterator[PlaybackMediaMarker]: ...
    # System.Void Windows.Media.Playback.PlaybackMediaMarkerSequence::Insert(Windows.Media.Playback.PlaybackMediaMarker)
    def insert(self, value: PlaybackMediaMarker, /) -> None: ...
    # System.UInt32 Windows.Media.Playback.PlaybackMediaMarkerSequence::get_Size()
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class TimedMetadataPresentationModeChangedEventArgs(winrt.system.Object):
    # Windows.Media.Playback.TimedMetadataTrackPresentationMode Windows.Media.Playback.TimedMetadataPresentationModeChangedEventArgs::get_NewPresentationMode()
    @_property
    def new_presentation_mode(self) -> TimedMetadataTrackPresentationMode: ...
    # Windows.Media.Playback.TimedMetadataTrackPresentationMode Windows.Media.Playback.TimedMetadataPresentationModeChangedEventArgs::get_OldPresentationMode()
    @_property
    def old_presentation_mode(self) -> TimedMetadataTrackPresentationMode: ...
    # Windows.Media.Core.TimedMetadataTrack Windows.Media.Playback.TimedMetadataPresentationModeChangedEventArgs::get_Track()
    @_property
    def track(self) -> windows_media_core.TimedMetadataTrack: ...

@typing.final
class _IMediaEnginePlaybackSource: ...

class IMediaEnginePlaybackSource(winrt._winrt.IInspectable):
    # System.Void Windows.Media.Playback.IMediaEnginePlaybackSource::SetPlaybackSource(Windows.Media.Playback.IMediaPlaybackSource)
    # @deprecated("Use MediaPlayer instead of MediaEngine. For more info, see MSDN.")
    @abstractmethod
    def set_playback_source(self, source: IMediaPlaybackSource, /) -> None: ...
    # Windows.Media.Playback.MediaPlaybackItem Windows.Media.Playback.IMediaEnginePlaybackSource::get_CurrentItem()
    @_property
    @abstractmethod
    def current_item(self) -> MediaPlaybackItem: ...

@typing.final
class _IMediaPlaybackSource: ...

class IMediaPlaybackSource(winrt._winrt.IInspectable):  # type: ignore[misc]
    pass

