/**
 * ModelGenerator - Generate ORM model files
 * Creates type-safe model modules with relationships and validation
 */
export type FieldType = 'string' | 'integer' | 'bigint' | 'float' | 'boolean' | 'text' | 'datetime' | 'json' | 'uuid' | '';
export interface ModelField {
    name: string;
    type: FieldType;
    nullable?: boolean;
    default?: unknown;
    unique?: boolean;
    comment?: string;
}
export interface ModelRelationship {
    type: 'hasOne' | 'hasMany' | 'belongsTo';
    model: string;
    foreignKey?: string;
    localKey?: string;
}
export interface ModelOptions {
    name: string;
    modelPath: string;
    table?: string;
    fields?: ModelField[];
    relationships?: ModelRelationship[];
    timestamps?: boolean;
    fillable?: string[];
    hidden?: string[];
    softDelete?: boolean;
    withMigration?: boolean;
    withFactory?: boolean;
    withController?: boolean;
}
export interface ModelGeneratorResult {
    success: boolean;
    modelName: string;
    modelFile: string;
    migrationFile?: string;
    factoryFile?: string;
    controllerFile?: string;
    message: string;
}
/**
 * Validate model options
 */
export declare function validateOptions(options: ModelOptions): {
    valid: boolean;
    errors: string[];
};
/**
 * Generate model file
 */
export declare function generateModel(options: ModelOptions): Promise<ModelGeneratorResult>;
/**
 * Get common field types
 */
export declare function getCommonFieldTypes(): FieldType[];
/**
 * Generate common model fields (User example)
 */
export declare function getUserFields(): ModelField[];
/**
 * Generate common model fields (Post example)
 */
export declare function getPostFields(): ModelField[];
/**
 * Generate common model fields (Order example)
 */
export declare function getOrderFields(): ModelField[];
/**
 * ModelGenerator creates type-safe ORM models
 */
export declare const ModelGenerator: Readonly<{
    validateOptions: typeof validateOptions;
    generateModel: typeof generateModel;
    getCommonFieldTypes: typeof getCommonFieldTypes;
    getUserFields: typeof getUserFields;
    getPostFields: typeof getPostFields;
    getOrderFields: typeof getOrderFields;
}>;
//# sourceMappingURL=ModelGenerator.d.ts.map