interface BroadcastMessage<T = unknown> {
    type: string;
    payload?: T;
    senderId: string;
    targetId?: string;
    timestamp: number;
}
type MessageHandler<T> = (message: BroadcastMessage<T>) => void | Promise<void>;
type SyncRequestHandler<T> = () => T | Promise<T>;
export declare class SyncBroadcastChannel<T = unknown> {
    private channel;
    private readonly tabId;
    private messageHandlers;
    private syncHandler?;
    private syncTimeoutMs;
    private closed;
    private pendingSyncRequests;
    constructor(channelName: string);
    private error;
    private handleMessage;
    private handleError;
    private postMessage;
    /**
     * Подписка на сообщения канала
     */
    subscribe(handler: MessageHandler<T>): () => boolean;
    /**
     * Установка обработчика запросов на синхронизацию
     */
    setSyncHandler(handler: SyncRequestHandler<T>): void;
    /**
     * Отправка сообщения всем подписчикам
     */
    broadcast(type: string, payload?: T): void;
    /** Закрыт ли канал (dev double-mount / teardown). Потребители могут пропустить initial-sync. */
    get isClosed(): boolean;
    /** Запрос синхронизации данных с других вкладок. */
    requestSync(): Promise<T | null>;
    /**
     * Закрытие канала
     */
    close(): void;
}
export {};
