//#region src/types/expression-parser.d.ts
interface ParseOptions {
  filename?: string;
  startRule?: "Start";
  tracer?: any;
  [key: string]: any;
}
type ParseFunction = <Options extends ParseOptions>(input: string, options?: Options) => Options extends {
  startRule: infer StartRule;
} ? StartRule extends "Start" ? Start : Start : Start;
type Start = Program;
type Identifier = IdentifierName;
type IdentifierName = {
  type: "Identifier";
  name: string;
};
type Literal = NullLiteral | BooleanLiteral | NumericLiteral | StringLiteral;
type NullLiteral = {
  type: "NullLiteral";
  value: null;
};
type BooleanLiteral = {
  type: "BooleanLiteral";
  value: true;
} | {
  type: "BooleanLiteral";
  value: false;
};
type NumericLiteral = DecimalLiteral;
type DecimalLiteral = {
  type: "NumericLiteral";
  value: number;
};
type StringLiteral = {
  type: "StringLiteral";
  value: string;
};
type PrimaryExpression = Identifier | Literal | ArrayExpression | ObjectExpression | Expression;
type ArrayExpression = {
  type: "ArrayExpression";
  elements: ElementList;
};
type ElementList = PrimaryExpression[];
type ObjectExpression = {
  type: "ObjectExpression";
  properties: [];
} | {
  type: "ObjectExpression";
  properties: PropertyNameAndValueList;
};
type PropertyNameAndValueList = PrimaryExpression[];
type PropertyAssignment = {
  type: "PropertyAssignment";
  key: PropertyName;
  value: Expression;
  kind: "init";
};
type PropertyName = IdentifierName | StringLiteral | NumericLiteral;
type MemberExpression = {
  type: "MemberExpression";
  property: StringLiteral;
  computed: true;
  object: MemberExpression | Identifier | StringLiteral;
} | {
  type: "MemberExpression";
  property: Identifier;
  computed: false;
  object: MemberExpression | Identifier | StringLiteral;
};
type CallExpression = {
  type: "CallExpression";
  arguments: Arguments;
  callee: MemberExpression | Identifier;
};
type Arguments = PrimaryExpression[];
type Expression = CallExpression | MemberExpression;
type ExpressionStatement = {
  type: "ExpressionStatement";
  expression: Expression;
};
type Program = {
  type: "Program";
  body: ExpressionStatement;
};
type ExpressionNode = Program | ExpressionStatement | ArrayExpression | BooleanLiteral | CallExpression | Identifier | MemberExpression | NumericLiteral | ObjectExpression | PropertyAssignment | NullLiteral | StringLiteral;
//#endregion
export { ArrayExpression, BooleanLiteral, CallExpression, ExpressionNode, ExpressionStatement, Identifier, MemberExpression, NumericLiteral, ObjectExpression, ParseFunction, Program, PropertyAssignment, StringLiteral };
//# sourceMappingURL=expression-parser.d.cts.map