import { editor } from 'monaco-editor';
import { ApiCategory, ApiContext } from '@arcgis/languages-api-utils';
import { SQLNode } from '@arcgis/core/core/sql/types.js';
export declare class SQLExpressionValidation {
    private callStack;
    private _sdkFunctions;
    private _fields;
    markers: editor.IMarkerData[];
    constructor(sdkLibrary: ApiCategory[], _apiContext: ApiContext);
    /**
     * validates the SQL Expression by generating an AST and traversing it
     * @param modelContent The SQL Expression to validate
     */
    validateModel(modelContent: string): Promise<void>;
    /**
     * a DFS traversal of the SQL Expression AST
     * @param node The node to traverse, start with the root node
     */
    traverse(node: SQLNode): void;
    /**
     * Validates a nodes syntax and types
     * @param node The node to validate
     */
    private _validateNode;
    private _handleParserFailure;
    /**
     * Formats a node's range into a Monaco IRange object.
     * @param node
     */
    private _getRange;
    /**
     * finds the function in the SDK library.
     * @param name name of the function
     */
    private _getFunction;
    /**
     * looks at the node and finds any children attached to it. If there are children, it will traverse them.
     * @param node The current node to traverse
     */
    private _traverseChildren;
}
