import { SyntaxToken, SyntaxTokenKind } from '../lexer/tokens';
import { Option } from '../option';
import { default as NodeFactory } from './factory';
import { ElementDeclarationNode, ExpressionNode, IdentiferStreamNode, InfixExpressionNode, LiteralNode, NormalExpressionNode, PrimaryExpressionNode, SyntaxNode, VariableNode } from './nodes';
export declare function convertFuncAppToElem(callee: ExpressionNode | undefined, args: NormalExpressionNode[], factory: NodeFactory): Option<ElementDeclarationNode>;
export declare function isAsKeyword(token: SyntaxToken): token is SyntaxToken & {
    kind: SyntaxTokenKind.IDENTIFIER;
    value: 'as';
};
export declare function markInvalid(nodeOrToken?: SyntaxNode | SyntaxToken): void;
export declare function isInvalidToken(token?: SyntaxToken): boolean;
export declare function getMemberChain(node: SyntaxNode): Readonly<(SyntaxNode | SyntaxToken)[]>;
export declare function extractVariableNode(value?: unknown): Option<SyntaxToken>;
export declare function isExpressionAQuotedString(value?: unknown): value is PrimaryExpressionNode & ({
    expression: VariableNode & {
        variable: SyntaxToken & {
            kind: SyntaxTokenKind.QUOTED_STRING;
        };
    };
} | {
    expression: LiteralNode & {
        literal: SyntaxToken & {
            kind: SyntaxTokenKind.STRING_LITERAL;
        };
    };
});
export declare function isExpressionAVariableNode(value?: unknown): value is PrimaryExpressionNode & {
    expression: VariableNode & {
        variable: SyntaxToken;
    };
};
export declare function isExpressionAnIdentifierNode(value?: unknown): value is PrimaryExpressionNode & {
    expression: VariableNode & {
        variable: {
            kind: SyntaxTokenKind.IDENTIFIER;
        };
    };
};
export declare function isAccessExpression(node: SyntaxNode): node is InfixExpressionNode & {
    leftExpression: SyntaxNode;
    rightExpression: SyntaxNode;
    op: SyntaxToken & {
        value: '.';
    };
};
export declare function extractStringFromIdentifierStream(stream?: IdentiferStreamNode): Option<string>;
