agentjs-core
Version:
A comprehensive agent-based modeling framework with built-in p5.js visualization
79 lines • 2.64 kB
TypeScript
/**
* Event type definitions for the AgentJS framework
*/
import type { Agent } from '../core/agents/Agent';
import type { PropertyValue } from './core';
/** Base event interface */
export interface BaseEvent {
readonly type: string;
readonly timestamp: number;
readonly source?: Agent;
}
/** Agent property change event */
export interface PropertyChangedEvent extends BaseEvent {
readonly type: 'propertyChanged';
readonly agent: Agent;
readonly property: string;
readonly oldValue: PropertyValue;
readonly newValue: PropertyValue;
}
/** Agent position change event */
export interface PositionChangedEvent extends BaseEvent {
readonly type: 'positionChanged';
readonly agent: Agent;
readonly oldPosition: {
x: number;
y: number;
};
readonly newPosition: {
x: number;
y: number;
};
}
/** Agent interaction event */
export interface InteractionEvent extends BaseEvent {
readonly type: 'interaction';
readonly initiator: Agent;
readonly target: Agent;
readonly interactionType: string;
readonly result: Record<string, any>;
}
/** Network connection event */
export interface ConnectionEvent extends BaseEvent {
readonly type: 'connectionFormed' | 'connectionBroken' | 'connectionModified';
readonly source: Agent;
readonly target: Agent;
readonly connectionType: string;
readonly strength?: number;
}
/** Agent lifecycle events */
export interface AgentLifecycleEvent extends BaseEvent {
readonly type: 'agentCreated' | 'agentDestroyed' | 'agentActivated' | 'agentDeactivated';
readonly agent: Agent;
}
/** Simulation step event */
export interface SimulationStepEvent extends BaseEvent {
readonly type: 'simulationStep';
readonly stepNumber: number;
readonly agentCount: number;
readonly activeAgents: number;
}
/** Performance warning event */
export interface PerformanceWarningEvent extends BaseEvent {
readonly type: 'performanceWarning';
readonly metric: string;
readonly value: number;
readonly threshold: number;
readonly message: string;
}
/** Union of all event types */
export type AgentEvent = PropertyChangedEvent | PositionChangedEvent | InteractionEvent | ConnectionEvent | AgentLifecycleEvent | SimulationStepEvent | PerformanceWarningEvent;
/** Event listener function type */
export type EventListener<T extends BaseEvent = AgentEvent> = (_event: T) => void;
/** Event handler map */
export type EventHandlerMap = {
[K in AgentEvent['type']]?: EventListener<Extract<AgentEvent, {
type: K;
}>>[];
};
//# sourceMappingURL=events.d.ts.map