/** * Pure formula engine: tokenize, parse, serialize, extract dependencies, * evaluate, and order recomputation. No React, no grid imports — files in * this folder may only import from this folder. * * The engine surface is internal to the package; it is deliberately not * re-exported from the public barrel. */ export type { FormulaCellKey, FormulaCellRef, FormulaPositionContext, FormulaRangeValue, FormulaResult, FormulaRowId, FormulaScalar, FormulaSourceSpan, FormulaValidationIssue, FormulaValidationResult } from "./formulaTypes.mjs"; export { createFormulaCellKey, getFormulaCellKey, parseFormulaCellKey, isFormulaSource, isEscapedFormulaSource, unescapeLiteralSource, getFormulaExpression, isFormulaRangeValue } from "./formulaTypes.mjs"; export type { FormulaErrorCode, FormulaErrorValue } from "./formulaErrors.mjs"; export { FORMULA_ERROR_CODES, createFormulaError, isFormulaErrorValue } from "./formulaErrors.mjs"; export type { FormulaAstNode, FormulaBinaryExpressionNode, FormulaBinaryOperator, FormulaBooleanLiteralNode, FormulaCellRefNode, FormulaColumnSelector, FormulaColumnValuesNode, FormulaFieldRefNode, FormulaFunctionCallNode, FormulaNumberLiteralNode, FormulaRangeAxis, FormulaRangeRefNode, FormulaRowSelector, FormulaStringLiteralNode, FormulaUnaryExpressionNode } from "./formulaAst.mjs"; export { FORMULA_RESERVED_NAMES } from "./formulaAst.mjs"; export { toFormulaNumber, toFormulaText, toFormulaBoolean, isEmptyFormulaValue, compareFormulaScalars } from "./formulaValues.mjs"; export type { FormulaToken, FormulaTokenType, FormulaTokenizeError, FormulaTokenizeResult, TokenizeFormulaOptions } from "./formulaTokenizer.mjs"; export { tokenizeFormula } from "./formulaTokenizer.mjs"; export type { FormulaParseError, FormulaParseResult, FormulaParser } from "./formulaParser.mjs"; export { parseFormula, createFormulaParser } from "./formulaParser.mjs"; export { serializeFormulaAst } from "./formulaSerializer.mjs"; export { offsetFormulaReferences } from "./formulaOffset.mjs"; export type { ExcelFormulaErrorCode, FormulaExcelSerializeContext, FormulaExcelSerializeResult } from "./formulaExcel.mjs"; export { serializeFormulaAstToExcel, mapFormulaErrorCodeToExcel } from "./formulaExcel.mjs"; export type { FormulaBoundDependencies, FormulaColumnIntervalDependency, FormulaRangeAnchor, FormulaRangeRectangle, FormulaStaticDependencies, FormulaWholeColumnDependency } from "./formulaDependencies.mjs"; export { extractFormulaDependencies, bindFormulaDependencies, getFormulaRangeAnchor, resolveFormulaRangeRectangle } from "./formulaDependencies.mjs"; export type { FormulaRawReference, FormulaReferenceNode } from "./formulaReferences.mjs"; export { buildFormulaReferences, collectCanonicalReferences, scanA1References } from "./formulaReferences.mjs"; export type { FormulaFunctionArg, FormulaFunctionCoercionHelpers, FormulaFunctionContext, FormulaFunctionDefinition, FormulaFunctionEagerArg, FormulaFunctionRegistry } from "./formulaFunctions.mjs"; export { FORMULA_BUILT_IN_FUNCTIONS, createFormulaFunctionRegistry } from "./formulaFunctions.mjs"; export type { FormulaEvaluationContext } from "./formulaEvaluator.mjs"; export { evaluateFormula } from "./formulaEvaluator.mjs"; export type { ValidateFormulaExpressionOptions } from "./formulaValidation.mjs"; export { validateFormulaExpression } from "./formulaValidation.mjs"; export type { FormulaRecomputeOrder } from "./formulaGraph.mjs"; export { collectAffectedCells, orderForRecompute } from "./formulaGraph.mjs"; export type { FormulaCompletionContext, FormulaCompletionContextOptions, FormulaCompletionKind, FormulaCompletionToken, RankFormulaCompletionsOptions } from "./formulaCompletion.mjs"; export { getFormulaCompletionContext, getFormulaCompletionTokens, rankFormulaCompletions } from "./formulaCompletion.mjs"; export type { A1TransformContext, A1TransformResult, ToCanonicalOptions } from "./formulaA1.mjs"; export { columnIndexToLetters, columnLettersToIndex, isA1AmbiguousFieldName, toCanonicalFormula, toDisplayFormula } from "./formulaA1.mjs"; export { scanStringLiteral } from "./formulaA1Tokens.mjs";