//
// 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 Devices
    {
        namespace Printers
        {
            namespace Extensions
            {
                apicontract ExtensionsContract;

                typedef enum Print3DWorkflowDetail Print3DWorkflowDetail;

                typedef enum Print3DWorkflowStatus Print3DWorkflowStatus;

                interface IPrint3DWorkflow;

                interface IPrint3DWorkflow2;

                interface IPrint3DWorkflowPrintRequestedEventArgs;

                interface IPrint3DWorkflowPrinterChangedEventArgs;

                interface IPrintExtensionContextStatic;

                interface IPrintNotificationEventDetails;

                interface IPrintTaskConfiguration;

                interface IPrintTaskConfigurationSaveRequest;

                interface IPrintTaskConfigurationSaveRequestedDeferral;

                interface IPrintTaskConfigurationSaveRequestedEventArgs;

                runtimeclass Print3DWorkflow;

                runtimeclass Print3DWorkflowPrintRequestedEventArgs;

                runtimeclass Print3DWorkflowPrinterChangedEventArgs;

                runtimeclass PrintExtensionContext;

                runtimeclass PrintNotificationEventDetails;

                runtimeclass PrintTaskConfiguration;

                runtimeclass PrintTaskConfigurationSaveRequest;

                runtimeclass PrintTaskConfigurationSaveRequestedDeferral;

                runtimeclass PrintTaskConfigurationSaveRequestedEventArgs;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Printers
        {
            namespace Extensions
            {
                declare
                {
                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Printers.Extensions.Print3DWorkflow*, Windows.Devices.Printers.Extensions.Print3DWorkflowPrintRequestedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Printers.Extensions.Print3DWorkflow*, Windows.Devices.Printers.Extensions.Print3DWorkflowPrinterChangedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Printers.Extensions.PrintTaskConfiguration*, Windows.Devices.Printers.Extensions.PrintTaskConfigurationSaveRequestedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Printers
        {
            namespace Extensions
            {
                [contractversion(2.0)]
                apicontract ExtensionsContract
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                enum Print3DWorkflowDetail
                {
                    Unknown                  = 0,
                    ModelExceedsPrintBed     = 1,
                    UploadFailed             = 2,
                    InvalidMaterialSelection = 3,
                    InvalidModel             = 4,
                    ModelNotManifold         = 5,
                    InvalidPrintTicket       = 6
                };

                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                enum Print3DWorkflowStatus
                {
                    Abandoned = 0,
                    Canceled  = 1,
                    Failed    = 2,
                    Slicing   = 3,
                    Submitted = 4
                };

                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                [exclusiveto(Windows.Devices.Printers.Extensions.Print3DWorkflow)]
                [uuid(C56F74BD-3669-4A66-AB42-C8151930CD34)]
                interface IPrint3DWorkflow : IInspectable
                {
                    [propget] HRESULT DeviceID([out] [retval] HSTRING* value);
                    HRESULT GetPrintModelPackage([out] [retval] IInspectable** printModelPackage);
                    [propget] HRESULT IsPrintReady([out] [retval] boolean* value);
                    [propput] HRESULT IsPrintReady([in] boolean value);
                    [eventadd] HRESULT PrintRequested([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Printers.Extensions.Print3DWorkflow*, Windows.Devices.Printers.Extensions.Print3DWorkflowPrintRequestedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                    [eventremove] HRESULT PrintRequested([in] EventRegistrationToken eventCookie);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Devices.Printers.Extensions.Print3DWorkflow)]
                [uuid(A2A6C54F-8AC1-4918-9741-E34F3004239E)]
                interface IPrint3DWorkflow2 : IInspectable
                {
                    [eventadd] HRESULT PrinterChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Printers.Extensions.Print3DWorkflow*, Windows.Devices.Printers.Extensions.Print3DWorkflowPrinterChangedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                    [eventremove] HRESULT PrinterChanged([in] EventRegistrationToken eventCookie);
                }

                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                [exclusiveto(Windows.Devices.Printers.Extensions.Print3DWorkflowPrintRequestedEventArgs)]
                [uuid(19F8C858-5AC8-4B55-8A5F-E61567DAFB4D)]
                interface IPrint3DWorkflowPrintRequestedEventArgs : IInspectable
                {
                    [propget] HRESULT Status([out] [retval] Windows.Devices.Printers.Extensions.Print3DWorkflowStatus* value);
                    HRESULT SetExtendedStatus([in] Windows.Devices.Printers.Extensions.Print3DWorkflowDetail value);
                    HRESULT SetSource([in] IInspectable* source);
                    HRESULT SetSourceChanged([in] boolean value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Devices.Printers.Extensions.Print3DWorkflowPrinterChangedEventArgs)]
                [uuid(45226402-95FC-4847-93B3-134DBF5C60F7)]
                interface IPrint3DWorkflowPrinterChangedEventArgs : IInspectable
                {
                    [propget] HRESULT NewDeviceId([out] [retval] HSTRING* value);
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                [exclusiveto(Windows.Devices.Printers.Extensions.PrintExtensionContext)]
                [uuid(E70D9FC1-FF79-4AA4-8C9B-0C93AEDFDE8A)]
                interface IPrintExtensionContextStatic : IInspectable
                {
                    HRESULT FromDeviceId([in] HSTRING deviceId, [out] [retval] IInspectable** context);
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                [exclusiveto(Windows.Devices.Printers.Extensions.PrintNotificationEventDetails)]
                [uuid(E00E4C8A-4828-4DA1-8BB8-8672DF8515E7)]
                interface IPrintNotificationEventDetails : IInspectable
                {
                    [propget] HRESULT PrinterName([out] [retval] HSTRING* value);
                    [propget] HRESULT EventData([out] [retval] HSTRING* value);
                    [propput] HRESULT EventData([in] HSTRING value);
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                [exclusiveto(Windows.Devices.Printers.Extensions.PrintTaskConfiguration)]
                [uuid(E3C22451-3AA4-4885-9240-311F5F8FBE9D)]
                interface IPrintTaskConfiguration : IInspectable
                {
                    [propget] HRESULT PrinterExtensionContext([out] [retval] IInspectable** context);
                    [eventadd] HRESULT SaveRequested([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Printers.Extensions.PrintTaskConfiguration*, Windows.Devices.Printers.Extensions.PrintTaskConfigurationSaveRequestedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                    [eventremove] HRESULT SaveRequested([in] EventRegistrationToken eventCookie);
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                [exclusiveto(Windows.Devices.Printers.Extensions.PrintTaskConfigurationSaveRequest)]
                [uuid(EEAF2FCB-621E-4B62-AC77-B281CCE08D60)]
                interface IPrintTaskConfigurationSaveRequest : IInspectable
                {
                    HRESULT Cancel();
                    HRESULT Save([in] IInspectable* printerExtensionContext);
                    HRESULT GetDeferral([out] [retval] Windows.Devices.Printers.Extensions.PrintTaskConfigurationSaveRequestedDeferral** deferral);
                    [propget] HRESULT Deadline([out] [retval] Windows.Foundation.DateTime* value);
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                [exclusiveto(Windows.Devices.Printers.Extensions.PrintTaskConfigurationSaveRequestedDeferral)]
                [uuid(E959D568-F729-44A4-871D-BD0628696A33)]
                interface IPrintTaskConfigurationSaveRequestedDeferral : IInspectable
                {
                    HRESULT Complete();
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                [exclusiveto(Windows.Devices.Printers.Extensions.PrintTaskConfigurationSaveRequestedEventArgs)]
                [uuid(E06C2879-0D61-4938-91D0-96A45BEE8479)]
                interface IPrintTaskConfigurationSaveRequestedEventArgs : IInspectable
                {
                    [propget] HRESULT Request([out] [retval] Windows.Devices.Printers.Extensions.PrintTaskConfigurationSaveRequest** context);
                }

                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass Print3DWorkflow
                {
                    [default] interface Windows.Devices.Printers.Extensions.IPrint3DWorkflow;
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Devices.Printers.Extensions.IPrint3DWorkflow2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass Print3DWorkflowPrintRequestedEventArgs
                {
                    [default] interface Windows.Devices.Printers.Extensions.IPrint3DWorkflowPrintRequestedEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass Print3DWorkflowPrinterChangedEventArgs
                {
                    [default] interface Windows.Devices.Printers.Extensions.IPrint3DWorkflowPrinterChangedEventArgs;
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Devices.Printers.Extensions.IPrintExtensionContextStatic, Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                runtimeclass PrintExtensionContext
                {
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass PrintNotificationEventDetails
                {
                    [default] interface Windows.Devices.Printers.Extensions.IPrintNotificationEventDetails;
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                runtimeclass PrintTaskConfiguration
                {
                    [default] interface Windows.Devices.Printers.Extensions.IPrintTaskConfiguration;
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                runtimeclass PrintTaskConfigurationSaveRequest
                {
                    [default] interface Windows.Devices.Printers.Extensions.IPrintTaskConfigurationSaveRequest;
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                runtimeclass PrintTaskConfigurationSaveRequestedDeferral
                {
                    [default] interface Windows.Devices.Printers.Extensions.IPrintTaskConfigurationSaveRequestedDeferral;
                }

                [contract(Windows.Devices.Printers.Extensions.ExtensionsContract, 1.0)]
                runtimeclass PrintTaskConfigurationSaveRequestedEventArgs
                {
                    [default] interface Windows.Devices.Printers.Extensions.IPrintTaskConfigurationSaveRequestedEventArgs;
                }
            }
        }
    }
}
