/** 表达式中的元素类型 */
export type ItemType = 'operand' | 'operator' | 'logic' | 'number' | 'leftParen' | 'rightParen';

/** 表达式中的一个元素单元 */
export interface Item {
  type: ItemType;
  value: string;
  label?: string;
}

/** 元素库的分组 */
export interface ElementGroup {
  key: string;
  header: string;
  type: string;
  items: Item[];
  extra: Item[];
}

/** 表达式校验结果 */
export interface ValidationResult {
  valid: boolean;
  message?: string;
}

/** 单个原子条件的求值详情 */
export interface EvaluateDetail {
  /** 条件的人类可读描述，如 "压差 > 500" */
  condition: string;
  /** 是否通过 */
  passes: boolean;
  /** 不通过时的原因说明，如 "压差当前为 100，不满足大于 500 的条件" */
  reason?: string;
}

/** 表达式求值结果 */
export interface EvaluateResult {
  /** 整体是否通过 */
  passes: boolean;
  /** 每个原子条件的详细结果 */
  details: EvaluateDetail[];
  /** 人类可读的总结 */
  summary: string;
}
