// @generated by tools/generate_api_shims.py; do not edit by hand.
#![allow(clippy::missing_errors_doc)]
#![allow(clippy::must_use_candidate)]
#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]

/// C# type: `T:LibreMetaverse.Voice.WebRTC.IVoiceLogger`.
pub trait IVoiceLogger {
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.IVoiceLogger.Debug(System.String,LibreMetaverse.GridClient)`.
    fn debug(
        &self,
        message: String,
        client: Option<libremetaverse::GridClient>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.IVoiceLogger.Debug(System.String,LibreMetaverse.GridClient)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.IVoiceLogger.Error(System.String,LibreMetaverse.GridClient)`.
    fn error(
        &self,
        message: String,
        client: Option<libremetaverse::GridClient>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.IVoiceLogger.Error(System.String,LibreMetaverse.GridClient)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.IVoiceLogger.Info(System.String,LibreMetaverse.GridClient)`.
    fn info(
        &self,
        message: String,
        client: Option<libremetaverse::GridClient>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.IVoiceLogger.Info(System.String,LibreMetaverse.GridClient)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.IVoiceLogger.Log(System.String,Microsoft.Extensions.Logging.LogLevel,LibreMetaverse.GridClient)`.
    fn log(
        &self,
        message: String,
        level: libremetaverse::logging::LogLevel,
        client: Option<libremetaverse::GridClient>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.IVoiceLogger.Log(System.String,Microsoft.Extensions.Logging.LogLevel,LibreMetaverse.GridClient)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.IVoiceLogger.Warn(System.String,LibreMetaverse.GridClient)`.
    fn warn(
        &self,
        message: String,
        client: Option<libremetaverse::GridClient>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.IVoiceLogger.Warn(System.String,LibreMetaverse.GridClient)",
        )
    }
}

/// C# type: `T:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger`.
pub struct LibreMetaverseVoiceLogger;
impl LibreMetaverseVoiceLogger {
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.#ctor`.
    pub fn new() -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.#ctor",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.Debug(System.String,LibreMetaverse.GridClient)`.
    pub fn debug(
        &self,
        message: String,
        client: Option<libremetaverse::GridClient>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.Debug(System.String,LibreMetaverse.GridClient)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.Error(System.String,LibreMetaverse.GridClient)`.
    pub fn error(
        &self,
        message: String,
        client: Option<libremetaverse::GridClient>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.Error(System.String,LibreMetaverse.GridClient)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.Info(System.String,LibreMetaverse.GridClient)`.
    pub fn info(
        &self,
        message: String,
        client: Option<libremetaverse::GridClient>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.Info(System.String,LibreMetaverse.GridClient)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.Log(System.String,Microsoft.Extensions.Logging.LogLevel,LibreMetaverse.GridClient)`.
    pub fn log(
        &self,
        message: String,
        level: libremetaverse::logging::LogLevel,
        client: Option<libremetaverse::GridClient>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.Log(System.String,Microsoft.Extensions.Logging.LogLevel,LibreMetaverse.GridClient)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.Warn(System.String,LibreMetaverse.GridClient)`.
    pub fn warn(
        &self,
        message: String,
        client: Option<libremetaverse::GridClient>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.Warn(System.String,LibreMetaverse.GridClient)",
        )
    }
}
impl libremetaverse_voice_webrtc::IVoiceLogger for LibreMetaverseVoiceLogger {}

/// C# type: `T:LibreMetaverse.Voice.WebRTC.PeerManager`.
pub struct PeerManager;
impl PeerManager {
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.PeerManager.GainMapReceived`.
    pub fn subscribe_gain_map_received(
        &self,
        handler: Option<
            Box<dyn Fn(std::collections::HashMap<libremetaverse_types::UUID, i32>) + Send + Sync>,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.PeerManager.GainMapReceived"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.PeerManager.MuteMapReceived`.
    pub fn subscribe_mute_map_received(
        &self,
        handler: Option<
            Box<dyn Fn(std::collections::HashMap<libremetaverse_types::UUID, bool>) + Send + Sync>,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.PeerManager.MuteMapReceived"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.PeerManager.PeerAudioUpdated`.
    pub fn subscribe_peer_audio_updated(
        &self,
        handler: Option<
            Box<
                dyn Fn(
                        libremetaverse_types::UUID,
                        libremetaverse_voice_webrtc::VoiceSessionPeerAudioState,
                    ) + Send
                    + Sync,
            >,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.PeerManager.PeerAudioUpdated"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.PeerManager.PeerJoined`.
    pub fn subscribe_peer_joined(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.PeerManager.PeerJoined"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.PeerManager.PeerLeft`.
    pub fn subscribe_peer_left(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.PeerManager.PeerLeft"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.PeerManager.PeerListUpdated`.
    pub fn subscribe_peer_list_updated(
        &self,
        handler: Option<Box<dyn Fn(Vec<libremetaverse_types::UUID>) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.PeerManager.PeerListUpdated"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.PeerManager.PeerPositionUpdated`.
    pub fn subscribe_peer_position_updated(
        &self,
        handler: Option<
            Box<
                dyn Fn(libremetaverse_types::UUID, libremetaverse_structured_data::OSDMap)
                    + Send
                    + Sync,
            >,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.PeerManager.PeerPositionUpdated"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.PeerManager.PongReceived`.
    pub fn subscribe_pong_received(
        &self,
        handler: Option<Box<dyn Fn() + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.PeerManager.PongReceived"
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.PeerManager.#ctor(LibreMetaverse.AudioDevice,LibreMetaverse.GridClient,LibreMetaverse.Voice.WebRTC.IVoiceLogger)`.
    pub fn new(
        audio_device: libremetaverse_voice_webrtc::libre_metaverse::AudioDevice,
        client: libremetaverse::GridClient,
        log: Box<dyn libremetaverse_voice_webrtc::IVoiceLogger>,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.PeerManager.#ctor(LibreMetaverse.AudioDevice,LibreMetaverse.GridClient,LibreMetaverse.Voice.WebRTC.IVoiceLogger)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.PeerManager.ClearAllPeers`.
    pub fn clear_all_peers(&self) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.PeerManager.ClearAllPeers",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.PeerManager.GetKnownPeers`.
    pub fn get_known_peers(&self) -> Result<Vec<libremetaverse_types::UUID>, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.PeerManager.GetKnownPeers",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.PeerManager.ProcessJsonElement(System.Text.Json.JsonElement,System.Func{System.String,System.Boolean},LibreMetaverse.UUID)`.
    pub fn process_json_element(
        &self,
        root: libremetaverse_voice_webrtc::signaling::JsonValue,
        send_string: Box<dyn Fn(String) -> bool + Send + Sync>,
        session_id: libremetaverse_types::UUID,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.PeerManager.ProcessJsonElement(System.Text.Json.JsonElement,System.Func{System.String,System.Boolean},LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.PeerManager.ProcessOSDMap(LibreMetaverse.StructuredData.OSDMap,System.Func{System.String,System.Boolean},LibreMetaverse.UUID)`.
    pub fn process_osd_map(
        &self,
        map: libremetaverse_structured_data::OSDMap,
        send_string: Box<dyn Fn(String) -> bool + Send + Sync>,
        session_id: libremetaverse_types::UUID,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.PeerManager.ProcessOSDMap(LibreMetaverse.StructuredData.OSDMap,System.Func{System.String,System.Boolean},LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.PeerManager.ReapStalePeers(System.TimeSpan)`.
    pub fn reap_stale_peers(&self, max_age: std::time::Duration) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.PeerManager.ReapStalePeers(System.TimeSpan)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.PeerManager.RemovePeer(LibreMetaverse.UUID)`.
    pub fn remove_peer(&self, peer_id: libremetaverse_types::UUID) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.PeerManager.RemovePeer(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.PeerManager.TryGetPeerForSsrc(System.UInt32,LibreMetaverse.UUID@)`.
    pub fn try_get_peer_for_ssrc(
        &self,
        ssrc: u32,
        peer_id: &mut libremetaverse_types::UUID,
    ) -> bool {
        libremetaverse_types::unimplemented_api!(
            "M:LibreMetaverse.Voice.WebRTC.PeerManager.TryGetPeerForSsrc(System.UInt32,LibreMetaverse.UUID@)"
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.PeerManager.TryGetSsrc(LibreMetaverse.UUID,System.UInt32@)`.
    pub fn try_get_ssrc(&self, peer_id: libremetaverse_types::UUID, ssrc: &mut u32) -> bool {
        libremetaverse_types::unimplemented_api!(
            "M:LibreMetaverse.Voice.WebRTC.PeerManager.TryGetSsrc(LibreMetaverse.UUID,System.UInt32@)"
        )
    }
}

/// C# type: `T:LibreMetaverse.Voice.WebRTC.VoiceException`.
pub struct VoiceException;
impl VoiceException {
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceException.#ctor(System.String)`.
    pub fn new_with_string(msg: String) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceException.#ctor(System.String)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceException.#ctor(System.String,System.Boolean)`.
    pub fn new_with_string_boolean(
        msg: String,
        is_definitive_rejection: bool,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceException.#ctor(System.String,System.Boolean)",
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceException.IsDefinitiveRejection`.
    pub fn is_definitive_rejection(&self) -> bool {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceException.IsDefinitiveRejection"
        )
    }
}

/// C# type: `T:LibreMetaverse.Voice.WebRTC.VoiceManager`.
pub struct VoiceManager {
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceManager.AudioDevice`.
    pub audio_device: libremetaverse_voice_webrtc::libre_metaverse::AudioDevice,
}
impl VoiceManager {
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.GainMapReceived`.
    pub fn subscribe_gain_map_received(
        &self,
        handler: Option<
            Box<dyn Fn(std::collections::HashMap<libremetaverse_types::UUID, i32>) + Send + Sync>,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.GainMapReceived"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.MuteMapReceived`.
    pub fn subscribe_mute_map_received(
        &self,
        handler: Option<
            Box<dyn Fn(std::collections::HashMap<libremetaverse_types::UUID, bool>) + Send + Sync>,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.MuteMapReceived"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnGroupVoiceJoinFailed`.
    pub fn subscribe_on_group_voice_join_failed(
        &self,
        handler: Option<
            Box<
                dyn Fn(libremetaverse_types::UUID, libremetaverse_types::compat::ExternalError)
                    + Send
                    + Sync,
            >,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnGroupVoiceJoinFailed"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnGroupVoiceJoined`.
    pub fn subscribe_on_group_voice_joined(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnGroupVoiceJoined"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnGroupVoiceLeft`.
    pub fn subscribe_on_group_voice_left(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnGroupVoiceLeft"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallAccepted`.
    pub fn subscribe_on_p2_p_call_accepted(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallAccepted"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallDeclined`.
    pub fn subscribe_on_p2_p_call_declined(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallDeclined"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallEnded`.
    pub fn subscribe_on_p2_p_call_ended(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallEnded"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallFailed`.
    pub fn subscribe_on_p2_p_call_failed(
        &self,
        handler: Option<
            Box<
                dyn Fn(libremetaverse_types::UUID, libremetaverse_types::compat::ExternalError)
                    + Send
                    + Sync,
            >,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallFailed"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallIncoming`.
    pub fn subscribe_on_p2_p_call_incoming(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallIncoming"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallStarted`.
    pub fn subscribe_on_p2_p_call_started(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnP2PCallStarted"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnParcelVoiceInfo`.
    pub fn subscribe_on_parcel_voice_info(
        &self,
        handler: Option<Box<dyn Fn(String, i32, String) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnParcelVoiceInfo"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnRegionChangeDetected`.
    pub fn subscribe_on_region_change_detected(
        &self,
        handler: Option<Box<dyn Fn() + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnRegionChangeDetected"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnRegionTransitionCompleted`.
    pub fn subscribe_on_region_transition_completed(
        &self,
        handler: Option<Box<dyn Fn() + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnRegionTransitionCompleted"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnRegionTransitionFailed`.
    pub fn subscribe_on_region_transition_failed(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::compat::ExternalError) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnRegionTransitionFailed"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnReprovisionFailed`.
    pub fn subscribe_on_reprovision_failed(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::compat::ExternalError) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnReprovisionFailed"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnReprovisionSucceeded`.
    pub fn subscribe_on_reprovision_succeeded(
        &self,
        handler: Option<Box<dyn Fn() + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnReprovisionSucceeded"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnVoicePermissionChanged`.
    pub fn subscribe_on_voice_permission_changed(
        &self,
        handler: Option<Box<dyn Fn(bool) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.OnVoicePermissionChanged"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerAudioUpdated`.
    pub fn subscribe_peer_audio_updated(
        &self,
        handler: Option<
            Box<
                dyn Fn(
                        libremetaverse_types::UUID,
                        libremetaverse_voice_webrtc::VoiceSessionPeerAudioState,
                    ) + Send
                    + Sync,
            >,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerAudioUpdated"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerConnectionClosed`.
    pub fn subscribe_peer_connection_closed(
        &self,
        handler: Option<Box<dyn Fn() + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerConnectionClosed"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerConnectionReady`.
    pub fn subscribe_peer_connection_ready(
        &self,
        handler: Option<Box<dyn Fn() + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerConnectionReady"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerJoined`.
    pub fn subscribe_peer_joined(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerJoined"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerLeft`.
    pub fn subscribe_peer_left(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerLeft"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerListUpdated`.
    pub fn subscribe_peer_list_updated(
        &self,
        handler: Option<Box<dyn Fn(Vec<libremetaverse_types::UUID>) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerListUpdated"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerPositionUpdated`.
    pub fn subscribe_peer_position_updated(
        &self,
        handler: Option<
            Box<
                dyn Fn(libremetaverse_types::UUID, libremetaverse_structured_data::OSDMap)
                    + Send
                    + Sync,
            >,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerPositionUpdated"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerPositionUpdatedTyped`.
    pub fn subscribe_peer_position_updated_typed(
        &self,
        handler: Option<
            Box<
                dyn Fn(
                        libremetaverse_types::UUID,
                        libremetaverse_voice_webrtc::VoiceSessionAvatarPosition,
                    ) + Send
                    + Sync,
            >,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceManager.PeerPositionUpdatedTyped"
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.#ctor(LibreMetaverse.GridClient,LibreMetaverse.Voice.WebRTC.IVoiceLogger)`.
    pub fn new(
        client: libremetaverse::GridClient,
        logger: Option<Box<dyn libremetaverse_voice_webrtc::IVoiceLogger>>,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.#ctor(LibreMetaverse.GridClient,LibreMetaverse.Voice.WebRTC.IVoiceLogger)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.AcceptIncomingP2PCallAsync(LibreMetaverse.UUID)`.
    pub async fn accept_incoming_p2_p_call(
        &self,
        caller_id: libremetaverse_types::UUID,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.AcceptIncomingP2PCallAsync(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.AcceptP2PCallAsync(LibreMetaverse.UUID,System.String,System.String)`.
    pub async fn accept_p2_p_call(
        &self,
        agent_id: libremetaverse_types::UUID,
        channel_uri: String,
        credentials: String,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.AcceptP2PCallAsync(LibreMetaverse.UUID,System.String,System.String)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.ConnectPrimaryRegionAsync`.
    pub async fn connect_primary_region(&self) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.ConnectPrimaryRegionAsync",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.DeclineIncomingP2PCall(LibreMetaverse.UUID)`.
    pub fn decline_incoming_p2_p_call(
        &self,
        caller_id: libremetaverse_types::UUID,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.DeclineIncomingP2PCall(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.DeclineP2PCall(LibreMetaverse.UUID)`.
    pub fn decline_p2_p_call(
        &self,
        agent_id: libremetaverse_types::UUID,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.DeclineP2PCall(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.Disconnect`.
    pub fn disconnect(&self) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.Disconnect",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.EndP2PCallAsync(LibreMetaverse.UUID)`.
    pub async fn end_p2_p_call(
        &self,
        agent_id: libremetaverse_types::UUID,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.EndP2PCallAsync(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetActiveGroupVoiceSessions`.
    pub fn get_active_group_voice_sessions(
        &self,
    ) -> Result<Vec<libremetaverse_types::UUID>, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetActiveGroupVoiceSessions",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetActiveP2PCalls`.
    pub fn get_active_p2_p_calls(&self) -> Result<Vec<libremetaverse_types::UUID>, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetActiveP2PCalls",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetAllKnownPeers`.
    pub fn get_all_known_peers(&self) -> Result<Vec<libremetaverse_types::UUID>, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetAllKnownPeers",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetGroupVoicePeers(LibreMetaverse.UUID)`.
    pub fn get_group_voice_peers(
        &self,
        group_id: libremetaverse_types::UUID,
    ) -> Result<Vec<libremetaverse_types::UUID>, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetGroupVoicePeers(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetKnownPeers`.
    pub fn get_known_peers(&self) -> Result<Vec<libremetaverse_types::UUID>, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetKnownPeers",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetP2PCallInfo(LibreMetaverse.UUID)`.
    pub fn get_p2_p_call_info(
        &self,
        agent_id: libremetaverse_types::UUID,
    ) -> Result<(bool, bool, Option<Option<std::time::SystemTime>>), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.GetP2PCallInfo(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.IsInGroupVoice(LibreMetaverse.UUID)`.
    pub fn is_in_group_voice(
        &self,
        group_id: libremetaverse_types::UUID,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.IsInGroupVoice(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.IsInP2PCall(LibreMetaverse.UUID)`.
    pub fn is_in_p2_p_call(
        &self,
        agent_id: libremetaverse_types::UUID,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.IsInP2PCall(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.IsVoiceAllowedAt(LibreMetaverse.GridClient)`.
    pub fn is_voice_allowed_at(client: libremetaverse::GridClient) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.IsVoiceAllowedAt(LibreMetaverse.GridClient)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.JoinConferenceVoiceAsync(LibreMetaverse.UUID)`.
    pub async fn join_conference_voice(
        &self,
        session_id: libremetaverse_types::UUID,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.JoinConferenceVoiceAsync(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.JoinGroupVoiceAsync(LibreMetaverse.UUID)`.
    pub async fn join_group_voice(
        &self,
        group_id: libremetaverse_types::UUID,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.JoinGroupVoiceAsync(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.LeaveConferenceVoiceAsync(LibreMetaverse.UUID)`.
    pub async fn leave_conference_voice(
        &self,
        session_id: libremetaverse_types::UUID,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.LeaveConferenceVoiceAsync(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.LeaveGroupVoiceAsync(LibreMetaverse.UUID)`.
    pub async fn leave_group_voice(
        &self,
        group_id: libremetaverse_types::UUID,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.LeaveGroupVoiceAsync(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.PlayRawFile(System.String,System.Int32,System.Int32,System.Boolean)`.
    pub fn play_raw_file(
        &self,
        path: String,
        channels: Option<i32>,
        sample_rate: Option<i32>,
        loop_: Option<bool>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.PlayRawFile(System.String,System.Int32,System.Int32,System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.PlayWavAsMic(System.String,System.Boolean)`.
    pub fn play_wav_as_mic(&self, path: String, loop_: Option<bool>) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.PlayWavAsMic(System.String,System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.RequestParcelVoiceInfoAsync`.
    pub async fn request_parcel_voice_info(&self) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.RequestParcelVoiceInfoAsync",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.SendDataChannelMessage(System.String)`.
    pub fn send_data_channel_message(&self, message: String) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.SendDataChannelMessage(System.String)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetGroupVoicePeerGain(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Int32)`.
    pub fn set_group_voice_peer_gain(
        &self,
        group_id: libremetaverse_types::UUID,
        peer_id: libremetaverse_types::UUID,
        gain: i32,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetGroupVoicePeerGain(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Int32)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetGroupVoicePeerMute(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean)`.
    pub fn set_group_voice_peer_mute(
        &self,
        group_id: libremetaverse_types::UUID,
        peer_id: libremetaverse_types::UUID,
        mute: bool,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetGroupVoicePeerMute(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetP2PCallGain(LibreMetaverse.UUID,System.Int32)`.
    pub fn set_p2_p_call_gain(
        &self,
        agent_id: libremetaverse_types::UUID,
        gain: i32,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetP2PCallGain(LibreMetaverse.UUID,System.Int32)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetP2PCallMute(LibreMetaverse.UUID,System.Boolean)`.
    pub fn set_p2_p_call_mute(
        &self,
        agent_id: libremetaverse_types::UUID,
        mute: bool,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetP2PCallMute(LibreMetaverse.UUID,System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetPeerGain(LibreMetaverse.UUID,System.Int32)`.
    pub fn set_peer_gain(
        &self,
        peer_id: libremetaverse_types::UUID,
        gain: i32,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetPeerGain(LibreMetaverse.UUID,System.Int32)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetPeerMute(LibreMetaverse.UUID,System.Boolean)`.
    pub fn set_peer_mute(
        &self,
        peer_id: libremetaverse_types::UUID,
        mute: bool,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.SetPeerMute(LibreMetaverse.UUID,System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.StartP2PCallAsync(LibreMetaverse.UUID)`.
    pub async fn start_p2_p_call(
        &self,
        agent_id: libremetaverse_types::UUID,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.StartP2PCallAsync(LibreMetaverse.UUID)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.StopRawFile`.
    pub fn stop_raw_file(&self) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.StopRawFile",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceManager.StopWavAsMic`.
    pub fn stop_wav_as_mic(&self) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceManager.StopWavAsMic",
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceManager.ChannelCredentials`.
    pub fn channel_credentials(&self) -> String {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceManager.ChannelCredentials"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceManager.ChannelId`.
    pub fn channel_id(&self) -> String {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceManager.ChannelId"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceManager.Connected`.
    pub fn connected(&self) -> bool {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceManager.Connected"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceManager.IsTransitioning`.
    pub fn is_transitioning(&self) -> bool {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceManager.IsTransitioning"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceManager.SdpLocal`.
    pub fn sdp_local(&self) -> String {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceManager.SdpLocal"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceManager.SdpRemote`.
    pub fn sdp_remote(&self) -> String {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceManager.SdpRemote"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceManager.SessionId`.
    pub fn session_id(&self) -> libremetaverse_types::UUID {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceManager.SessionId"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceManager.VoiceAllowedHere`.
    pub fn voice_allowed_here(&self) -> bool {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceManager.VoiceAllowedHere"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceManager.VoiceAllowedHere`.
    pub fn set_voice_allowed_here(&mut self, value: bool) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceManager.VoiceAllowedHere"
        )
    }
}

/// C# type: `T:LibreMetaverse.Voice.WebRTC.VoiceSession`.
pub struct VoiceSession;
impl VoiceSession {
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnDataChannelReady`.
    pub fn subscribe_on_data_channel_ready(
        &self,
        handler: Option<Box<dyn Fn() + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnDataChannelReady"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnGainMapReceived`.
    pub fn subscribe_on_gain_map_received(
        &self,
        handler: Option<
            Box<dyn Fn(std::collections::HashMap<libremetaverse_types::UUID, i32>) + Send + Sync>,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnGainMapReceived"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnMuteMapReceived`.
    pub fn subscribe_on_mute_map_received(
        &self,
        handler: Option<
            Box<dyn Fn(std::collections::HashMap<libremetaverse_types::UUID, bool>) + Send + Sync>,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnMuteMapReceived"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerAudioUpdated`.
    pub fn subscribe_on_peer_audio_updated(
        &self,
        handler: Option<
            Box<
                dyn Fn(
                        libremetaverse_types::UUID,
                        libremetaverse_voice_webrtc::VoiceSessionPeerAudioState,
                    ) + Send
                    + Sync,
            >,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerAudioUpdated"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerConnectionClosed`.
    pub fn subscribe_on_peer_connection_closed(
        &self,
        handler: Option<Box<dyn Fn() + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerConnectionClosed"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerConnectionReady`.
    pub fn subscribe_on_peer_connection_ready(
        &self,
        handler: Option<Box<dyn Fn() + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerConnectionReady"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerJoined`.
    pub fn subscribe_on_peer_joined(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerJoined"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerLeft`.
    pub fn subscribe_on_peer_left(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::UUID) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerLeft"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerListUpdated`.
    pub fn subscribe_on_peer_list_updated(
        &self,
        handler: Option<Box<dyn Fn(Vec<libremetaverse_types::UUID>) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerListUpdated"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerPositionUpdated`.
    pub fn subscribe_on_peer_position_updated(
        &self,
        handler: Option<
            Box<
                dyn Fn(libremetaverse_types::UUID, libremetaverse_structured_data::OSDMap)
                    + Send
                    + Sync,
            >,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerPositionUpdated"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerPositionUpdatedTyped`.
    pub fn subscribe_on_peer_position_updated_typed(
        &self,
        handler: Option<
            Box<
                dyn Fn(
                        libremetaverse_types::UUID,
                        libremetaverse_voice_webrtc::VoiceSessionAvatarPosition,
                    ) + Send
                    + Sync,
            >,
        >,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnPeerPositionUpdatedTyped"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnReprovisionFailed`.
    pub fn subscribe_on_reprovision_failed(
        &self,
        handler: Option<Box<dyn Fn(libremetaverse_types::compat::ExternalError) + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnReprovisionFailed"
        )
    }
    /// C# member: `E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnReprovisionSucceeded`.
    pub fn subscribe_on_reprovision_succeeded(
        &self,
        handler: Option<Box<dyn Fn() + Send + Sync>>,
    ) -> libremetaverse_types::compat::Subscription {
        libremetaverse_types::unimplemented_api!(
            "E:LibreMetaverse.Voice.WebRTC.VoiceSession.OnReprovisionSucceeded"
        )
    }
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.PROVISION_VOICE_ACCOUNT_CAP`.
    pub const PROVISION_VOICE_ACCOUNT_CAP: &'static str = "ProvisionVoiceAccountRequest";
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.VOICE_SIGNALING_CAP`.
    pub const VOICE_SIGNALING_CAP: &'static str = "VoiceSignalingRequest";
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.CloseSessionAsync`.
    pub async fn close_session(&self) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.CloseSessionAsync",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.CreatePeerConnectionAsync(System.Threading.CancellationToken)`.
    pub async fn create_peer_connection(
        &self,
        ct: Option<libremetaverse_types::compat::CancellationToken>,
    ) -> Result<libremetaverse_voice_webrtc::transport::RTCPeerConnection, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.CreatePeerConnectionAsync(System.Threading.CancellationToken)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.Dispose`.
    pub fn dispose(&self) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented("M:LibreMetaverse.Voice.WebRTC.VoiceSession.Dispose")
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.GetKnownPeers`.
    pub fn get_known_peers(&self) -> Result<Vec<libremetaverse_types::UUID>, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.GetKnownPeers",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.RequestProvisionAsync`.
    pub async fn request_provision(&self) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.RequestProvisionAsync",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendAvatarArray(System.Collections.Generic.List{LibreMetaverse.UUID})`.
    pub fn send_avatar_array(
        &self,
        avatars: Vec<libremetaverse_types::UUID>,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendAvatarArray(System.Collections.Generic.List{LibreMetaverse.UUID})",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendAvatarMap(System.Collections.Generic.IEnumerable{LibreMetaverse.UUID})`.
    pub fn send_avatar_map(
        &self,
        avatars: Box<dyn Iterator<Item = libremetaverse_types::UUID>>,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendAvatarMap(System.Collections.Generic.IEnumerable{LibreMetaverse.UUID})",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendGainMap(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,System.Int32})`.
    pub fn send_gain_map(
        &self,
        gain_map: std::collections::HashMap<libremetaverse_types::UUID, i32>,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendGainMap(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,System.Int32})",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendJoin(System.Boolean)`.
    pub fn send_join(&self, primary: Option<bool>) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendJoin(System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendLeave`.
    pub fn send_leave(&self) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendLeave",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendMuteMap(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,System.Boolean})`.
    pub fn send_mute_map(
        &self,
        mute_map: std::collections::HashMap<libremetaverse_types::UUID, bool>,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendMuteMap(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,System.Boolean})",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendPosition(LibreMetaverse.Vector3d,LibreMetaverse.Quaternion)`.
    pub fn send_position_with_vector3d_quaternion(
        &self,
        global_pos: libremetaverse_types::Vector3d,
        heading: libremetaverse_types::Quaternion,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendPosition(LibreMetaverse.Vector3d,LibreMetaverse.Quaternion)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendPosition(LibreMetaverse.Vector3d,LibreMetaverse.Quaternion,LibreMetaverse.Vector3d,LibreMetaverse.Quaternion)`.
    pub fn send_position_with_vector3d_quaternion_vector3d_quaternion(
        &self,
        global_pos: libremetaverse_types::Vector3d,
        heading: libremetaverse_types::Quaternion,
        camera_pos: libremetaverse_types::Vector3d,
        camera_heading: libremetaverse_types::Quaternion,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.SendPosition(LibreMetaverse.Vector3d,LibreMetaverse.Quaternion,LibreMetaverse.Vector3d,LibreMetaverse.Quaternion)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.SetPeerGain(LibreMetaverse.UUID,System.Int32)`.
    pub fn set_peer_gain(
        &self,
        peer_id: libremetaverse_types::UUID,
        gain: i32,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.SetPeerGain(LibreMetaverse.UUID,System.Int32)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.SetPeerMute(LibreMetaverse.UUID,System.Boolean)`.
    pub fn set_peer_mute(
        &self,
        peer_id: libremetaverse_types::UUID,
        mute: bool,
    ) -> Result<bool, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.SetPeerMute(LibreMetaverse.UUID,System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.StartAsync(System.Threading.CancellationToken)`.
    pub async fn start(
        &self,
        ct: Option<libremetaverse_types::compat::CancellationToken>,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.StartAsync(System.Threading.CancellationToken)",
        )
    }
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.TrySendDataChannelString(System.String)`.
    pub fn try_send_data_channel_string(&self, str: String) -> bool {
        libremetaverse_types::unimplemented_api!(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.TrySendDataChannelString(System.String)"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.ChannelCredentials`.
    pub fn channel_credentials(&self) -> Option<String> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.ChannelCredentials"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.ChannelCredentials`.
    pub fn set_channel_credentials(&mut self, value: Option<String>) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.ChannelCredentials"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.ChannelId`.
    pub fn channel_id(&self) -> Option<String> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.ChannelId"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.ChannelId`.
    pub fn set_channel_id(&mut self, value: Option<String>) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.ChannelId"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.Connected`.
    pub fn connected(&self) -> bool {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.Connected"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.DataChannel`.
    pub fn data_channel(&self) -> Option<libremetaverse_voice_webrtc::transport::RTCDataChannel> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.DataChannel"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.IsPrimary`.
    pub fn is_primary(&self) -> bool {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.IsPrimary"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.IsPrimary`.
    pub fn set_is_primary(&mut self, value: bool) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.IsPrimary"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.ParcelLocalId`.
    pub fn parcel_local_id(&self) -> i32 {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.ParcelLocalId"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.ParcelLocalId`.
    pub fn set_parcel_local_id(&mut self, value: i32) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.ParcelLocalId"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.SdpLocal`.
    pub fn sdp_local(&self) -> String {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.SdpLocal"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.SdpRemote`.
    pub fn sdp_remote(&self) -> String {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.SdpRemote"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.SessionId`.
    pub fn session_id(&self) -> libremetaverse_types::UUID {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.SessionId"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.SessionId`.
    pub fn set_session_id(&mut self, value: libremetaverse_types::UUID) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.SessionId"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.TargetSimulator`.
    pub fn target_simulator(&self) -> Option<libremetaverse::Simulator> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.TargetSimulator"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.TargetSimulator`.
    pub fn set_target_simulator(&mut self, value: Option<libremetaverse::Simulator>) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.TargetSimulator"
        )
    }
}

/// C# type: `T:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition`.
pub struct VoiceSessionAvatarPosition;
impl VoiceSessionAvatarPosition {
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.#ctor`.
    pub fn new() -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.#ctor",
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.AgentId`.
    pub fn agent_id(&self) -> libremetaverse_types::UUID {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.AgentId"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.AgentId`.
    pub fn set_agent_id(&mut self, value: libremetaverse_types::UUID) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.AgentId"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.ListenerHeading`.
    pub fn listener_heading(
        &self,
    ) -> Option<Option<libremetaverse_voice_webrtc::VoiceSessionInt4>> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.ListenerHeading"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.ListenerHeading`.
    pub fn set_listener_heading(
        &mut self,
        value: Option<Option<libremetaverse_voice_webrtc::VoiceSessionInt4>>,
    ) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.ListenerHeading"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.ListenerPosition`.
    pub fn listener_position(
        &self,
    ) -> Option<Option<libremetaverse_voice_webrtc::VoiceSessionInt3>> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.ListenerPosition"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.ListenerPosition`.
    pub fn set_listener_position(
        &mut self,
        value: Option<Option<libremetaverse_voice_webrtc::VoiceSessionInt3>>,
    ) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.ListenerPosition"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.SenderHeading`.
    pub fn sender_heading(&self) -> Option<Option<libremetaverse_voice_webrtc::VoiceSessionInt4>> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.SenderHeading"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.SenderHeading`.
    pub fn set_sender_heading(
        &mut self,
        value: Option<Option<libremetaverse_voice_webrtc::VoiceSessionInt4>>,
    ) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.SenderHeading"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.SenderPosition`.
    pub fn sender_position(&self) -> Option<Option<libremetaverse_voice_webrtc::VoiceSessionInt3>> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.SenderPosition"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.SenderPosition`.
    pub fn set_sender_position(
        &mut self,
        value: Option<Option<libremetaverse_voice_webrtc::VoiceSessionInt3>>,
    ) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.AvatarPosition.SenderPosition"
        )
    }
}

/// C# type: `T:LibreMetaverse.Voice.WebRTC.VoiceSession.ESessionType`.
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
#[repr(i32)]
pub enum VoiceSessionESessionType {
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.ESessionType.LOCAL`.
    LOCAL = 0,
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.ESessionType.MULTIAGENT`.
    MULTIAGENT = 1,
}

/// C# type: `T:LibreMetaverse.Voice.WebRTC.VoiceSession.Int3`.
pub struct VoiceSessionInt3 {
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int3.X`.
    pub x: i32,
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int3.Y`.
    pub y: i32,
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int3.Z`.
    pub z: i32,
}
impl VoiceSessionInt3 {}

/// C# type: `T:LibreMetaverse.Voice.WebRTC.VoiceSession.Int4`.
pub struct VoiceSessionInt4 {
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.W`.
    pub w: i32,
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.X`.
    pub x: i32,
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.Y`.
    pub y: i32,
    /// C# member: `F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.Z`.
    pub z: i32,
}
impl VoiceSessionInt4 {}

/// C# type: `T:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState`.
pub struct VoiceSessionPeerAudioState;
impl VoiceSessionPeerAudioState {
    /// C# member: `M:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.#ctor`.
    pub fn new() -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.#ctor",
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.JoinedPrimary`.
    pub fn joined_primary(&self) -> Option<Option<bool>> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.JoinedPrimary"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.JoinedPrimary`.
    pub fn set_joined_primary(&mut self, value: Option<Option<bool>>) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.JoinedPrimary"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.Left`.
    pub fn left(&self) -> bool {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.Left"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.Left`.
    pub fn set_left(&mut self, value: bool) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.Left"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.ModeratorMuted`.
    pub fn moderator_muted(&self) -> Option<Option<bool>> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.ModeratorMuted"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.ModeratorMuted`.
    pub fn set_moderator_muted(&mut self, value: Option<Option<bool>>) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.ModeratorMuted"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.Power`.
    pub fn power(&self) -> Option<Option<i32>> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.Power"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.Power`.
    pub fn set_power(&mut self, value: Option<Option<i32>>) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.Power"
        )
    }
    /// C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.VoiceActive`.
    pub fn voice_active(&self) -> Option<Option<bool>> {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.VoiceActive"
        )
    }
    /// Setter for C# member: `P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.VoiceActive`.
    pub fn set_voice_active(&mut self, value: Option<Option<bool>>) {
        libremetaverse_types::unimplemented_api!(
            "P:LibreMetaverse.Voice.WebRTC.VoiceSession.PeerAudioState.VoiceActive"
        )
    }
}

pub mod libre_metaverse {
    /// C# type: `T:LibreMetaverse.AudioDevice`.
    pub struct AudioDevice;
    impl AudioDevice {
        /// C# member: `E:LibreMetaverse.AudioDevice.OnAudioSourceEncodedSample`.
        pub fn subscribe_on_audio_source_encoded_sample(
            &self,
            handler: Option<Box<dyn Fn(u32, Vec<u8>) + Send + Sync>>,
        ) -> libremetaverse_types::compat::Subscription {
            libremetaverse_types::unimplemented_api!(
                "E:LibreMetaverse.AudioDevice.OnAudioSourceEncodedSample"
            )
        }
        /// C# member: `E:LibreMetaverse.AudioDevice.OnPlaybackActiveChanged`.
        pub fn subscribe_on_playback_active_changed(
            &self,
            handler: Option<Box<dyn Fn(bool) + Send + Sync>>,
        ) -> libremetaverse_types::compat::Subscription {
            libremetaverse_types::unimplemented_api!(
                "E:LibreMetaverse.AudioDevice.OnPlaybackActiveChanged"
            )
        }
        /// C# member: `E:LibreMetaverse.AudioDevice.OnRecordingActiveChanged`.
        pub fn subscribe_on_recording_active_changed(
            &self,
            handler: Option<Box<dyn Fn(bool) + Send + Sync>>,
        ) -> libremetaverse_types::compat::Subscription {
            libremetaverse_types::unimplemented_api!(
                "E:LibreMetaverse.AudioDevice.OnRecordingActiveChanged"
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.#ctor(LibreMetaverse.Voice.WebRTC.IVoiceLogger)`.
        pub fn new(
            logger: Option<Box<dyn libremetaverse_voice_webrtc::IVoiceLogger>>,
        ) -> Result<Self, crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.#ctor(LibreMetaverse.Voice.WebRTC.IVoiceLogger)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.AudioSource_OnAudioSourceEncodedSample(System.UInt32,System.Byte[])`.
        pub fn audio_source_on_audio_source_encoded_sample(
            &self,
            duration_rtp_units: u32,
            sample: Vec<u8>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.AudioSource_OnAudioSourceEncodedSample(System.UInt32,System.Byte[])",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.AudioSource_OnAudioSourceRawSample(SIPSorceryMedia.Abstractions.AudioSamplingRatesEnum,System.UInt32,System.Int16[])`.
        pub fn audio_source_on_audio_source_raw_sample(
            &self,
            sampling_rate: libremetaverse_voice_webrtc::media::AudioSamplingRatesEnum,
            duration_milliseconds: u32,
            sample: Vec<i16>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.AudioSource_OnAudioSourceRawSample(SIPSorceryMedia.Abstractions.AudioSamplingRatesEnum,System.UInt32,System.Int16[])",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.ClearSsrc(System.UInt32)`.
        pub fn clear_ssrc(&self, ssrc: u32) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.ClearSsrc(System.UInt32)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.CloseRecordingSource`.
        pub fn close_recording_source(&self) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.CloseRecordingSource",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.DisableAudioProcessing`.
        pub fn disable_audio_processing(&self) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.DisableAudioProcessing",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.Dispose`.
        pub fn dispose(&self) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented("M:LibreMetaverse.AudioDevice.Dispose")
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.EnableAudioProcessing(System.Boolean,System.Boolean,System.Boolean,System.Boolean,SoundFlow.Extensions.WebRtc.Apm.NoiseSuppressionLevel,System.Boolean,System.Int32)`.
        pub fn enable_audio_processing(
            &self,
            noise_suppression: Option<bool>,
            high_pass_filter: Option<bool>,
            agc: Option<bool>,
            echo_cancellation: Option<bool>,
            ns_level: Option<libremetaverse_voice_webrtc::audio::NoiseSuppressionLevel>,
            agc1: Option<bool>,
            aec_latency_ms: Option<i32>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.EnableAudioProcessing(System.Boolean,System.Boolean,System.Boolean,System.Boolean,SoundFlow.Extensions.WebRtc.Apm.NoiseSuppressionLevel,System.Boolean,System.Int32)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.EnsureEndpoint`.
        pub fn ensure_endpoint(&self) -> Result<bool, crate::Error> {
            libremetaverse_types::not_implemented("M:LibreMetaverse.AudioDevice.EnsureEndpoint")
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.FeedEncodedSample(System.UInt32,System.Byte[])`.
        pub fn feed_encoded_sample(
            &self,
            duration_rtp_units: u32,
            encoded: Vec<u8>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.FeedEncodedSample(System.UInt32,System.Byte[])",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.FeedPcmBytes(System.Byte[],System.Int32,System.Int32)`.
        pub fn feed_pcm_bytes(
            &self,
            pcm_bytes: Vec<u8>,
            channels: Option<i32>,
            sample_rate: Option<i32>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.FeedPcmBytes(System.Byte[],System.Int32,System.Int32)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.FeedPcmSamples(System.Int16[],System.Int32,System.Int32)`.
        pub fn feed_pcm_samples(
            &self,
            pcm_interleaved: Vec<i16>,
            channels: Option<i32>,
            sample_rate: Option<i32>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.FeedPcmSamples(System.Int16[],System.Int32,System.Int32)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.FeedPcmSamplesPacedAsync(System.Int16[],System.Int32,System.Int32,System.Threading.CancellationToken)`.
        pub async fn feed_pcm_samples_paced(
            &self,
            pcm_interleaved: Vec<i16>,
            channels: Option<i32>,
            sample_rate: Option<i32>,
            ct: Option<libremetaverse_types::compat::CancellationToken>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.FeedPcmSamplesPacedAsync(System.Int16[],System.Int32,System.Int32,System.Threading.CancellationToken)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.GetPlaybackDevices`.
        pub fn get_playback_devices(
            &self,
        ) -> Result<std::collections::HashMap<u32, String>, crate::Error> {
            libremetaverse_types::not_implemented("M:LibreMetaverse.AudioDevice.GetPlaybackDevices")
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.GetRecordingDevices`.
        pub fn get_recording_devices(
            &self,
        ) -> Result<std::collections::HashMap<u32, String>, crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.GetRecordingDevices",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.PlayFileLoop(System.String)`.
        pub fn play_file_loop(&self, path: String) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.PlayFileLoop(System.String)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.PlayFileOnce(System.String)`.
        pub fn play_file_once(&self, path: String) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.PlayFileOnce(System.String)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.PlayRawPcmStreamAsync(System.IO.Stream,System.Int32,System.Int32,System.Threading.CancellationToken)`.
        pub async fn play_raw_pcm_stream(
            &self,
            pcm_stream: Box<dyn libremetaverse_types::compat::ReadWrite + Send>,
            channels: Option<i32>,
            sample_rate: Option<i32>,
            ct: Option<libremetaverse_types::compat::CancellationToken>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.PlayRawPcmStreamAsync(System.IO.Stream,System.Int32,System.Int32,System.Threading.CancellationToken)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.PlayRtpPacket(System.UInt32,System.Byte[])`.
        pub fn play_rtp_packet(&self, ssrc: u32, payload: Vec<u8>) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.PlayRtpPacket(System.UInt32,System.Byte[])",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.SetCaptureGainPercent(System.Int32)`.
        pub fn set_capture_gain_percent(&self, percent: i32) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.SetCaptureGainPercent(System.Int32)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.SetPlaybackDevice(System.String)`.
        pub fn set_playback_device_with_string(
            &self,
            device_name: Option<String>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.SetPlaybackDevice(System.String)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.SetPlaybackVolume(System.Single)`.
        pub fn set_playback_volume(&self, normalized: f32) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.SetPlaybackVolume(System.Single)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.SetRecordingDevice(System.String)`.
        pub fn set_recording_device_with_string(
            &self,
            device_name: Option<String>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.SetRecordingDevice(System.String)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.SetSsrcGainPercent(System.UInt32,System.Int32)`.
        pub fn set_ssrc_gain_percent(&self, ssrc: u32, percent: i32) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.SetSsrcGainPercent(System.UInt32,System.Int32)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.SetSsrcMute(System.UInt32,System.Boolean)`.
        pub fn set_ssrc_mute(&self, ssrc: u32, muted: bool) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.SetSsrcMute(System.UInt32,System.Boolean)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.StartFilePlayback(System.String,System.Boolean)`.
        pub fn start_file_playback(
            &self,
            path: String,
            loop_: Option<bool>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.StartFilePlayback(System.String,System.Boolean)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.StartPlaybackAsync`.
        pub async fn start_playback(&self) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented("M:LibreMetaverse.AudioDevice.StartPlaybackAsync")
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.StartRawPcmFileLoop(System.String,System.Int32,System.Boolean)`.
        pub fn start_raw_pcm_file_loop(
            &self,
            path: String,
            channels: Option<i32>,
            loop_: Option<bool>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.StartRawPcmFileLoop(System.String,System.Int32,System.Boolean)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.StartRawPcmStream(System.IO.Stream,System.Int32,System.Int32)`.
        pub fn start_raw_pcm_stream(
            &self,
            pcm_stream: Box<dyn libremetaverse_types::compat::ReadWrite + Send>,
            channels: Option<i32>,
            sample_rate: Option<i32>,
        ) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented(
                "M:LibreMetaverse.AudioDevice.StartRawPcmStream(System.IO.Stream,System.Int32,System.Int32)",
            )
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.StartRecording`.
        pub fn start_recording(&self) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented("M:LibreMetaverse.AudioDevice.StartRecording")
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.StopFile`.
        pub fn stop_file(&self) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented("M:LibreMetaverse.AudioDevice.StopFile")
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.StopFilePlayback`.
        pub fn stop_file_playback(&self) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented("M:LibreMetaverse.AudioDevice.StopFilePlayback")
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.StopPlaybackAsync`.
        pub async fn stop_playback(&self) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented("M:LibreMetaverse.AudioDevice.StopPlaybackAsync")
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.StopRawPcmStream`.
        pub fn stop_raw_pcm_stream(&self) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented("M:LibreMetaverse.AudioDevice.StopRawPcmStream")
        }
        /// C# member: `M:LibreMetaverse.AudioDevice.StopRecording`.
        pub fn stop_recording(&self) -> Result<(), crate::Error> {
            libremetaverse_types::not_implemented("M:LibreMetaverse.AudioDevice.StopRecording")
        }
        /// C# member: `P:LibreMetaverse.AudioDevice.EndPoint`.
        pub fn end_point(
            &self,
        ) -> Option<libremetaverse_voice_webrtc::audio::SoundFlowAudioEndPoint> {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.EndPoint")
        }
        /// Setter for C# member: `P:LibreMetaverse.AudioDevice.EndPoint`.
        pub fn set_end_point(
            &mut self,
            value: Option<libremetaverse_voice_webrtc::audio::SoundFlowAudioEndPoint>,
        ) {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.EndPoint")
        }
        /// C# member: `P:LibreMetaverse.AudioDevice.IsAvailable`.
        pub fn is_available(&self) -> bool {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.IsAvailable")
        }
        /// C# member: `P:LibreMetaverse.AudioDevice.MicMute`.
        pub fn mic_mute(&self) -> bool {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.MicMute")
        }
        /// Setter for C# member: `P:LibreMetaverse.AudioDevice.MicMute`.
        pub fn set_mic_mute(&mut self, value: bool) {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.MicMute")
        }
        /// C# member: `P:LibreMetaverse.AudioDevice.PlaybackActive`.
        pub fn playback_active(&self) -> bool {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.PlaybackActive")
        }
        /// Setter for C# member: `P:LibreMetaverse.AudioDevice.PlaybackActive`.
        pub fn set_playback_active(&mut self, value: bool) {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.PlaybackActive")
        }
        /// C# member: `P:LibreMetaverse.AudioDevice.PlaybackDevice`.
        pub fn playback_device(&self) -> (u32, String) {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.PlaybackDevice")
        }
        /// Setter for C# member: `P:LibreMetaverse.AudioDevice.PlaybackDevice`.
        pub fn set_playback_device(&mut self, value: (u32, String)) {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.PlaybackDevice")
        }
        /// C# member: `P:LibreMetaverse.AudioDevice.RecordingActive`.
        pub fn recording_active(&self) -> bool {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.RecordingActive")
        }
        /// Setter for C# member: `P:LibreMetaverse.AudioDevice.RecordingActive`.
        pub fn set_recording_active(&mut self, value: bool) {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.RecordingActive")
        }
        /// C# member: `P:LibreMetaverse.AudioDevice.RecordingDevice`.
        pub fn recording_device(&self) -> (u32, String) {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.RecordingDevice")
        }
        /// Setter for C# member: `P:LibreMetaverse.AudioDevice.RecordingDevice`.
        pub fn set_recording_device(&mut self, value: (u32, String)) {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.RecordingDevice")
        }
        /// C# member: `P:LibreMetaverse.AudioDevice.Source`.
        pub fn source(&self) -> Option<libremetaverse_voice_webrtc::audio::SoundFlowAudioSource> {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.Source")
        }
        /// Setter for C# member: `P:LibreMetaverse.AudioDevice.Source`.
        pub fn set_source(
            &mut self,
            value: Option<libremetaverse_voice_webrtc::audio::SoundFlowAudioSource>,
        ) {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.Source")
        }
        /// C# member: `P:LibreMetaverse.AudioDevice.SpeakerLevel`.
        pub fn speaker_level(&self) -> f32 {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.SpeakerLevel")
        }
        /// Setter for C# member: `P:LibreMetaverse.AudioDevice.SpeakerLevel`.
        pub fn set_speaker_level(&mut self, value: f32) {
            libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AudioDevice.SpeakerLevel")
        }
    }
}
