/*

 * Copyright (C) 2023-2024 Huawei Device Co., Ltd.

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */



/**

 * @file

 * @kit ConnectivityKit

 */



import type { AsyncCallback, Callback } from './@ohos.base';

import type constant from './@ohos.bluetooth.constant';

/*** if arkts dynamic */

import type common from './@ohos.bluetooth.common';

/*** endif */



/**

 * Provides methods to operate or manage Bluetooth.

 *

 * @syscap SystemCapability.Communication.Bluetooth.Core

 * @stagemodelonly

 * @crossplatform [since 13]

 * @atomicservice [since 12]

 * @since 10 dynamic

 * @since 23 static

 */

declare namespace connection {

  /**

   * Indicate the profile connection state.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  type ProfileConnectionState = constant.ProfileConnectionState;



  /**

   * Indicate the profile id.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  type ProfileId = constant.ProfileId;



  /**

   * Indicate the profile uuid.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi [since 10 - 11]

   * @publicapi [since 12]

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  type ProfileUuids = constant.ProfileUuids;



  /**

   * Indicate the major class of a bluetooth device.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  type MajorClass = constant.MajorClass;



  /**

   * Indicate the major minor class of a bluetooth device.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  type MajorMinorClass = constant.MajorMinorClass;



  /**

   * Bluetooth device address.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 21 dynamic

   */

  type BluetoothAddress = common.BluetoothAddress;



  /**

   * Get the profile connection state of the current device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { ProfileId } [profileId] - Indicate the profile id. This is an optional parameter.

   *     With profileId, returns the current connection state of this profile, {@link ProfileConnectionState}.

   *     Without profileId, if any profile is connected, {@link ProfileConnectionState#STATE_CONNECTED} is returned.

   *     Otherwise, {@link ProfileConnectionState#STATE_DISCONNECTED} is returned.

   * @returns { ProfileConnectionState } Returns the connection state.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Incorrect parameter types.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900004 - Profile not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  function getProfileConnectionState(profileId?: ProfileId): ProfileConnectionState;



  /**

   * Starts pairing with a remote Bluetooth device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { AsyncCallback<void> } callback - the callback of pairDevice.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @atomicservice [since 12]

   * @since 10 dynamic

   * @since 23 static

   */

  function pairDevice(deviceId: string, callback: AsyncCallback<void>): void;



  /**

   * Starts pairing with a remote Bluetooth device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @atomicservice [since 12]

   * @since 10 dynamic

   * @since 23 static

   */

  function pairDevice(deviceId: string): Promise<void>;



  /**

   * Starts pairing with a remote Bluetooth device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { BluetoothAddress } deviceId - Indicates address of peer device.

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform

   * @since 21 dynamic

   */

  function pairDevice(deviceId: BluetoothAddress): Promise<void>;



  /**

   * Starts pairing with a credible remote Bluetooth device with transport.

   * This interface does not trigger a dialog box and does not require user authorization.

   * Only specific system application can use this function.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { BluetoothTransport } transport - the transport of the remote device to pair.

   * @param { AsyncCallback<void> } callback - the callback of pairCredibleDevice.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function pairCredibleDevice(deviceId: string, transport: BluetoothTransport, callback: AsyncCallback<void>): void;



  /**

   * Starts pairing with a credible remote Bluetooth device with transport.

   * This interface does not trigger a dialog box and does not require user authorization.

   * Only specific system application can use this function.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { BluetoothTransport } transport - the transport of the remote device to pair.

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function pairCredibleDevice(deviceId: string, transport: BluetoothTransport): Promise<void>;



  /**

   * Starts pairing with a remote Bluetooth device using the Out Of Band mechanism.

   * This function is asynchronous, and the pairing status is obtained by listening to the bondStateChange event.

   * If both p192Data and p256Data are null, the function call will fail.

   * If both p192Data and p256Data are used simultaneously, p256Data takes effect.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { BluetoothTransport } transport  - Indicates the transport of a remote Bluetooth device.

   * @param { OobData | null } p192Data  - The out-of-band data (P192), or null if not available.

   * @param { OobData | null } p256Data  - The out-of-band data (P256), or null if not available.

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 23 dynamic

   */

  function pairDeviceOutOfBand(transport: BluetoothTransport, p192Data: OobData | null,

    p256Data: OobData | null): Promise<void>;



  /**

   * Starts pairing with the specific remote Bluetooth device using the Out Of Band mechanism.

   * This function is asynchronous, and the pairing status is obtained by listening to the bondStateChange event.

   * If both p192Data and p256Data are not used, the function call will fail.

   * If both p192Data and p256Data are used simultaneously, p256Data takes effect.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { BluetoothTransport } transport - Indicates the transport of a remote Bluetooth device.

   * @param { OobData } [p192Data] - The out-of-band data (P192).

   * @param { OobData } [p256Data] - The out-of-band data (P256).

   * @returns { Promise<void> } Promise that returns no value.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 26.0.0 dynamic

   */

  function startPairOutOfBand(deviceId: string, transport: BluetoothTransport, p192Data?: OobData,

    p256Data?: OobData): Promise<void>;



  /**

   * Remove a paired remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { AsyncCallback<void> } callback - the callback of cancelPairedDevice.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function cancelPairedDevice(deviceId: string, callback: AsyncCallback<void>): void;



  /**

   * Remove a paired remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function cancelPairedDevice(deviceId: string): Promise<void>;



  /**

   * Remove a pairing remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { AsyncCallback<void> } callback - the callback of cancelPairingDevice.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function cancelPairingDevice(deviceId: string, callback: AsyncCallback<void>): void;



  /**

   * Remove a pairing remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function cancelPairingDevice(deviceId: string): Promise<void>;



  /**

   * Obtains the name of a peer Bluetooth device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { string } Returns the device name in character string format.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @atomicservice [since 12]

   * @since 10 dynamic

   */

  function getRemoteDeviceName(deviceId: string): string;



  /**

   * Obtains the name or alias of the Bluetooth peer device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { boolean } [alias] - Indicates whether to obtain the device alias. If the parameter is not provided, the

   *     device alias is obtained by default.

   * @returns { string } Returns the device name in character string format.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Failed to obtain the name or alias of the peer Bluetooth device.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @atomicservice

   * @since 16 dynamic

   * @since 23 static

   */

  function getRemoteDeviceName(deviceId: string, alias?: boolean): string;



  /**

   * Obtains the class of a peer Bluetooth device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 10 - 17]

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { DeviceClass } The class of the remote device.

   * @throws { BusinessError } 201 - Permission denied. [since 10 - 17]

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  function getRemoteDeviceClass(deviceId: string): DeviceClass;



  /**

   * Get the transport of the bluetooth device.

   *

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { BluetoothTransport } The transport of bluetooth device.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Get transport failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 20 dynamic

   */

  function getRemoteDeviceTransport(deviceId: string): BluetoothTransport;



  /**

   * Obtains the Bluetooth local name of a device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @returns { string } Returns the name the device.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  function getLocalName(): string;



  /**

   * Obtains the list of Bluetooth devices that have been paired with the current device.

   * On API 26.0.0 and above, if the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC,

   * the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 10 - 24]

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC) [since 26.0.0]

   * @returns { Array<string> } Returns a list of paired Bluetooth devices's address.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @atomicservice [since 12]

   * @since 10 dynamic

   * @since 23 static

   */

  function getPairedDevices(): Array<string>;



  /**

   * Obtains the pair state of a specified device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { BondState } Returns the pair state.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @atomicservice [since 12]

   * @since 11 dynamic

   * @since 23 static

   */

  function getPairState(deviceId: string): BondState;



  /**

   * Sets the confirmation of pairing with a certain device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { boolean } accept - Indicates whether to accept the pairing request, {@code true} indicates accept or

   *     {@code false} otherwise.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function setDevicePairingConfirmation(deviceId: string, accept: boolean): void;



  /**

   * Set the pin during pairing when the pin type is PIN_TYPE_ENTER_PIN_CODE.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { string } code - The pin code entered by the user.

   * @param { AsyncCallback<void> } callback - the callback of setDevicePinCode.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function setDevicePinCode(deviceId: string, code: string, callback: AsyncCallback<void>): void;



  /**

   * Set the pin during pairing when the pin type is PIN_TYPE_ENTER_PIN_CODE.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { string } code - The pin code entered by the user.

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function setDevicePinCode(deviceId: string, code: string): Promise<void>;



  /**

   * Sets the Bluetooth friendly name of a device. It is used only by system applications for security.

   * If a non-system application invokes the interface, exception 801 is thrown.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } name - Indicates a valid Bluetooth name.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 10 dynamic

   * @deprecated since 12

   */

  function setLocalName(name: string): void;



  /**

   * Sets the Bluetooth scan mode for a device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { ScanMode } mode - Indicates the Bluetooth scan mode to set.

   * @param { int } duration - Indicates the duration in seconds, in which the host is discoverable.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function setBluetoothScanMode(mode: ScanMode, duration: int): void;



  /**

   * Obtains the Bluetooth scanning mode of a device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @returns { ScanMode } Returns the Bluetooth scanning mode.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  function getBluetoothScanMode(): ScanMode;



  /**

   * Starts scanning Bluetooth devices.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @atomicservice [since 12]

   * @since 10 dynamic

   * @since 23 static

   */

  function startBluetoothDiscovery(): void;



  /**

   * Stops Bluetooth device scanning.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @atomicservice [since 12]

   * @since 10 dynamic

   * @since 23 static

   */

  function stopBluetoothDiscovery(): void;



  /**

   * Check if bluetooth is discovering.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @returns { boolean } Returns {@code true} if the local device is discovering; returns {@code false} otherwise.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 11 dynamic

   * @since 23 static

   */

  function isBluetoothDiscovering(): boolean;



  /**

   * Obtains the profile UUIDs supported by the local device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { AsyncCallback<Array<ProfileUuids>> } callback - the callback of getLocalProfileUuids.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function getLocalProfileUuids(callback: AsyncCallback<Array<ProfileUuids>>): void;



  /**

   * Obtains the profile UUIDs supported by the local device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @returns { Promise<Array<ProfileUuids>> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  function getLocalProfileUuids(): Promise<Array<ProfileUuids>>;



  /**

   * Obtains the profile UUIDs supported by the remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { AsyncCallback<Array<ProfileUuids>> } callback - the callback of getRemoteProfileUuids.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs. [since 10 - 11]

   * @throws { BusinessError } 401 - Invalid parameter.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi [since 10 - 11]

   * @publicapi [since 12]

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  function getRemoteProfileUuids(deviceId: string, callback: AsyncCallback<Array<ProfileUuids>>): void;



  /**

   * Obtains the profile UUIDs supported by the remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { Promise<Array<ProfileUuids>> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs. [since 10 - 11]

   * @throws { BusinessError } 401 - Invalid parameter.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi [since 10 - 11]

   * @publicapi [since 12]

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  function getRemoteProfileUuids(deviceId: string): Promise<Array<ProfileUuids>>;



  /**

   * Connects all allowed bluetooth profiles between the local and remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH [since 11 - 15]

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 16]

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { AsyncCallback<void> } callback - the callback result.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs. [since 11 - 15]

   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi [since 11 - 15]

   * @publicapi [since 16]

   * @stagemodelonly

   * @since 11 dynamic

   * @since 23 static

   */

  function connectAllowedProfiles(deviceId: string, callback: AsyncCallback<void>): void;



  /**

   * Connects all allowed bluetooth profiles between the local and remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH [since 11 - 15]

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 16]

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs. [since 11 - 15]

   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi [since 11 - 15]

   * @publicapi [since 16]

   * @stagemodelonly

   * @since 11 dynamic

   * @since 23 static

   */

  function connectAllowedProfiles(deviceId: string): Promise<void>;



  /**

   * Disconnects all allowed bluetooth profiles between the local and remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { AsyncCallback<void> } callback - the callback result.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 11 dynamic

   * @since 23 static

   */

  function disconnectAllowedProfiles(deviceId: string, callback: AsyncCallback<void>): void;



  /**

   * Get remote device battery information.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { Promise<BatteryInfo> } Returns battery info.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 12 dynamic

   * @since 23 static

   */

  function getRemoteDeviceBatteryInfo(deviceId: string): Promise<BatteryInfo>;



  /**

   * Obtains the product ID of a remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH [since 11 - 15]

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { string } Returns the remote device's product ID.

   * @throws { BusinessError } 201 - Permission denied. [since 11 - 15]

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 11 dynamic

   * @since 23 static

   */

  function getRemoteProductId(deviceId: string): string;



  /**

   * Disconnects all allowed bluetooth profiles between the local and remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH [since 11 - 24]

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 26.0.0]

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs. [since 11 - 24]

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed. [since 11 - 24]

   * @throws { BusinessError } 801 - Capability not supported.

   *     Failed to call the API when the short-range chip is not inserted on 2in1 device.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi [since 11 - 24]

   * @publicapi [since 26.0.0]

   * @stagemodelonly

   * @since 11 dynamic

   * @since 23 static

   */

  function disconnectAllowedProfiles(deviceId: string): Promise<void>;



  /**

   * Modify remote device name.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { string } name - New device name. Max length is 64 bytes.

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @atomicservice

   * @since 12 dynamic

   * @since 23 static

   */

  function setRemoteDeviceName(deviceId: string, name: string): Promise<void>;



  /**

   * Set remote device custom type.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { DeviceType } type - Indicates device type.

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 12 dynamic

   * @since 23 static

   */

  function setRemoteDeviceType(deviceId: string, type: DeviceType): Promise<void>;



  /**

   * Get remote device custom type.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 12 - 17]

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { Promise<DeviceType> } Returns the device type.

   * @throws { BusinessError } 201 - Permission denied. [since 12 - 17]

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs. [since 18]

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 12 dynamic

   * @since 23 static

   */

  function getRemoteDeviceType(deviceId: string): Promise<DeviceType>;



  /**

   * Controls the actions of Bluetooth peripherals.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH

   * @param { ControlDeviceActionParams } controlDeviceActionParams - Indicates the action for Bluetooth peripherals.

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 15 dynamic

   * @since 23 static

   */

  function controlDeviceAction(controlDeviceActionParams: ControlDeviceActionParams): Promise<void>;



  /**

   * Get latest connection time of device.

   *

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @returns { Promise<long> } Returns latest connection time.

   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 15 dynamic

   * @since 23 static

   */

  function getLastConnectionTime(deviceId: string): Promise<long>;



  /**

   * update cloud devices.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH

   * @param { TrustedPairedDevices } trustedPairedDevices - Indicates the cloud devices.

   * @returns { Promise<void> } Returns the promise object.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900001 - Service stopped.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 15 dynamic

   * @since 23 static

   */

  function updateCloudBluetoothDevice(trustedPairedDevices: TrustedPairedDevices): Promise<void>;



  /**

   * Generate out-of-band data of the local device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { BluetoothTransport } transport - Indicates the transport of a remote Bluetooth device.

   * @returns { Promise<OobData> } Returns the out-of-band data.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 23 dynamic

   */

  function generateLocalOobData(transport: BluetoothTransport): Promise<OobData>;



  /**

   * Obtain the virtual address of the corresponding device based on the hash value of the real address.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { HashAlgorithmType } algorithmType - Indicate the hash algorithm type.

   * @param { string } hashValue - Indicate the hash value of the device MAC address.

   * @returns { string } Returns the virtual mac address. For example, "11:22:33:AA:BB:FF".

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   *     Failed to call the API when the short-range chip is not inserted on 2in1 device.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900015 - Parameter format mismatch with specification.

   * @throws { BusinessError } 2900016 - Device unpaired.

   * @throws { BusinessError } 2900099 - Internal system error. For example, IPC error.

   *     Detailed error messages can be used to assist in locating the problem.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 24 dynamic

   */

  function getVirtualAddressByHash(algorithmType: HashAlgorithmType, hashValue: string): string;



  /**

   * Set the dfx data of car key.

   *

   * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

   * @param { CarKeyActionType } action - Indicates the action to set the data.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 801 - Capability not supported.

   *     Failed to call the API when the short-range chip is not inserted on 2in1 device.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 26.0.0 dynamic

   */

  function setCarKeyDfxData(deviceId: string, action: CarKeyActionType): void;



  /**

   * Get the dfx data of car key.

   *

   * @returns { string } Returns the dfx data in character string format.

   * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

   * @throws { BusinessError } 801 - Capability not supported.

   *     Failed to call the API when the short-range chip is not inserted on the 2in1 device.

   * @throws { BusinessError } 2900003 - Bluetooth disabled.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 26.0.0 dynamic

   */

  function getCarKeyDfxData(): string;



  /**

   * Subscribe the event reported when a remote Bluetooth device is discovered.

   * On API 26.0.0 and above, if the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC,

   * the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 10 - 24]

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC) [since 26.0.0]

   * @param { 'bluetoothDeviceFind' } type - Type of the discovering event to listen for.

   * @param { Callback<Array<string>> } callback - Callback used to listen for the discovering event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed. [since 10 - 24]

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @atomicservice [since 12]

   * @since 10 dynamic

   */

  function on(type: 'bluetoothDeviceFind', callback: Callback<Array<string>>): void;



  /**

   * Subscribe the event reported when a remote Bluetooth device is discovered.

   * On API 26.0.0 and above, if the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC,

   * the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 23 - 24]

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC) [since 26.0.0]

   * @param { Callback<Array<string>> } callback - Callback used to listen for the discovering event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform

   * @since 23 static

   */

  function onBluetoothDeviceFind(callback: Callback<Array<string>>): void;



  /**

   * Unsubscribe the event reported when a remote Bluetooth device is discovered.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { 'bluetoothDeviceFind' } type - Type of the discovering event to listen for.

   * @param { Callback<Array<string>> } callback - Callback used to listen for the discovering event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @atomicservice [since 12]

   * @since 10 dynamic

   */

  function off(type: 'bluetoothDeviceFind', callback?: Callback<Array<string>>): void;



  /**

   * Unsubscribe the event reported when a remote Bluetooth device is discovered.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { Callback<Array<string>> } [callback] - Callback used to listen for the discovering event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @crossplatform

   * @since 23 static

   */

  function offBluetoothDeviceFind(callback?: Callback<Array<string>>): void;



  /**

   * Subscribe the event reported when a remote Bluetooth device is discovered.

   * On API 26.0.0 and above, if the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC,

   * the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.GET_BLUETOOTH_PEERS_MAC [since 12 - 17]

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 18 - 24]

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC) [since 26.0.0]

   * @param { 'discoveryResult' } type - Type of the discovering event to listen for.

   * @param { Callback<Array<DiscoveryResult>> } callback - Callback used to listen for the discovering event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed. [since 12 - 24]

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi [since 12 - 17]

   * @publicapi [since 18]

   * @stagemodelonly

   * @since 12 dynamic

   */

  function on(type: 'discoveryResult', callback: Callback<Array<DiscoveryResult>>): void;



  /**

   * Subscribe the event reported when a remote Bluetooth device is discovered.

   * On API 26.0.0 and above, if the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC,

   * the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 23 - 24]

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC) [since 26.0.0]

   * @param { Callback<Array<DiscoveryResult>> } callback - Callback used to listen for the discovering event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 23 static

   */

  function onDiscoveryResult(callback: Callback<Array<DiscoveryResult>>): void;



  /**

   * Unsubscribe the event reported when a remote Bluetooth device is discovered.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.GET_BLUETOOTH_PEERS_MAC [since 12 - 17]

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 18]

   * @param { 'discoveryResult' } type - Type of the discovering event to listen for.

   * @param { Callback<Array<DiscoveryResult>> } callback - Callback used to listen for the discovering event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi [since 12 - 17]

   * @publicapi [since 18]

   * @stagemodelonly

   * @since 12 dynamic

   */

  function off(type: 'discoveryResult', callback?: Callback<Array<DiscoveryResult>>): void;



  /**

   * Unsubscribe the event reported when a remote Bluetooth device is discovered.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { Callback<Array<DiscoveryResult>> } [callback] - Callback used to listen for the discovering event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 23 static

   */

  function offDiscoveryResult(callback?: Callback<Array<DiscoveryResult>>): void;



  /**

   * Subscribe the event reported when a remote Bluetooth device is bonded.

   * On API 26.0.0 and above, if the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC,

   * the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 10 - 24]

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC) [since 26.0.0]

   * @param { 'bondStateChange' } type - Type of the bond state event to listen for.

   * @param { Callback<BondStateParam> } callback - Callback used to listen for the bond state event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed. [since 10 - 24]

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   */

  function on(type: 'bondStateChange', callback: Callback<BondStateParam>): void;



  /**

   * Subscribe the event reported when a remote Bluetooth device is bonded.

   * On API 26.0.0 and above, if the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC,

   * the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 23 - 24]

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC) [since 26.0.0]

   * @param { Callback<BondStateParam> } callback - Callback used to listen for the bond state event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform

   * @since 23 static

   */

  function onBondStateChange(callback: Callback<BondStateParam>): void;



  /**

   * Unsubscribe the event reported when a remote Bluetooth device is bonded.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { 'bondStateChange' } type - Type of the bond state event to listen for.

   * @param { Callback<BondStateParam> } callback - Callback used to listen for the bond state event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   */

  function off(type: 'bondStateChange', callback?: Callback<BondStateParam>): void;



  /**

   * Unsubscribe the event reported when a remote Bluetooth device is bonded.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { Callback<BondStateParam> } [callback] - Callback used to listen for the bond state event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform

   * @since 23 static

   */

  function offBondStateChange(callback?: Callback<BondStateParam>): void;



  /**

   * Subscribe the event of a pairing request from a remote Bluetooth device.

   * On API 26.0.0 and above, if the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC,

   * the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 10 - 24]

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC) [since 26.0.0]

   * @param { 'pinRequired' } type - Type of the pairing request event to listen for.

   * @param { Callback<PinRequiredParam> } callback - Callback used to listen for the pairing request event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed. [since 10 - 24]

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 10 dynamic

   */

  function on(type: 'pinRequired', callback: Callback<PinRequiredParam>): void;



  /**

   * Subscribe the event of a pairing request from a remote Bluetooth device.

   * On API 26.0.0 and above, if the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC,

   * the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH [since 23 - 24]

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC) [since 26.0.0]

   * @param { Callback<PinRequiredParam> } callback - Callback used to listen for the pairing request event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 23 static

   */

  function onPinRequired(callback: Callback<PinRequiredParam>): void;



  /**

   * Unsubscribe the event of a pairing request from a remote Bluetooth device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { 'pinRequired' } type - Type of the pairing request event to listen for.

   * @param { Callback<PinRequiredParam> } callback - Callback used to listen for the pairing request event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 10 dynamic

   */

  function off(type: 'pinRequired', callback?: Callback<PinRequiredParam>): void;



  /**

   * Unsubscribe the event of a pairing request from a remote Bluetooth device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { Callback<PinRequiredParam> } [callback] - Callback used to listen for the pairing request event.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 23 static

   */

  function offPinRequired(callback?: Callback<PinRequiredParam>): void;



  /**

   * Subscribe the event of battery state changed from a remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { 'batteryChange' } type - Type of the battery event to listen for.

   * @param { Callback<BatteryInfo> } callback - Callback used to listen.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 12 dynamic

   */

  function on(type: 'batteryChange', callback: Callback<BatteryInfo>): void;



  /**

   * Subscribe the event of battery state changed from a remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { Callback<BatteryInfo> } callback - Callback used to listen.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 23 static

   */

  function onBatteryChange(callback: Callback<BatteryInfo>): void;



  /**

   * Unsubscribe the event of battery state changed from a remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { 'batteryChange' } type - Type of the battery event to listen for.

   * @param { Callback<BatteryInfo> } callback - Callback used to listen.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 12 dynamic

   */

  function off(type: 'batteryChange', callback?: Callback<BatteryInfo>): void;



  /**

   * Unsubscribe the event of battery state changed from a remote device.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { Callback<BatteryInfo> } [callback] - Callback used to listen.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 23 static

   */

  function offBatteryChange(callback?: Callback<BatteryInfo>): void;



  /**

   * Subscribe to an event indicating that the scanning mode of the local device has changed.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { Callback<ScanMode> } callback - Callback used to listen.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 23 dynamic

   */

  function onScanModeChange(callback: Callback<ScanMode>): void;



  /**

   * Unsubscribe to an event indicating that the scanning mode of the local device has changed.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH

   * @param { Callback<ScanMode> } [callback] - Callback used to listen.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   * @throws { BusinessError } 2900099 - Operation failed.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 23 dynamic

   */

  function offScanModeChange(callback?: Callback<ScanMode>): void;



  /**

   * Subscribe the event of acl state changed from a remote device.

   * If the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC, the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC)

   * @param { Callback<AclStateResult> } callback - Callback used to listen.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   *     Failed to call the API when the short-range chip is not inserted on 2in1 device.

   * @throws { BusinessError } 2900099 - Internal system error. For example, IPC error.

   *     Detailed error messages can be used to assist in locating the problem.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 26.0.0 dynamic

   */

  function onAclStateChange(callback: Callback<AclStateResult>): void;



  /**

   * Unsubscribe the event of acl state changed from a remote device.

   * If the application has ohos.permission.GET_BLUETOOTH_PEERS_MAC, the type of the peer device address is real.

   * Otherwise, the type of the peer device address is virtual.

   *

   * @permission ohos.permission.ACCESS_BLUETOOTH or (ohos.permission.ACCESS_BLUETOOTH and

   *     ohos.permission.GET_BLUETOOTH_PEERS_MAC)

   * @param { Callback<AclStateResult> } [callback] - Callback used to listen.

   * @throws { BusinessError } 201 - Permission denied.

   * @throws { BusinessError } 801 - Capability not supported.

   *     Failed to call the API when the short-range chip is not inserted on 2in1 device.

   * @throws { BusinessError } 2900099 - Internal system error. For example, IPC error.

   *     Detailed error messages can be used to assist in locating the problem.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 26.0.0 dynamic

   */

  function offAclStateChange(callback?: Callback<AclStateResult>): void;



  /**

   * Describes the class of a bluetooth device.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  interface BondStateParam {

    /**

     * Address of a Bluetooth device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @since 10 dynamic

     * @since 23 static

     */

    deviceId: string;

    /**

     * Profile connection state of the device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @since 10 dynamic

     * @since 23 static

     */

    state: BondState;

    /**

     * Cause of unbond.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @since 12 dynamic

     * @since 23 static

     */

    cause: UnbondCause;

    /**

     * Cause message of unbond.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 26.0.0 dynamic

     */

    causeMessage?: string;

  }



  /**

   * Describes the bond key param.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  interface PinRequiredParam {

    /**

     * ID of the device to pair.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    deviceId: string;

    /**

     * Key for the device pairing.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    pinCode: string;

    /**

     * Indicates the pairing type to a peer device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    pinType: PinType;

  }



  /**

   * Describes the class of a bluetooth device.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  interface DeviceClass {

    /**

     * Major classes of Bluetooth devices.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @since 10 dynamic

     * @since 23 static

     */

    majorClass: MajorClass;

    /**

     * Major and minor classes of Bluetooth devices.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @since 10 dynamic

     * @since 23 static

     */

    majorMinorClass: MajorMinorClass;

    /**

     * Class of the device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @since 10 dynamic

     * @since 23 static

     */

    classOfDevice: int;

  }



  /**

   * Enum for the transport of a remote device

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  enum BluetoothTransport {

    /**

     * The value of bluetooth transport BR/EDR.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    TRANSPORT_BR_EDR = 0,

    /**

     * The value of bluetooth transport LE.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    TRANSPORT_LE = 1,

    /**

     * The value of bluetooth transport DUAL.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 20 dynamic

     */

    TRANSPORT_DUAL = 2,

    /**

     * The unknown bluetooth transport.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 20 dynamic

     */

    TRANSPORT_UNKNOWN = 3

  }



  /**

   * The enum of BR scan mode.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 10 dynamic

   * @since 23 static

   */

  enum ScanMode {

    /**

     * Indicates the scan mode is none

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @since 10 dynamic

     * @since 23 static

     */

    SCAN_MODE_NONE = 0,

    /**

     * Indicates the scan mode is connectable

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @since 10 dynamic

     * @since 23 static

     */

    SCAN_MODE_CONNECTABLE = 1,

    /**

     * Indicates the scan mode is general discoverable

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    SCAN_MODE_GENERAL_DISCOVERABLE = 2,

    /**

     * Indicates the scan mode is limited discoverable

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    SCAN_MODE_LIMITED_DISCOVERABLE = 3,

    /**

     * Indicates the scan mode is connectable and general discoverable

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @since 10 dynamic

     * @since 23 static

     */

    SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE = 4,

    /**

     * Indicates the scan mode is connectable and limited discoverable

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    SCAN_MODE_CONNECTABLE_LIMITED_DISCOVERABLE = 5

  }



  /**

   * The enum of bond state.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @atomicservice [since 12]

   * @since 10 dynamic

   * @since 23 static

   */

  enum BondState {

    /**

     * Indicate the bond state is invalid

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @atomicservice [since 12]

     * @since 10 dynamic

     * @since 23 static

     */

    BOND_STATE_INVALID = 0,

    /**

     * Indicate the bond state is bonding

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @atomicservice [since 12]

     * @since 10 dynamic

     * @since 23 static

     */

    BOND_STATE_BONDING = 1,

    /**

     * Indicate the bond state is bonded

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @atomicservice [since 12]

     * @since 10 dynamic

     * @since 23 static

     */

    BOND_STATE_BONDED = 2

  }



  /**

   * Enum for the type of pairing to a remote device

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 10 dynamic

   * @since 23 static

   */

  enum PinType {

    /**

     * The user needs to enter the pin code displayed on the peer device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    PIN_TYPE_ENTER_PIN_CODE = 0,

    /**

     * The user needs to enter the passkey displayed on the peer device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    PIN_TYPE_ENTER_PASSKEY = 1,

    /**

     * The user needs to confirm the passkey displayed on the local device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    PIN_TYPE_CONFIRM_PASSKEY = 2,

    /**

     * The user needs to accept or deny the pairing request.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    PIN_TYPE_NO_PASSKEY_CONSENT = 3,

    /**

     * The user needs to enter the passkey displayed on the local device on the peer device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    PIN_TYPE_NOTIFY_PASSKEY = 4,

    /**

     * The user needs to enter the pin code displayed on the peer device, used for bluetooth 2.0.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    PIN_TYPE_DISPLAY_PIN_CODE = 5,

    /**

     * The user needs to accept or deny the OOB pairing request.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    PIN_TYPE_OOB_CONSENT = 6,

    /**

     * The user needs to enter the 16-digit pin code displayed on the peer device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 10 dynamic

     * @since 23 static

     */

    PIN_TYPE_PIN_16_DIGITS = 7

  }



  /**

   * Describes the contents of the discovery results

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi [since 12 - 17]

   * @publicapi [since 18]

   * @stagemodelonly

   * @since 12 dynamic

   * @since 23 static

   */

  interface DiscoveryResult {

    /**

     * Identify of the discovery device

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi [since 12 - 17]

     * @publicapi [since 18]

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    deviceId: string;

    /**

     * RSSI of the remote device

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi [since 12 - 17]

     * @publicapi [since 18]

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    rssi: int;

    /**

     * The local name of the device

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi [since 12 - 17]

     * @publicapi [since 18]

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    deviceName: string;

    /**

     * The class of the device

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi [since 12 - 17]

     * @publicapi [since 18]

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    deviceClass: DeviceClass;

  }



  /**

   * Describes the contents of the battery information.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 12 dynamic

   * @since 23 static

   */

  interface BatteryInfo {

    /**

     * Identify of the discovery device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    deviceId: string;

    /**

     * Electricity value of the general device. {@code -1} means no power information.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    batteryLevel: int;

    /**

     * Electricity value of the left ear. {@code -1} means no power information.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    leftEarBatteryLevel: int;

    /**

     * The charge state of the left ear.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    leftEarChargeState: DeviceChargeState;

    /**

     * Electricity value of the right ear. {@code -1} means no power information.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    rightEarBatteryLevel: int;

    /**

     * The charge state of the right ear.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    rightEarChargeState: DeviceChargeState;

    /**

     * Electricity value of the box. {@code -1} means no power information.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    boxBatteryLevel: int;

    /**

     * The charge state of the box.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    boxChargeState: DeviceChargeState;

  }



  /**

   * Enum for the charge state.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 12 dynamic

   * @since 23 static

   */

  enum DeviceChargeState {

    /**

     * Not support super charge, and not charged.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_NORMAL_CHARGE_NOT_CHARGED = 0,

    /**

     * Not support super charge, and in charging.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_NORMAL_CHARGE_IN_CHARGING = 1,

    /**

     * Support super charge, and not charged.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_SUPER_CHARGE_NOT_CHARGED = 2,

    /**

     * Support super charge, and in charging.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_SUPER_CHARGE_IN_CHARGING = 3

  }



  /**

   * Enum for the custom type of remote device.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 12 dynamic

   * @since 23 static

   */

  enum DeviceType {

    /**

     * Default type, the type is consistent with COD.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_TYPE_DEFAULT = 0,

    /**

     * Car bluetooth.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_TYPE_CAR = 1,

    /**

     * Headset bluetooth.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_TYPE_HEADSET = 2,

    /**

     * Hearing Aid.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_TYPE_HEARING = 3,

    /**

     * Glasses device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_TYPE_GLASSES = 4,

    /**

     * Watch device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_TYPE_WATCH = 5,

    /**

     * Speaker device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_TYPE_SPEAKER = 6,

    /**

     * Others bluetooth.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    DEVICE_TYPE_OTHERS = 7

  }



  /**

   * Enum for cause of unbond.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @crossplatform [since 13]

   * @since 12 dynamic

   * @since 23 static

   */

  enum UnbondCause {

    /**

     * User proactively removed device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @crossplatform [since 13]

     * @since 12 dynamic

     * @since 23 static

     */

    USER_REMOVED = 0,

    /**

     * Remote device shut down.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    REMOTE_DEVICE_DOWN = 1,

    /**

     * Wrong PIN code.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    AUTH_FAILURE = 2,

    /**

     * Remote device rejected.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    AUTH_REJECTED = 3,

    /**

     * Internal error.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 12 dynamic

     * @since 23 static

     */

    INTERNAL_ERROR = 4

  }

  /**

   * Describes information about controlling the Bluetooth peripheral.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 15 dynamic

   * @since 23 static

   */

  interface ControlDeviceActionParams {

    /**

     * Indicates the address of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    deviceId: string;

    /**

     * Indicates the control type.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    type: ControlType;

    /**

     * Indicates the control value.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    typeValue: ControlTypeValue;

    /**

     * Indicates the control object.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    controlObject: ControlObject;

  }



  /**

   * Describes the control type.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 15 dynamic

   * @since 23 static

   */

  enum ControlType {

    /**

     * Indicates the control command of play.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    PLAY = 0,

    /**

     * Indicates the control command of vibration.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    VIBRATE = 1,

    /**

     * Indicates the control command of flash.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    FLASH = 2,

    /**

     * Indicates the control command of lock.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    LOCK = 3,

    /**

     * Indicates the control command of erase.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    ERASE = 4

  }



  /**

   * Describes the control type value.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 15 dynamic

   * @since 23 static

   */

  enum ControlTypeValue {

    /**

     * Indicates the action of disable.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    DISABLE = 0,

    /**

     * Indicates the action of enable.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    ENABLE = 1,

    /**

     * Indicates the action of query.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    QUERY = 2

  }



  /**

   * Describes the control object.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 15 dynamic

   * @since 23 static

   */

  enum ControlObject {

    /**

     * Control object of left ear.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    LEFT_EAR = 0,

    /**

     * Control object of right ear.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    RIGHT_EAR = 1,

    /**

     * Control object of left and right ear.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    LEFT_RIGHT_EAR = 2

  }



  /**

   * Describes the cloud pair device.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 15 dynamic

   * @since 23 static

   */

  interface TrustedPairedDevices {

    /**

     * The list of cloud pair devices.

     *

     * @type { Array<TrustedPairedDevice> }

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    trustedPairedDevices: Array<TrustedPairedDevice>;

  }



  /**

   * Describes device of cloud pair.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 15 dynamic

   * @since 23 static

   */

  interface TrustedPairedDevice {

    /**

     * Indicates the device identify.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    sn: string;

    /**

     * Indicates the device type of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    deviceType: string;

    /**

     * Indicates the modelId of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    modelId: string;

    /**

     * Indicates the manufactory of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    manufactory: string;

    /**

     * Indicates the productId of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    productId: string;

    /**

     * Indicates the HiLink version of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    hiLinkVersion: string;

    /**

     * Indicates the macAddress of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    macAddress: string;

    /**

     * Indicates the service type of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    serviceType: string;

    /**

     * Indicates the service id of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    serviceId: string;

    /**

     * The local name of the device

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    deviceName: string;

    /**

     * Indicates the uuid of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    uuids: string;

    /**

     * Indicates the bluetoothClass of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    bluetoothClass: int;

    /**

     * Indicates the token of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    token: ArrayBuffer;

    /**

     * Indicates the deviceNameTime of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    deviceNameTime: long;

    /**

     * Indicates the securityAdvInfo of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    secureAdvertisingInfo: ArrayBuffer;

    /**

     * Indicates the pairState of the peripheral.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 15 dynamic

     * @since 23 static

     */

    pairState: int;

  }



  /**

   * Out Of Band data used in Bluetooth device pairing.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 23 dynamic

   */

  interface OobData {

    /**

     * The address of remote Bluetooth device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 23 dynamic

     */

    deviceId: BluetoothAddress;

    /**

     * Confirmation data in OOB pairing, with a size of 16 octets.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 23 dynamic

     */

    confirmationHash: Uint8Array;

    /**

     * Randomizer data in OOB pairing, with a size of 16 octets.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 23 dynamic

     */

    randomizerHash?: Uint8Array;

    /**

     * The name of the remote Bluetooth device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 23 dynamic

     */

    deviceName?: string;

    /**

     * The role of the remote Bluetooth device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 23 dynamic

     */

    deviceRole?: DeviceRole;

  }

  /**

   * Enum for the role of device.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 23 dynamic

   */

  enum DeviceRole {

    /**

     * Only peripheral supported.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 23 dynamic

     */

    DEVICE_ROLE_PERIPHERAL_ONLY = 0,

    /**

     * Only central supported.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 23 dynamic

     */

    DEVICE_ROLE_CENTRAL_ONLY = 1,

    /**

     * Central & peripheral supported, peripheral preferred.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 23 dynamic

     */

    DEVICE_ROLE_BOTH_PREFER_PERIPHERAL = 2,

    /**

     * Central & peripheral supported, central preferred.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 23 dynamic

     */

    DEVICE_ROLE_BOTH_PREFER_CENTRAL = 3

  }



  /**

   * Enum for the action of car key.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @stagemodelonly

   * @since 26.0.0 dynamic

   */

  enum CarKeyActionType {

    /**

     * Add the data of car key.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 26.0.0 dynamic

     */

    CAR_KEY_ACTION_ADD = 0,

    /**

     * Delete the data of car key.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @stagemodelonly

     * @since 26.0.0 dynamic

     */

    CAR_KEY_ACTION_DELETE = 1

  }



  /**

   * Enum for the hash algorithm type.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 24 dynamic

   */

  enum HashAlgorithmType {

    /**

     * SHA256 hash algorithm

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 24 dynamic

     */

    HASH_ALGORITHM_SHA256 = 0

  }



  /**

   * Acl state change result.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 26.0.0 dynamic

   */

  interface AclStateResult {

    /**

     * The virtual address of a Bluetooth device. For example, "11:22:33:AA:BB:FF".

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 26.0.0 dynamic

     */

    deviceId: string;

    /**

     * Acl state of the device.

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 26.0.0 dynamic

     */

    state: AclState;

  }



  /**

   * The enum of acl state.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @stagemodelonly

   * @since 26.0.0 dynamic

   */

  export enum AclState {

    /**

     * acl is connected

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 26.0.0 dynamic

     */

    STATE_CONNECTED = 0,

    /**

     * acl is disconnected

     *

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @stagemodelonly

     * @since 26.0.0 dynamic

     */

    STATE_DISCONNECTED = 1

  }

}



export default connection;