import type { BinaryMalloyOperator, CompareMalloyOperator, EqualityMalloyOperator } from '../types/binary_operators'; import type { ExprValue } from '../types/expr-value'; import { ExpressionDef } from '../types/expression-def'; import type { FieldSpace } from '../types/field-space'; import { BinaryBoolean } from './binary-boolean'; export declare class ExprCompare extends BinaryBoolean { elementType: string; constructor(left: ExpressionDef, op: CompareMalloyOperator, right: ExpressionDef); getExpression(fs: FieldSpace): ExprValue; } /** * The parser makes equality nodes, an application of ? * makes an ExprCompare node with operator =. This is how * the special rules for how apply works for equality * nodes gets implemented. */ export declare class ExprEquality extends ExprCompare { elementType: string; constructor(left: ExpressionDef, op: EqualityMalloyOperator, right: ExpressionDef); getExpression(fs: FieldSpace): ExprValue; apply(fs: FieldSpace, op: BinaryMalloyOperator, left: ExpressionDef): ExprValue; } export declare class ExprLegacyIn extends ExpressionDef { readonly expr: ExpressionDef; readonly notIn: boolean; readonly choices: ExpressionDef[]; elementType: string; constructor(expr: ExpressionDef, notIn: boolean, choices: ExpressionDef[]); getExpression(fs: FieldSpace): ExprValue; }