import { type GrammarAST } from "../../tool/ast/GrammarAST.js";
import type { ICodeBlockForOuterMostAlt } from "../../types.js";
import { type IOutputModelFactory } from "../IOutputModelFactory.js";
import { OutputModelObject } from "./OutputModelObject.js";
export declare abstract class SrcOp extends OutputModelObject {
    /**
     * All operations know in which block they live:
     *
     *  	CodeBlock, CodeBlockForAlt
     *
     *  Templates might need to know block nesting level or find a specific declaration, etc...
     */
    private enclosingBlock?;
    private enclosingRuleFunction?;
    constructor(factory: IOutputModelFactory, ast?: GrammarAST);
    /** Walk upwards in model tree, looking for outer alt's code block. */
    getOuterMostAltCodeBlock(): ICodeBlockForOuterMostAlt | undefined;
    /** Return label alt or return name of rule. */
    getContextName(): string;
}
