import type { ArkmeChatClientEvent } from '../types.js'; export type ArkmeDesktopNotificationRequest = Extract['notification']; export interface ArkmeDesktopNotificationActivation { activationId?: string; kind?: 'chat-source'; sourceRef: string; sourceKey?: string; } export interface ArkmeDesktopNotificationActivationV2 { activationId: string; kind: 'chat-source'; sourceRef: string; sourceKey?: string; } export type ArkmeDesktopNotificationActivationOutcome = 'resolved' | 'not-found' | 'failed' | 'superseded'; export interface ArkmeDesktopNotificationBridge { applyDirectoryBadge?(count: number): Promise; show(request: ArkmeDesktopNotificationRequest): Promise<{ shown: boolean; }>; onActivated(listener: (sourceRef: string) => void): () => void; onActivation?(listener: (activation: ArkmeDesktopNotificationActivation) => void): () => void; onActivationV2?(listener: (activation: ArkmeDesktopNotificationActivationV2) => void): () => void; completeActivationV2?(activationId: string, outcome: ArkmeDesktopNotificationActivationOutcome): boolean | void | Promise; permission?(): ArkmeDesktopNotificationPermission; requestPermission?(): Promise; refreshPermission?(): ArkmeDesktopNotificationPermission | Promise; openSettings?(): Promise; onPermissionChanged?(listener: (permission: ArkmeDesktopNotificationPermission) => void): () => void; } export type ArkmeDesktopNotificationPermission = NotificationPermission | 'system-managed' | 'unavailable'; export interface ArkmeDesktopNotificationPermissionSnapshot { revision: number; permission: ArkmeDesktopNotificationPermission; } declare global { interface Window { arkmeDesktopNotifications?: ArkmeDesktopNotificationBridge; } } export declare class ArkmeDesktopNotificationRuntime { private readonly getBridge; private readonly maxRememberedEventUids; private readonly rememberedEventUids; private readonly rememberedActivations; private readonly activeActivationIds; private readonly completedActivationOutcomes; private readonly permissionListeners; private permissionSnapshot; private permissionRefreshInFlight; constructor(getBridge?: () => ArkmeDesktopNotificationBridge | undefined, maxRememberedEventUids?: number); readonly getPermissionSnapshot: () => ArkmeDesktopNotificationPermissionSnapshot; readonly subscribePermission: (listener: () => void) => (() => void); show(request: ArkmeDesktopNotificationRequest): Promise; permission(): ArkmeDesktopNotificationPermission; refreshPermission(): Promise; private refreshPermissionOnce; requestPermission(): Promise; openPermissionSettings(): Promise; onActivated(listener: (activation: ArkmeDesktopNotificationActivation) => void): () => void; completeActivationV2(activationId: string, outcome: ArkmeDesktopNotificationActivationOutcome): Promise; private sendActivationV2Outcome; private readPermission; private updatePermission; } export declare const arkmeDesktopNotifications: ArkmeDesktopNotificationRuntime; //# sourceMappingURL=desktop-notification-runtime.d.ts.map