//
// 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.Storage.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(__windows2Estorage_h__)")
cpp_quote("#include <Windows.Storage.h>")
cpp_quote("#endif // !defined(__windows2Estorage_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 Foundation
    {
        typedef struct DateTime DateTime;
    }
}
namespace Windows
{
    namespace Storage
    {
        runtimeclass StorageFolder;
    }
}
namespace Windows
{
    namespace System
    {
        typedef enum ProcessorArchitecture ProcessorArchitecture;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        typedef struct PackageVersion PackageVersion;

        interface ISuspendingDeferral;

        interface ISuspendingOperation;

        interface ISuspendingEventArgs;

        interface IPackageId;

        interface IPackage;

        interface IPackageStatics;

        interface IDesignModeStatics;

        runtimeclass SuspendingEventArgs;

        runtimeclass SuspendingDeferral;

        runtimeclass SuspendingOperation;

        runtimeclass PackageId;

        runtimeclass Package;

        runtimeclass DesignMode;
    }
}

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

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

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

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

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

        [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);
        }

        [uuid(1ADB665E-37C7-4790-9980-DD7AE74E8BB2)]
        [exclusiveto(Windows.ApplicationModel.PackageId)]
        [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);
        }

        [uuid(163C792F-BD75-413C-BF23-B1FE7B95D825)]
        [version(0x06020000)]
        [exclusiveto(Windows.ApplicationModel.Package)]
        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);
        }

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

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

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

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

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

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

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

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