export interface MathExpression { type: 'MathExpression'; right: CalcNode; left: CalcNode; operator: '*' | '+' | '-' | '/'; } export interface ParenthesizedExpression { type: 'ParenthesizedExpression'; content: CalcNode; } export interface DimensionExpression { type: | 'LengthValue' | 'AngleValue' | 'TimeValue' | 'FrequencyValue' | 'PercentageValue' | 'ResolutionValue' | 'EmValue' | 'ExValue' | 'ChValue' | 'RemValue' | 'VhValue' | 'VwValue' | 'VminValue' | 'VmaxValue'; value: number; unit: string; } export interface NumberExpression { type: 'Number'; value: number; } export interface FunctionExpression { type: 'Function'; value: string; } export type ValueExpression = DimensionExpression | NumberExpression; export type CalcNode = MathExpression | ValueExpression | FunctionExpression | ParenthesizedExpression; export interface Parser { parse: (arg: string) => CalcNode; } export const parser: Parser;