import { Module } from "@intuitionrobotics/ts-common";
import { type FirebaseType_BatchResponse, type FirebaseType_Message, FirestoreTransaction } from "@intuitionrobotics/firebase/backend";
import { type DB_Notifications, type IFP, type ISP, type ITP, type MessageType, type Request_PushRegister, type SubscribeProps } from "../../index.js";
import { type ExpressRequest } from "@intuitionrobotics/thunderstorm/backend";
type Config = {
    notificationsCleanupTime?: number;
    sessionsCleanupTime?: number;
};
type TempMessages = {
    [token: string]: DB_Notifications[];
};
export declare class PushPubSubModule_Class extends Module<Config> {
    constructor();
    private _pushSessions?;
    private _pushKeys?;
    private _notifications?;
    private _messaging?;
    private get session();
    private get pushSessions();
    private get pushKeys();
    private get notifications();
    private get messaging();
    register(body: Request_PushRegister, request: ExpressRequest): Promise<DB_Notifications[]>;
    pushToKey<M extends MessageType<any, any, any> = never, S extends string = IFP<M>, P extends SubscribeProps = ISP<M>, D = ITP<M>>(key: S, props?: P, data?: D, persistent?: boolean, transaction?: FirestoreTransaction): Promise<void>;
    pushToUser<M extends MessageType<any, any, any> = never, _S extends string = IFP<M>, P extends SubscribeProps = ISP<M>, D = ITP<M>>(user: string, key: string, props?: P, data?: D, persistent?: boolean): Promise<void>;
    private buildNotification;
    sendMessage: (persistent: boolean, _messages: TempMessages) => Promise<{
        response: FirebaseType_BatchResponse;
        messages: FirebaseType_Message[];
    } | undefined>;
    readNotification: (id: string, read: boolean) => Promise<void>;
    scheduledCleanup: () => Promise<void>;
    cleanUp: (response: FirebaseType_BatchResponse, messages: FirebaseType_Message[]) => Promise<void>;
    private cleanUpImpl;
}
export declare const PushPubSubModule: PushPubSubModule_Class;
export {};
//# sourceMappingURL=PushPubSubModule.d.ts.map