import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _AVAudioSessionDataSourceDescription } from "./AVAudioSessionDataSourceDescription.js";
import type { _AVAudioSessionPortExtensionBluetoothMicrophone } from "./AVAudioSessionPortExtensionBluetoothMicrophone.js";
import type { AVAudioSessionPort } from "./AVAudioSessionPort.js";
export declare class _AVAudioSessionPortDescription extends _NSObject {
    static alloc(): _AVAudioSessionPortDescription;
    static new(): _AVAudioSessionPortDescription;
    init(): _AVAudioSessionPortDescription;
    /**
     * @brief Select the preferred data source for this port. The input dataSource parameter must be one of the dataSources exposed by the dataSources property. Setting a nil value will clear the preference. Note: if the port is part of the active audio route, changing the data source will likely result in a route reconfiguration. If the port is not part of the active route, selecting a new data source will not result in an immediate route reconfiguration. Use AVAudioSession's -setPreferredInput:error: method to activate the port.
     */
    setPreferredDataSource$error$(dataSource: _AVAudioSessionDataSourceDescription | null, outError: NobjcObject | null): boolean;
    portType(): AVAudioSessionPort;
    /** A descriptive name for the associated hardware port */
    portName(): _NSString;
    /** A system-assigned unique identifier for the associated hardware port */
    UID(): _NSString;
    /**
     * @brief This property's value will be true if the associated hardware port has built-in processing for two-way voice communication. Applications that use their own proprietary voice processing algorithms should use this property to decide when to disable processing. On the other hand, if using Apple's Voice Processing I/O unit (subtype kAudioUnitSubType_VoiceProcessingIO), the system will automatically manage this for the application. In particular, ports of type AVAudioSessionPortBluetoothHFP and AVAudioSessionPortCarAudio often have hardware voice processing.
     */
    hasHardwareVoiceCallProcessing(): boolean;
    /**
     * @brief This property's value will be true if the port supports spatial audio playback and the feature is enabled. 'Now Playing' apps should also inform the system if they support multichannel audio content using -setSupportsMultichannelContent:error: method. Apps may also register to receive the AVAudioSessionSpatialPlaybackCapabilitiesChanged notification to detect changes in user preferences that affect spatial audio playback. This property is only relevant in the context of ports that have a small number of hardware channels (typically 2), but have enhanced capabilities for rendering multi-channel content. Note that some port types such as USB and HDMI may support multi-channel playback because they have hardware formats supporting more than 2 channels. For example, many HDMI receivers are connected to multiple speakers and are capable of rendering 5.1, 7.1, or other popular surround sound formats. Applications interested in utilizing multi-channel formats should also query AVAudioSession's maximumOutputNumberOfChannels property and make use of -setPreferredOutputNumberOfChannels:error: to set the preferred number of hardware channels.
     */
    spatialAudioEnabled(): boolean;
    channels(): _NSArray;
    /** Will be nil if there are no selectable data sources. */
    dataSources(): _NSArray | null;
    /**
     * Will be nil if there are no selectable data sources. In all other cases, this property reflects the currently selected data source.
     */
    selectedDataSource(): _AVAudioSessionDataSourceDescription | null;
    /**
     * This property reflects the application's preferred data source for the Port. Will be nil if there are no selectable data sources or if no preference has been set.
     */
    preferredDataSource(): _AVAudioSessionDataSourceDescription | null;
    /**
     * An optional port extension that describes capabilities relevant to Bluetooth microphone ports. This property is optional and will be `nil` for all ports for which this capability set doesn't apply.
     */
    bluetoothMicrophoneExtension(): _AVAudioSessionPortExtensionBluetoothMicrophone;
}
