import { AgentDependencies } from "./AgentDependencies.mjs";
import { BaseEvent } from "./Events.mjs";
import { AgentContext } from "./context/AgentContext.mjs";
import "./context/index.mjs";
import * as rxjs from "rxjs";
import { Subject } from "rxjs";

//#region src/agent/EventEmitter.d.ts
type EmitEvent<T extends BaseEvent> = Omit<T, 'metadata'>;
declare class EventEmitter {
  private eventEmitter;
  private stop$;
  constructor(agentDependencies: AgentDependencies, stop$: Subject<boolean>);
  emit<T extends BaseEvent>(agentContext: AgentContext, data: EmitEvent<T>): void;
  on<T extends BaseEvent>(event: T['type'], listener: (data: T) => void | Promise<void>): void;
  off<T extends BaseEvent>(event: T['type'], listener: (data: T) => void | Promise<void>): void;
  observable<T extends BaseEvent>(event: T['type']): rxjs.Observable<T>;
}
//#endregion
export { EventEmitter };
//# sourceMappingURL=EventEmitter.d.mts.map