/**
 * @packageDocumentation
 * @module Parts.RS_BTEVS1
 */
import { BleRemotePeripheral } from '../../../obniz';
import { ObnizBleBeaconStruct, ObnizPartsBleCompare, ObnizPartsBleConnectable, ObnizPartsBleMode } from '../../../obniz/ObnizPartsBleAbstract';
export interface RS_BTEVS1Options {
}
/** RS-BTEVS1 advertising data RS-BTEVS1のアドバタイジングデータ */
export interface RS_BTEVS1_Data {
    /** CO2 [ppm] */
    co2: number;
    /** PM1.0 [ug/m3] */
    pm1_0: number;
    /** PM2.5 [ug/m3] */
    pm2_5: number;
    /** PM4.0 [ug/m3] */
    pm4_0: number;
    /** @deprecated for compatibility */
    pm5_0: number;
    /** PM10.0 [ug/m3] */
    pm10_0: number;
    /** temperature 温度 [℃] */
    temp: number;
    /** humidity 湿度 [%] */
    humid: number;
}
declare const LED_DISPLAY_MODE: readonly ["Disable", "PM2.5", "CO2"];
declare const PM2_5_CONCENTRATION_MODE: readonly ["Mass", "Number"];
/** RS-BTEVS1 config RS-BTEVS1の設定内容 */
export interface RS_BTEVS1_Config {
    /**
     * Temperature notification interval [ms] (10,000~3,600,000) (Initial value: 10,000ms)
     *
     * 温度通知間隔[ms] (10,000~3,600,000) (初期値: 10,000ms)
     */
    tempInterval: number;
    /**
     * PM2.5 notification interval [ms] (10,000~3,600,000) (Initial value: 10,000ms)
     *
     * PM2.5通知間隔[ms] (10,000~3,600,000) (初期値: 10,000ms)
     */
    pm2_5Interval: number;
    /**
     * CO2 notification interval [ms] (10,000~3,600,000) (Initial value: 10,000ms)
     *
     * CO2通知間隔[ms] (10,000~3,600,000) (初期値: 10,000ms)
     */
    co2Interval: number;
    /**
     * Temperature sensor measurement operation setting (initial value: Disable)
     *
     * 温度センサー計測動作設定 (初期値: 無効)
     */
    tempMeasureOperation: boolean;
    /**
     * PM2.5 sensor measurement operation setting (initial value: Disable)
     *
     * PM2.5センサー計測動作設定 (初期値: 無効)
     */
    pm2_5MeasureOperation: boolean;
    /**
     * CO2 sensor measurement operation setting (initial value: Disable)
     *
     * CO2センサー計測動作設定 (初期値: 無効)
     */
    co2MeasureOperation: boolean;
    /**
     * Display setting for 10 LEDs (Disable | PM2.5 | CO2) (initial value: Disable)
     *
     * 10連LEDへの表示設定 (Disable | PM2.5 | CO2) (初期値: 無効)
     */
    ledDisplay: typeof LED_DISPLAY_MODE[number];
    /**
     * Advertisement Beacon Settings (Initial Value: Disable)
     *
     * アドバタイズビーコン設定 (初期値: 無効)
     */
    advertisementBeacon: boolean;
    /**
     * @deprecated Rev. ~1.0.2
     * PM2.5 mass concentration / number concentration mode setting (Mass | Number) (initial value: Number)
     *
     * PM2.5質量濃度/個数濃度モード設定 (Mass | Number) (初期値: 個数濃度)
     */
    pm2_5ConcentrationMode: typeof PM2_5_CONCENTRATION_MODE[number];
}
/** RS-BTEVS1 PM2.5 data RS-BTEVS1のPM2.5のデータ */
export interface RS_BTEVS1_Pm2_5 {
    /** PM1.0 [ug/m3] */
    mass_pm1: number;
    /** PM2.5 [ug/m3] */
    mass_pm2_5: number;
    /** PM4.0 [ug/m3] */
    mass_pm4: number;
    /** PM10.0 [ug/m3] */
    mass_pm10: number;
    /** PM0.5 [#/m3] */
    number_pm0_5?: number;
    /** PM1.0 [#/m3] */
    number_pm1?: number;
    /** PM2.5 [#/m3] */
    number_pm2_5?: number;
    /** PM4.0 [#/m3] */
    number_pm4?: number;
    /** PM10.0 [#/m3] */
    number_pm10?: number;
}
/** RS_BTEVS1 management class RS_BTEVS1を管理するクラス */
export default class RS_BTEVS1 extends ObnizPartsBleConnectable<RS_BTEVS1_Data, RS_BTEVS1_Data> {
    protected readonly staticClass: typeof RS_BTEVS1;
    static readonly AvailableBleMode: ObnizPartsBleMode | ObnizPartsBleMode[];
    static readonly PartsName = "RS_BTEVS1";
    /**
     * BTEVS-1234: ~1.0.2
     * EVS-1234: 1.1.2~
     * EVS_1234 1.2~
     */
    static readonly LocalName: RegExp;
    static readonly CompanyID: ObnizPartsBleCompare<number[]>;
    static readonly BeaconDataStruct: ObnizBleBeaconStruct<RS_BTEVS1_Data>;
    /** Event handler for button ボタンのイベントハンドラー */
    onButtonPressed: ((pressed: boolean) => void) | null;
    /** Event handler for temperature sensor 温度センサーのイベントハンドラー */
    onTempMeasured: ((temp: number, humidity: number) => void) | null;
    /** Event handler for co2 sensor CO2センサーのイベントハンドラー */
    onCo2Measured: ((co2: number) => void) | null;
    /** Event handler for PM2.5 sensor PM2.5センサーのイベントハンドラー */
    onPm2_5Measured: ((pm2_5: RS_BTEVS1_Pm2_5) => void) | null;
    protected readonly serviceUuid = "F9CC15234E0A49E58CF30007E819EA1E";
    firmwareRevision: string;
    private firmwareSemRevision;
    static isDevice(peripheral: BleRemotePeripheral): boolean;
    /**
     * Connect to the services of a device
     *
     * デバイスのサービスに接続
     */
    connectWait(): Promise<void>;
    private static _deviceAdvAnalyzer;
    static getData(peripheral: BleRemotePeripheral): RS_BTEVS1_Data | null;
    /**
     * Get device all data
     * Version 1.0.x is not supported
     * デバイスの全てのデータの取得
     * バージョン1.0.xはサポートされません
     *
     * @returns
     */
    getDataWait(): Promise<RS_BTEVS1_Data>;
    protected beforeOnDisconnectWait(): Promise<void>;
    /**
     * Get device settings デバイスの設定を取得
     *
     * @returns Instance of RS_BTEVS1_Config RS_BTEVS1_Configのインスタンス
     */
    getConfigWait(): Promise<RS_BTEVS1_Config>;
    /**
     * Write device settings, blanks write initial values
     *
     * デバイス設定の書き込み、空欄は初期値を書き込み
     *
     * @param config Instance of RS_BTEVS1_Config RS_BTEVS1_Configのインスタンス
     * @returns Write result 書き込み結果
     */
    setConfigWait(config: Partial<RS_BTEVS1_Config>): Promise<boolean>;
    /**
     * Change pairing LED flashing status
     * Version 1.0.x is not supported
     * ペアリングLEDの点滅状態の変更
     * バージョン1.0.xはサポートされません
     *
     * @param blink Whether it blinks 点滅するかどうか
     * @returns Write result 書き込み結果
     */
    setModeLEDWait(blink: boolean): Promise<boolean>;
    /**
     * Start reading the button state
     *
     * ボタンの状態読み取りを開始
     */
    buttonChangeStartWait(): Promise<void>;
    /**
     * @deprecated
     *
     * Start reading the temperature sensor
     * Version 1.0.x is not supported
     * 温度センサーの読み取りを開始
     * バージョン1.0.xはサポートされません
     */
    tempMeasureStartWait(): Promise<void>;
    /**
     * @deprecated
     *
     * Start reading the co2 sensor
     *
     * CO2センサーの読み取りを開始
     */
    co2MeasureStartWait(): Promise<void>;
    /**
     * @deprecated
     *
     * Start reading the PM2.5 sensor
     * Version 1.1 is not supported
     * PM2.5センサーの読み取りを開始
     * バージョン1.1より上のバージョンはサポートされません
     */
    pm2_5MeasureStartWait(): Promise<void>;
    protected getCharUuid(code: number): string;
    private checkVersion;
    private checkLessVersion;
}
export {};
