import { ExtendedNodeType, GroupNode, GroupType, Operator, TokenNode } from "./primitives";
import { FieldReference } from "./field-reference";
import { OperationNode } from "./operation";
import { FunctionCallNode } from "./function-call";
import { ArgumentListNode } from "./argument-list";
import { ModifierNode } from "./modifier";
import { EnclosedExpressionNode } from "./enclosed-expression";
import { FunctionReference } from "./function-reference";
import { TokenTypeName } from "../tokenize";
/**
 * Map of all node types, that have additional properties to their corresponding
 * node interface.
 */
declare type Map = {
    operator: Operator;
    fieldReference: FieldReference;
    functionReference: FunctionReference;
    operation: OperationNode;
    functionCall: FunctionCallNode;
    argumentList: ArgumentListNode;
    modifier: ModifierNode;
    enclosedExpression: EnclosedExpressionNode;
    group: GroupNode;
};
declare type ExtendedMap = {
    [T in GroupType | ExtendedNodeType | "operator"]: Map[T];
};
declare type TokenMap = {
    [T in Exclude<TokenTypeName, keyof Map>]: TokenNode<T>;
};
/**
 * Map of all node types to their corresponding node interface.
 */
export interface NodeMap extends ExtendedMap, TokenMap {
}
export {};
