// WARNING: Please don't edit this file. It was generated by Swift/WinRT v0.0.1

#pragma once
// Header files for imported files
#include <inspectable.h>
#include <EventToken.h>
#include <windowscontracts.h>
#include "Windows.Foundation.h"

/* Forward Declarations */
#ifndef ____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager_FWD_DEFINED__
#define ____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager;

#endif // ____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics;

#endif // ____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics_FWD_DEFINED__

// Parameterized interface forward declarations (C)

// Collection interface definitions

#if !defined(____x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable;

    //  Declare the parameterized interface IID.
    EXTERN_C const IID IID___x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable;

    typedef struct __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectableVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable* This);
        HRESULT (STDMETHODCALLTYPE* Invoke)(__x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable* This,
        __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* sender,
        IInspectable* args);

        END_INTERFACE
    } __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectableVtbl;

    interface __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable
    {
        CONST_VTBL struct __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectableVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable_INTERFACE_DEFINED__
    
typedef enum __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint;

typedef enum __x_ABI_CWindows_CPhone_CMedia_CDevices_CAvailableAudioRoutingEndpoints __x_ABI_CWindows_CPhone_CMedia_CDevices_CAvailableAudioRoutingEndpoints;

enum __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint
    {
        __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint_Default = 0,
    __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint_Earpiece = 1,
    __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint_Speakerphone = 2,
    __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint_Bluetooth = 3,
    __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint_WiredHeadset = 4,
    __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint_WiredHeadsetSpeakerOnly = 5,
    __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint_BluetoothWithNoiseAndEchoCancellation = 6,
    __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint_BluetoothPreferred = 7,
};

enum __x_ABI_CWindows_CPhone_CMedia_CDevices_CAvailableAudioRoutingEndpoints
    {
        __x_ABI_CWindows_CPhone_CMedia_CDevices_CAvailableAudioRoutingEndpoints_None = 0,
    __x_ABI_CWindows_CPhone_CMedia_CDevices_CAvailableAudioRoutingEndpoints_Earpiece = 0x1,
    __x_ABI_CWindows_CPhone_CMedia_CDevices_CAvailableAudioRoutingEndpoints_Speakerphone = 0x2,
    __x_ABI_CWindows_CPhone_CMedia_CDevices_CAvailableAudioRoutingEndpoints_Bluetooth = 0x4,
};

#if !defined(____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* GetAudioEndpoint)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This,
        enum __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint* endpoint);
    HRESULT (STDMETHODCALLTYPE* SetAudioEndpoint)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This,
        enum __x_ABI_CWindows_CPhone_CMedia_CDevices_CAudioRoutingEndpoint endpoint);
    HRESULT (STDMETHODCALLTYPE* add_AudioEndpointChanged)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This,
        __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CPhone__CMedia__CDevices__CAudioRoutingManager_IInspectable* endpointChangeHandler,
        EventRegistrationToken* token);
    HRESULT (STDMETHODCALLTYPE* remove_AudioEndpointChanged)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This,
        EventRegistrationToken token);
    HRESULT (STDMETHODCALLTYPE* get_AvailableAudioEndpoints)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager* This,
        enum __x_ABI_CWindows_CPhone_CMedia_CDevices_CAvailableAudioRoutingEndpoints* value);

        END_INTERFACE
    } __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerVtbl;

    interface __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager
    {
        CONST_VTBL struct __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager;
#endif /* !defined(____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStaticsVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* GetDefault)(__x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics* This,
        __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManager** audioRoutingManager);

        END_INTERFACE
    } __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStaticsVtbl;

    interface __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics
    {
        CONST_VTBL struct __x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStaticsVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics;
#endif /* !defined(____x_ABI_CWindows_CPhone_CMedia_CDevices_CIAudioRoutingManagerStatics_INTERFACE_DEFINED__) */
    
