export default abstract class ExpressionNode { left: ExpressionNode; right: ExpressionNode; parent: ExpressionNode; constructor(left: ExpressionNode, right: ExpressionNode); abstract serialize(): any; traverse(getValue: (node: U) => T, valueCondition: (node: U) => boolean, traverseCondition?: (node: ExpressionNode) => boolean): Array; find(getValue: (node: U) => T, valueCondition: (node: U) => boolean): T | null; assignParents(): ExpressionNode; private recursiveTraverse; private recursiveFind; private recursiveAssignParents; }