import { LogicalSystem, Operation, InputFormat, LogicResult } from '../types.js';
/**
* Base class for all logic systems
*/
export abstract class BaseLogicSystem {
/**
* Main entry point for logic operations
*/
process(operation: Operation, input: string | any, format: InputFormat): LogicResult {
try {
switch (operation) {
case 'validate':
return this.validate(input, format);
case 'formalize':
return this.formalize(input, format);
case 'visualize':
return this.visualize(input, format);
case 'solve':
return this.solve(input, format);
default:
throw new Error(`Unsupported operation: ${operation}`);
}
} catch (error) {
return {
status: 'error',
message: error instanceof Error ? error.message : 'Unknown error',
details: {
system: this.getSystemName()
}
};
}
}
abstract validate(input: string, format: InputFormat): any;
abstract formalize(input: string, format: InputFormat): any;
abstract visualize(input: string, format: InputFormat): any;
abstract solve(input: string, format: InputFormat): any;
protected getSystemName(): LogicalSystem {
// Override in subclasses
return 'propositional';
}
}