UNPKG

agentjs-core

Version:

A comprehensive agent-based modeling framework with built-in p5.js visualization

208 lines (206 loc) 5.03 kB
import { EventEmitter } from 'eventemitter3'; /** * Parameter value types */ export type ParameterValue = number | boolean | string; /** * Parameter types */ export declare enum ParameterType { NUMBER = "number", BOOLEAN = "boolean", ENUM = "enum" } /** * Parameter definition */ export interface ParameterDefinition { key: string; label: string; type: ParameterType; defaultValue: ParameterValue; description?: string; category?: string; min?: number; max?: number; step?: number; options?: string[]; validator?: (value: ParameterValue) => boolean; displayOrder?: number; hidden?: boolean; readonly?: boolean; } /** * Parameter group for organization */ export interface ParameterGroup { name: string; label: string; parameters: ParameterDefinition[]; collapsed?: boolean; } /** * Parameter change event */ export interface ParameterChangeEvent { key: string; oldValue: ParameterValue; newValue: ParameterValue; source: 'ui' | 'api' | 'preset'; } /** * Parameter preset */ export interface ParameterPreset { name: string; description?: string; values: Record<string, ParameterValue>; } /** * Manager events */ export interface ParameterManagerEvents { 'parameter:changed': (event: ParameterChangeEvent) => void; 'parameter:registered': (definition: ParameterDefinition) => void; 'preset:applied': (preset: ParameterPreset) => void; 'validation:failed': (key: string, value: ParameterValue, error: string) => void; } /** * Dynamic parameter management system */ export declare class ParameterManager extends EventEmitter<ParameterManagerEvents> { private parameters; private values; private groups; private presets; private changeCallbacks; constructor(); /** * Register a new parameter */ registerParameter(definition: ParameterDefinition): void; /** * Register multiple parameters at once */ registerParameters(definitions: ParameterDefinition[]): void; /** * Register a parameter group */ registerGroup(group: ParameterGroup): void; /** * Get parameter value */ getValue(key: string): ParameterValue | undefined; /** * Get typed parameter value */ getNumber(key: string): number; /** * Get typed boolean value */ getBoolean(key: string): boolean; /** * Get typed string value */ getString(key: string): string; /** * Set parameter value */ setValue(key: string, value: ParameterValue, source?: 'ui' | 'api' | 'preset'): boolean; /** * Set multiple values at once */ setValues(values: Record<string, ParameterValue>, source?: 'ui' | 'api' | 'preset'): void; /** * Register a callback for parameter changes */ onChange(key: string, callback: (value: ParameterValue) => void): () => void; /** * Get parameter definition */ getDefinition(key: string): ParameterDefinition | undefined; /** * Get all parameter definitions */ getAllDefinitions(): ParameterDefinition[]; /** * Get parameters by category */ getByCategory(category: string): ParameterDefinition[]; /** * Get all groups */ getGroups(): ParameterGroup[]; /** * Get all current values */ getAllValues(): Record<string, ParameterValue>; /** * Save current values as a preset */ savePreset(name: string, description?: string): ParameterPreset; /** * Apply a preset */ applyPreset(name: string): boolean; /** * Get all presets */ getPresets(): ParameterPreset[]; /** * Delete a preset */ deletePreset(name: string): boolean; /** * Export configuration */ exportConfig(): { definitions: ParameterDefinition[]; values: Record<string, ParameterValue>; presets: ParameterPreset[]; }; /** * Import configuration */ importConfig(config: { definitions?: ParameterDefinition[]; values?: Record<string, ParameterValue>; presets?: ParameterPreset[]; }): void; /** * Reset parameter to default value */ resetToDefault(key: string): boolean; /** * Reset all parameters to defaults */ resetAllToDefaults(): void; /** * Validate parameter definition */ private validateDefinition; /** * Validate parameter value */ private validateValue; /** * Add parameter to group */ private addToGroup; /** * Create UI controls for parameters */ createUIControls(container: HTMLElement): void; /** * Create group element */ private createGroupElement; /** * Create parameter control element */ private createParameterControl; } /** * Factory function for creating parameter managers */ export declare function createParameterManager(): ParameterManager;