import { EnclosedGroupNode, Node, TokenNode, Space, GroupType, ArgumentSeparator } from "./primitives";
import { ExpressionNode } from "./expression";
import { NodeReducer } from "./node-reducer";
declare type ArgumentListMember = ExpressionNode | ArgumentSeparator | Space;
export declare type ArgumentListGroup<G extends GroupType> = EnclosedGroupNode<G, ArgumentListMember, TokenNode<"openParenthesis">, TokenNode<"closeParenthesis">>;
export declare function isArgumentListGroup<T extends GroupType>(node: Node, type: T): node is ArgumentListGroup<T>;
export interface ArgumentListNode extends ArgumentListGroup<"argumentList"> {
    readonly args: readonly ExpressionNode[];
    readonly opener: Readonly<TokenNode<"openParenthesis">>;
    readonly closer: Readonly<TokenNode<"closeParenthesis">>;
}
export declare function isArgumentListNode(node: Node): node is ArgumentListNode;
export declare const reduceArgumentLists: NodeReducer;
export {};
