import { type VmScript, type VmValue } from '@mirascript/mirascript'; import { type Logger, type Options } from './interface.js'; import { type GlobalReferenceChain } from './analyze.js'; import { CompiledExpression, type Expression, type ExpressionFunction, type ExpressionOrValue, type ExpressionSource } from './expression.js'; import { Scope } from './scope.js'; import { type ArgumentMap, type ArgumentValue, type ChoiceParameterType, type ConditionExpression, type Parameter, type ParameterGroup, type ParameterMap } from './definitions.js'; /** 选项类型 */ export type EvaluatedChoices = { [K in T]: ParameterMap[K] extends { choices?: infer C; } ? (C extends readonly unknown[] ? C : never) : never; }[T]; /** * 表达式求值 */ export declare class Evaluator { constructor(options?: Partial | null); /** Logger */ get logger(): Logger; /** 选项 */ readonly options: Readonly>; /** 默认执行环境 */ private readonly scope; private readonly __imported; /** 执行环境 */ get imported(): ReadonlyMap; /** * 导入到执行环境 * * 使用 `undefined` 删除已导入的变量 */ import(values: Record): void; /** 编译表达式 */ compile(expression: Expression | VmScript, throws?: boolean): CompiledExpression; /** 执行 MiraScript 模板 */ template(template: string | null | undefined, scope?: Scope | null): string; /** 求值 */ evaluate(expression: ExpressionOrValue | ExpressionFunction | null | undefined, scope?: Scope | null): T | null; /** 求值 */ evaluate>(expression: ExpressionOrValue | ExpressionFunction | null | undefined, scope: Scope | null | undefined, defaults: D): NonNullable | D; /** 求值 */ evaluate(expression: ExpressionFunction | T | null | undefined, scope?: Scope | null): T | null; /** 求值 */ evaluate>(expression: ExpressionFunction | T | null | undefined, scope: Scope | null | undefined, defaults: D): NonNullable | D; /** 求值 */ evaluateSource(expression: ExpressionSource | T | null | undefined, scope: Scope | null | undefined): T | null; /** 求值 */ evaluateSource>(expression: ExpressionSource | T | null | undefined, scope: Scope | null | undefined, defaults: D): NonNullable | D; /** 求条件 */ evaluateCondition(condition: ConditionExpression | null | undefined, scope: Scope | null | undefined, defaults?: boolean): boolean; /** 求选项列表 */ evaluateChoices(definition: Pick, scope: Scope | null | undefined): EvaluatedChoices; /** 求参数值 */ evaluateArg(expression: ExpressionOrValue | null | undefined, scope: Scope | null | undefined, definition: Parameter): V; /** 求参数表的所有参数值 */ evaluateArgs>(args: ArgumentMap | null | undefined, scope: Scope | null | undefined, definition: ReadonlyArray>): T; /** 解析表达式 */ validate(expression: Expression): void; /** 分析表达式 */ analyze(expression: Expression, scope?: Scope | null): readonly GlobalReferenceChain[]; } //# sourceMappingURL=main.d.ts.map