// C++/WinRT v2.0.250303.1

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

#pragma once
#ifndef WINRT_Windows_UI_Shell_Tasks_0_H
#define WINRT_Windows_UI_Shell_Tasks_0_H
WINRT_EXPORT namespace winrt::Windows::Foundation
{
    struct Uri;
}
WINRT_EXPORT namespace winrt::Windows::UI::Shell::Tasks
{
    enum class AppTaskState : int32_t
    {
        Running = 0,
        Completed = 1,
        NeedsAttention = 2,
        Paused = 3,
        Error = 4,
    };
    struct IAppTaskContent;
    struct IAppTaskContentStatics;
    struct IAppTaskInfo;
    struct IAppTaskInfo2;
    struct IAppTaskInfoStatics;
    struct IAppTaskResultAsset;
    struct IAppTaskResultAssetFactory;
    struct AppTaskContent;
    struct AppTaskInfo;
    struct AppTaskResultAsset;
    struct AppTaskContract;
}
namespace winrt::impl
{
    template <> struct category<winrt::Windows::UI::Shell::Tasks::IAppTaskContent>{ using type = interface_category; };
    template <> struct category<winrt::Windows::UI::Shell::Tasks::IAppTaskContentStatics>{ using type = interface_category; };
    template <> struct category<winrt::Windows::UI::Shell::Tasks::IAppTaskInfo>{ using type = interface_category; };
    template <> struct category<winrt::Windows::UI::Shell::Tasks::IAppTaskInfo2>{ using type = interface_category; };
    template <> struct category<winrt::Windows::UI::Shell::Tasks::IAppTaskInfoStatics>{ using type = interface_category; };
    template <> struct category<winrt::Windows::UI::Shell::Tasks::IAppTaskResultAsset>{ using type = interface_category; };
    template <> struct category<winrt::Windows::UI::Shell::Tasks::IAppTaskResultAssetFactory>{ using type = interface_category; };
    template <> struct category<winrt::Windows::UI::Shell::Tasks::AppTaskContent>{ using type = class_category; };
    template <> struct category<winrt::Windows::UI::Shell::Tasks::AppTaskInfo>{ using type = class_category; };
    template <> struct category<winrt::Windows::UI::Shell::Tasks::AppTaskResultAsset>{ using type = class_category; };
    template <> struct category<winrt::Windows::UI::Shell::Tasks::AppTaskState>{ using type = enum_category; };
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::AppTaskContent> = L"Windows.UI.Shell.Tasks.AppTaskContent";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::AppTaskInfo> = L"Windows.UI.Shell.Tasks.AppTaskInfo";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::AppTaskResultAsset> = L"Windows.UI.Shell.Tasks.AppTaskResultAsset";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::AppTaskState> = L"Windows.UI.Shell.Tasks.AppTaskState";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::IAppTaskContent> = L"Windows.UI.Shell.Tasks.IAppTaskContent";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::IAppTaskContentStatics> = L"Windows.UI.Shell.Tasks.IAppTaskContentStatics";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::IAppTaskInfo> = L"Windows.UI.Shell.Tasks.IAppTaskInfo";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::IAppTaskInfo2> = L"Windows.UI.Shell.Tasks.IAppTaskInfo2";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::IAppTaskInfoStatics> = L"Windows.UI.Shell.Tasks.IAppTaskInfoStatics";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::IAppTaskResultAsset> = L"Windows.UI.Shell.Tasks.IAppTaskResultAsset";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::IAppTaskResultAssetFactory> = L"Windows.UI.Shell.Tasks.IAppTaskResultAssetFactory";
    template <> inline constexpr auto& name_v<winrt::Windows::UI::Shell::Tasks::AppTaskContract> = L"Windows.UI.Shell.Tasks.AppTaskContract";
    template <> inline constexpr guid guid_v<winrt::Windows::UI::Shell::Tasks::IAppTaskContent>{ 0x2411BF59,0x1B2D,0x5B63,{ 0x81,0x81,0x03,0xD6,0xC2,0x24,0x8A,0x68 } }; // 2411BF59-1B2D-5B63-8181-03D6C2248A68
    template <> inline constexpr guid guid_v<winrt::Windows::UI::Shell::Tasks::IAppTaskContentStatics>{ 0xAABD19F6,0x7AFC,0x5B1B,{ 0x94,0xF6,0x5D,0xC9,0xDC,0x9A,0xF9,0xE7 } }; // AABD19F6-7AFC-5B1B-94F6-5DC9DC9AF9E7
    template <> inline constexpr guid guid_v<winrt::Windows::UI::Shell::Tasks::IAppTaskInfo>{ 0x6720EED6,0x435B,0x5DB9,{ 0xBE,0x66,0x93,0x43,0xB7,0x06,0x54,0xF7 } }; // 6720EED6-435B-5DB9-BE66-9343B70654F7
    template <> inline constexpr guid guid_v<winrt::Windows::UI::Shell::Tasks::IAppTaskInfo2>{ 0xAD724D71,0xF137,0x51C0,{ 0x81,0x11,0x35,0x52,0x43,0x6B,0xF4,0x47 } }; // AD724D71-F137-51C0-8111-3552436BF447
    template <> inline constexpr guid guid_v<winrt::Windows::UI::Shell::Tasks::IAppTaskInfoStatics>{ 0xA0B0434F,0xC640,0x5800,{ 0x88,0xC9,0xD7,0x69,0x1A,0xC2,0xF4,0x8F } }; // A0B0434F-C640-5800-88C9-D7691AC2F48F
    template <> inline constexpr guid guid_v<winrt::Windows::UI::Shell::Tasks::IAppTaskResultAsset>{ 0x75D0C2B3,0x8A31,0x5F8F,{ 0xBD,0xA4,0xBD,0xCA,0x96,0xE9,0x55,0x32 } }; // 75D0C2B3-8A31-5F8F-BDA4-BDCA96E95532
    template <> inline constexpr guid guid_v<winrt::Windows::UI::Shell::Tasks::IAppTaskResultAssetFactory>{ 0x0334D9DF,0x0E06,0x5999,{ 0xBA,0x41,0x85,0xD7,0x2E,0x98,0x00,0x85 } }; // 0334D9DF-0E06-5999-BA41-85D72E980085
    template <> struct default_interface<winrt::Windows::UI::Shell::Tasks::AppTaskContent>{ using type = winrt::Windows::UI::Shell::Tasks::IAppTaskContent; };
    template <> struct default_interface<winrt::Windows::UI::Shell::Tasks::AppTaskInfo>{ using type = winrt::Windows::UI::Shell::Tasks::IAppTaskInfo; };
    template <> struct default_interface<winrt::Windows::UI::Shell::Tasks::AppTaskResultAsset>{ using type = winrt::Windows::UI::Shell::Tasks::IAppTaskResultAsset; };
    template <> struct abi<winrt::Windows::UI::Shell::Tasks::IAppTaskContent>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall AddButton(void*, void*) noexcept = 0;
            virtual int32_t __stdcall SetTextInput(void*, void*) noexcept = 0;
            virtual int32_t __stdcall SetQuestion(void*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Windows::UI::Shell::Tasks::IAppTaskContentStatics>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall CreateSequenceOfSteps(uint32_t, void**, void*, void**) noexcept = 0;
            virtual int32_t __stdcall CreatePreviewThumbnail(void*, void*, void**) noexcept = 0;
            virtual int32_t __stdcall CreateTextSummaryResult(void*, void**) noexcept = 0;
            virtual int32_t __stdcall CreateGeneratedAssetsResult(uint32_t, void**, void**) noexcept = 0;
            virtual int32_t __stdcall get_MaxButtons(uint32_t*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Windows::UI::Shell::Tasks::IAppTaskInfo>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall Remove() noexcept = 0;
            virtual int32_t __stdcall Update(int32_t, void*) noexcept = 0;
            virtual int32_t __stdcall UpdateState(int32_t) noexcept = 0;
            virtual int32_t __stdcall UpdateTitles(void*, void*) noexcept = 0;
            virtual int32_t __stdcall GetCompletedSteps(uint32_t* __resultSize, void***) noexcept = 0;
            virtual int32_t __stdcall GetExecutingStep(void**) noexcept = 0;
            virtual int32_t __stdcall get_Title(void**) noexcept = 0;
            virtual int32_t __stdcall get_Subtitle(void**) noexcept = 0;
            virtual int32_t __stdcall get_DeepLink(void**) noexcept = 0;
            virtual int32_t __stdcall get_IconUri(void**) noexcept = 0;
            virtual int32_t __stdcall get_State(int32_t*) noexcept = 0;
            virtual int32_t __stdcall get_StartTime(int64_t*) noexcept = 0;
            virtual int32_t __stdcall get_EndTime(void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Windows::UI::Shell::Tasks::IAppTaskInfo2>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall get_Id(void**) noexcept = 0;
            virtual int32_t __stdcall get_HiddenByUser(bool*) noexcept = 0;
            virtual int32_t __stdcall UpdateDeepLink(void*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Windows::UI::Shell::Tasks::IAppTaskInfoStatics>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall IsSupported(bool*) noexcept = 0;
            virtual int32_t __stdcall FindAll(uint32_t* __resultSize, void***) noexcept = 0;
            virtual int32_t __stdcall Create(void*, void*, void*, void*, void*, void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Windows::UI::Shell::Tasks::IAppTaskResultAsset>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
        };
    };
    template <> struct abi<winrt::Windows::UI::Shell::Tasks::IAppTaskResultAssetFactory>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall CreateInstance(void*, void*, void*, void*, void**) noexcept = 0;
        };
    };
    template <typename D>
    struct consume_Windows_UI_Shell_Tasks_IAppTaskContent
    {
        auto AddButton(param::hstring const& text, winrt::Windows::Foundation::Uri const& actionUri) const;
        auto SetTextInput(param::hstring const& placeholderText, param::hstring const& actionUriTemplate) const;
        auto SetQuestion(param::hstring const& question) const;
    };
    template <> struct consume<winrt::Windows::UI::Shell::Tasks::IAppTaskContent>
    {
        template <typename D> using type = consume_Windows_UI_Shell_Tasks_IAppTaskContent<D>;
    };
    template <typename D>
    struct consume_Windows_UI_Shell_Tasks_IAppTaskContentStatics
    {
        auto CreateSequenceOfSteps(array_view<hstring const> completedSteps, param::hstring const& executingStep) const;
        auto CreatePreviewThumbnail(winrt::Windows::Foundation::Uri const& imageUri, param::hstring const& executingStep) const;
        auto CreateTextSummaryResult(param::hstring const& text) const;
        auto CreateGeneratedAssetsResult(array_view<winrt::Windows::UI::Shell::Tasks::AppTaskResultAsset const> assets) const;
        [[nodiscard]] auto MaxButtons() const;
    };
    template <> struct consume<winrt::Windows::UI::Shell::Tasks::IAppTaskContentStatics>
    {
        template <typename D> using type = consume_Windows_UI_Shell_Tasks_IAppTaskContentStatics<D>;
    };
    template <typename D>
    struct consume_Windows_UI_Shell_Tasks_IAppTaskInfo
    {
        auto Remove() const;
        auto Update(winrt::Windows::UI::Shell::Tasks::AppTaskState const& state, winrt::Windows::UI::Shell::Tasks::AppTaskContent const& content) const;
        auto UpdateState(winrt::Windows::UI::Shell::Tasks::AppTaskState const& state) const;
        auto UpdateTitles(param::hstring const& title, param::hstring const& subtitle) const;
        auto GetCompletedSteps() const;
        auto GetExecutingStep() const;
        [[nodiscard]] auto Title() const;
        [[nodiscard]] auto Subtitle() const;
        [[nodiscard]] auto DeepLink() const;
        [[nodiscard]] auto IconUri() const;
        [[nodiscard]] auto State() const;
        [[nodiscard]] auto StartTime() const;
        [[nodiscard]] auto EndTime() const;
    };
    template <> struct consume<winrt::Windows::UI::Shell::Tasks::IAppTaskInfo>
    {
        template <typename D> using type = consume_Windows_UI_Shell_Tasks_IAppTaskInfo<D>;
    };
    template <typename D>
    struct consume_Windows_UI_Shell_Tasks_IAppTaskInfo2
    {
        [[nodiscard]] auto Id() const;
        [[nodiscard]] auto HiddenByUser() const;
        auto UpdateDeepLink(winrt::Windows::Foundation::Uri const& deepLink) const;
    };
    template <> struct consume<winrt::Windows::UI::Shell::Tasks::IAppTaskInfo2>
    {
        template <typename D> using type = consume_Windows_UI_Shell_Tasks_IAppTaskInfo2<D>;
    };
    template <typename D>
    struct consume_Windows_UI_Shell_Tasks_IAppTaskInfoStatics
    {
        auto IsSupported() const;
        auto FindAll() const;
        auto Create(param::hstring const& title, param::hstring const& subtitle, winrt::Windows::Foundation::Uri const& deepLink, winrt::Windows::Foundation::Uri const& iconUri, winrt::Windows::UI::Shell::Tasks::AppTaskContent const& content) const;
    };
    template <> struct consume<winrt::Windows::UI::Shell::Tasks::IAppTaskInfoStatics>
    {
        template <typename D> using type = consume_Windows_UI_Shell_Tasks_IAppTaskInfoStatics<D>;
    };
    template <typename D>
    struct consume_Windows_UI_Shell_Tasks_IAppTaskResultAsset
    {
    };
    template <> struct consume<winrt::Windows::UI::Shell::Tasks::IAppTaskResultAsset>
    {
        template <typename D> using type = consume_Windows_UI_Shell_Tasks_IAppTaskResultAsset<D>;
    };
    template <typename D>
    struct consume_Windows_UI_Shell_Tasks_IAppTaskResultAssetFactory
    {
        auto CreateInstance(param::hstring const& name, param::hstring const& context, winrt::Windows::Foundation::Uri const& iconUri, winrt::Windows::Foundation::Uri const& assetUri) const;
    };
    template <> struct consume<winrt::Windows::UI::Shell::Tasks::IAppTaskResultAssetFactory>
    {
        template <typename D> using type = consume_Windows_UI_Shell_Tasks_IAppTaskResultAssetFactory<D>;
    };
}
#endif
