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

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

        interface IAsyncAction;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace System
    {
        runtimeclass User;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Calls
        {
            apicontract CallsVoipContract;

            apicontract LockScreenCallContract;

            typedef enum PhoneCallHistoryEntryMedia PhoneCallHistoryEntryMedia;

            typedef enum PhoneCallHistoryEntryOtherAppReadAccess PhoneCallHistoryEntryOtherAppReadAccess;

            typedef enum PhoneCallHistoryEntryQueryDesiredMedia PhoneCallHistoryEntryQueryDesiredMedia;

            typedef enum PhoneCallHistoryEntryRawAddressKind PhoneCallHistoryEntryRawAddressKind;

            typedef enum PhoneCallHistorySourceIdKind PhoneCallHistorySourceIdKind;

            typedef enum PhoneCallHistoryStoreAccessType PhoneCallHistoryStoreAccessType;

            typedef enum VoipPhoneCallMedia VoipPhoneCallMedia;

            typedef enum VoipPhoneCallRejectReason VoipPhoneCallRejectReason;

            typedef enum VoipPhoneCallResourceReservationStatus VoipPhoneCallResourceReservationStatus;

            typedef enum VoipPhoneCallState VoipPhoneCallState;

            interface ICallAnswerEventArgs;

            interface ICallRejectEventArgs;

            interface ICallStateChangeEventArgs;

            interface ILockScreenCallEndCallDeferral;

            interface ILockScreenCallEndRequestedEventArgs;

            interface ILockScreenCallUI;

            interface IMuteChangeEventArgs;

            interface IPhoneCallHistoryEntry;

            interface IPhoneCallHistoryEntryAddress;

            interface IPhoneCallHistoryEntryAddressFactory;

            interface IPhoneCallHistoryEntryQueryOptions;

            interface IPhoneCallHistoryEntryReader;

            interface IPhoneCallHistoryManagerForUser;

            interface IPhoneCallHistoryManagerStatics;

            interface IPhoneCallHistoryManagerStatics2;

            interface IPhoneCallHistoryStore;

            interface IVoipCallCoordinator;

            interface IVoipCallCoordinator2;

            interface IVoipCallCoordinatorStatics;

            interface IVoipPhoneCall;

            interface IVoipPhoneCall2;

            runtimeclass CallAnswerEventArgs;

            runtimeclass CallRejectEventArgs;

            runtimeclass CallStateChangeEventArgs;

            runtimeclass LockScreenCallEndCallDeferral;

            runtimeclass LockScreenCallEndRequestedEventArgs;

            runtimeclass LockScreenCallUI;

            runtimeclass MuteChangeEventArgs;

            runtimeclass PhoneCallHistoryEntry;

            runtimeclass PhoneCallHistoryEntryAddress;

            runtimeclass PhoneCallHistoryEntryQueryOptions;

            runtimeclass PhoneCallHistoryEntryReader;

            runtimeclass PhoneCallHistoryManager;

            runtimeclass PhoneCallHistoryManagerForUser;

            runtimeclass PhoneCallHistoryStore;

            runtimeclass VoipCallCoordinator;

            runtimeclass VoipPhoneCall;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Calls.PhoneCallHistoryEntry*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Calls.PhoneCallHistoryEntry*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Calls.PhoneCallHistoryEntry*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Calls.PhoneCallHistoryStore*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Calls.VoipPhoneCallResourceReservationStatus>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Calls.PhoneCallHistoryEntry*>*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.LockScreenCallUI*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.LockScreenCallUI*, Windows.ApplicationModel.Calls.LockScreenCallEndRequestedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.VoipCallCoordinator*, Windows.ApplicationModel.Calls.MuteChangeEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.VoipPhoneCall*, Windows.ApplicationModel.Calls.CallAnswerEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.VoipPhoneCall*, Windows.ApplicationModel.Calls.CallRejectEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.VoipPhoneCall*, Windows.ApplicationModel.Calls.CallStateChangeEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Calls
        {
            [contractversion(2.0)]
            apicontract CallsVoipContract
            {
            }

            [contractversion(1.0)]
            apicontract LockScreenCallContract
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PhoneCallHistoryEntryMedia
            {
                Audio = 0,
                Video = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PhoneCallHistoryEntryOtherAppReadAccess
            {
                Full       = 0,
                SystemOnly = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum PhoneCallHistoryEntryQueryDesiredMedia
            {
                None  = 0x0,
                Audio = 0x1,
                Video = 0x2,
                All   = 0xFFFFFFFF
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PhoneCallHistoryEntryRawAddressKind
            {
                PhoneNumber = 0,
                Custom      = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PhoneCallHistorySourceIdKind
            {
                CellularPhoneLineId = 0,
                PackageFamilyName   = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PhoneCallHistoryStoreAccessType
            {
                AppEntriesReadWrite        = 0,
                AllEntriesLimitedReadWrite = 1,
                AllEntriesReadWrite        = 2
            };

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [flags]
            enum VoipPhoneCallMedia
            {
                None  = 0x0,
                Audio = 0x1,
                Video = 0x2
            };

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            enum VoipPhoneCallRejectReason
            {
                UserIgnored         = 0,
                TimedOut            = 1,
                OtherIncomingCall   = 2,
                EmergencyCallExists = 3,
                InvalidCallState    = 4
            };

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            enum VoipPhoneCallResourceReservationStatus
            {
                Success               = 0,
                ResourcesNotAvailable = 1
            };

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            enum VoipPhoneCallState
            {
                Ended    = 0,
                Held     = 1,
                Active   = 2,
                Incoming = 3,
                Outgoing = 4
            };

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.CallAnswerEventArgs)]
            [uuid(FD789617-2DD7-4C8C-B2BD-95D17A5BB733)]
            interface ICallAnswerEventArgs : IInspectable
            {
                [propget] HRESULT AcceptedMedia([out] [retval] Windows.ApplicationModel.Calls.VoipPhoneCallMedia* value);
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.CallRejectEventArgs)]
            [uuid(DA47FAD7-13D4-4D92-A1C2-B77811EE37EC)]
            interface ICallRejectEventArgs : IInspectable
            {
                [propget] HRESULT RejectReason([out] [retval] Windows.ApplicationModel.Calls.VoipPhoneCallRejectReason* value);
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.CallStateChangeEventArgs)]
            [uuid(EAB2349E-66F5-47F9-9FB5-459C5198C720)]
            interface ICallStateChangeEventArgs : IInspectable
            {
                [propget] HRESULT State([out] [retval] Windows.ApplicationModel.Calls.VoipPhoneCallState* value);
            }

            [contract(Windows.ApplicationModel.Calls.LockScreenCallContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.LockScreenCallEndCallDeferral)]
            [uuid(2DD7ED0D-98ED-4041-9632-50FF812B773F)]
            interface ILockScreenCallEndCallDeferral : IInspectable
            {
                HRESULT Complete();
            }

            [contract(Windows.ApplicationModel.Calls.LockScreenCallContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.LockScreenCallEndRequestedEventArgs)]
            [uuid(8190A363-6F27-46E9-AEB6-C0AE83E47DC7)]
            interface ILockScreenCallEndRequestedEventArgs : IInspectable
            {
                HRESULT GetDeferral([out] [retval] Windows.ApplicationModel.Calls.LockScreenCallEndCallDeferral** value);
                [propget] HRESULT Deadline([out] [retval] Windows.Foundation.DateTime* value);
            }

            [contract(Windows.ApplicationModel.Calls.LockScreenCallContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.LockScreenCallUI)]
            [uuid(C596FD8D-73C9-4A14-B021-EC1C50A3B727)]
            interface ILockScreenCallUI : IInspectable
            {
                HRESULT Dismiss();
                [eventadd] HRESULT EndRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.LockScreenCallUI*, Windows.ApplicationModel.Calls.LockScreenCallEndRequestedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT EndRequested([in] EventRegistrationToken token);
                [eventadd] HRESULT Closed([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.LockScreenCallUI*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Closed([in] EventRegistrationToken token);
                [propget] HRESULT CallTitle([out] [retval] HSTRING* value);
                [propput] HRESULT CallTitle([in] HSTRING value);
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.MuteChangeEventArgs)]
            [uuid(8585E159-0C41-432C-814D-C5F1FDF530BE)]
            interface IMuteChangeEventArgs : IInspectable
            {
                [propget] HRESULT Muted([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.PhoneCallHistoryEntry)]
            [uuid(FAB0E129-32A4-4B85-83D1-F90D8C23A857)]
            interface IPhoneCallHistoryEntry : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT Address([out] [retval] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryAddress** value);
                [propput] HRESULT Address([in] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryAddress* value);
                [propget] HRESULT Duration([out] [retval] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>** value);
                [propput] HRESULT Duration([in] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>* value);
                [propget] HRESULT IsCallerIdBlocked([out] [retval] boolean* value);
                [propput] HRESULT IsCallerIdBlocked([in] boolean value);
                [propget] HRESULT IsEmergency([out] [retval] boolean* value);
                [propput] HRESULT IsEmergency([in] boolean value);
                [propget] HRESULT IsIncoming([out] [retval] boolean* value);
                [propput] HRESULT IsIncoming([in] boolean value);
                [propget] HRESULT IsMissed([out] [retval] boolean* value);
                [propput] HRESULT IsMissed([in] boolean value);
                [propget] HRESULT IsRinging([out] [retval] boolean* value);
                [propput] HRESULT IsRinging([in] boolean value);
                [propget] HRESULT IsSeen([out] [retval] boolean* value);
                [propput] HRESULT IsSeen([in] boolean value);
                [propget] HRESULT IsSuppressed([out] [retval] boolean* value);
                [propput] HRESULT IsSuppressed([in] boolean value);
                [propget] HRESULT IsVoicemail([out] [retval] boolean* value);
                [propput] HRESULT IsVoicemail([in] boolean value);
                [propget] HRESULT Media([out] [retval] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryMedia* value);
                [propput] HRESULT Media([in] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryMedia value);
                [propget] HRESULT OtherAppReadAccess([out] [retval] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryOtherAppReadAccess* value);
                [propput] HRESULT OtherAppReadAccess([in] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryOtherAppReadAccess value);
                [propget] HRESULT RemoteId([out] [retval] HSTRING* value);
                [propput] HRESULT RemoteId([in] HSTRING value);
                [propget] HRESULT SourceDisplayName([out] [retval] HSTRING* value);
                [propget] HRESULT SourceId([out] [retval] HSTRING* value);
                [propput] HRESULT SourceId([in] HSTRING value);
                [propget] HRESULT SourceIdKind([out] [retval] Windows.ApplicationModel.Calls.PhoneCallHistorySourceIdKind* value);
                [propput] HRESULT SourceIdKind([in] Windows.ApplicationModel.Calls.PhoneCallHistorySourceIdKind value);
                [propget] HRESULT StartTime([out] [retval] Windows.Foundation.DateTime* value);
                [propput] HRESULT StartTime([in] Windows.Foundation.DateTime value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.PhoneCallHistoryEntryAddress)]
            [uuid(30F159DA-3955-4042-84E6-66EEBF82E67F)]
            interface IPhoneCallHistoryEntryAddress : IInspectable
            {
                [propget] HRESULT ContactId([out] [retval] HSTRING* value);
                [propput] HRESULT ContactId([in] HSTRING value);
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propput] HRESULT DisplayName([in] HSTRING value);
                [propget] HRESULT RawAddress([out] [retval] HSTRING* value);
                [propput] HRESULT RawAddress([in] HSTRING value);
                [propget] HRESULT RawAddressKind([out] [retval] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryRawAddressKind* value);
                [propput] HRESULT RawAddressKind([in] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryRawAddressKind value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.PhoneCallHistoryEntryAddress)]
            [uuid(FB0FADBA-C7F0-4BB6-9F6B-BA5D73209ACA)]
            interface IPhoneCallHistoryEntryAddressFactory : IInspectable
            {
                HRESULT Create([in] HSTRING rawAddress, [in] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryRawAddressKind rawAddressKind, [out] [retval] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryAddress** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.PhoneCallHistoryEntryQueryOptions)]
            [uuid(9C5FE15C-8BED-40CA-B06E-C4CA8EAE5C87)]
            interface IPhoneCallHistoryEntryQueryOptions : IInspectable
            {
                [propget] HRESULT DesiredMedia([out] [retval] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryQueryDesiredMedia* value);
                [propput] HRESULT DesiredMedia([in] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryQueryDesiredMedia value);
                [propget] HRESULT SourceIds([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.PhoneCallHistoryEntryReader)]
            [uuid(61ECE4BE-8D86-479F-8404-A9846920FEE6)]
            interface IPhoneCallHistoryEntryReader : IInspectable
            {
                HRESULT ReadBatchAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Calls.PhoneCallHistoryEntry*>*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.PhoneCallHistoryManagerForUser)]
            [uuid(D925C523-F55F-4353-9DB4-0205A5265A55)]
            interface IPhoneCallHistoryManagerForUser : IInspectable
            {
                HRESULT RequestStoreAsync([in] Windows.ApplicationModel.Calls.PhoneCallHistoryStoreAccessType accessType, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Calls.PhoneCallHistoryStore*>** result);
                [propget] HRESULT User([out] [retval] Windows.System.User** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.PhoneCallHistoryManager)]
            [uuid(F5A6DA39-B31F-4F45-AC8E-1B08893C1B50)]
            interface IPhoneCallHistoryManagerStatics : IInspectable
            {
                HRESULT RequestStoreAsync([in] Windows.ApplicationModel.Calls.PhoneCallHistoryStoreAccessType accessType, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Calls.PhoneCallHistoryStore*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.PhoneCallHistoryManager)]
            [uuid(EFD474F0-A2DB-4188-9E92-BC3CFA6813CF)]
            interface IPhoneCallHistoryManagerStatics2 : IInspectable
            {
                HRESULT GetForUser([in] Windows.System.User* user, [out] [retval] Windows.ApplicationModel.Calls.PhoneCallHistoryManagerForUser** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.PhoneCallHistoryStore)]
            [uuid(2F907DB8-B40E-422B-8545-CB1910A61C52)]
            interface IPhoneCallHistoryStore : IInspectable
            {
                HRESULT GetEntryAsync([in] HSTRING callHistoryEntryId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Calls.PhoneCallHistoryEntry*>** result);
                [overload("GetEntryReader")] HRESULT GetEntryReader([out] [retval] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryReader** result);
                [overload("GetEntryReader")] HRESULT GetEntryReaderWithOptions([in] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryQueryOptions* queryOptions, [out] [retval] Windows.ApplicationModel.Calls.PhoneCallHistoryEntryReader** result);
                HRESULT SaveEntryAsync([in] Windows.ApplicationModel.Calls.PhoneCallHistoryEntry* callHistoryEntry, [out] [retval] Windows.Foundation.IAsyncAction** result);
                HRESULT DeleteEntryAsync([in] Windows.ApplicationModel.Calls.PhoneCallHistoryEntry* callHistoryEntry, [out] [retval] Windows.Foundation.IAsyncAction** result);
                HRESULT DeleteEntriesAsync([in] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Calls.PhoneCallHistoryEntry*>* callHistoryEntries, [out] [retval] Windows.Foundation.IAsyncAction** result);
                HRESULT MarkEntryAsSeenAsync([in] Windows.ApplicationModel.Calls.PhoneCallHistoryEntry* callHistoryEntry, [out] [retval] Windows.Foundation.IAsyncAction** result);
                HRESULT MarkEntriesAsSeenAsync([in] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Calls.PhoneCallHistoryEntry*>* callHistoryEntries, [out] [retval] Windows.Foundation.IAsyncAction** result);
                HRESULT GetUnseenCountAsync([out] [retval] Windows.Foundation.IAsyncOperation<UINT32>** result);
                HRESULT MarkAllAsSeenAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                HRESULT GetSourcesUnseenCountAsync([in] Windows.Foundation.Collections.IIterable<HSTRING>* sourceIds, [out] [retval] Windows.Foundation.IAsyncOperation<UINT32>** result);
                HRESULT MarkSourcesAsSeenAsync([in] Windows.Foundation.Collections.IIterable<HSTRING>* sourceIds, [out] [retval] Windows.Foundation.IAsyncAction** result);
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.VoipCallCoordinator)]
            [uuid(4F118BCF-E8EF-4434-9C5F-A8D893FAFE79)]
            interface IVoipCallCoordinator : IInspectable
            {
                HRESULT ReserveCallResourcesAsync([in] HSTRING taskEntryPoint, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Calls.VoipPhoneCallResourceReservationStatus>** operation);
                [eventadd] HRESULT MuteStateChanged([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.VoipCallCoordinator*, Windows.ApplicationModel.Calls.MuteChangeEventArgs*>* muteChangeHandler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MuteStateChanged([in] EventRegistrationToken token);
                HRESULT RequestNewIncomingCall([in] HSTRING context, [in] HSTRING contactName, [in] HSTRING contactNumber, [in] Windows.Foundation.Uri* contactImage, [in] HSTRING serviceName, [in] Windows.Foundation.Uri* brandingImage, [in] HSTRING callDetails, [in] Windows.Foundation.Uri* ringtone, [in] Windows.ApplicationModel.Calls.VoipPhoneCallMedia media, [in] Windows.Foundation.TimeSpan ringTimeout, [out] [retval] Windows.ApplicationModel.Calls.VoipPhoneCall** call);
                HRESULT RequestNewOutgoingCall([in] HSTRING context, [in] HSTRING contactName, [in] HSTRING serviceName, [in] Windows.ApplicationModel.Calls.VoipPhoneCallMedia media, [out] [retval] Windows.ApplicationModel.Calls.VoipPhoneCall** call);
                HRESULT NotifyMuted();
                HRESULT NotifyUnmuted();
                HRESULT RequestOutgoingUpgradeToVideoCall([in] GUID callUpgradeGuid, [in] HSTRING context, [in] HSTRING contactName, [in] HSTRING serviceName, [out] [retval] Windows.ApplicationModel.Calls.VoipPhoneCall** call);
                HRESULT RequestIncomingUpgradeToVideoCall([in] HSTRING context, [in] HSTRING contactName, [in] HSTRING contactNumber, [in] Windows.Foundation.Uri* contactImage, [in] HSTRING serviceName, [in] Windows.Foundation.Uri* brandingImage, [in] HSTRING callDetails, [in] Windows.Foundation.Uri* ringtone, [in] Windows.Foundation.TimeSpan ringTimeout, [out] [retval] Windows.ApplicationModel.Calls.VoipPhoneCall** call);
                HRESULT TerminateCellularCall([in] GUID callUpgradeGuid);
                HRESULT CancelUpgrade([in] GUID callUpgradeGuid);
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 2.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.VoipCallCoordinator)]
            [uuid(BEB4A9F3-C704-4234-89CE-E88CC0D28FBE)]
            interface IVoipCallCoordinator2 : IInspectable
                requires
                    Windows.ApplicationModel.Calls.IVoipCallCoordinator
            {
                HRESULT SetupNewAcceptedCall([in] HSTRING context, [in] HSTRING contactName, [in] HSTRING contactNumber, [in] HSTRING serviceName, [in] Windows.ApplicationModel.Calls.VoipPhoneCallMedia media, [out] [retval] Windows.ApplicationModel.Calls.VoipPhoneCall** call);
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.VoipCallCoordinator)]
            [uuid(7F5D1F2B-E04A-4D10-B31A-A55C922CC2FB)]
            interface IVoipCallCoordinatorStatics : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.ApplicationModel.Calls.VoipCallCoordinator** coordinator);
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.VoipPhoneCall)]
            [uuid(6CF1F19A-7794-4A5A-8C68-AE87947A6990)]
            interface IVoipPhoneCall : IInspectable
            {
                [eventadd] HRESULT EndRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.VoipPhoneCall*, Windows.ApplicationModel.Calls.CallStateChangeEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT EndRequested([in] EventRegistrationToken token);
                [eventadd] HRESULT HoldRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.VoipPhoneCall*, Windows.ApplicationModel.Calls.CallStateChangeEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT HoldRequested([in] EventRegistrationToken token);
                [eventadd] HRESULT ResumeRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.VoipPhoneCall*, Windows.ApplicationModel.Calls.CallStateChangeEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ResumeRequested([in] EventRegistrationToken token);
                [eventadd] HRESULT AnswerRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.VoipPhoneCall*, Windows.ApplicationModel.Calls.CallAnswerEventArgs*>* acceptHandler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AnswerRequested([in] EventRegistrationToken token);
                [eventadd] HRESULT RejectRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Calls.VoipPhoneCall*, Windows.ApplicationModel.Calls.CallRejectEventArgs*>* rejectHandler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT RejectRequested([in] EventRegistrationToken token);
                HRESULT NotifyCallHeld();
                HRESULT NotifyCallActive();
                HRESULT NotifyCallEnded();
                [propget] HRESULT ContactName([out] [retval] HSTRING* value);
                [propput] HRESULT ContactName([in] HSTRING value);
                [propget] HRESULT StartTime([out] [retval] Windows.Foundation.DateTime* value);
                [propput] HRESULT StartTime([in] Windows.Foundation.DateTime value);
                [propget] HRESULT CallMedia([out] [retval] Windows.ApplicationModel.Calls.VoipPhoneCallMedia* value);
                [propput] HRESULT CallMedia([in] Windows.ApplicationModel.Calls.VoipPhoneCallMedia value);
                HRESULT NotifyCallReady();
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 2.0)]
            [exclusiveto(Windows.ApplicationModel.Calls.VoipPhoneCall)]
            [uuid(741B46E1-245F-41F3-9399-3141D25B52E3)]
            interface IVoipPhoneCall2 : IInspectable
                requires
                    Windows.ApplicationModel.Calls.IVoipPhoneCall
            {
                HRESULT TryShowAppUI();
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass CallAnswerEventArgs
            {
                [default] interface Windows.ApplicationModel.Calls.ICallAnswerEventArgs;
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass CallRejectEventArgs
            {
                [default] interface Windows.ApplicationModel.Calls.ICallRejectEventArgs;
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass CallStateChangeEventArgs
            {
                [default] interface Windows.ApplicationModel.Calls.ICallStateChangeEventArgs;
            }

            [contract(Windows.ApplicationModel.Calls.LockScreenCallContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass LockScreenCallEndCallDeferral
            {
                [default] interface Windows.ApplicationModel.Calls.ILockScreenCallEndCallDeferral;
            }

            [contract(Windows.ApplicationModel.Calls.LockScreenCallContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass LockScreenCallEndRequestedEventArgs
            {
                [default] interface Windows.ApplicationModel.Calls.ILockScreenCallEndRequestedEventArgs;
            }

            [contract(Windows.ApplicationModel.Calls.LockScreenCallContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass LockScreenCallUI
            {
                [default] interface Windows.ApplicationModel.Calls.ILockScreenCallUI;
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass MuteChangeEventArgs
            {
                [default] interface Windows.ApplicationModel.Calls.IMuteChangeEventArgs;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PhoneCallHistoryEntry
            {
                [default] interface Windows.ApplicationModel.Calls.IPhoneCallHistoryEntry;
            }

            [activatable(Windows.ApplicationModel.Calls.IPhoneCallHistoryEntryAddressFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PhoneCallHistoryEntryAddress
            {
                [default] interface Windows.ApplicationModel.Calls.IPhoneCallHistoryEntryAddress;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PhoneCallHistoryEntryQueryOptions
            {
                [default] interface Windows.ApplicationModel.Calls.IPhoneCallHistoryEntryQueryOptions;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PhoneCallHistoryEntryReader
            {
                [default] interface Windows.ApplicationModel.Calls.IPhoneCallHistoryEntryReader;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.ApplicationModel.Calls.IPhoneCallHistoryManagerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.ApplicationModel.Calls.IPhoneCallHistoryManagerStatics2, Windows.Foundation.UniversalApiContract, 3.0)]
            [threading(both)]
            runtimeclass PhoneCallHistoryManager
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            runtimeclass PhoneCallHistoryManagerForUser
            {
                [default] interface Windows.ApplicationModel.Calls.IPhoneCallHistoryManagerForUser;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PhoneCallHistoryStore
            {
                [default] interface Windows.ApplicationModel.Calls.IPhoneCallHistoryStore;
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.ApplicationModel.Calls.IVoipCallCoordinatorStatics, Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            runtimeclass VoipCallCoordinator
            {
                [default] interface Windows.ApplicationModel.Calls.IVoipCallCoordinator;
                [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 2.0)] interface Windows.ApplicationModel.Calls.IVoipCallCoordinator2;
            }

            [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass VoipPhoneCall
            {
                [default] interface Windows.ApplicationModel.Calls.IVoipPhoneCall;
                [contract(Windows.ApplicationModel.Calls.CallsVoipContract, 2.0)] interface Windows.ApplicationModel.Calls.IVoipPhoneCall2;
            }
        }
    }
}
