import type { RuntimeEvent, RuntimeEventType, RuntimeEventCategory, RuntimeEventListener, EventFilterOptions } from "@loomic/types"; /** * Derive the event category from its type string. * e.g. "signal:received" → "signal" */ export declare function categoryFromType(type: RuntimeEventType): RuntimeEventCategory; /** * Create a RuntimeEvent with auto-generated id, timestamp, and derived category. */ export declare function createEvent(type: RuntimeEventType, data: Record, overrides?: Partial>): RuntimeEvent; /** * RuntimeEventEmitter — typed event emitter for the Loomic runtime. * * Consumers subscribe with optional filters. * The runtime calls listeners synchronously when events are emitted. * If no listeners match a given event, no work is done beyond the match check. */ export declare class RuntimeEventEmitter { private listeners; /** * Subscribe to events. Returns an unsubscribe function. */ on(listener: RuntimeEventListener, filter?: EventFilterOptions): () => void; /** * Subscribe to a single occurrence, then auto-unsubscribe. */ once(listener: RuntimeEventListener, filter?: EventFilterOptions): () => void; /** * Remove a specific listener (by reference). */ off(listener: RuntimeEventListener): void; /** * Remove all listeners. */ removeAllListeners(): void; /** * Emit an event to all matching listeners. */ emit(event: RuntimeEvent): void; /** * Check whether any listeners are registered that would match the given event type. * Useful for lazy event construction — skip building the event if nobody is listening. */ hasListeners(type?: RuntimeEventType): boolean; /** * Current number of registered listeners. */ get listenerCount(): number; } //# sourceMappingURL=event-emitter.d.ts.map