import { Module } from "@intuitionrobotics/ts-common";
import { BaseSubscriptionData, SubscriptionDataRegistration } from "../../index";
export declare const Command_SwToApp = "SwToApp";
type FirebaseConfig = {
    apiKey: string;
    authDomain: string;
    projectId: string;
    messagingSenderId: string;
    databaseURL?: string;
};
export type PushPubSubConfig = {
    config?: FirebaseConfig;
    publicKeyBase64: string;
    swFileName?: string;
    registerOnInit?: boolean;
};
export declare const pushSessionIdKey = "x-push-session-id";
export declare class PushPubSubModule_Class extends Module<PushPubSubConfig> {
    private subscriptions;
    private firebaseToken?;
    private messaging?;
    private readonly pushSessionId;
    protected timeout: number;
    constructor();
    init(): void;
    getPushSessionId(): string;
    private registerServiceWorker;
    initApp: () => void;
    getToken: (options?: {
        vapidKey?: string;
        serviceWorkerRegistration?: ServiceWorkerRegistration;
    }) => Promise<void>;
    private processMessageFromSw;
    private processMessage;
    subscribe: (subscription: SubscriptionDataRegistration) => void;
    private subscribeImpl;
    subscribeMulti: (subscriptions: SubscriptionDataRegistration[]) => void;
    unsubscribe: (subscription: BaseSubscriptionData) => void;
    private register;
}
export declare const PushPubSubModule: PushPubSubModule_Class;
export {};
