import { SQLSyntaxError, SQLNode } from '@arcgis/core/core/sql/types';
import { ChildBearingProperties } from './sql-expr-constants';
export declare function isSqlSyntaxError(err: unknown): err is SQLSyntaxError;
export declare function isUnexpectedTokenError(error: SQLSyntaxError): boolean;
export declare function getExpectedTokens(error: SQLSyntaxError): string[] | undefined;
export declare function formatSyntaxError(error: SQLSyntaxError): string;
type ExpectedLiteral = {
    category: "functions" | "keywords" | "operators";
    text: string;
};
/**
 * parses the error from the parser and returns the expected literals, used to provide suggestions.
 * it will only return literals that do not contain special characters or numbers.
 */
export declare function getExpectedLiterals(error: SQLSyntaxError): ExpectedLiteral[];
export declare const callerIndexAt = -2;
/**
 * returns the slot position of the node in the context root
 * @param node the node we want to find the slot position for
 * @param contextRoot the context root of the node, see {@link identifyContextRoot}
 */
export declare function getSlotPosition(node: SQLNode, contextRoot: SQLNode): ChildBearingProperties | number;
/**
 * Identifies the context root of the searchNode in the searchTree. The context root is the first "non-terminal" node within the node's parent context (searchTree).
 * see {@link terminalTypes} for the list of terminal types.
 * @param searchNode the node we want to find the context root for
 * @param searchTree all the nodes contained in the searchNode's parent context
 * @returns The context root of the searchNode
 */
export declare function identifyContextRoot(searchNode: SQLNode, searchTree: SQLNode[]): SQLNode;
/**
 * Appends the required number of closing parentheses to the model content.
 * This helps when the parsing fails. We try closing the unclosed parentheses, and resubmit the content for parsing.
 */
export declare function closeUnclosedDelimiters(modelContent: string): string;
export {};
