import { Node, Type, Let, Var, Const, If, For, While, Loop, Assign, Increment, Call, BinaryOperator, LiteralExpr, VariableExpr, CallExpr, CreateExpr, ConstExpr, BitcastExpr, UnaryOperator, Function, Switch } from "./wgsl_ast.js";
import { Data } from "./wgsl_ast.js";
import { Reflect } from "./reflect/reflect.js";
import { TypeInfo } from "./reflect/info.js";
import { ExecContext, FunctionRef } from "./exec/exec_context.js";
import { ExecInterface } from "./exec/exec_interface.js";
import { BuiltinFunctions } from "./exec/builtin_functions.js";
export declare class WgslExec extends ExecInterface {
    ast: Node[];
    context: ExecContext;
    reflection: Reflect;
    builtins: BuiltinFunctions;
    typeInfo: Object;
    constructor(ast?: Node[], context?: ExecContext);
    getVariableValue(name: string): number | number[] | null;
    execute(config?: Object): void;
    dispatchWorkgroups(kernel: string, dispatchCount: number | number[], bindGroups: Object, config?: Object): void;
    static _breakObj: Data;
    static _continueObj: Data;
    execStatement(stmt: Node, context: ExecContext): Data | null;
    evalExpression(node: Node, context: ExecContext): Data | null;
    getTypeInfo(type: Type | string): TypeInfo | null;
    _setOverrides(constants: Object, context: ExecContext): void;
    _dispatchWorkgroup(f: FunctionRef, workgroup_id: number[], context: ExecContext): void;
    _dispatchExec(f: FunctionRef, context: ExecContext): void;
    getVariableName(node: Node, context: ExecContext): string | null;
    _execStatements(statements: Node[], context: ExecContext): Data | null;
    _call(node: Call, context: ExecContext): void;
    _increment(node: Increment, context: ExecContext): void;
    _getVariableData(node: Node, context: ExecContext): Data | null;
    _assign(node: Assign, context: ExecContext): void;
    _function(node: Function, context: ExecContext): void;
    _const(node: Const, context: ExecContext): void;
    _let(node: Let, context: ExecContext): void;
    _var(node: Var, context: ExecContext): void;
    _switch(node: Switch, context: ExecContext): Data | null;
    _if(node: If, context: ExecContext): Data | null;
    _getScalarValue(v: Data | null): number;
    _for(node: For, context: ExecContext): Data | null;
    _loop(node: Loop, context: ExecContext): Data | null;
    _while(node: While, context: ExecContext): Data | null;
    _evalBitcast(node: BitcastExpr, context: ExecContext): Data | null;
    _evalConst(node: ConstExpr, context: ExecContext): Data | null;
    _evalCreate(node: CreateExpr | CallExpr | Call, context: ExecContext): Data | null;
    _evalLiteral(node: LiteralExpr, context: ExecContext): Data | null;
    _evalVariable(node: VariableExpr, context: ExecContext): Data | null;
    static _priority: Map<string, number>;
    _maxFormatTypeInfo(x: TypeInfo[]): TypeInfo | null;
    _evalUnaryOp(node: UnaryOperator, context: ExecContext): Data | null;
    _evalBinaryOp(node: BinaryOperator, context: ExecContext): Data | null;
    _evalCall(node: CallExpr, context: ExecContext): Data | null;
    _callBuiltinFunction(node: CallExpr | Call, context: ExecContext): Data | null;
    _callConstructorValue(node: CreateExpr, context: ExecContext): Data | null;
    _callConstructorVec(node: CreateExpr | LiteralExpr, context: ExecContext): Data | null;
    _callConstructorMatrix(node: CreateExpr | LiteralExpr, context: ExecContext): Data | null;
}
