import { Observable } from "rxjs";
import { ReplaySubject } from "rxjs";
import { WebBluetoothTransport } from "./web/WebBluetoothTransport";
import { ReactNativeTransport } from "./react-native/ReactNativeTransport";
import { DeviceInfo } from "../../types/deviceInfo";
import { Action } from "../../types/actions";
import { Epoch } from "../../types/epoch";
import { BLUETOOTH_CONNECTION } from "./types";
import { DeviceNicknameOrPeripheral } from "./BluetoothTransport";
import { Peripheral } from "./react-native/types/BleManagerTypes";
export type BluetoothTransport = WebBluetoothTransport | ReactNativeTransport;
type IsAuthenticated = boolean;
type ExpiresIn = number;
type IsAuthenticatedResponse = [IsAuthenticated, ExpiresIn];
type CreateBluetoothToken = () => Promise<string>;
type Options = {
    transport: BluetoothTransport;
    selectedDevice$: Observable<DeviceInfo>;
    osHasBluetoothSupport$: Observable<boolean>;
    createBluetoothToken: CreateBluetoothToken;
};
export declare class BluetoothClient {
    transport: BluetoothTransport;
    deviceInfo: DeviceInfo;
    selectedDevice$: ReplaySubject<DeviceInfo>;
    osHasBluetoothSupport$: ReplaySubject<boolean>;
    isAuthenticated$: ReplaySubject<boolean>;
    _focus$: Observable<any>;
    _calm$: Observable<any>;
    _accelerometer$: Observable<any>;
    _brainwavesRaw$: Observable<any>;
    _brainwavesRawUnfiltered$: Observable<any>;
    _brainwavesPSD$: Observable<any>;
    _brainwavesPowerByBand$: Observable<any>;
    _signalQuality$: Observable<any>;
    _signalQualityV2$: Observable<any>;
    _status$: Observable<any>;
    _settings$: Observable<any>;
    _wifiNearbyNetworks$: Observable<any>;
    _wifiConnections$: Observable<any>;
    constructor(options: Options);
    _autoAuthenticate(createBluetoothToken: CreateBluetoothToken): Observable<IsAuthenticatedResponse>;
    enableAutoConnect(autoConnect: boolean): void;
    _hasBluetoothSupport(): Promise<boolean>;
    authenticate(token: string): Promise<IsAuthenticatedResponse>;
    isAuthenticated(): Promise<IsAuthenticatedResponse>;
    scan(options?: any): Observable<Peripheral[]>;
    connect(deviceNicknameORPeripheral?: DeviceNicknameOrPeripheral): Promise<void>;
    disconnect(): Promise<void>;
    connection(): Observable<BLUETOOTH_CONNECTION>;
    logs(): Observable<string>;
    getDeviceId(): Promise<string>;
    _withAuthentication<T>(getter: () => Promise<T>): Promise<T>;
    _subscribeWhileAuthenticated(characteristicName: string, skipJSONDecoding?: boolean): Observable<any>;
    focus(): Observable<any>;
    calm(): Observable<any>;
    accelerometer(): Observable<any>;
    brainwaves(label: string): Observable<Epoch | any>;
    signalQuality(): Observable<any>;
    signalQualityV2(): Observable<any>;
    addMarker(label: string): Promise<void>;
    getInfo(): Promise<DeviceInfo>;
    status(): Observable<any>;
    dispatchAction(action: Action): Promise<any>;
    settings(): Observable<any>;
    haptics(effects: any): Promise<any>;
    get wifi(): {
        nearbyNetworks: () => Observable<any>;
        connections: () => Observable<any>;
        connect: (ssid: string, password?: string) => Promise<any>;
        forgetConnection: (ssid: string) => Promise<any>;
        reset: () => Promise<any>;
        speedTest: () => Promise<any>;
    };
}
export {};
//# sourceMappingURL=BluetoothClient.d.ts.map