//
// 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.ApplicationModel.idl";
import "Windows.Storage.idl";

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        runtimeclass Package;
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IPropertySet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        runtimeclass StorageFolder;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace PackageExtensions
        {
            interface IPackageExtension;

            interface IPackageExtensionCatalog;

            interface IPackageExtensionCatalogStatics;

            interface IPackageExtensionPackageInstalledEventArgs;

            interface IPackageExtensionPackageStatusChangedEventArgs;

            interface IPackageExtensionPackageUninstallingEventArgs;

            interface IPackageExtensionPackageUpdatedEventArgs;

            interface IPackageExtensionPackageUpdatingEventArgs;

            runtimeclass PackageExtension;

            runtimeclass PackageExtensionCatalog;

            runtimeclass PackageExtensionPackageInstalledEventArgs;

            runtimeclass PackageExtensionPackageStatusChangedEventArgs;

            runtimeclass PackageExtensionPackageUninstallingEventArgs;

            runtimeclass PackageExtensionPackageUpdatedEventArgs;

            runtimeclass PackageExtensionPackageUpdatingEventArgs;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.PackageExtensions.PackageExtension*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.PackageExtensions.PackageExtension*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.PackageExtensions.PackageExtension*>*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog*, Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageInstalledEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog*, Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageStatusChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog*, Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageUninstallingEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog*, Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageUpdatedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog*, Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageUpdatingEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace PackageExtensions
        {
            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [exclusiveto(Windows.ApplicationModel.PackageExtensions.PackageExtension)]
            [uuid(DA70C957-7EAD-5C3B-9CF0-CC43FAF474B4)]
            interface IPackageExtension : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propget] HRESULT Description([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
                HRESULT GetExtensionProperties([out] [retval] Windows.Foundation.Collections.IPropertySet** result);
                HRESULT GetExtensionPropertiesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IPropertySet*>** operation);
                HRESULT GetPublicPath([out] [retval] HSTRING* result);
                HRESULT GetPublicFolder([out] [retval] Windows.Storage.StorageFolder** result);
                HRESULT GetPublicFolderAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFolder*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [exclusiveto(Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog)]
            [uuid(0879DFE6-AC30-58B2-97F9-480B07E75BFA)]
            interface IPackageExtensionCatalog : IInspectable
            {
                HRESULT FindAll([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.PackageExtensions.PackageExtension*>** result);
                HRESULT FindAllAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.PackageExtensions.PackageExtension*>*>** operation);
                HRESULT RequestRemovePackageAsync([in] HSTRING packageFullName, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                [eventadd] HRESULT PackageInstalled([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog*, Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageInstalledEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PackageInstalled([in] EventRegistrationToken token);
                [eventadd] HRESULT PackageUpdating([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog*, Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageUpdatingEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PackageUpdating([in] EventRegistrationToken token);
                [eventadd] HRESULT PackageUpdated([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog*, Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageUpdatedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PackageUpdated([in] EventRegistrationToken token);
                [eventadd] HRESULT PackageUninstalling([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog*, Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageUninstallingEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PackageUninstalling([in] EventRegistrationToken token);
                [eventadd] HRESULT PackageStatusChanged([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog*, Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageStatusChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PackageStatusChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [exclusiveto(Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog)]
            [uuid(9588ECE4-3183-5684-9E5F-27759733DDFE)]
            interface IPackageExtensionCatalogStatics : IInspectable
            {
                HRESULT Open([in] HSTRING packageExtensionName, [out] [retval] Windows.ApplicationModel.PackageExtensions.PackageExtensionCatalog** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [exclusiveto(Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageInstalledEventArgs)]
            [uuid(3C9B0067-083C-5FE3-BDFB-9FEB156B4118)]
            interface IPackageExtensionPackageInstalledEventArgs : IInspectable
            {
                [propget] HRESULT PackageExtensionName([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
                [propget] HRESULT Extensions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.PackageExtensions.PackageExtension*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [exclusiveto(Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageStatusChangedEventArgs)]
            [uuid(B8FEE20A-680D-5942-876C-5DE12DF1083C)]
            interface IPackageExtensionPackageStatusChangedEventArgs : IInspectable
            {
                [propget] HRESULT PackageExtensionName([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [exclusiveto(Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageUninstallingEventArgs)]
            [uuid(3B8E9CB7-C539-554D-BB33-A84C0BFA3F50)]
            interface IPackageExtensionPackageUninstallingEventArgs : IInspectable
            {
                [propget] HRESULT PackageExtensionName([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [exclusiveto(Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageUpdatedEventArgs)]
            [uuid(FDC31ADD-16A7-509D-8BC4-FDE22E856D2D)]
            interface IPackageExtensionPackageUpdatedEventArgs : IInspectable
            {
                [propget] HRESULT PackageExtensionName([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
                [propget] HRESULT Extensions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.PackageExtensions.PackageExtension*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [exclusiveto(Windows.ApplicationModel.PackageExtensions.PackageExtensionPackageUpdatingEventArgs)]
            [uuid(27AE2CE1-A1D3-532E-8E7E-8B43782FCE09)]
            interface IPackageExtensionPackageUpdatingEventArgs : IInspectable
            {
                [propget] HRESULT PackageExtensionName([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [marshaling_behavior(agile)]
            runtimeclass PackageExtension
            {
                [default] interface Windows.ApplicationModel.PackageExtensions.IPackageExtension;
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [marshaling_behavior(agile)]
            [static(Windows.ApplicationModel.PackageExtensions.IPackageExtensionCatalogStatics, Windows.Foundation.UniversalApiContract, 17.0)]
            [threading(both)]
            runtimeclass PackageExtensionCatalog
            {
                [default] interface Windows.ApplicationModel.PackageExtensions.IPackageExtensionCatalog;
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [marshaling_behavior(agile)]
            runtimeclass PackageExtensionPackageInstalledEventArgs
            {
                [default] interface Windows.ApplicationModel.PackageExtensions.IPackageExtensionPackageInstalledEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [marshaling_behavior(agile)]
            runtimeclass PackageExtensionPackageStatusChangedEventArgs
            {
                [default] interface Windows.ApplicationModel.PackageExtensions.IPackageExtensionPackageStatusChangedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [marshaling_behavior(agile)]
            runtimeclass PackageExtensionPackageUninstallingEventArgs
            {
                [default] interface Windows.ApplicationModel.PackageExtensions.IPackageExtensionPackageUninstallingEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [marshaling_behavior(agile)]
            runtimeclass PackageExtensionPackageUpdatedEventArgs
            {
                [default] interface Windows.ApplicationModel.PackageExtensions.IPackageExtensionPackageUpdatedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 17.0)]
            [marshaling_behavior(agile)]
            runtimeclass PackageExtensionPackageUpdatingEventArgs
            {
                [default] interface Windows.ApplicationModel.PackageExtensions.IPackageExtensionPackageUpdatingEventArgs;
            }
        }
    }
}
