//
// 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";
// 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(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IPropertySet;
        }
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            interface IPasswordCredential;

            interface ICredentialFactory;

            interface IPasswordVault;

            runtimeclass PasswordCredential;

            runtimeclass PasswordVault;

            runtimeclass PasswordCredentialPropertyStore;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Security.Credentials.PasswordCredential*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Security.Credentials.PasswordCredential*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Security.Credentials.PasswordCredential*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            [uuid(6AB18989-C720-41A7-A6C1-FEADB36329A0)]
            [exclusiveto(Windows.Security.Credentials.PasswordCredential)]
            [version(0x06020000)]
            interface IPasswordCredential : IInspectable
            {
                [propget] HRESULT Resource([out] [retval] HSTRING* resource);
                [propput] HRESULT Resource([in] HSTRING resource);
                [propget] HRESULT UserName([out] [retval] HSTRING* userName);
                [propput] HRESULT UserName([in] HSTRING userName);
                [propget] HRESULT Password([out] [retval] HSTRING* password);
                [propput] HRESULT Password([in] HSTRING password);
                HRESULT RetrievePassword();
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IPropertySet** props);
            }

            [uuid(54EF13A1-BF26-47B5-97DD-DE779B7CAD58)]
            [version(0x06020000)]
            [exclusiveto(Windows.Security.Credentials.PasswordCredential)]
            interface ICredentialFactory : IInspectable
            {
                HRESULT CreatePasswordCredential([in] HSTRING resource, [in] HSTRING userName, [in] HSTRING password, [out] [retval] Windows.Security.Credentials.PasswordCredential** credential);
            }

            [uuid(61FD2C0B-C8D4-48C1-A54F-BC5A64205AF2)]
            [exclusiveto(Windows.Security.Credentials.PasswordVault)]
            [version(0x06020000)]
            interface IPasswordVault : IInspectable
            {
                HRESULT Add([in] Windows.Security.Credentials.PasswordCredential* credential);
                HRESULT Remove([in] Windows.Security.Credentials.PasswordCredential* credential);
                HRESULT Retrieve([in] HSTRING resource, [in] HSTRING userName, [out] [retval] Windows.Security.Credentials.PasswordCredential** credential);
                HRESULT FindAllByResource([in] HSTRING resource, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Credentials.PasswordCredential*>** credentials);
                HRESULT FindAllByUserName([in] HSTRING userName, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Credentials.PasswordCredential*>** credentials);
                HRESULT RetrieveAll([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Credentials.PasswordCredential*>** credentials);
            }

            [activatable(0x06020000)]
            [version(0x06020000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [activatable(Windows.Security.Credentials.ICredentialFactory, 0x06020000)]
            runtimeclass PasswordCredential
            {
                [default] interface Windows.Security.Credentials.IPasswordCredential;
            }

            [marshaling_behavior(agile)]
            [activatable(0x06020000)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass PasswordVault
            {
                [default] interface Windows.Security.Credentials.IPasswordVault;
            }

            [activatable(0x06020000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass PasswordCredentialPropertyStore
            {
                [default] interface Windows.Foundation.Collections.IPropertySet;
                interface Windows.Foundation.Collections.IObservableMap<HSTRING, IInspectable*>;
                interface Windows.Foundation.Collections.IMap<HSTRING, IInspectable*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable*>*>;
            }
        }
    }
}
