# 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.media
except Exception:
    pass

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

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

class SpeechAppendedSilence(enum.IntEnum):
    DEFAULT = 0
    MIN = 1

class SpeechPunctuationSilence(enum.IntEnum):
    DEFAULT = 0
    MIN = 1

class VoiceGender(enum.IntEnum):
    MALE = 0
    FEMALE = 1

class SpeechSynthesisStream(winsdk.windows.storage.streams.IRandomAccessStreamWithContentType, winsdk.windows.storage.streams.IContentTypeProvider, winsdk.windows.storage.streams.IRandomAccessStream, winsdk.windows.storage.streams.IOutputStream, winsdk.windows.foundation.IClosable, winsdk.windows.storage.streams.IInputStream, winsdk.windows.media.core.ITimedMetadataTrackProvider, _winrt.Object):
    timed_metadata_tracks: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.media.core.TimedMetadataTrack]
    markers: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.media.IMediaMarker]
    content_type: str
    size: _winrt.UInt64
    can_read: _winrt.Boolean
    can_write: _winrt.Boolean
    position: _winrt.UInt64
    @staticmethod
    def _from(obj: _winrt.Object) -> SpeechSynthesisStream: ...
    @typing.overload
    def clone_stream(self) -> winsdk.windows.storage.streams.IRandomAccessStream: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def get_input_stream_at(self, position: _winrt.UInt64) -> winsdk.windows.storage.streams.IInputStream: ...
    @typing.overload
    def get_output_stream_at(self, position: _winrt.UInt64) -> winsdk.windows.storage.streams.IOutputStream: ...
    @typing.overload
    def read_async(self, buffer: winsdk.windows.storage.streams.IBuffer, count: _winrt.UInt32, options: winsdk.windows.storage.streams.InputStreamOptions) -> winsdk.windows.foundation.IAsyncOperationWithProgress[winsdk.windows.storage.streams.IBuffer, _winrt.UInt32]: ...
    @typing.overload
    def seek(self, position: _winrt.UInt64) -> None: ...
    @typing.overload
    def write_async(self, buffer: winsdk.windows.storage.streams.IBuffer) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt32, _winrt.UInt32]: ...

class SpeechSynthesizer(winsdk.windows.foundation.IClosable, _winrt.Object):
    voice: VoiceInformation
    options: SpeechSynthesizerOptions
    all_voices: winsdk.windows.foundation.collections.IVectorView[VoiceInformation]
    default_voice: VoiceInformation
    @staticmethod
    def _from(obj: _winrt.Object) -> SpeechSynthesizer: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def synthesize_ssml_to_stream_async(self, ssml: str) -> winsdk.windows.foundation.IAsyncOperation[SpeechSynthesisStream]: ...
    @typing.overload
    def synthesize_text_to_stream_async(self, text: str) -> winsdk.windows.foundation.IAsyncOperation[SpeechSynthesisStream]: ...
    @typing.overload
    @staticmethod
    def try_set_default_voice_async(voice: VoiceInformation) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...

class SpeechSynthesizerOptions(_winrt.Object):
    include_word_boundary_metadata: _winrt.Boolean
    include_sentence_boundary_metadata: _winrt.Boolean
    speaking_rate: _winrt.Double
    audio_volume: _winrt.Double
    audio_pitch: _winrt.Double
    punctuation_silence: SpeechPunctuationSilence
    appended_silence: SpeechAppendedSilence
    @staticmethod
    def _from(obj: _winrt.Object) -> SpeechSynthesizerOptions: ...

class VoiceInformation(_winrt.Object):
    description: str
    display_name: str
    gender: VoiceGender
    id: str
    language: str
    @staticmethod
    def _from(obj: _winrt.Object) -> VoiceInformation: ...

