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

import enum
import datetime
import sys
import types
import typing

import winsdk.system
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.media
import winsdk.windows.media.core
import winsdk.windows.storage.streams

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

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

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

Self = typing.TypeVar('Self')

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

class SpeechSynthesizer(winsdk.system.Object):
    voice: typing.Optional[VoiceInformation]
    options: typing.Optional[SpeechSynthesizerOptions]
    all_voices: typing.ClassVar[typing.Optional[winsdk.windows.foundation.collections.IVectorView[VoiceInformation]]]
    default_voice: typing.ClassVar[typing.Optional[VoiceInformation]]
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> SpeechSynthesizer: ...
    def __new__(cls: typing.Type[SpeechSynthesizer]) -> SpeechSynthesizer:...
    def close(self) -> None: ...
    def synthesize_ssml_to_stream_async(self, ssml: str) -> winsdk.windows.foundation.IAsyncOperation[SpeechSynthesisStream]: ...
    def synthesize_text_to_stream_async(self, text: str) -> winsdk.windows.foundation.IAsyncOperation[SpeechSynthesisStream]: ...
    @staticmethod
    def try_set_default_voice_async(voice: typing.Optional[VoiceInformation]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.system.Boolean]: ...

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

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

