/** * 2mqjs — единая шина портов (pub/sub) с гарантированным singleton-состоянием. * * emitPort('name', payload) — публикация * onPort('name', cb) — подписка (off-функция) * oncePort('name', cb) — одноразовая подписка (off) * getPortSnapshot('name') — последнее значение, если было * setPortsDebug(true | opts) — включить/выключить логирование * * Коллекции лежат на globalThis под Symbol.for('2mqjs.ports'), * поэтому любая копия модуля использует один и тот же «центр». */ export type PortName = string; export type PortListener = (payload: T) => void; /** * Уведомляет подписчиков в основном потоке и подходящих Workers. */ export declare function emitPort(port: PortName, payload: T): void; export declare function onPort(port: PortName, cb: PortListener, replay?: boolean): () => void; export declare function oncePort(port: PortName, cb: PortListener): () => void; export declare function getPortSnapshot(port: PortName): T | undefined; /** * Включает/выключает логирование портов. * * @param on true / false или { emit?: boolean; listen?: boolean } */ export declare function setPortsDebug(on: boolean | Partial<{ emit: boolean; listen: boolean; }>): void; /** * Привязывает Worker и возвращает функцию, которая восстанавливает предыдущее состояние. * * @param ports Если список не передан, Worker получает все ports; пустой список — ни одного. */ export declare function _attachWorker(worker: Worker, ports?: readonly string[]): () => void; export declare function _detachWorker(worker: Worker): void;