import { IConfig, IRoom } from '../types/types';
export interface PushPayloadLike {
    messageId?: string;
    notification?: {
        title?: string;
        body?: string;
        image?: string;
    };
    data?: Record<string, any>;
}
export declare const isSystemPayload: (payload: PushPayloadLike) => boolean;
export declare const isActiveRoom: (activeRoomJid?: string, roomJid?: string) => boolean;
export declare const isCurrentUserMessage: (messageUserId?: string, currentXmppUsername?: string) => boolean;
export declare const buildNotificationUrl: (payload: PushPayloadLike, origin: string) => string;
export interface XmppToastDecisionInput {
    config?: IConfig;
    tabVisible: boolean;
    activeRoom: boolean;
    currentUserMessage: boolean;
    isSystem: boolean;
    isHistory?: boolean;
    isCatchup?: boolean;
    xmppOnline?: boolean;
}
export interface DecisionResult {
    show: boolean;
    reason: string;
}
export declare const shouldShowXmppToast: ({ config, tabVisible, activeRoom, currentUserMessage, isSystem, isHistory, isCatchup, }: XmppToastDecisionInput) => DecisionResult;
export interface ForegroundPushToastInput {
    config?: IConfig;
    tabVisible: boolean;
    alreadyInStore: boolean;
    deduped: boolean;
    isSystem: boolean;
    isHistory?: boolean;
    isCatchup?: boolean;
}
export declare const shouldShowForegroundPushToast: ({ config, tabVisible, alreadyInStore, deduped, isSystem, isHistory, isCatchup, }: ForegroundPushToastInput) => DecisionResult;
export interface ForegroundOsPushInput {
    config?: IConfig;
    tabVisible: boolean;
}
export declare const shouldShowForegroundOsPush: ({ config, tabVisible, }: ForegroundOsPushInput) => DecisionResult;
export declare const hasMessageInRooms: (roomsMap: Record<string, IRoom>, messageId?: string) => boolean;
