# 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.applicationmodel.appservice as windows_applicationmodel_appservice
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.graphics.directx as windows_graphics_directx
import winrt.windows.graphics.directx.direct3d11 as windows_graphics_directx_direct3d11
import winrt.windows.graphics.imaging as windows_graphics_imaging
import winrt.windows.storage as windows_storage
import winrt.windows.storage.streams as windows_storage_streams

from winrt.windows.media import AudioBufferAccessMode, AudioProcessing, MediaPlaybackAutoRepeatMode, MediaPlaybackStatus, MediaPlaybackType, MediaTimelineControllerState, SoundLevel, SystemMediaTransportControlsButton, SystemMediaTransportControlsProperty

Self = typing.TypeVar('Self')

@typing.final
class MediaTimeRange:
    @_property
    def start(self) -> datetime.timedelta: ...
    @_property
    def end(self) -> datetime.timedelta: ...
    def __new__(cls, start: datetime.timedelta = datetime.timedelta(0), end: datetime.timedelta = datetime.timedelta(0)) -> MediaTimeRange: ...
    def __replace__(self, /, **changes: typing.Any) -> MediaTimeRange: ...
    def unpack(self) -> typing.Tuple[datetime.timedelta, datetime.timedelta]: ...

@typing.final
class AudioBuffer(winrt.system.Object, windows_foundation.IMemoryBuffer, 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.AudioBuffer::Close()
    def close(self) -> None: ...
    # Windows.Foundation.IMemoryBufferReference Windows.Media.AudioBuffer::CreateReference()
    def create_reference(self) -> windows_foundation.IMemoryBufferReference: ...
    # System.UInt32 Windows.Media.AudioBuffer::get_Length()
    @_property
    def length(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Media.AudioBuffer::put_Length(System.UInt32)
    @length.setter
    def length(self, value: winrt.system.UInt32) -> None: ...
    # System.UInt32 Windows.Media.AudioBuffer::get_Capacity()
    @_property
    def capacity(self) -> winrt.system.UInt32: ...

@typing.final
class AudioFrame(winrt.system.Object, IMediaFrame, 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], capacity: winrt.system.UInt32) -> Self: ...
    # System.Void Windows.Media.AudioFrame::Close()
    def close(self) -> None: ...
    # Windows.Media.AudioBuffer Windows.Media.AudioFrame::LockBuffer(Windows.Media.AudioBufferAccessMode)
    def lock_buffer(self, mode: AudioBufferAccessMode, /) -> AudioBuffer: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.AudioFrame::get_SystemRelativeTime()
    @_property
    def system_relative_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.AudioFrame::put_SystemRelativeTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @system_relative_time.setter
    def system_relative_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.AudioFrame::get_RelativeTime()
    @_property
    def relative_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.AudioFrame::put_RelativeTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @relative_time.setter
    def relative_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # System.Boolean Windows.Media.AudioFrame::get_IsDiscontinuous()
    @_property
    def is_discontinuous(self) -> bool: ...
    # System.Void Windows.Media.AudioFrame::put_IsDiscontinuous(System.Boolean)
    @is_discontinuous.setter
    def is_discontinuous(self, value: bool) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.AudioFrame::get_Duration()
    @_property
    def duration(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.AudioFrame::put_Duration(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @duration.setter
    def duration(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # Windows.Foundation.Collections.IPropertySet Windows.Media.AudioFrame::get_ExtendedProperties()
    @_property
    def extended_properties(self) -> windows_foundation_collections.IPropertySet: ...
    # System.Boolean Windows.Media.AudioFrame::get_IsReadOnly()
    @_property
    def is_read_only(self) -> bool: ...
    # System.String Windows.Media.AudioFrame::get_Type()
    @_property
    def type(self) -> str: ...

@typing.final
class AutoRepeatModeChangeRequestedEventArgs(winrt.system.Object):
    # Windows.Media.MediaPlaybackAutoRepeatMode Windows.Media.AutoRepeatModeChangeRequestedEventArgs::get_RequestedAutoRepeatMode()
    @_property
    def requested_auto_repeat_mode(self) -> MediaPlaybackAutoRepeatMode: ...

@typing.final
class ImageDisplayProperties(winrt.system.Object):
    # System.String Windows.Media.ImageDisplayProperties::get_Title()
    @_property
    def title(self) -> str: ...
    # System.Void Windows.Media.ImageDisplayProperties::put_Title(System.String)
    @title.setter
    def title(self, value: str) -> None: ...
    # System.String Windows.Media.ImageDisplayProperties::get_Subtitle()
    @_property
    def subtitle(self) -> str: ...
    # System.Void Windows.Media.ImageDisplayProperties::put_Subtitle(System.String)
    @subtitle.setter
    def subtitle(self, value: str) -> None: ...

@typing.final
class MediaControl_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_ChannelDownPressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_channel_down_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_ChannelDownPressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_channel_down_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_ChannelUpPressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_channel_up_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_ChannelUpPressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_channel_up_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_FastForwardPressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_fast_forward_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_FastForwardPressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_fast_forward_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_NextTrackPressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_next_track_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_NextTrackPressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_next_track_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_PausePressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_pause_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_PausePressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_pause_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_PlayPauseTogglePressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_play_pause_toggle_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_PlayPauseTogglePressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_play_pause_toggle_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_PlayPressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_play_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_PlayPressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_play_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_PreviousTrackPressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_previous_track_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_PreviousTrackPressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_previous_track_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_RecordPressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_record_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_RecordPressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_record_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_RewindPressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_rewind_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_RewindPressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_rewind_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_SoundLevelChanged(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_sound_level_changed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_SoundLevelChanged(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_sound_level_changed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaControl::add_StopPressed(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def add_stop_pressed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaControl::remove_StopPressed(Windows.Foundation.EventRegistrationToken)
    # @deprecated("MediaControl may be altered or unavailable for releases after Windows 8.1. Instead, use SystemMediaTransportControls.")
    def remove_stop_pressed(cls, cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.String Windows.Media.MediaControl::get_TrackName()
    @_property
    def track_name(cls) -> str: ...
    # System.Void Windows.Media.MediaControl::put_TrackName(System.String)
    @track_name.setter
    def track_name(cls, value: str) -> None: ...
    # System.Boolean Windows.Media.MediaControl::get_IsPlaying()
    @_property
    def is_playing(cls) -> bool: ...
    # System.Void Windows.Media.MediaControl::put_IsPlaying(System.Boolean)
    @is_playing.setter
    def is_playing(cls, value: bool) -> None: ...
    # System.String Windows.Media.MediaControl::get_ArtistName()
    @_property
    def artist_name(cls) -> str: ...
    # System.Void Windows.Media.MediaControl::put_ArtistName(System.String)
    @artist_name.setter
    def artist_name(cls, value: str) -> None: ...
    # Windows.Foundation.Uri Windows.Media.MediaControl::get_AlbumArt()
    @_property
    def album_art(cls) -> windows_foundation.Uri: ...
    # System.Void Windows.Media.MediaControl::put_AlbumArt(Windows.Foundation.Uri)
    @album_art.setter
    def album_art(cls, value: windows_foundation.Uri) -> None: ...
    # Windows.Media.SoundLevel Windows.Media.MediaControl::get_SoundLevel()
    @_property
    def sound_level(cls) -> SoundLevel: ...

@typing.final
class MediaControl(winrt.system.Object, metaclass=MediaControl_Static):
    pass

@typing.final
class MediaExtensionManager(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterAudioDecoder(System.String,System.Guid,System.Guid)
    def register_audio_decoder(self, activatable_class_id: str, input_subtype: _uuid.UUID, output_subtype: _uuid.UUID, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterAudioDecoder(System.String,System.Guid,System.Guid,Windows.Foundation.Collections.IPropertySet)
    def register_audio_decoder_with_settings(self, activatable_class_id: str, input_subtype: _uuid.UUID, output_subtype: _uuid.UUID, configuration: windows_foundation_collections.IPropertySet, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterAudioEncoder(System.String,System.Guid,System.Guid)
    def register_audio_encoder(self, activatable_class_id: str, input_subtype: _uuid.UUID, output_subtype: _uuid.UUID, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterAudioEncoder(System.String,System.Guid,System.Guid,Windows.Foundation.Collections.IPropertySet)
    def register_audio_encoder_with_settings(self, activatable_class_id: str, input_subtype: _uuid.UUID, output_subtype: _uuid.UUID, configuration: windows_foundation_collections.IPropertySet, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterByteStreamHandler(System.String,System.String,System.String)
    def register_byte_stream_handler(self, activatable_class_id: str, file_extension: str, mime_type: str, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterByteStreamHandler(System.String,System.String,System.String,Windows.Foundation.Collections.IPropertySet)
    def register_byte_stream_handler_with_settings(self, activatable_class_id: str, file_extension: str, mime_type: str, configuration: windows_foundation_collections.IPropertySet, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterMediaExtensionForAppService(Windows.Media.IMediaExtension,Windows.ApplicationModel.AppService.AppServiceConnection)
    def register_media_extension_for_app_service(self, extension: IMediaExtension, connection: windows_applicationmodel_appservice.AppServiceConnection, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterSchemeHandler(System.String,System.String)
    def register_scheme_handler(self, activatable_class_id: str, scheme: str, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterSchemeHandler(System.String,System.String,Windows.Foundation.Collections.IPropertySet)
    def register_scheme_handler_with_settings(self, activatable_class_id: str, scheme: str, configuration: windows_foundation_collections.IPropertySet, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterVideoDecoder(System.String,System.Guid,System.Guid)
    def register_video_decoder(self, activatable_class_id: str, input_subtype: _uuid.UUID, output_subtype: _uuid.UUID, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterVideoDecoder(System.String,System.Guid,System.Guid,Windows.Foundation.Collections.IPropertySet)
    def register_video_decoder_with_settings(self, activatable_class_id: str, input_subtype: _uuid.UUID, output_subtype: _uuid.UUID, configuration: windows_foundation_collections.IPropertySet, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterVideoEncoder(System.String,System.Guid,System.Guid)
    def register_video_encoder(self, activatable_class_id: str, input_subtype: _uuid.UUID, output_subtype: _uuid.UUID, /) -> None: ...
    # System.Void Windows.Media.MediaExtensionManager::RegisterVideoEncoder(System.String,System.Guid,System.Guid,Windows.Foundation.Collections.IPropertySet)
    def register_video_encoder_with_settings(self, activatable_class_id: str, input_subtype: _uuid.UUID, output_subtype: _uuid.UUID, configuration: windows_foundation_collections.IPropertySet, /) -> None: ...

@typing.final
class MediaMarkerTypes_Static(winrt._winrt.IInspectable_Static):
    # System.String Windows.Media.MediaMarkerTypes::get_Bookmark()
    @_property
    def bookmark(cls) -> str: ...

@typing.final
class MediaMarkerTypes(winrt.system.Object, metaclass=MediaMarkerTypes_Static):
    pass

@typing.final
class MediaProcessingTriggerDetails(winrt.system.Object):
    # Windows.Foundation.Collections.ValueSet Windows.Media.MediaProcessingTriggerDetails::get_Arguments()
    @_property
    def arguments(self) -> windows_foundation_collections.ValueSet: ...

@typing.final
class MediaTimelineController(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # System.Void Windows.Media.MediaTimelineController::Pause()
    def pause(self) -> None: ...
    # System.Void Windows.Media.MediaTimelineController::Resume()
    def resume(self) -> None: ...
    # System.Void Windows.Media.MediaTimelineController::Start()
    def start(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaTimelineController::add_PositionChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.MediaTimelineController,System.Object>)
    def add_position_changed(self, position_changed_event_handler: windows_foundation.TypedEventHandler[MediaTimelineController, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaTimelineController::remove_PositionChanged(Windows.Foundation.EventRegistrationToken)
    def remove_position_changed(self, event_cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaTimelineController::add_StateChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.MediaTimelineController,System.Object>)
    def add_state_changed(self, state_changed_event_handler: windows_foundation.TypedEventHandler[MediaTimelineController, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaTimelineController::remove_StateChanged(Windows.Foundation.EventRegistrationToken)
    def remove_state_changed(self, event_cookie: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaTimelineController::add_Ended(Windows.Foundation.TypedEventHandler`2<Windows.Media.MediaTimelineController,System.Object>)
    def add_ended(self, event_handler: windows_foundation.TypedEventHandler[MediaTimelineController, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaTimelineController::remove_Ended(Windows.Foundation.EventRegistrationToken)
    def remove_ended(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.MediaTimelineController::add_Failed(Windows.Foundation.TypedEventHandler`2<Windows.Media.MediaTimelineController,Windows.Media.MediaTimelineControllerFailedEventArgs>)
    def add_failed(self, event_handler: windows_foundation.TypedEventHandler[MediaTimelineController, MediaTimelineControllerFailedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.MediaTimelineController::remove_Failed(Windows.Foundation.EventRegistrationToken)
    def remove_failed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.MediaTimelineController::get_Position()
    @_property
    def position(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.MediaTimelineController::put_Position(Windows.Foundation.TimeSpan)
    @position.setter
    def position(self, value: datetime.timedelta) -> None: ...
    # System.Double Windows.Media.MediaTimelineController::get_ClockRate()
    @_property
    def clock_rate(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.MediaTimelineController::put_ClockRate(System.Double)
    @clock_rate.setter
    def clock_rate(self, value: winrt.system.Double) -> None: ...
    # Windows.Media.MediaTimelineControllerState Windows.Media.MediaTimelineController::get_State()
    @_property
    def state(self) -> MediaTimelineControllerState: ...
    # System.Boolean Windows.Media.MediaTimelineController::get_IsLoopingEnabled()
    @_property
    def is_looping_enabled(self) -> bool: ...
    # System.Void Windows.Media.MediaTimelineController::put_IsLoopingEnabled(System.Boolean)
    @is_looping_enabled.setter
    def is_looping_enabled(self, value: bool) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.MediaTimelineController::get_Duration()
    @_property
    def duration(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.MediaTimelineController::put_Duration(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @duration.setter
    def duration(self, value: typing.Optional[datetime.timedelta]) -> None: ...

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

@typing.final
class MusicDisplayProperties(winrt.system.Object):
    # System.String Windows.Media.MusicDisplayProperties::get_Title()
    @_property
    def title(self) -> str: ...
    # System.Void Windows.Media.MusicDisplayProperties::put_Title(System.String)
    @title.setter
    def title(self, value: str) -> None: ...
    # System.String Windows.Media.MusicDisplayProperties::get_Artist()
    @_property
    def artist(self) -> str: ...
    # System.Void Windows.Media.MusicDisplayProperties::put_Artist(System.String)
    @artist.setter
    def artist(self, value: str) -> None: ...
    # System.String Windows.Media.MusicDisplayProperties::get_AlbumArtist()
    @_property
    def album_artist(self) -> str: ...
    # System.Void Windows.Media.MusicDisplayProperties::put_AlbumArtist(System.String)
    @album_artist.setter
    def album_artist(self, value: str) -> None: ...
    # System.UInt32 Windows.Media.MusicDisplayProperties::get_TrackNumber()
    @_property
    def track_number(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Media.MusicDisplayProperties::put_TrackNumber(System.UInt32)
    @track_number.setter
    def track_number(self, value: winrt.system.UInt32) -> None: ...
    # System.String Windows.Media.MusicDisplayProperties::get_AlbumTitle()
    @_property
    def album_title(self) -> str: ...
    # System.Void Windows.Media.MusicDisplayProperties::put_AlbumTitle(System.String)
    @album_title.setter
    def album_title(self, value: str) -> None: ...
    # Windows.Foundation.Collections.IVector`1<System.String> Windows.Media.MusicDisplayProperties::get_Genres()
    @_property
    def genres(self) -> typing.MutableSequence[str]: ...
    # System.UInt32 Windows.Media.MusicDisplayProperties::get_AlbumTrackCount()
    @_property
    def album_track_count(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Media.MusicDisplayProperties::put_AlbumTrackCount(System.UInt32)
    @album_track_count.setter
    def album_track_count(self, value: winrt.system.UInt32) -> None: ...

@typing.final
class PlaybackPositionChangeRequestedEventArgs(winrt.system.Object):
    # Windows.Foundation.TimeSpan Windows.Media.PlaybackPositionChangeRequestedEventArgs::get_RequestedPlaybackPosition()
    @_property
    def requested_playback_position(self) -> datetime.timedelta: ...

@typing.final
class PlaybackRateChangeRequestedEventArgs(winrt.system.Object):
    # System.Double Windows.Media.PlaybackRateChangeRequestedEventArgs::get_RequestedPlaybackRate()
    @_property
    def requested_playback_rate(self) -> winrt.system.Double: ...

@typing.final
class ShuffleEnabledChangeRequestedEventArgs(winrt.system.Object):
    # System.Boolean Windows.Media.ShuffleEnabledChangeRequestedEventArgs::get_RequestedShuffleEnabled()
    @_property
    def requested_shuffle_enabled(self) -> bool: ...

@typing.final
class SystemMediaTransportControls_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.SystemMediaTransportControls Windows.Media.SystemMediaTransportControls::GetForCurrentView()
    def get_for_current_view(cls) -> SystemMediaTransportControls: ...

@typing.final
class SystemMediaTransportControls(winrt.system.Object, metaclass=SystemMediaTransportControls_Static):
    # System.Void Windows.Media.SystemMediaTransportControls::UpdateTimelineProperties(Windows.Media.SystemMediaTransportControlsTimelineProperties)
    def update_timeline_properties(self, timeline_properties: SystemMediaTransportControlsTimelineProperties, /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.SystemMediaTransportControls::add_ButtonPressed(Windows.Foundation.TypedEventHandler`2<Windows.Media.SystemMediaTransportControls,Windows.Media.SystemMediaTransportControlsButtonPressedEventArgs>)
    def add_button_pressed(self, handler: windows_foundation.TypedEventHandler[SystemMediaTransportControls, SystemMediaTransportControlsButtonPressedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.SystemMediaTransportControls::remove_ButtonPressed(Windows.Foundation.EventRegistrationToken)
    def remove_button_pressed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.SystemMediaTransportControls::add_PropertyChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.SystemMediaTransportControls,Windows.Media.SystemMediaTransportControlsPropertyChangedEventArgs>)
    def add_property_changed(self, handler: windows_foundation.TypedEventHandler[SystemMediaTransportControls, SystemMediaTransportControlsPropertyChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.SystemMediaTransportControls::remove_PropertyChanged(Windows.Foundation.EventRegistrationToken)
    def remove_property_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.SystemMediaTransportControls::add_AutoRepeatModeChangeRequested(Windows.Foundation.TypedEventHandler`2<Windows.Media.SystemMediaTransportControls,Windows.Media.AutoRepeatModeChangeRequestedEventArgs>)
    def add_auto_repeat_mode_change_requested(self, handler: windows_foundation.TypedEventHandler[SystemMediaTransportControls, AutoRepeatModeChangeRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.SystemMediaTransportControls::remove_AutoRepeatModeChangeRequested(Windows.Foundation.EventRegistrationToken)
    def remove_auto_repeat_mode_change_requested(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.SystemMediaTransportControls::add_PlaybackPositionChangeRequested(Windows.Foundation.TypedEventHandler`2<Windows.Media.SystemMediaTransportControls,Windows.Media.PlaybackPositionChangeRequestedEventArgs>)
    def add_playback_position_change_requested(self, handler: windows_foundation.TypedEventHandler[SystemMediaTransportControls, PlaybackPositionChangeRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.SystemMediaTransportControls::remove_PlaybackPositionChangeRequested(Windows.Foundation.EventRegistrationToken)
    def remove_playback_position_change_requested(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.SystemMediaTransportControls::add_PlaybackRateChangeRequested(Windows.Foundation.TypedEventHandler`2<Windows.Media.SystemMediaTransportControls,Windows.Media.PlaybackRateChangeRequestedEventArgs>)
    def add_playback_rate_change_requested(self, handler: windows_foundation.TypedEventHandler[SystemMediaTransportControls, PlaybackRateChangeRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.SystemMediaTransportControls::remove_PlaybackRateChangeRequested(Windows.Foundation.EventRegistrationToken)
    def remove_playback_rate_change_requested(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.SystemMediaTransportControls::add_ShuffleEnabledChangeRequested(Windows.Foundation.TypedEventHandler`2<Windows.Media.SystemMediaTransportControls,Windows.Media.ShuffleEnabledChangeRequestedEventArgs>)
    def add_shuffle_enabled_change_requested(self, handler: windows_foundation.TypedEventHandler[SystemMediaTransportControls, ShuffleEnabledChangeRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.SystemMediaTransportControls::remove_ShuffleEnabledChangeRequested(Windows.Foundation.EventRegistrationToken)
    def remove_shuffle_enabled_change_requested(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsPlayEnabled()
    @_property
    def is_play_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsPlayEnabled(System.Boolean)
    @is_play_enabled.setter
    def is_play_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsPauseEnabled()
    @_property
    def is_pause_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsPauseEnabled(System.Boolean)
    @is_pause_enabled.setter
    def is_pause_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsNextEnabled()
    @_property
    def is_next_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsNextEnabled(System.Boolean)
    @is_next_enabled.setter
    def is_next_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsPreviousEnabled()
    @_property
    def is_previous_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsPreviousEnabled(System.Boolean)
    @is_previous_enabled.setter
    def is_previous_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsEnabled()
    @_property
    def is_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsEnabled(System.Boolean)
    @is_enabled.setter
    def is_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsChannelDownEnabled()
    @_property
    def is_channel_down_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsChannelDownEnabled(System.Boolean)
    @is_channel_down_enabled.setter
    def is_channel_down_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsFastForwardEnabled()
    @_property
    def is_fast_forward_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsFastForwardEnabled(System.Boolean)
    @is_fast_forward_enabled.setter
    def is_fast_forward_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsChannelUpEnabled()
    @_property
    def is_channel_up_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsChannelUpEnabled(System.Boolean)
    @is_channel_up_enabled.setter
    def is_channel_up_enabled(self, value: bool) -> None: ...
    # Windows.Media.MediaPlaybackStatus Windows.Media.SystemMediaTransportControls::get_PlaybackStatus()
    @_property
    def playback_status(self) -> MediaPlaybackStatus: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_PlaybackStatus(Windows.Media.MediaPlaybackStatus)
    @playback_status.setter
    def playback_status(self, value: MediaPlaybackStatus) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsStopEnabled()
    @_property
    def is_stop_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsStopEnabled(System.Boolean)
    @is_stop_enabled.setter
    def is_stop_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsRewindEnabled()
    @_property
    def is_rewind_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsRewindEnabled(System.Boolean)
    @is_rewind_enabled.setter
    def is_rewind_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_IsRecordEnabled()
    @_property
    def is_record_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_IsRecordEnabled(System.Boolean)
    @is_record_enabled.setter
    def is_record_enabled(self, value: bool) -> None: ...
    # Windows.Media.SystemMediaTransportControlsDisplayUpdater Windows.Media.SystemMediaTransportControls::get_DisplayUpdater()
    @_property
    def display_updater(self) -> SystemMediaTransportControlsDisplayUpdater: ...
    # Windows.Media.SoundLevel Windows.Media.SystemMediaTransportControls::get_SoundLevel()
    @_property
    def sound_level(self) -> SoundLevel: ...
    # System.Boolean Windows.Media.SystemMediaTransportControls::get_ShuffleEnabled()
    @_property
    def shuffle_enabled(self) -> bool: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_ShuffleEnabled(System.Boolean)
    @shuffle_enabled.setter
    def shuffle_enabled(self, value: bool) -> None: ...
    # System.Double Windows.Media.SystemMediaTransportControls::get_PlaybackRate()
    @_property
    def playback_rate(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_PlaybackRate(System.Double)
    @playback_rate.setter
    def playback_rate(self, value: winrt.system.Double) -> None: ...
    # Windows.Media.MediaPlaybackAutoRepeatMode Windows.Media.SystemMediaTransportControls::get_AutoRepeatMode()
    @_property
    def auto_repeat_mode(self) -> MediaPlaybackAutoRepeatMode: ...
    # System.Void Windows.Media.SystemMediaTransportControls::put_AutoRepeatMode(Windows.Media.MediaPlaybackAutoRepeatMode)
    @auto_repeat_mode.setter
    def auto_repeat_mode(self, value: MediaPlaybackAutoRepeatMode) -> None: ...

@typing.final
class SystemMediaTransportControlsButtonPressedEventArgs(winrt.system.Object):
    # Windows.Media.SystemMediaTransportControlsButton Windows.Media.SystemMediaTransportControlsButtonPressedEventArgs::get_Button()
    @_property
    def button(self) -> SystemMediaTransportControlsButton: ...

@typing.final
class SystemMediaTransportControlsDisplayUpdater(winrt.system.Object):
    # System.Void Windows.Media.SystemMediaTransportControlsDisplayUpdater::ClearAll()
    def clear_all(self) -> None: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Media.SystemMediaTransportControlsDisplayUpdater::CopyFromFileAsync(Windows.Media.MediaPlaybackType,Windows.Storage.StorageFile)
    def copy_from_file_async(self, type: MediaPlaybackType, source: windows_storage.StorageFile, /) -> windows_foundation.IAsyncOperation[bool]: ...
    # System.Void Windows.Media.SystemMediaTransportControlsDisplayUpdater::Update()
    def update(self) -> None: ...
    # Windows.Media.MediaPlaybackType Windows.Media.SystemMediaTransportControlsDisplayUpdater::get_Type()
    @_property
    def type(self) -> MediaPlaybackType: ...
    # System.Void Windows.Media.SystemMediaTransportControlsDisplayUpdater::put_Type(Windows.Media.MediaPlaybackType)
    @type.setter
    def type(self, value: MediaPlaybackType) -> None: ...
    # Windows.Storage.Streams.RandomAccessStreamReference Windows.Media.SystemMediaTransportControlsDisplayUpdater::get_Thumbnail()
    @_property
    def thumbnail(self) -> windows_storage_streams.RandomAccessStreamReference: ...
    # System.Void Windows.Media.SystemMediaTransportControlsDisplayUpdater::put_Thumbnail(Windows.Storage.Streams.RandomAccessStreamReference)
    @thumbnail.setter
    def thumbnail(self, value: windows_storage_streams.RandomAccessStreamReference) -> None: ...
    # System.String Windows.Media.SystemMediaTransportControlsDisplayUpdater::get_AppMediaId()
    @_property
    def app_media_id(self) -> str: ...
    # System.Void Windows.Media.SystemMediaTransportControlsDisplayUpdater::put_AppMediaId(System.String)
    @app_media_id.setter
    def app_media_id(self, value: str) -> None: ...
    # Windows.Media.ImageDisplayProperties Windows.Media.SystemMediaTransportControlsDisplayUpdater::get_ImageProperties()
    @_property
    def image_properties(self) -> ImageDisplayProperties: ...
    # Windows.Media.MusicDisplayProperties Windows.Media.SystemMediaTransportControlsDisplayUpdater::get_MusicProperties()
    @_property
    def music_properties(self) -> MusicDisplayProperties: ...
    # Windows.Media.VideoDisplayProperties Windows.Media.SystemMediaTransportControlsDisplayUpdater::get_VideoProperties()
    @_property
    def video_properties(self) -> VideoDisplayProperties: ...

@typing.final
class SystemMediaTransportControlsPropertyChangedEventArgs(winrt.system.Object):
    # Windows.Media.SystemMediaTransportControlsProperty Windows.Media.SystemMediaTransportControlsPropertyChangedEventArgs::get_Property()
    @_property
    def property(self) -> SystemMediaTransportControlsProperty: ...

@typing.final
class SystemMediaTransportControlsTimelineProperties(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Foundation.TimeSpan Windows.Media.SystemMediaTransportControlsTimelineProperties::get_StartTime()
    @_property
    def start_time(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.SystemMediaTransportControlsTimelineProperties::put_StartTime(Windows.Foundation.TimeSpan)
    @start_time.setter
    def start_time(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.SystemMediaTransportControlsTimelineProperties::get_Position()
    @_property
    def position(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.SystemMediaTransportControlsTimelineProperties::put_Position(Windows.Foundation.TimeSpan)
    @position.setter
    def position(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.SystemMediaTransportControlsTimelineProperties::get_MinSeekTime()
    @_property
    def min_seek_time(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.SystemMediaTransportControlsTimelineProperties::put_MinSeekTime(Windows.Foundation.TimeSpan)
    @min_seek_time.setter
    def min_seek_time(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.SystemMediaTransportControlsTimelineProperties::get_MaxSeekTime()
    @_property
    def max_seek_time(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.SystemMediaTransportControlsTimelineProperties::put_MaxSeekTime(Windows.Foundation.TimeSpan)
    @max_seek_time.setter
    def max_seek_time(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.SystemMediaTransportControlsTimelineProperties::get_EndTime()
    @_property
    def end_time(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.SystemMediaTransportControlsTimelineProperties::put_EndTime(Windows.Foundation.TimeSpan)
    @end_time.setter
    def end_time(self, value: datetime.timedelta) -> None: ...

@typing.final
class VideoDisplayProperties(winrt.system.Object):
    # System.String Windows.Media.VideoDisplayProperties::get_Title()
    @_property
    def title(self) -> str: ...
    # System.Void Windows.Media.VideoDisplayProperties::put_Title(System.String)
    @title.setter
    def title(self, value: str) -> None: ...
    # System.String Windows.Media.VideoDisplayProperties::get_Subtitle()
    @_property
    def subtitle(self) -> str: ...
    # System.Void Windows.Media.VideoDisplayProperties::put_Subtitle(System.String)
    @subtitle.setter
    def subtitle(self, value: str) -> None: ...
    # Windows.Foundation.Collections.IVector`1<System.String> Windows.Media.VideoDisplayProperties::get_Genres()
    @_property
    def genres(self) -> typing.MutableSequence[str]: ...

@typing.final
class VideoEffects_Static(winrt._winrt.IInspectable_Static):
    # System.String Windows.Media.VideoEffects::get_VideoStabilization()
    @_property
    def video_stabilization(cls) -> str: ...

@typing.final
class VideoEffects(winrt.system.Object, metaclass=VideoEffects_Static):
    pass

@typing.final
class VideoFrame_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.VideoFrame Windows.Media.VideoFrame::CreateAsDirect3D11SurfaceBacked(Windows.Graphics.DirectX.DirectXPixelFormat,System.Int32,System.Int32)
    def create_as_direct3d11_surface_backed(cls, format: windows_graphics_directx.DirectXPixelFormat, width: winrt.system.Int32, height: winrt.system.Int32, /) -> VideoFrame: ...
    # Windows.Media.VideoFrame Windows.Media.VideoFrame::CreateAsDirect3D11SurfaceBacked(Windows.Graphics.DirectX.DirectXPixelFormat,System.Int32,System.Int32,Windows.Graphics.DirectX.Direct3D11.IDirect3DDevice)
    def create_as_direct3d11_surface_backed_with_device(cls, format: windows_graphics_directx.DirectXPixelFormat, width: winrt.system.Int32, height: winrt.system.Int32, device: windows_graphics_directx_direct3d11.IDirect3DDevice, /) -> VideoFrame: ...
    # Windows.Media.VideoFrame Windows.Media.VideoFrame::CreateWithDirect3D11Surface(Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface)
    def create_with_direct3d11_surface(cls, surface: windows_graphics_directx_direct3d11.IDirect3DSurface, /) -> VideoFrame: ...
    # Windows.Media.VideoFrame Windows.Media.VideoFrame::CreateWithSoftwareBitmap(Windows.Graphics.Imaging.SoftwareBitmap)
    def create_with_software_bitmap(cls, bitmap: windows_graphics_imaging.SoftwareBitmap, /) -> VideoFrame: ...

@typing.final
class VideoFrame(winrt.system.Object, IMediaFrame, windows_foundation.IClosable, metaclass=VideoFrame_Static):
    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: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], format: windows_graphics_imaging.BitmapPixelFormat, width: winrt.system.Int32, height: winrt.system.Int32) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], format: windows_graphics_imaging.BitmapPixelFormat, width: winrt.system.Int32, height: winrt.system.Int32, alpha: windows_graphics_imaging.BitmapAlphaMode) -> Self: ...
    # System.Void Windows.Media.VideoFrame::Close()
    def close(self) -> None: ...
    # Windows.Foundation.IAsyncAction Windows.Media.VideoFrame::CopyToAsync(Windows.Media.VideoFrame)
    def copy_to_async(self, frame: VideoFrame, /) -> windows_foundation.IAsyncAction: ...
    # Windows.Foundation.IAsyncAction Windows.Media.VideoFrame::CopyToAsync(Windows.Media.VideoFrame,Windows.Foundation.IReference`1<Windows.Graphics.Imaging.BitmapBounds>,Windows.Foundation.IReference`1<Windows.Graphics.Imaging.BitmapBounds>)
    def copy_to_with_bounds_async(self, frame: VideoFrame, source_bounds: typing.Optional[windows_graphics_imaging.BitmapBounds], destination_bounds: typing.Optional[windows_graphics_imaging.BitmapBounds], /) -> windows_foundation.IAsyncAction: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.VideoFrame::get_SystemRelativeTime()
    @_property
    def system_relative_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.VideoFrame::put_SystemRelativeTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @system_relative_time.setter
    def system_relative_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.VideoFrame::get_RelativeTime()
    @_property
    def relative_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.VideoFrame::put_RelativeTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @relative_time.setter
    def relative_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # System.Boolean Windows.Media.VideoFrame::get_IsDiscontinuous()
    @_property
    def is_discontinuous(self) -> bool: ...
    # System.Void Windows.Media.VideoFrame::put_IsDiscontinuous(System.Boolean)
    @is_discontinuous.setter
    def is_discontinuous(self, value: bool) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.VideoFrame::get_Duration()
    @_property
    def duration(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.VideoFrame::put_Duration(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @duration.setter
    def duration(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # Windows.Foundation.Collections.IPropertySet Windows.Media.VideoFrame::get_ExtendedProperties()
    @_property
    def extended_properties(self) -> windows_foundation_collections.IPropertySet: ...
    # System.Boolean Windows.Media.VideoFrame::get_IsReadOnly()
    @_property
    def is_read_only(self) -> bool: ...
    # System.String Windows.Media.VideoFrame::get_Type()
    @_property
    def type(self) -> str: ...
    # Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface Windows.Media.VideoFrame::get_Direct3DSurface()
    @_property
    def direct3d_surface(self) -> windows_graphics_directx_direct3d11.IDirect3DSurface: ...
    # Windows.Graphics.Imaging.SoftwareBitmap Windows.Media.VideoFrame::get_SoftwareBitmap()
    @_property
    def software_bitmap(self) -> windows_graphics_imaging.SoftwareBitmap: ...

@typing.final
class _IMediaExtension: ...

class IMediaExtension(winrt._winrt.IInspectable):
    # System.Void Windows.Media.IMediaExtension::SetProperties(Windows.Foundation.Collections.IPropertySet)
    @abstractmethod
    def set_properties(self, configuration: windows_foundation_collections.IPropertySet, /) -> None: ...

@typing.final
class _IMediaFrame: ...

class IMediaFrame(windows_foundation.IClosable, winrt._winrt.IInspectable):
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.IMediaFrame::get_Duration()
    @_property
    @abstractmethod
    def duration(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.IMediaFrame::put_Duration(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @duration.setter
    @abstractmethod
    def duration(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # Windows.Foundation.Collections.IPropertySet Windows.Media.IMediaFrame::get_ExtendedProperties()
    @_property
    @abstractmethod
    def extended_properties(self) -> windows_foundation_collections.IPropertySet: ...
    # System.Boolean Windows.Media.IMediaFrame::get_IsDiscontinuous()
    @_property
    @abstractmethod
    def is_discontinuous(self) -> bool: ...
    # System.Void Windows.Media.IMediaFrame::put_IsDiscontinuous(System.Boolean)
    @is_discontinuous.setter
    @abstractmethod
    def is_discontinuous(self, value: bool) -> None: ...
    # System.Boolean Windows.Media.IMediaFrame::get_IsReadOnly()
    @_property
    @abstractmethod
    def is_read_only(self) -> bool: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.IMediaFrame::get_RelativeTime()
    @_property
    @abstractmethod
    def relative_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.IMediaFrame::put_RelativeTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @relative_time.setter
    @abstractmethod
    def relative_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.IMediaFrame::get_SystemRelativeTime()
    @_property
    @abstractmethod
    def system_relative_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.IMediaFrame::put_SystemRelativeTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @system_relative_time.setter
    @abstractmethod
    def system_relative_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # System.String Windows.Media.IMediaFrame::get_Type()
    @_property
    @abstractmethod
    def type(self) -> str: ...

@typing.final
class _IMediaMarker: ...

class IMediaMarker(winrt._winrt.IInspectable):
    # System.String Windows.Media.IMediaMarker::get_MediaMarkerType()
    @_property
    @abstractmethod
    def media_marker_type(self) -> str: ...
    # System.String Windows.Media.IMediaMarker::get_Text()
    @_property
    @abstractmethod
    def text(self) -> str: ...
    # Windows.Foundation.TimeSpan Windows.Media.IMediaMarker::get_Time()
    @_property
    @abstractmethod
    def time(self) -> datetime.timedelta: ...

@typing.final
class _IMediaMarkers: ...

class IMediaMarkers(winrt._winrt.IInspectable):
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.IMediaMarker> Windows.Media.IMediaMarkers::get_Markers()
    @_property
    @abstractmethod
    def markers(self) -> typing.Sequence[IMediaMarker]: ...

