/** * Create a macroable class */ export declare function createMacroable any>(BaseClass?: T): T & MacroableConstructor; /** * Mixin for adding macroable functionality to existing classes */ export declare function macroable any>(target: T): T & MacroableConstructor; /** * Native Macroable implementation * Inspired by Laravel's Macroable trait - allows adding methods dynamically to classes */ export declare interface MacroableConstructor { new (...args: any[]): any macro(name: string, fn: Function, replace?: boolean): void mixin(obj: Record, replace?: boolean): void hasMacro(name: string): boolean flushMacros(): void getMacros(): string[] } export declare class Macroable { static macro(name: string, fn: Function, replace?: boolean): void; static mixin(obj: Record, replace?: boolean): void; static hasMacro(name: string): boolean; static flushMacros(): void; static getMacros(): string[]; protected callMacro(name: string, ...args: any[]): any; }