//
// 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";
import "Windows.Globalization.idl";
import "Windows.Storage.idl";
import "Windows.Storage.Streams.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(__windows2Eglobalization_h__)")
cpp_quote("#include <Windows.Globalization.h>")
cpp_quote("#endif // !defined(__windows2Eglobalization_h__)")
cpp_quote("#if !defined(__windows2Estorage_h__)")
cpp_quote("#include <Windows.Storage.h>")
cpp_quote("#endif // !defined(__windows2Estorage_h__)")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Globalization
    {
        typedef enum DayOfWeek DayOfWeek;
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStream;
        }
    }
}
namespace Windows
{
    namespace System
    {
        namespace UserProfile
        {
            typedef enum AccountPictureKind AccountPictureKind;

            typedef enum SetAccountPictureResult SetAccountPictureResult;

            interface IUserInformationStatics;

            interface ILockScreenStatics;

            interface IGlobalizationPreferencesStatics;

            runtimeclass UserInformation;

            runtimeclass LockScreen;

            runtimeclass GlobalizationPreferences;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace System
    {
        namespace UserProfile
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.System.UserProfile.SetAccountPictureResult>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace System
    {
        namespace UserProfile
        {
            [version(0x06020000)]
            enum AccountPictureKind
            {
                SmallImage = 0,
                LargeImage = 1,
                Video      = 2
            };

            [version(0x06020000)]
            enum SetAccountPictureResult
            {
                Success             = 0,
                ChangeDisabled      = 1,
                LargeOrDynamicError = 2,
                VideoFrameSizeError = 3,
                FileSizeError       = 4,
                Failure             = 5
            };

            [uuid(77F3A910-48FA-489C-934E-2AE85BA8F772)]
            [exclusiveto(Windows.System.UserProfile.UserInformation)]
            [version(0x06020000)]
            interface IUserInformationStatics : IInspectable
            {
                [propget] HRESULT AccountPictureChangeEnabled([out] [retval] boolean* value);
                [propget] HRESULT NameAccessAllowed([out] [retval] boolean* value);
                HRESULT GetAccountPicture([in] Windows.System.UserProfile.AccountPictureKind kind, [out] [retval] Windows.Storage.IStorageFile** storageFile);
                HRESULT SetAccountPictureAsync([in] Windows.Storage.IStorageFile* image, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.System.UserProfile.SetAccountPictureResult>** operation);
                HRESULT SetAccountPicturesAsync([in] Windows.Storage.IStorageFile* smallImage, [in] Windows.Storage.IStorageFile* largeImage, [in] Windows.Storage.IStorageFile* video, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.System.UserProfile.SetAccountPictureResult>** operation);
                HRESULT SetAccountPictureFromStreamAsync([in] Windows.Storage.Streams.IRandomAccessStream* image, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.System.UserProfile.SetAccountPictureResult>** operation);
                HRESULT SetAccountPicturesFromStreamsAsync([in] Windows.Storage.Streams.IRandomAccessStream* smallImage, [in] Windows.Storage.Streams.IRandomAccessStream* largeImage, [in] Windows.Storage.Streams.IRandomAccessStream* video, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.System.UserProfile.SetAccountPictureResult>** operation);
                [eventadd] HRESULT AccountPictureChanged([in] Windows.Foundation.EventHandler<IInspectable*>* changeHandler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AccountPictureChanged([in] EventRegistrationToken token);
                HRESULT GetDisplayNameAsync([out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                HRESULT GetFirstNameAsync([out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                HRESULT GetLastNameAsync([out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                HRESULT GetPrincipalNameAsync([out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                HRESULT GetSessionInitiationProtocolUriAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Uri*>** operation);
                HRESULT GetDomainNameAsync([out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
            }

            [uuid(3EE9D3AD-B607-40AE-B426-7631D9821269)]
            [exclusiveto(Windows.System.UserProfile.LockScreen)]
            [version(0x06020000)]
            interface ILockScreenStatics : IInspectable
            {
                [propget] HRESULT OriginalImageFile([out] [retval] Windows.Foundation.Uri** value);
                HRESULT GetImageStream([out] [retval] Windows.Storage.Streams.IRandomAccessStream** value);
                HRESULT SetImageFileAsync([in] Windows.Storage.IStorageFile* value, [out] [retval] Windows.Foundation.IAsyncAction** Operation);
                HRESULT SetImageStreamAsync([in] Windows.Storage.Streams.IRandomAccessStream* value, [out] [retval] Windows.Foundation.IAsyncAction** Operation);
            }

            [uuid(01BF4326-ED37-4E96-B0E9-C1340D1EA158)]
            [version(0x06020000)]
            [exclusiveto(Windows.System.UserProfile.GlobalizationPreferences)]
            interface IGlobalizationPreferencesStatics : IInspectable
            {
                [propget] HRESULT Calendars([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT Clocks([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT Currencies([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT Languages([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT HomeGeographicRegion([out] [retval] HSTRING* value);
                [propget] HRESULT WeekStartsOn([out] [retval] Windows.Globalization.DayOfWeek* value);
            }

            [version(0x06020000)]
            [static(Windows.System.UserProfile.IUserInformationStatics, 0x06020000)]
            runtimeclass UserInformation
            {
            }

            [version(0x06020000)]
            [static(Windows.System.UserProfile.ILockScreenStatics, 0x06020000)]
            runtimeclass LockScreen
            {
            }

            [static(Windows.System.UserProfile.IGlobalizationPreferencesStatics, 0x06020000)]
            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass GlobalizationPreferences
            {
            }
        }
    }
}
