//
// 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
    {
        typedef struct DateTime DateTime;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Globalization
    {
        namespace DateTimeFormatting
        {
            typedef enum DayFormat DayFormat;

            typedef enum DayOfWeekFormat DayOfWeekFormat;

            typedef enum HourFormat HourFormat;

            typedef enum MinuteFormat MinuteFormat;

            typedef enum MonthFormat MonthFormat;

            typedef enum SecondFormat SecondFormat;

            typedef enum YearFormat YearFormat;

            interface IDateTimeFormatter;

            interface IDateTimeFormatter2;

            interface IDateTimeFormatterFactory;

            interface IDateTimeFormatterStatics;

            runtimeclass DateTimeFormatter;
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Globalization
    {
        namespace DateTimeFormatting
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum DayFormat
            {
                None    = 0,
                Default = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum DayOfWeekFormat
            {
                None        = 0,
                Default     = 1,
                Abbreviated = 2,
                Full        = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum HourFormat
            {
                None    = 0,
                Default = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum MinuteFormat
            {
                None    = 0,
                Default = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum MonthFormat
            {
                None        = 0,
                Default     = 1,
                Abbreviated = 2,
                Full        = 3,
                Numeric     = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum SecondFormat
            {
                None    = 0,
                Default = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum YearFormat
            {
                None        = 0,
                Default     = 1,
                Abbreviated = 2,
                Full        = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.DateTimeFormatting.DateTimeFormatter)]
            [uuid(95EECA10-73E0-4E4B-A183-3D6AD0BA35EC)]
            interface IDateTimeFormatter : IInspectable
            {
                [propget] HRESULT Languages([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT GeographicRegion([out] [retval] HSTRING* value);
                [propget] HRESULT Calendar([out] [retval] HSTRING* value);
                [propget] HRESULT Clock([out] [retval] HSTRING* value);
                [propget] HRESULT NumeralSystem([out] [retval] HSTRING* value);
                [propput] HRESULT NumeralSystem([in] HSTRING value);
                [propget] HRESULT Patterns([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT Template([out] [retval] HSTRING* value);
                HRESULT Format([in] Windows.Foundation.DateTime value, [out] [retval] HSTRING* result);
                [propget] HRESULT IncludeYear([out] [retval] Windows.Globalization.DateTimeFormatting.YearFormat* value);
                [propget] HRESULT IncludeMonth([out] [retval] Windows.Globalization.DateTimeFormatting.MonthFormat* value);
                [propget] HRESULT IncludeDayOfWeek([out] [retval] Windows.Globalization.DateTimeFormatting.DayOfWeekFormat* value);
                [propget] HRESULT IncludeDay([out] [retval] Windows.Globalization.DateTimeFormatting.DayFormat* value);
                [propget] HRESULT IncludeHour([out] [retval] Windows.Globalization.DateTimeFormatting.HourFormat* value);
                [propget] HRESULT IncludeMinute([out] [retval] Windows.Globalization.DateTimeFormatting.MinuteFormat* value);
                [propget] HRESULT IncludeSecond([out] [retval] Windows.Globalization.DateTimeFormatting.SecondFormat* value);
                [propget] HRESULT ResolvedLanguage([out] [retval] HSTRING* value);
                [propget] HRESULT ResolvedGeographicRegion([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.DateTimeFormatting.DateTimeFormatter)]
            [uuid(27C91A86-BDAA-4FD0-9E36-671D5AA5EE03)]
            interface IDateTimeFormatter2 : IInspectable
            {
                [overload("Format")] HRESULT FormatUsingTimeZone([in] Windows.Foundation.DateTime datetime, [in] HSTRING timeZoneId, [out] [retval] HSTRING* result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.DateTimeFormatting.DateTimeFormatter)]
            [uuid(EC8D8A53-1A2E-412D-8815-3B745FB1A2A0)]
            interface IDateTimeFormatterFactory : IInspectable
            {
                HRESULT CreateDateTimeFormatter([in] HSTRING formatTemplate, [out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** result);
                HRESULT CreateDateTimeFormatterLanguages([in] HSTRING formatTemplate, [in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** result);
                HRESULT CreateDateTimeFormatterContext([in] HSTRING formatTemplate, [in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [in] HSTRING geographicRegion, [in] HSTRING calendar, [in] HSTRING clock, [out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** result);
                HRESULT CreateDateTimeFormatterDate([in] Windows.Globalization.DateTimeFormatting.YearFormat yearFormat, [in] Windows.Globalization.DateTimeFormatting.MonthFormat monthFormat, [in] Windows.Globalization.DateTimeFormatting.DayFormat dayFormat, [in] Windows.Globalization.DateTimeFormatting.DayOfWeekFormat dayOfWeekFormat, [out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** result);
                HRESULT CreateDateTimeFormatterTime([in] Windows.Globalization.DateTimeFormatting.HourFormat hourFormat, [in] Windows.Globalization.DateTimeFormatting.MinuteFormat minuteFormat, [in] Windows.Globalization.DateTimeFormatting.SecondFormat secondFormat, [out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** result);
                HRESULT CreateDateTimeFormatterDateTimeLanguages([in] Windows.Globalization.DateTimeFormatting.YearFormat yearFormat, [in] Windows.Globalization.DateTimeFormatting.MonthFormat monthFormat, [in] Windows.Globalization.DateTimeFormatting.DayFormat dayFormat, [in] Windows.Globalization.DateTimeFormatting.DayOfWeekFormat dayOfWeekFormat, [in] Windows.Globalization.DateTimeFormatting.HourFormat hourFormat, [in] Windows.Globalization.DateTimeFormatting.MinuteFormat minuteFormat, [in] Windows.Globalization.DateTimeFormatting.SecondFormat secondFormat, [in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** result);
                HRESULT CreateDateTimeFormatterDateTimeContext([in] Windows.Globalization.DateTimeFormatting.YearFormat yearFormat, [in] Windows.Globalization.DateTimeFormatting.MonthFormat monthFormat, [in] Windows.Globalization.DateTimeFormatting.DayFormat dayFormat, [in] Windows.Globalization.DateTimeFormatting.DayOfWeekFormat dayOfWeekFormat, [in] Windows.Globalization.DateTimeFormatting.HourFormat hourFormat, [in] Windows.Globalization.DateTimeFormatting.MinuteFormat minuteFormat, [in] Windows.Globalization.DateTimeFormatting.SecondFormat secondFormat, [in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [in] HSTRING geographicRegion, [in] HSTRING calendar, [in] HSTRING clock, [out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Globalization.DateTimeFormatting.DateTimeFormatter)]
            [uuid(BFCDE7C0-DF4C-4A2E-9012-F47DAF3F1212)]
            interface IDateTimeFormatterStatics : IInspectable
            {
                [propget] HRESULT LongDate([out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** value);
                [propget] HRESULT LongTime([out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** value);
                [propget] HRESULT ShortDate([out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** value);
                [propget] HRESULT ShortTime([out] [retval] Windows.Globalization.DateTimeFormatting.DateTimeFormatter** value);
            }

            [activatable(Windows.Globalization.DateTimeFormatting.IDateTimeFormatterFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Globalization.DateTimeFormatting.IDateTimeFormatterStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass DateTimeFormatter
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] [default] interface Windows.Globalization.DateTimeFormatting.IDateTimeFormatter;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.DateTimeFormatting.IDateTimeFormatter2;
            }
        }
    }
}
