/** * Variant Management System Types * Defines TypeScript interfaces for schema variant generation system */ import { DMMF } from '@prisma/generator-helper'; /** * Supported schema variant types */ export declare enum VariantType { PURE = "pure",// Raw model schema INPUT = "input",// API input validation RESULT = "result" } /** * File naming configuration for variants */ export interface NamingConfig { suffix: string; schemaNameSuffix: string; typeNameSuffix: string; } /** * Field exclusion rules for variants */ export interface FieldExclusionRule { excludeFields?: string[]; excludeFieldTypes?: string[]; excludeRelations?: boolean; excludeAutoGenerated?: boolean; excludeWithAttributes?: string[]; } /** * Validation customization for variants */ export interface ValidationCustomization { fieldValidations?: Record; additionalValidations?: Record; disableInlineValidations?: boolean; validationTemplates?: Record; partial?: boolean; } /** * Schema generation options for variants */ export interface SchemaGenerationOptions { includeDocumentation?: boolean; includeExamples?: boolean; generateTypes?: boolean; includeStatistics?: boolean; customImports?: string[]; } /** * Configuration for a single variant */ export interface VariantConfig { type: VariantType; enabled: boolean; naming: NamingConfig; fieldExclusions: FieldExclusionRule; validationCustomizations: ValidationCustomization; schemaOptions: SchemaGenerationOptions; priority: number; } /** * Global variant management configuration */ export interface VariantManagerConfig { outputDirectory: string; enableVariants: boolean; variantDefaults: Record>; modelOverrides: Record>>>; globalNaming: { useModelPrefix: boolean; usePascalCase: boolean; customSeparator?: string; }; } /** * Variant generation result */ export interface VariantGenerationResult { variantType: VariantType; fileName: string; filePath: string; schemaName: string; typeName: string; content: string; dependencies: string[]; exports: Set; imports: Set; fieldCount: number; excludedFieldCount: number; validationCount: number; errors: string[]; } /** * Collection of all variant results for a model */ export interface ModelVariantCollection { modelName: string; variants: Record; dependencies: Set; crossVariantReferences: Record; indexFile: { fileName: string; content: string; exports: Set; }; generationSummary: { totalVariants: number; successfulVariants: number; failedVariants: number; totalErrors: number; processingTime: number; }; } /** * Variant manager interface */ export interface VariantManager { generateModelVariants(model: DMMF.Model, config?: Partial): Promise; generateVariant(model: DMMF.Model, variantType: VariantType, config?: Partial): Promise; validateConfig(config: VariantManagerConfig): { isValid: boolean; errors: string[]; warnings: string[]; }; getDefaultConfig(variantType: VariantType): VariantConfig; resolveDependencies(collections: ModelVariantCollection[]): { dependencyOrder: string[]; circularDependencies: string[][]; unresolvedDependencies: string[]; }; }