export declare type BinaryOperator = '+' | '-' | '/' | '*' | '=' | '*=' | '/=' | '+=' | '-=' | '^' | '>' | '<' | '>=' | '<=' | '==' | 'max' | 'kronecker';
export declare type UnaryOperator = '-' | 'exp' | 'rand' | 'abs' | 'sqrt' | 'ln' | 'sign';
export declare abstract class Node {
    children: Node[];
    hasParenthesis: boolean;
    nameMapping: {
        [i: number]: string;
    };
    originalText: string;
    constructor();
    parent: Node;
    addNode(node: Node | Node[]): void;
    toString(): string;
    readonly value: string;
    inspect(): any;
}
export declare class ExpressionNode extends Node {
}
export declare class DocumentNode extends Node {
    children: ExpressionNode[];
    toString(): string;
}
export declare class ParameterNode extends ExpressionNode {
    name: string;
    constructor(name: string);
    toString(): string;
}
export declare class ParametersNode extends Node {
    children: ParameterNode[];
    toString(): string;
}
export declare class BlockNode extends Node {
    name: string;
    children: ExpressionNode[];
    toString(): string;
}
export declare class FunctionNode extends ExpressionNode {
    name: string;
    parameters: ParametersNode;
    body: BlockNode;
    toString(): string;
}
export declare class HeapPointer extends ExpressionNode {
    position: ExpressionNode;
    toString(): string;
}
export declare class HeapReferenceNode extends ExpressionNode {
    position: number;
    constructor(position: number);
    toString(): string;
}
export declare class TernaryExpressionNode extends ExpressionNode {
    condition: ExpressionNode;
    truePart: ExpressionNode;
    falsePart: ExpressionNode;
    constructor();
    toString(): string;
}
export declare class BinaryExpressionNode extends ExpressionNode {
    lhs: ExpressionNode;
    rhs: ExpressionNode;
    operator: BinaryOperator;
    toString(): string;
}
export declare class UnaryExpressionNode extends ExpressionNode {
    rhs: ExpressionNode;
    operator: UnaryOperator;
    toString(): string;
}
export declare class FloatNumberNode extends ExpressionNode {
    numericValue: number;
    constructor(numericValue: number);
    toString(): string;
}
export declare class IntNumberNode extends ExpressionNode {
    numericValue: number;
    constructor(numericValue: number);
    toString(): string;
}
export declare class Variable extends HeapReferenceNode {
    id: number;
    key: string;
    initialValue: number;
    tag: string;
    constructor(id: number, key: string, initialValue: number, tag: string);
}
export declare class VariableDeclaration extends ExpressionNode {
    name: string;
    type: 'int' | 'float';
    initialValue: number;
    constructor(name: string, type: 'int' | 'float', initialValue: number);
}
export declare class VariableReference extends ExpressionNode {
    variable: VariableDeclaration;
    constructor(variable: VariableDeclaration);
}
export declare class ForLoopNode extends ExpressionNode {
    from: number;
    to: number;
    var: VariableReference;
    expression: ExpressionNode;
}
