import { Table } from "../lib/table"; declare type EvaluateProps = { table: Table; }; export declare class FormulaError { code: string; message: string; error?: Error; constructor(code: string, message: string, error?: Error); } declare class Entity { value: T; constructor(value: T); } export declare class Value extends Entity { evaluate({}: EvaluateProps): any; } export declare class Unreferenced extends Entity { evaluate({}: EvaluateProps): void; } export declare class InvalidRef extends Entity { evaluate({}: EvaluateProps): void; } export declare class Ref extends Entity { constructor(value: string); evaluate({ table }: EvaluateProps): Table; id(table: Table): any; } export declare class Range extends Entity { constructor(value: string); evaluate({ table }: EvaluateProps): Table; idRange(table: Table): string; private complementRange; } export declare class Id extends Entity { evaluate({ table }: EvaluateProps): import("../lib/table").ReadonlyTable; ref(table: Table, slideY?: number, slideX?: number): string | undefined; slide(table: Table, slideY?: number, slideX?: number): string | undefined; } export declare class IdRange extends Entity { evaluate({ table }: EvaluateProps): Table; range(table: Table, slideY?: number, slideX?: number): string; slide(table: Table, slideY?: number, slideX?: number): string; } export declare class Function { args: Expression[]; name: string; precedence: number; constructor(name: string, precedence?: number, args?: Expression[]); evaluate({ table }: EvaluateProps): any; } export declare type Expression = Value | Ref | Range | Id | IdRange | Function | Unreferenced | InvalidRef; export declare type TokenType = "VALUE" | "REF" | "RANGE" | "ID" | "ID_RANGE" | "FUNCTION" | "PREFIX_OPERATOR" | "INFIX_OPERATOR" | "OPEN" | "CLOSE" | "COMMA" | "SPACE" | "UNREFERENCED" | "INVALID_REF"; export declare class Token { type: TokenType; entity: any; precedence: number; constructor(type: TokenType, entity: any, precedence?: number); convert(): Value | Unreferenced | InvalidRef | Ref | Range | Id | IdRange | Function | undefined; } export declare class Lexer { private index; tokens: Token[]; private formula; constructor(formula: string); private isWhiteSpace; private next; private get; private getToken; stringifyToId(table: Table, slideY?: number, slideX?: number): string; stringifyToRef(table: Table): string; tokenize(): void; private skipSpaces; private getString; } export declare class Parser { index: number; depth: number; tokens: Token[]; constructor(tokens: Token[]); build(): Expression | undefined; private parse; } export declare const convertFormulaAbsolute: ({ value, table, slideY, slideX, }: { value: any; table: Table; slideY?: number | undefined; slideX?: number | undefined; }) => any; export {}; //# sourceMappingURL=evaluator.d.ts.map