import { Expr } from "./Expr.js"; import { ExprKind } from "./ExprKind.js"; import { TextSpan } from "../util/TextSpan.js"; export declare enum ExprEvalStatus { SUCCESS = 1000, ERROR = 2000, UNDEFINED_RESULT = 2001, REFERENCE_ERROR = 2010, CONSEQUENTIAL_ERROR = 2020, MATH_ERROR = 2030, TYPE_ERROR = 2040, NOT_FOUND = 2050, IFC_PROPERTY_NOT_FOUND = 2051, IFC_PROPERTY_SET_NOT_FOUND = 2052, IFC_TYPE_OBJECT_NOT_FOUND = 2053, PARSE_ERROR = 2080, SYNTAX_ERROR = 2081, VALIDATION_ERROR = 2082, STATIC_TYPE_ERROR = 2083, MISSING_OPERAND = 2084, MISSING_REQUIRED_FUNCTION_ARGUMENT = 2085, UNKNOWN_FUNCTION = 2086, WRONG_FUNCTION_ARGUMENT_TYPE = 2087, SPURIOUS_FUNCTION_ARGUMENT = 2088 } export declare function isExprEvalStatus(candidate: number): boolean; export type ExprEvalResult = ExprEvalSuccess | ExprEvalError; export type ExprEvalSuccess = { status: ExprEvalStatus; result: T; }; export declare function isExprEvalSuccess(arg: any): arg is ExprEvalSuccess; export declare class ExprEvalSuccessObj { readonly result: T; readonly status: ExprEvalStatus; constructor(result: T); } export declare class ExprEvalErrorObj { readonly status: ExprEvalStatus; readonly exprKind: ExprKind; readonly message?: string; readonly textSpan?: TextSpan; constructor(exprKind: ExprKind, status?: ExprEvalStatus, message?: any, textSpan?: TextSpan); } export declare function mapErrorObjectToMessage(errorObjectOrMessage: any): string; export declare class ExprEvalErrorUndefinedResult extends ExprEvalErrorObj { constructor(epxrKind: ExprKind, textSpan?: TextSpan); } export declare class ExprEvalError1Obj extends ExprEvalErrorObj { readonly sub: ExprEvalResult; constructor(exprKind: ExprKind, sub: ExprEvalResult, status: ExprEvalStatus, message?: any, textSpan?: TextSpan); } export declare class ExprEvalError2Obj extends ExprEvalErrorObj { readonly left: ExprEvalResult; readonly right: ExprEvalResult; constructor(exprKind: ExprKind, left: ExprEvalResult, right: ExprEvalResult, status?: ExprEvalStatus, message?: any, textSpan?: TextSpan); } export declare function isExprEvalError(arg: any): arg is ExprEvalError; export type ExprEvalError = ExprEvalUnspecificError | ExprEvalReferencError | ExprEvalErrorUndefinedResult | ExprEvalMissingRequiredFunctionArgumentError | ExprEvalValueError; type ExprEvalUnspecificError = { readonly exprKind: ExprKind; readonly status: ExprEvalStatus; readonly message?: string; }; export type ExprEvalReferencError = ExprEvalUnspecificError & { readonly status: ExprEvalStatus.REFERENCE_ERROR; readonly expr: Expr; }; export type ExprEvalConsequentialError1 = ExprEvalUnspecificError & { readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR; readonly exprKind: ExprKind; readonly cause: ExprEvalError; }; export declare class ExprEvalConsequentialError1Obj extends ExprEvalErrorObj { readonly exprKind: ExprKind; readonly cause: ExprEvalResult; constructor(exprKind: ExprKind, cause: ExprEvalResult, message?: any, textSpan?: TextSpan); } export type ExprEvalFunctionEvaluationError = ExprEvalUnspecificError & { functionName: string; }; export type ExprEvalMissingRequiredFunctionArgumentError = ExprEvalFunctionEvaluationError & { argumentName: string; argumentIndex: number; }; export type ExprEvalFunctionEvaluationConsequentialError = ExprEvalFunctionEvaluationError & { cause: ExprEvalUnspecificError; }; export declare class ExprEvalFunctionEvaluationErrorObj extends ExprEvalErrorObj { readonly functionName: string; constructor(exprKind: ExprKind, status: ExprEvalStatus, message: any, functionName: string, textSpan?: TextSpan); } export declare class ExprEvalFunctionEvaluationObjectNotFoundErrorObj extends ExprEvalFunctionEvaluationErrorObj { readonly offendingKey: string; constructor(exprKind: ExprKind, status: ExprEvalStatus, message: any, functionName: string, objectKey: string, textSpan?: TextSpan); } export declare class ExprEvalFunctionEvaluationConsequentialErrorObj extends ExprEvalFunctionEvaluationErrorObj { readonly cause: ExprEvalError; constructor(exprKind: ExprKind, functionName: string, cause: ExprEvalError, textSpan?: TextSpan); } export declare class ExprEvalMissingRequiredFunctionArgumentErrorObj extends ExprEvalFunctionEvaluationErrorObj { readonly argumentName: string; readonly argumentIndex: number; constructor(exprKind: ExprKind, message: any, functionName: string, argumentName: string, argumentIndex: number, textSpan?: TextSpan); } export type ExprEvalTypeError = ExprEvalUnspecificError & { status: ExprEvalStatus.TYPE_ERROR; }; export type ExprEvalValueError = ExprEvalUnspecificError & { offendingValue: T; }; export declare class ExprEvalValueErrorObj extends ExprEvalErrorObj { readonly offendingValue: T; constructor(exprKind: ExprKind, status: ExprEvalStatus, message: any, offendingValue: T, textSpan?: TextSpan); } export declare class ExprEvalTypeErrorObj extends ExprEvalValueErrorObj { constructor(exprKind: ExprKind, message: any, offendingValue: T, textSpan?: TextSpan); } export type ExprEvalParseError = ExprEvalUnspecificError & { exprKind: ExprKind.PARSE_ERROR; line: number; column: number; offendingInput: string; }; export type ExprEvalValidationError = ExprEvalUnspecificError & { textSpan: TextSpan; }; export declare class ExprEvalParseErrorObj extends ExprEvalErrorObj { readonly line: number; readonly column: number; readonly offendingInput: string; constructor(status: ExprEvalStatus, message: any, offendingInput: string, textSpan: TextSpan); } export declare class ExprEvalValidationErrorObj extends ExprEvalErrorObj { readonly textSpan: TextSpan; constructor(status: ExprEvalStatus, message: any, textSpan: TextSpan); } export declare class ExprEvalUnknownFunctionErrorObj extends ExprEvalValidationErrorObj { readonly functionName: string; constructor(message: any, functionName: any, textSpan: TextSpan); } export declare class ExprEvalMissingFunctionArgumentErrorObj extends ExprEvalErrorObj { readonly functionName: string; readonly argumentName: string; readonly argumentIndex: number; constructor(message: any, functionName: string, argumentName: string, argumentIndex: number, textSpan: TextSpan); } export declare class ExprEvalSpuriousFunctionArgumentErrorObj extends ExprEvalErrorObj { readonly functionName: string; readonly argumentName: string; readonly argumentIndex: number; constructor(message: any, functionName: string, argumentName: string, argumentIndex: number, textSpan: TextSpan); } export declare class ExprEvalWrongFunctionArgumentTypeErrorObj extends ExprEvalValidationErrorObj { readonly functionName: string; readonly argumentName: string; readonly argumentIndex: number; readonly expectedType: string; readonly actualType: string; constructor(message: any, functionName: string, argumentName: string, argumentIndex: number, expectedType: string, actualType: string, textSpan: TextSpan); } export {};