# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.0.0-beta.2

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
import winrt.windows.foundation
import winrt.windows.foundation.collections
import winrt.windows.foundation.numerics
import winrt.windows.media
import winrt.windows.media.capture
import winrt.windows.media.core
import winrt.windows.media.devices
import winrt.windows.media.effects
import winrt.windows.media.mediaproperties
import winrt.windows.media.render
import winrt.windows.media.transcoding
import winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.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[winrt.windows.devices.enumeration.DeviceInformation]: ...
    @_property
    def outgoing_connections(self) -> typing.Optional[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def device(self) -> typing.Optional[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.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: winrt.windows.foundation.TypedEventHandler[AudioFileInputNode, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_file_completed(self, token: winrt.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[winrt.windows.storage.StorageFile]: ...
    @_property
    def duration(self) -> datetime.timedelta: ...
    @_property
    def outgoing_connections(self) -> typing.Optional[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def finalize_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.media.transcoding.TranscodeFailureReason]: ...
    def reset(self) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    @_property
    def file(self) -> typing.Optional[winrt.windows.storage.IStorageFile]: ...
    @_property
    def file_encoding_profile(self) -> typing.Optional[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.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[winrt.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[winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def discard_queued_frames(self) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.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: winrt.windows.foundation.TypedEventHandler[AudioFrameInputNode, AudioFrameCompletedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_audio_frame_completed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_quantum_started(self, handler: winrt.windows.foundation.TypedEventHandler[AudioFrameInputNode, FrameInputNodeQuantumStartedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_quantum_started(self, token: winrt.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[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def get_frame(self) -> typing.Optional[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.windows.media.mediaproperties.AudioEncodingProperties]: ...

@typing.final
class AudioGraph_Static(type):
    def create_async(cls, settings: typing.Optional[AudioGraphSettings], /) -> winrt.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: winrt.windows.media.capture.MediaCategory, /) -> winrt.windows.foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    @typing.overload
    def create_device_input_node_async(self, category: winrt.windows.media.capture.MediaCategory, encoding_properties: typing.Optional[winrt.windows.media.mediaproperties.AudioEncodingProperties], /) -> winrt.windows.foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    @typing.overload
    def create_device_input_node_async(self, category: winrt.windows.media.capture.MediaCategory, encoding_properties: typing.Optional[winrt.windows.media.mediaproperties.AudioEncodingProperties], device: typing.Optional[winrt.windows.devices.enumeration.DeviceInformation], /) -> winrt.windows.foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    @typing.overload
    def create_device_input_node_async(self, category: winrt.windows.media.capture.MediaCategory, encoding_properties: typing.Optional[winrt.windows.media.mediaproperties.AudioEncodingProperties], device: typing.Optional[winrt.windows.devices.enumeration.DeviceInformation], emitter: typing.Optional[AudioNodeEmitter], /) -> winrt.windows.foundation.IAsyncOperation[CreateAudioDeviceInputNodeResult]: ...
    def create_device_output_node_async(self) -> winrt.windows.foundation.IAsyncOperation[CreateAudioDeviceOutputNodeResult]: ...
    @typing.overload
    def create_file_input_node_async(self, file: typing.Optional[winrt.windows.storage.IStorageFile], /) -> winrt.windows.foundation.IAsyncOperation[CreateAudioFileInputNodeResult]: ...
    @typing.overload
    def create_file_input_node_async(self, file: typing.Optional[winrt.windows.storage.IStorageFile], emitter: typing.Optional[AudioNodeEmitter], /) -> winrt.windows.foundation.IAsyncOperation[CreateAudioFileInputNodeResult]: ...
    @typing.overload
    def create_file_output_node_async(self, file: typing.Optional[winrt.windows.storage.IStorageFile], /) -> winrt.windows.foundation.IAsyncOperation[CreateAudioFileOutputNodeResult]: ...
    @typing.overload
    def create_file_output_node_async(self, file: typing.Optional[winrt.windows.storage.IStorageFile], file_encoding_profile: typing.Optional[winrt.windows.media.mediaproperties.MediaEncodingProfile], /) -> winrt.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[winrt.windows.media.mediaproperties.AudioEncodingProperties], /) -> typing.Optional[AudioFrameInputNode]: ...
    @typing.overload
    def create_frame_input_node(self, encoding_properties: typing.Optional[winrt.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[winrt.windows.media.mediaproperties.AudioEncodingProperties], /) -> typing.Optional[AudioFrameOutputNode]: ...
    @typing.overload
    def create_media_source_audio_input_node_async(self, media_source: typing.Optional[winrt.windows.media.core.MediaSource], /) -> winrt.windows.foundation.IAsyncOperation[CreateMediaSourceAudioInputNodeResult]: ...
    @typing.overload
    def create_media_source_audio_input_node_async(self, media_source: typing.Optional[winrt.windows.media.core.MediaSource], emitter: typing.Optional[AudioNodeEmitter], /) -> winrt.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[winrt.windows.media.mediaproperties.AudioEncodingProperties], /) -> typing.Optional[AudioSubmixNode]: ...
    @typing.overload
    def create_submix_node(self, encoding_properties: typing.Optional[winrt.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: winrt.windows.foundation.TypedEventHandler[AudioGraph, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_quantum_processed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_quantum_started(self, handler: winrt.windows.foundation.TypedEventHandler[AudioGraph, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_quantum_started(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_unrecoverable_error_occurred(self, handler: winrt.windows.foundation.TypedEventHandler[AudioGraph, AudioGraphUnrecoverableErrorOccurredEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_unrecoverable_error_occurred(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def completed_quantum_count(self) -> winrt.system.UInt64: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.windows.media.mediaproperties.AudioEncodingProperties]: ...
    @_property
    def latency_in_samples(self) -> winrt.system.Int32: ...
    @_property
    def primary_render_device(self) -> typing.Optional[winrt.windows.devices.enumeration.DeviceInformation]: ...
    @_property
    def render_device_audio_processing(self) -> winrt.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: winrt.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[winrt.windows.devices.enumeration.DeviceInformation]: ...
    @primary_render_device.setter
    def primary_render_device(self, value: typing.Optional[winrt.windows.devices.enumeration.DeviceInformation]) -> None: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.windows.media.mediaproperties.AudioEncodingProperties]: ...
    @encoding_properties.setter
    def encoding_properties(self, value: typing.Optional[winrt.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) -> winrt.windows.media.AudioProcessing: ...
    @desired_render_device_audio_processing.setter
    def desired_render_device_audio_processing(self, value: winrt.windows.media.AudioProcessing) -> None: ...
    @_property
    def audio_render_category(self) -> winrt.windows.media.render.AudioRenderCategory: ...
    @audio_render_category.setter
    def audio_render_category(self, value: winrt.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) -> winrt.windows.foundation.numerics.Vector3: ...
    @position.setter
    def position(self, value: winrt.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) -> winrt.windows.foundation.numerics.Vector3: ...
    @doppler_velocity.setter
    def doppler_velocity(self, value: winrt.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) -> winrt.windows.foundation.numerics.Vector3: ...
    @direction.setter
    def direction(self, value: winrt.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) -> winrt.windows.foundation.numerics.Vector3: ...
    @position.setter
    def position(self, value: winrt.windows.foundation.numerics.Vector3) -> None: ...
    @_property
    def orientation(self) -> winrt.windows.foundation.numerics.Quaternion: ...
    @orientation.setter
    def orientation(self, value: winrt.windows.foundation.numerics.Quaternion) -> None: ...
    @_property
    def doppler_velocity(self) -> winrt.windows.foundation.numerics.Vector3: ...
    @doppler_velocity.setter
    def doppler_velocity(self, value: winrt.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) -> winrt.windows.foundation.IAsyncOperation[AudioPlaybackConnectionOpenResult]: ...
    def start(self) -> None: ...
    def start_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    def add_state_changed(self, handler: winrt.windows.foundation.TypedEventHandler[AudioPlaybackConnection, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_state_changed(self, token: winrt.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) -> winrt.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: winrt.windows.media.capture.MediaCategory, /) -> typing.Optional[AudioStateMonitor]: ...
    @typing.overload
    def create_for_capture_monitoring(cls, category: winrt.windows.media.capture.MediaCategory, role: winrt.windows.media.devices.AudioDeviceRole, /) -> typing.Optional[AudioStateMonitor]: ...
    def create_for_capture_monitoring_with_category_and_device_id(cls, category: winrt.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: winrt.windows.media.render.AudioRenderCategory, /) -> typing.Optional[AudioStateMonitor]: ...
    @typing.overload
    def create_for_render_monitoring(cls, category: winrt.windows.media.render.AudioRenderCategory, role: winrt.windows.media.devices.AudioDeviceRole, /) -> typing.Optional[AudioStateMonitor]: ...
    def create_for_render_monitoring_with_category_and_device_id(cls, category: winrt.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: winrt.windows.foundation.TypedEventHandler[AudioStateMonitor, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_sound_level_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def sound_level(self) -> winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.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[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.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) -> winrt.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) -> winrt.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) -> winrt.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) -> winrt.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) -> winrt.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) -> winrt.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[winrt.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[winrt.windows.foundation.collections.IVectorView[EqualizerBand]]: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[winrt.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[winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.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: winrt.windows.foundation.TypedEventHandler[MediaSourceAudioInputNode, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_media_source_completed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def outgoing_connections(self) -> typing.Optional[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.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[winrt.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[winrt.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, /) -> winrt.windows.foundation.IAsyncOperation[SetDefaultSpatialAudioFormatResult]: ...
    def add_configuration_changed(self, handler: winrt.windows.foundation.TypedEventHandler[SpatialAudioDeviceConfiguration, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_configuration_changed(self, token: winrt.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, /) -> winrt.windows.foundation.IAsyncAction: ...
    def report_license_changed_async(self, subtype: str, /) -> winrt.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):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SpatialAudioFormatSubtype: ...

@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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.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[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.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[winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.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[winrt.windows.media.effects.IAudioEffectDefinition], /) -> None: ...
    def enable_effects_by_definition(self, definition: typing.Optional[winrt.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[winrt.windows.foundation.collections.IVector[winrt.windows.media.effects.IAudioEffectDefinition]]: ...
    @_property
    def encoding_properties(self) -> typing.Optional[winrt.windows.media.mediaproperties.AudioEncodingProperties]: ...
    @_property
    def outgoing_gain(self) -> winrt.system.Double: ...
    @outgoing_gain.setter
    def outgoing_gain(self, value: winrt.system.Double) -> None: ...

