import { HashSet, OrderedHashSet } from "antlr4ng";
import type { IAttribute } from "../../../tool/IAttribute.js";
import { Rule } from "../../../tool/Rule.js";
import { IOutputModelFactory } from "../../IOutputModelFactory.js";
import { DispatchMethod } from "../DispatchMethod.js";
import { OutputModelObject } from "../OutputModelObject.js";
import { AttributeDecl } from "./AttributeDecl.js";
import { Decl } from "./Decl.js";
/**
 * This object models the structure holding all of the parameters,
 *  return values, local variables, and labels associated with a rule.
 */
export declare class StructDecl extends Decl {
    derivedFromName: string;
    provideCopyFrom: boolean;
    readonly tokenDecls: OrderedHashSet<Decl>;
    readonly tokenTypeDecls: OrderedHashSet<Decl>;
    readonly tokenListDecls: OrderedHashSet<Decl>;
    readonly ruleContextDecls: OrderedHashSet<Decl>;
    readonly ruleContextListDecls: OrderedHashSet<Decl>;
    readonly attributeDecls: HashSet<Decl>;
    protected readonly generateListener: boolean;
    protected readonly generateVisitor: boolean;
    dispatchMethods: DispatchMethod[];
    attrs: OrderedHashSet<Decl>;
    getters: OrderedHashSet<Decl>;
    ctorAttrs: AttributeDecl[];
    interfaces: OutputModelObject[];
    extensionMembers: OutputModelObject[];
    signatures: OrderedHashSet<Decl>;
    constructor(factory: IOutputModelFactory, r: Rule, name?: string);
    addDispatchMethods(r: Rule): void;
    addDecl(a: Decl | IAttribute): void;
    addDecls(attrList: IAttribute[]): void;
    implementInterface(value: OutputModelObject): void;
    addExtensionMember(member: OutputModelObject): void;
    isEmpty(): boolean;
}
