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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            runtimeclass ValueSet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        runtimeclass StorageFile;

        runtimeclass StorageFolder;
    }
}
namespace Windows
{
    namespace System
    {
        runtimeclass User;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Pickers
        {
            typedef enum PickerLocationId PickerLocationId;

            typedef enum PickerViewMode PickerViewMode;

            interface IFileOpenPicker;

            interface IFileOpenPicker2;

            interface IFileOpenPicker3;

            interface IFileOpenPickerStatics;

            interface IFileOpenPickerStatics2;

            interface IFileOpenPickerWithOperationId;

            interface IFileSavePicker;

            interface IFileSavePicker2;

            interface IFileSavePicker3;

            interface IFileSavePicker4;

            interface IFileSavePickerStatics;

            interface IFolderPicker;

            interface IFolderPicker2;

            interface IFolderPicker3;

            interface IFolderPickerStatics;

            runtimeclass FileExtensionVector;

            runtimeclass FileOpenPicker;

            runtimeclass FilePickerFileTypesOrderedMap;

            runtimeclass FilePickerSelectedFilesArray;

            runtimeclass FileSavePicker;

            runtimeclass FolderPicker;
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Storage
    {
        namespace Pickers
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PickerLocationId
            {
                DocumentsLibrary = 0,
                ComputerFolder   = 1,
                Desktop          = 2,
                Downloads        = 3,
                HomeGroup        = 4,
                MusicLibrary     = 5,
                PicturesLibrary  = 6,
                VideosLibrary    = 7,
                Objects3D        = 8,
                Unspecified      = 9
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PickerViewMode
            {
                List      = 0,
                Thumbnail = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.Pickers.FileOpenPicker)]
            [uuid(2CA8278A-12C5-4C5F-8977-94547793C241)]
            interface IFileOpenPicker : IInspectable
            {
                [propget] HRESULT ViewMode([out] [retval] Windows.Storage.Pickers.PickerViewMode* value);
                [propput] HRESULT ViewMode([in] Windows.Storage.Pickers.PickerViewMode value);
                [propget] HRESULT SettingsIdentifier([out] [retval] HSTRING* value);
                [propput] HRESULT SettingsIdentifier([in] HSTRING value);
                [propget] HRESULT SuggestedStartLocation([out] [retval] Windows.Storage.Pickers.PickerLocationId* value);
                [propput] HRESULT SuggestedStartLocation([in] Windows.Storage.Pickers.PickerLocationId value);
                [propget] HRESULT CommitButtonText([out] [retval] HSTRING* value);
                [propput] HRESULT CommitButtonText([in] HSTRING value);
                [propget] HRESULT FileTypeFilter([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                HRESULT PickSingleFileAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFile*>** operation);
                HRESULT PickMultipleFilesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.StorageFile*>*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.Pickers.FileOpenPicker)]
            [uuid(8CEB6CD2-B446-46F7-B265-90F8E55AD650)]
            interface IFileOpenPicker2 : IInspectable
            {
                [deprecated("Instead, use PickSingleFileAsync/PickMultipleFilesAsync", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT ContinuationData([out] [retval] Windows.Foundation.Collections.ValueSet** value);
                [deprecated("Instead, use PickSingleFileAsync", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] HRESULT PickSingleFileAndContinue();
                [deprecated("Instead, use PickMultipleFilesAsync", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] HRESULT PickMultipleFilesAndContinue();
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Storage.Pickers.FileOpenPicker)]
            [uuid(D9A5C5B3-C5DC-5B98-BD80-A8D0CA0584D8)]
            interface IFileOpenPicker3 : IInspectable
            {
                [propget] HRESULT User([out] [retval] Windows.System.User** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.Pickers.FileOpenPicker)]
            [uuid(6821573B-2F02-4833-96D4-ABBFAD72B67B)]
            interface IFileOpenPickerStatics : IInspectable
            {
                [deprecated("Instead, use PickSingleFileAsync", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] HRESULT ResumePickSingleFileAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFile*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Storage.Pickers.FileOpenPicker)]
            [uuid(E8917415-EDDD-5C98-B6F3-366FDFCAD392)]
            interface IFileOpenPickerStatics2 : IInspectable
            {
                HRESULT CreateForUser([in] Windows.System.User* user, [out] [retval] Windows.Storage.Pickers.FileOpenPicker** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.Pickers.FileOpenPicker)]
            [uuid(3F57B569-2522-4CA5-AA73-A15509F1FCBF)]
            interface IFileOpenPickerWithOperationId : IInspectable
            {
                HRESULT PickSingleFileAsync([in] HSTRING pickerOperationId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFile*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.Pickers.FileSavePicker)]
            [uuid(3286FFCB-617F-4CC5-AF6A-B3FDF29AD145)]
            interface IFileSavePicker : IInspectable
            {
                [propget] HRESULT SettingsIdentifier([out] [retval] HSTRING* value);
                [propput] HRESULT SettingsIdentifier([in] HSTRING value);
                [propget] HRESULT SuggestedStartLocation([out] [retval] Windows.Storage.Pickers.PickerLocationId* value);
                [propput] HRESULT SuggestedStartLocation([in] Windows.Storage.Pickers.PickerLocationId value);
                [propget] HRESULT CommitButtonText([out] [retval] HSTRING* value);
                [propput] HRESULT CommitButtonText([in] HSTRING value);
                [propget] HRESULT FileTypeChoices([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>** value);
                [propget] HRESULT DefaultFileExtension([out] [retval] HSTRING* value);
                [propput] HRESULT DefaultFileExtension([in] HSTRING value);
                [propget] HRESULT SuggestedSaveFile([out] [retval] Windows.Storage.StorageFile** value);
                [propput] HRESULT SuggestedSaveFile([in] Windows.Storage.StorageFile* value);
                [propget] HRESULT SuggestedFileName([out] [retval] HSTRING* value);
                [propput] HRESULT SuggestedFileName([in] HSTRING value);
                HRESULT PickSaveFileAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFile*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.Pickers.FileSavePicker)]
            [uuid(0EC313A2-D24B-449A-8197-E89104FD42CC)]
            interface IFileSavePicker2 : IInspectable
            {
                [propget] HRESULT ContinuationData([out] [retval] Windows.Foundation.Collections.ValueSet** value);
                [deprecated("Instead, use PickSaveFileAsync", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] HRESULT PickSaveFileAndContinue();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.Pickers.FileSavePicker)]
            [uuid(698AEC69-BA3C-4E51-BD90-4ABCBBF4CFAF)]
            interface IFileSavePicker3 : IInspectable
            {
                [propget] HRESULT EnterpriseId([out] [retval] HSTRING* value);
                [propput] HRESULT EnterpriseId([in] HSTRING value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Storage.Pickers.FileSavePicker)]
            [uuid(E7D83A5A-DDFA-5DE0-8B70-C842C21988EC)]
            interface IFileSavePicker4 : IInspectable
            {
                [propget] HRESULT User([out] [retval] Windows.System.User** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Storage.Pickers.FileSavePicker)]
            [uuid(28E3CF9E-961C-5E2C-AED7-E64737F4CE37)]
            interface IFileSavePickerStatics : IInspectable
            {
                HRESULT CreateForUser([in] Windows.System.User* user, [out] [retval] Windows.Storage.Pickers.FileSavePicker** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.Pickers.FolderPicker)]
            [uuid(084F7799-F3FB-400A-99B1-7B4A772FD60D)]
            interface IFolderPicker : IInspectable
            {
                [propget] HRESULT ViewMode([out] [retval] Windows.Storage.Pickers.PickerViewMode* value);
                [propput] HRESULT ViewMode([in] Windows.Storage.Pickers.PickerViewMode value);
                [propget] HRESULT SettingsIdentifier([out] [retval] HSTRING* value);
                [propput] HRESULT SettingsIdentifier([in] HSTRING value);
                [propget] HRESULT SuggestedStartLocation([out] [retval] Windows.Storage.Pickers.PickerLocationId* value);
                [propput] HRESULT SuggestedStartLocation([in] Windows.Storage.Pickers.PickerLocationId value);
                [propget] HRESULT CommitButtonText([out] [retval] HSTRING* value);
                [propput] HRESULT CommitButtonText([in] HSTRING value);
                [propget] HRESULT FileTypeFilter([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                HRESULT PickSingleFolderAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFolder*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.Pickers.FolderPicker)]
            [uuid(8EB3BA97-DC85-4616-BE94-9660881F2F5D)]
            interface IFolderPicker2 : IInspectable
            {
                [propget] HRESULT ContinuationData([out] [retval] Windows.Foundation.Collections.ValueSet** value);
                [deprecated("Instead, use PickSingleFolderAsync", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] HRESULT PickFolderAndContinue();
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Storage.Pickers.FolderPicker)]
            [uuid(673B1E29-D326-53C0-BD24-A25C714CEE36)]
            interface IFolderPicker3 : IInspectable
            {
                [propget] HRESULT User([out] [retval] Windows.System.User** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Storage.Pickers.FolderPicker)]
            [uuid(9BE34740-7CA1-5942-A3C8-46F2551ECFF3)]
            interface IFolderPickerStatics : IInspectable
            {
                HRESULT CreateForUser([in] Windows.System.User* user, [out] [retval] Windows.Storage.Pickers.FolderPicker** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass FileExtensionVector
            {
                [default] interface Windows.Foundation.Collections.IVector<HSTRING>;
                interface Windows.Foundation.Collections.IIterable<HSTRING>;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Storage.Pickers.IFileOpenPickerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Storage.Pickers.IFileOpenPickerStatics2, Windows.Foundation.UniversalApiContract, 8.0)]
            [threading(both)]
            runtimeclass FileOpenPicker
            {
                interface Windows.Storage.Pickers.IFileOpenPicker2;
                interface Windows.Storage.Pickers.IFileOpenPickerWithOperationId;
                [default] interface Windows.Storage.Pickers.IFileOpenPicker;
                [contract(Windows.Foundation.UniversalApiContract, 8.0)] interface Windows.Storage.Pickers.IFileOpenPicker3;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass FilePickerFileTypesOrderedMap
            {
                [default] interface Windows.Foundation.Collections.IMap<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>*>;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass FilePickerSelectedFilesArray
            {
                [default] interface Windows.Foundation.Collections.IVectorView<Windows.Storage.StorageFile*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Storage.StorageFile*>;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Storage.Pickers.IFileSavePickerStatics, Windows.Foundation.UniversalApiContract, 8.0)]
            [threading(both)]
            runtimeclass FileSavePicker
            {
                interface Windows.Storage.Pickers.IFileSavePicker2;
                interface Windows.Storage.Pickers.IFileSavePicker3;
                [default] interface Windows.Storage.Pickers.IFileSavePicker;
                [contract(Windows.Foundation.UniversalApiContract, 8.0)] interface Windows.Storage.Pickers.IFileSavePicker4;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Storage.Pickers.IFolderPickerStatics, Windows.Foundation.UniversalApiContract, 8.0)]
            [threading(both)]
            runtimeclass FolderPicker
            {
                interface Windows.Storage.Pickers.IFolderPicker2;
                [default] interface Windows.Storage.Pickers.IFolderPicker;
                [contract(Windows.Foundation.UniversalApiContract, 8.0)] interface Windows.Storage.Pickers.IFolderPicker3;
            }
        }
    }
}
