# 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

import winrt._winrt
import winrt.system
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.graphics.directx.direct3d11 as windows_graphics_directx_direct3d11
import winrt.windows.graphics.imaging as windows_graphics_imaging
import winrt.windows.media.core as windows_media_core
import winrt.windows.media.effects as windows_media_effects
import winrt.windows.media.mediaproperties as windows_media_mediaproperties
import winrt.windows.media.transcoding as windows_media_transcoding
import winrt.windows.storage as windows_storage
import winrt.windows.ui as windows_ui

from winrt.windows.media.editing import MediaTrimmingPreference, VideoFramePrecision

Self = typing.TypeVar('Self')

@typing.final
class BackgroundAudioTrack_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.Editing.BackgroundAudioTrack Windows.Media.Editing.BackgroundAudioTrack::CreateFromEmbeddedAudioTrack(Windows.Media.Editing.EmbeddedAudioTrack)
    def create_from_embedded_audio_track(cls, embedded_audio_track: EmbeddedAudioTrack, /) -> BackgroundAudioTrack: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Editing.BackgroundAudioTrack> Windows.Media.Editing.BackgroundAudioTrack::CreateFromFileAsync(Windows.Storage.IStorageFile)
    def create_from_file_async(cls, file: windows_storage.IStorageFile, /) -> windows_foundation.IAsyncOperation[BackgroundAudioTrack]: ...

@typing.final
class BackgroundAudioTrack(winrt.system.Object, metaclass=BackgroundAudioTrack_Static):
    # Windows.Media.Editing.BackgroundAudioTrack Windows.Media.Editing.BackgroundAudioTrack::Clone()
    def clone(self) -> BackgroundAudioTrack: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Editing.BackgroundAudioTrack::GetAudioEncodingProperties()
    def get_audio_encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...
    # System.Double Windows.Media.Editing.BackgroundAudioTrack::get_Volume()
    @_property
    def volume(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Editing.BackgroundAudioTrack::put_Volume(System.Double)
    @volume.setter
    def volume(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.BackgroundAudioTrack::get_TrimTimeFromStart()
    @_property
    def trim_time_from_start(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.Editing.BackgroundAudioTrack::put_TrimTimeFromStart(Windows.Foundation.TimeSpan)
    @trim_time_from_start.setter
    def trim_time_from_start(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.BackgroundAudioTrack::get_TrimTimeFromEnd()
    @_property
    def trim_time_from_end(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.Editing.BackgroundAudioTrack::put_TrimTimeFromEnd(Windows.Foundation.TimeSpan)
    @trim_time_from_end.setter
    def trim_time_from_end(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.BackgroundAudioTrack::get_Delay()
    @_property
    def delay(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.Editing.BackgroundAudioTrack::put_Delay(Windows.Foundation.TimeSpan)
    @delay.setter
    def delay(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Editing.BackgroundAudioTrack::get_AudioEffectDefinitions()
    @_property
    def audio_effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.BackgroundAudioTrack::get_OriginalDuration()
    @_property
    def original_duration(self) -> datetime.timedelta: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.BackgroundAudioTrack::get_TrimmedDuration()
    @_property
    def trimmed_duration(self) -> datetime.timedelta: ...
    # Windows.Foundation.Collections.IMap`2<System.String,System.String> Windows.Media.Editing.BackgroundAudioTrack::get_UserData()
    @_property
    def user_data(self) -> typing.MutableMapping[str, str]: ...

@typing.final
class EmbeddedAudioTrack(winrt.system.Object):
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Editing.EmbeddedAudioTrack::GetAudioEncodingProperties()
    def get_audio_encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...

@typing.final
class MediaClip_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.Editing.MediaClip Windows.Media.Editing.MediaClip::CreateFromColor(Windows.UI.Color,Windows.Foundation.TimeSpan)
    def create_from_color(cls, color: typing.Union[windows_ui.Color, typing.Tuple[winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8, winrt.system.UInt8]], original_duration: datetime.timedelta, /) -> MediaClip: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Editing.MediaClip> Windows.Media.Editing.MediaClip::CreateFromFileAsync(Windows.Storage.IStorageFile)
    def create_from_file_async(cls, file: windows_storage.IStorageFile, /) -> windows_foundation.IAsyncOperation[MediaClip]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Editing.MediaClip> Windows.Media.Editing.MediaClip::CreateFromImageFileAsync(Windows.Storage.IStorageFile,Windows.Foundation.TimeSpan)
    def create_from_image_file_async(cls, file: windows_storage.IStorageFile, original_duration: datetime.timedelta, /) -> windows_foundation.IAsyncOperation[MediaClip]: ...
    # Windows.Media.Editing.MediaClip Windows.Media.Editing.MediaClip::CreateFromSurface(Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface,Windows.Foundation.TimeSpan)
    def create_from_surface(cls, surface: windows_graphics_directx_direct3d11.IDirect3DSurface, original_duration: datetime.timedelta, /) -> MediaClip: ...

@typing.final
class MediaClip(winrt.system.Object, metaclass=MediaClip_Static):
    # Windows.Media.Editing.MediaClip Windows.Media.Editing.MediaClip::Clone()
    def clone(self) -> MediaClip: ...
    # Windows.Media.MediaProperties.VideoEncodingProperties Windows.Media.Editing.MediaClip::GetVideoEncodingProperties()
    def get_video_encoding_properties(self) -> windows_media_mediaproperties.VideoEncodingProperties: ...
    # System.UInt32 Windows.Media.Editing.MediaClip::get_SelectedEmbeddedAudioTrackIndex()
    @_property
    def selected_embedded_audio_track_index(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Media.Editing.MediaClip::put_SelectedEmbeddedAudioTrackIndex(System.UInt32)
    @selected_embedded_audio_track_index.setter
    def selected_embedded_audio_track_index(self, value: winrt.system.UInt32) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.MediaClip::get_TrimTimeFromEnd()
    @_property
    def trim_time_from_end(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.Editing.MediaClip::put_TrimTimeFromEnd(Windows.Foundation.TimeSpan)
    @trim_time_from_end.setter
    def trim_time_from_end(self, value: datetime.timedelta) -> None: ...
    # System.Double Windows.Media.Editing.MediaClip::get_Volume()
    @_property
    def volume(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Editing.MediaClip::put_Volume(System.Double)
    @volume.setter
    def volume(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.MediaClip::get_TrimTimeFromStart()
    @_property
    def trim_time_from_start(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.Editing.MediaClip::put_TrimTimeFromStart(Windows.Foundation.TimeSpan)
    @trim_time_from_start.setter
    def trim_time_from_start(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Editing.EmbeddedAudioTrack> Windows.Media.Editing.MediaClip::get_EmbeddedAudioTracks()
    @_property
    def embedded_audio_tracks(self) -> typing.Sequence[EmbeddedAudioTrack]: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.MediaClip::get_EndTimeInComposition()
    @_property
    def end_time_in_composition(self) -> datetime.timedelta: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.MediaClip::get_OriginalDuration()
    @_property
    def original_duration(self) -> datetime.timedelta: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.MediaClip::get_StartTimeInComposition()
    @_property
    def start_time_in_composition(self) -> datetime.timedelta: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.MediaClip::get_TrimmedDuration()
    @_property
    def trimmed_duration(self) -> datetime.timedelta: ...
    # Windows.Foundation.Collections.IMap`2<System.String,System.String> Windows.Media.Editing.MediaClip::get_UserData()
    @_property
    def user_data(self) -> typing.MutableMapping[str, str]: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IVideoEffectDefinition> Windows.Media.Editing.MediaClip::get_VideoEffectDefinitions()
    @_property
    def video_effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IVideoEffectDefinition]: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Editing.MediaClip::get_AudioEffectDefinitions()
    @_property
    def audio_effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...

@typing.final
class MediaComposition_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Editing.MediaComposition> Windows.Media.Editing.MediaComposition::LoadAsync(Windows.Storage.StorageFile)
    def load_async(cls, file: windows_storage.StorageFile, /) -> windows_foundation.IAsyncOperation[MediaComposition]: ...

@typing.final
class MediaComposition(winrt.system.Object, metaclass=MediaComposition_Static):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Media.Editing.MediaComposition Windows.Media.Editing.MediaComposition::Clone()
    def clone(self) -> MediaComposition: ...
    # Windows.Media.MediaProperties.MediaEncodingProfile Windows.Media.Editing.MediaComposition::CreateDefaultEncodingProfile()
    def create_default_encoding_profile(self) -> windows_media_mediaproperties.MediaEncodingProfile: ...
    # Windows.Media.Core.MediaStreamSource Windows.Media.Editing.MediaComposition::GenerateMediaStreamSource()
    def generate_media_stream_source(self) -> windows_media_core.MediaStreamSource: ...
    # Windows.Media.Core.MediaStreamSource Windows.Media.Editing.MediaComposition::GenerateMediaStreamSource(Windows.Media.MediaProperties.MediaEncodingProfile)
    def generate_media_stream_source_with_profile(self, encoding_profile: windows_media_mediaproperties.MediaEncodingProfile, /) -> windows_media_core.MediaStreamSource: ...
    # Windows.Media.Core.MediaStreamSource Windows.Media.Editing.MediaComposition::GeneratePreviewMediaStreamSource(System.Int32,System.Int32)
    def generate_preview_media_stream_source(self, scaled_width: winrt.system.Int32, scaled_height: winrt.system.Int32, /) -> windows_media_core.MediaStreamSource: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Graphics.Imaging.ImageStream> Windows.Media.Editing.MediaComposition::GetThumbnailAsync(Windows.Foundation.TimeSpan,System.Int32,System.Int32,Windows.Media.Editing.VideoFramePrecision)
    def get_thumbnail_async(self, time_from_start: datetime.timedelta, scaled_width: winrt.system.Int32, scaled_height: winrt.system.Int32, frame_precision: VideoFramePrecision, /) -> windows_foundation.IAsyncOperation[windows_graphics_imaging.ImageStream]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Foundation.Collections.IVectorView`1<Windows.Graphics.Imaging.ImageStream>> Windows.Media.Editing.MediaComposition::GetThumbnailsAsync(Windows.Foundation.Collections.IIterable`1<Windows.Foundation.TimeSpan>,System.Int32,System.Int32,Windows.Media.Editing.VideoFramePrecision)
    def get_thumbnails_async(self, times_from_start: typing.Iterable[datetime.timedelta], scaled_width: winrt.system.Int32, scaled_height: winrt.system.Int32, frame_precision: VideoFramePrecision, /) -> windows_foundation.IAsyncOperation[typing.Sequence[windows_graphics_imaging.ImageStream]]: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<Windows.Media.Transcoding.TranscodeFailureReason,System.Double> Windows.Media.Editing.MediaComposition::RenderToFileAsync(Windows.Storage.IStorageFile)
    def render_to_file_async(self, destination: windows_storage.IStorageFile, /) -> windows_foundation.IAsyncOperationWithProgress[windows_media_transcoding.TranscodeFailureReason, winrt.system.Double]: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<Windows.Media.Transcoding.TranscodeFailureReason,System.Double> Windows.Media.Editing.MediaComposition::RenderToFileAsync(Windows.Storage.IStorageFile,Windows.Media.Editing.MediaTrimmingPreference,Windows.Media.MediaProperties.MediaEncodingProfile)
    def render_to_file_with_profile_async(self, destination: windows_storage.IStorageFile, trimming_preference: MediaTrimmingPreference, encoding_profile: windows_media_mediaproperties.MediaEncodingProfile, /) -> windows_foundation.IAsyncOperationWithProgress[windows_media_transcoding.TranscodeFailureReason, winrt.system.Double]: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<Windows.Media.Transcoding.TranscodeFailureReason,System.Double> Windows.Media.Editing.MediaComposition::RenderToFileAsync(Windows.Storage.IStorageFile,Windows.Media.Editing.MediaTrimmingPreference)
    def render_to_file_with_trimming_preference_async(self, destination: windows_storage.IStorageFile, trimming_preference: MediaTrimmingPreference, /) -> windows_foundation.IAsyncOperationWithProgress[windows_media_transcoding.TranscodeFailureReason, winrt.system.Double]: ...
    # Windows.Foundation.IAsyncAction Windows.Media.Editing.MediaComposition::SaveAsync(Windows.Storage.IStorageFile)
    def save_async(self, file: windows_storage.IStorageFile, /) -> windows_foundation.IAsyncAction: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Editing.BackgroundAudioTrack> Windows.Media.Editing.MediaComposition::get_BackgroundAudioTracks()
    @_property
    def background_audio_tracks(self) -> typing.MutableSequence[BackgroundAudioTrack]: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Editing.MediaClip> Windows.Media.Editing.MediaComposition::get_Clips()
    @_property
    def clips(self) -> typing.MutableSequence[MediaClip]: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.MediaComposition::get_Duration()
    @_property
    def duration(self) -> datetime.timedelta: ...
    # Windows.Foundation.Collections.IMap`2<System.String,System.String> Windows.Media.Editing.MediaComposition::get_UserData()
    @_property
    def user_data(self) -> typing.MutableMapping[str, str]: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Editing.MediaOverlayLayer> Windows.Media.Editing.MediaComposition::get_OverlayLayers()
    @_property
    def overlay_layers(self) -> typing.MutableSequence[MediaOverlayLayer]: ...

@typing.final
class MediaOverlay(winrt.system.Object):
    @typing.overload
    def __new__(cls: typing.Type[Self], clip: MediaClip) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], clip: MediaClip, position: typing.Union[windows_foundation.Rect, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single, winrt.system.Single]], opacity: winrt.system.Double) -> Self: ...
    # Windows.Media.Editing.MediaOverlay Windows.Media.Editing.MediaOverlay::Clone()
    def clone(self) -> MediaOverlay: ...
    # Windows.Foundation.Rect Windows.Media.Editing.MediaOverlay::get_Position()
    @_property
    def position(self) -> windows_foundation.Rect: ...
    # System.Void Windows.Media.Editing.MediaOverlay::put_Position(Windows.Foundation.Rect)
    @position.setter
    def position(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.Editing.MediaOverlay::get_Opacity()
    @_property
    def opacity(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Editing.MediaOverlay::put_Opacity(System.Double)
    @opacity.setter
    def opacity(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Editing.MediaOverlay::get_Delay()
    @_property
    def delay(self) -> datetime.timedelta: ...
    # System.Void Windows.Media.Editing.MediaOverlay::put_Delay(Windows.Foundation.TimeSpan)
    @delay.setter
    def delay(self, value: datetime.timedelta) -> None: ...
    # System.Boolean Windows.Media.Editing.MediaOverlay::get_AudioEnabled()
    @_property
    def audio_enabled(self) -> bool: ...
    # System.Void Windows.Media.Editing.MediaOverlay::put_AudioEnabled(System.Boolean)
    @audio_enabled.setter
    def audio_enabled(self, value: bool) -> None: ...
    # Windows.Media.Editing.MediaClip Windows.Media.Editing.MediaOverlay::get_Clip()
    @_property
    def clip(self) -> MediaClip: ...

@typing.final
class MediaOverlayLayer(winrt.system.Object):
    @typing.overload
    def __new__(cls: typing.Type[Self], compositor_definition: windows_media_effects.IVideoCompositorDefinition) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Media.Editing.MediaOverlayLayer Windows.Media.Editing.MediaOverlayLayer::Clone()
    def clone(self) -> MediaOverlayLayer: ...
    # Windows.Media.Effects.IVideoCompositorDefinition Windows.Media.Editing.MediaOverlayLayer::get_CustomCompositorDefinition()
    @_property
    def custom_compositor_definition(self) -> windows_media_effects.IVideoCompositorDefinition: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Editing.MediaOverlay> Windows.Media.Editing.MediaOverlayLayer::get_Overlays()
    @_property
    def overlays(self) -> typing.MutableSequence[MediaOverlay]: ...

