import { AnyIDLNode, IConstantIDLNode, IIDLNode } from "./interfaces";
import { BaseASTNode } from "../astTypes";
/** Class used to resolve ASTNodes to IDLMessageDefinitions
 * There is a subclass of this class for each `declarator` type on the ASTNode.
 * This class is meant to provide functions and variables that exist across all of the nodes to help them resolve to complete message definitions.
 */
export declare abstract class IDLNode<T extends BaseASTNode = BaseASTNode> implements IIDLNode<T> {
    /** Map of all IDLNodes in a schema definition */
    protected map: Map<string, AnyIDLNode>;
    /** Unresolved node parsed directly from schema */
    protected readonly astNode: T;
    /** Array of strings that represent namespace scope that astNode is contained within. */
    readonly scopePath: string[];
    constructor(scopePath: string[], astNode: T, idlMap: Map<string, AnyIDLNode>);
    get declarator(): T["declarator"];
    get name(): BaseASTNode["name"];
    get annotations(): BaseASTNode["annotations"];
    /** Returns scoped identifier of the astNode: (...scopePath::name) */
    get scopedIdentifier(): string;
    /** Gets any node in map. Fails if not found.*/
    protected getNode(scopePath: string[], name: string): AnyIDLNode;
    /** Gets a constant node under a local-to-this-node or scoped identifier. Fails if not a ConstantNode */
    protected getConstantNode(identifier: string, scopePath?: string[]): IConstantIDLNode;
}
export declare function toScopedIdentifier(path: string[]): string;
//# sourceMappingURL=IDLNode.d.ts.map