import type { ASTNode } from "../parser/types.js";
import type { Token } from "../lexer/types.js";
import type { Plugin } from "../plugin.js";
export interface RunOptions {
    undefinedIdentifierFallback?: unknown;
}
export declare class Evaluator {
    private plugins?;
    constructor(plugins?: Plugin[]);
    run: (input: string | ASTNode, context?: Record<string, unknown>, options?: RunOptions) => unknown;
    ast: (input: string) => ASTNode;
    tokens: (input: string, tokensizeWhitespace?: boolean) => Token[];
    tokensSafe: (input: string, tokensizeWhitespace?: boolean) => Token[];
}
export declare function evaluateNode(node: ASTNode, context: Record<string, unknown>, depth: number, plugins?: Plugin[], options?: RunOptions): unknown;
