import firebase from "firebase/app";
import { FirebaseApp } from "./FirebaseApp";
import { SDKDependencies } from "../../types/options";
declare type FirebaseDeviceOptions = {
    deviceId: string;
    firebaseApp: FirebaseApp;
    dependencies: SDKDependencies;
};
/**
 * @hidden
 */
export declare class FirebaseDevice {
    static serverType: string;
    protected app: firebase.app.App;
    protected deviceStore: any;
    deviceId: string;
    constructor({ deviceId, firebaseApp, dependencies }: FirebaseDeviceOptions);
    get timestamp(): any;
    dispatchAction(action: any): Promise<any>;
    getInfo(): Promise<any>;
    onNamespace(namespace: string, callback: Function): Function;
    onceNamespace(namespace: string): Promise<any>;
    offNamespace(namespace: string, listener: Function): void;
    getTimesync(): Promise<number>;
    /**
     * Pushes metric for each subscriptions in path:
     * /devices/:deviceId/metrics/:metricName
     */
    nextMetric(metricName: string, metricValue: {
        [label: string]: any;
    }): void;
    /**
     * Listens for metrics in path:
     * /devices/:deviceId/metrics/:metricName
     */
    onMetric(subscription: any, callback: any): Function;
    /**
     * Creates a new and unique subscription in path:
     * /devices/:deviceId/subscriptions/:subscriptionId
     * E.g. /devices/device1/subscriptions/subscription3
     *
     * @param subscription
     * @returns subscriptionId
     */
    subscribeToMetric(subscription: any): any;
    /**
     * Removes subscription in path:
     * /devices/:deviceId/subscriptions/:subscriptionId
     *
     * @param subscription
     */
    unsubscribeFromMetric(subscription: any): void;
    /**
     * Removes metric listener
     * /devices/:deviceId/metric
     * or
     * /devices/:deviceId/metric/label
     *
     * @param subscription
     * @param listener
     */
    removeMetricListener(subscription: any, listener: Function): void;
    changeSettings(settings: any): Promise<void>;
    getSkill(bundleId: any): Promise<any>;
    createBluetoothToken(): Promise<string>;
    disconnect(): void;
}
export {};
