import { Expression, type TypedExpression } from './expression.js'; import { ExpressionType } from './expression-type.js'; import type { ExpressionVisitor } from './visitors/expression-visitor.js'; import type { IVisitable } from './visitable.js'; /** * Represents a member expression, which accesses a property of an object. * @template T - The type of the source object expression. * @template TMember - The type of the member name (a key of T). * @template U - The type of the member value (T[TMember]). */ export declare class MemberExpression extends Expression implements IVisitable> { readonly source: TypedExpression; readonly member: TypedExpression; optional: boolean; /** * Gets the type identifier for this expression. * @returns {ExpressionType.MemberExpression} The expression type constant */ get type(): ExpressionType.MemberExpression; /** * Indicates the length/size associated with the member expression (used for array expressions) */ $$length: number; /** * Initializes a new instance of the MemberExpression class. * @param {TypedExpression} source - The source expression. * @param {TypedExpression} member - The member expression. * @param {boolean} optional - Indicates whether the member is optional. */ constructor(source: TypedExpression, member: TypedExpression, optional: boolean); /** * Accepts a visitor. * @param {ExpressionVisitor} visitor - The visitor to accept. * @returns {TypedExpression} The result of the visit. */ accept(visitor: ExpressionVisitor): TypedExpression; toString(): string; }