import type { CstNode, IToken } from 'chevrotain';
import type { AccessorSuffixesCstChildren, AccessorSuffixesCstNode, AssignmentCstChildren, AssignmentCstNode, AssignmentRightHandSideCstChildren, AssignmentRightHandSideCstNode, FunctionArgumentCstNode, FunctionArgumentsCstNode, IdentifierCstChildren, IdentifierCstNode, MultilineDoubleStringLiteralCstChildren, MultilineSingleStringLiteralCstChildren, StringLiteralCstChildren } from '../gml-cst.js';
/** Right-hand side from the CST, normalized via `rhsFrom` */
export type Rhs = AssignmentCstNode[] | AssignmentCstNode | AssignmentRightHandSideCstNode[] | AssignmentRightHandSideCstNode | AssignmentRightHandSideCstChildren | AssignmentCstChildren | undefined;
export declare function rhsFrom(item: Rhs): AssignmentRightHandSideCstChildren | undefined;
export declare function functionFromRhs(rhs: Rhs): import("../gml-cst.js").FunctionExpressionCstChildren | undefined;
export declare function structLiteralFromRhs(rhs: Rhs): import("../gml-cst.js").StructLiteralCstChildren | undefined;
export declare function arrayLiteralFromRhs(rhs: Rhs): import("../gml-cst.js").ArrayLiteralCstChildren | undefined;
export type IdentifierSource = IdentifierCstChildren | IdentifierCstNode | IdentifierCstNode[] | {
    identifier: IdentifierCstNode[];
} | {
    children: {
        identifier: IdentifierCstNode[];
    };
};
type AccessorSuffixName = keyof AccessorSuffixesCstChildren;
export type SortedAccessorSuffix<T extends AccessorSuffixName = AccessorSuffixName> = Required<AccessorSuffixesCstChildren>[T][0];
export declare function isEmpty(obj: {}): boolean;
export declare function sortedFunctionCallParts(node: FunctionArgumentsCstNode): (IToken | FunctionArgumentCstNode)[];
export declare function stringLiteralAsString(children: StringLiteralCstChildren | MultilineSingleStringLiteralCstChildren | MultilineDoubleStringLiteralCstChildren): string;
export declare function sortChildren(records: Record<string, (IToken | CstNode)[]>): (IToken | CstNode)[];
export declare function sortedAccessorSuffixes(suffixNodes: AccessorSuffixesCstNode[] | undefined): SortedAccessorSuffix[];
export declare function identifierFrom(nodes: IdentifierSource): {
    token: IToken;
    type: keyof IdentifierCstChildren;
    name: string;
} | undefined;
export {};
//# sourceMappingURL=parser.utility.d.ts.map