import { MemoryStorage } from '../core';
import { Dispatcher } from '../reactive';
export interface EventBusEvent {
    id: string;
    event: string;
    data: any;
    metadata: {
        ttl?: number | null;
        priority?: 'low' | 'normal' | 'high';
        [key: string]: any;
    };
    timestamp: number;
}
export interface EventBusState {
    events: Record<string, EventBusEvent>;
    subscriptions: Record<string, any>;
}
export interface EventBusConfig {
    name?: string;
    autoCleanup?: boolean;
    maxEvents?: number;
}
/**
 * Class-диспетчер EventBus. Экшены объявляются как поля (имя экшена = имя поля),
 * сервисы (storage-каст, реестр активных подписок, config) захватываются в замыкания
 * через конструктор.
 */
declare class EventBusDispatcher extends Dispatcher<EventBusState> {
    #private;
    constructor(storage: MemoryStorage<EventBusState>, config: EventBusConfig);
    /** Публикация события в EventBus. */
    readonly publish: import("..").DispatchFunction<{
        event: string;
        data: any;
        metadata?: Record<string, any>;
    }, {
        eventId: string;
        event: string;
        data: any;
    }>;
    /** Подписка на события в EventBus. */
    readonly subscribe: import("..").DispatchFunction<{
        eventPattern: string;
        handler: (data: any, event: EventBusEvent) => void | Promise<void>;
        options?: Record<string, any>;
    }, {
        subscriptionId: string;
        unsubscribe: () => void;
    }>;
    /** Получение истории событий. */
    readonly getEventHistory: import("..").DispatchFunction<{
        eventType: string;
        limit?: number;
    }, EventBusEvent[]>;
    /** Очистка событий. */
    readonly clearEvents: import("..").DispatchFunction<{
        olderThan?: number;
    }, void>;
    /** Получение активных подписок. */
    readonly getActiveSubscriptions: import("..").DispatchFunction<void, any[]>;
    destroy(): void;
}
/**
 * Создает EventBus для связи между модулями.
 *
 * Возвращает `SynapseModule`-handle (ленивый, PromiseLike): фабрика исполняется при
 * первом `await`/`ready()`. `eventBus.dispatcher` — инстанс class-диспетчера, его поля
 * (`publish`/`subscribe`/...) и есть dispatch-функции.
 *
 * @example
 * ```typescript
 * const eventBus = createEventBus({ name: 'app-events', autoCleanup: true, maxEvents: 500 })
 * const bus = await eventBus
 *
 * bus.dispatcher.publish({ event: 'USER_UPDATED', data: { userId: 123 } })
 * bus.dispatcher.subscribe({ eventPattern: 'CORE_*', handler: (data, event) => {} })
 *
 * // Использование как внешнего диспетчера другого synapse:
 * const mySynapse = createSynapse({
 *   storage: () => new MemoryStorage<MyState>({ name: 'my', initialState }),
 *   dispatcher: (s) => new MyDispatcher(s),
 *   externalDispatchers: () => ({ eventBus: eventBus.dispatcher }),
 *   effects: () => new MyEffects(),
 * })
 * ```
 */
export declare const createEventBus: (config?: EventBusConfig) => import("./createSynapse").SyncSynapseModule<EventBusState, EventBusDispatcher, undefined>;
export {};
