import { ByteParser } from '../util/ByteParser'; import { BleClientInterface, BleDevice, InitializeOptions, RequestBleDeviceOptions, ScanResult, TimeoutOptions } from '@capacitor-community/bluetooth-le'; export type BLEDeviceOptions = { namePrefix?: string; name?: string; deviceId?: string; onconnect?: () => void; beforedisconnect?: (client: BLEClient, device: BLEDeviceInfo) => void; ondisconnect?: (deviceId: string) => void; connectOptions?: TimeoutOptions; services?: { [key: string]: { UUID?: any; [key: string]: { characteristic?: string; read?: boolean; readOptions?: TimeoutOptions; readCallback?: ((result: DataView) => void); write?: string | number | ArrayBufferLike | DataView; writeOptions?: TimeoutOptions; writeCallback?: (() => void); notify?: boolean; notifyCallback?: ((result: DataView) => void); chunkSize?: number; chunkDelay?: number; [key: string]: any; }; }; }; }; export type BLEDeviceInfo = { device: BleDevice; } & BLEDeviceOptions; export declare class BLEClient extends ByteParser { client: BleClientInterface; devices: { [key: string]: BLEDeviceInfo; }; location?: boolean; initialized: boolean; constructor(options?: BLEDeviceOptions, location?: boolean); setup(options?: BLEDeviceOptions, location?: boolean): Promise; initialize(options?: InitializeOptions): Promise; requestDevice(request?: RequestBleDeviceOptions, options?: BLEDeviceOptions): Promise; getServices(deviceId: string): Promise; setupDevice: (device: BleDevice, options?: BLEDeviceOptions) => Promise; connect(device: BleDevice, options?: BLEDeviceOptions): Promise; reconnect(deviceId: string, options?: BLEDeviceOptions): Promise; disconnect(device: BleDevice | string): Promise; write(device: BleDevice | string, service: string, characteristic: string, value: string | number | ArrayBufferLike | DataView | number[], callback?: (progress: number) => void, chunkSize?: number, chunkDelay?: number, //ms delay between chunks options?: TimeoutOptions): Promise; read(device: BleDevice | string, service: string, characteristic: string, ondata?: (result: DataView) => void, options?: TimeoutOptions): Promise | Promise; subscribe(device: BleDevice | string, service: string, characteristic: string, ondata: (result: DataView) => void): Promise; unsubscribe(device: BleDevice | string, service: string, characteristic: string): Promise; scan(options: RequestBleDeviceOptions, callback: (result: ScanResult) => void): Promise; stopScanning(): Promise; readDescriptor(device: BleDevice, service: string, characteristic: string, descriptor: string, options?: TimeoutOptions): Promise; writeDescriptor(device: BleDevice, service: string, characteristic: string, descriptor: string, value: string | number | DataView | ArrayBufferLike | number[], options?: TimeoutOptions): Promise; readRssi(device: BleDevice): Promise; isMobile(): boolean; isAndroid(): boolean; distance(device: BleDevice, txPower: any, x: number, exp: number, c: number): Promise; distanceFromPhone(//https://github.com/kevindigi/android-iot-samples/blob/7fb4b91eb769a3dba06891286f4f2f3249dab2a6/app/src/main/java/com/digicorp/helper/DistanceManager.java#L48 device: BleDevice, txPower: number, //signal strength at 1 meter, hardware-specific model?: 'nexus5' | 'motoX' | 'iphone5'): Promise; triangulate: (device: BleDevice, duration?: number, sampleRate?: number) => Promise; }