/**
 * 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<string, string>;
    additionalValidations?: Record<string, string[]>;
    disableInlineValidations?: boolean;
    validationTemplates?: Record<string, string>;
    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<VariantType, Partial<VariantConfig>>;
    modelOverrides: Record<string, Partial<Record<VariantType, Partial<VariantConfig>>>>;
    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<string>;
    imports: Set<string>;
    fieldCount: number;
    excludedFieldCount: number;
    validationCount: number;
    errors: string[];
}
/**
 * Collection of all variant results for a model
 */
export interface ModelVariantCollection {
    modelName: string;
    variants: Record<VariantType, VariantGenerationResult | null>;
    dependencies: Set<string>;
    crossVariantReferences: Record<VariantType, VariantType[]>;
    indexFile: {
        fileName: string;
        content: string;
        exports: Set<string>;
    };
    generationSummary: {
        totalVariants: number;
        successfulVariants: number;
        failedVariants: number;
        totalErrors: number;
        processingTime: number;
    };
}
/**
 * Variant manager interface
 */
export interface VariantManager {
    generateModelVariants(model: DMMF.Model, config?: Partial<VariantManagerConfig>): Promise<ModelVariantCollection>;
    generateVariant(model: DMMF.Model, variantType: VariantType, config?: Partial<VariantConfig>): Promise<VariantGenerationResult>;
    validateConfig(config: VariantManagerConfig): {
        isValid: boolean;
        errors: string[];
        warnings: string[];
    };
    getDefaultConfig(variantType: VariantType): VariantConfig;
    resolveDependencies(collections: ModelVariantCollection[]): {
        dependencyOrder: string[];
        circularDependencies: string[][];
        unresolvedDependencies: string[];
    };
}
/**
 * Default naming configurations for each variant type
 */
export declare const DEFAULT_NAMING_CONFIGS: Record<VariantType, NamingConfig>;
/**
 * Default field exclusion rules for each variant type
 */
export declare const DEFAULT_FIELD_EXCLUSIONS: Record<VariantType, FieldExclusionRule>;
/**
 * Default validation customizations for each variant type
 */
export declare const DEFAULT_VALIDATION_CUSTOMIZATIONS: Record<VariantType, ValidationCustomization>;
/**
 * Default schema generation options for each variant type
 */
export declare const DEFAULT_SCHEMA_OPTIONS: Record<VariantType, SchemaGenerationOptions>;
