export type FormulaNode = { type: 'number'; value: number; } | { type: 'variable'; name: string; } | { type: 'function'; name: string; args: FormulaNode[]; } | { type: 'binary'; op: string; left: FormulaNode; right: FormulaNode; } | { type: 'unary'; op: string; arg: FormulaNode; }; export declare function parseFormula(formula: string): FormulaNode; /** * AST 안의 모든 변수명을 (중복 제거하여) 수집한다. * * 정규식 기반 추출(예: `[a-zA-Z_]\w*`)은 `[한글 변수명]`·공백 포함 이름을 놓치지만, * 파서가 만든 AST 의 variable 노드는 대괄호가 벗겨진 실제 이름을 담으므로 정확하다. * aggregate 등에서 "이 수식이 참조하는 metric 이름들"을 얻는 신뢰 가능한 경로. */ export declare function collectVariableNames(node: FormulaNode): string[]; /** * AST 안의 모든 함수명을 (중복 제거하여) 수집한다. * formula 검증에서 "알 수 없는 함수" 를 잡는 데 쓴다. */ export declare function collectFunctionNames(node: FormulaNode): string[];