/**
 * MeoCord Framework
 * Copyright (C) 2025 Ukasyah Rahmatullah Zada
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
 */
import { ControllerType } from '../../enum/controller.enum.js';
export declare class ControllerGeneratorHelper {
    /**
     * Generates a new controller file and an associated structure based on the provided arguments and controller type.
     * @param args - The arguments for generating the controller, including the optional controller name.
     * @param type - The type of the controller to generate, defined in the `ControllerType` enum.
     * @throws Will throw an error if the controller name is invalid or if the controller type is unsupported.
     */
    generateController(args: {
        controllerName: string | undefined;
    }, type: ControllerType): void;
    /**
     * Builds the controller template content by populating a template with variables.
     * @param className - The name of the controller class.
     * @param type - The type of the controller, defined in the `ControllerType` enum.
     * @returns The populated template string for the controller.
     * @throws Will throw an error if the controller type is unsupported.
     */
    buildControllerTemplate(className: string, type: ControllerType): string;
    /**
     * Retrieves the template configuration for a specific controller type and class name.
     * @param type - The type of the controller, defined in the `ControllerType` enum.
     * @param className - The name of the controller class.
     * @returns An object containing the template path and variables, or `undefined` if not found.
     */
    private getTemplateConfig;
    /**
     * Generates the controller file and its associated structure (e.g., builder files, directories).
     * @param controllerDir - The absolute path to the controller directory.
     * @param kebabCaseName - The kebab-case name of the controller file.
     * @param className - The name of the controller class.
     * @param type - The type of the controller, defined in the `ControllerType` enum.
     * @param controllerTemplate - The populated template string for the controller file.
     */
    private generateControllerStructure;
    /**
     * Generates a builder file for the specified controller type and stores it in the controller directory.
     * @param className - The name of the controller class.
     * @param type - The type of the controller, defined in the `ControllerType` enum.
     * @param controllerDir - The absolute path to the controller directory.
     */
    private generateBuilderFile;
    /**
     * Retrieves the configuration for generating a builder file based on the controller type and class name.
     * @param type - The type of the controller, defined in the `ControllerType` enum.
     * @param className - The name of the controller class.
     * @returns An object containing the builder template path and variables, or `undefined` if not found.
     */
    private getBuilderConfig;
}
