import { AuthSpec, PermissionSpec } from "../types/asl";
/**
 * TemplateEngine - Generate code from templates
 *
 * Uses Handlebars templates to generate production-ready:
 * - Auth pages and components
 * - RBAC guards and middleware
 * - Entity CRUD pages and components
 * - UI components with CVA variants
 * - Server Actions with validation
 *
 * Templates are in src/templates/ directory
 */
export declare class TemplateEngine {
    private helpers;
    private templatesDir;
    constructor();
    /**
     * Generate authentication pages (login, register)
     */
    generateAuthPages(projectPath: string, auth: AuthSpec): Promise<void>;
    /**
     * Generate auth components (LoginForm, RegisterForm)
     */
    private generateAuthComponents;
    /**
     * Generate RBAC guards (withAuth, withRole)
     */
    generateGuards(projectPath: string, permissions: PermissionSpec[]): Promise<void>;
    /**
     * Generate route protection middleware
     */
    generateMiddleware(projectPath: string, permissions: PermissionSpec[]): Promise<void>;
    private generateLoginPage;
    private generateRegisterPage;
    private generateLoginForm;
    private generateWithAuthGuard;
    private generateWithRoleGuard;
    private generateMiddlewareCode;
    /**
     * Generate root layout with font optimization and theme provider
     */
    generateRootLayout(projectPath: string, projectName: string, projectDescription: string): Promise<void>;
    /**
     * Generate utility files (utils.ts with cn helper)
     */
    generateUtils(projectPath: string): Promise<void>;
    /**
     * Generate InstantDB client setup
     */
    generateInstantClient(projectPath: string): Promise<void>;
    /**
     * Generate global CSS with Tailwind v4 and design tokens
     */
    generateGlobalCSS(projectPath: string): Promise<void>;
    /**
     * Generate theme provider component
     */
    generateThemeProvider(projectPath: string): Promise<void>;
    /**
     * Generate button component with CVA variants
     */
    generateButton(projectPath: string): Promise<void>;
    /**
     * Generate all UI components (Card, Input, Label, Skeleton, ThemeToggle)
     */
    generateUIComponents(projectPath: string): Promise<void>;
    /**
     * Generate production login page with Suspense
     */
    generateProductionLoginPage(projectPath: string): Promise<void>;
    /**
     * Generate production login form with useTransition
     */
    generateProductionLoginForm(projectPath: string): Promise<void>;
    /**
     * Generate login skeleton component
     */
    generateLoginSkeleton(projectPath: string): Promise<void>;
    /**
     * Generate register page
     */
    generateProductionRegisterPage(projectPath: string): Promise<void>;
    /**
     * Generate register form component
     */
    generateRegisterForm(projectPath: string): Promise<void>;
    /**
     * Generate auth Server Actions
     */
    generateAuthActions(projectPath: string): Promise<void>;
    /**
     * Generate dashboard layout with navigation
     */
    generateDashboardLayout(projectPath: string, projectName: string, entities: Array<{
        name: string;
    }>): Promise<void>;
    /**
     * Generate error boundary
     */
    generateErrorBoundary(projectPath: string): Promise<void>;
    /**
     * Generate loading boundary
     */
    generateLoadingBoundary(projectPath: string): Promise<void>;
    /**
     * Generate not-found page
     */
    generateNotFoundPage(projectPath: string): Promise<void>;
    /**
     * Generate landing page
     */
    generateLandingPage(projectPath: string, projectName: string, projectDescription: string): Promise<void>;
    /**
     * Generate CRUD pages for an entity
     */
    generateEntityCRUDPages(projectPath: string, entityName: string, fields: Array<{
        name: string;
        type: string;
        required?: boolean;
        label?: string;
    }>): Promise<void>;
    /**
     * Generate CRUD Server Actions for an entity
     */
    generateEntityActions(projectPath: string, entityName: string, fields: Array<{
        name: string;
        type: string;
        required?: boolean;
    }>): Promise<void>;
    /**
     * Generate CRUD components for an entity
     */
    generateEntityComponents(projectPath: string, entityName: string): Promise<void>;
}
//# sourceMappingURL=TemplateEngine.d.ts.map