import { DataTypeNode } from '@arcgis/core/core/sql/types';
import { MarkerSeverity, languages } from 'monaco-editor';
export declare enum ChildBearingProperties {
    ARGS = "args",
    CLAUSES = "clauses",
    ELSE = "else",
    END = "end",
    EXPR = "expr",
    LEFT = "left",
    OPERAND = "operand",
    QUALIFIER = "qualifier",
    RIGHT = "right",
    START = "start",
    VALUE = "value"
}
export declare const ChildBearingNodeTypes: {
    readonly CASE_EXPRESSION: "case-expression";
    readonly EXPRESSION_LIST: "expression-list";
    readonly FUNCTION: "function";
    readonly INTERVAL: "interval";
    readonly INTERVAL_QUALIFIER: "interval-qualifier";
    readonly WHEN_CLAUSE: "when-clause";
    readonly UNARY_EXPRESSION: "unary-expression";
    readonly BINARY_EXPRESSION: "binary-expression";
};
export type ChildBearingNodeType = (typeof ChildBearingNodeTypes)[keyof typeof ChildBearingNodeTypes];
export declare const CHILD_BEARING_PROPERTIES: {
    readonly "case-expression": readonly [ChildBearingProperties.CLAUSES, ChildBearingProperties.OPERAND, ChildBearingProperties.ELSE];
    readonly "when-clause": readonly [ChildBearingProperties.OPERAND, ChildBearingProperties.VALUE];
    readonly "expression-list": readonly [ChildBearingProperties.VALUE];
    readonly "unary-expression": readonly [ChildBearingProperties.EXPR];
    readonly "binary-expression": readonly [ChildBearingProperties.LEFT, ChildBearingProperties.RIGHT];
    readonly function: readonly [ChildBearingProperties.ARGS];
    readonly interval: readonly [ChildBearingProperties.VALUE, ChildBearingProperties.QUALIFIER];
    readonly "interval-qualifier": readonly [ChildBearingProperties.START, ChildBearingProperties.END];
};
export declare const MarkerType: {
    Hint: MarkerSeverity.Hint;
    Info: MarkerSeverity.Info;
    Warning: MarkerSeverity.Warning;
    Error: MarkerSeverity.Error;
};
export declare const InsertTextRules: {
    InsertAsSnippet: languages.CompletionItemInsertTextRule.InsertAsSnippet;
};
export declare const CompletionItemKind: {
    Function: languages.CompletionItemKind.Function;
    Keyword: languages.CompletionItemKind.Keyword;
    Operator: languages.CompletionItemKind.Operator;
    Variable: languages.CompletionItemKind.Variable;
    Field: languages.CompletionItemKind.Field;
    Reference: languages.CompletionItemKind.Reference;
};
type UppercaseUnion<T extends string> = T extends `${infer First}${infer Rest}` ? `${Uppercase<First>}${UppercaseUnion<Rest>}` : T;
export declare const castDataTypesDict: Record<DataTypeNode["value"]["type"], UppercaseUnion<DataTypeNode["value"]["type"]>>;
export declare const castDataTypes: UppercaseUnion<DataTypeNode["value"]["type"]>[];
export declare const datePeriods: string[];
export declare const extractDateParts: string[];
export declare const dateLiterals: string[];
export declare const trimKeywords: string[];
/** This constant is used to constrain values returned in the peggy parser errors.
 *  If a new keyword is introduced, be sure to update this constant.
 */
export declare const sqlExprKeywords: string[];
export declare const sqlExprOperators: string[];
export declare const sqlExprFunctions: readonly ["CAST", "EXTRACT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "ABS", "ACOS", "ASIN", "ATAN", "CEILING", "COS", "FLOOR", "LOG", "LOG10", "MOD", "NULLIF", "POWER", "ROUND", "SIGN", "SIN", "TAN", "TRUNCATE", "CHAR_LENGTH", "COALESCE", "CONCAT", "LOWER", "POSITION", "SUBSTRING", "TRIM", "UPPER"];
export {};
