# WARNING: Please don't edit this file. It was generated by Python/WinRT v1.0.0-beta.2

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.foundation
except Exception:
    pass

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

try:
    import winsdk.windows.graphics.directx.direct3d11
except Exception:
    pass

try:
    import winsdk.windows.graphics.imaging
except Exception:
    pass

try:
    import winsdk.windows.media.core
except Exception:
    pass

try:
    import winsdk.windows.media.effects
except Exception:
    pass

try:
    import winsdk.windows.media.mediaproperties
except Exception:
    pass

try:
    import winsdk.windows.media.transcoding
except Exception:
    pass

try:
    import winsdk.windows.storage
except Exception:
    pass

try:
    import winsdk.windows.ui
except Exception:
    pass

class MediaTrimmingPreference(enum.IntEnum):
    FAST = 0
    PRECISE = 1

class VideoFramePrecision(enum.IntEnum):
    NEAREST_FRAME = 0
    NEAREST_KEY_FRAME = 1

class BackgroundAudioTrack(_winrt.Object):
    volume: _winrt.Double
    trim_time_from_start: winsdk.windows.foundation.TimeSpan
    trim_time_from_end: winsdk.windows.foundation.TimeSpan
    delay: winsdk.windows.foundation.TimeSpan
    audio_effect_definitions: winsdk.windows.foundation.collections.IVector[winsdk.windows.media.effects.IAudioEffectDefinition]
    original_duration: winsdk.windows.foundation.TimeSpan
    trimmed_duration: winsdk.windows.foundation.TimeSpan
    user_data: winsdk.windows.foundation.collections.IMap[str, str]
    @staticmethod
    def _from(obj: _winrt.Object) -> BackgroundAudioTrack: ...
    @typing.overload
    def clone(self) -> BackgroundAudioTrack: ...
    @typing.overload
    @staticmethod
    def create_from_embedded_audio_track(embedded_audio_track: EmbeddedAudioTrack) -> BackgroundAudioTrack: ...
    @typing.overload
    @staticmethod
    def create_from_file_async(file: winsdk.windows.storage.IStorageFile) -> winsdk.windows.foundation.IAsyncOperation[BackgroundAudioTrack]: ...
    @typing.overload
    def get_audio_encoding_properties(self) -> winsdk.windows.media.mediaproperties.AudioEncodingProperties: ...

class EmbeddedAudioTrack(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> EmbeddedAudioTrack: ...
    @typing.overload
    def get_audio_encoding_properties(self) -> winsdk.windows.media.mediaproperties.AudioEncodingProperties: ...

class MediaClip(_winrt.Object):
    selected_embedded_audio_track_index: _winrt.UInt32
    trim_time_from_end: winsdk.windows.foundation.TimeSpan
    volume: _winrt.Double
    trim_time_from_start: winsdk.windows.foundation.TimeSpan
    embedded_audio_tracks: winsdk.windows.foundation.collections.IVectorView[EmbeddedAudioTrack]
    end_time_in_composition: winsdk.windows.foundation.TimeSpan
    original_duration: winsdk.windows.foundation.TimeSpan
    start_time_in_composition: winsdk.windows.foundation.TimeSpan
    trimmed_duration: winsdk.windows.foundation.TimeSpan
    user_data: winsdk.windows.foundation.collections.IMap[str, str]
    video_effect_definitions: winsdk.windows.foundation.collections.IVector[winsdk.windows.media.effects.IVideoEffectDefinition]
    audio_effect_definitions: winsdk.windows.foundation.collections.IVector[winsdk.windows.media.effects.IAudioEffectDefinition]
    @staticmethod
    def _from(obj: _winrt.Object) -> MediaClip: ...
    @typing.overload
    def clone(self) -> MediaClip: ...
    @typing.overload
    @staticmethod
    def create_from_color(color: winsdk.windows.ui.Color, original_duration: winsdk.windows.foundation.TimeSpan) -> MediaClip: ...
    @typing.overload
    @staticmethod
    def create_from_file_async(file: winsdk.windows.storage.IStorageFile) -> winsdk.windows.foundation.IAsyncOperation[MediaClip]: ...
    @typing.overload
    @staticmethod
    def create_from_image_file_async(file: winsdk.windows.storage.IStorageFile, original_duration: winsdk.windows.foundation.TimeSpan) -> winsdk.windows.foundation.IAsyncOperation[MediaClip]: ...
    @typing.overload
    @staticmethod
    def create_from_surface(surface: winsdk.windows.graphics.directx.direct3d11.IDirect3DSurface, original_duration: winsdk.windows.foundation.TimeSpan) -> MediaClip: ...
    @typing.overload
    def get_video_encoding_properties(self) -> winsdk.windows.media.mediaproperties.VideoEncodingProperties: ...

class MediaComposition(_winrt.Object):
    background_audio_tracks: winsdk.windows.foundation.collections.IVector[BackgroundAudioTrack]
    clips: winsdk.windows.foundation.collections.IVector[MediaClip]
    duration: winsdk.windows.foundation.TimeSpan
    user_data: winsdk.windows.foundation.collections.IMap[str, str]
    overlay_layers: winsdk.windows.foundation.collections.IVector[MediaOverlayLayer]
    @staticmethod
    def _from(obj: _winrt.Object) -> MediaComposition: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def clone(self) -> MediaComposition: ...
    @typing.overload
    def create_default_encoding_profile(self) -> winsdk.windows.media.mediaproperties.MediaEncodingProfile: ...
    @typing.overload
    def generate_media_stream_source(self) -> winsdk.windows.media.core.MediaStreamSource: ...
    @typing.overload
    def generate_media_stream_source(self, encoding_profile: winsdk.windows.media.mediaproperties.MediaEncodingProfile) -> winsdk.windows.media.core.MediaStreamSource: ...
    @typing.overload
    def generate_preview_media_stream_source(self, scaled_width: _winrt.Int32, scaled_height: _winrt.Int32) -> winsdk.windows.media.core.MediaStreamSource: ...
    @typing.overload
    def get_thumbnail_async(self, time_from_start: winsdk.windows.foundation.TimeSpan, scaled_width: _winrt.Int32, scaled_height: _winrt.Int32, frame_precision: VideoFramePrecision) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.graphics.imaging.ImageStream]: ...
    @typing.overload
    def get_thumbnails_async(self, times_from_start: typing.Iterable[winsdk.windows.foundation.TimeSpan], scaled_width: _winrt.Int32, scaled_height: _winrt.Int32, frame_precision: VideoFramePrecision) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[winsdk.windows.graphics.imaging.ImageStream]]: ...
    @typing.overload
    @staticmethod
    def load_async(file: winsdk.windows.storage.StorageFile) -> winsdk.windows.foundation.IAsyncOperation[MediaComposition]: ...
    @typing.overload
    def render_to_file_async(self, destination: winsdk.windows.storage.IStorageFile) -> winsdk.windows.foundation.IAsyncOperationWithProgress[winsdk.windows.media.transcoding.TranscodeFailureReason, _winrt.Double]: ...
    @typing.overload
    def render_to_file_async(self, destination: winsdk.windows.storage.IStorageFile, trimming_preference: MediaTrimmingPreference) -> winsdk.windows.foundation.IAsyncOperationWithProgress[winsdk.windows.media.transcoding.TranscodeFailureReason, _winrt.Double]: ...
    @typing.overload
    def render_to_file_async(self, destination: winsdk.windows.storage.IStorageFile, trimming_preference: MediaTrimmingPreference, encoding_profile: winsdk.windows.media.mediaproperties.MediaEncodingProfile) -> winsdk.windows.foundation.IAsyncOperationWithProgress[winsdk.windows.media.transcoding.TranscodeFailureReason, _winrt.Double]: ...
    @typing.overload
    def save_async(self, file: winsdk.windows.storage.IStorageFile) -> winsdk.windows.foundation.IAsyncAction: ...

class MediaOverlay(_winrt.Object):
    position: winsdk.windows.foundation.Rect
    opacity: _winrt.Double
    delay: winsdk.windows.foundation.TimeSpan
    audio_enabled: _winrt.Boolean
    clip: MediaClip
    @staticmethod
    def _from(obj: _winrt.Object) -> MediaOverlay: ...
    @typing.overload
    def __init__(self, clip: MediaClip) -> None: ...
    @typing.overload
    def __init__(self, clip: MediaClip, position: winsdk.windows.foundation.Rect, opacity: _winrt.Double) -> None: ...
    @typing.overload
    def clone(self) -> MediaOverlay: ...

class MediaOverlayLayer(_winrt.Object):
    custom_compositor_definition: winsdk.windows.media.effects.IVideoCompositorDefinition
    overlays: winsdk.windows.foundation.collections.IVector[MediaOverlay]
    @staticmethod
    def _from(obj: _winrt.Object) -> MediaOverlayLayer: ...
    @typing.overload
    def __init__(self, compositor_definition: winsdk.windows.media.effects.IVideoCompositorDefinition) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def clone(self) -> MediaOverlayLayer: ...

