export interface ExtenderDef { extender: ExtenderSpec; methodCalls?: MethodCallSpec[]; } export interface ExtenderSpec { className: string; args?: ExpressionSpec[]; } export interface MethodCallSpec { methodName: string; args?: ExpressionSpec[]; } export interface ExpressionSpec { type: ExpressionType; value: string | boolean | number | ClosureSpec; auxiliaryValue?: string; } export interface ClosureSpec { params: ParamSpec[]; commentText?: string; return?: ExpressionSpec; } export interface ParamSpec { typeType: ParamTypeType; type: string; name: string; } export declare enum ExpressionType { SCALAR = "scalar", CLASS_CONST = "class_const", CLOSURE = "closure", VARIABLE = "variable" } export declare enum ParamTypeType { CLASS = "class", PRIMITIVE = "primitive" } export interface PhpProvider { withExtender(extendContents: string, extenderDef: ExtenderDef): string; } export declare class PhpSubsystemProvider implements PhpProvider { protected phpPath: string; constructor(phpPath: string); withExtender(extendContents: string, extenderDef: ExtenderDef): string; }