import type { Nullable } from '@glimmer/interfaces';
import type { SourceOffset, SourceSpan } from '../source/span';
import type * as ASTv1 from '../v1/api';
import type * as HBS from '../v1/handlebars-ast';
import { Parser } from '../parser';
export interface PendingError {
    mustache(span: SourceSpan): never;
    eof(offset: SourceOffset): never;
}
export declare abstract class HandlebarsNodeVisitors extends Parser {
    protected pendingError: Nullable<PendingError>;
    abstract appendToCommentData(s: string): void;
    abstract beginAttributeValue(quoted: boolean): void;
    abstract finishAttributeValue(): void;
    parse(program: HBS.UpstreamProgram, blockParams: string[]): ASTv1.Template;
    Program(program: HBS.Program, blockParams?: ASTv1.VarHead[]): ASTv1.Block;
    private parseProgram;
    BlockStatement(block: HBS.UpstreamBlockStatement): ASTv1.BlockStatement | void;
    MustacheStatement(rawMustache: HBS.MustacheStatement): ASTv1.MustacheStatement | void;
    appendDynamicAttributeValuePart(part: ASTv1.MustacheStatement): void;
    finalizeTextPart(): void;
    startTextPart(): void;
    ContentStatement(content: HBS.ContentStatement): void;
    CommentStatement(rawComment: HBS.CommentStatement): Nullable<ASTv1.MustacheCommentStatement>;
    PartialStatement(partial: HBS.PartialStatement): never;
    PartialBlockStatement(partialBlock: HBS.PartialBlockStatement): never;
    Decorator(decorator: HBS.Decorator): never;
    DecoratorBlock(decoratorBlock: HBS.DecoratorBlock): never;
    SubExpression(sexpr: HBS.SubExpression): ASTv1.SubExpression;
    PathExpression(path: HBS.PathExpression): ASTv1.PathExpression;
    Hash(hash: HBS.Hash): ASTv1.Hash;
    StringLiteral(string: HBS.StringLiteral): ASTv1.StringLiteral;
    BooleanLiteral(boolean: HBS.BooleanLiteral): ASTv1.BooleanLiteral;
    NumberLiteral(number: HBS.NumberLiteral): ASTv1.NumberLiteral;
    UndefinedLiteral(undef: HBS.UndefinedLiteral): ASTv1.UndefinedLiteral;
    NullLiteral(nul: HBS.NullLiteral): ASTv1.NullLiteral;
}
