/** * Event bus contract (matches @senpi/playbook). * Shared by runtime and DSL so runtime does not depend on DSL internals. */ export interface SenpiEventBus { emit(eventName: string, payload?: unknown): void; on(eventName: string, handler: (payload?: unknown) => void): void; /** Remove a single listener (same reference as passed to `on`). */ off(eventName: string, handler: (payload?: unknown) => void): void; /** Remove all listeners. Call on shutdown to prevent zombie handlers. */ removeAllListeners?(): void; } //# sourceMappingURL=event-bus.d.ts.map