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

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 AppInfo;

        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 AppExtensions
        {
            interface IAppExtension;

            interface IAppExtensionCatalog;

            interface IAppExtensionCatalogStatics;

            interface IAppExtensionPackageInstalledEventArgs;

            interface IAppExtensionPackageStatusChangedEventArgs;

            interface IAppExtensionPackageUninstallingEventArgs;

            interface IAppExtensionPackageUpdatedEventArgs;

            interface IAppExtensionPackageUpdatingEventArgs;

            runtimeclass AppExtension;

            runtimeclass AppExtensionCatalog;

            runtimeclass AppExtensionPackageInstalledEventArgs;

            runtimeclass AppExtensionPackageStatusChangedEventArgs;

            runtimeclass AppExtensionPackageUninstallingEventArgs;

            runtimeclass AppExtensionPackageUpdatedEventArgs;

            runtimeclass AppExtensionPackageUpdatingEventArgs;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.AppExtensions.AppExtension*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.AppExtensions.AppExtension*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.AppExtensions.AppExtension*>*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppExtensions.AppExtensionCatalog*, Windows.ApplicationModel.AppExtensions.AppExtensionPackageInstalledEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppExtensions.AppExtensionCatalog*, Windows.ApplicationModel.AppExtensions.AppExtensionPackageStatusChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppExtensions.AppExtensionCatalog*, Windows.ApplicationModel.AppExtensions.AppExtensionPackageUninstallingEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppExtensions.AppExtensionCatalog*, Windows.ApplicationModel.AppExtensions.AppExtensionPackageUpdatedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppExtensions.AppExtensionCatalog*, Windows.ApplicationModel.AppExtensions.AppExtensionPackageUpdatingEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace AppExtensions
        {
            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.ApplicationModel.AppExtensions.AppExtension)]
            [uuid(8450902C-15ED-4FAF-93EA-2237BBF8CBD6)]
            interface IAppExtension : 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);
                [propget] HRESULT AppInfo([out] [retval] Windows.ApplicationModel.AppInfo** value);
                HRESULT GetExtensionPropertiesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IPropertySet*>** operation);
                HRESULT GetPublicFolderAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFolder*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.ApplicationModel.AppExtensions.AppExtensionCatalog)]
            [uuid(97872032-8426-4AD1-9084-92E88C2DA200)]
            interface IAppExtensionCatalog : IInspectable
            {
                HRESULT FindAllAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.AppExtensions.AppExtension*>*>** operation);
                HRESULT RequestRemovePackageAsync([in] HSTRING packageFullName, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                [eventadd] HRESULT PackageInstalled([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppExtensions.AppExtensionCatalog*, Windows.ApplicationModel.AppExtensions.AppExtensionPackageInstalledEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PackageInstalled([in] EventRegistrationToken token);
                [eventadd] HRESULT PackageUpdating([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppExtensions.AppExtensionCatalog*, Windows.ApplicationModel.AppExtensions.AppExtensionPackageUpdatingEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PackageUpdating([in] EventRegistrationToken token);
                [eventadd] HRESULT PackageUpdated([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppExtensions.AppExtensionCatalog*, Windows.ApplicationModel.AppExtensions.AppExtensionPackageUpdatedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PackageUpdated([in] EventRegistrationToken token);
                [eventadd] HRESULT PackageUninstalling([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppExtensions.AppExtensionCatalog*, Windows.ApplicationModel.AppExtensions.AppExtensionPackageUninstallingEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PackageUninstalling([in] EventRegistrationToken token);
                [eventadd] HRESULT PackageStatusChanged([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.AppExtensions.AppExtensionCatalog*, Windows.ApplicationModel.AppExtensions.AppExtensionPackageStatusChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PackageStatusChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.ApplicationModel.AppExtensions.AppExtensionCatalog)]
            [uuid(3C36668A-5F18-4F0B-9CE5-CAB61D196F11)]
            interface IAppExtensionCatalogStatics : IInspectable
            {
                HRESULT Open([in] HSTRING appExtensionName, [out] [retval] Windows.ApplicationModel.AppExtensions.AppExtensionCatalog** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.ApplicationModel.AppExtensions.AppExtensionPackageInstalledEventArgs)]
            [uuid(39E59234-3351-4A8D-9745-E7D3DD45BC48)]
            interface IAppExtensionPackageInstalledEventArgs : IInspectable
            {
                [propget] HRESULT AppExtensionName([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
                [propget] HRESULT Extensions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.AppExtensions.AppExtension*>** values);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.ApplicationModel.AppExtensions.AppExtensionPackageStatusChangedEventArgs)]
            [uuid(1CE17433-1153-44FD-87B1-8AE1050303DF)]
            interface IAppExtensionPackageStatusChangedEventArgs : IInspectable
            {
                [propget] HRESULT AppExtensionName([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.ApplicationModel.AppExtensions.AppExtensionPackageUninstallingEventArgs)]
            [uuid(60F160C5-171E-40FF-AE98-AB2C20DD4D75)]
            interface IAppExtensionPackageUninstallingEventArgs : IInspectable
            {
                [propget] HRESULT AppExtensionName([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.ApplicationModel.AppExtensions.AppExtensionPackageUpdatedEventArgs)]
            [uuid(3A83C43F-797E-44B5-BA24-A4C8B5A543D7)]
            interface IAppExtensionPackageUpdatedEventArgs : IInspectable
            {
                [propget] HRESULT AppExtensionName([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
                [propget] HRESULT Extensions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.AppExtensions.AppExtension*>** values);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.ApplicationModel.AppExtensions.AppExtensionPackageUpdatingEventArgs)]
            [uuid(7ED59329-1A65-4800-A700-B321009E306A)]
            interface IAppExtensionPackageUpdatingEventArgs : IInspectable
            {
                [propget] HRESULT AppExtensionName([out] [retval] HSTRING* value);
                [propget] HRESULT Package([out] [retval] Windows.ApplicationModel.Package** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppExtension
            {
                [default] interface Windows.ApplicationModel.AppExtensions.IAppExtension;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [static(Windows.ApplicationModel.AppExtensions.IAppExtensionCatalogStatics, Windows.Foundation.UniversalApiContract, 3.0)]
            runtimeclass AppExtensionCatalog
            {
                [default] interface Windows.ApplicationModel.AppExtensions.IAppExtensionCatalog;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppExtensionPackageInstalledEventArgs
            {
                [default] interface Windows.ApplicationModel.AppExtensions.IAppExtensionPackageInstalledEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppExtensionPackageStatusChangedEventArgs
            {
                [default] interface Windows.ApplicationModel.AppExtensions.IAppExtensionPackageStatusChangedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppExtensionPackageUninstallingEventArgs
            {
                [default] interface Windows.ApplicationModel.AppExtensions.IAppExtensionPackageUninstallingEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppExtensionPackageUpdatedEventArgs
            {
                [default] interface Windows.ApplicationModel.AppExtensions.IAppExtensionPackageUpdatedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AppExtensionPackageUpdatingEventArgs
            {
                [default] interface Windows.ApplicationModel.AppExtensions.IAppExtensionPackageUpdatingEventArgs;
            }
        }
    }
}
