import { MaybeRefOrGetter, Ref } from 'vue'; export interface PresenceHeartbeatPayload { client_id: string; scope: string; } export interface PresenceHeartbeatResponse { frontend_revision?: string | null; } interface PresenceDocument { readonly visibilityState: DocumentVisibilityState; addEventListener(type: 'visibilitychange', listener: EventListener): void; removeEventListener(type: 'visibilitychange', listener: EventListener): void; } interface PresenceStorage { getItem(key: string): string | null; setItem(key: string, value: string): void; } export interface PresenceHeartbeatOptions { /** Platform, plugin id, or plugin name reported for this browser tab. */ scope: MaybeRefOrGetter; /** Disable all traffic, including for standalone plugins. */ enabled?: MaybeRefOrGetter; /** Heartbeat interval. Defaults to 30 seconds. */ intervalMs?: number; /** Test or host storage seam. Defaults to sessionStorage. */ storage?: PresenceStorage | null; /** Test or host document seam. Defaults to the current document. */ document?: PresenceDocument | null; /** Test seam for generating the per-tab id. */ createClientId?: () => string; /** Test or custom transport seam. Defaults to authenticated POST /api/presence/heartbeat. */ send?: (payload: PresenceHeartbeatPayload) => Promise | unknown; /** Observe the authenticated response without adding another poller. */ onResponse?: (response: PresenceHeartbeatResponse | unknown) => void; /** Test timing seam. Defaults to the browser scheduler. */ setInterval?: (callback: () => void, intervalMs: number) => unknown; /** Test timing seam. Defaults to the browser scheduler. */ clearInterval?: (intervalId: unknown) => void; } export interface UsePresenceHeartbeatReturn { clientId: string; isRunning: Readonly>; sendNow: () => Promise; } /** Return the stable id shared by presence callers in the current browser tab. */ export declare function getPresenceClientId(storage?: PresenceStorage | null, createClientId?: () => string): string; /** Report one visible integrated MINT browser tab to the platform presence tracker. */ export declare function usePresenceHeartbeat(options: PresenceHeartbeatOptions): UsePresenceHeartbeatReturn; export {};