import { Node } from "./node";
export declare const groupTypes: readonly ["group", "argumentList", "enclosedExpression", "functionCall", "operation", "modifier"];
export declare type GroupType = typeof groupTypes[number];
export declare function isGroupType(type: string): type is GroupType;
export interface GroupNode<T extends GroupType = GroupType, M extends Node = Node> extends Node<T> {
    readonly members: Readonly<M[]>;
}
export declare function isGroupNode<T extends GroupType = GroupType, M extends Node = Node>(node: Node, checkType?: (type: string) => type is T, checkMember?: (node: unknown) => node is M): node is GroupNode<T, M>;
export declare function computeGroupValue<N extends Node>(members: readonly N[]): string;
export declare function createGroup<T extends GroupType, M extends Node>(type: T, nodes: readonly M[]): GroupNode<T, M>;
