# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.2.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property
from abc import abstractmethod

import winrt._winrt
import winrt.system
import winrt.windows.devices.enumeration as windows_devices_enumeration
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.foundation.numerics as windows_foundation_numerics
import winrt.windows.media as windows_media
import winrt.windows.media.capture as windows_media_capture
import winrt.windows.media.core as windows_media_core
import winrt.windows.media.devices as windows_media_devices
import winrt.windows.media.effects as windows_media_effects
import winrt.windows.media.mediaproperties as windows_media_mediaproperties
import winrt.windows.media.render as windows_media_render
import winrt.windows.media.transcoding as windows_media_transcoding
import winrt.windows.storage as windows_storage

from winrt.windows.media.audio import AudioDeviceNodeCreationStatus, AudioEffectsPackStatus, AudioFileNodeCreationStatus, AudioGraphCreationStatus, AudioGraphUnrecoverableError, AudioNodeEmitterDecayKind, AudioNodeEmitterSettings, AudioNodeEmitterShapeKind, AudioPlaybackConnectionOpenResultStatus, AudioPlaybackConnectionState, MediaSourceAudioInputNodeCreationStatus, MixedRealitySpatialAudioFormatPolicy, QuantumSizeSelectionMode, SetDefaultSpatialAudioFormatStatus, SpatialAudioModel

Self = typing.TypeVar('Self')

@typing.final
class AudioDeviceInputNode(winrt.system.Object, IAudioInputNode2, IAudioInputNode, IAudioNode, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode)
    def add_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode,System.Double)
    def add_outgoing_connection_with_gain(self, destination: IAudioNode, gain: winrt.system.Double, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::Close()
    def close(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::DisableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def disable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::EnableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def enable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::RemoveOutgoingConnection(Windows.Media.Audio.IAudioNode)
    def remove_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::Reset()
    def reset(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::Start()
    def start(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::Stop()
    def stop(self) -> None: ...
    # Windows.Devices.Enumeration.DeviceInformation Windows.Media.Audio.AudioDeviceInputNode::get_Device()
    @_property
    def device(self) -> windows_devices_enumeration.DeviceInformation: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Audio.AudioGraphConnection> Windows.Media.Audio.AudioDeviceInputNode::get_OutgoingConnections()
    @_property
    def outgoing_connections(self) -> typing.Sequence[AudioGraphConnection]: ...
    # Windows.Media.Audio.AudioNodeEmitter Windows.Media.Audio.AudioDeviceInputNode::get_Emitter()
    @_property
    def emitter(self) -> AudioNodeEmitter: ...
    # System.Double Windows.Media.Audio.AudioDeviceInputNode::get_OutgoingGain()
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::put_OutgoingGain(System.Double)
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    # System.Boolean Windows.Media.Audio.AudioDeviceInputNode::get_ConsumeInput()
    @_property
    def consume_input(self) -> bool: ...
    # System.Void Windows.Media.Audio.AudioDeviceInputNode::put_ConsumeInput(System.Boolean)
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Audio.AudioDeviceInputNode::get_EffectDefinitions()
    @_property
    def effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.AudioDeviceInputNode::get_EncodingProperties()
    @_property
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...

@typing.final
class AudioDeviceOutputNode(winrt.system.Object, IAudioNodeWithListener, IAudioNode, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceOutputNode::Close()
    def close(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceOutputNode::DisableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def disable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceOutputNode::EnableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def enable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceOutputNode::Reset()
    def reset(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceOutputNode::Start()
    def start(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioDeviceOutputNode::Stop()
    def stop(self) -> None: ...
    # Windows.Devices.Enumeration.DeviceInformation Windows.Media.Audio.AudioDeviceOutputNode::get_Device()
    @_property
    def device(self) -> windows_devices_enumeration.DeviceInformation: ...
    # System.Double Windows.Media.Audio.AudioDeviceOutputNode::get_OutgoingGain()
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioDeviceOutputNode::put_OutgoingGain(System.Double)
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    # System.Boolean Windows.Media.Audio.AudioDeviceOutputNode::get_ConsumeInput()
    @_property
    def consume_input(self) -> bool: ...
    # System.Void Windows.Media.Audio.AudioDeviceOutputNode::put_ConsumeInput(System.Boolean)
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Audio.AudioDeviceOutputNode::get_EffectDefinitions()
    @_property
    def effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.AudioDeviceOutputNode::get_EncodingProperties()
    @_property
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...
    # Windows.Media.Audio.AudioNodeListener Windows.Media.Audio.AudioDeviceOutputNode::get_Listener()
    @_property
    def listener(self) -> AudioNodeListener: ...
    # System.Void Windows.Media.Audio.AudioDeviceOutputNode::put_Listener(Windows.Media.Audio.AudioNodeListener)
    @listener.setter
    def listener(self, value: AudioNodeListener) -> None: ...

@typing.final
class AudioEffectsPackConfiguration_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.Audio.AudioEffectsPackConfiguration Windows.Media.Audio.AudioEffectsPackConfiguration::GetForDeviceId(System.String,System.String)
    def get_for_device_id(cls, effects_pack_id: str, device_id: str, /) -> AudioEffectsPackConfiguration: ...
    # System.Boolean Windows.Media.Audio.AudioEffectsPackConfiguration::IsDeviceIdSupported(System.String,System.String)
    def is_device_id_supported(cls, effects_pack_id: str, device_id: str, /) -> bool: ...

@typing.final
class AudioEffectsPackConfiguration(winrt.system.Object, metaclass=AudioEffectsPackConfiguration_Static):
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.AudioEffectsPackConfiguration::add_StatusChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.AudioEffectsPackConfiguration,System.Object>)
    def add_status_changed(self, handler: windows_foundation.TypedEventHandler[AudioEffectsPackConfiguration, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.AudioEffectsPackConfiguration::remove_StatusChanged(Windows.Foundation.EventRegistrationToken)
    def remove_status_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.String Windows.Media.Audio.AudioEffectsPackConfiguration::get_DeviceId()
    @_property
    def device_id(self) -> str: ...
    # System.String Windows.Media.Audio.AudioEffectsPackConfiguration::get_EffectsPackId()
    @_property
    def effects_pack_id(self) -> str: ...
    # Windows.Media.Audio.AudioEffectsPackStatus Windows.Media.Audio.AudioEffectsPackConfiguration::get_Status()
    @_property
    def status(self) -> AudioEffectsPackStatus: ...

@typing.final
class AudioFileInputNode(winrt.system.Object, IAudioInputNode2, IAudioInputNode, IAudioNode, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode)
    def add_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode,System.Double)
    def add_outgoing_connection_with_gain(self, destination: IAudioNode, gain: winrt.system.Double, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::Close()
    def close(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::DisableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def disable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::EnableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def enable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::RemoveOutgoingConnection(Windows.Media.Audio.IAudioNode)
    def remove_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::Reset()
    def reset(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::Seek(Windows.Foundation.TimeSpan)
    def seek(self, position: datetime.timedelta, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::Start()
    def start(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::Stop()
    def stop(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.AudioFileInputNode::add_FileCompleted(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.AudioFileInputNode,System.Object>)
    def add_file_completed(self, handler: windows_foundation.TypedEventHandler[AudioFileInputNode, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::remove_FileCompleted(Windows.Foundation.EventRegistrationToken)
    def remove_file_completed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.Double Windows.Media.Audio.AudioFileInputNode::get_PlaybackSpeedFactor()
    @_property
    def playback_speed_factor(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::put_PlaybackSpeedFactor(System.Double)
    @playback_speed_factor.setter
    def playback_speed_factor(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.IReference`1<System.Int32> Windows.Media.Audio.AudioFileInputNode::get_LoopCount()
    @_property
    def loop_count(self) -> typing.Optional[winrt.system.Int32]: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::put_LoopCount(Windows.Foundation.IReference`1<System.Int32>)
    @loop_count.setter
    def loop_count(self, value: typing.Optional[winrt.system.Int32]) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.Audio.AudioFileInputNode::get_EndTime()
    @_property
    def end_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::put_EndTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @end_time.setter
    def end_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.Audio.AudioFileInputNode::get_StartTime()
    @_property
    def start_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::put_StartTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @start_time.setter
    def start_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Audio.AudioFileInputNode::get_Position()
    @_property
    def position(self) -> datetime.timedelta: ...
    # Windows.Storage.StorageFile Windows.Media.Audio.AudioFileInputNode::get_SourceFile()
    @_property
    def source_file(self) -> windows_storage.StorageFile: ...
    # Windows.Foundation.TimeSpan Windows.Media.Audio.AudioFileInputNode::get_Duration()
    @_property
    def duration(self) -> datetime.timedelta: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Audio.AudioGraphConnection> Windows.Media.Audio.AudioFileInputNode::get_OutgoingConnections()
    @_property
    def outgoing_connections(self) -> typing.Sequence[AudioGraphConnection]: ...
    # Windows.Media.Audio.AudioNodeEmitter Windows.Media.Audio.AudioFileInputNode::get_Emitter()
    @_property
    def emitter(self) -> AudioNodeEmitter: ...
    # System.Double Windows.Media.Audio.AudioFileInputNode::get_OutgoingGain()
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::put_OutgoingGain(System.Double)
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    # System.Boolean Windows.Media.Audio.AudioFileInputNode::get_ConsumeInput()
    @_property
    def consume_input(self) -> bool: ...
    # System.Void Windows.Media.Audio.AudioFileInputNode::put_ConsumeInput(System.Boolean)
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Audio.AudioFileInputNode::get_EffectDefinitions()
    @_property
    def effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.AudioFileInputNode::get_EncodingProperties()
    @_property
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...

@typing.final
class AudioFileOutputNode(winrt.system.Object, IAudioNode, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileOutputNode::Close()
    def close(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileOutputNode::DisableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def disable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileOutputNode::EnableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def enable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Transcoding.TranscodeFailureReason> Windows.Media.Audio.AudioFileOutputNode::FinalizeAsync()
    def finalize_async(self) -> windows_foundation.IAsyncOperation[windows_media_transcoding.TranscodeFailureReason]: ...
    # System.Void Windows.Media.Audio.AudioFileOutputNode::Reset()
    def reset(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileOutputNode::Start()
    def start(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFileOutputNode::Stop()
    def stop(self) -> None: ...
    # Windows.Storage.IStorageFile Windows.Media.Audio.AudioFileOutputNode::get_File()
    @_property
    def file(self) -> windows_storage.IStorageFile: ...
    # Windows.Media.MediaProperties.MediaEncodingProfile Windows.Media.Audio.AudioFileOutputNode::get_FileEncodingProfile()
    @_property
    def file_encoding_profile(self) -> windows_media_mediaproperties.MediaEncodingProfile: ...
    # System.Double Windows.Media.Audio.AudioFileOutputNode::get_OutgoingGain()
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioFileOutputNode::put_OutgoingGain(System.Double)
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    # System.Boolean Windows.Media.Audio.AudioFileOutputNode::get_ConsumeInput()
    @_property
    def consume_input(self) -> bool: ...
    # System.Void Windows.Media.Audio.AudioFileOutputNode::put_ConsumeInput(System.Boolean)
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Audio.AudioFileOutputNode::get_EffectDefinitions()
    @_property
    def effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.AudioFileOutputNode::get_EncodingProperties()
    @_property
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...

@typing.final
class AudioFrameCompletedEventArgs(winrt.system.Object):
    # Windows.Media.AudioFrame Windows.Media.Audio.AudioFrameCompletedEventArgs::get_Frame()
    @_property
    def frame(self) -> windows_media.AudioFrame: ...

@typing.final
class AudioFrameInputNode(winrt.system.Object, IAudioInputNode2, IAudioInputNode, IAudioNode, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::AddFrame(Windows.Media.AudioFrame)
    def add_frame(self, frame: windows_media.AudioFrame, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode)
    def add_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode,System.Double)
    def add_outgoing_connection_with_gain(self, destination: IAudioNode, gain: winrt.system.Double, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::Close()
    def close(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::DisableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def disable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::DiscardQueuedFrames()
    def discard_queued_frames(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::EnableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def enable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::RemoveOutgoingConnection(Windows.Media.Audio.IAudioNode)
    def remove_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::Reset()
    def reset(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::Start()
    def start(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::Stop()
    def stop(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.AudioFrameInputNode::add_AudioFrameCompleted(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.AudioFrameInputNode,Windows.Media.Audio.AudioFrameCompletedEventArgs>)
    def add_audio_frame_completed(self, handler: windows_foundation.TypedEventHandler[AudioFrameInputNode, AudioFrameCompletedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::remove_AudioFrameCompleted(Windows.Foundation.EventRegistrationToken)
    def remove_audio_frame_completed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.AudioFrameInputNode::add_QuantumStarted(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.AudioFrameInputNode,Windows.Media.Audio.FrameInputNodeQuantumStartedEventArgs>)
    def add_quantum_started(self, handler: windows_foundation.TypedEventHandler[AudioFrameInputNode, FrameInputNodeQuantumStartedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::remove_QuantumStarted(Windows.Foundation.EventRegistrationToken)
    def remove_quantum_started(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.Double Windows.Media.Audio.AudioFrameInputNode::get_PlaybackSpeedFactor()
    @_property
    def playback_speed_factor(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::put_PlaybackSpeedFactor(System.Double)
    @playback_speed_factor.setter
    def playback_speed_factor(self, value: winrt.system.Double) -> None: ...
    # System.UInt64 Windows.Media.Audio.AudioFrameInputNode::get_QueuedSampleCount()
    @_property
    def queued_sample_count(self) -> winrt.system.UInt64: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Audio.AudioGraphConnection> Windows.Media.Audio.AudioFrameInputNode::get_OutgoingConnections()
    @_property
    def outgoing_connections(self) -> typing.Sequence[AudioGraphConnection]: ...
    # Windows.Media.Audio.AudioNodeEmitter Windows.Media.Audio.AudioFrameInputNode::get_Emitter()
    @_property
    def emitter(self) -> AudioNodeEmitter: ...
    # System.Double Windows.Media.Audio.AudioFrameInputNode::get_OutgoingGain()
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::put_OutgoingGain(System.Double)
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    # System.Boolean Windows.Media.Audio.AudioFrameInputNode::get_ConsumeInput()
    @_property
    def consume_input(self) -> bool: ...
    # System.Void Windows.Media.Audio.AudioFrameInputNode::put_ConsumeInput(System.Boolean)
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Audio.AudioFrameInputNode::get_EffectDefinitions()
    @_property
    def effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.AudioFrameInputNode::get_EncodingProperties()
    @_property
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...

@typing.final
class AudioFrameOutputNode(winrt.system.Object, IAudioNode, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameOutputNode::Close()
    def close(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameOutputNode::DisableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def disable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameOutputNode::EnableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def enable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # Windows.Media.AudioFrame Windows.Media.Audio.AudioFrameOutputNode::GetFrame()
    def get_frame(self) -> windows_media.AudioFrame: ...
    # System.Void Windows.Media.Audio.AudioFrameOutputNode::Reset()
    def reset(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameOutputNode::Start()
    def start(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioFrameOutputNode::Stop()
    def stop(self) -> None: ...
    # System.Double Windows.Media.Audio.AudioFrameOutputNode::get_OutgoingGain()
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioFrameOutputNode::put_OutgoingGain(System.Double)
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    # System.Boolean Windows.Media.Audio.AudioFrameOutputNode::get_ConsumeInput()
    @_property
    def consume_input(self) -> bool: ...
    # System.Void Windows.Media.Audio.AudioFrameOutputNode::put_ConsumeInput(System.Boolean)
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Audio.AudioFrameOutputNode::get_EffectDefinitions()
    @_property
    def effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.AudioFrameOutputNode::get_EncodingProperties()
    @_property
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...

@typing.final
class AudioGraph_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateAudioGraphResult> Windows.Media.Audio.AudioGraph::CreateAsync(Windows.Media.Audio.AudioGraphSettings)
    def create_async(cls, settings: AudioGraphSettings, /) -> windows_foundation.IAsyncOperation[CreateAudioGraphResult]: ...

@typing.final
class AudioGraph(winrt.system.Object, windows_foundation.IClosable, metaclass=AudioGraph_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.AudioGraph::Close()
    def close(self) -> None: ...
    # Windows.Media.Audio.AudioGraphBatchUpdater Windows.Media.Audio.AudioGraph::CreateBatchUpdater()
    def create_batch_updater(self) -> AudioGraphBatchUpdater: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateAudioDeviceInputNodeResult> Windows.Media.Audio.AudioGraph::CreateDeviceInputNodeAsync(Windows.Media.Capture.MediaCategory)
    def create_device_input_node_async(self, category: windows_media_capture.MediaCategory, /) -> windows_foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateAudioDeviceInputNodeResult> Windows.Media.Audio.AudioGraph::CreateDeviceInputNodeAsync(Windows.Media.Capture.MediaCategory,Windows.Media.MediaProperties.AudioEncodingProperties,Windows.Devices.Enumeration.DeviceInformation,Windows.Media.Audio.AudioNodeEmitter)
    def create_device_input_node_with_format_and_emitter_on_device_async(self, category: windows_media_capture.MediaCategory, encoding_properties: windows_media_mediaproperties.AudioEncodingProperties, device: windows_devices_enumeration.DeviceInformation, emitter: AudioNodeEmitter, /) -> windows_foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateAudioDeviceInputNodeResult> Windows.Media.Audio.AudioGraph::CreateDeviceInputNodeAsync(Windows.Media.Capture.MediaCategory,Windows.Media.MediaProperties.AudioEncodingProperties)
    def create_device_input_node_with_format_async(self, category: windows_media_capture.MediaCategory, encoding_properties: windows_media_mediaproperties.AudioEncodingProperties, /) -> windows_foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateAudioDeviceInputNodeResult> Windows.Media.Audio.AudioGraph::CreateDeviceInputNodeAsync(Windows.Media.Capture.MediaCategory,Windows.Media.MediaProperties.AudioEncodingProperties,Windows.Devices.Enumeration.DeviceInformation)
    def create_device_input_node_with_format_on_device_async(self, category: windows_media_capture.MediaCategory, encoding_properties: windows_media_mediaproperties.AudioEncodingProperties, device: windows_devices_enumeration.DeviceInformation, /) -> windows_foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateAudioDeviceOutputNodeResult> Windows.Media.Audio.AudioGraph::CreateDeviceOutputNodeAsync()
    def create_device_output_node_async(self) -> windows_foundation.IAsyncOperation[CreateAudioDeviceOutputNodeResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateAudioFileInputNodeResult> Windows.Media.Audio.AudioGraph::CreateFileInputNodeAsync(Windows.Storage.IStorageFile)
    def create_file_input_node_async(self, file: windows_storage.IStorageFile, /) -> windows_foundation.IAsyncOperation[CreateAudioFileInputNodeResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateAudioFileInputNodeResult> Windows.Media.Audio.AudioGraph::CreateFileInputNodeAsync(Windows.Storage.IStorageFile,Windows.Media.Audio.AudioNodeEmitter)
    def create_file_input_node_with_emitter_async(self, file: windows_storage.IStorageFile, emitter: AudioNodeEmitter, /) -> windows_foundation.IAsyncOperation[CreateAudioFileInputNodeResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateAudioFileOutputNodeResult> Windows.Media.Audio.AudioGraph::CreateFileOutputNodeAsync(Windows.Storage.IStorageFile)
    def create_file_output_node_async(self, file: windows_storage.IStorageFile, /) -> windows_foundation.IAsyncOperation[CreateAudioFileOutputNodeResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateAudioFileOutputNodeResult> Windows.Media.Audio.AudioGraph::CreateFileOutputNodeAsync(Windows.Storage.IStorageFile,Windows.Media.MediaProperties.MediaEncodingProfile)
    def create_file_output_node_with_file_profile_async(self, file: windows_storage.IStorageFile, file_encoding_profile: windows_media_mediaproperties.MediaEncodingProfile, /) -> windows_foundation.IAsyncOperation[CreateAudioFileOutputNodeResult]: ...
    # Windows.Media.Audio.AudioFrameInputNode Windows.Media.Audio.AudioGraph::CreateFrameInputNode()
    def create_frame_input_node(self) -> AudioFrameInputNode: ...
    # Windows.Media.Audio.AudioFrameInputNode Windows.Media.Audio.AudioGraph::CreateFrameInputNode(Windows.Media.MediaProperties.AudioEncodingProperties)
    def create_frame_input_node_with_format(self, encoding_properties: windows_media_mediaproperties.AudioEncodingProperties, /) -> AudioFrameInputNode: ...
    # Windows.Media.Audio.AudioFrameInputNode Windows.Media.Audio.AudioGraph::CreateFrameInputNode(Windows.Media.MediaProperties.AudioEncodingProperties,Windows.Media.Audio.AudioNodeEmitter)
    def create_frame_input_node_with_format_and_emitter(self, encoding_properties: windows_media_mediaproperties.AudioEncodingProperties, emitter: AudioNodeEmitter, /) -> AudioFrameInputNode: ...
    # Windows.Media.Audio.AudioFrameOutputNode Windows.Media.Audio.AudioGraph::CreateFrameOutputNode()
    def create_frame_output_node(self) -> AudioFrameOutputNode: ...
    # Windows.Media.Audio.AudioFrameOutputNode Windows.Media.Audio.AudioGraph::CreateFrameOutputNode(Windows.Media.MediaProperties.AudioEncodingProperties)
    def create_frame_output_node_with_format(self, encoding_properties: windows_media_mediaproperties.AudioEncodingProperties, /) -> AudioFrameOutputNode: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateMediaSourceAudioInputNodeResult> Windows.Media.Audio.AudioGraph::CreateMediaSourceAudioInputNodeAsync(Windows.Media.Core.MediaSource)
    def create_media_source_audio_input_node_async(self, media_source: windows_media_core.MediaSource, /) -> windows_foundation.IAsyncOperation[CreateMediaSourceAudioInputNodeResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.CreateMediaSourceAudioInputNodeResult> Windows.Media.Audio.AudioGraph::CreateMediaSourceAudioInputNodeAsync(Windows.Media.Core.MediaSource,Windows.Media.Audio.AudioNodeEmitter)
    def create_media_source_audio_input_node_with_emitter_async(self, media_source: windows_media_core.MediaSource, emitter: AudioNodeEmitter, /) -> windows_foundation.IAsyncOperation[CreateMediaSourceAudioInputNodeResult]: ...
    # Windows.Media.Audio.AudioSubmixNode Windows.Media.Audio.AudioGraph::CreateSubmixNode()
    def create_submix_node(self) -> AudioSubmixNode: ...
    # Windows.Media.Audio.AudioSubmixNode Windows.Media.Audio.AudioGraph::CreateSubmixNode(Windows.Media.MediaProperties.AudioEncodingProperties)
    def create_submix_node_with_format(self, encoding_properties: windows_media_mediaproperties.AudioEncodingProperties, /) -> AudioSubmixNode: ...
    # Windows.Media.Audio.AudioSubmixNode Windows.Media.Audio.AudioGraph::CreateSubmixNode(Windows.Media.MediaProperties.AudioEncodingProperties,Windows.Media.Audio.AudioNodeEmitter)
    def create_submix_node_with_format_and_emitter(self, encoding_properties: windows_media_mediaproperties.AudioEncodingProperties, emitter: AudioNodeEmitter, /) -> AudioSubmixNode: ...
    # System.Void Windows.Media.Audio.AudioGraph::ResetAllNodes()
    def reset_all_nodes(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioGraph::Start()
    def start(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioGraph::Stop()
    def stop(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.AudioGraph::add_QuantumProcessed(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.AudioGraph,System.Object>)
    def add_quantum_processed(self, handler: windows_foundation.TypedEventHandler[AudioGraph, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.AudioGraph::remove_QuantumProcessed(Windows.Foundation.EventRegistrationToken)
    def remove_quantum_processed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.AudioGraph::add_QuantumStarted(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.AudioGraph,System.Object>)
    def add_quantum_started(self, handler: windows_foundation.TypedEventHandler[AudioGraph, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.AudioGraph::remove_QuantumStarted(Windows.Foundation.EventRegistrationToken)
    def remove_quantum_started(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.AudioGraph::add_UnrecoverableErrorOccurred(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.AudioGraph,Windows.Media.Audio.AudioGraphUnrecoverableErrorOccurredEventArgs>)
    def add_unrecoverable_error_occurred(self, handler: windows_foundation.TypedEventHandler[AudioGraph, AudioGraphUnrecoverableErrorOccurredEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.AudioGraph::remove_UnrecoverableErrorOccurred(Windows.Foundation.EventRegistrationToken)
    def remove_unrecoverable_error_occurred(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.UInt64 Windows.Media.Audio.AudioGraph::get_CompletedQuantumCount()
    @_property
    def completed_quantum_count(self) -> winrt.system.UInt64: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.AudioGraph::get_EncodingProperties()
    @_property
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...
    # System.Int32 Windows.Media.Audio.AudioGraph::get_LatencyInSamples()
    @_property
    def latency_in_samples(self) -> winrt.system.Int32: ...
    # Windows.Devices.Enumeration.DeviceInformation Windows.Media.Audio.AudioGraph::get_PrimaryRenderDevice()
    @_property
    def primary_render_device(self) -> windows_devices_enumeration.DeviceInformation: ...
    # Windows.Media.AudioProcessing Windows.Media.Audio.AudioGraph::get_RenderDeviceAudioProcessing()
    @_property
    def render_device_audio_processing(self) -> windows_media.AudioProcessing: ...
    # System.Int32 Windows.Media.Audio.AudioGraph::get_SamplesPerQuantum()
    @_property
    def samples_per_quantum(self) -> winrt.system.Int32: ...

@typing.final
class AudioGraphBatchUpdater(winrt.system.Object, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.AudioGraphBatchUpdater::Close()
    def close(self) -> None: ...

@typing.final
class AudioGraphConnection(winrt.system.Object):
    # System.Double Windows.Media.Audio.AudioGraphConnection::get_Gain()
    @_property
    def gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioGraphConnection::put_Gain(System.Double)
    @gain.setter
    def gain(self, value: winrt.system.Double) -> None: ...
    # Windows.Media.Audio.IAudioNode Windows.Media.Audio.AudioGraphConnection::get_Destination()
    @_property
    def destination(self) -> IAudioNode: ...

@typing.final
class AudioGraphSettings(winrt.system.Object):
    def __new__(cls: typing.Type[Self], audio_render_category: windows_media_render.AudioRenderCategory) -> Self: ...
    # Windows.Media.Audio.QuantumSizeSelectionMode Windows.Media.Audio.AudioGraphSettings::get_QuantumSizeSelectionMode()
    @_property
    def quantum_size_selection_mode(self) -> QuantumSizeSelectionMode: ...
    # System.Void Windows.Media.Audio.AudioGraphSettings::put_QuantumSizeSelectionMode(Windows.Media.Audio.QuantumSizeSelectionMode)
    @quantum_size_selection_mode.setter
    def quantum_size_selection_mode(self, value: QuantumSizeSelectionMode) -> None: ...
    # Windows.Devices.Enumeration.DeviceInformation Windows.Media.Audio.AudioGraphSettings::get_PrimaryRenderDevice()
    @_property
    def primary_render_device(self) -> windows_devices_enumeration.DeviceInformation: ...
    # System.Void Windows.Media.Audio.AudioGraphSettings::put_PrimaryRenderDevice(Windows.Devices.Enumeration.DeviceInformation)
    @primary_render_device.setter
    def primary_render_device(self, value: windows_devices_enumeration.DeviceInformation) -> None: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.AudioGraphSettings::get_EncodingProperties()
    @_property
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...
    # System.Void Windows.Media.Audio.AudioGraphSettings::put_EncodingProperties(Windows.Media.MediaProperties.AudioEncodingProperties)
    @encoding_properties.setter
    def encoding_properties(self, value: windows_media_mediaproperties.AudioEncodingProperties) -> None: ...
    # System.Int32 Windows.Media.Audio.AudioGraphSettings::get_DesiredSamplesPerQuantum()
    @_property
    def desired_samples_per_quantum(self) -> winrt.system.Int32: ...
    # System.Void Windows.Media.Audio.AudioGraphSettings::put_DesiredSamplesPerQuantum(System.Int32)
    @desired_samples_per_quantum.setter
    def desired_samples_per_quantum(self, value: winrt.system.Int32) -> None: ...
    # Windows.Media.AudioProcessing Windows.Media.Audio.AudioGraphSettings::get_DesiredRenderDeviceAudioProcessing()
    @_property
    def desired_render_device_audio_processing(self) -> windows_media.AudioProcessing: ...
    # System.Void Windows.Media.Audio.AudioGraphSettings::put_DesiredRenderDeviceAudioProcessing(Windows.Media.AudioProcessing)
    @desired_render_device_audio_processing.setter
    def desired_render_device_audio_processing(self, value: windows_media.AudioProcessing) -> None: ...
    # Windows.Media.Render.AudioRenderCategory Windows.Media.Audio.AudioGraphSettings::get_AudioRenderCategory()
    @_property
    def audio_render_category(self) -> windows_media_render.AudioRenderCategory: ...
    # System.Void Windows.Media.Audio.AudioGraphSettings::put_AudioRenderCategory(Windows.Media.Render.AudioRenderCategory)
    @audio_render_category.setter
    def audio_render_category(self, value: windows_media_render.AudioRenderCategory) -> None: ...
    # System.Double Windows.Media.Audio.AudioGraphSettings::get_MaxPlaybackSpeedFactor()
    @_property
    def max_playback_speed_factor(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioGraphSettings::put_MaxPlaybackSpeedFactor(System.Double)
    @max_playback_speed_factor.setter
    def max_playback_speed_factor(self, value: winrt.system.Double) -> None: ...

@typing.final
class AudioGraphUnrecoverableErrorOccurredEventArgs(winrt.system.Object):
    # Windows.Media.Audio.AudioGraphUnrecoverableError Windows.Media.Audio.AudioGraphUnrecoverableErrorOccurredEventArgs::get_Error()
    @_property
    def error(self) -> AudioGraphUnrecoverableError: ...

@typing.final
class AudioNodeEmitter(winrt.system.Object):
    @typing.overload
    def __new__(cls: typing.Type[Self], shape: AudioNodeEmitterShape, decay_model: AudioNodeEmitterDecayModel, settings: AudioNodeEmitterSettings) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Foundation.Numerics.Vector3 Windows.Media.Audio.AudioNodeEmitter::get_Position()
    @_property
    def position(self) -> windows_foundation_numerics.Vector3: ...
    # System.Void Windows.Media.Audio.AudioNodeEmitter::put_Position(Windows.Foundation.Numerics.Vector3)
    @position.setter
    def position(self, value: typing.Union[windows_foundation_numerics.Vector3, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single]]) -> None: ...
    # System.Double Windows.Media.Audio.AudioNodeEmitter::get_Gain()
    @_property
    def gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioNodeEmitter::put_Gain(System.Double)
    @gain.setter
    def gain(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.Numerics.Vector3 Windows.Media.Audio.AudioNodeEmitter::get_DopplerVelocity()
    @_property
    def doppler_velocity(self) -> windows_foundation_numerics.Vector3: ...
    # System.Void Windows.Media.Audio.AudioNodeEmitter::put_DopplerVelocity(Windows.Foundation.Numerics.Vector3)
    @doppler_velocity.setter
    def doppler_velocity(self, value: typing.Union[windows_foundation_numerics.Vector3, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single]]) -> None: ...
    # System.Double Windows.Media.Audio.AudioNodeEmitter::get_DopplerScale()
    @_property
    def doppler_scale(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioNodeEmitter::put_DopplerScale(System.Double)
    @doppler_scale.setter
    def doppler_scale(self, value: winrt.system.Double) -> None: ...
    # System.Double Windows.Media.Audio.AudioNodeEmitter::get_DistanceScale()
    @_property
    def distance_scale(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioNodeEmitter::put_DistanceScale(System.Double)
    @distance_scale.setter
    def distance_scale(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.Numerics.Vector3 Windows.Media.Audio.AudioNodeEmitter::get_Direction()
    @_property
    def direction(self) -> windows_foundation_numerics.Vector3: ...
    # System.Void Windows.Media.Audio.AudioNodeEmitter::put_Direction(Windows.Foundation.Numerics.Vector3)
    @direction.setter
    def direction(self, value: typing.Union[windows_foundation_numerics.Vector3, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single]]) -> None: ...
    # Windows.Media.Audio.AudioNodeEmitterDecayModel Windows.Media.Audio.AudioNodeEmitter::get_DecayModel()
    @_property
    def decay_model(self) -> AudioNodeEmitterDecayModel: ...
    # System.Boolean Windows.Media.Audio.AudioNodeEmitter::get_IsDopplerDisabled()
    @_property
    def is_doppler_disabled(self) -> bool: ...
    # Windows.Media.Audio.AudioNodeEmitterShape Windows.Media.Audio.AudioNodeEmitter::get_Shape()
    @_property
    def shape(self) -> AudioNodeEmitterShape: ...
    # Windows.Media.Audio.SpatialAudioModel Windows.Media.Audio.AudioNodeEmitter::get_SpatialAudioModel()
    @_property
    def spatial_audio_model(self) -> SpatialAudioModel: ...
    # System.Void Windows.Media.Audio.AudioNodeEmitter::put_SpatialAudioModel(Windows.Media.Audio.SpatialAudioModel)
    @spatial_audio_model.setter
    def spatial_audio_model(self, value: SpatialAudioModel) -> None: ...

@typing.final
class AudioNodeEmitterConeProperties(winrt.system.Object):
    # System.Double Windows.Media.Audio.AudioNodeEmitterConeProperties::get_InnerAngle()
    @_property
    def inner_angle(self) -> winrt.system.Double: ...
    # System.Double Windows.Media.Audio.AudioNodeEmitterConeProperties::get_OuterAngle()
    @_property
    def outer_angle(self) -> winrt.system.Double: ...
    # System.Double Windows.Media.Audio.AudioNodeEmitterConeProperties::get_OuterAngleGain()
    @_property
    def outer_angle_gain(self) -> winrt.system.Double: ...

@typing.final
class AudioNodeEmitterDecayModel_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.Audio.AudioNodeEmitterDecayModel Windows.Media.Audio.AudioNodeEmitterDecayModel::CreateCustom(System.Double,System.Double)
    def create_custom(cls, min_gain: winrt.system.Double, max_gain: winrt.system.Double, /) -> AudioNodeEmitterDecayModel: ...
    # Windows.Media.Audio.AudioNodeEmitterDecayModel Windows.Media.Audio.AudioNodeEmitterDecayModel::CreateNatural(System.Double,System.Double,System.Double,System.Double)
    def create_natural(cls, min_gain: winrt.system.Double, max_gain: winrt.system.Double, unity_gain_distance: winrt.system.Double, cutoff_distance: winrt.system.Double, /) -> AudioNodeEmitterDecayModel: ...

@typing.final
class AudioNodeEmitterDecayModel(winrt.system.Object, metaclass=AudioNodeEmitterDecayModel_Static):
    # Windows.Media.Audio.AudioNodeEmitterDecayKind Windows.Media.Audio.AudioNodeEmitterDecayModel::get_Kind()
    @_property
    def kind(self) -> AudioNodeEmitterDecayKind: ...
    # System.Double Windows.Media.Audio.AudioNodeEmitterDecayModel::get_MaxGain()
    @_property
    def max_gain(self) -> winrt.system.Double: ...
    # System.Double Windows.Media.Audio.AudioNodeEmitterDecayModel::get_MinGain()
    @_property
    def min_gain(self) -> winrt.system.Double: ...
    # Windows.Media.Audio.AudioNodeEmitterNaturalDecayModelProperties Windows.Media.Audio.AudioNodeEmitterDecayModel::get_NaturalProperties()
    @_property
    def natural_properties(self) -> AudioNodeEmitterNaturalDecayModelProperties: ...

@typing.final
class AudioNodeEmitterNaturalDecayModelProperties(winrt.system.Object):
    # System.Double Windows.Media.Audio.AudioNodeEmitterNaturalDecayModelProperties::get_CutoffDistance()
    @_property
    def cutoff_distance(self) -> winrt.system.Double: ...
    # System.Double Windows.Media.Audio.AudioNodeEmitterNaturalDecayModelProperties::get_UnityGainDistance()
    @_property
    def unity_gain_distance(self) -> winrt.system.Double: ...

@typing.final
class AudioNodeEmitterShape_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.Audio.AudioNodeEmitterShape Windows.Media.Audio.AudioNodeEmitterShape::CreateCone(System.Double,System.Double,System.Double)
    def create_cone(cls, inner_angle: winrt.system.Double, outer_angle: winrt.system.Double, outer_angle_gain: winrt.system.Double, /) -> AudioNodeEmitterShape: ...
    # Windows.Media.Audio.AudioNodeEmitterShape Windows.Media.Audio.AudioNodeEmitterShape::CreateOmnidirectional()
    def create_omnidirectional(cls) -> AudioNodeEmitterShape: ...

@typing.final
class AudioNodeEmitterShape(winrt.system.Object, metaclass=AudioNodeEmitterShape_Static):
    # Windows.Media.Audio.AudioNodeEmitterConeProperties Windows.Media.Audio.AudioNodeEmitterShape::get_ConeProperties()
    @_property
    def cone_properties(self) -> AudioNodeEmitterConeProperties: ...
    # Windows.Media.Audio.AudioNodeEmitterShapeKind Windows.Media.Audio.AudioNodeEmitterShape::get_Kind()
    @_property
    def kind(self) -> AudioNodeEmitterShapeKind: ...

@typing.final
class AudioNodeListener(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # System.Double Windows.Media.Audio.AudioNodeListener::get_SpeedOfSound()
    @_property
    def speed_of_sound(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioNodeListener::put_SpeedOfSound(System.Double)
    @speed_of_sound.setter
    def speed_of_sound(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.Numerics.Vector3 Windows.Media.Audio.AudioNodeListener::get_Position()
    @_property
    def position(self) -> windows_foundation_numerics.Vector3: ...
    # System.Void Windows.Media.Audio.AudioNodeListener::put_Position(Windows.Foundation.Numerics.Vector3)
    @position.setter
    def position(self, value: typing.Union[windows_foundation_numerics.Vector3, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single]]) -> None: ...
    # Windows.Foundation.Numerics.Quaternion Windows.Media.Audio.AudioNodeListener::get_Orientation()
    @_property
    def orientation(self) -> windows_foundation_numerics.Quaternion: ...
    # System.Void Windows.Media.Audio.AudioNodeListener::put_Orientation(Windows.Foundation.Numerics.Quaternion)
    @orientation.setter
    def orientation(self, value: typing.Union[windows_foundation_numerics.Quaternion, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single, winrt.system.Single]]) -> None: ...
    # Windows.Foundation.Numerics.Vector3 Windows.Media.Audio.AudioNodeListener::get_DopplerVelocity()
    @_property
    def doppler_velocity(self) -> windows_foundation_numerics.Vector3: ...
    # System.Void Windows.Media.Audio.AudioNodeListener::put_DopplerVelocity(Windows.Foundation.Numerics.Vector3)
    @doppler_velocity.setter
    def doppler_velocity(self, value: typing.Union[windows_foundation_numerics.Vector3, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single]]) -> None: ...

@typing.final
class AudioPlaybackConnection_Static(winrt._winrt.IInspectable_Static):
    # System.String Windows.Media.Audio.AudioPlaybackConnection::GetDeviceSelector()
    def get_device_selector(cls) -> str: ...
    # Windows.Media.Audio.AudioPlaybackConnection Windows.Media.Audio.AudioPlaybackConnection::TryCreateFromId(System.String)
    def try_create_from_id(cls, id: str, /) -> typing.Optional[AudioPlaybackConnection]: ...

@typing.final
class AudioPlaybackConnection(winrt.system.Object, windows_foundation.IClosable, metaclass=AudioPlaybackConnection_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.AudioPlaybackConnection::Close()
    def close(self) -> None: ...
    # Windows.Media.Audio.AudioPlaybackConnectionOpenResult Windows.Media.Audio.AudioPlaybackConnection::Open()
    def open(self) -> AudioPlaybackConnectionOpenResult: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.AudioPlaybackConnectionOpenResult> Windows.Media.Audio.AudioPlaybackConnection::OpenAsync()
    def open_async(self) -> windows_foundation.IAsyncOperation[AudioPlaybackConnectionOpenResult]: ...
    # System.Void Windows.Media.Audio.AudioPlaybackConnection::Start()
    def start(self) -> None: ...
    # Windows.Foundation.IAsyncAction Windows.Media.Audio.AudioPlaybackConnection::StartAsync()
    def start_async(self) -> windows_foundation.IAsyncAction: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.AudioPlaybackConnection::add_StateChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.AudioPlaybackConnection,System.Object>)
    def add_state_changed(self, handler: windows_foundation.TypedEventHandler[AudioPlaybackConnection, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.AudioPlaybackConnection::remove_StateChanged(Windows.Foundation.EventRegistrationToken)
    def remove_state_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.String Windows.Media.Audio.AudioPlaybackConnection::get_DeviceId()
    @_property
    def device_id(self) -> str: ...
    # Windows.Media.Audio.AudioPlaybackConnectionState Windows.Media.Audio.AudioPlaybackConnection::get_State()
    @_property
    def state(self) -> AudioPlaybackConnectionState: ...

@typing.final
class AudioPlaybackConnectionOpenResult(winrt.system.Object):
    # Windows.Foundation.HResult Windows.Media.Audio.AudioPlaybackConnectionOpenResult::get_ExtendedError()
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...
    # Windows.Media.Audio.AudioPlaybackConnectionOpenResultStatus Windows.Media.Audio.AudioPlaybackConnectionOpenResult::get_Status()
    @_property
    def status(self) -> AudioPlaybackConnectionOpenResultStatus: ...

@typing.final
class AudioStateMonitor_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.Audio.AudioStateMonitor Windows.Media.Audio.AudioStateMonitor::CreateForCaptureMonitoring()
    def create_for_capture_monitoring(cls) -> AudioStateMonitor: ...
    # Windows.Media.Audio.AudioStateMonitor Windows.Media.Audio.AudioStateMonitor::CreateForCaptureMonitoring(Windows.Media.Capture.MediaCategory)
    def create_for_capture_monitoring_with_category(cls, category: windows_media_capture.MediaCategory, /) -> AudioStateMonitor: ...
    # Windows.Media.Audio.AudioStateMonitor Windows.Media.Audio.AudioStateMonitor::CreateForCaptureMonitoringWithCategoryAndDeviceId(Windows.Media.Capture.MediaCategory,System.String)
    def create_for_capture_monitoring_with_category_and_device_id(cls, category: windows_media_capture.MediaCategory, device_id: str, /) -> AudioStateMonitor: ...
    # Windows.Media.Audio.AudioStateMonitor Windows.Media.Audio.AudioStateMonitor::CreateForCaptureMonitoring(Windows.Media.Capture.MediaCategory,Windows.Media.Devices.AudioDeviceRole)
    def create_for_capture_monitoring_with_category_and_device_role(cls, category: windows_media_capture.MediaCategory, role: windows_media_devices.AudioDeviceRole, /) -> AudioStateMonitor: ...
    # Windows.Media.Audio.AudioStateMonitor Windows.Media.Audio.AudioStateMonitor::CreateForRenderMonitoring()
    def create_for_render_monitoring(cls) -> AudioStateMonitor: ...
    # Windows.Media.Audio.AudioStateMonitor Windows.Media.Audio.AudioStateMonitor::CreateForRenderMonitoring(Windows.Media.Render.AudioRenderCategory)
    def create_for_render_monitoring_with_category(cls, category: windows_media_render.AudioRenderCategory, /) -> AudioStateMonitor: ...
    # Windows.Media.Audio.AudioStateMonitor Windows.Media.Audio.AudioStateMonitor::CreateForRenderMonitoringWithCategoryAndDeviceId(Windows.Media.Render.AudioRenderCategory,System.String)
    def create_for_render_monitoring_with_category_and_device_id(cls, category: windows_media_render.AudioRenderCategory, device_id: str, /) -> AudioStateMonitor: ...
    # Windows.Media.Audio.AudioStateMonitor Windows.Media.Audio.AudioStateMonitor::CreateForRenderMonitoring(Windows.Media.Render.AudioRenderCategory,Windows.Media.Devices.AudioDeviceRole)
    def create_for_render_monitoring_with_category_and_device_role(cls, category: windows_media_render.AudioRenderCategory, role: windows_media_devices.AudioDeviceRole, /) -> AudioStateMonitor: ...

@typing.final
class AudioStateMonitor(winrt.system.Object, metaclass=AudioStateMonitor_Static):
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.AudioStateMonitor::add_SoundLevelChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.AudioStateMonitor,System.Object>)
    def add_sound_level_changed(self, handler: windows_foundation.TypedEventHandler[AudioStateMonitor, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.AudioStateMonitor::remove_SoundLevelChanged(Windows.Foundation.EventRegistrationToken)
    def remove_sound_level_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Media.SoundLevel Windows.Media.Audio.AudioStateMonitor::get_SoundLevel()
    @_property
    def sound_level(self) -> windows_media.SoundLevel: ...

@typing.final
class AudioSubmixNode(winrt.system.Object, IAudioInputNode2, IAudioInputNode, IAudioNode, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode)
    def add_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode,System.Double)
    def add_outgoing_connection_with_gain(self, destination: IAudioNode, gain: winrt.system.Double, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::Close()
    def close(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::DisableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def disable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::EnableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def enable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::RemoveOutgoingConnection(Windows.Media.Audio.IAudioNode)
    def remove_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::Reset()
    def reset(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::Start()
    def start(self) -> None: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::Stop()
    def stop(self) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Audio.AudioGraphConnection> Windows.Media.Audio.AudioSubmixNode::get_OutgoingConnections()
    @_property
    def outgoing_connections(self) -> typing.Sequence[AudioGraphConnection]: ...
    # Windows.Media.Audio.AudioNodeEmitter Windows.Media.Audio.AudioSubmixNode::get_Emitter()
    @_property
    def emitter(self) -> AudioNodeEmitter: ...
    # System.Double Windows.Media.Audio.AudioSubmixNode::get_OutgoingGain()
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::put_OutgoingGain(System.Double)
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    # System.Boolean Windows.Media.Audio.AudioSubmixNode::get_ConsumeInput()
    @_property
    def consume_input(self) -> bool: ...
    # System.Void Windows.Media.Audio.AudioSubmixNode::put_ConsumeInput(System.Boolean)
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Audio.AudioSubmixNode::get_EffectDefinitions()
    @_property
    def effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.AudioSubmixNode::get_EncodingProperties()
    @_property
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...

@typing.final
class CreateAudioDeviceInputNodeResult(winrt.system.Object):
    # Windows.Media.Audio.AudioDeviceInputNode Windows.Media.Audio.CreateAudioDeviceInputNodeResult::get_DeviceInputNode()
    @_property
    def device_input_node(self) -> AudioDeviceInputNode: ...
    # Windows.Media.Audio.AudioDeviceNodeCreationStatus Windows.Media.Audio.CreateAudioDeviceInputNodeResult::get_Status()
    @_property
    def status(self) -> AudioDeviceNodeCreationStatus: ...
    # Windows.Foundation.HResult Windows.Media.Audio.CreateAudioDeviceInputNodeResult::get_ExtendedError()
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class CreateAudioDeviceOutputNodeResult(winrt.system.Object):
    # Windows.Media.Audio.AudioDeviceOutputNode Windows.Media.Audio.CreateAudioDeviceOutputNodeResult::get_DeviceOutputNode()
    @_property
    def device_output_node(self) -> AudioDeviceOutputNode: ...
    # Windows.Media.Audio.AudioDeviceNodeCreationStatus Windows.Media.Audio.CreateAudioDeviceOutputNodeResult::get_Status()
    @_property
    def status(self) -> AudioDeviceNodeCreationStatus: ...
    # Windows.Foundation.HResult Windows.Media.Audio.CreateAudioDeviceOutputNodeResult::get_ExtendedError()
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class CreateAudioFileInputNodeResult(winrt.system.Object):
    # Windows.Media.Audio.AudioFileInputNode Windows.Media.Audio.CreateAudioFileInputNodeResult::get_FileInputNode()
    @_property
    def file_input_node(self) -> AudioFileInputNode: ...
    # Windows.Media.Audio.AudioFileNodeCreationStatus Windows.Media.Audio.CreateAudioFileInputNodeResult::get_Status()
    @_property
    def status(self) -> AudioFileNodeCreationStatus: ...
    # Windows.Foundation.HResult Windows.Media.Audio.CreateAudioFileInputNodeResult::get_ExtendedError()
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class CreateAudioFileOutputNodeResult(winrt.system.Object):
    # Windows.Media.Audio.AudioFileOutputNode Windows.Media.Audio.CreateAudioFileOutputNodeResult::get_FileOutputNode()
    @_property
    def file_output_node(self) -> AudioFileOutputNode: ...
    # Windows.Media.Audio.AudioFileNodeCreationStatus Windows.Media.Audio.CreateAudioFileOutputNodeResult::get_Status()
    @_property
    def status(self) -> AudioFileNodeCreationStatus: ...
    # Windows.Foundation.HResult Windows.Media.Audio.CreateAudioFileOutputNodeResult::get_ExtendedError()
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class CreateAudioGraphResult(winrt.system.Object):
    # Windows.Media.Audio.AudioGraph Windows.Media.Audio.CreateAudioGraphResult::get_Graph()
    @_property
    def graph(self) -> AudioGraph: ...
    # Windows.Media.Audio.AudioGraphCreationStatus Windows.Media.Audio.CreateAudioGraphResult::get_Status()
    @_property
    def status(self) -> AudioGraphCreationStatus: ...
    # Windows.Foundation.HResult Windows.Media.Audio.CreateAudioGraphResult::get_ExtendedError()
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class CreateMediaSourceAudioInputNodeResult(winrt.system.Object):
    # Windows.Media.Audio.MediaSourceAudioInputNode Windows.Media.Audio.CreateMediaSourceAudioInputNodeResult::get_Node()
    @_property
    def node(self) -> MediaSourceAudioInputNode: ...
    # Windows.Media.Audio.MediaSourceAudioInputNodeCreationStatus Windows.Media.Audio.CreateMediaSourceAudioInputNodeResult::get_Status()
    @_property
    def status(self) -> MediaSourceAudioInputNodeCreationStatus: ...
    # Windows.Foundation.HResult Windows.Media.Audio.CreateMediaSourceAudioInputNodeResult::get_ExtendedError()
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class EchoEffectDefinition(winrt.system.Object, windows_media_effects.IAudioEffectDefinition):
    def __new__(cls: typing.Type[Self], audio_graph: AudioGraph) -> Self: ...
    # System.Double Windows.Media.Audio.EchoEffectDefinition::get_WetDryMix()
    @_property
    def wet_dry_mix(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.EchoEffectDefinition::put_WetDryMix(System.Double)
    @wet_dry_mix.setter
    def wet_dry_mix(self, value: winrt.system.Double) -> None: ...
    # System.Double Windows.Media.Audio.EchoEffectDefinition::get_Feedback()
    @_property
    def feedback(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.EchoEffectDefinition::put_Feedback(System.Double)
    @feedback.setter
    def feedback(self, value: winrt.system.Double) -> None: ...
    # System.Double Windows.Media.Audio.EchoEffectDefinition::get_Delay()
    @_property
    def delay(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.EchoEffectDefinition::put_Delay(System.Double)
    @delay.setter
    def delay(self, value: winrt.system.Double) -> None: ...
    # System.String Windows.Media.Audio.EchoEffectDefinition::get_ActivatableClassId()
    @_property
    def activatable_class_id(self) -> str: ...
    # Windows.Foundation.Collections.IPropertySet Windows.Media.Audio.EchoEffectDefinition::get_Properties()
    @_property
    def properties(self) -> windows_foundation_collections.IPropertySet: ...

@typing.final
class EqualizerBand(winrt.system.Object):
    # System.Double Windows.Media.Audio.EqualizerBand::get_Gain()
    @_property
    def gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.EqualizerBand::put_Gain(System.Double)
    @gain.setter
    def gain(self, value: winrt.system.Double) -> None: ...
    # System.Double Windows.Media.Audio.EqualizerBand::get_FrequencyCenter()
    @_property
    def frequency_center(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.EqualizerBand::put_FrequencyCenter(System.Double)
    @frequency_center.setter
    def frequency_center(self, value: winrt.system.Double) -> None: ...
    # System.Double Windows.Media.Audio.EqualizerBand::get_Bandwidth()
    @_property
    def bandwidth(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.EqualizerBand::put_Bandwidth(System.Double)
    @bandwidth.setter
    def bandwidth(self, value: winrt.system.Double) -> None: ...

@typing.final
class EqualizerEffectDefinition(winrt.system.Object, windows_media_effects.IAudioEffectDefinition):
    def __new__(cls: typing.Type[Self], audio_graph: AudioGraph) -> Self: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Audio.EqualizerBand> Windows.Media.Audio.EqualizerEffectDefinition::get_Bands()
    @_property
    def bands(self) -> typing.Sequence[EqualizerBand]: ...
    # System.String Windows.Media.Audio.EqualizerEffectDefinition::get_ActivatableClassId()
    @_property
    def activatable_class_id(self) -> str: ...
    # Windows.Foundation.Collections.IPropertySet Windows.Media.Audio.EqualizerEffectDefinition::get_Properties()
    @_property
    def properties(self) -> windows_foundation_collections.IPropertySet: ...

@typing.final
class FrameInputNodeQuantumStartedEventArgs(winrt.system.Object):
    # System.Int32 Windows.Media.Audio.FrameInputNodeQuantumStartedEventArgs::get_RequiredSamples()
    @_property
    def required_samples(self) -> winrt.system.Int32: ...

@typing.final
class LimiterEffectDefinition(winrt.system.Object, windows_media_effects.IAudioEffectDefinition):
    def __new__(cls: typing.Type[Self], audio_graph: AudioGraph) -> Self: ...
    # System.UInt32 Windows.Media.Audio.LimiterEffectDefinition::get_Release()
    @_property
    def release(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Media.Audio.LimiterEffectDefinition::put_Release(System.UInt32)
    @release.setter
    def release(self, value: winrt.system.UInt32) -> None: ...
    # System.UInt32 Windows.Media.Audio.LimiterEffectDefinition::get_Loudness()
    @_property
    def loudness(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Media.Audio.LimiterEffectDefinition::put_Loudness(System.UInt32)
    @loudness.setter
    def loudness(self, value: winrt.system.UInt32) -> None: ...
    # System.String Windows.Media.Audio.LimiterEffectDefinition::get_ActivatableClassId()
    @_property
    def activatable_class_id(self) -> str: ...
    # Windows.Foundation.Collections.IPropertySet Windows.Media.Audio.LimiterEffectDefinition::get_Properties()
    @_property
    def properties(self) -> windows_foundation_collections.IPropertySet: ...

@typing.final
class MediaSourceAudioInputNode(winrt.system.Object, IAudioInputNode2, IAudioInputNode, IAudioNode, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode)
    def add_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode,System.Double)
    def add_outgoing_connection_with_gain(self, destination: IAudioNode, gain: winrt.system.Double, /) -> None: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::Close()
    def close(self) -> None: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::DisableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def disable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::EnableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    def enable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::RemoveOutgoingConnection(Windows.Media.Audio.IAudioNode)
    def remove_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::Reset()
    def reset(self) -> None: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::Seek(Windows.Foundation.TimeSpan)
    def seek(self, position: datetime.timedelta, /) -> None: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::Start()
    def start(self) -> None: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::Stop()
    def stop(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.MediaSourceAudioInputNode::add_MediaSourceCompleted(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.MediaSourceAudioInputNode,System.Object>)
    def add_media_source_completed(self, handler: windows_foundation.TypedEventHandler[MediaSourceAudioInputNode, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::remove_MediaSourceCompleted(Windows.Foundation.EventRegistrationToken)
    def remove_media_source_completed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Audio.AudioGraphConnection> Windows.Media.Audio.MediaSourceAudioInputNode::get_OutgoingConnections()
    @_property
    def outgoing_connections(self) -> typing.Sequence[AudioGraphConnection]: ...
    # Windows.Media.Audio.AudioNodeEmitter Windows.Media.Audio.MediaSourceAudioInputNode::get_Emitter()
    @_property
    def emitter(self) -> AudioNodeEmitter: ...
    # System.Double Windows.Media.Audio.MediaSourceAudioInputNode::get_OutgoingGain()
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::put_OutgoingGain(System.Double)
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    # System.Boolean Windows.Media.Audio.MediaSourceAudioInputNode::get_ConsumeInput()
    @_property
    def consume_input(self) -> bool: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::put_ConsumeInput(System.Boolean)
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Audio.MediaSourceAudioInputNode::get_EffectDefinitions()
    @_property
    def effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.MediaSourceAudioInputNode::get_EncodingProperties()
    @_property
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.Audio.MediaSourceAudioInputNode::get_StartTime()
    @_property
    def start_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::put_StartTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @start_time.setter
    def start_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # System.Double Windows.Media.Audio.MediaSourceAudioInputNode::get_PlaybackSpeedFactor()
    @_property
    def playback_speed_factor(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::put_PlaybackSpeedFactor(System.Double)
    @playback_speed_factor.setter
    def playback_speed_factor(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.IReference`1<System.Int32> Windows.Media.Audio.MediaSourceAudioInputNode::get_LoopCount()
    @_property
    def loop_count(self) -> typing.Optional[winrt.system.Int32]: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::put_LoopCount(Windows.Foundation.IReference`1<System.Int32>)
    @loop_count.setter
    def loop_count(self, value: typing.Optional[winrt.system.Int32]) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.Audio.MediaSourceAudioInputNode::get_EndTime()
    @_property
    def end_time(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.Audio.MediaSourceAudioInputNode::put_EndTime(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @end_time.setter
    def end_time(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Media.Audio.MediaSourceAudioInputNode::get_Duration()
    @_property
    def duration(self) -> datetime.timedelta: ...
    # Windows.Media.Core.MediaSource Windows.Media.Audio.MediaSourceAudioInputNode::get_MediaSource()
    @_property
    def media_source(self) -> windows_media_core.MediaSource: ...
    # Windows.Foundation.TimeSpan Windows.Media.Audio.MediaSourceAudioInputNode::get_Position()
    @_property
    def position(self) -> datetime.timedelta: ...

@typing.final
class ReverbEffectDefinition(winrt.system.Object, windows_media_effects.IAudioEffectDefinition):
    def __new__(cls: typing.Type[Self], audio_graph: AudioGraph) -> Self: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_HighEQGain()
    @_property
    def high_e_q_gain(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_HighEQGain(System.Byte)
    @high_e_q_gain.setter
    def high_e_q_gain(self, value: winrt.system.UInt8) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_HighEQCutoff()
    @_property
    def high_e_q_cutoff(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_HighEQCutoff(System.Byte)
    @high_e_q_cutoff.setter
    def high_e_q_cutoff(self, value: winrt.system.UInt8) -> None: ...
    # System.Boolean Windows.Media.Audio.ReverbEffectDefinition::get_DisableLateField()
    @_property
    def disable_late_field(self) -> bool: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_DisableLateField(System.Boolean)
    @disable_late_field.setter
    def disable_late_field(self, value: bool) -> None: ...
    # System.Double Windows.Media.Audio.ReverbEffectDefinition::get_Density()
    @_property
    def density(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_Density(System.Double)
    @density.setter
    def density(self, value: winrt.system.Double) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_PositionRight()
    @_property
    def position_right(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_PositionRight(System.Byte)
    @position_right.setter
    def position_right(self, value: winrt.system.UInt8) -> None: ...
    # System.Double Windows.Media.Audio.ReverbEffectDefinition::get_DecayTime()
    @_property
    def decay_time(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_DecayTime(System.Double)
    @decay_time.setter
    def decay_time(self, value: winrt.system.Double) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_LateDiffusion()
    @_property
    def late_diffusion(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_LateDiffusion(System.Byte)
    @late_diffusion.setter
    def late_diffusion(self, value: winrt.system.UInt8) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_PositionMatrixRight()
    @_property
    def position_matrix_right(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_PositionMatrixRight(System.Byte)
    @position_matrix_right.setter
    def position_matrix_right(self, value: winrt.system.UInt8) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_PositionMatrixLeft()
    @_property
    def position_matrix_left(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_PositionMatrixLeft(System.Byte)
    @position_matrix_left.setter
    def position_matrix_left(self, value: winrt.system.UInt8) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_PositionLeft()
    @_property
    def position_left(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_PositionLeft(System.Byte)
    @position_left.setter
    def position_left(self, value: winrt.system.UInt8) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_LowEQGain()
    @_property
    def low_e_q_gain(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_LowEQGain(System.Byte)
    @low_e_q_gain.setter
    def low_e_q_gain(self, value: winrt.system.UInt8) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_LowEQCutoff()
    @_property
    def low_e_q_cutoff(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_LowEQCutoff(System.Byte)
    @low_e_q_cutoff.setter
    def low_e_q_cutoff(self, value: winrt.system.UInt8) -> None: ...
    # System.Double Windows.Media.Audio.ReverbEffectDefinition::get_RoomFilterFreq()
    @_property
    def room_filter_freq(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_RoomFilterFreq(System.Double)
    @room_filter_freq.setter
    def room_filter_freq(self, value: winrt.system.Double) -> None: ...
    # System.Double Windows.Media.Audio.ReverbEffectDefinition::get_ReverbGain()
    @_property
    def reverb_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_ReverbGain(System.Double)
    @reverb_gain.setter
    def reverb_gain(self, value: winrt.system.Double) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_ReverbDelay()
    @_property
    def reverb_delay(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_ReverbDelay(System.Byte)
    @reverb_delay.setter
    def reverb_delay(self, value: winrt.system.UInt8) -> None: ...
    # System.Double Windows.Media.Audio.ReverbEffectDefinition::get_ReflectionsGain()
    @_property
    def reflections_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_ReflectionsGain(System.Double)
    @reflections_gain.setter
    def reflections_gain(self, value: winrt.system.Double) -> None: ...
    # System.UInt32 Windows.Media.Audio.ReverbEffectDefinition::get_ReflectionsDelay()
    @_property
    def reflections_delay(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_ReflectionsDelay(System.UInt32)
    @reflections_delay.setter
    def reflections_delay(self, value: winrt.system.UInt32) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_RearDelay()
    @_property
    def rear_delay(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_RearDelay(System.Byte)
    @rear_delay.setter
    def rear_delay(self, value: winrt.system.UInt8) -> None: ...
    # System.Double Windows.Media.Audio.ReverbEffectDefinition::get_WetDryMix()
    @_property
    def wet_dry_mix(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_WetDryMix(System.Double)
    @wet_dry_mix.setter
    def wet_dry_mix(self, value: winrt.system.Double) -> None: ...
    # System.Byte Windows.Media.Audio.ReverbEffectDefinition::get_EarlyDiffusion()
    @_property
    def early_diffusion(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_EarlyDiffusion(System.Byte)
    @early_diffusion.setter
    def early_diffusion(self, value: winrt.system.UInt8) -> None: ...
    # System.Double Windows.Media.Audio.ReverbEffectDefinition::get_RoomSize()
    @_property
    def room_size(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_RoomSize(System.Double)
    @room_size.setter
    def room_size(self, value: winrt.system.Double) -> None: ...
    # System.Double Windows.Media.Audio.ReverbEffectDefinition::get_RoomFilterMain()
    @_property
    def room_filter_main(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_RoomFilterMain(System.Double)
    @room_filter_main.setter
    def room_filter_main(self, value: winrt.system.Double) -> None: ...
    # System.Double Windows.Media.Audio.ReverbEffectDefinition::get_RoomFilterHF()
    @_property
    def room_filter_h_f(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.ReverbEffectDefinition::put_RoomFilterHF(System.Double)
    @room_filter_h_f.setter
    def room_filter_h_f(self, value: winrt.system.Double) -> None: ...
    # System.String Windows.Media.Audio.ReverbEffectDefinition::get_ActivatableClassId()
    @_property
    def activatable_class_id(self) -> str: ...
    # Windows.Foundation.Collections.IPropertySet Windows.Media.Audio.ReverbEffectDefinition::get_Properties()
    @_property
    def properties(self) -> windows_foundation_collections.IPropertySet: ...

@typing.final
class SetDefaultSpatialAudioFormatResult(winrt.system.Object):
    # Windows.Media.Audio.SetDefaultSpatialAudioFormatStatus Windows.Media.Audio.SetDefaultSpatialAudioFormatResult::get_Status()
    @_property
    def status(self) -> SetDefaultSpatialAudioFormatStatus: ...

@typing.final
class SpatialAudioDeviceConfiguration_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.Audio.SpatialAudioDeviceConfiguration Windows.Media.Audio.SpatialAudioDeviceConfiguration::GetForDeviceId(System.String)
    def get_for_device_id(cls, device_id: str, /) -> SpatialAudioDeviceConfiguration: ...

@typing.final
class SpatialAudioDeviceConfiguration(winrt.system.Object, metaclass=SpatialAudioDeviceConfiguration_Static):
    # System.Boolean Windows.Media.Audio.SpatialAudioDeviceConfiguration::IsSpatialAudioFormatSupported(System.String)
    def is_spatial_audio_format_supported(self, subtype: str, /) -> bool: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Media.Audio.SetDefaultSpatialAudioFormatResult> Windows.Media.Audio.SpatialAudioDeviceConfiguration::SetDefaultSpatialAudioFormatAsync(System.String)
    def set_default_spatial_audio_format_async(self, subtype: str, /) -> windows_foundation.IAsyncOperation[SetDefaultSpatialAudioFormatResult]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Media.Audio.SpatialAudioDeviceConfiguration::add_ConfigurationChanged(Windows.Foundation.TypedEventHandler`2<Windows.Media.Audio.SpatialAudioDeviceConfiguration,System.Object>)
    def add_configuration_changed(self, handler: windows_foundation.TypedEventHandler[SpatialAudioDeviceConfiguration, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Media.Audio.SpatialAudioDeviceConfiguration::remove_ConfigurationChanged(Windows.Foundation.EventRegistrationToken)
    def remove_configuration_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.String Windows.Media.Audio.SpatialAudioDeviceConfiguration::get_ActiveSpatialAudioFormat()
    @_property
    def active_spatial_audio_format(self) -> str: ...
    # System.String Windows.Media.Audio.SpatialAudioDeviceConfiguration::get_DefaultSpatialAudioFormat()
    @_property
    def default_spatial_audio_format(self) -> str: ...
    # System.String Windows.Media.Audio.SpatialAudioDeviceConfiguration::get_DeviceId()
    @_property
    def device_id(self) -> str: ...
    # System.Boolean Windows.Media.Audio.SpatialAudioDeviceConfiguration::get_IsSpatialAudioSupported()
    @_property
    def is_spatial_audio_supported(self) -> bool: ...

@typing.final
class SpatialAudioFormatConfiguration_Static(winrt._winrt.IInspectable_Static):
    # Windows.Media.Audio.SpatialAudioFormatConfiguration Windows.Media.Audio.SpatialAudioFormatConfiguration::GetDefault()
    def get_default(cls) -> SpatialAudioFormatConfiguration: ...

@typing.final
class SpatialAudioFormatConfiguration(winrt.system.Object, metaclass=SpatialAudioFormatConfiguration_Static):
    # Windows.Foundation.IAsyncAction Windows.Media.Audio.SpatialAudioFormatConfiguration::ReportConfigurationChangedAsync(System.String)
    def report_configuration_changed_async(self, subtype: str, /) -> windows_foundation.IAsyncAction: ...
    # Windows.Foundation.IAsyncAction Windows.Media.Audio.SpatialAudioFormatConfiguration::ReportLicenseChangedAsync(System.String)
    def report_license_changed_async(self, subtype: str, /) -> windows_foundation.IAsyncAction: ...
    # Windows.Media.Audio.MixedRealitySpatialAudioFormatPolicy Windows.Media.Audio.SpatialAudioFormatConfiguration::get_MixedRealityExclusiveModePolicy()
    @_property
    def mixed_reality_exclusive_mode_policy(self) -> MixedRealitySpatialAudioFormatPolicy: ...
    # System.Void Windows.Media.Audio.SpatialAudioFormatConfiguration::put_MixedRealityExclusiveModePolicy(Windows.Media.Audio.MixedRealitySpatialAudioFormatPolicy)
    @mixed_reality_exclusive_mode_policy.setter
    def mixed_reality_exclusive_mode_policy(self, value: MixedRealitySpatialAudioFormatPolicy) -> None: ...

@typing.final
class SpatialAudioFormatSubtype_Static(winrt._winrt.IInspectable_Static):
    # System.String Windows.Media.Audio.SpatialAudioFormatSubtype::get_DTSHeadphoneX()
    @_property
    def d_t_s_headphone_x(cls) -> str: ...
    # System.String Windows.Media.Audio.SpatialAudioFormatSubtype::get_DTSXUltra()
    @_property
    def d_t_s_x_ultra(cls) -> str: ...
    # System.String Windows.Media.Audio.SpatialAudioFormatSubtype::get_DolbyAtmosForHeadphones()
    @_property
    def dolby_atmos_for_headphones(cls) -> str: ...
    # System.String Windows.Media.Audio.SpatialAudioFormatSubtype::get_DolbyAtmosForHomeTheater()
    @_property
    def dolby_atmos_for_home_theater(cls) -> str: ...
    # System.String Windows.Media.Audio.SpatialAudioFormatSubtype::get_DolbyAtmosForSpeakers()
    @_property
    def dolby_atmos_for_speakers(cls) -> str: ...
    # System.String Windows.Media.Audio.SpatialAudioFormatSubtype::get_WindowsSonic()
    @_property
    def windows_sonic(cls) -> str: ...
    # System.String Windows.Media.Audio.SpatialAudioFormatSubtype::get_DTSXForHomeTheater()
    @_property
    def d_t_s_x_for_home_theater(cls) -> str: ...

@typing.final
class SpatialAudioFormatSubtype(winrt.system.Object, metaclass=SpatialAudioFormatSubtype_Static):
    pass

@typing.final
class _IAudioInputNode: ...

class IAudioInputNode(IAudioNode, windows_foundation.IClosable, winrt._winrt.IInspectable):
    # System.Void Windows.Media.Audio.IAudioInputNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode)
    @abstractmethod
    def add_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # System.Void Windows.Media.Audio.IAudioInputNode::AddOutgoingConnection(Windows.Media.Audio.IAudioNode,System.Double)
    @abstractmethod
    def add_outgoing_connection_with_gain(self, destination: IAudioNode, gain: winrt.system.Double, /) -> None: ...
    # System.Void Windows.Media.Audio.IAudioInputNode::RemoveOutgoingConnection(Windows.Media.Audio.IAudioNode)
    @abstractmethod
    def remove_outgoing_connection(self, destination: IAudioNode, /) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Media.Audio.AudioGraphConnection> Windows.Media.Audio.IAudioInputNode::get_OutgoingConnections()
    @_property
    @abstractmethod
    def outgoing_connections(self) -> typing.Sequence[AudioGraphConnection]: ...

@typing.final
class _IAudioInputNode2: ...

class IAudioInputNode2(IAudioInputNode, IAudioNode, windows_foundation.IClosable, winrt._winrt.IInspectable):
    # Windows.Media.Audio.AudioNodeEmitter Windows.Media.Audio.IAudioInputNode2::get_Emitter()
    @_property
    @abstractmethod
    def emitter(self) -> AudioNodeEmitter: ...

@typing.final
class _IAudioNode: ...

class IAudioNode(windows_foundation.IClosable, winrt._winrt.IInspectable):
    # System.Void Windows.Media.Audio.IAudioNode::DisableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    @abstractmethod
    def disable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.IAudioNode::EnableEffectsByDefinition(Windows.Media.Effects.IAudioEffectDefinition)
    @abstractmethod
    def enable_effects_by_definition(self, definition: windows_media_effects.IAudioEffectDefinition, /) -> None: ...
    # System.Void Windows.Media.Audio.IAudioNode::Reset()
    @abstractmethod
    def reset(self) -> None: ...
    # System.Void Windows.Media.Audio.IAudioNode::Start()
    @abstractmethod
    def start(self) -> None: ...
    # System.Void Windows.Media.Audio.IAudioNode::Stop()
    @abstractmethod
    def stop(self) -> None: ...
    # System.Boolean Windows.Media.Audio.IAudioNode::get_ConsumeInput()
    @_property
    @abstractmethod
    def consume_input(self) -> bool: ...
    # System.Void Windows.Media.Audio.IAudioNode::put_ConsumeInput(System.Boolean)
    @consume_input.setter
    @abstractmethod
    def consume_input(self, value: bool) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Effects.IAudioEffectDefinition> Windows.Media.Audio.IAudioNode::get_EffectDefinitions()
    @_property
    @abstractmethod
    def effect_definitions(self) -> typing.MutableSequence[windows_media_effects.IAudioEffectDefinition]: ...
    # Windows.Media.MediaProperties.AudioEncodingProperties Windows.Media.Audio.IAudioNode::get_EncodingProperties()
    @_property
    @abstractmethod
    def encoding_properties(self) -> windows_media_mediaproperties.AudioEncodingProperties: ...
    # System.Double Windows.Media.Audio.IAudioNode::get_OutgoingGain()
    @_property
    @abstractmethod
    def outgoing_gain(self) -> winrt.system.Double: ...
    # System.Void Windows.Media.Audio.IAudioNode::put_OutgoingGain(System.Double)
    @outgoing_gain.setter
    @abstractmethod
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...

@typing.final
class _IAudioNodeWithListener: ...

class IAudioNodeWithListener(IAudioNode, windows_foundation.IClosable, winrt._winrt.IInspectable):
    # Windows.Media.Audio.AudioNodeListener Windows.Media.Audio.IAudioNodeWithListener::get_Listener()
    @_property
    @abstractmethod
    def listener(self) -> AudioNodeListener: ...
    # System.Void Windows.Media.Audio.IAudioNodeWithListener::put_Listener(Windows.Media.Audio.AudioNodeListener)
    @listener.setter
    @abstractmethod
    def listener(self, value: AudioNodeListener) -> None: ...

