import { FormFieldType, FieldOption } from './types';

/**
 * Field guidance configuration for providing contextual help and suggestions
 */
export interface FieldGuidance {
    /**
     * Suggestions to show as placeholder or examples
     */
    suggestions?: string[];
    /**
     * Predefined options for select fields
     */
    predefinedOptions?: FieldOption[];
    /**
     * Warning messages for specific patterns to avoid
     */
    warnings?: {
        pattern: RegExp;
        message: string;
    }[];
    /**
     * Validation rules specific to the field context
     */
    validationRules?: {
        /**
         * Patterns that should be rejected
         */
        rejectPatterns?: {
            pattern: RegExp;
            reason: string;
        }[];
        /**
         * Minimum quality requirements
         */
        qualityChecks?: {
            minNonTechnicalWords?: number;
            requireSpecificTerms?: string[];
            forbidTechnicalTerms?: string[];
        };
    };
    /**
     * Field type override for specific contexts
     */
    fieldTypeOverride?: FormFieldType;
    /**
     * Help text specific to the tool context
     */
    contextualHelpText?: string;
}
/**
 * Tool-specific field configurations
 */
export interface ToolFieldConfiguration {
    /**
     * Tool name or pattern to match
     */
    toolPattern: string | RegExp;
    /**
     * Field-specific guidance
     */
    fields: Record<string, FieldGuidance>;
    /**
     * Global guidance for all fields in this tool
     */
    globalGuidance?: {
        /**
         * General warnings to show
         */
        warnings?: string[];
        /**
         * Quality standards for this tool
         */
        qualityStandards?: string[];
    };
}
/**
 * Registry for field guidance configurations
 */
declare class FieldGuidanceRegistry {
    private configurations;
    private providers;
    private registerOrderCounter;
    private logger;
    constructor();
    /**
     * Register field guidance for a specific tool
     */
    registerToolConfiguration(config: ToolFieldConfiguration): void;
    /**
     * Register a provider for dynamic field/global guidance
     */
    registerToolProvider(toolPattern: string | RegExp, provider: FieldGuidanceProvider, options?: {
        id?: string;
        priority?: number;
    }): string;
    /** Unregister a provider by id */
    unregisterProvider(id: string): void;
    /** List registered providers */
    listProviders(): Array<{
        id: string;
        priority: number;
        pattern: string | RegExp;
    }>;
    /**
     * Get field guidance for a specific tool and field
     */
    getFieldGuidance(toolName: string, fieldName: string): FieldGuidance | null;
    /**
     * Get global guidance for a tool
     */
    getGlobalGuidance(toolName: string): ToolFieldConfiguration['globalGuidance'] | null;
    /**
     * Validate field value against guidance rules
     */
    validateFieldValue(toolName: string, fieldName: string, value: unknown): {
        isValid: boolean;
        warnings: string[];
        errors: string[];
    };
    /**
     * Clear all configurations (useful for testing)
     */
    clear(): void;
    /** Choose matching provider by priority then last-in wins */
    private pickMatchingProviders;
    private safeGetFieldGuidance;
    private safeGetGlobalGuidance;
    private mergeGuidance;
}
export declare const fieldGuidanceRegistry: FieldGuidanceRegistry;
/**
 * Provider interface (optional, for dynamic guidance)
 */
export interface FieldGuidanceProvider {
    getFieldGuidance(fieldName: string, ctx: {
        toolName: string;
    }): FieldGuidance | null;
    getGlobalGuidance?(toolName: string): ToolFieldConfiguration['globalGuidance'] | null;
}
export {};
