import { Observable } from "rxjs";
import { CloudClient } from "./api/index";
import { SDKOptions } from "./types/options";
import { STREAMING_MODE, STREAMING_TYPE } from "./types/streaming";
import { Training } from "./types/training";
import { Credentials, EmailAndPassword } from "./types/credentials";
import { CustomToken } from "./types/credentials";
import { Settings } from "./types/settings";
import { SignalQuality } from "./types/signalQuality";
import { SignalQualityV2 } from "./types/signalQualityV2";
import { Kinesis } from "./types/kinesis";
import { Calm } from "./types/calm";
import { Focus } from "./types/focus";
import { BrainwavesLabel, Epoch, PowerByBand, PSD } from "./types/brainwaves";
import { Accelerometer } from "./types/accelerometer";
import { DeviceInfo, OSVersion } from "./types/deviceInfo";
import { DeviceStatus } from "./types/status";
import { Action } from "./types/actions";
import { HapticEffects } from "./types/hapticEffects";
import { RecordingOptions, RecordingResult, StartRecordingOptions, RecordingHandle } from "./types/recording";
import { OAuthConfig, OAuthQuery } from "./types/oauth";
import { OAuthQueryResult, OAuthRemoveResponse } from "./types/oauth";
import { UserClaims } from "./types/user";
import { Experiment } from "./types/experiment";
import { TransferDeviceOptions } from "./utils/transferDevice";
import { BluetoothClient } from "./api/bluetooth";
import { ApiKeyRecord, CreateApiKeyRequest, RemoveApiKeyResponse } from "./types/apiKey";
export declare class Neurosity {
    protected options: SDKOptions;
    protected cloudClient: CloudClient;
    protected bluetoothClient: BluetoothClient;
    protected isMissingBluetoothTransport: boolean;
    private streamingMode$;
    static get SERVER_TIMESTAMP(): object;
    constructor(options?: SDKOptions);
    _initStreamingMode(streamingMode: STREAMING_MODE, hasBluetoothTransport: boolean): void;
    _osHasBluetoothSupport(): Observable<any>;
    streamingState(): Observable<{
        connected: boolean;
        activeMode: STREAMING_TYPE;
        streamingMode: STREAMING_MODE;
    }>;
    _withStreamingModeObservable<T>(streams: {
        wifi: () => Observable<T>;
        bluetooth: () => Observable<T>;
    }): Observable<any>;
    _withStreamingModePromise<T>(promises: {
        wifi: () => Promise<T>;
        bluetooth: () => Promise<T>;
    }): Promise<T>;
    get bluetooth(): BluetoothClient;
    private _getCloudMetricDependencies;
    login(credentials: Credentials): Promise<void>;
    logout(): Promise<void>;
    __getApp(): import("@firebase/app").FirebaseApp;
    onAuthStateChanged(): Observable<any>;
    addDevice(deviceId: string): Promise<void>;
    removeDevice(deviceId: string): Promise<void>;
    transferDevice(options: TransferDeviceOptions): Promise<void>;
    onUserDevicesChange(): Observable<DeviceInfo[]>;
    onUserClaimsChange(): Observable<UserClaims>;
    getDevices(): Promise<DeviceInfo[]>;
    selectDevice(deviceSelector: (devices: DeviceInfo[]) => DeviceInfo): Promise<DeviceInfo>;
    getSelectedDevice(): Promise<DeviceInfo>;
    getInfo(): Promise<DeviceInfo>;
    onDeviceChange(): Observable<DeviceInfo>;
    disconnect(): Promise<void>;
    private dispatchAction;
    addMarker(label: string): Promise<Action>;
    haptics(effects: any): Promise<any>;
    getHapticEffects(): HapticEffects;
    accelerometer(): Observable<Accelerometer>;
    brainwaves(label: BrainwavesLabel): Observable<Epoch | PowerByBand | PSD>;
    record(options: RecordingOptions): Promise<RecordingResult>;
    startRecording(options: StartRecordingOptions): Promise<RecordingHandle>;
    calm(): Observable<Calm>;
    signalQuality(): Observable<SignalQuality>;
    signalQualityV2(): Observable<SignalQualityV2>;
    settings(): Observable<Settings>;
    osVersion(): Observable<OSVersion>;
    focus(): Observable<Focus>;
    kinesis(label: string): Observable<Kinesis>;
    predictions(label: string): Observable<any>;
    status(): Observable<DeviceStatus>;
    changeSettings(settings: Settings): Promise<void>;
    get training(): Training;
    goOffline(): void;
    goOnline(): void;
    createAccount(credentials: EmailAndPassword): Promise<any>;
    deleteAccount(): Promise<void>;
    createBluetoothToken(): Promise<string>;
    createCustomToken(): Promise<CustomToken>;
    createApiKey(data: CreateApiKeyRequest): Promise<ApiKeyRecord>;
    removeApiKey(apiKeyId: string): Promise<RemoveApiKeyResponse>;
    getTimesyncOffset(): number;
    createOAuthURL(config: OAuthConfig): Promise<string>;
    getOAuthToken(query: OAuthQuery): Promise<OAuthQueryResult>;
    removeOAuthAccess(): Promise<OAuthRemoveResponse>;
    onUserExperiments(): Observable<Experiment[]>;
    deleteUserExperiment(experimentId: string): Promise<void>;
}
//# sourceMappingURL=Neurosity.d.ts.map