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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Pickers
        {
            namespace Provider
            {
                typedef enum AddFileResult AddFileResult;

                typedef enum FileSelectionMode FileSelectionMode;

                typedef enum SetFileNameResult SetFileNameResult;

                interface IFileOpenPickerUI;

                interface IFileRemovedEventArgs;

                interface IFileSavePickerUI;

                interface IPickerClosingDeferral;

                interface IPickerClosingEventArgs;

                interface IPickerClosingOperation;

                interface ITargetFileRequest;

                interface ITargetFileRequestDeferral;

                interface ITargetFileRequestedEventArgs;

                runtimeclass FileOpenPickerUI;

                runtimeclass FileRemovedEventArgs;

                runtimeclass FileSavePickerUI;

                runtimeclass PickerClosingDeferral;

                runtimeclass PickerClosingEventArgs;

                runtimeclass PickerClosingOperation;

                runtimeclass TargetFileRequest;

                runtimeclass TargetFileRequestDeferral;

                runtimeclass TargetFileRequestedEventArgs;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Storage
    {
        namespace Pickers
        {
            namespace Provider
            {
                declare
                {
                    interface Windows.Foundation.TypedEventHandler<Windows.Storage.Pickers.Provider.FileOpenPickerUI*, Windows.Storage.Pickers.Provider.FileRemovedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Storage.Pickers.Provider.FileOpenPickerUI*, Windows.Storage.Pickers.Provider.PickerClosingEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Storage.Pickers.Provider.FileSavePickerUI*, IInspectable*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Storage.Pickers.Provider.FileSavePickerUI*, Windows.Storage.Pickers.Provider.TargetFileRequestedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Storage
    {
        namespace Pickers
        {
            namespace Provider
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum AddFileResult
                {
                    Added        = 0,
                    AlreadyAdded = 1,
                    NotAllowed   = 2,
                    Unavailable  = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum FileSelectionMode
                {
                    Single   = 0,
                    Multiple = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum SetFileNameResult
                {
                    Succeeded   = 0,
                    NotAllowed  = 1,
                    Unavailable = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Storage.Pickers.Provider.FileOpenPickerUI)]
                [uuid(DDA45A10-F9D4-40C4-8AF5-C5B6B5A61D1D)]
                interface IFileOpenPickerUI : IInspectable
                {
                    HRESULT AddFile([in] HSTRING id, [in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Storage.Pickers.Provider.AddFileResult* addResult);
                    HRESULT RemoveFile([in] HSTRING id);
                    HRESULT ContainsFile([in] HSTRING id, [out] [retval] boolean* isContained);
                    HRESULT CanAddFile([in] Windows.Storage.IStorageFile* file, [out] [retval] boolean* canAdd);
                    [propget] HRESULT AllowedFileTypes([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                    [propget] HRESULT SelectionMode([out] [retval] Windows.Storage.Pickers.Provider.FileSelectionMode* value);
                    [propget] HRESULT SettingsIdentifier([out] [retval] HSTRING* value);
                    [propget] HRESULT Title([out] [retval] HSTRING* value);
                    [propput] HRESULT Title([in] HSTRING value);
                    [deprecated("Since Windows 10, only apps can remove files, not end users so the FileRemoved event will not be raised.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)] [eventadd] HRESULT FileRemoved([in] Windows.Foundation.TypedEventHandler<Windows.Storage.Pickers.Provider.FileOpenPickerUI*, Windows.Storage.Pickers.Provider.FileRemovedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [deprecated("Since Windows 10, only apps can remove files, not end users so the FileRemoved event will not be raised.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)] [eventremove] HRESULT FileRemoved([in] EventRegistrationToken token);
                    [eventadd] HRESULT Closing([in] Windows.Foundation.TypedEventHandler<Windows.Storage.Pickers.Provider.FileOpenPickerUI*, Windows.Storage.Pickers.Provider.PickerClosingEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT Closing([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [deprecated("Since Windows 10, only apps can remove files, not end users so the FileRemoved event will not be raised.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Storage.Pickers.Provider.FileRemovedEventArgs)]
                [uuid(13043DA7-7FCA-4C2B-9ECA-6890F9F00185)]
                interface IFileRemovedEventArgs : IInspectable
                {
                    [deprecated("Since Windows 10, only apps can remove files, not end users so the FileRemoved event will not be raised.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)] [propget] HRESULT Id([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Storage.Pickers.Provider.FileSavePickerUI)]
                [uuid(9656C1E7-3E56-43CC-8A39-33C73D9D542B)]
                interface IFileSavePickerUI : IInspectable
                {
                    [propget] HRESULT Title([out] [retval] HSTRING* value);
                    [propput] HRESULT Title([in] HSTRING value);
                    [propget] HRESULT AllowedFileTypes([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                    [propget] HRESULT SettingsIdentifier([out] [retval] HSTRING* value);
                    [propget] HRESULT FileName([out] [retval] HSTRING* value);
                    HRESULT TrySetFileName([in] HSTRING value, [out] [retval] Windows.Storage.Pickers.Provider.SetFileNameResult* result);
                    [eventadd] HRESULT FileNameChanged([in] Windows.Foundation.TypedEventHandler<Windows.Storage.Pickers.Provider.FileSavePickerUI*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT FileNameChanged([in] EventRegistrationToken token);
                    [eventadd] HRESULT TargetFileRequested([in] Windows.Foundation.TypedEventHandler<Windows.Storage.Pickers.Provider.FileSavePickerUI*, Windows.Storage.Pickers.Provider.TargetFileRequestedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT TargetFileRequested([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Storage.Pickers.Provider.PickerClosingDeferral)]
                [uuid(7AF7F71E-1A67-4A31-AE80-E907708A619B)]
                interface IPickerClosingDeferral : IInspectable
                {
                    HRESULT Complete();
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Storage.Pickers.Provider.PickerClosingEventArgs)]
                [uuid(7E59F224-B332-4F12-8B9F-A8C2F06B32CD)]
                interface IPickerClosingEventArgs : IInspectable
                {
                    [propget] HRESULT ClosingOperation([out] [retval] Windows.Storage.Pickers.Provider.PickerClosingOperation** value);
                    [propget] HRESULT IsCanceled([out] [retval] boolean* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Storage.Pickers.Provider.PickerClosingOperation)]
                [uuid(4CE9FB84-BEEE-4E39-A773-FC5F0EAE328D)]
                interface IPickerClosingOperation : IInspectable
                {
                    HRESULT GetDeferral([out] [retval] Windows.Storage.Pickers.Provider.PickerClosingDeferral** value);
                    [propget] HRESULT Deadline([out] [retval] Windows.Foundation.DateTime* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Storage.Pickers.Provider.TargetFileRequest)]
                [uuid(42BD3355-7F88-478B-8E81-690B20340678)]
                interface ITargetFileRequest : IInspectable
                {
                    [propget] HRESULT TargetFile([out] [retval] Windows.Storage.IStorageFile** value);
                    [propput] HRESULT TargetFile([in] Windows.Storage.IStorageFile* value);
                    HRESULT GetDeferral([out] [retval] Windows.Storage.Pickers.Provider.TargetFileRequestDeferral** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Storage.Pickers.Provider.TargetFileRequestDeferral)]
                [uuid(4AEE9D91-BF15-4DA9-95F6-F6B7D558225B)]
                interface ITargetFileRequestDeferral : IInspectable
                {
                    HRESULT Complete();
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Storage.Pickers.Provider.TargetFileRequestedEventArgs)]
                [uuid(B163DBC1-1B51-4C89-A591-0FD40B3C57C9)]
                interface ITargetFileRequestedEventArgs : IInspectable
                {
                    [propget] HRESULT Request([out] [retval] Windows.Storage.Pickers.Provider.TargetFileRequest** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass FileOpenPickerUI
                {
                    [default] interface Windows.Storage.Pickers.Provider.IFileOpenPickerUI;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [deprecated("Since Windows 10, only apps can remove files, not end users so the FileRemoved event will not be raised.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)]
                runtimeclass FileRemovedEventArgs
                {
                    [default] interface Windows.Storage.Pickers.Provider.IFileRemovedEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass FileSavePickerUI
                {
                    [default] interface Windows.Storage.Pickers.Provider.IFileSavePickerUI;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass PickerClosingDeferral
                {
                    [default] interface Windows.Storage.Pickers.Provider.IPickerClosingDeferral;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass PickerClosingEventArgs
                {
                    [default] interface Windows.Storage.Pickers.Provider.IPickerClosingEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass PickerClosingOperation
                {
                    [default] interface Windows.Storage.Pickers.Provider.IPickerClosingOperation;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass TargetFileRequest
                {
                    [default] interface Windows.Storage.Pickers.Provider.ITargetFileRequest;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass TargetFileRequestDeferral
                {
                    [default] interface Windows.Storage.Pickers.Provider.ITargetFileRequestDeferral;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass TargetFileRequestedEventArgs
                {
                    [default] interface Windows.Storage.Pickers.Provider.ITargetFileRequestedEventArgs;
                }
            }
        }
    }
}
