//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0009
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Media.idl";
import "Windows.Storage.Streams.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Emedia_h__)")
cpp_quote("#include <Windows.Media.h>")
cpp_quote("#endif // !defined(__windows2Emedia_h__)")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;
    }
}
namespace Windows
{
    namespace Media
    {
        interface IMediaMarker;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IContentTypeProvider;

            interface IInputStream;

            interface IOutputStream;

            interface IRandomAccessStream;

            interface IRandomAccessStreamWithContentType;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace SpeechSynthesis
        {
            typedef enum VoiceGender VoiceGender;

            interface IVoiceInformation;

            interface IInstalledVoicesStatic;

            interface ISpeechSynthesisStream;

            interface ISpeechSynthesizer;

            runtimeclass VoiceInformation;

            runtimeclass SpeechSynthesisStream;

            runtimeclass SpeechSynthesizer;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace SpeechSynthesis
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Media.SpeechSynthesis.VoiceInformation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.SpeechSynthesis.VoiceInformation*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.SpeechSynthesis.VoiceInformation*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace SpeechSynthesis
        {
            [version(0x06030000)]
            enum VoiceGender
            {
                Male   = 0,
                Female = 1
            };

            [exclusiveto(Windows.Media.SpeechSynthesis.VoiceInformation)]
            [uuid(B127D6A4-1291-4604-AA9C-83134083352C)]
            [version(0x06030000)]
            interface IVoiceInformation : IInspectable
            {
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT Language([out] [retval] HSTRING* value);
                [propget] HRESULT Description([out] [retval] HSTRING* value);
                [propget] HRESULT Gender([out] [retval] Windows.Media.SpeechSynthesis.VoiceGender* value);
            }

            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer)]
            [uuid(7D526ECC-7533-4C3F-85BE-888C2BAEEBDC)]
            [version(0x06030000)]
            interface IInstalledVoicesStatic : IInspectable
            {
                [propget] HRESULT AllVoices([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.SpeechSynthesis.VoiceInformation*>** value);
                [propget] HRESULT DefaultVoice([out] [retval] Windows.Media.SpeechSynthesis.VoiceInformation** value);
            }

            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesisStream)]
            [uuid(83E46E93-244C-4622-BA0B-6229C4D0D65D)]
            [version(0x06030000)]
            interface ISpeechSynthesisStream : IInspectable
                requires
                    Windows.Storage.Streams.IRandomAccessStreamWithContentType,
                    Windows.Storage.Streams.IRandomAccessStream,
                    Windows.Foundation.IClosable,
                    Windows.Storage.Streams.IInputStream,
                    Windows.Storage.Streams.IOutputStream,
                    Windows.Storage.Streams.IContentTypeProvider
            {
                [propget] HRESULT Markers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.IMediaMarker*>** value);
            }

            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer)]
            [uuid(CE9F7C76-97F4-4CED-AD68-D51C458E45C6)]
            [version(0x06030000)]
            interface ISpeechSynthesizer : IInspectable
            {
                HRESULT SynthesizeTextToStreamAsync([in] HSTRING text, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*>** operation);
                HRESULT SynthesizeSsmlToStreamAsync([in] HSTRING Ssml, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*>** operation);
                [propput] HRESULT Voice([in] Windows.Media.SpeechSynthesis.VoiceInformation* value);
                [propget] HRESULT Voice([out] [retval] Windows.Media.SpeechSynthesis.VoiceInformation** value);
            }

            [marshaling_behavior(agile)]
            [version(0x06030000)]
            runtimeclass VoiceInformation
            {
                [default] interface Windows.Media.SpeechSynthesis.IVoiceInformation;
            }

            [marshaling_behavior(agile)]
            [version(0x06030000)]
            runtimeclass SpeechSynthesisStream
            {
                [default] interface Windows.Media.SpeechSynthesis.ISpeechSynthesisStream;
                interface Windows.Storage.Streams.IRandomAccessStreamWithContentType;
                interface Windows.Storage.Streams.IContentTypeProvider;
                interface Windows.Storage.Streams.IRandomAccessStream;
                interface Windows.Storage.Streams.IOutputStream;
                interface Windows.Foundation.IClosable;
                interface Windows.Storage.Streams.IInputStream;
            }

            [activatable(0x06030000)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.SpeechSynthesis.IInstalledVoicesStatic, 0x06030000)]
            [version(0x06030000)]
            runtimeclass SpeechSynthesizer
            {
                [default] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizer;
                interface Windows.Foundation.IClosable;
            }
        }
    }
}
