import { PhpAttributes, PhpNode } from './base'; import { PhpAttrGroup } from './attributes'; import { PhpIdentifier } from './identifier'; import { PhpParam } from './params'; import { PhpExpr } from './expressions'; import { PhpStmt } from './stmt'; /** * Represents a PHP property hook (e.g., `__get`, `__set`). * * @category PHP AST */ export interface PhpPropertyHook extends PhpNode { readonly nodeType: 'PropertyHook'; readonly attrGroups: PhpAttrGroup[]; readonly flags: number; readonly byRef: boolean; readonly name: PhpIdentifier; readonly params: PhpParam[]; readonly body: PhpExpr | PhpStmt[] | null; } /** * Builds a PHP property hook node. * * @category PHP AST * @param name - The name of the property hook (e.g., `__get`, `__set`). * @param body - The body of the property hook, either an expression or an array of statements. * @param options - Optional configuration for the property hook (attribute groups, flags, by reference, parameters). * @param options.attrGroups * @param options.flags * @param options.byRef * @param options.params * @param attributes - Optional attributes for the node. * @returns A `PhpPropertyHook` node. */ export declare function buildPropertyHook(name: PhpIdentifier, body: PhpExpr | PhpStmt[] | null, options?: { attrGroups?: PhpAttrGroup[]; flags?: number; byRef?: boolean; params?: PhpParam[]; }, attributes?: PhpAttributes): PhpPropertyHook;