// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 6.2.4 effective-5.10 (swiftlang-6.2.4.1.4 clang-1700.6.4.2)
// swift-module-flags: -target arm64-apple-ios13.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name SwitchboardSDK -package-name SwitchboardSDK
// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2.4
import AVFoundation
import CoreAudioTypes
import Foundation
import Swift
@_exported import SwitchboardSDK
import UIKit
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public protocol AudioStreamerDelegate : AnyObject {
  func audioStreamerDidFinishStreamingAudio(_ audioStreamer: SwitchboardSDK.AudioStreamer)
}
@objc @_inheritsConvenienceInitializers public class AudioStreamer : ObjectiveC.NSObject, SwitchboardSDK.StreamPlayerNodeDelegate {
  @objc override dynamic public init()
  @objc public func load(url: Foundation.URL)
  @objc public func play()
  @objc public func pause()
  #if compiler(>=5.3) && $NonescapableTypes
  @objc public func streamPlayerNode(_ streamPlayer: Swift.UnsafeMutableRawPointer!, didChangeSampleRate sampleRate: Swift.UInt32)
  #endif
  @objc public func stop()
  @objc public func getAudioBus() -> SwitchboardSDK.PCMBufferStreamAudioBus
  @objc public func getNumOfChannels() -> Swift.UInt32
  @objc deinit
}
@objc @_inheritsConvenienceInitializers public class PCMBufferStreamAudioBus : ObjectiveC.NSObject {
  @objc public func readRenderData(_ data: Swift.UnsafeMutableRawPointer, numberOfSamples count: Swift.UInt32) -> Swift.UInt32
  @objc override dynamic public init()
  @objc deinit
}
public protocol OpenTokRoomResponse {
  var apiKey: Swift.String { get }
  var sessionId: Swift.String { get }
  var token: Swift.String { get }
}
public protocol AgoraRoomResponse {
  var token: Swift.String { get }
}
public protocol RoomAPI {
  #if compiler(>=5.3) && $NonescapableTypes
  func openTokRoom(roomID: Swift.String, password: Swift.String?, completion: @escaping (Swift.Result<any SwitchboardSDK.OpenTokRoomResponse, any Swift.Error>) -> Swift.Void)
  #endif
  #if compiler(>=5.3) && $NonescapableTypes
  func agoraRoom(roomID: Swift.String, password: Swift.String?, completion: @escaping (Swift.Result<any SwitchboardSDK.AgoraRoomResponse, any Swift.Error>) -> Swift.Void)
  #endif
}
public enum SwitchboardAPIError : Swift.Error {
  case serverError(message: Swift.String)
}
extension SwitchboardSDK.SwitchboardAPIError : Foundation.LocalizedError {
  #if compiler(>=5.3) && $NonescapableTypes
  public var errorDescription: Swift.String? {
    get
  }
  #endif
}
public struct SwitchboardAPI : SwitchboardSDK.RoomAPI {
  public init()
  #if compiler(>=5.3) && $NonescapableTypes
  public func openTokRoom(roomID: Swift.String, password: Swift.String?, completion: @escaping (Swift.Result<any SwitchboardSDK.OpenTokRoomResponse, any Swift.Error>) -> Swift.Void)
  #endif
  #if compiler(>=5.3) && $NonescapableTypes
  public func agoraRoom(roomID: Swift.String, password: Swift.String?, completion: @escaping (Swift.Result<any SwitchboardSDK.AgoraRoomResponse, any Swift.Error>) -> Swift.Void)
  #endif
}
public class CallbackLogDestination : SwitchboardSDK.SBLogDestination {
  public init(logCallback: @escaping (_ level: SwitchboardSDK.SBLogLevel, _ message: Swift.String) -> Swift.Void)
  @objc public func log(_ logLevel: SwitchboardSDK.SBLogLevel, message logMessage: Swift.String)
  @objc deinit
}
@objc public protocol RouteChangeDelegate {
  @objc func audioEngine(_: any SwitchboardSDK.AudioEngineProtocol, inputRouteChanged currentInputRoute: AVFAudio.AVAudioSession.Port)
  @objc func audioEngine(_: any SwitchboardSDK.AudioEngineProtocol, outputRouteChanged currentOutputRoute: AVFAudio.AVAudioSession.Port)
}
@objc public protocol AudioEngineProtocol {
  @objc var useThirdPartyEchoCanceller: Swift.Bool { get set }
  @objc var isVoiceProcessingEnabled: Swift.Bool { get }
  @objc var engineShouldRun: Swift.Bool { get }
  @objc var needsEchoCancellation: Swift.Bool { get }
  @objc var shouldRecord: Swift.Bool { get set }
  @objc var mixWithOthers: Swift.Bool { get set }
  @objc var allowBluetoothA2DP: Swift.Bool { get set }
  @objc func isCurrentOutputA2DP() -> Swift.Bool
  @objc var currentInputRoute: AVFAudio.AVAudioSession.Port { get }
  @objc var currentOutputRoute: AVFAudio.AVAudioSession.Port { get }
  #if compiler(>=5.3) && $NonescapableTypes
  @objc var routeChangeDelegate: (any SwitchboardSDK.RouteChangeDelegate)? { get set }
  #endif
  #if compiler(>=5.3) && $NonescapableTypes
  @objc var audioDelegate: (any SwitchboardSDK.AudioProcessorDelegate)? { get set }
  #endif
  #if compiler(>=5.3) && $NonescapableTypes
  @objc var lastAudioSessionState: SwitchboardSDK.AudioSessionState? { get }
  #endif
  @objc func start()
  @objc func start(preferredIOBufferDuration: Foundation.TimeInterval)
  @objc func stop()
  @objc func reconfigure(shouldRecord: Swift.Bool)
}
@objc @_inheritsConvenienceInitializers @available(iOS 13.0, *)
public class AudioEngineV2 : ObjectiveC.NSObject, SwitchboardSDK.AudioEngineProtocol, SwitchboardSDK.SBIOSAudioIODelegate {
  @objc public var currentRouteOutputType: AVFAudio.AVAudioSession.Port? {
    @objc get
    @objc set
  }
  @objc public var currentRouteInputType: AVFAudio.AVAudioSession.Port? {
    @objc get
    @objc set
  }
  @objc public var currentOutputRoute: AVFAudio.AVAudioSession.Port {
    @objc get
  }
  @objc public var currentInputRoute: AVFAudio.AVAudioSession.Port {
    @objc get
  }
  @objc public func isCurrentOutputA2DP() -> Swift.Bool
  @objc public func isUsingHeadphones() -> Swift.Bool
  @objc public var useThirdPartyEchoCanceller: Swift.Bool {
    @objc get
    @objc set
  }
  #if compiler(>=5.3) && $NonescapableTypes
  @objc public var lastAudioSessionState: SwitchboardSDK.AudioSessionState? {
    @objc get
  }
  #endif
  @objc public var isVoiceProcessingEnabled: Swift.Bool {
    @objc get
  }
  @objc public var engineShouldRun: Swift.Bool {
    get
  }
  @objc public var needsEchoCancellation: Swift.Bool {
    @objc get
  }
  @objc public var shouldRecord: Swift.Bool {
    @objc get
    @objc set
  }
  @objc public var mixWithOthers: Swift.Bool {
    @objc get
    @objc set
  }
  @objc public var allowBluetoothA2DP: Swift.Bool {
    @objc get
    @objc set
  }
  @objc weak public var routeChangeDelegate: (any SwitchboardSDK.RouteChangeDelegate)?
  #if compiler(>=5.3) && $NonescapableTypes
  @objc public var audioDelegate: (any SwitchboardSDK.AudioProcessorDelegate)? {
    @objc get
    @objc set
  }
  #endif
  @objc override dynamic public init()
  @objc public func start()
  @objc public func start(preferredIOBufferDuration: Foundation.TimeInterval)
  @objc public func stop()
  @objc public func reconfigure(shouldRecord: Swift.Bool)
  @objc public func outputSampleRateChanged(_ audioUnit: SwitchboardSDK.SBIOSAudioIO, sampleRate: Swift.Int32)
  @objc deinit
}
@objc @_inheritsConvenienceInitializers @available(iOS 13.0, *)
public class AudioEngineV3 : ObjectiveC.NSObject, SwitchboardSDK.AudioEngineProtocol {
  @objc public var currentRouteOutputType: AVFAudio.AVAudioSession.Port? {
    @objc get
    @objc set
  }
  @objc public var currentRouteInputType: AVFAudio.AVAudioSession.Port? {
    @objc get
    @objc set
  }
  @objc public var currentOutputRoute: AVFAudio.AVAudioSession.Port {
    @objc get
  }
  @objc public var currentInputRoute: AVFAudio.AVAudioSession.Port {
    @objc get
  }
  @objc public func isCurrentOutputA2DP() -> Swift.Bool
  @objc public func isUsingHeadphones() -> Swift.Bool
  @objc public var useThirdPartyEchoCanceller: Swift.Bool {
    @objc get
    @objc set
  }
  #if compiler(>=5.3) && $NonescapableTypes
  @objc public var lastAudioSessionState: SwitchboardSDK.AudioSessionState? {
    @objc get
  }
  #endif
  @objc public var isVoiceProcessingEnabled: Swift.Bool {
    @objc get
  }
  @objc public var engineShouldRun: Swift.Bool {
    get
  }
  @objc public var needsEchoCancellation: Swift.Bool {
    @objc get
  }
  @objc public var shouldRecord: Swift.Bool {
    @objc get
    @objc set
  }
  @objc public var mixWithOthers: Swift.Bool {
    @objc get
    @objc set
  }
  @objc public var allowBluetoothA2DP: Swift.Bool {
    @objc get
    @objc set
  }
  @objc weak public var routeChangeDelegate: (any SwitchboardSDK.RouteChangeDelegate)?
  #if compiler(>=5.3) && $NonescapableTypes
  @objc public var audioDelegate: (any SwitchboardSDK.AudioProcessorDelegate)? {
    @objc get
    @objc set
  }
  #endif
  @objc override dynamic public init()
  @objc public func start()
  @objc public func start(preferredIOBufferDuration: Foundation.TimeInterval)
  @objc public func stop()
  @objc public func reconfigure(shouldRecord: Swift.Bool)
  @objc deinit
}
@objc @_hasMissingDesignatedInitializers @objcMembers public class AudioSessionState : ObjectiveC.NSObject {
  @objc public var category: Swift.String
  @objc public var mode: Swift.String
  @objc public var options: Swift.String
  @objc public var sampleRate: Swift.Double
  @objc public var inputLatency: Foundation.TimeInterval
  @objc public var outputLatency: Foundation.TimeInterval
  @objc public var IOBufferDuration: Foundation.TimeInterval
  @objc public var otherAudioPlaying: Swift.Bool
  @objc public var secondaryAudioShouldBeSilencedHint: Swift.Bool
  @objc public var currentRoute: Swift.String
  @objc deinit
}
