//
// 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";
import "Windows.AI.Actions.idl";
import "Windows.UI.idl";

// Forward Declare
namespace Windows
{
    namespace AI
    {
        namespace Actions
        {
            runtimeclass ActionEntity;

            typedef enum ActionEntityKind ActionEntityKind;

            runtimeclass ActionFeedback;

            runtimeclass ActionInvocationContext;

            apicontract ActionsContract;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            runtimeclass PropertySet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        interface IClosable;
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct WindowId WindowId;
    }
}
namespace Windows
{
    namespace AI
    {
        namespace Actions
        {
            namespace Hosting
            {
                interface IActionCatalog;

                interface IActionCatalog2;

                interface IActionCatalog3;

                interface IActionDefinition;

                interface IActionDefinition2;

                interface IActionDefinition3;

                interface IActionDefinition4;

                interface IActionDefinition5;

                interface IActionEntityRegistrationInfo;

                interface IActionInstance;

                interface IActionInstanceDisplayInfo;

                interface IActionOverload;

                interface IActionOverload2;

                runtimeclass ActionCatalog;

                runtimeclass ActionDefinition;

                runtimeclass ActionEntityRegistrationInfo;

                runtimeclass ActionInstance;

                runtimeclass ActionInstanceDisplayInfo;

                runtimeclass ActionOverload;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace AI
    {
        namespace Actions
        {
            namespace Hosting
            {
                declare
                {
                    interface Windows.Foundation.TypedEventHandler<Windows.AI.Actions.Hosting.ActionCatalog*, IInspectable*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace AI
    {
        namespace Actions
        {
            namespace Hosting
            {
                [contract(Windows.AI.Actions.ActionsContract, 1.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionCatalog)]
                [uuid(DBE7C537-66EA-5394-9085-4FC19D78375C)]
                interface IActionCatalog : IInspectable
                {
                    HRESULT GetAllActions([out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.AI.Actions.Hosting.ActionDefinition*** result);
                    [eventadd] HRESULT Changed([in] Windows.Foundation.TypedEventHandler<Windows.AI.Actions.Hosting.ActionCatalog*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT Changed([in] EventRegistrationToken token);
                }

                [contract(Windows.AI.Actions.ActionsContract, 4.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionCatalog)]
                [uuid(370360B1-A14B-5EA8-B611-B5F70342BA44)]
                interface IActionCatalog2 : IInspectable
                {
                    [overload("GetActionsForInputs")] HRESULT GetActionsForInputs([in] UINT32 __inputEntitiesSize, [in] [size_is(__inputEntitiesSize)] Windows.AI.Actions.ActionEntity** inputEntities, [out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.AI.Actions.Hosting.ActionInstance*** result);
                    [overload("GetActionsForInputs")] HRESULT GetActionsForInputs2([in] UINT32 __inputEntitiesSize, [in] [size_is(__inputEntitiesSize)] Windows.AI.Actions.ActionEntity** inputEntities, [in] Windows.UI.WindowId invokerWindowId, [out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.AI.Actions.Hosting.ActionInstance*** result);
                }

                [contract(Windows.AI.Actions.ActionsContract, 5.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionCatalog)]
                [uuid(2E05D518-8680-55D3-820D-2605ADB7D62D)]
                interface IActionCatalog3 : IInspectable
                {
                    HRESULT GetActionsForCurrentApp([out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.AI.Actions.Hosting.ActionDefinition*** result);
                }

                [contract(Windows.AI.Actions.ActionsContract, 1.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionDefinition)]
                [uuid(FE766ADD-924D-5231-855E-DAC9E82C7E6C)]
                interface IActionDefinition : IInspectable
                {
                    [propget] HRESULT Id([out] [retval] HSTRING* value);
                    [propget] HRESULT Description([out] [retval] HSTRING* value);
                    [propget] HRESULT IconFullPath([out] [retval] HSTRING* value);
                    [propget] HRESULT PackageFamilyName([out] [retval] HSTRING* value);
                    HRESULT GetInputs([out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.AI.Actions.Hosting.ActionEntityRegistrationInfo*** result);
                    HRESULT GetOutputs([out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.AI.Actions.Hosting.ActionEntityRegistrationInfo*** result);
                    HRESULT GetOverloads([out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.AI.Actions.Hosting.ActionOverload*** result);
                }

                [contract(Windows.AI.Actions.ActionsContract, 2.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionDefinition)]
                [uuid(C1F44733-F563-54E2-BD2B-DC4C732054CF)]
                interface IActionDefinition2 : IInspectable
                {
                    [propget] HRESULT DisplaysUI([out] [retval] boolean* value);
                    [propget] HRESULT UsesGenerativeAI([out] [retval] boolean* value);
                    [propget] HRESULT SchemaVersion([out] [retval] UINT32* value);
                }

                [contract(Windows.AI.Actions.ActionsContract, 3.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionDefinition)]
                [uuid(89C9A7E0-4BFD-55F4-9EED-DCE2250114FA)]
                interface IActionDefinition3 : IInspectable
                {
                    [propget] HRESULT PackageRelativeApplicationId([out] [retval] HSTRING* value);
                }

                [contract(Windows.AI.Actions.ActionsContract, 5.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionDefinition)]
                [uuid(6DD91071-8847-55B6-9518-9FF8DE421EB7)]
                interface IActionDefinition4 : IInspectable
                {
                    [propget] HRESULT IsCurrentlyAvailable([out] [retval] boolean* value);
                }

                [contract(Windows.AI.Actions.ActionsContract, 6.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionDefinition)]
                [experimental]
                [uuid(5BEA33EF-D325-53A8-8DB3-0D771F4D1E54)]
                interface IActionDefinition5 : IInspectable
                {
                    HRESULT GetIconFullPath([in] Windows.Foundation.Collections.PropertySet* qualifierValues, [out] [retval] HSTRING* result);
                }

                [contract(Windows.AI.Actions.ActionsContract, 1.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionEntityRegistrationInfo)]
                [uuid(C3B92BDB-03C3-5A9E-B049-002FA0405699)]
                interface IActionEntityRegistrationInfo : IInspectable
                {
                    [propget] HRESULT Name([out] [retval] HSTRING* value);
                    [propput] HRESULT Name([in] HSTRING value);
                    [propget] HRESULT Kind([out] [retval] Windows.AI.Actions.ActionEntityKind* value);
                    [propput] HRESULT Kind([in] Windows.AI.Actions.ActionEntityKind value);
                }

                [contract(Windows.AI.Actions.ActionsContract, 4.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionInstance)]
                [uuid(809BCB6E-E6EF-5F16-B89A-06B8893DF20E)]
                interface IActionInstance : IInspectable
                {
                    [propget] HRESULT DisplayInfo([out] [retval] Windows.AI.Actions.Hosting.ActionInstanceDisplayInfo** value);
                    [propget] HRESULT Definition([out] [retval] Windows.AI.Actions.Hosting.ActionDefinition** value);
                    [propget] HRESULT Context([out] [retval] Windows.AI.Actions.ActionInvocationContext** value);
                    HRESULT InvokeAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                }

                [contract(Windows.AI.Actions.ActionsContract, 4.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionInstanceDisplayInfo)]
                [uuid(FCFDCE21-678B-5602-B9DC-2F4533A6F4B2)]
                interface IActionInstanceDisplayInfo : IInspectable
                {
                    [propget] HRESULT Description([out] [retval] HSTRING* value);
                }

                [contract(Windows.AI.Actions.ActionsContract, 1.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionOverload)]
                [uuid(5D184610-D09D-5375-9849-505C359DCA01)]
                interface IActionOverload : IInspectable
                {
                    [propget] HRESULT DescriptionTemplate([out] [retval] HSTRING* value);
                    HRESULT GetInputs([out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.AI.Actions.Hosting.ActionEntityRegistrationInfo*** result);
                    HRESULT InvokeAsync([in] Windows.AI.Actions.ActionInvocationContext* context, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                }

                [contract(Windows.AI.Actions.ActionsContract, 3.0)]
                [exclusiveto(Windows.AI.Actions.Hosting.ActionOverload)]
                [uuid(57EC9906-8231-5A9E-929F-BF39E952EB93)]
                interface IActionOverload2 : IInspectable
                {
                    HRESULT InvokeFeedbackAsync([in] Windows.AI.Actions.ActionInvocationContext* context, [in] Windows.AI.Actions.ActionFeedback* feedback, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                    HRESULT GetSupportsFeedback([out] [retval] boolean* result);
                }

                [contract(Windows.AI.Actions.ActionsContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass ActionCatalog
                {
                    [default] interface Windows.AI.Actions.Hosting.IActionCatalog;
                    [contract(Windows.AI.Actions.ActionsContract, 4.0)] interface Windows.AI.Actions.Hosting.IActionCatalog2;
                    [contract(Windows.AI.Actions.ActionsContract, 5.0)] interface Windows.AI.Actions.Hosting.IActionCatalog3;
                    interface Windows.Foundation.IClosable;
                }

                [contract(Windows.AI.Actions.ActionsContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass ActionDefinition
                {
                    [default] interface Windows.AI.Actions.Hosting.IActionDefinition;
                    [contract(Windows.AI.Actions.ActionsContract, 2.0)] interface Windows.AI.Actions.Hosting.IActionDefinition2;
                    [contract(Windows.AI.Actions.ActionsContract, 3.0)] interface Windows.AI.Actions.Hosting.IActionDefinition3;
                    [contract(Windows.AI.Actions.ActionsContract, 5.0)] interface Windows.AI.Actions.Hosting.IActionDefinition4;
                    [contract(Windows.AI.Actions.ActionsContract, 6.0)] [experimental] interface Windows.AI.Actions.Hosting.IActionDefinition5;
                    interface Windows.Foundation.IClosable;
                }

                [contract(Windows.AI.Actions.ActionsContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass ActionEntityRegistrationInfo
                {
                    [default] interface Windows.AI.Actions.Hosting.IActionEntityRegistrationInfo;
                    interface Windows.Foundation.IClosable;
                }

                [contract(Windows.AI.Actions.ActionsContract, 4.0)]
                [marshaling_behavior(agile)]
                runtimeclass ActionInstance
                {
                    [default] interface Windows.AI.Actions.Hosting.IActionInstance;
                }

                [contract(Windows.AI.Actions.ActionsContract, 4.0)]
                [marshaling_behavior(agile)]
                runtimeclass ActionInstanceDisplayInfo
                {
                    [default] interface Windows.AI.Actions.Hosting.IActionInstanceDisplayInfo;
                }

                [contract(Windows.AI.Actions.ActionsContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass ActionOverload
                {
                    [default] interface Windows.AI.Actions.Hosting.IActionOverload;
                    [contract(Windows.AI.Actions.ActionsContract, 3.0)] interface Windows.AI.Actions.Hosting.IActionOverload2;
                    interface Windows.Foundation.IClosable;
                }
            }
        }
    }
}
