import { Command } from '@oclif/core';
/**
 * TEACHING NOTE: This is the CORE of DataBridge!
 *
 * What is DMMF? Data Model Meta Format
 * - Prisma's internal representation of your database
 * - It's like a JSON map of all your tables, columns, relationships
 * - We read this to know what code to generate
 *
 * What is ts-morph?
 * - Library for manipulating TypeScript code
 * - Instead of writing strings like "export class Product {}"
 * - We use ts-morph API: addClass(), addProperty(), etc.
 * - Safer and easier than string templates!
 */
export default class Generate extends Command {
    static description: string;
    static examples: string[];
    run(): Promise<void>;
    private loadConfig;
    /**
     * TEACHING NOTE: Get Prisma DMMF
     * This reads your schema.prisma and converts it to a JavaScript object
     * with all the information about your models, fields, types, etc.
     */
    private getPrismaDMMF;
    /**
     * TEACHING NOTE: Generate Fastify API Routes
     *
     * For each model (like "Product"), we create a file with:
     * - GET /products - list all
     * - GET /products/:id - get one
     * - POST /products - create
     * - PATCH /products/:id - update
     * - DELETE /products/:id - delete
     *
     * This is called CRUD: Create, Read, Update, Delete
     */
    private generateApiRoutes;
    /**
     * TEACHING NOTE: This generates the actual route handling code
     * It's returned as a string that becomes the function body
     */
    private generateRouteStatements;
    /**
     * TEACHING NOTE: Generate Angular SDK
     * Creates TypeScript services that your Angular app uses
     *
     * Example: ProductService with methods:
     * - list(): Observable<Product[]>
     * - getById(id): Observable<Product>
     * - create(data): Observable<Product>
     * - etc.
     */
    private generateAngularSdk;
    /**
     * Add CRUD methods to Angular service
     */
    private addServiceMethods;
    /**
     * TEACHING NOTE: Generate TypeScript interfaces
     * These are the types for your models
     *
     * Example:
     * export interface Product {
     *   id: number;
     *   name: string;
     *   price: number;
     * }
     */
    private generateModels;
    /**
     * TEACHING NOTE: Map Prisma types to TypeScript types
     * Prisma uses: String, Int, Float, Boolean, DateTime
     * TypeScript uses: string, number, boolean, Date
     */
    private mapPrismaTypeToTs;
    /**
     * TEACHING NOTE: Generate Zod validation schema from Prisma model
     * This creates runtime validation for API requests
     */
    private generateZodSchema;
    /**
     * Map Prisma types to Zod validators
     */
    private mapPrismaTypeToZod;
    /**
     * Generate test script for API validation
     */
    private generateTestScript;
    /**
     * Generate logger utility for production-ready logging
     */
    private generateLoggerUtility;
    /**
     * Generate server file with logger integration
     */
    private generateServerFile;
    /**
     * Copy bundled dependencies from CLI package to generated project
     * This eliminates the need for users to run npm install
     */
    private copyBundledDependencies;
    /**
     * Generate package.json with locked dependency versions
     */
    private generatePackageJson;
    /**
     * Generate Prisma plugin for Fastify
     */
    private generatePrismaPlugin;
    /**
     * Run prisma generate to create Prisma Client
     */
    private runPrismaGenerate;
}
//# sourceMappingURL=generate.d.ts.map