import { GeneratorConfig, ModelConfig, VariantConfig } from './parser';
/**
 * Default configuration factory
 */
export declare class DefaultConfigurationManager {
    /**
     * Get complete default configuration
     */
    static getDefaultConfiguration(): GeneratorConfig;
    /**
     * Get default configuration for minimal mode
     */
    static getMinimalConfiguration(): GeneratorConfig;
    /**
     * Get default configuration for custom mode
     */
    static getCustomConfiguration(): GeneratorConfig;
    /**
     * Get default variant configuration
     */
    static getDefaultVariantConfig(variantType: 'pure' | 'input' | 'result', modelFields?: string[]): VariantConfig;
    /**
     * Get default model configuration
     */
    static getDefaultModelConfig(modelName: string, mode?: string, modelFields?: string[]): ModelConfig;
    /**
     * Merge user configuration with defaults
     */
    static mergeWithDefaults(userConfig: Partial<GeneratorConfig>): GeneratorConfig;
    /**
     * Apply mode-specific default adjustments
     */
    private static applyModeSpecificDefaults;
    /**
     * Fill in missing model configurations with defaults
     */
    static fillMissingModelConfigs(config: GeneratorConfig, availableModels: string[], modelFieldInfo?: {
        [modelName: string]: string[];
    }): GeneratorConfig;
    /**
     * Validate and normalize configuration
     */
    static normalizeConfiguration(config: GeneratorConfig): GeneratorConfig;
    /**
     * Create configuration preset for common use cases
     */
    static createPreset(presetName: ConfigurationPreset): GeneratorConfig;
    /**
     * Get available configuration presets
     */
    static getAvailablePresets(): ConfigurationPresetInfo[];
}
/**
 * Configuration preset types
 */
export type ConfigurationPreset = 'minimal' | 'trpc' | 'api-validation' | 'full-featured';
/**
 * Preset information interface
 */
export interface ConfigurationPresetInfo {
    name: ConfigurationPreset;
    description: string;
    useCase: string;
}
/**
 * Convenience functions
 */
/**
 * Get default configuration
 */
export declare function getDefaultConfiguration(): GeneratorConfig;
/**
 * Get minimal configuration
 */
export declare function getMinimalConfiguration(): GeneratorConfig;
/**
 * Merge user config with defaults
 */
export declare function mergeWithDefaults(userConfig: Partial<GeneratorConfig>): GeneratorConfig;
/**
 * Fill missing model configurations
 */
export declare function fillMissingModelConfigs(config: GeneratorConfig, availableModels: string[], modelFieldInfo?: {
    [modelName: string]: string[];
}): GeneratorConfig;
/**
 * Normalize configuration
 */
export declare function normalizeConfiguration(config: GeneratorConfig): GeneratorConfig;
/**
 * Create preset configuration
 */
export declare function createPreset(presetName: ConfigurationPreset): GeneratorConfig;
/**
 * Get available presets
 */
export declare function getAvailablePresets(): ConfigurationPresetInfo[];
/**
 * Process and finalize configuration
 *
 * This is the main function that should be used to process configuration
 * from parsing through defaults application and normalization.
 */
export declare function processConfiguration(userConfig: Partial<GeneratorConfig>, availableModels?: string[], modelFieldInfo?: {
    [modelName: string]: string[];
}): GeneratorConfig;
