import type { _CBCentralManager } from "./CBCentralManager.js";
import type { _CBPeripheral } from "./CBPeripheral.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSNumber } from "../Foundation/NSNumber.js";
import type { CBConnectionEvent } from "./CBConnectionEvent.js";
export interface _CBCentralManagerDelegate {
    /**
     * @method centralManagerDidUpdateState: @param central The central manager whose state has changed. @discussion Invoked whenever the central manager's state has been updated. Commands should only be issued when the state is <code>CBCentralManagerStatePoweredOn</code>. A state below <code>CBCentralManagerStatePoweredOn</code> implies that scanning has stopped and any connected peripherals have been disconnected. If the state moves below <code>CBCentralManagerStatePoweredOff</code>, all <code>CBPeripheral</code> objects obtained from this central manager become invalid and must be retrieved or discovered again. @see state
     */
    centralManagerDidUpdateState$?(central: _CBCentralManager): void;
    /**
     * @method centralManager:willRestoreState: @param central The central manager providing this information. @param dict A dictionary containing information about <i>central</i> that was preserved by the system at the time the app was terminated. @discussion For apps that opt-in to state preservation and restoration, this is the first method invoked when your app is relaunched into the background to complete some Bluetooth-related task. Use this method to synchronize your app's state with the state of the Bluetooth system. @seealso CBCentralManagerRestoredStatePeripheralsKey; @seealso CBCentralManagerRestoredStateScanServicesKey; @seealso CBCentralManagerRestoredStateScanOptionsKey;
     */
    centralManager$willRestoreState$?(central: _CBCentralManager, dict: _NSDictionary): void;
    /**
     * @method centralManager:didDiscoverPeripheral:advertisementData:RSSI: @param central The central manager providing this update. @param peripheral A <code>CBPeripheral</code> object. @param advertisementData A dictionary containing any advertisement and scan response data. @param RSSI The current RSSI of <i>peripheral</i>, in dBm. A value of <code>127</code> is reserved and indicates the RSSI was not available. @discussion This method is invoked while scanning, upon the discovery of <i>peripheral</i> by <i>central</i>. A discovered peripheral must be retained in order to use it; otherwise, it is assumed to not be of interest and will be cleaned up by the central manager. For a list of <i>advertisementData</i> keys, see {@link CBAdvertisementDataLocalNameKey} and other similar constants. @seealso CBAdvertisementData.h
     */
    centralManager$didDiscoverPeripheral$advertisementData$RSSI$?(central: _CBCentralManager, peripheral: _CBPeripheral, advertisementData: _NSDictionary, RSSI: _NSNumber): void;
    /**
     * @method centralManager:didConnectPeripheral: @param central The central manager providing this information. @param peripheral The <code>CBPeripheral</code> that has connected. @discussion This method is invoked when a connection initiated by {@link connectPeripheral:options:} has succeeded.
     */
    centralManager$didConnectPeripheral$?(central: _CBCentralManager, peripheral: _CBPeripheral): void;
    /**
     * @method centralManager:didFailToConnectPeripheral:error: @param central The central manager providing this information. @param peripheral The <code>CBPeripheral</code> that has failed to connect. @param error The cause of the failure. @discussion This method is invoked when a connection initiated by {@link connectPeripheral:options:} has failed to complete. As connection attempts do not timeout, the failure of a connection is atypical and usually indicative of a transient issue.
     */
    centralManager$didFailToConnectPeripheral$error$?(central: _CBCentralManager, peripheral: _CBPeripheral, error: _NSError | null): void;
    /**
     * @method centralManager:didDisconnectPeripheral:error: @param central The central manager providing this information. @param peripheral The <code>CBPeripheral</code> that has disconnected. @param error If an error occurred, the cause of the failure. @discussion This method is invoked upon the disconnection of a peripheral that was connected by {@link connectPeripheral:options:}. If the disconnection was not initiated by {@link cancelPeripheralConnection}, the cause will be detailed in the <i>error</i> parameter. Once this method has been called, no more methods will be invoked on <i>peripheral</i>'s <code>CBPeripheralDelegate</code>.
     */
    centralManager$didDisconnectPeripheral$error$?(central: _CBCentralManager, peripheral: _CBPeripheral, error: _NSError | null): void;
    /**
     * @method centralManager:didDisconnectPeripheral:timestamp:isReconnecting:error @param central The central manager providing this information. @param peripheral The <code>CBPeripheral</code> that has disconnected. @param timestamp Timestamp of the disconnection, it can be now or a few seconds ago. @param isReconnecting If reconnect was triggered upon disconnection. @param error If an error occurred, the cause of the failure. @discussion This method is invoked upon the disconnection of a peripheral that was connected by {@link connectPeripheral:options:}. If perihperal is connected with connect option {@link CBConnectPeripheralOptionEnableAutoReconnect}, once this method has been called, the system will automatically invoke connect to the peripheral. And if connection is established with the peripheral afterwards, {@link centralManager:didConnectPeripheral:} can be invoked. If perihperal is connected without option CBConnectPeripheralOptionEnableAutoReconnect, once this method has been called, no more methods will be invoked on <i>peripheral</i>'s <code>CBPeripheralDelegate</code> .
     */
    centralManager$didDisconnectPeripheral$timestamp$isReconnecting$error$?(central: _CBCentralManager, peripheral: _CBPeripheral, timestamp: number, isReconnecting: boolean, error: _NSError | null): void;
    /**
     * @method centralManager:connectionEventDidOccur:forPeripheral: @param central The central manager providing this information. @param event The <code>CBConnectionEvent</code> that has occurred. @param peripheral The <code>CBPeripheral</code> that caused the event. @discussion This method is invoked upon the connection or disconnection of a peripheral that matches any of the options provided in {@link registerForConnectionEventsWithOptions:}.
     */
    centralManager$connectionEventDidOccur$forPeripheral$?(central: _CBCentralManager, event: CBConnectionEvent, peripheral: _CBPeripheral): void;
    /**
     * @method centralManager:didUpdateANCSAuthorizationForPeripheral: @param central The central manager providing this information. @param peripheral The <code>CBPeripheral</code> that caused the event. @discussion This method is invoked when the authorization status changes for a peripheral connected with {@link connectPeripheral:} option {@link CBConnectPeripheralOptionRequiresANCS}.
     */
    centralManager$didUpdateANCSAuthorizationForPeripheral$?(central: _CBCentralManager, peripheral: _CBPeripheral): void;
}
