import type { ChainableExpression, SuperableChainableExpression, } from "./chain"; import type { SpreadableExpression, SuperableExpression } from "./expression"; export type CallExpression = X & { type: "CallExpression"; optional: false; callee: SuperableExpression; arguments: Array>; }; export type ChainCallExpression = | OptionalChainCallExpression | NonOptionalChainCallExpression; export type OptionalChainCallExpression = X & { type: "CallExpression"; optional: true; callee: ChainableExpression; arguments: Array>; }; export type NonOptionalChainCallExpression = X & { type: "CallExpression"; optional: false; callee: SuperableChainableExpression; arguments: Array>; };