//
// 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";
import "Windows.Graphics.Printing.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(__windows2Egraphics2Eprinting_h__)")
cpp_quote("#include <Windows.Graphics.Printing.h>")
cpp_quote("#endif // !defined(__windows2Egraphics2Eprinting_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Graphics
    {
        namespace Printing
        {
            interface IPrintTaskOptionsCore;

            interface IPrintTaskOptionsCoreUIConfiguration;

            runtimeclass PrintTaskOptions;
        }
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Printing
        {
            namespace OptionDetails
            {
                typedef enum PrintOptionStates PrintOptionStates;

                typedef enum PrintOptionType PrintOptionType;

                interface IPrintOptionDetails;

                interface IPrintNumberOptionDetails;

                interface IPrintTextOptionDetails;

                interface IPrintItemListOptionDetails;

                interface IPrintCustomOptionDetails;

                interface IPrintCustomTextOptionDetails;

                interface IPrintCustomItemDetails;

                interface IPrintCustomItemListOptionDetails;

                interface IPrintTaskOptionChangedEventArgs;

                interface IPrintTaskOptionDetails;

                interface IPrintTaskOptionDetailsStatic;

                runtimeclass PrintCopiesOptionDetails;

                runtimeclass PrintMediaSizeOptionDetails;

                runtimeclass PrintMediaTypeOptionDetails;

                runtimeclass PrintOrientationOptionDetails;

                runtimeclass PrintQualityOptionDetails;

                runtimeclass PrintColorModeOptionDetails;

                runtimeclass PrintDuplexOptionDetails;

                runtimeclass PrintCollationOptionDetails;

                runtimeclass PrintStapleOptionDetails;

                runtimeclass PrintHolePunchOptionDetails;

                runtimeclass PrintBindingOptionDetails;

                runtimeclass PrintCustomTextOptionDetails;

                runtimeclass PrintCustomItemDetails;

                runtimeclass PrintCustomItemListOptionDetails;

                runtimeclass PrintTaskOptionChangedEventArgs;

                runtimeclass PrintTaskOptionDetails;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Graphics
    {
        namespace Printing
        {
            namespace OptionDetails
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails*>*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails*>*>;

                    interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails*>;

                    interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Graphics.Printing.OptionDetails.PrintTaskOptionDetails*, IInspectable*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Graphics.Printing.OptionDetails.PrintTaskOptionDetails*, Windows.Graphics.Printing.OptionDetails.PrintTaskOptionChangedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Graphics
    {
        namespace Printing
        {
            namespace OptionDetails
            {
                [version(0x06020000)]
                [flags]
                enum PrintOptionStates
                {
                    None        = 0x0,
                    Enabled     = 0x1,
                    Constrained = 0x2
                };

                [version(0x06020000)]
                enum PrintOptionType
                {
                    Unknown  = 0,
                    Number   = 1,
                    Text     = 2,
                    ItemList = 3
                };

                [uuid(390686CF-D682-495F-ADFE-D7333F5C1808)]
                [version(0x06020000)]
                interface IPrintOptionDetails : IInspectable
                {
                    [propget] HRESULT OptionId([out] [retval] HSTRING* value);
                    [propget] HRESULT OptionType([out] [retval] Windows.Graphics.Printing.OptionDetails.PrintOptionType* value);
                    [propput] HRESULT ErrorText([in] HSTRING value);
                    [propget] HRESULT ErrorText([out] [retval] HSTRING* value);
                    [propput] HRESULT State([in] Windows.Graphics.Printing.OptionDetails.PrintOptionStates value);
                    [propget] HRESULT State([out] [retval] Windows.Graphics.Printing.OptionDetails.PrintOptionStates* value);
                    [propget] HRESULT Value([out] [retval] IInspectable** value);
                    HRESULT TrySetValue([in] IInspectable* value, [out] [retval] boolean* succeeded);
                }

                [uuid(4D01BBAF-645C-4DE9-965F-6FC6BBC47CAB)]
                [version(0x06020000)]
                interface IPrintNumberOptionDetails : IInspectable
                    requires
                        Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails
                {
                    [propget] HRESULT MinValue([out] [retval] UINT32* value);
                    [propget] HRESULT MaxValue([out] [retval] UINT32* value);
                }

                [uuid(AD75E563-5CE4-46BC-9918-AB9FAD144C5B)]
                [version(0x06020000)]
                interface IPrintTextOptionDetails : IInspectable
                    requires
                        Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails
                {
                    [propget] HRESULT MaxCharacters([out] [retval] UINT32* value);
                }

                [uuid(9A2257BF-FE61-43D8-A24F-A3F6AB7320E7)]
                [version(0x06020000)]
                interface IPrintItemListOptionDetails : IInspectable
                    requires
                        Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails
                {
                    [propget] HRESULT Items([out] [retval] Windows.Foundation.Collections.IVectorView<IInspectable*>** value);
                }

                [uuid(E32BDE1C-28AF-4B90-95DA-A3ACF320B929)]
                [version(0x06020000)]
                interface IPrintCustomOptionDetails : IInspectable
                    requires
                        Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails
                {
                    [propput] HRESULT DisplayName([in] HSTRING value);
                    [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                }

                [uuid(2AD171F8-C8BD-4905-9192-0D75136E8B31)]
                [exclusiveto(Windows.Graphics.Printing.OptionDetails.PrintCustomTextOptionDetails)]
                [version(0x06020000)]
                interface IPrintCustomTextOptionDetails : IInspectable
                    requires
                        Windows.Graphics.Printing.OptionDetails.IPrintCustomOptionDetails,
                        Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails
                {
                    [propput] HRESULT MaxCharacters([in] UINT32 value);
                    [propget] HRESULT MaxCharacters([out] [retval] UINT32* value);
                }

                [uuid(5704B637-5C3A-449A-AA36-B3291B1192FD)]
                [exclusiveto(Windows.Graphics.Printing.OptionDetails.PrintCustomItemDetails)]
                [version(0x06020000)]
                interface IPrintCustomItemDetails : IInspectable
                {
                    [propget] HRESULT ItemId([out] [retval] HSTRING* value);
                    [propput] HRESULT ItemDisplayName([in] HSTRING value);
                    [propget] HRESULT ItemDisplayName([out] [retval] HSTRING* value);
                }

                [uuid(A5FAFD88-58F2-4EBD-B90F-51E4F2944C5D)]
                [version(0x06020000)]
                [exclusiveto(Windows.Graphics.Printing.OptionDetails.PrintCustomItemListOptionDetails)]
                interface IPrintCustomItemListOptionDetails : IInspectable
                    requires
                        Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails,
                        Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails,
                        Windows.Graphics.Printing.OptionDetails.IPrintCustomOptionDetails
                {
                    HRESULT AddItem([in] HSTRING itemId, [in] HSTRING displayName);
                }

                [uuid(65197D05-A5EE-4307-9407-9ACAD147679C)]
                [exclusiveto(Windows.Graphics.Printing.OptionDetails.PrintTaskOptionChangedEventArgs)]
                [version(0x06020000)]
                interface IPrintTaskOptionChangedEventArgs : IInspectable
                {
                    [propget] HRESULT OptionId([out] [retval] IInspectable** value);
                }

                [uuid(F5720AF1-A89E-42A6-81AF-F8E010B38A68)]
                [exclusiveto(Windows.Graphics.Printing.OptionDetails.PrintTaskOptionDetails)]
                [version(0x06020000)]
                interface IPrintTaskOptionDetails : IInspectable
                {
                    [propget] HRESULT Options([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails*>** value);
                    HRESULT CreateItemListOption([in] HSTRING optionId, [in] HSTRING displayName, [out] [retval] Windows.Graphics.Printing.OptionDetails.PrintCustomItemListOptionDetails** itemListOption);
                    HRESULT CreateTextOption([in] HSTRING optionId, [in] HSTRING displayName, [out] [retval] Windows.Graphics.Printing.OptionDetails.PrintCustomTextOptionDetails** textOption);
                    [eventadd] HRESULT OptionChanged([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Printing.OptionDetails.PrintTaskOptionDetails*, Windows.Graphics.Printing.OptionDetails.PrintTaskOptionChangedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                    [eventremove] HRESULT OptionChanged([in] EventRegistrationToken eventCookie);
                    [eventadd] HRESULT BeginValidation([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Printing.OptionDetails.PrintTaskOptionDetails*, IInspectable*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                    [eventremove] HRESULT BeginValidation([in] EventRegistrationToken eventCookie);
                }

                [uuid(135DA193-0961-4B6E-8766-F13B7FBCCD58)]
                [version(0x06020000)]
                [exclusiveto(Windows.Graphics.Printing.OptionDetails.PrintTaskOptionDetails)]
                interface IPrintTaskOptionDetailsStatic : IInspectable
                {
                    HRESULT GetFromPrintTaskOptions([in] Windows.Graphics.Printing.PrintTaskOptions* printTaskOptions, [out] [retval] Windows.Graphics.Printing.OptionDetails.PrintTaskOptionDetails** printTaskOptionDetails);
                }

                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PrintCopiesOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintNumberOptionDetails;
                }

                [marshaling_behavior(agile)]
                [version(0x06020000)]
                runtimeclass PrintMediaSizeOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                }

                [marshaling_behavior(agile)]
                [version(0x06020000)]
                runtimeclass PrintMediaTypeOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                }

                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PrintOrientationOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                }

                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PrintQualityOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                }

                [marshaling_behavior(agile)]
                [version(0x06020000)]
                runtimeclass PrintColorModeOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                }

                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PrintDuplexOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                }

                [marshaling_behavior(agile)]
                [version(0x06020000)]
                runtimeclass PrintCollationOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                }

                [marshaling_behavior(agile)]
                [version(0x06020000)]
                runtimeclass PrintStapleOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                }

                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PrintHolePunchOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                }

                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PrintBindingOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                }

                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PrintCustomTextOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintCustomOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintCustomTextOptionDetails;
                }

                [marshaling_behavior(agile)]
                [version(0x06020000)]
                runtimeclass PrintCustomItemDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintCustomItemDetails;
                }

                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PrintCustomItemListOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintCustomOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintItemListOptionDetails;
                    interface Windows.Graphics.Printing.OptionDetails.IPrintCustomItemListOptionDetails;
                }

                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PrintTaskOptionChangedEventArgs
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintTaskOptionChangedEventArgs;
                }

                [static(Windows.Graphics.Printing.OptionDetails.IPrintTaskOptionDetailsStatic, 0x06020000)]
                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass PrintTaskOptionDetails
                {
                    [default] interface Windows.Graphics.Printing.OptionDetails.IPrintTaskOptionDetails;
                    interface Windows.Graphics.Printing.IPrintTaskOptionsCore;
                    interface Windows.Graphics.Printing.IPrintTaskOptionsCoreUIConfiguration;
                }
            }
        }
    }
}
