import { Device } from './Device';
import { Service } from './Service';
import { Characteristic } from './Characteristic';
import { Descriptor } from './Descriptor';
import { State, LogLevel, ConnectionPriority } from './TypeDefinition';
import { BleError } from './BleError';
import type { NativeCharacteristic, NativeDescriptor } from './BleModule';
import type { BleErrorCodeMessageMapping, Subscription, DeviceId, Identifier, UUID, TransactionId, CharacteristicSubscriptionType, Base64, ScanOptions, ConnectionOptions, BleManagerOptions, BackgroundModeOptions } from './TypeDefinition';
/**
 *
 * BleManager is an entry point for react-native-ble-plx library. It provides all means to discover and work with
 * {@link Device} instances. It should be initialized only once with `new` keyword and method
 * {@link #blemanagerdestroy|destroy()} should be called on its instance when user wants to deallocate all resources.
 *
 * In case you want to properly support Background Mode, you should provide `restoreStateIdentifier` and
 * `restoreStateFunction` in {@link BleManagerOptions}.
 *
 * @example
 * const manager = new BleManager();
 * // ... work with BLE manager ...
 * manager.destroy();
 */
export declare class BleManager {
    _scanEventSubscription: any | null;
    _eventEmitter: any;
    _uniqueId: number;
    _activePromises: {
        [id: string]: (error: BleError) => void;
    };
    _activeSubscriptions: {
        [id: string]: Subscription;
    };
    _errorCodesToMessagesMapping: BleErrorCodeMessageMapping;
    static sharedInstance: BleManager | null;
    /**
     * Creates an instance of {@link BleManager}.
     * It will return already created instance if it was created before.
     * If you want to create a new instance to for example use different options, you have to call {@link #blemanagerdestroy|destroy()} on the previous one.
     */
    constructor(options?: BleManagerOptions);
    /**
     * Destroys all promises which are in progress.
     * @private
     */
    _destroyPromises(): void;
    /**
     * Destroys all subscriptions.
     * @private
     */
    _destroySubscriptions(): void;
    /**
     * Destroys {@link BleManager} instance. A new instance needs to be created to continue working with
     * this library. All operations which were in progress completes with
     * @returns {Promise<void>} Promise may return an error when the function cannot be called.
     * {@link #bleerrorcodebluetoothmanagerdestroyed|BluetoothManagerDestroyed} error code.
     */
    destroy(): Promise<void>;
    /**
     * Debug method to check if BLE restoration components are available.
     * Useful for diagnosing issues with the Restoration subspec installation.
     *
     * @returns {Promise<{blePlxRestorationAdapterFound: boolean, bleRestorationRegistryFound: boolean, hasRegisterSelector: boolean, initializeWasCalled: boolean}>}
     * Status object indicating which restoration components are available in the native binary.
     */
    checkRestorationStatus(): Promise<{
        blePlxRestorationAdapterFound: boolean;
        bleRestorationRegistryFound: boolean;
        hasRegisterSelector: boolean;
        initializeWasCalled: boolean;
    }>;
    /**
     * Generates new unique identifier to be used internally.
     *
     * @returns {string} New identifier.
     * @private
     */
    _nextUniqueID(): string;
    /**
     * Calls promise and checks if it completed successfully
     *
     * @param {Promise<T>} promise Promise to be called
     * @returns {Promise<T>} Value of called promise.
     * @private
     */
    _callPromise<T>(promise: Promise<T>): Promise<T>;
    /**
     * Sets new log level for native module's logging mechanism.
     * @param {LogLevel} logLevel New log level to be set.
     * @returns {Promise<LogLevel>} Current log level.
     */
    setLogLevel(logLevel: keyof typeof LogLevel): Promise<keyof typeof LogLevel | void>;
    /**
     * Get current log level for native module's logging mechanism.
     * @returns {Promise<LogLevel>} Current log level.
     */
    logLevel(): Promise<keyof typeof LogLevel>;
    /**
     * Cancels pending transaction.
     *
     * Few operations such as monitoring characteristic's value changes can be cancelled by a user. Basically every API
     * entry which accepts `transactionId` allows to call `cancelTransaction` function. When cancelled operation is a
     * promise or a callback which registers errors, {@link #bleerror|BleError} with error code
     * {@link #bleerrorcodeoperationcancelled|OperationCancelled} will be emitted in that case. Cancelling transaction
     * which doesn't exist is ignored.
     *
     * @example
     * const transactionId = 'monitor_battery';
     *
     * // Monitor battery notifications
     * manager.monitorCharacteristicForDevice(
     *   device.id, '180F', '2A19',
     *   (error, characteristic) => {
     *   // Handle battery level changes...
     * }, transactionId);
     *
     * // Cancel after specified amount of time
     * setTimeout(() => manager.cancelTransaction(transactionId), 2000);
     *
     * @param {TransactionId} transactionId Id of pending transactions.
     * @returns {Promise<void>}
     */
    cancelTransaction(transactionId: TransactionId): Promise<void>;
    /**
     * Current, global {@link State} of a {@link BleManager}. All APIs are working only when active state
     * is "PoweredOn".
     *
     * @returns {Promise<State>} Promise which emits current state of BleManager.
     */
    state(): Promise<keyof typeof State>;
    /**
     * Notifies about {@link State} changes of a {@link BleManager}.
     *
     * @example
     * const subscription = this.manager.onStateChange((state) => {
     *      if (state === 'PoweredOn') {
     *          this.scanAndConnect();
     *          subscription.remove();
     *      }
     *  }, true);
     *
     * @param {function(newState: State)} listener Callback which emits state changes of BLE Manager.
     * Look at {@link State} for possible values.
     * @param {boolean} [emitCurrentState=false] If true, current state will be emitted as well. Defaults to false.
     *
     * @returns {Subscription} Subscription on which `remove()` function can be called to unsubscribe.
     */
    onStateChange(listener: (newState: keyof typeof State) => void, emitCurrentState?: boolean): Subscription;
    /**
     * Starts device scanning. When previous scan is in progress it will be stopped before executing this command.
     *
     * @param {?Array<UUID>} UUIDs Array of strings containing {@link UUID}s of {@link Service}s which are registered in
     * scanned {@link Device}. If `null` is passed, all available {@link Device}s will be scanned.
     * @param {?ScanOptions} options Optional configuration for scanning operation.
     * @param {function(error: ?BleError, scannedDevice: ?Device)} listener Function which will be called for every scanned
     * @returns {Promise<void>} Promise may return an error when the function cannot be called.
     * {@link Device} (devices may be scanned multiple times). It's first argument is potential {@link Error} which is set
     * to non `null` value when scanning failed. You have to start scanning process again if that happens. Second argument
     * is a scanned {@link Device}.
     * @returns {Promise<void>} the promise may be rejected if the operation is impossible to perform.
     */
    startDeviceScan(UUIDs: Array<UUID> | null, options: ScanOptions | null, listener: (error: BleError | null, scannedDevice: Device | null) => void): Promise<void>;
    /**
     * Stops {@link Device} scan if in progress.
     * @returns {Promise<void>} the promise may be rejected if the operation is impossible to perform.
     */
    stopDeviceScan(): Promise<void>;
    /**
     * Request a connection parameter update. This functions may update connection parameters on Android API level 21 or
     * above.
     *
     * @param {DeviceId} deviceIdentifier Device identifier.
     * @param {ConnectionPriority} connectionPriority: Connection priority.
     * @param {?TransactionId} transactionId Transaction handle used to cancel operation.
     * @returns {Promise<Device>} Connected device.
     */
    requestConnectionPriorityForDevice(deviceIdentifier: DeviceId, connectionPriority: ConnectionPriority, transactionId?: TransactionId): Promise<Device>;
    /**
     * Reads RSSI for connected device.
     *
     * @param {DeviceId} deviceIdentifier Device identifier.
     * @param {?TransactionId} transactionId Transaction handle used to cancel operation
     * @returns {Promise<Device>} Connected device with updated RSSI value.
     */
    readRSSIForDevice(deviceIdentifier: DeviceId, transactionId?: TransactionId): Promise<Device>;
    /**
     * Request new MTU value for this device. This function currently is not doing anything
     * on iOS platform as MTU exchange is done automatically. Since Android 14,
     * mtu management has been changed, more information can be found at the link:
     * https://developer.android.com/about/versions/14/behavior-changes-all#mtu-set-to-517
     * @param {DeviceId} deviceIdentifier Device identifier.
     * @param {number} mtu New MTU to negotiate.
     * @param {?TransactionId} transactionId Transaction handle used to cancel operation
     * @returns {Promise<Device>} Device with updated MTU size. Default value is 23 (517 since Android 14)..
     */
    requestMTUForDevice(deviceIdentifier: DeviceId, mtu: number, transactionId?: TransactionId): Promise<Device>;
    /**
     * Returns a list of known devices by their identifiers.
     * @param {Array<DeviceId>} deviceIdentifiers List of device identifiers.
     * @returns {Promise<Array<Device>>} List of known devices by their identifiers.
     */
    devices(deviceIdentifiers: Array<DeviceId>): Promise<Array<Device>>;
    /**
     * Returns a list of the peripherals (containing any of the specified services) currently connected to the system
     * which have discovered services. Returned devices **may not be connected** to your application. Make sure to check
     * if that's the case with function {@link #blemanagerisdeviceconnected|isDeviceConnected}.
     * @param {Array<UUID>} serviceUUIDs List of service UUIDs. Device must contain at least one of them to be listed.
     * @returns {Promise<Array<Device>>} List of known devices with discovered services as stated in the parameter.
     */
    connectedDevices(serviceUUIDs: Array<UUID>): Promise<Array<Device>>;
    /**
     * Connects to {@link Device} with provided ID.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @param {?ConnectionOptions} options Platform specific options for connection establishment.
     * @returns {Promise<Device>} Connected {@link Device} object if successful.
     */
    connectToDevice(deviceIdentifier: DeviceId, options?: ConnectionOptions): Promise<Device>;
    /**
     * Disconnects from {@link Device} if it's connected or cancels pending connection.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier to be closed.
     * @returns {Promise<Device>} Returns closed {@link Device} when operation is successful.
     */
    cancelDeviceConnection(deviceIdentifier: DeviceId): Promise<Device>;
    /**
     * Monitors if {@link Device} was disconnected due to any errors or connection problems.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier to be monitored.
     * @param {function(error: ?BleError, device: Device)} listener - callback returning error as a reason of disconnection
     * if available and {@link Device} object. If an error is null, that means the connection was terminated by
     * {@link #blemanagercanceldeviceconnection|bleManager.cancelDeviceConnection()} call.
     * @returns {Subscription} Subscription on which `remove()` function can be called to unsubscribe.
     */
    onDeviceDisconnected(deviceIdentifier: DeviceId, listener: (error: BleError | null, device: Device) => void): Subscription;
    /**
     * Check connection state of a {@link Device}.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @returns {Promise<boolean>} Promise which emits `true` if device is connected, and `false` otherwise.
     */
    isDeviceConnected(deviceIdentifier: DeviceId): Promise<boolean>;
    /**
     * Discovers all {@link Service}s,  {@link Characteristic}s and {@link Descriptor}s for {@link Device}.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @param {?TransactionId} transactionId Transaction handle used to cancel operation
     * @returns {Promise<Device>} Promise which emits {@link Device} object if all available services and
     * characteristics have been discovered.
     */
    discoverAllServicesAndCharacteristicsForDevice(deviceIdentifier: DeviceId, transactionId?: TransactionId): Promise<Device>;
    /**
     * List of discovered {@link Service}s for {@link Device}.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @returns {Promise<Array<Service>>} Promise which emits array of {@link Service} objects which are discovered for a
     * {@link Device}.
     */
    servicesForDevice(deviceIdentifier: DeviceId): Promise<Array<Service>>;
    /**
     * List of discovered {@link Characteristic}s for given {@link Device} and {@link Service}.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @param {UUID} serviceUUID {@link Service} UUID.
     * @returns {Promise<Array<Characteristic>>} Promise which emits array of {@link Characteristic} objects which are
     * discovered for a {@link Device} in specified {@link Service}.
     */
    characteristicsForDevice(deviceIdentifier: DeviceId, serviceUUID: UUID): Promise<Array<Characteristic>>;
    /**
     * List of discovered {@link Characteristic}s for unique {@link Service}.
     *
     * @param {Identifier} serviceIdentifier {@link Service} ID.
     * @returns {Promise<Array<Characteristic>>} Promise which emits array of {@link Characteristic} objects which are
     * discovered in unique {@link Service}.
     * @private
     */
    _characteristicsForService(serviceIdentifier: Identifier): Promise<Array<Characteristic>>;
    /**
     * Common code for handling NativeCharacteristic fetches.
     *
     * @param {Promise<Array<NativeCharacteristic>>} characteristicsPromise Native characteristics.
     * @returns {Promise<Array<Characteristic>>} Promise which emits array of {@link Characteristic} objects which are
     * discovered in unique {@link Service}.
     * @private
     */
    _handleCharacteristics(characteristicsPromise: Promise<Array<NativeCharacteristic>>): Promise<Array<Characteristic>>;
    /**
     * List of discovered {@link Descriptor}s for given {@link Device}, {@link Service} and {@link Characteristic}.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @param {UUID} serviceUUID {@link Service} UUID.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @returns {Promise<Array<Descriptor>>} Promise which emits array of {@link Descriptor} objects which are
     * discovered for a {@link Device}, {@link Service} in specified {@link Characteristic}.
     */
    descriptorsForDevice(deviceIdentifier: DeviceId, serviceUUID: UUID, characteristicUUID: UUID): Promise<Array<Descriptor>>;
    /**
     * List of discovered {@link Descriptor}s for given {@link Service} and {@link Characteristic}.
     *
     * @param {Identifier} serviceIdentifier {@link Service} identifier.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @returns {Promise<Array<Descriptor>>} Promise which emits array of {@link Descriptor} objects which are
     * discovered for a {@link Service} in specified {@link Characteristic}.
     * @private
     */
    _descriptorsForService(serviceIdentifier: Identifier, characteristicUUID: UUID): Promise<Array<Descriptor>>;
    /**
     * List of discovered {@link Descriptor}s for given {@link Characteristic}.
     *
     * @param {Identifier} characteristicIdentifier {@link Characteristic} identifier.
     * @returns {Promise<Array<Descriptor>>} Promise which emits array of {@link Descriptor} objects which are
     * discovered in specified {@link Characteristic}.
     * @private
     */
    _descriptorsForCharacteristic(characteristicIdentifier: Identifier): Promise<Array<Descriptor>>;
    /**
     *  Common code for handling NativeDescriptor fetches.
     * @param {Promise<Array<NativeDescriptor>>} descriptorsPromise Native descriptors.
     * @returns {Promise<Array<Descriptor>>} Promise which emits array of {@link Descriptor} objects which are
     * discovered in unique {@link Characteristic}.
     * @private
     */
    _handleDescriptors(descriptorsPromise: Promise<Array<NativeDescriptor>>): Promise<Array<Descriptor>>;
    /**
     * Read {@link Characteristic} value.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @param {UUID} serviceUUID {@link Service} UUID.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Characteristic>} Promise which emits first {@link Characteristic} object matching specified
     * UUID paths. Latest value of {@link Characteristic} will be stored inside returned object.
     */
    readCharacteristicForDevice(deviceIdentifier: DeviceId, serviceUUID: UUID, characteristicUUID: UUID, transactionId?: TransactionId): Promise<Characteristic>;
    /**
     * Read {@link Characteristic} value.
     *
     * @param {Identifier} serviceIdentifier {@link Service} ID.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Characteristic>} Promise which emits first {@link Characteristic} object matching specified
     * UUID paths. Latest value of {@link Characteristic} will be stored inside returned object.
     * @private
     */
    _readCharacteristicForService(serviceIdentifier: Identifier, characteristicUUID: UUID, transactionId?: TransactionId): Promise<Characteristic>;
    /**
     * Read {@link Characteristic} value.
     *
     * @param {Identifier} characteristicIdentifier {@link Characteristic} ID.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Characteristic>} Promise which emits first {@link Characteristic} object matching specified ID.
     * Latest value of {@link Characteristic} will be stored inside returned object.
     * @private
     */
    _readCharacteristic(characteristicIdentifier: Identifier, transactionId?: TransactionId): Promise<Characteristic>;
    /**
     * Write {@link Characteristic} value with response.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @param {UUID} serviceUUID {@link Service} UUID.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @param {Base64} base64Value Value in Base64 format.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Characteristic>} Promise which emits first {@link Characteristic} object matching specified
     * UUID paths. Latest value of characteristic may not be stored inside returned object.
     */
    writeCharacteristicWithResponseForDevice(deviceIdentifier: DeviceId, serviceUUID: UUID, characteristicUUID: UUID, base64Value: Base64, transactionId?: TransactionId): Promise<Characteristic>;
    /**
     * Write {@link Characteristic} value with response.
     *
     * @param {Identifier} serviceIdentifier {@link Service} ID.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @param {Base64} base64Value Value in Base64 format.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Characteristic>} Promise which emits first {@link Characteristic} object matching specified
     * UUID paths. Latest value of characteristic may not be stored inside returned object.
     * @private
     */
    _writeCharacteristicWithResponseForService(serviceIdentifier: Identifier, characteristicUUID: UUID, base64Value: Base64, transactionId?: TransactionId): Promise<Characteristic>;
    /**
     * Write {@link Characteristic} value with response.
     *
     * @param {Identifier} characteristicIdentifier {@link Characteristic} ID.
     * @param {Base64} base64Value Value in Base64 format.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Characteristic>} Promise which emits first {@link Characteristic} object matching specified ID.
     * Latest value of characteristic may not be stored inside returned object.
     * @private
     */
    _writeCharacteristicWithResponse(characteristicIdentifier: Identifier, base64Value: Base64, transactionId?: TransactionId): Promise<Characteristic>;
    /**
     * Write {@link Characteristic} value without response.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @param {UUID} serviceUUID {@link Service} UUID.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @param {Base64} base64Value Value in Base64 format.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Characteristic>} Promise which emits first {@link Characteristic} object matching specified
     * UUID paths. Latest value of characteristic may not be stored inside returned object.
     */
    writeCharacteristicWithoutResponseForDevice(deviceIdentifier: DeviceId, serviceUUID: UUID, characteristicUUID: UUID, base64Value: Base64, transactionId?: TransactionId): Promise<Characteristic>;
    /**
     * Write {@link Characteristic} value without response.
     *
     * @param {Identifier} serviceIdentifier {@link Service} ID.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @param {Base64} base64Value Value in Base64 format.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Characteristic>} Promise which emits first {@link Characteristic} object matching specified
     * UUID paths. Latest value of characteristic may not be stored inside returned object.
     * @private
     */
    _writeCharacteristicWithoutResponseForService(serviceIdentifier: Identifier, characteristicUUID: UUID, base64Value: Base64, transactionId?: TransactionId): Promise<Characteristic>;
    /**
     * Write {@link Characteristic} value without response.
     *
     * @param {Identifier} characteristicIdentifier {@link Characteristic} UUID.
     * @param {Base64} base64Value Value in Base64 format.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Characteristic>} Promise which emits first {@link Characteristic} object matching specified ID.
     * Latest value of characteristic may not be stored inside returned object.
     * @private
     */
    _writeCharacteristicWithoutResponse(characteristicIdentifier: Identifier, base64Value: Base64, transactionId?: TransactionId): Promise<Characteristic>;
    /**
     * Monitor value changes of a {@link Characteristic}. If notifications are enabled they will be used
     * in favour of indications.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @param {UUID} serviceUUID {@link Service} UUID.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @param {function(error: ?BleError, characteristic: ?Characteristic)} listener - callback which emits
     * {@link Characteristic} objects with modified value for each notification.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Subscription} Subscription on which `remove()` function can be called to unsubscribe.
     */
    monitorCharacteristicForDevice(deviceIdentifier: DeviceId, serviceUUID: UUID, characteristicUUID: UUID, listener: (error: BleError | null, characteristic: Characteristic | null) => void, transactionId?: TransactionId, subscriptionType?: CharacteristicSubscriptionType | null): Subscription;
    /**
     * Monitor value changes of a {@link Characteristic}. If notifications are enabled they will be used
     * in favour of indications.
     *
     * @param {Identifier} serviceIdentifier {@link Service} ID.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @param {function(error: ?BleError, characteristic: ?Characteristic)} listener - callback which emits
     * {@link Characteristic} objects with modified value for each notification.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Subscription} Subscription on which `remove()` function can be called to unsubscribe.
     * @private
     */
    _monitorCharacteristicForService(serviceIdentifier: Identifier, characteristicUUID: UUID, listener: (error: BleError | null, characteristic: Characteristic | null) => void, transactionId?: TransactionId, subscriptionType?: CharacteristicSubscriptionType | null): Subscription;
    /**
     * Monitor value changes of a {@link Characteristic}. If notifications are enabled they will be used
     * in favour of indications.
     *
     * @param {Identifier} characteristicIdentifier - {@link Characteristic} ID.
     * @param {function(error: ?BleError, characteristic: ?Characteristic)} listener - callback which emits
     * {@link Characteristic} objects with modified value for each notification.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * @param {?CharacteristicSubscriptionType} subscriptionType [android only] subscription type of the characteristic
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Subscription} Subscription on which `remove()` function can be called to unsubscribe.
     * @private
     */
    _monitorCharacteristic(characteristicIdentifier: Identifier, listener: (error: BleError | null, characteristic: Characteristic | null) => void, transactionId?: TransactionId, subscriptionType?: CharacteristicSubscriptionType | null): Subscription;
    /**
     * Common code to handle characteristic monitoring.
     *
     * @param {Promise<void>} monitorPromise Characteristic monitoring promise
     * @param {TransactionId} transactionId TransactionId of passed promise
     * @param {function(error: ?BleError, characteristic: ?Characteristic)} listener - callback which emits
     * {@link Characteristic} objects with modified value for each notification.
     * @returns {Subscription} Subscription on which `remove()` function can be called to unsubscribe.
     * @private
     */
    _handleMonitorCharacteristic(monitorPromise: Promise<void>, transactionId: TransactionId, listener: (error: BleError | null, characteristic: Characteristic | null) => void): Subscription;
    /**
     * Read {@link Descriptor} value.
     *
     * @param {DeviceId} deviceIdentifier {@link Device} identifier.
     * @param {UUID} serviceUUID {@link Service} UUID.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @param {UUID} descriptorUUID {@link Descriptor} UUID.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Descriptor>} Promise which emits first {@link Descriptor} object matching specified
     * UUID paths. Latest value of {@link Descriptor} will be stored inside returned object.
     */
    readDescriptorForDevice(deviceIdentifier: DeviceId, serviceUUID: UUID, characteristicUUID: UUID, descriptorUUID: UUID, transactionId?: TransactionId): Promise<Descriptor>;
    /**
     * Read {@link Descriptor} value.
     *
     * @param {Identifier} serviceIdentifier {@link Service} identifier.
     * @param {UUID} characteristicUUID {@link Characteristic} UUID.
     * @param {UUID} descriptorUUID {@link Descriptor} UUID.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Descriptor>} Promise which emits first {@link Descriptor} object matching specified
     * UUID paths. Latest value of {@link Descriptor} will be stored inside returned object.
     * @private
     */
    _readDescriptorForService(serviceIdentifier: Identifier, characteristicUUID: UUID, descriptorUUID: UUID, transactionId?: TransactionId): Promise<Descriptor>;
    /**
     * Read {@link Descriptor} value.
     *
     * @param {Identifier} characteristicIdentifier {@link Characteristic} identifier.
     * @param {UUID} descriptorUUID {@link Descriptor} UUID.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Descriptor>} Promise which emits first {@link Descriptor} object matching specified
     * UUID paths. Latest value of {@link Descriptor} will be stored inside returned object.
     * @private
     */
    _readDescriptorForCharacteristic(characteristicIdentifier: Identifier, descriptorUUID: UUID, transactionId?: TransactionId): Promise<Descriptor>;
    /**
     * Read {@link Descriptor} value.
     *
     * @param {Identifier} descriptorIdentifier {@link Descriptor} identifier.
     * @param {?TransactionId} transactionId optional `transactionId` which can be used in
     * {@link #blemanagercanceltransaction|cancelTransaction()} function.
     * @returns {Promise<Descriptor>} Promise which emits first {@link Descriptor} object matching specified
     * UUID paths. Latest value of {@link Descriptor} will be stored inside returned object.
     * @private
     */
    _readDescriptor(descriptorIdentifier: Identifier, transactionId?: TransactionId): Promise<Descriptor>;
    /**
     * Write {@link Descriptor} value.
     *
     * @param {DeviceId} deviceIdentifier Connected device identifier
     * @param {UUID} serviceUUID Service UUID
     * @param {UUID} characteristicUUID Characteristic UUID
     * @param {UUID} descriptorUUID Descriptor UUID
     * @param {Base64} valueBase64 Value to be set coded in Base64
     * @param {?TransactionId} transactionId Transaction handle used to cancel operation
     * @returns {Promise<Descriptor>} Descriptor which saved passed value
     */
    writeDescriptorForDevice(deviceIdentifier: DeviceId, serviceUUID: UUID, characteristicUUID: UUID, descriptorUUID: UUID, valueBase64: Base64, transactionId?: TransactionId): Promise<Descriptor>;
    /**
     * Write {@link Descriptor} value.
     *
     * @param {Identifier} serviceIdentifier Service identifier
     * @param {UUID} characteristicUUID Characteristic UUID
     * @param {UUID} descriptorUUID Descriptor UUID
     * @param {Base64} valueBase64 Value to be set coded in Base64
     * @param {?TransactionId} transactionId Transaction handle used to cancel operation
     * @returns {Promise<Descriptor>} Descriptor which saved passed value
     * @private
     */
    _writeDescriptorForService(serviceIdentifier: Identifier, characteristicUUID: UUID, descriptorUUID: UUID, valueBase64: Base64, transactionId?: TransactionId): Promise<Descriptor>;
    /**
     * Write {@link Descriptor} value.
     *
     * @param {Identifier} characteristicIdentifier Characteristic identifier
     * @param {UUID} descriptorUUID Descriptor UUID
     * @param {Base64} valueBase64 Value to be set coded in Base64
     * @param {?TransactionId} transactionId Transaction handle used to cancel operation
     * @returns {Promise<Descriptor>} Descriptor which saved passed value
     * @private
     */
    _writeDescriptorForCharacteristic(characteristicIdentifier: Identifier, descriptorUUID: UUID, valueBase64: Base64, transactionId?: TransactionId): Promise<Descriptor>;
    /**
     * Write {@link Descriptor} value.
     *
     * @param {Identifier} descriptorIdentifier Descriptor identifier
     * @param {Base64} valueBase64 Value to be set coded in Base64
     * @param {?TransactionId} transactionId Transaction handle used to cancel operation
     * @returns {Promise<Descriptor>} Descriptor which saved passed value
     * @private
     */
    _writeDescriptor(descriptorIdentifier: Identifier, valueBase64: Base64, transactionId?: TransactionId): Promise<Descriptor>;
    /**
     * Enable background mode using Android foreground service. [Android only]
     *
     * This starts a foreground service that keeps BLE operations alive when the app
     * is in the background. A persistent notification will be shown to the user.
     *
     * On iOS, background mode is handled through UIBackgroundModes in Info.plist
     * and state restoration, so this method is a no-op on iOS.
     *
     * @example
     * // Enable background mode with custom notification
     * await manager.enableBackgroundMode({
     *   notificationTitle: 'Connected to Heart Rate Monitor',
     *   notificationText: 'Syncing health data...'
     * });
     *
     * @param {BackgroundModeOptions} options Configuration for the foreground service notification.
     * @returns {Promise<boolean>} True if background mode was enabled successfully.
     */
    enableBackgroundMode(options?: BackgroundModeOptions): Promise<boolean>;
    /**
     * Disable background mode and stop the foreground service. [Android only]
     *
     * This stops the foreground service and removes the persistent notification.
     * BLE operations may be terminated by the system when the app goes to background.
     *
     * @example
     * // Disable background mode when done with BLE operations
     * await manager.disableBackgroundMode();
     *
     * @returns {Promise<boolean>} True if background mode was disabled successfully.
     */
    disableBackgroundMode(): Promise<boolean>;
    /**
     * Update the foreground service notification content. [Android only]
     *
     * Use this to update the notification while background mode is active,
     * for example to show connection status or sync progress.
     *
     * @example
     * // Update notification to show progress
     * await manager.updateBackgroundNotification({
     *   notificationTitle: 'Syncing Data',
     *   notificationText: 'Progress: 75%'
     * });
     *
     * @param {BackgroundModeOptions} options New notification content.
     * @returns {Promise<boolean>} True if notification was updated successfully.
     */
    updateBackgroundNotification(options: BackgroundModeOptions): Promise<boolean>;
    /**
     * Check if background mode is currently enabled. [Android only]
     *
     * @example
     * const isEnabled = await manager.isBackgroundModeEnabled();
     * if (!isEnabled) {
     *   await manager.enableBackgroundMode();
     * }
     *
     * @returns {Promise<boolean>} True if background mode (foreground service) is running.
     */
    isBackgroundModeEnabled(): Promise<boolean>;
}
//# sourceMappingURL=BleManager.d.ts.map