/** * @angular-modernizer/plugin-angular - Component Inputs Interface Extraction Orchestrator * * Orchestrator that extracts @Input() properties into a separate interface * for better type safety and component API definition. * * Philosophy: "Thin Rule, Thick Orchestrator" * - The orchestrator contains all business logic * - The rule is a minimal protocol wrapper * - Complex AST manipulation happens here */ import type { TransformContext } from '@angular-modernizer/plugin-system'; import type { PublicApi } from '@angular-modernizer/api'; /** * Orchestrator for extracting @Input() properties into interfaces. * * @remarks * This orchestrator handles the complex logic for: * - Detecting @Input() decorated properties in Angular components * - Extracting property types into a separate interface * - Making the component implement the extracted interface * - Preserving @Input() decorators and default values on component properties * * The orchestrator uses ts-morph for AST manipulation and follows * the existing pattern of other transformation orchestrators. * * @public */ export declare class ComponentInputsInterfaceExtractionOrchestrator { /** * Run the component inputs interface extraction on the given context. * * @param context - Transform context with source file and project access * * @public */ run(context: TransformContext): void; /** * Check if a class declaration is an Angular component. * * @param classDecl - The class declaration to check * @returns true if the class is an Angular component * * @private */ private isAngularComponent; /** * Find all @Input() decorated properties in a class. * * @param classDecl - The class declaration to search * @returns Array of @Input() property declarations * * @private */ private findInputProperties; /** * Create an interface for the extracted input properties. * * @param interfaceName - The name of the interface to create * @param inputProperties - The @Input() properties to include * @param sourceFile - The source file to add the interface to * * @private */ private createInputsInterface; /** * Add interface implementation to the component class. * * @param classDecl - The component class declaration * @param interfaceName - The name of the interface to implement * * @private */ private addInterfaceImplementation; } //# sourceMappingURL=component-inputs-interface-extraction-orchestrator.d.ts.map