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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.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(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Globalization
    {
        namespace NumberFormatting
        {
            interface INumberFormatter;

            interface INumberFormatter2;

            interface INumberParser;

            interface INumberFormatterOptions;

            interface IDecimalFormatterFactory;

            interface IPercentFormatterFactory;

            interface IPermilleFormatterFactory;

            interface ICurrencyFormatterFactory;

            interface ICurrencyFormatter;

            runtimeclass DecimalFormatter;

            runtimeclass PercentFormatter;

            runtimeclass PermilleFormatter;

            runtimeclass CurrencyFormatter;
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Globalization
    {
        namespace NumberFormatting
        {
            [uuid(A5007C49-7676-4DB7-8631-1B6FF265CAA9)]
            [version(0x06020000)]
            interface INumberFormatter : IInspectable
            {
                [overload("Format")] HRESULT FormatInt([in] INT64 value, [out] [retval] HSTRING* result);
                [overload("Format")] HRESULT FormatUInt([in] UINT64 value, [out] [retval] HSTRING* result);
                [default_overload] [overload("Format")] HRESULT FormatDouble([in] DOUBLE value, [out] [retval] HSTRING* result);
            }

            [uuid(D4A8C1F0-80D0-4B0D-A89E-882C1E8F8310)]
            [version(0x06020000)]
            interface INumberFormatter2 : IInspectable
            {
                HRESULT FormatInt([in] INT64 value, [out] [retval] HSTRING* result);
                HRESULT FormatUInt([in] UINT64 value, [out] [retval] HSTRING* result);
                HRESULT FormatDouble([in] DOUBLE value, [out] [retval] HSTRING* result);
            }

            [uuid(E6659412-4A13-4A53-83A1-392FBE4CFF9F)]
            [version(0x06020000)]
            interface INumberParser : IInspectable
            {
                HRESULT ParseInt([in] HSTRING text, [out] [retval] Windows.Foundation.IReference<INT64>** result);
                HRESULT ParseUInt([in] HSTRING text, [out] [retval] Windows.Foundation.IReference<UINT64>** result);
                HRESULT ParseDouble([in] HSTRING text, [out] [retval] Windows.Foundation.IReference<DOUBLE>** result);
            }

            [uuid(80332D21-AEE1-4A39-BAA2-07ED8C96DAF6)]
            [version(0x06020000)]
            interface INumberFormatterOptions : IInspectable
            {
                [propget] HRESULT Languages([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT GeographicRegion([out] [retval] HSTRING* value);
                [propget] HRESULT IntegerDigits([out] [retval] INT32* value);
                [propput] HRESULT IntegerDigits([in] INT32 value);
                [propget] HRESULT FractionDigits([out] [retval] INT32* value);
                [propput] HRESULT FractionDigits([in] INT32 value);
                [propget] HRESULT IsGrouped([out] [retval] boolean* value);
                [propput] HRESULT IsGrouped([in] boolean value);
                [propget] HRESULT IsDecimalPointAlwaysDisplayed([out] [retval] boolean* value);
                [propput] HRESULT IsDecimalPointAlwaysDisplayed([in] boolean value);
                [propget] HRESULT NumeralSystem([out] [retval] HSTRING* value);
                [propput] HRESULT NumeralSystem([in] HSTRING value);
                [propget] HRESULT ResolvedLanguage([out] [retval] HSTRING* value);
                [propget] HRESULT ResolvedGeographicRegion([out] [retval] HSTRING* value);
            }

            [uuid(0D018C9A-E393-46B8-B830-7A69C8F89FBB)]
            [version(0x06020000)]
            [exclusiveto(Windows.Globalization.NumberFormatting.DecimalFormatter)]
            interface IDecimalFormatterFactory : IInspectable
            {
                HRESULT CreateDecimalFormatter([in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [in] HSTRING geographicRegion, [out] [retval] Windows.Globalization.NumberFormatting.DecimalFormatter** result);
            }

            [uuid(B7828AEF-FED4-4018-A6E2-E09961E03765)]
            [exclusiveto(Windows.Globalization.NumberFormatting.PercentFormatter)]
            [version(0x06020000)]
            interface IPercentFormatterFactory : IInspectable
            {
                HRESULT CreatePercentFormatter([in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [in] HSTRING geographicRegion, [out] [retval] Windows.Globalization.NumberFormatting.PercentFormatter** result);
            }

            [uuid(2B37B4AC-E638-4ED5-A998-62F6B06A49AE)]
            [exclusiveto(Windows.Globalization.NumberFormatting.PermilleFormatter)]
            [version(0x06020000)]
            interface IPermilleFormatterFactory : IInspectable
            {
                HRESULT CreatePermilleFormatter([in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [in] HSTRING geographicRegion, [out] [retval] Windows.Globalization.NumberFormatting.PermilleFormatter** result);
            }

            [uuid(86C7537E-B938-4AA2-84B0-2C33DC5B1450)]
            [exclusiveto(Windows.Globalization.NumberFormatting.CurrencyFormatter)]
            [version(0x06020000)]
            interface ICurrencyFormatterFactory : IInspectable
            {
                HRESULT CreateCurrencyFormatterCode([in] HSTRING currencyCode, [out] [retval] Windows.Globalization.NumberFormatting.CurrencyFormatter** result);
                HRESULT CreateCurrencyFormatterCodeContext([in] HSTRING currencyCode, [in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [in] HSTRING geographicRegion, [out] [retval] Windows.Globalization.NumberFormatting.CurrencyFormatter** result);
            }

            [uuid(11730CA5-4B00-41B2-B332-73B12A497D54)]
            [version(0x06020000)]
            [exclusiveto(Windows.Globalization.NumberFormatting.CurrencyFormatter)]
            interface ICurrencyFormatter : IInspectable
                requires
                    Windows.Globalization.NumberFormatting.INumberFormatterOptions,
                    Windows.Globalization.NumberFormatting.INumberFormatter,
                    Windows.Globalization.NumberFormatting.INumberFormatter2,
                    Windows.Globalization.NumberFormatting.INumberParser
            {
                [propget] HRESULT Currency([out] [retval] HSTRING* value);
                [propput] HRESULT Currency([in] HSTRING value);
            }

            [activatable(Windows.Globalization.NumberFormatting.IDecimalFormatterFactory, 0x06020000)]
            [version(0x06020000)]
            [activatable(0x06020000)]
            [threading(both)]
            [marshaling_behavior(agile)]
            runtimeclass DecimalFormatter
            {
                interface Windows.Globalization.NumberFormatting.INumberFormatterOptions;
                [default] interface Windows.Globalization.NumberFormatting.INumberFormatter;
                interface Windows.Globalization.NumberFormatting.INumberFormatter2;
                interface Windows.Globalization.NumberFormatting.INumberParser;
            }

            [activatable(0x06020000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [activatable(Windows.Globalization.NumberFormatting.IPercentFormatterFactory, 0x06020000)]
            [version(0x06020000)]
            runtimeclass PercentFormatter
            {
                interface Windows.Globalization.NumberFormatting.INumberFormatterOptions;
                [default] interface Windows.Globalization.NumberFormatting.INumberFormatter;
                interface Windows.Globalization.NumberFormatting.INumberFormatter2;
                interface Windows.Globalization.NumberFormatting.INumberParser;
            }

            [version(0x06020000)]
            [activatable(0x06020000)]
            [activatable(Windows.Globalization.NumberFormatting.IPermilleFormatterFactory, 0x06020000)]
            [threading(both)]
            [marshaling_behavior(agile)]
            runtimeclass PermilleFormatter
            {
                interface Windows.Globalization.NumberFormatting.INumberFormatterOptions;
                [default] interface Windows.Globalization.NumberFormatting.INumberFormatter;
                interface Windows.Globalization.NumberFormatting.INumberFormatter2;
                interface Windows.Globalization.NumberFormatting.INumberParser;
            }

            [activatable(Windows.Globalization.NumberFormatting.ICurrencyFormatterFactory, 0x06020000)]
            [version(0x06020000)]
            [threading(both)]
            [marshaling_behavior(agile)]
            runtimeclass CurrencyFormatter
            {
                [default] interface Windows.Globalization.NumberFormatting.ICurrencyFormatter;
                interface Windows.Globalization.NumberFormatting.INumberFormatterOptions;
                interface Windows.Globalization.NumberFormatting.INumberFormatter;
                interface Windows.Globalization.NumberFormatting.INumberFormatter2;
                interface Windows.Globalization.NumberFormatting.INumberParser;
            }
        }
    }
}
