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

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Calls
        {
            apicontract CallsPhoneContract;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Calls
        {
            namespace Background
            {
                apicontract CallsBackgroundContract;

                typedef enum PhoneCallBlockedReason PhoneCallBlockedReason;

                typedef enum PhoneLineChangeKind PhoneLineChangeKind;

                typedef enum PhoneLineProperties PhoneLineProperties;

                typedef enum PhoneTriggerType PhoneTriggerType;

                interface IPhoneCallBlockedTriggerDetails;

                interface IPhoneCallOriginDataRequestTriggerDetails;

                interface IPhoneLineChangedTriggerDetails;

                interface IPhoneNewVoicemailMessageTriggerDetails;

                runtimeclass PhoneCallBlockedTriggerDetails;

                runtimeclass PhoneCallOriginDataRequestTriggerDetails;

                runtimeclass PhoneLineChangedTriggerDetails;

                runtimeclass PhoneNewVoicemailMessageTriggerDetails;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Calls
        {
            namespace Background
            {
                [contractversion(1.0)]
                apicontract CallsBackgroundContract
                {
                }

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                enum PhoneCallBlockedReason
                {
                    InCallBlockingList = 0,
                    PrivateNumber      = 1,
                    UnknownNumber      = 2
                };

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                enum PhoneLineChangeKind
                {
                    Added             = 0,
                    Removed           = 1,
                    PropertiesChanged = 2
                };

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [flags]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                enum PhoneLineProperties
                {
                    None            = 0x0,
                    BrandingOptions = 0x1,
                    CanDial         = 0x2,
                    CellularDetails = 0x4,
                    DisplayColor    = 0x8,
                    DisplayName     = 0x10,
                    NetworkName     = 0x20,
                    NetworkState    = 0x40,
                    Transport       = 0x80,
                    Voicemail       = 0x100
                };

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                enum PhoneTriggerType
                {
                    NewVoicemailMessage                  = 0,
                    CallHistoryChanged                   = 1,
                    LineChanged                          = 2,
                    AirplaneModeDisabledForEmergencyCall = 3,
                    CallOriginDataRequest                = 4,
                    CallBlocked                          = 5
                };

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Calls.Background.PhoneCallBlockedTriggerDetails)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                [uuid(A4A690A2-E4C1-427F-864E-E470477DDB67)]
                interface IPhoneCallBlockedTriggerDetails : IInspectable
                {
                    [propget] HRESULT PhoneNumber([out] [retval] HSTRING* value);
                    [propget] HRESULT LineId([out] [retval] GUID* value);
                    [propget] HRESULT CallBlockedReason([out] [retval] Windows.ApplicationModel.Calls.Background.PhoneCallBlockedReason* value);
                }

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Calls.Background.PhoneCallOriginDataRequestTriggerDetails)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                [uuid(6E9B5B3F-C54B-4E82-4CC9-E329A4184592)]
                interface IPhoneCallOriginDataRequestTriggerDetails : IInspectable
                {
                    [propget] HRESULT RequestId([out] [retval] GUID* result);
                    [propget] HRESULT PhoneNumber([out] [retval] HSTRING* result);
                }

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Calls.Background.PhoneLineChangedTriggerDetails)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                [uuid(C6D321E7-D11D-40D8-B2B7-E40A01D66249)]
                interface IPhoneLineChangedTriggerDetails : IInspectable
                {
                    [propget] HRESULT LineId([out] [retval] GUID* result);
                    [propget] HRESULT ChangeType([out] [retval] Windows.ApplicationModel.Calls.Background.PhoneLineChangeKind* result);
                    HRESULT HasLinePropertyChanged([in] Windows.ApplicationModel.Calls.Background.PhoneLineProperties lineProperty, [out] [retval] boolean* result);
                }

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Calls.Background.PhoneNewVoicemailMessageTriggerDetails)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                [uuid(13A8C01B-B831-48D3-8BA9-8D22A6580DCF)]
                interface IPhoneNewVoicemailMessageTriggerDetails : IInspectable
                {
                    [propget] HRESULT LineId([out] [retval] GUID* result);
                    [propget] HRESULT VoicemailCount([out] [retval] INT32* result);
                    [propget] HRESULT OperatorMessage([out] [retval] HSTRING* result);
                }

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PhoneCallBlockedTriggerDetails
                {
                    [default] interface Windows.ApplicationModel.Calls.Background.IPhoneCallBlockedTriggerDetails;
                }

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PhoneCallOriginDataRequestTriggerDetails
                {
                    [default] interface Windows.ApplicationModel.Calls.Background.IPhoneCallOriginDataRequestTriggerDetails;
                }

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PhoneLineChangedTriggerDetails
                {
                    [default] interface Windows.ApplicationModel.Calls.Background.IPhoneLineChangedTriggerDetails;
                }

                [contract(Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, 1.0)]
                [from_contract(Windows.ApplicationModel.Calls.CallsPhoneContract, range(1.0, 2.0))]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PhoneNewVoicemailMessageTriggerDetails
                {
                    [default] interface Windows.ApplicationModel.Calls.Background.IPhoneNewVoicemailMessageTriggerDetails;
                }
            }
        }
    }
}
