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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Media.idl";
import "Windows.Media.Core.idl";
import "Windows.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Core
        {
            interface ITimedMetadataTrackProvider;
        }
    }
}
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 SpeechAppendedSilence SpeechAppendedSilence;

            typedef enum SpeechPunctuationSilence SpeechPunctuationSilence;

            typedef enum VoiceGender VoiceGender;

            interface IInstalledVoicesStatic;

            interface IInstalledVoicesStatic2;

            interface ISpeechSynthesisStream;

            interface ISpeechSynthesizer;

            interface ISpeechSynthesizer2;

            interface ISpeechSynthesizerOptions;

            interface ISpeechSynthesizerOptions2;

            interface ISpeechSynthesizerOptions3;

            interface IVoiceInformation;

            runtimeclass SpeechSynthesisStream;

            runtimeclass SpeechSynthesizer;

            runtimeclass SpeechSynthesizerOptions;

            runtimeclass VoiceInformation;
        }
    }
}

// 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
        {
            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            enum SpeechAppendedSilence
            {
                Default = 0,
                Min     = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            enum SpeechPunctuationSilence
            {
                Default = 0,
                Min     = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum VoiceGender
            {
                Male   = 0,
                Female = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer)]
            [uuid(7D526ECC-7533-4C3F-85BE-888C2BAEEBDC)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer)]
            [uuid(64255F2E-358D-4058-BE9A-FD3FCB423530)]
            interface IInstalledVoicesStatic2 : IInspectable
            {
                HRESULT TrySetDefaultVoiceAsync([in] Windows.Media.SpeechSynthesis.VoiceInformation* voice, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesisStream)]
            [uuid(83E46E93-244C-4622-BA0B-6229C4D0D65D)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer)]
            [uuid(CE9F7C76-97F4-4CED-AD68-D51C458E45C6)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer)]
            [uuid(A7C5ECB2-4339-4D6A-BBF8-C7A4F1544C2E)]
            interface ISpeechSynthesizer2 : IInspectable
            {
                [propget] HRESULT Options([out] [retval] Windows.Media.SpeechSynthesis.SpeechSynthesizerOptions** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizerOptions)]
            [uuid(A0E23871-CC3D-43C9-91B1-EE185324D83D)]
            interface ISpeechSynthesizerOptions : IInspectable
            {
                [propget] HRESULT IncludeWordBoundaryMetadata([out] [retval] boolean* value);
                [propput] HRESULT IncludeWordBoundaryMetadata([in] boolean value);
                [propget] HRESULT IncludeSentenceBoundaryMetadata([out] [retval] boolean* value);
                [propput] HRESULT IncludeSentenceBoundaryMetadata([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizerOptions)]
            [uuid(1CBEF60E-119C-4BED-B118-D250C3A25793)]
            interface ISpeechSynthesizerOptions2 : IInspectable
            {
                [propget] HRESULT AudioVolume([out] [retval] DOUBLE* value);
                [propput] HRESULT AudioVolume([in] DOUBLE value);
                [propget] HRESULT SpeakingRate([out] [retval] DOUBLE* value);
                [propput] HRESULT SpeakingRate([in] DOUBLE value);
                [propget] HRESULT AudioPitch([out] [retval] DOUBLE* value);
                [propput] HRESULT AudioPitch([in] DOUBLE value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizerOptions)]
            [uuid(401ED877-902C-4814-A582-A5D0C0769FA8)]
            interface ISpeechSynthesizerOptions3 : IInspectable
            {
                [propget] HRESULT AppendedSilence([out] [retval] Windows.Media.SpeechSynthesis.SpeechAppendedSilence* value);
                [propput] HRESULT AppendedSilence([in] Windows.Media.SpeechSynthesis.SpeechAppendedSilence value);
                [propget] HRESULT PunctuationSilence([out] [retval] Windows.Media.SpeechSynthesis.SpeechPunctuationSilence* value);
                [propput] HRESULT PunctuationSilence([in] Windows.Media.SpeechSynthesis.SpeechPunctuationSilence value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.SpeechSynthesis.VoiceInformation)]
            [uuid(B127D6A4-1291-4604-AA9C-83134083352C)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            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;
                [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Media.Core.ITimedMetadataTrackProvider;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.SpeechSynthesis.IInstalledVoicesStatic, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Media.SpeechSynthesis.IInstalledVoicesStatic2, Windows.Foundation.UniversalApiContract, 5.0)]
            runtimeclass SpeechSynthesizer
            {
                [default] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizer;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizer2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            runtimeclass SpeechSynthesizerOptions
            {
                [default] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizerOptions;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizerOptions2;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizerOptions3;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass VoiceInformation
            {
                [default] interface Windows.Media.SpeechSynthesis.IVoiceInformation;
            }
        }
    }
}
