/// <reference types="node" />
import { EventEmitter } from "events";
import { IGattCentral } from "./bluetooth";
import Logger from "./logger";
import RadiatorValve from "./valve";
export type RadiatorValvesOptions = {
    wakeUpInterval: number;
    maxConnectionAttempts: number;
    connectionTimeout: number;
    maxReadAttempts: number;
    readTimeout: number;
    maxWriteAttempts: number;
    logger?: Logger;
    verbose?: boolean;
    /**
     * Whether to automatically connect to the peripheral once it is
     * discovered. A `connected` event will be emitted once the connection
     * is established. If this is disabled, then only the `discovered` event
     * will be emitted.
     */
    autoConnect?: boolean;
    /**
     * Whether to enable notification flag in client configuration descriptor
     * of the RX characteristic. Some drivers do it automatically, so it's not
     * always necessary.
     */
    raspberryFix: boolean;
};
export declare interface RadiatorValveScanner {
    emit(event: "connected", valve: RadiatorValve): boolean;
    emit(event: "discovered", valve: RadiatorValve): boolean;
    on(event: "connected", listener: (valve: RadiatorValve) => void): this;
    on(event: "discovered", listener: (valve: RadiatorValve) => void): this;
}
export declare class RadiatorValveScanner extends EventEmitter {
    private readonly bluetooth;
    private readonly options;
    private connectedValves;
    private connectQueue;
    private connecting;
    private scanning;
    constructor(bluetooth: IGattCentral, options?: Partial<RadiatorValvesOptions>);
    disconnectAll(): Promise<void>;
    findOne(): Promise<RadiatorValve>;
    start(): Promise<void>;
    stop(): Promise<void>;
    private queueConnect;
    private processConnectQueue;
}
