import { type ReactiveStore } from "./reactive"; /** `S2C_HELLO` feature bit: the compositor desktop bus has a live bridge. */ export declare const FEATURE_DESKTOP: number; export declare const C2S_DESKTOP_SUBSCRIBE = 59; export declare const C2S_TRAY_EVENT = 60; export declare const C2S_NOTIFICATION_EVENT = 61; export declare const S2C_TRAY_UPDATE = 50; export declare const S2C_TRAY_MENU = 51; export declare const S2C_NOTIFICATION_UPDATE = 52; export declare const DESKTOP_MAX_DECOMPRESSED: number; export declare const DESKTOP_SUBSCRIBE_TRAY: number; export declare const DESKTOP_SUBSCRIBE_NOTIFICATIONS: number; export declare const DESKTOP_SUBSCRIBE_ALL: number; export declare const DESKTOP_UPDATE_RESET: number; export declare const DESKTOP_UPDATE_SYNC: number; export declare const DESKTOP_UPDATE_REPLAY: number; export declare const TRAY_EVENT_ACTIVATE = 0; export declare const TRAY_EVENT_SECONDARY_ACTIVATE = 1; export declare const TRAY_EVENT_OPEN_MENU = 2; export declare const TRAY_EVENT_SCROLL = 3; export declare const TRAY_EVENT_MENU_ITEM = 4; export declare const TRAY_EVENT_SCROLL_HORIZONTAL: number; export declare const NOTIFICATION_EVENT_DEFAULT = 0; export declare const NOTIFICATION_EVENT_ACTION = 1; export declare const NOTIFICATION_EVENT_DISMISS = 2; export declare const TRAY_STATUS_PASSIVE = 0; export declare const TRAY_STATUS_ACTIVE = 1; export declare const TRAY_STATUS_NEEDS_ATTENTION = 2; export declare const TRAY_HAS_MENU: number; export declare const TRAY_ITEM_IS_MENU: number; export declare const TRAY_MENU_OK = 0; export declare const TRAY_MENU_NONE = 1; export declare const TRAY_MENU_UNAVAILABLE = 2; export declare const TRAY_MENU_STALE = 3; export declare const MENU_NODE_VISIBLE: number; export declare const MENU_NODE_ENABLED: number; export declare const MENU_NODE_SEPARATOR: number; export declare const MENU_NODE_SUBMENU: number; export declare const MENU_NODE_CHECKMARK: number; export declare const MENU_NODE_RADIO: number; export declare const NOTIFICATION_RESIDENT: number; export declare const NOTIFICATION_TRANSIENT: number; export declare const NOTIFICATION_CLOSED_EXPIRED = 1; export declare const NOTIFICATION_CLOSED_DISMISSED = 2; export declare const NOTIFICATION_CLOSED_BY_CALLER = 3; export declare const NOTIFICATION_CLOSED_UNDEFINED = 4; export interface DesktopImage { width: number; height: number; png: Uint8Array; } export interface TrayItem { trayId: number; revision: number; status: number; category: number; flags: number; appId: string; title: string; tooltipTitle: string; tooltipBody: string; icon: DesktopImage; } export interface TrayMenuNode { id: number; parentId: number; position: number; flags: number; toggleState: number; label: string; icon: DesktopImage; } export interface TrayMenu { trayId: number; trayRevision: number; menuRevision: number; status: number; nodes: readonly TrayMenuNode[]; } export interface NotificationAction { key: string; label: string; } export interface DesktopNotification { notificationId: number; revision: number; urgency: number; flags: number; timeoutMs: number; appName: string; desktopEntry: string; summary: string; body: string; icon: DesktopImage; image: DesktopImage; actions: readonly NotificationAction[]; } export type TrayRecord = { kind: "upsert"; item: TrayItem; } | { kind: "delete"; trayId: number; }; export type NotificationRecord = { kind: "upsert"; item: DesktopNotification; } | { kind: "delete"; notificationId: number; revision: number; reason: number; }; export declare function parseTrayUpdate(message: Uint8Array): { flags: number; records: TrayRecord[]; } | null; export declare function parseNotificationUpdate(message: Uint8Array): { flags: number; records: NotificationRecord[]; } | null; export declare function parseTrayMenu(message: Uint8Array): TrayMenu | null; export declare function buildDesktopSubscribeMessage(flags: number): Uint8Array; export declare function buildTrayEventMessage(trayId: number, kind: number, menuRevision?: number, value?: number, flags?: number): Uint8Array; export declare function buildNotificationEventMessage(notificationId: number, revision: number, kind: number, key?: string): Uint8Array; export declare function buildTrayUpdateMessage(flags: number, records: readonly TrayRecord[]): Uint8Array; export declare function buildNotificationUpdateMessage(flags: number, records: readonly NotificationRecord[]): Uint8Array; /** Framework-neutral state and semantic input API for one blit connection. */ export declare class DesktopStore implements ReactiveStore { #private; get revision(): number; subscribe: (listener: () => void) => (() => void); get tray(): ReadonlyMap; get notifications(): ReadonlyMap; setSender(sender: ((message: Uint8Array) => void) | null): void; onNotificationRaised(listener: (notification: DesktopNotification) => void): () => void; onTrayMenu(listener: (menu: TrayMenu) => void): () => void; handleTrayUpdate(message: Uint8Array): boolean; handleNotificationUpdate(message: Uint8Array): boolean; handleTrayMenu(message: Uint8Array): boolean; subscribeDesktop(flags?: number): void; activate(trayId: number): void; secondaryActivate(trayId: number): void; openMenu(trayId: number, menuRevision?: number, parentId?: number): void; scroll(trayId: number, delta: number, horizontal?: boolean): void; clickMenuItem(trayId: number, menuRevision: number, itemId: number): void; invokeDefault(notificationId: number, revision: number): void; invokeAction(notificationId: number, revision: number, key: string): void; dismiss(notificationId: number, revision: number): void; reset(): void; } //# sourceMappingURL=desktop.d.ts.map