import { jSignal, Listener } from 'jsignal'; import * as protocol from '../protocol.pb'; import { PostCubeVersion } from '../constants/bluetooth'; import { Keys } from './keys'; export declare type Unwatch = () => void; export declare type EventChangeListener = (postCube: PostCube) => any; export declare type EventResultListener = (value: DataView) => any; export interface ScanOptions { namePrefix?: string; timeout?: number; onDiscovery?(postCube: PostCube): any; } export interface ScanResult { promise: Promise; stopScan(): void; } export interface BatchOptions { shouldDisconnect(success: boolean, err?: any): boolean | Promise; } export declare abstract class PostCube { static keys: Keys; readonly onChange: jSignal; readonly onResult: jSignal; readonly id: string; readonly name: string; readonly isDev: boolean; virtual: boolean; inactivityDisconnectTimeoutMs: number; abstract readonly version: PostCubeVersion; abstract readonly deviceId: string; abstract readonly isConnected: boolean; private inactivityDisconnectTimeout; private _activeOperations; protected get activeOperations(): number; protected set activeOperations(activeOperations: number); constructor(name: string); startResultNotificationsV1(timeoutMs?: number): Promise; batchCommands(procedure: () => Result, options?: BatchOptions): Promise; private checkEncryptionKeys; private readBatteryV1; private readBatteryV2; readBattery(): Promise; private writeCommandV1; private writeCommandV2; writeCommand(command: ArrayBufferLike, characteristicUUID?: string | number): Promise; writeCommandAndReadResultV1(command: ArrayBufferLike, characteristicUUID: string | number): Promise; writeCommandAndReadResultV2(command: ArrayBufferLike): Promise; writeSyncTime(timestamp: number): Promise; writeUnlock(lockId?: number): Promise; writeDeviceKey(secretCode: string, keyIndex: number, publicKey: Uint8Array | number[], expireAt: number): Promise; writeAccountKey(publicKey: Uint8Array | number[], secretCode: string): Promise; writeFactoryReset(): Promise; protected abstract tmpl(string: string): string; abstract connect(timeoutMs?: number): Promise; abstract disconnect(timeoutMs?: number): Promise; abstract read(serviceUUID: string | number, characteristicUUID: string | number, timeoutMs?: number): Promise; abstract write(serviceUUID: string | number, characteristicUUID: string | number, value: DataView, timeoutMs?: number): Promise; abstract startNotifications(serviceUUID: string, characteristicUUID: string, timeoutMs?: number): Promise; abstract watchNotifications(serviceUUID: string | number, characteristicUUID: string | number, listener: Listener, timeoutMs?: number): Promise; }