import type { Expr } from "./ast"; import { type JavaScriptCompileOptions, type JavaScriptCompileResult } from "./compilers/javascript"; import type { Diagnostic } from "./embed"; import { type ParserOptions, type PluginProgram } from "./parser"; export type PluginCapabilitySpec = { name: string; validateArgs?: (context: PluginCapabilityValidationContext) => PluginDiagnostic[]; }; export type PluginCapabilityValidationContext = { argsExpr: Expr; allowedVariables: string[]; roundIndex: number; bindingName: string; validateExpressionAst: (expr: Expr, overrides?: Omit) => PluginDiagnostic[]; }; export type PluginValidationOptions = ParserOptions & JavaScriptCompileOptions & { allowedVariables?: Iterable; capabilities?: Record; }; export type PluginValidationPhase = "parse" | "binding" | "score" | "capability"; export type PluginDiagnostic = Diagnostic & { phase?: PluginValidationPhase; roundIndex?: number; bindingName?: string; }; export type ValidatedPluginProgram = { program: PluginProgram | null; diagnostics: PluginDiagnostic[]; score?: JavaScriptCompileResult; }; export declare function validateExpressionAst(expr: Expr, options?: PluginValidationOptions): PluginDiagnostic[]; export declare function validatePluginProgram(source: string, options?: PluginValidationOptions): ValidatedPluginProgram; //# sourceMappingURL=plugin-validator.d.ts.map