type IpcMsg = { kind: 'ready'; }; type Handler = (msg: IpcMsg) => void; export declare function installClientRpc(): void; export declare function subscribe(h: Handler): () => void; export declare function post(msg: unknown): void; /** * Quits the app. * * Uses the request-correlated native bridge and requires the calling window * to have the `app:quit` capability. Rust turns the authorized request into * a graceful host shutdown without round-tripping through Node/libuv. * * This is the only way to quit a murasaki app programmatically; there is no * other API for it. `useUpdate()`'s `install()` calls this after the backend * has staged a verified launcher handoff. The native host spawns the detached * apply-helper only after graceful shutdown succeeds, per the install โ†’ quit โ†’ * apply handshake (updater contract ยง7) โ€” but it's a * general-purpose primitive, not an updater internal. */ export declare function quit(): Promise; export interface ContextMenuItem { id?: string; label?: string; role?: 'copy' | 'cut' | 'paste' | 'selectAll' | 'undo' | 'redo' | 'about' | 'quit' | 'close' | 'minimize' | 'zoom' | 'separator'; accelerator?: string; enabled?: boolean; submenu?: ContextMenuItem[]; } export declare function useGlobalContextMenu(items: ContextMenuItem[] | ((target: EventTarget | null) => ContextMenuItem[]), onSelect?: (id: string) => void): void; export {}; //# sourceMappingURL=rpc.d.ts.map