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

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
import winrt.windows.foundation.collections
import winrt.windows.media
import winrt.windows.media.core
import winrt.windows.storage.streams

from winrt.windows.media.speechsynthesis import SpeechAppendedSilence, SpeechPunctuationSilence, VoiceGender

Self = typing.TypeVar('Self')

@typing.final
class SpeechSynthesisStream(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SpeechSynthesisStream: ...
    def clone_stream(self) -> typing.Optional[winrt.windows.storage.streams.IRandomAccessStream]: ...
    def close(self) -> None: ...
    def flush_async(self) -> winrt.windows.foundation.IAsyncOperation[bool]: ...
    def get_input_stream_at(self, position: winrt.system.UInt64, /) -> typing.Optional[winrt.windows.storage.streams.IInputStream]: ...
    def get_output_stream_at(self, position: winrt.system.UInt64, /) -> typing.Optional[winrt.windows.storage.streams.IOutputStream]: ...
    def read_async(self, buffer: typing.Optional[winrt.windows.storage.streams.IBuffer], count: winrt.system.UInt32, options: winrt.windows.storage.streams.InputStreamOptions, /) -> winrt.windows.foundation.IAsyncOperationWithProgress[winrt.windows.storage.streams.IBuffer, winrt.system.UInt32]: ...
    def seek(self, position: winrt.system.UInt64, /) -> None: ...
    def write_async(self, buffer: typing.Optional[winrt.windows.storage.streams.IBuffer], /) -> winrt.windows.foundation.IAsyncOperationWithProgress[winrt.system.UInt32, winrt.system.UInt32]: ...
    @_property
    def timed_metadata_tracks(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[winrt.windows.media.core.TimedMetadataTrack]]: ...
    @_property
    def markers(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[winrt.windows.media.IMediaMarker]]: ...
    @_property
    def content_type(self) -> str: ...
    @_property
    def size(self) -> winrt.system.UInt64: ...
    @size.setter
    def size(self, value: winrt.system.UInt64) -> None: ...
    @_property
    def can_read(self) -> bool: ...
    @_property
    def can_write(self) -> bool: ...
    @_property
    def position(self) -> winrt.system.UInt64: ...

@typing.final
class SpeechSynthesizer_Static(type):
    def try_set_default_voice_async(cls, voice: typing.Optional[VoiceInformation], /) -> winrt.windows.foundation.IAsyncOperation[bool]: ...
    @_property
    def all_voices(cls) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[VoiceInformation]]: ...
    @_property
    def default_voice(cls) -> typing.Optional[VoiceInformation]: ...

@typing.final
class SpeechSynthesizer(winrt.system.Object, metaclass=SpeechSynthesizer_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SpeechSynthesizer: ...
    def __new__(cls: typing.Type[SpeechSynthesizer]) -> SpeechSynthesizer:...
    def close(self) -> None: ...
    def synthesize_ssml_to_stream_async(self, ssml: str, /) -> winrt.windows.foundation.IAsyncOperation[SpeechSynthesisStream]: ...
    def synthesize_text_to_stream_async(self, text: str, /) -> winrt.windows.foundation.IAsyncOperation[SpeechSynthesisStream]: ...
    @_property
    def voice(self) -> typing.Optional[VoiceInformation]: ...
    @voice.setter
    def voice(self, value: typing.Optional[VoiceInformation]) -> None: ...
    @_property
    def options(self) -> typing.Optional[SpeechSynthesizerOptions]: ...

@typing.final
class SpeechSynthesizerOptions(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SpeechSynthesizerOptions: ...
    @_property
    def include_word_boundary_metadata(self) -> bool: ...
    @include_word_boundary_metadata.setter
    def include_word_boundary_metadata(self, value: bool) -> None: ...
    @_property
    def include_sentence_boundary_metadata(self) -> bool: ...
    @include_sentence_boundary_metadata.setter
    def include_sentence_boundary_metadata(self, value: bool) -> None: ...
    @_property
    def speaking_rate(self) -> winrt.system.Double: ...
    @speaking_rate.setter
    def speaking_rate(self, value: winrt.system.Double) -> None: ...
    @_property
    def audio_volume(self) -> winrt.system.Double: ...
    @audio_volume.setter
    def audio_volume(self, value: winrt.system.Double) -> None: ...
    @_property
    def audio_pitch(self) -> winrt.system.Double: ...
    @audio_pitch.setter
    def audio_pitch(self, value: winrt.system.Double) -> None: ...
    @_property
    def punctuation_silence(self) -> SpeechPunctuationSilence: ...
    @punctuation_silence.setter
    def punctuation_silence(self, value: SpeechPunctuationSilence) -> None: ...
    @_property
    def appended_silence(self) -> SpeechAppendedSilence: ...
    @appended_silence.setter
    def appended_silence(self, value: SpeechAppendedSilence) -> None: ...

@typing.final
class VoiceInformation(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VoiceInformation: ...
    @_property
    def description(self) -> str: ...
    @_property
    def display_name(self) -> str: ...
    @_property
    def gender(self) -> VoiceGender: ...
    @_property
    def id(self) -> str: ...
    @_property
    def language(self) -> str: ...

