import { type Token } from "antlr4ng";
import { IActionSplitterListener } from "../parse/IActionSplitterListener.js";
import { Alternative } from "../tool/Alternative.js";
import { ActionAST } from "../tool/ast/ActionAST.js";
import { Grammar } from "../tool/Grammar.js";
import { Rule } from "../tool/Rule.js";
/** Trigger checks for various kinds of attribute expressions. no side-effects. */
export declare class AttributeChecks implements IActionSplitterListener {
    g: Grammar;
    /** `null` if action outside of rule */
    r: Rule | null;
    /** `null` if action outside of alt; could be in rule. */
    alt: Alternative | null;
    node: ActionAST;
    actionToken?: Token;
    constructor(g: Grammar, r: Rule | null, alt: Alternative | null, node: ActionAST, actionToken?: Token);
    static checkAllAttributeExpressions(g: Grammar): void;
    examineAction(): void;
    qualifiedAttr(expr: string, x: Token, y: Token): void;
    setAttr(expr: string, x: Token, rhs: Token): void;
    attr(expr: string, x: Token): void;
    nonLocalAttr(expr: string, x: Token, y: Token): void;
    setNonLocalAttr(expr: string, x: Token, y: Token, rhs: string): void;
    text(text: string): void;
    templateInstance(expr: string): void;
    indirectTemplateInstance(expr: string): void;
    setExprAttribute(expr: string): void;
    setSTAttribute(expr: string): void;
    templateExpr(expr: string): void;
    private isolatedRuleRef;
}
