//
// 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.ApplicationModel.idl";
import "Windows.ApplicationModel.Activation.idl";
import "Windows.UI.Core.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(__windows2Eapplicationmodel_h__)")
cpp_quote("#include <Windows.ApplicationModel.h>")
cpp_quote("#endif // !defined(__windows2Eapplicationmodel_h__)")
cpp_quote("#if !defined(__windows2Eapplicationmodel2Eactivation_h__)")
cpp_quote("#include <Windows.ApplicationModel.Activation.h>")
cpp_quote("#endif // !defined(__windows2Eapplicationmodel2Eactivation_h__)")
cpp_quote("#if !defined(__windows2Eui2Ecore_h__)")
cpp_quote("#include <Windows.UI.Core.h>")
cpp_quote("#endif // !defined(__windows2Eui2Ecore_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Activation
        {
            interface IActivatedEventArgs;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        runtimeclass SuspendingEventArgs;
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IPropertySet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IGetActivationFactory;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Core
        {
            runtimeclass CoreWindow;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Core
        {
            interface IFrameworkView;

            interface IFrameworkViewSource;

            interface ICoreApplication;

            interface ICoreApplicationUseCount;

            interface ICoreApplicationExit;

            interface ICoreImmersiveApplication;

            interface ICoreApplicationView;

            runtimeclass CoreApplication;

            runtimeclass CoreApplicationView;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Core
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Core.CoreApplicationView*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Core.CoreApplicationView*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Core.CoreApplicationView*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Core
        {
            [uuid(FAAB5CD0-8924-45AC-AD0F-A08FAE5D0324)]
            [version(0x06020000)]
            interface IFrameworkView : IInspectable
            {
                HRESULT Initialize([in] Windows.ApplicationModel.Core.CoreApplicationView* applicationView);
                HRESULT SetWindow([in] Windows.UI.Core.CoreWindow* window);
                HRESULT Load([in] HSTRING entryPoint);
                HRESULT Run();
                HRESULT Uninitialize();
            }

            [uuid(CD770614-65C4-426C-9494-34FC43554862)]
            [version(0x06020000)]
            interface IFrameworkViewSource : IInspectable
            {
                HRESULT CreateView([out] [retval] Windows.ApplicationModel.Core.IFrameworkView** viewProvider);
            }

            [uuid(0AACF7A4-5E1D-49DF-8034-FB6A68BC5ED1)]
            [version(0x06020000)]
            [exclusiveto(Windows.ApplicationModel.Core.CoreApplication)]
            interface ICoreApplication : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [eventadd] HRESULT Suspending([in] Windows.Foundation.EventHandler<Windows.ApplicationModel.SuspendingEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Suspending([in] EventRegistrationToken token);
                [eventadd] HRESULT Resuming([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Resuming([in] EventRegistrationToken token);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IPropertySet** value);
                HRESULT GetCurrentView([out] [retval] Windows.ApplicationModel.Core.CoreApplicationView** value);
                HRESULT Run([in] Windows.ApplicationModel.Core.IFrameworkViewSource* viewSource);
                HRESULT RunWithActivationFactories([in] Windows.Foundation.IGetActivationFactory* activationFactoryCallback);
            }

            [uuid(518DC408-C077-475B-809E-0BC0C57E4B74)]
            [version(0x06020000)]
            [exclusiveto(Windows.ApplicationModel.Core.CoreApplication)]
            interface ICoreApplicationUseCount : IInspectable
            {
                HRESULT IncrementApplicationUseCount();
                HRESULT DecrementApplicationUseCount();
            }

            [uuid(CF86461D-261E-4B72-9ACD-44ED2ACE6A29)]
            [version(0x06020000)]
            [exclusiveto(Windows.ApplicationModel.Core.CoreApplication)]
            interface ICoreApplicationExit : IInspectable
            {
                HRESULT Exit();
                [eventadd] HRESULT Exiting([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Exiting([in] EventRegistrationToken token);
            }

            [uuid(1ADA0E3E-E4A2-4123-B451-DC96BF800419)]
            [version(0x06020000)]
            [exclusiveto(Windows.ApplicationModel.Core.CoreApplication)]
            interface ICoreImmersiveApplication : IInspectable
            {
                [propget] HRESULT Views([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Core.CoreApplicationView*>** value);
                HRESULT CreateNewView([in] HSTRING runtimeType, [in] HSTRING entryPoint, [out] [retval] Windows.ApplicationModel.Core.CoreApplicationView** view);
                [propget] HRESULT MainView([out] [retval] Windows.ApplicationModel.Core.CoreApplicationView** value);
            }

            [uuid(638BB2DB-451D-4661-B099-414F34FFB9F1)]
            [version(0x06020000)]
            [exclusiveto(Windows.ApplicationModel.Core.CoreApplicationView)]
            interface ICoreApplicationView : IInspectable
            {
                [propget] HRESULT CoreWindow([out] [retval] Windows.UI.Core.CoreWindow** value);
                [eventadd] HRESULT Activated([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Core.CoreApplicationView*, Windows.ApplicationModel.Activation.IActivatedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Activated([in] EventRegistrationToken token);
                [propget] HRESULT IsMain([out] [retval] boolean* value);
                [propget] HRESULT IsHosted([out] [retval] boolean* value);
            }

            [static(Windows.ApplicationModel.Core.ICoreApplicationExit, 0x06020000)]
            [static(Windows.ApplicationModel.Core.ICoreApplicationUseCount, 0x06020000)]
            [static(Windows.ApplicationModel.Core.ICoreImmersiveApplication, 0x06020000)]
            [version(0x06020000)]
            [static(Windows.ApplicationModel.Core.ICoreApplication, 0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass CoreApplication
            {
            }

            [version(0x06020000)]
            [marshaling_behavior(standard)]
            runtimeclass CoreApplicationView
            {
                [default] interface Windows.ApplicationModel.Core.ICoreApplicationView;
            }
        }
    }
}
