import { STContext } from "../../STContext"; import { STObject } from "../../STObject"; export interface ASTNode { evaluate(context: STContext): STObject; } export declare class ExpressionListNode implements ASTNode { readonly locals: string[]; readonly expressions: ASTNode[]; evaluate(context: STContext): STObject; toString(): string; } export declare class BlockNode implements ASTNode { readonly implicitParameters: string[]; readonly explicitParameters: string[]; readonly value: ASTNode; constructor(value: ASTNode, implicitParameters: string[], explicitParameters: string[]); evaluate(context: STContext): STObject; toString(): string; } export declare class LiteralNode implements ASTNode { readonly value: STObject; constructor(value: STObject); evaluate(context: STContext): STObject; toString(): string; } export declare class VariableNode implements ASTNode { private readonly variableName; constructor(variableName: string); evaluate(context: STContext): STObject; toString(): string; } export declare class MessageNode implements ASTNode { readonly receiver: ASTNode; readonly labels: string[]; readonly values: ASTNode[]; constructor(receiver: ASTNode); evaluate(context: STContext): STObject; toString(): string; } export declare class AssignmentNode implements ASTNode { private readonly variable; private readonly value; constructor(variable: string, value: ASTNode); evaluate(context: STContext): STObject; toString(): string; } export declare class NilNode implements ASTNode { private readonly value; constructor(origin: string | STObject); evaluate(context: STContext): STObject; toString(): string; }