//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0014
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.ApplicationModel.Core.idl";
import "Windows.Storage.idl";
import "Windows.Storage.Streams.idl";
import "Windows.System.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(__windows2Eapplicationmodel2Ecore_h__)")
cpp_quote("#include <Windows.ApplicationModel.Core.h>")
cpp_quote("#endif // !defined(__windows2Eapplicationmodel2Ecore_h__)")
cpp_quote("#if !defined(__windows2Estorage_h__)")
cpp_quote("#include <Windows.Storage.h>")
cpp_quote("#endif // !defined(__windows2Estorage_h__)")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if !defined(__windows2Esystem_h__)")
cpp_quote("#include <Windows.System.h>")
cpp_quote("#endif // !defined(__windows2Esystem_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Core
        {
            runtimeclass AppListEntry;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        typedef struct Size Size;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Storage
    {
        runtimeclass StorageFolder;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            runtimeclass RandomAccessStreamReference;
        }
    }
}
namespace Windows
{
    namespace System
    {
        typedef enum ProcessorArchitecture ProcessorArchitecture;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        typedef struct PackageVersion PackageVersion;

        interface IAppDisplayInfo;

        interface IAppInfo;

        interface ISuspendingDeferral;

        interface ISuspendingOperation;

        interface ISuspendingEventArgs;

        interface IPackageIdWithMetadata;

        interface IPackageWithMetadata;

        interface IPackageStatus;

        interface IPackageId;

        interface IPackage;

        interface IPackage2;

        interface IPackage3;

        interface IPackageStatics;

        interface IDesignModeStatics;

        runtimeclass AppDisplayInfo;

        runtimeclass AppInfo;

        runtimeclass SuspendingEventArgs;

        runtimeclass SuspendingDeferral;

        runtimeclass SuspendingOperation;

        runtimeclass PackageStatus;

        runtimeclass PackageId;

        runtimeclass Package;

        runtimeclass DesignMode;
    }
}

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

            interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>;

            interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.AppInfo*>;

            interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Package*>;

            interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.AppInfo*>;

            interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Package*>;

            interface Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>;

            interface Windows.Foundation.EventHandler<Windows.ApplicationModel.SuspendingEventArgs*>;

            interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.AppInfo*>*>;
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        [version(0x06020000)]
        struct PackageVersion
        {
            UINT16 Major;
            UINT16 Minor;
            UINT16 Build;
            UINT16 Revision;
        };

        [exclusiveto(Windows.ApplicationModel.AppDisplayInfo)]
        [uuid(1AEB1103-E4D4-41AA-A4F6-C4A276E79EAC)]
        [version(0x0A000000)]
        interface IAppDisplayInfo : IInspectable
        {
            [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
            [propget] HRESULT Description([out] [retval] HSTRING* value);
            HRESULT GetLogo([in] Windows.Foundation.Size size, [out] [retval] Windows.Storage.Streams.RandomAccessStreamReference** value);
        }

        [exclusiveto(Windows.ApplicationModel.AppInfo)]
        [uuid(CF7F59B3-6A09-4DE8-A6C0-5792D56880D1)]
        [version(0x0A000000)]
        interface IAppInfo : IInspectable
        {
            [propget] HRESULT Id([out] [retval] HSTRING* value);
            [propget] HRESULT AppUserModelId([out] [retval] HSTRING* value);
            [propget] HRESULT DisplayInfo([out] [retval] Windows.ApplicationModel.AppDisplayInfo** value);
            [propget] HRESULT PackageFamilyName([out] [retval] HSTRING* value);
        }

        [uuid(59140509-8BC9-4EB4-B636-DABDC4F46F66)]
        [version(0x06020000)]
        interface ISuspendingDeferral : IInspectable
        {
            HRESULT Complete();
        }

        [uuid(9DA4CA41-20E1-4E9B-9F65-A9F435340C3A)]
        [version(0x06020000)]
        interface ISuspendingOperation : IInspectable
        {
            HRESULT GetDeferral([out] [retval] Windows.ApplicationModel.SuspendingDeferral** deferral);
            [propget] HRESULT Deadline([out] [retval] Windows.Foundation.DateTime* value);
        }

        [uuid(96061C05-2DBA-4D08-B0BD-2B30A131C6AA)]
        [version(0x06020000)]
        interface ISuspendingEventArgs : IInspectable
        {
            [propget] HRESULT SuspendingOperation([out] [retval] Windows.ApplicationModel.SuspendingOperation** value);
        }

        [exclusiveto(Windows.ApplicationModel.PackageId)]
        [uuid(40577A7C-0C9E-443D-9074-855F5CE0A08D)]
        [version(0x0A000000)]
        interface IPackageIdWithMetadata : IInspectable
        {
            [propget] HRESULT ProductId([out] [retval] HSTRING* value);
            [propget] HRESULT Author([out] [retval] HSTRING* value);
        }

        [exclusiveto(Windows.ApplicationModel.Package)]
        [uuid(95949780-1DE9-40F2-B452-0DE9F1910012)]
        [version(0x0A000000)]
        interface IPackageWithMetadata : IInspectable
        {
            [propget] HRESULT InstallDate([out] [retval] Windows.Foundation.DateTime* value);
            HRESULT GetThumbnailToken([out] [retval] HSTRING* value);
            HRESULT Launch([in] HSTRING parameters);
        }

        [exclusiveto(Windows.ApplicationModel.PackageStatus)]
        [uuid(5FE74F71-A365-4C09-A02D-046D525EA1DA)]
        [version(0x0A000000)]
        interface IPackageStatus : IInspectable
        {
            HRESULT VerifyIsOK([out] [retval] boolean* value);
            [propget] HRESULT NotAvailable([out] [retval] boolean* value);
            [propget] HRESULT PackageOffline([out] [retval] boolean* value);
            [propget] HRESULT DataOffline([out] [retval] boolean* value);
            [propget] HRESULT Disabled([out] [retval] boolean* value);
            [propget] HRESULT NeedsRemediation([out] [retval] boolean* value);
            [propget] HRESULT LicenseIssue([out] [retval] boolean* value);
            [propget] HRESULT Modified([out] [retval] boolean* value);
            [propget] HRESULT Tampered([out] [retval] boolean* value);
            [propget] HRESULT DependencyIssue([out] [retval] boolean* value);
            [propget] HRESULT Servicing([out] [retval] boolean* value);
            [propget] HRESULT DeploymentInProgress([out] [retval] boolean* value);
        }

        [exclusiveto(Windows.ApplicationModel.PackageId)]
        [uuid(1ADB665E-37C7-4790-9980-DD7AE74E8BB2)]
        [version(0x06020000)]
        interface IPackageId : IInspectable
        {
            [propget] HRESULT Name([out] [retval] HSTRING* value);
            [propget] HRESULT Version([out] [retval] Windows.ApplicationModel.PackageVersion* value);
            [propget] HRESULT Architecture([out] [retval] Windows.System.ProcessorArchitecture* value);
            [propget] HRESULT ResourceId([out] [retval] HSTRING* value);
            [propget] HRESULT Publisher([out] [retval] HSTRING* value);
            [propget] HRESULT PublisherId([out] [retval] HSTRING* value);
            [propget] HRESULT FullName([out] [retval] HSTRING* value);
            [propget] HRESULT FamilyName([out] [retval] HSTRING* value);
        }

        [exclusiveto(Windows.ApplicationModel.Package)]
        [uuid(163C792F-BD75-413C-BF23-B1FE7B95D825)]
        [version(0x06020000)]
        interface IPackage : IInspectable
        {
            [propget] HRESULT Id([out] [retval] Windows.ApplicationModel.PackageId** value);
            [propget] HRESULT InstalledLocation([out] [retval] Windows.Storage.StorageFolder** value);
            [propget] HRESULT IsFramework([out] [retval] boolean* value);
            [propget] HRESULT Dependencies([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Package*>** value);
        }

        [exclusiveto(Windows.ApplicationModel.Package)]
        [uuid(A6612FB6-7688-4ACE-95FB-359538E7AA01)]
        [version(0x06030000)]
        interface IPackage2 : IInspectable
        {
            [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
            [propget] HRESULT PublisherDisplayName([out] [retval] HSTRING* value);
            [propget] HRESULT Description([out] [retval] HSTRING* value);
            [propget] HRESULT Logo([out] [retval] Windows.Foundation.Uri** value);
            [propget] HRESULT IsResourcePackage([out] [retval] boolean* value);
            [propget] HRESULT IsBundle([out] [retval] boolean* value);
            [propget] HRESULT IsDevelopmentMode([out] [retval] boolean* value);
        }

        [exclusiveto(Windows.ApplicationModel.Package)]
        [uuid(5F738B61-F86A-4917-93D1-F1EE9D3B35D9)]
        [version(0x0A000000)]
        interface IPackage3 : IInspectable
        {
            [propget] HRESULT Status([out] [retval] Windows.ApplicationModel.PackageStatus** value);
            [propget] HRESULT InstalledDate([out] [retval] Windows.Foundation.DateTime* value);
            HRESULT GetAppListEntriesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Core.AppListEntry*>*>** operation);
        }

        [exclusiveto(Windows.ApplicationModel.Package)]
        [uuid(4E534BDF-2960-4878-97A4-9624DEB72F2D)]
        [version(0x06020000)]
        interface IPackageStatics : IInspectable
        {
            [propget] HRESULT Current([out] [retval] Windows.ApplicationModel.Package** value);
        }

        [exclusiveto(Windows.ApplicationModel.DesignMode)]
        [uuid(2C3893CC-F81A-4E7A-B857-76A80887E185)]
        [version(0x06020000)]
        interface IDesignModeStatics : IInspectable
        {
            [propget] HRESULT DesignModeEnabled([out] [retval] boolean* value);
        }

        [marshaling_behavior(agile)]
        [threading(both)]
        [version(0x0A000000)]
        runtimeclass AppDisplayInfo
        {
            [default] interface Windows.ApplicationModel.IAppDisplayInfo;
        }

        [marshaling_behavior(agile)]
        [threading(both)]
        [version(0x0A000000)]
        runtimeclass AppInfo
        {
            [default] interface Windows.ApplicationModel.IAppInfo;
        }

        [marshaling_behavior(agile)]
        [version(0x06020000)]
        runtimeclass SuspendingEventArgs
        {
            [default] interface Windows.ApplicationModel.ISuspendingEventArgs;
        }

        [marshaling_behavior(agile)]
        [version(0x06020000)]
        runtimeclass SuspendingDeferral
        {
            [default] interface Windows.ApplicationModel.ISuspendingDeferral;
        }

        [marshaling_behavior(agile)]
        [version(0x06020000)]
        runtimeclass SuspendingOperation
        {
            [default] interface Windows.ApplicationModel.ISuspendingOperation;
        }

        [marshaling_behavior(agile)]
        [version(0x0A000000)]
        runtimeclass PackageStatus
        {
            [default] interface Windows.ApplicationModel.IPackageStatus;
        }

        [marshaling_behavior(agile)]
        [version(0x06020000)]
        runtimeclass PackageId
        {
            [default] interface Windows.ApplicationModel.IPackageId;
            [version(0x0A000000)] interface Windows.ApplicationModel.IPackageIdWithMetadata;
        }

        [marshaling_behavior(agile)]
        [static(Windows.ApplicationModel.IPackageStatics, 0x06020000)]
        [threading(both)]
        [version(0x06020000)]
        runtimeclass Package
        {
            [default] interface Windows.ApplicationModel.IPackage;
            [version(0x06030000)] interface Windows.ApplicationModel.IPackage2;
            [version(0x0A000000)] interface Windows.ApplicationModel.IPackage3;
            [version(0x0A000000)] interface Windows.ApplicationModel.IPackageWithMetadata;
        }

        [marshaling_behavior(agile)]
        [static(Windows.ApplicationModel.IDesignModeStatics, 0x06020000)]
        [threading(both)]
        [version(0x06020000)]
        runtimeclass DesignMode
        {
        }
    }
}
