import { MatrixEvent, Room, SyncState, SyncStateData, TypedEventEmitter } from "matrix-js-sdk/src/matrix";
export declare const enum NotifierEvent {
    NotificationHiddenChange = "notification_hidden_change"
}
interface EmittedEvents {
    [NotifierEvent.NotificationHiddenChange]: (hidden: boolean) => void;
}
declare class NotifierClass extends TypedEventEmitter<keyof EmittedEvents, EmittedEvents> {
    private notifsByRoom;
    private pendingEncryptedEventIds;
    private toolbarHidden?;
    private isSyncing?;
    private backgroundAudio;
    notificationMessageForEvent(ev: MatrixEvent): string | null;
    displayPopupNotification(ev: MatrixEvent, room: Room): void;
    getSoundForRoom(roomId: string): {
        url: string;
        name: string;
        type: string;
        size: string;
    } | null;
    playAudioNotification(ev: MatrixEvent, room: Room): Promise<void>;
    start(): void;
    stop(): void;
    supportsDesktopNotifications(): boolean;
    setEnabled(enable: boolean, callback?: () => void): void;
    isEnabled(): boolean;
    isPossible(): boolean;
    isBodyEnabled(): boolean;
    isAudioEnabled(): boolean;
    setPromptHidden(hidden: boolean, persistent?: boolean): void;
    shouldShowPrompt(): boolean;
    private isPromptHidden;
    onSyncStateChange: (state: SyncState, prevState: SyncState | null, data?: SyncStateData) => void;
    private onEvent;
    private onEventDecrypted;
    private onRoomReceipt;
    evaluateEvent(ev: MatrixEvent): void;
    /**
     * Some events require special handling such as showing in-app toasts
     */
    private performCustomEventHandling;
}
declare const _default: NotifierClass;
export default _default;
export declare const Notifier: NotifierClass;
