//
// 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";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Globalization
    {
        namespace NumberFormatting
        {
            typedef enum CurrencyFormatterMode CurrencyFormatterMode;

            typedef enum RoundingAlgorithm RoundingAlgorithm;

            interface ICurrencyFormatter;

            interface ICurrencyFormatter2;

            interface ICurrencyFormatterFactory;

            interface IDecimalFormatterFactory;

            interface IIncrementNumberRounder;

            interface INumberFormatter;

            interface INumberFormatter2;

            interface INumberFormatterOptions;

            interface INumberParser;

            interface INumberRounder;

            interface INumberRounderOption;

            interface INumeralSystemTranslator;

            interface INumeralSystemTranslatorFactory;

            interface IPercentFormatterFactory;

            interface IPermilleFormatterFactory;

            interface ISignedZeroOption;

            interface ISignificantDigitsNumberRounder;

            interface ISignificantDigitsOption;

            runtimeclass CurrencyFormatter;

            runtimeclass DecimalFormatter;

            runtimeclass IncrementNumberRounder;

            runtimeclass NumeralSystemTranslator;

            runtimeclass PercentFormatter;

            runtimeclass PermilleFormatter;

            runtimeclass SignificantDigitsNumberRounder;
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Globalization
    {
        namespace NumberFormatting
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum CurrencyFormatterMode
            {
                UseSymbol       = 0,
                UseCurrencyCode = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum RoundingAlgorithm
            {
                None                  = 0,
                RoundDown             = 1,
                RoundUp               = 2,
                RoundTowardsZero      = 3,
                RoundAwayFromZero     = 4,
                RoundHalfDown         = 5,
                RoundHalfUp           = 6,
                RoundHalfTowardsZero  = 7,
                RoundHalfAwayFromZero = 8,
                RoundHalfToEven       = 9,
                RoundHalfToOdd        = 10
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.NumberFormatting.CurrencyFormatter)]
            [uuid(11730CA5-4B00-41B2-B332-73B12A497D54)]
            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);
                [deprecated("Currency may be read-only for releases after Windows 8.1. Instead, use a new CurrencyFormatter.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propput] HRESULT Currency([in] HSTRING value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.NumberFormatting.CurrencyFormatter)]
            [uuid(072C2F1D-E7BA-4197-920E-247C92F7DEA6)]
            interface ICurrencyFormatter2 : IInspectable
            {
                [propget] HRESULT Mode([out] [retval] Windows.Globalization.NumberFormatting.CurrencyFormatterMode* value);
                [propput] HRESULT Mode([in] Windows.Globalization.NumberFormatting.CurrencyFormatterMode value);
                HRESULT ApplyRoundingForCurrency([in] Windows.Globalization.NumberFormatting.RoundingAlgorithm roundingAlgorithm);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.NumberFormatting.CurrencyFormatter)]
            [uuid(86C7537E-B938-4AA2-84B0-2C33DC5B1450)]
            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);
            }

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

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.NumberFormatting.IncrementNumberRounder)]
            [uuid(70A64FF8-66AB-4155-9DA1-739E46764543)]
            interface IIncrementNumberRounder : IInspectable
            {
                [propget] HRESULT RoundingAlgorithm([out] [retval] Windows.Globalization.NumberFormatting.RoundingAlgorithm* value);
                [propput] HRESULT RoundingAlgorithm([in] Windows.Globalization.NumberFormatting.RoundingAlgorithm value);
                [propget] HRESULT Increment([out] [retval] DOUBLE* value);
                [propput] HRESULT Increment([in] DOUBLE value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(A5007C49-7676-4DB7-8631-1B6FF265CAA9)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(D4A8C1F0-80D0-4B0D-A89E-882C1E8F8310)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(80332D21-AEE1-4A39-BAA2-07ED8C96DAF6)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(E6659412-4A13-4A53-83A1-392FBE4CFF9F)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(5473C375-38ED-4631-B80C-EF34FC48B7F5)]
            interface INumberRounder : IInspectable
            {
                HRESULT RoundInt32([in] INT32 value, [out] [retval] INT32* result);
                HRESULT RoundUInt32([in] UINT32 value, [out] [retval] UINT32* result);
                HRESULT RoundInt64([in] INT64 value, [out] [retval] INT64* result);
                HRESULT RoundUInt64([in] UINT64 value, [out] [retval] UINT64* result);
                HRESULT RoundSingle([in] FLOAT value, [out] [retval] FLOAT* result);
                HRESULT RoundDouble([in] DOUBLE value, [out] [retval] DOUBLE* result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(3B088433-646F-4EFE-8D48-66EB2E49E736)]
            interface INumberRounderOption : IInspectable
            {
                [propget] HRESULT NumberRounder([out] [retval] Windows.Globalization.NumberFormatting.INumberRounder** value);
                [propput] HRESULT NumberRounder([in] Windows.Globalization.NumberFormatting.INumberRounder* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.NumberFormatting.NumeralSystemTranslator)]
            [uuid(28F5BC2C-8C23-4234-AD2E-FA5A3A426E9B)]
            interface INumeralSystemTranslator : IInspectable
            {
                [propget] HRESULT Languages([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT ResolvedLanguage([out] [retval] HSTRING* value);
                [propget] HRESULT NumeralSystem([out] [retval] HSTRING* value);
                [propput] HRESULT NumeralSystem([in] HSTRING value);
                HRESULT TranslateNumerals([in] HSTRING value, [out] [retval] HSTRING* result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.NumberFormatting.NumeralSystemTranslator)]
            [uuid(9630C8DA-36EF-4D88-A85C-6F0D98D620A6)]
            interface INumeralSystemTranslatorFactory : IInspectable
            {
                HRESULT Create([in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [out] [retval] Windows.Globalization.NumberFormatting.NumeralSystemTranslator** result);
            }

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

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

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(FD1CDD31-0A3C-49C4-A642-96A1564F4F30)]
            interface ISignedZeroOption : IInspectable
            {
                [propget] HRESULT IsZeroSigned([out] [retval] boolean* value);
                [propput] HRESULT IsZeroSigned([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.NumberFormatting.SignificantDigitsNumberRounder)]
            [uuid(F5941BCA-6646-4913-8C76-1B191FF94DFD)]
            interface ISignificantDigitsNumberRounder : IInspectable
            {
                [propget] HRESULT RoundingAlgorithm([out] [retval] Windows.Globalization.NumberFormatting.RoundingAlgorithm* value);
                [propput] HRESULT RoundingAlgorithm([in] Windows.Globalization.NumberFormatting.RoundingAlgorithm value);
                [propget] HRESULT SignificantDigits([out] [retval] UINT32* value);
                [propput] HRESULT SignificantDigits([in] UINT32 value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(1D4DFCDD-2D43-4EE8-BBF1-C1B26A711A58)]
            interface ISignificantDigitsOption : IInspectable
            {
                [propget] HRESULT SignificantDigits([out] [retval] INT32* value);
                [propput] HRESULT SignificantDigits([in] INT32 value);
            }

            [activatable(Windows.Globalization.NumberFormatting.ICurrencyFormatterFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass CurrencyFormatter
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] [default] interface Windows.Globalization.NumberFormatting.ICurrencyFormatter;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberParser;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberFormatter2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberFormatter;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberFormatterOptions;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.ICurrencyFormatter2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.ISignificantDigitsOption;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberRounderOption;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.ISignedZeroOption;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.Globalization.NumberFormatting.IDecimalFormatterFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DecimalFormatter
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberFormatterOptions;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] [default] interface Windows.Globalization.NumberFormatting.INumberFormatter;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberFormatter2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberParser;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.ISignificantDigitsOption;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberRounderOption;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.ISignedZeroOption;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass IncrementNumberRounder
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] [default] interface Windows.Globalization.NumberFormatting.INumberRounder;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.IIncrementNumberRounder;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.Globalization.NumberFormatting.INumeralSystemTranslatorFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass NumeralSystemTranslator
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] [default] interface Windows.Globalization.NumberFormatting.INumeralSystemTranslator;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.Globalization.NumberFormatting.IPercentFormatterFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PercentFormatter
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberFormatterOptions;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] [default] interface Windows.Globalization.NumberFormatting.INumberFormatter;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberFormatter2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberParser;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.ISignificantDigitsOption;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberRounderOption;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.ISignedZeroOption;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.Globalization.NumberFormatting.IPermilleFormatterFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PermilleFormatter
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberFormatterOptions;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] [default] interface Windows.Globalization.NumberFormatting.INumberFormatter;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberFormatter2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberParser;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.ISignificantDigitsOption;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.INumberRounderOption;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.ISignedZeroOption;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass SignificantDigitsNumberRounder
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] [default] interface Windows.Globalization.NumberFormatting.INumberRounder;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.NumberFormatting.ISignificantDigitsNumberRounder;
            }
        }
    }
}
