import { ChangeDetectorRef, EventEmitter, NgZone, OnDestroy, OnInit, TemplateRef } from '@angular/core';
import { LoadingController } from '@ionic/angular';
import { DeviceScanner } from '@iotize/tap/scanner/api';
import { ProtocolSelectedEvent } from '../api';
export declare type DiscoveredDeviceType = {
    name: string;
    address: string;
    rssi: number;
    [key: string]: any;
};
/**
 * Scanner for bluetooth
 */
export declare class TapScannerBleComponent implements OnInit, OnDestroy {
    tapScanner: DeviceScanner<DiscoveredDeviceType>;
    changeDetector: ChangeDetectorRef;
    loadingCtrl: LoadingController;
    private ngZone;
    /**
     * Scan result template to use to display scan results.
     *
     * If not provided, it will use a default component to display devices.
     *
     * @example
     * <!-- Display devices with tap-ble-scan-result component -->
     * <tap-scanner-ble [scanResultsTemplate]="scanResultsTemplate">
     *    <ng-template #scanResultsTemplate let-devices>
     *        <tap-ble-scan-result [devices]="devices" [showSignalStrenght]="false"></tap-ble-scan-result>
     *    </ng-template>
     * </tap-scanner-ble>
     *
     */
    scanResultsTemplate: TemplateRef<any>;
    /**
     * @deprecated Not used anymore. start/stop buttons must be define by user
     */
    showScanButton: boolean;
    /**
     * RSSI update threshold.
     * If device list is the same, we will only emit a device update event
     * if the Math.abs(previousRSSI - newRSSI) >= rssiUpdateThreshold
     */
    rssiUpdateThreshold: number;
    /**
     * Event emitted when a scan result has been selected
     * @deprecated see protocolSelected
     */
    onProtocolSelected: EventEmitter<ProtocolSelectedEvent>;
    /**
     * Event emitted when a scan result has been selected
     */
    protocolSelected: EventEmitter<ProtocolSelectedEvent>;
    /**
     * Event emitted when an error occurs
     */
    error: EventEmitter<Error>;
    results: DiscoveredDeviceType[];
    private readonly destroyed;
    isScanning: boolean;
    constructor(tapScanner: DeviceScanner<DiscoveredDeviceType>, changeDetector: ChangeDetectorRef, loadingCtrl: LoadingController, ngZone: NgZone);
    ngOnInit(): void;
    notifyError(error: any): void;
    ngOnDestroy(): void;
    onItemClicked(device: DiscoveredDeviceType): void;
    startScan(): void;
    stopScan(): void;
    private mergeScanResults;
    private addOrRefreshScanResultList;
}
