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

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

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, AudioFileNodeCreationStatus, AudioGraphCreationStatus, AudioGraphUnrecoverableError, AudioNodeEmitterDecayKind, AudioNodeEmitterSettings, AudioNodeEmitterShapeKind, AudioPlaybackConnectionOpenResultStatus, AudioPlaybackConnectionState, MediaSourceAudioInputNodeCreationStatus, MixedRealitySpatialAudioFormatPolicy, QuantumSizeSelectionMode, SetDefaultSpatialAudioFormatStatus, SpatialAudioModel

Self = typing.TypeVar('Self')

@typing.final
class AudioDeviceInputNode(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioDeviceInputNode: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], gain: winrt.system.Double, /) -> None: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def remove_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def device(self) -> typing.Optional[windows_devices_enumeration.DeviceInformation]: ...
    @_property
    def outgoing_connections(self) -> typing.Optional[windows_foundation_collections.IVectorView[AudioGraphConnection]]: ...
    @_property
    def emitter(self) -> typing.Optional[AudioNodeEmitter]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...

@typing.final
class AudioDeviceOutputNode(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioDeviceOutputNode: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def device(self) -> typing.Optional[windows_devices_enumeration.DeviceInformation]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...
    @_property
    def listener(self) -> typing.Optional[AudioNodeListener]: ...
    @listener.setter
    def listener(self, value: typing.Optional[AudioNodeListener]) -> None: ...

@typing.final
class AudioFileInputNode(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioFileInputNode: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], gain: winrt.system.Double, /) -> None: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def remove_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    def reset(self) -> None: ...
    def seek(self, position: datetime.timedelta, /) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def add_file_completed(self, handler: windows_foundation.TypedEventHandler[AudioFileInputNode, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_file_completed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def playback_speed_factor(self) -> winrt.system.Double: ...
    @playback_speed_factor.setter
    def playback_speed_factor(self, value: winrt.system.Double) -> None: ...
    @_property
    def loop_count(self) -> typing.Optional[typing.Optional[winrt.system.Int32]]: ...
    @loop_count.setter
    def loop_count(self, value: typing.Optional[typing.Optional[winrt.system.Int32]]) -> None: ...
    @_property
    def end_time(self) -> typing.Optional[typing.Optional[datetime.timedelta]]: ...
    @end_time.setter
    def end_time(self, value: typing.Optional[typing.Optional[datetime.timedelta]]) -> None: ...
    @_property
    def start_time(self) -> typing.Optional[typing.Optional[datetime.timedelta]]: ...
    @start_time.setter
    def start_time(self, value: typing.Optional[typing.Optional[datetime.timedelta]]) -> None: ...
    @_property
    def position(self) -> datetime.timedelta: ...
    @_property
    def source_file(self) -> typing.Optional[windows_storage.StorageFile]: ...
    @_property
    def duration(self) -> datetime.timedelta: ...
    @_property
    def outgoing_connections(self) -> typing.Optional[windows_foundation_collections.IVectorView[AudioGraphConnection]]: ...
    @_property
    def emitter(self) -> typing.Optional[AudioNodeEmitter]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...

@typing.final
class AudioFileOutputNode(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioFileOutputNode: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def finalize_async(self) -> windows_foundation.IAsyncOperation[windows_media_transcoding.TranscodeFailureReason]: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def file(self) -> typing.Optional[windows_storage.IStorageFile]: ...
    @_property
    def file_encoding_profile(self) -> typing.Optional[windows_media_mediaproperties.MediaEncodingProfile]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...

@typing.final
class AudioFrameCompletedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioFrameCompletedEventArgs: ...
    @_property
    def frame(self) -> typing.Optional[windows_media.AudioFrame]: ...

@typing.final
class AudioFrameInputNode(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioFrameInputNode: ...
    def add_frame(self, frame: typing.Optional[windows_media.AudioFrame], /) -> None: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], gain: winrt.system.Double, /) -> None: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def discard_queued_frames(self) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def remove_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def add_audio_frame_completed(self, handler: windows_foundation.TypedEventHandler[AudioFrameInputNode, AudioFrameCompletedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_audio_frame_completed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_quantum_started(self, handler: windows_foundation.TypedEventHandler[AudioFrameInputNode, FrameInputNodeQuantumStartedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_quantum_started(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def playback_speed_factor(self) -> winrt.system.Double: ...
    @playback_speed_factor.setter
    def playback_speed_factor(self, value: winrt.system.Double) -> None: ...
    @_property
    def queued_sample_count(self) -> winrt.system.UInt64: ...
    @_property
    def outgoing_connections(self) -> typing.Optional[windows_foundation_collections.IVectorView[AudioGraphConnection]]: ...
    @_property
    def emitter(self) -> typing.Optional[AudioNodeEmitter]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...

@typing.final
class AudioFrameOutputNode(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioFrameOutputNode: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def get_frame(self) -> typing.Optional[windows_media.AudioFrame]: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...

@typing.final
class AudioGraph_Static(type):
    def create_async(cls, settings: typing.Optional[AudioGraphSettings], /) -> windows_foundation.IAsyncOperation[CreateAudioGraphResult]: ...

@typing.final
class AudioGraph(winrt.system.Object, metaclass=AudioGraph_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioGraph: ...
    def close(self) -> None: ...
    def create_batch_updater(self) -> typing.Optional[AudioGraphBatchUpdater]: ...
    @typing.overload
    def create_device_input_node_async(self, category: windows_media_capture.MediaCategory, /) -> windows_foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    @typing.overload
    def create_device_input_node_async(self, category: windows_media_capture.MediaCategory, encoding_properties: typing.Optional[windows_media_mediaproperties.AudioEncodingProperties], /) -> windows_foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    @typing.overload
    def create_device_input_node_async(self, category: windows_media_capture.MediaCategory, encoding_properties: typing.Optional[windows_media_mediaproperties.AudioEncodingProperties], device: typing.Optional[windows_devices_enumeration.DeviceInformation], /) -> windows_foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    @typing.overload
    def create_device_input_node_async(self, category: windows_media_capture.MediaCategory, encoding_properties: typing.Optional[windows_media_mediaproperties.AudioEncodingProperties], device: typing.Optional[windows_devices_enumeration.DeviceInformation], emitter: typing.Optional[AudioNodeEmitter], /) -> windows_foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    def create_device_output_node_async(self) -> windows_foundation.IAsyncOperation[CreateAudioDeviceOutputNodeResult]: ...
    @typing.overload
    def create_file_input_node_async(self, file: typing.Optional[windows_storage.IStorageFile], /) -> windows_foundation.IAsyncOperation[CreateAudioFileInputNodeResult]: ...
    @typing.overload
    def create_file_input_node_async(self, file: typing.Optional[windows_storage.IStorageFile], emitter: typing.Optional[AudioNodeEmitter], /) -> windows_foundation.IAsyncOperation[CreateAudioFileInputNodeResult]: ...
    @typing.overload
    def create_file_output_node_async(self, file: typing.Optional[windows_storage.IStorageFile], /) -> windows_foundation.IAsyncOperation[CreateAudioFileOutputNodeResult]: ...
    @typing.overload
    def create_file_output_node_async(self, file: typing.Optional[windows_storage.IStorageFile], file_encoding_profile: typing.Optional[windows_media_mediaproperties.MediaEncodingProfile], /) -> windows_foundation.IAsyncOperation[CreateAudioFileOutputNodeResult]: ...
    @typing.overload
    def create_frame_input_node(self) -> typing.Optional[AudioFrameInputNode]: ...
    @typing.overload
    def create_frame_input_node(self, encoding_properties: typing.Optional[windows_media_mediaproperties.AudioEncodingProperties], /) -> typing.Optional[AudioFrameInputNode]: ...
    @typing.overload
    def create_frame_input_node(self, encoding_properties: typing.Optional[windows_media_mediaproperties.AudioEncodingProperties], emitter: typing.Optional[AudioNodeEmitter], /) -> typing.Optional[AudioFrameInputNode]: ...
    @typing.overload
    def create_frame_output_node(self) -> typing.Optional[AudioFrameOutputNode]: ...
    @typing.overload
    def create_frame_output_node(self, encoding_properties: typing.Optional[windows_media_mediaproperties.AudioEncodingProperties], /) -> typing.Optional[AudioFrameOutputNode]: ...
    @typing.overload
    def create_media_source_audio_input_node_async(self, media_source: typing.Optional[windows_media_core.MediaSource], /) -> windows_foundation.IAsyncOperation[CreateMediaSourceAudioInputNodeResult]: ...
    @typing.overload
    def create_media_source_audio_input_node_async(self, media_source: typing.Optional[windows_media_core.MediaSource], emitter: typing.Optional[AudioNodeEmitter], /) -> windows_foundation.IAsyncOperation[CreateMediaSourceAudioInputNodeResult]: ...
    @typing.overload
    def create_submix_node(self) -> typing.Optional[AudioSubmixNode]: ...
    @typing.overload
    def create_submix_node(self, encoding_properties: typing.Optional[windows_media_mediaproperties.AudioEncodingProperties], /) -> typing.Optional[AudioSubmixNode]: ...
    @typing.overload
    def create_submix_node(self, encoding_properties: typing.Optional[windows_media_mediaproperties.AudioEncodingProperties], emitter: typing.Optional[AudioNodeEmitter], /) -> typing.Optional[AudioSubmixNode]: ...
    def reset_all_nodes(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def add_quantum_processed(self, handler: windows_foundation.TypedEventHandler[AudioGraph, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_quantum_processed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_quantum_started(self, handler: windows_foundation.TypedEventHandler[AudioGraph, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_quantum_started(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_unrecoverable_error_occurred(self, handler: windows_foundation.TypedEventHandler[AudioGraph, AudioGraphUnrecoverableErrorOccurredEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_unrecoverable_error_occurred(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def completed_quantum_count(self) -> winrt.system.UInt64: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...
    @_property
    def latency_in_samples(self) -> winrt.system.Int32: ...
    @_property
    def primary_render_device(self) -> typing.Optional[windows_devices_enumeration.DeviceInformation]: ...
    @_property
    def render_device_audio_processing(self) -> windows_media.AudioProcessing: ...
    @_property
    def samples_per_quantum(self) -> winrt.system.Int32: ...

@typing.final
class AudioGraphBatchUpdater(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioGraphBatchUpdater: ...
    def close(self) -> None: ...

@typing.final
class AudioGraphConnection(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioGraphConnection: ...
    @_property
    def gain(self) -> winrt.system.Double: ...
    @gain.setter
    def gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def destination(self) -> typing.Optional[IAudioNode]: ...

@typing.final
class AudioGraphSettings(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioGraphSettings: ...
    def __new__(cls: typing.Type[AudioGraphSettings], audio_render_category: windows_media_render.AudioRenderCategory) -> AudioGraphSettings: ...
    @_property
    def quantum_size_selection_mode(self) -> QuantumSizeSelectionMode: ...
    @quantum_size_selection_mode.setter
    def quantum_size_selection_mode(self, value: QuantumSizeSelectionMode) -> None: ...
    @_property
    def primary_render_device(self) -> typing.Optional[windows_devices_enumeration.DeviceInformation]: ...
    @primary_render_device.setter
    def primary_render_device(self, value: typing.Optional[windows_devices_enumeration.DeviceInformation]) -> None: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...
    @encoding_properties.setter
    def encoding_properties(self, value: typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]) -> None: ...
    @_property
    def desired_samples_per_quantum(self) -> winrt.system.Int32: ...
    @desired_samples_per_quantum.setter
    def desired_samples_per_quantum(self, value: winrt.system.Int32) -> None: ...
    @_property
    def desired_render_device_audio_processing(self) -> windows_media.AudioProcessing: ...
    @desired_render_device_audio_processing.setter
    def desired_render_device_audio_processing(self, value: windows_media.AudioProcessing) -> None: ...
    @_property
    def audio_render_category(self) -> windows_media_render.AudioRenderCategory: ...
    @audio_render_category.setter
    def audio_render_category(self, value: windows_media_render.AudioRenderCategory) -> None: ...
    @_property
    def max_playback_speed_factor(self) -> winrt.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):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioGraphUnrecoverableErrorOccurredEventArgs: ...
    @_property
    def error(self) -> AudioGraphUnrecoverableError: ...

@typing.final
class AudioNodeEmitter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioNodeEmitter: ...
    @typing.overload
    def __new__(cls: typing.Type[AudioNodeEmitter], shape: typing.Optional[AudioNodeEmitterShape], decay_model: typing.Optional[AudioNodeEmitterDecayModel], settings: AudioNodeEmitterSettings) -> AudioNodeEmitter: ...
    @typing.overload
    def __new__(cls: typing.Type[AudioNodeEmitter]) -> AudioNodeEmitter: ...
    @_property
    def position(self) -> windows_foundation_numerics.Vector3: ...
    @position.setter
    def position(self, value: windows_foundation_numerics.Vector3) -> None: ...
    @_property
    def gain(self) -> winrt.system.Double: ...
    @gain.setter
    def gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def doppler_velocity(self) -> windows_foundation_numerics.Vector3: ...
    @doppler_velocity.setter
    def doppler_velocity(self, value: windows_foundation_numerics.Vector3) -> None: ...
    @_property
    def doppler_scale(self) -> winrt.system.Double: ...
    @doppler_scale.setter
    def doppler_scale(self, value: winrt.system.Double) -> None: ...
    @_property
    def distance_scale(self) -> winrt.system.Double: ...
    @distance_scale.setter
    def distance_scale(self, value: winrt.system.Double) -> None: ...
    @_property
    def direction(self) -> windows_foundation_numerics.Vector3: ...
    @direction.setter
    def direction(self, value: windows_foundation_numerics.Vector3) -> None: ...
    @_property
    def decay_model(self) -> typing.Optional[AudioNodeEmitterDecayModel]: ...
    @_property
    def is_doppler_disabled(self) -> bool: ...
    @_property
    def shape(self) -> typing.Optional[AudioNodeEmitterShape]: ...
    @_property
    def spatial_audio_model(self) -> SpatialAudioModel: ...
    @spatial_audio_model.setter
    def spatial_audio_model(self, value: SpatialAudioModel) -> None: ...

@typing.final
class AudioNodeEmitterConeProperties(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioNodeEmitterConeProperties: ...
    @_property
    def inner_angle(self) -> winrt.system.Double: ...
    @_property
    def outer_angle(self) -> winrt.system.Double: ...
    @_property
    def outer_angle_gain(self) -> winrt.system.Double: ...

@typing.final
class AudioNodeEmitterDecayModel_Static(type):
    def create_custom(cls, min_gain: winrt.system.Double, max_gain: winrt.system.Double, /) -> typing.Optional[AudioNodeEmitterDecayModel]: ...
    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, /) -> typing.Optional[AudioNodeEmitterDecayModel]: ...

@typing.final
class AudioNodeEmitterDecayModel(winrt.system.Object, metaclass=AudioNodeEmitterDecayModel_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioNodeEmitterDecayModel: ...
    @_property
    def kind(self) -> AudioNodeEmitterDecayKind: ...
    @_property
    def max_gain(self) -> winrt.system.Double: ...
    @_property
    def min_gain(self) -> winrt.system.Double: ...
    @_property
    def natural_properties(self) -> typing.Optional[AudioNodeEmitterNaturalDecayModelProperties]: ...

@typing.final
class AudioNodeEmitterNaturalDecayModelProperties(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioNodeEmitterNaturalDecayModelProperties: ...
    @_property
    def cutoff_distance(self) -> winrt.system.Double: ...
    @_property
    def unity_gain_distance(self) -> winrt.system.Double: ...

@typing.final
class AudioNodeEmitterShape_Static(type):
    def create_cone(cls, inner_angle: winrt.system.Double, outer_angle: winrt.system.Double, outer_angle_gain: winrt.system.Double, /) -> typing.Optional[AudioNodeEmitterShape]: ...
    def create_omnidirectional(cls) -> typing.Optional[AudioNodeEmitterShape]: ...

@typing.final
class AudioNodeEmitterShape(winrt.system.Object, metaclass=AudioNodeEmitterShape_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioNodeEmitterShape: ...
    @_property
    def cone_properties(self) -> typing.Optional[AudioNodeEmitterConeProperties]: ...
    @_property
    def kind(self) -> AudioNodeEmitterShapeKind: ...

@typing.final
class AudioNodeListener(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioNodeListener: ...
    def __new__(cls: typing.Type[AudioNodeListener]) -> AudioNodeListener: ...
    @_property
    def speed_of_sound(self) -> winrt.system.Double: ...
    @speed_of_sound.setter
    def speed_of_sound(self, value: winrt.system.Double) -> None: ...
    @_property
    def position(self) -> windows_foundation_numerics.Vector3: ...
    @position.setter
    def position(self, value: windows_foundation_numerics.Vector3) -> None: ...
    @_property
    def orientation(self) -> windows_foundation_numerics.Quaternion: ...
    @orientation.setter
    def orientation(self, value: windows_foundation_numerics.Quaternion) -> None: ...
    @_property
    def doppler_velocity(self) -> windows_foundation_numerics.Vector3: ...
    @doppler_velocity.setter
    def doppler_velocity(self, value: windows_foundation_numerics.Vector3) -> None: ...

@typing.final
class AudioPlaybackConnection_Static(type):
    def get_device_selector(cls) -> str: ...
    def try_create_from_id(cls, id: str, /) -> typing.Optional[AudioPlaybackConnection]: ...

@typing.final
class AudioPlaybackConnection(winrt.system.Object, metaclass=AudioPlaybackConnection_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioPlaybackConnection: ...
    def close(self) -> None: ...
    def open(self) -> typing.Optional[AudioPlaybackConnectionOpenResult]: ...
    def open_async(self) -> windows_foundation.IAsyncOperation[AudioPlaybackConnectionOpenResult]: ...
    def start(self) -> None: ...
    def start_async(self) -> windows_foundation.IAsyncAction: ...
    def add_state_changed(self, handler: windows_foundation.TypedEventHandler[AudioPlaybackConnection, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_state_changed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def device_id(self) -> str: ...
    @_property
    def state(self) -> AudioPlaybackConnectionState: ...

@typing.final
class AudioPlaybackConnectionOpenResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioPlaybackConnectionOpenResult: ...
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...
    @_property
    def status(self) -> AudioPlaybackConnectionOpenResultStatus: ...

@typing.final
class AudioStateMonitor_Static(type):
    @typing.overload
    def create_for_capture_monitoring(cls) -> typing.Optional[AudioStateMonitor]: ...
    @typing.overload
    def create_for_capture_monitoring(cls, category: windows_media_capture.MediaCategory, /) -> typing.Optional[AudioStateMonitor]: ...
    @typing.overload
    def create_for_capture_monitoring(cls, category: windows_media_capture.MediaCategory, role: windows_media_devices.AudioDeviceRole, /) -> typing.Optional[AudioStateMonitor]: ...
    def create_for_capture_monitoring_with_category_and_device_id(cls, category: windows_media_capture.MediaCategory, device_id: str, /) -> typing.Optional[AudioStateMonitor]: ...
    @typing.overload
    def create_for_render_monitoring(cls) -> typing.Optional[AudioStateMonitor]: ...
    @typing.overload
    def create_for_render_monitoring(cls, category: windows_media_render.AudioRenderCategory, /) -> typing.Optional[AudioStateMonitor]: ...
    @typing.overload
    def create_for_render_monitoring(cls, category: windows_media_render.AudioRenderCategory, role: windows_media_devices.AudioDeviceRole, /) -> typing.Optional[AudioStateMonitor]: ...
    def create_for_render_monitoring_with_category_and_device_id(cls, category: windows_media_render.AudioRenderCategory, device_id: str, /) -> typing.Optional[AudioStateMonitor]: ...

@typing.final
class AudioStateMonitor(winrt.system.Object, metaclass=AudioStateMonitor_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioStateMonitor: ...
    def add_sound_level_changed(self, handler: windows_foundation.TypedEventHandler[AudioStateMonitor, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_sound_level_changed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def sound_level(self) -> windows_media.SoundLevel: ...

@typing.final
class AudioSubmixNode(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioSubmixNode: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], gain: winrt.system.Double, /) -> None: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def remove_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def outgoing_connections(self) -> typing.Optional[windows_foundation_collections.IVectorView[AudioGraphConnection]]: ...
    @_property
    def emitter(self) -> typing.Optional[AudioNodeEmitter]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...

@typing.final
class CreateAudioDeviceInputNodeResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CreateAudioDeviceInputNodeResult: ...
    @_property
    def device_input_node(self) -> typing.Optional[AudioDeviceInputNode]: ...
    @_property
    def status(self) -> AudioDeviceNodeCreationStatus: ...
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class CreateAudioDeviceOutputNodeResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CreateAudioDeviceOutputNodeResult: ...
    @_property
    def device_output_node(self) -> typing.Optional[AudioDeviceOutputNode]: ...
    @_property
    def status(self) -> AudioDeviceNodeCreationStatus: ...
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class CreateAudioFileInputNodeResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CreateAudioFileInputNodeResult: ...
    @_property
    def file_input_node(self) -> typing.Optional[AudioFileInputNode]: ...
    @_property
    def status(self) -> AudioFileNodeCreationStatus: ...
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class CreateAudioFileOutputNodeResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CreateAudioFileOutputNodeResult: ...
    @_property
    def file_output_node(self) -> typing.Optional[AudioFileOutputNode]: ...
    @_property
    def status(self) -> AudioFileNodeCreationStatus: ...
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class CreateAudioGraphResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CreateAudioGraphResult: ...
    @_property
    def graph(self) -> typing.Optional[AudioGraph]: ...
    @_property
    def status(self) -> AudioGraphCreationStatus: ...
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class CreateMediaSourceAudioInputNodeResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CreateMediaSourceAudioInputNodeResult: ...
    @_property
    def node(self) -> typing.Optional[MediaSourceAudioInputNode]: ...
    @_property
    def status(self) -> MediaSourceAudioInputNodeCreationStatus: ...
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class EchoEffectDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> EchoEffectDefinition: ...
    def __new__(cls: typing.Type[EchoEffectDefinition], audio_graph: typing.Optional[AudioGraph]) -> EchoEffectDefinition: ...
    @_property
    def wet_dry_mix(self) -> winrt.system.Double: ...
    @wet_dry_mix.setter
    def wet_dry_mix(self, value: winrt.system.Double) -> None: ...
    @_property
    def feedback(self) -> winrt.system.Double: ...
    @feedback.setter
    def feedback(self, value: winrt.system.Double) -> None: ...
    @_property
    def delay(self) -> winrt.system.Double: ...
    @delay.setter
    def delay(self, value: winrt.system.Double) -> None: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

@typing.final
class EqualizerBand(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> EqualizerBand: ...
    @_property
    def gain(self) -> winrt.system.Double: ...
    @gain.setter
    def gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def frequency_center(self) -> winrt.system.Double: ...
    @frequency_center.setter
    def frequency_center(self, value: winrt.system.Double) -> None: ...
    @_property
    def bandwidth(self) -> winrt.system.Double: ...
    @bandwidth.setter
    def bandwidth(self, value: winrt.system.Double) -> None: ...

@typing.final
class EqualizerEffectDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> EqualizerEffectDefinition: ...
    def __new__(cls: typing.Type[EqualizerEffectDefinition], audio_graph: typing.Optional[AudioGraph]) -> EqualizerEffectDefinition: ...
    @_property
    def bands(self) -> typing.Optional[windows_foundation_collections.IVectorView[EqualizerBand]]: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

@typing.final
class FrameInputNodeQuantumStartedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameInputNodeQuantumStartedEventArgs: ...
    @_property
    def required_samples(self) -> winrt.system.Int32: ...

@typing.final
class LimiterEffectDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> LimiterEffectDefinition: ...
    def __new__(cls: typing.Type[LimiterEffectDefinition], audio_graph: typing.Optional[AudioGraph]) -> LimiterEffectDefinition: ...
    @_property
    def release(self) -> winrt.system.UInt32: ...
    @release.setter
    def release(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def loudness(self) -> winrt.system.UInt32: ...
    @loudness.setter
    def loudness(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

@typing.final
class MediaSourceAudioInputNode(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MediaSourceAudioInputNode: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], gain: winrt.system.Double, /) -> None: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def remove_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    def reset(self) -> None: ...
    def seek(self, position: datetime.timedelta, /) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def add_media_source_completed(self, handler: windows_foundation.TypedEventHandler[MediaSourceAudioInputNode, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_media_source_completed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def outgoing_connections(self) -> typing.Optional[windows_foundation_collections.IVectorView[AudioGraphConnection]]: ...
    @_property
    def emitter(self) -> typing.Optional[AudioNodeEmitter]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...
    @_property
    def start_time(self) -> typing.Optional[typing.Optional[datetime.timedelta]]: ...
    @start_time.setter
    def start_time(self, value: typing.Optional[typing.Optional[datetime.timedelta]]) -> None: ...
    @_property
    def playback_speed_factor(self) -> winrt.system.Double: ...
    @playback_speed_factor.setter
    def playback_speed_factor(self, value: winrt.system.Double) -> None: ...
    @_property
    def loop_count(self) -> typing.Optional[typing.Optional[winrt.system.Int32]]: ...
    @loop_count.setter
    def loop_count(self, value: typing.Optional[typing.Optional[winrt.system.Int32]]) -> None: ...
    @_property
    def end_time(self) -> typing.Optional[typing.Optional[datetime.timedelta]]: ...
    @end_time.setter
    def end_time(self, value: typing.Optional[typing.Optional[datetime.timedelta]]) -> None: ...
    @_property
    def duration(self) -> datetime.timedelta: ...
    @_property
    def media_source(self) -> typing.Optional[windows_media_core.MediaSource]: ...
    @_property
    def position(self) -> datetime.timedelta: ...

@typing.final
class ReverbEffectDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ReverbEffectDefinition: ...
    def __new__(cls: typing.Type[ReverbEffectDefinition], audio_graph: typing.Optional[AudioGraph]) -> ReverbEffectDefinition: ...
    @_property
    def high_e_q_gain(self) -> winrt.system.UInt8: ...
    @high_e_q_gain.setter
    def high_e_q_gain(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def high_e_q_cutoff(self) -> winrt.system.UInt8: ...
    @high_e_q_cutoff.setter
    def high_e_q_cutoff(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def disable_late_field(self) -> bool: ...
    @disable_late_field.setter
    def disable_late_field(self, value: bool) -> None: ...
    @_property
    def density(self) -> winrt.system.Double: ...
    @density.setter
    def density(self, value: winrt.system.Double) -> None: ...
    @_property
    def position_right(self) -> winrt.system.UInt8: ...
    @position_right.setter
    def position_right(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def decay_time(self) -> winrt.system.Double: ...
    @decay_time.setter
    def decay_time(self, value: winrt.system.Double) -> None: ...
    @_property
    def late_diffusion(self) -> winrt.system.UInt8: ...
    @late_diffusion.setter
    def late_diffusion(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def position_matrix_right(self) -> winrt.system.UInt8: ...
    @position_matrix_right.setter
    def position_matrix_right(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def position_matrix_left(self) -> winrt.system.UInt8: ...
    @position_matrix_left.setter
    def position_matrix_left(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def position_left(self) -> winrt.system.UInt8: ...
    @position_left.setter
    def position_left(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def low_e_q_gain(self) -> winrt.system.UInt8: ...
    @low_e_q_gain.setter
    def low_e_q_gain(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def low_e_q_cutoff(self) -> winrt.system.UInt8: ...
    @low_e_q_cutoff.setter
    def low_e_q_cutoff(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def room_filter_freq(self) -> winrt.system.Double: ...
    @room_filter_freq.setter
    def room_filter_freq(self, value: winrt.system.Double) -> None: ...
    @_property
    def reverb_gain(self) -> winrt.system.Double: ...
    @reverb_gain.setter
    def reverb_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def reverb_delay(self) -> winrt.system.UInt8: ...
    @reverb_delay.setter
    def reverb_delay(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def reflections_gain(self) -> winrt.system.Double: ...
    @reflections_gain.setter
    def reflections_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def reflections_delay(self) -> winrt.system.UInt32: ...
    @reflections_delay.setter
    def reflections_delay(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def rear_delay(self) -> winrt.system.UInt8: ...
    @rear_delay.setter
    def rear_delay(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def wet_dry_mix(self) -> winrt.system.Double: ...
    @wet_dry_mix.setter
    def wet_dry_mix(self, value: winrt.system.Double) -> None: ...
    @_property
    def early_diffusion(self) -> winrt.system.UInt8: ...
    @early_diffusion.setter
    def early_diffusion(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def room_size(self) -> winrt.system.Double: ...
    @room_size.setter
    def room_size(self, value: winrt.system.Double) -> None: ...
    @_property
    def room_filter_main(self) -> winrt.system.Double: ...
    @room_filter_main.setter
    def room_filter_main(self, value: winrt.system.Double) -> None: ...
    @_property
    def room_filter_h_f(self) -> winrt.system.Double: ...
    @room_filter_h_f.setter
    def room_filter_h_f(self, value: winrt.system.Double) -> None: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

@typing.final
class SetDefaultSpatialAudioFormatResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SetDefaultSpatialAudioFormatResult: ...
    @_property
    def status(self) -> SetDefaultSpatialAudioFormatStatus: ...

@typing.final
class SpatialAudioDeviceConfiguration_Static(type):
    def get_for_device_id(cls, device_id: str, /) -> typing.Optional[SpatialAudioDeviceConfiguration]: ...

@typing.final
class SpatialAudioDeviceConfiguration(winrt.system.Object, metaclass=SpatialAudioDeviceConfiguration_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SpatialAudioDeviceConfiguration: ...
    def is_spatial_audio_format_supported(self, subtype: str, /) -> bool: ...
    def set_default_spatial_audio_format_async(self, subtype: str, /) -> windows_foundation.IAsyncOperation[SetDefaultSpatialAudioFormatResult]: ...
    def add_configuration_changed(self, handler: windows_foundation.TypedEventHandler[SpatialAudioDeviceConfiguration, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_configuration_changed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def active_spatial_audio_format(self) -> str: ...
    @_property
    def default_spatial_audio_format(self) -> str: ...
    @_property
    def device_id(self) -> str: ...
    @_property
    def is_spatial_audio_supported(self) -> bool: ...

@typing.final
class SpatialAudioFormatConfiguration_Static(type):
    def get_default(cls) -> typing.Optional[SpatialAudioFormatConfiguration]: ...

@typing.final
class SpatialAudioFormatConfiguration(winrt.system.Object, metaclass=SpatialAudioFormatConfiguration_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SpatialAudioFormatConfiguration: ...
    def report_configuration_changed_async(self, subtype: str, /) -> windows_foundation.IAsyncAction: ...
    def report_license_changed_async(self, subtype: str, /) -> windows_foundation.IAsyncAction: ...
    @_property
    def mixed_reality_exclusive_mode_policy(self) -> MixedRealitySpatialAudioFormatPolicy: ...
    @mixed_reality_exclusive_mode_policy.setter
    def mixed_reality_exclusive_mode_policy(self, value: MixedRealitySpatialAudioFormatPolicy) -> None: ...

@typing.final
class SpatialAudioFormatSubtype_Static(type):
    @_property
    def d_t_s_headphone_x(cls) -> str: ...
    @_property
    def d_t_s_x_ultra(cls) -> str: ...
    @_property
    def dolby_atmos_for_headphones(cls) -> str: ...
    @_property
    def dolby_atmos_for_home_theater(cls) -> str: ...
    @_property
    def dolby_atmos_for_speakers(cls) -> str: ...
    @_property
    def windows_sonic(cls) -> str: ...
    @_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(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IAudioInputNode: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], gain: winrt.system.Double, /) -> None: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def remove_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def outgoing_connections(self) -> typing.Optional[windows_foundation_collections.IVectorView[AudioGraphConnection]]: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...

@typing.final
class IAudioInputNode2(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IAudioInputNode2: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    @typing.overload
    def add_outgoing_connection(self, destination: typing.Optional[IAudioNode], gain: winrt.system.Double, /) -> None: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def remove_outgoing_connection(self, destination: typing.Optional[IAudioNode], /) -> None: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def emitter(self) -> typing.Optional[AudioNodeEmitter]: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...
    @_property
    def outgoing_connections(self) -> typing.Optional[windows_foundation_collections.IVectorView[AudioGraphConnection]]: ...

@typing.final
class IAudioNode(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IAudioNode: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...

@typing.final
class IAudioNodeWithListener(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IAudioNodeWithListener: ...
    def close(self) -> None: ...
    def disable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[windows_media_effects.IAudioEffectDefinition], /) -> None: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def listener(self) -> typing.Optional[AudioNodeListener]: ...
    @listener.setter
    def listener(self, value: typing.Optional[AudioNodeListener]) -> None: ...
    @_property
    def consume_input(self) -> bool: ...
    @consume_input.setter
    def consume_input(self, value: bool) -> None: ...
    @_property
    def effect_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[windows_media_effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[windows_media_mediaproperties.AudioEncodingProperties]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...

