import { NotificationCountType } from "matrix-js-sdk/src/matrix";
import type { IPushRule, Room, MatrixClient } from "matrix-js-sdk/src/matrix";
import { NotificationLevel } from "./stores/notifications/NotificationLevel";
export declare enum RoomNotifState {
    AllMessagesLoud = "all_messages_loud",
    AllMessages = "all_messages",
    MentionsOnly = "mentions_only",
    Mute = "mute"
}
export declare function getRoomNotifsState(client: MatrixClient, roomId: string): RoomNotifState | null;
export declare function setRoomNotifsState(client: MatrixClient, roomId: string, newState: RoomNotifState): Promise<void>;
export declare function getUnreadNotificationCount(room: Room, type: NotificationCountType, includeThreads: boolean, threadId?: string): number;
/**
 * Checks if a given rule is a room mute rule as implemented by EW
 * - matches every event in one room (one condition that is an event match on roomId)
 * - silences notifications (one action that is `DontNotify`)
 * @param rule - push rule
 * @returns {boolean} - true when rule mutes a room
 */
export declare function isRuleMaybeRoomMuteRule(rule: IPushRule): boolean;
/**
 * Returns an object giving information about the unread state of a room or thread
 * @param room The room to query, or the room the thread is in
 * @param threadId The thread to check the unread state of, or undefined to query the main thread
 * @param includeThreads If threadId is undefined, true to include threads other than the main thread, or
 *   false to exclude them. Ignored if threadId is specified.
 * @returns
 */
export declare function determineUnreadState(room?: Room, threadId?: string, includeThreads?: boolean): {
    level: NotificationLevel;
    symbol: string | null;
    count: number;
};
