import { Express } from 'express';
import { BasePlugin } from './Plugin.js';
import { Logger } from '../logging/Logger.js';
export interface CoreValidationConfig {
    /** Enable XSS protection middleware */
    enableXSSProtection?: boolean;
    /** Enable SQL injection protection middleware */
    enableSQLInjectionProtection?: boolean;
    /** Global validation configuration */
    globalValidation?: {
        enabled: boolean;
        soft?: boolean;
        options?: Record<string, unknown>;
    };
    /** Global sanitization configuration */
    globalSanitization?: {
        body?: Record<string, unknown>;
        query?: Record<string, unknown>;
        params?: Record<string, unknown>;
    };
    /** Custom validators */
    customValidators?: Record<string, (value: unknown) => Promise<{
        isValid: boolean;
        errors: unknown[];
    }>>;
    /** Custom error handler */
    errorHandler?: (error: unknown, req: unknown, res: unknown, next: unknown) => void;
    /** Content Security Policy configuration */
    csp?: {
        enabled: boolean;
        directives?: Record<string, string[]>;
    };
}
export interface CoreValidationPublicConfig {
    /** Enable XSS protection middleware */
    enableXSSProtection?: boolean;
    /** Enable SQL injection protection middleware */
    enableSQLInjectionProtection?: boolean;
    /** Global validation configuration */
    globalValidation?: {
        enabled: boolean;
        soft?: boolean;
        options?: Record<string, unknown>;
    };
    /** Global sanitization configuration */
    globalSanitization?: {
        body?: Record<string, unknown>;
        query?: Record<string, unknown>;
        params?: Record<string, unknown>;
    };
    /** Custom validators (keys only for public config) */
    customValidators?: string[];
    /** Custom error handler (indicator only for public config) */
    errorHandler?: string;
    /** Content Security Policy configuration */
    csp?: {
        enabled: boolean;
        directives?: Record<string, string[]>;
    };
}
/**
 * Core Validation Plugin - integrates be-validation into be-core
 *
 * This plugin provides comprehensive validation and sanitization capabilities
 * that are automatically available when using be-core.
 */
export declare class CoreValidationPlugin extends BasePlugin {
    readonly name = "validation";
    readonly version = "1.0.0";
    private config;
    private validationModules;
    constructor(logger?: Logger, config?: Partial<CoreValidationConfig>);
    protected setup(config: unknown): Promise<void>;
    protected registerMiddleware(app: Express): void;
    protected registerErrorHandlers(app: Express): void;
    /**
     * Get validation middleware for specific routes
     */
    getValidationMiddleware(): unknown;
    /**
     * Get sanitization utilities
     */
    getSanitizer(): unknown;
    /**
     * Get XSS protection utilities
     */
    getXSSProtection(): unknown;
    /**
     * Get SQL injection protection utilities
     */
    getSQLProtection(): unknown;
    /**
     * Get custom validators
     */
    getCustomValidators(): unknown;
    /**
     * Get validation utilities
     */
    getValidationUtils(): unknown;
    /**
     * Get Joi validator instance
     */
    getJoiValidator(): unknown;
    /**
     * Get Zod validator instance
     */
    getZodValidator(): unknown;
    /**
     * Add custom validator
     */
    addCustomValidator(name: string, validator: (value: unknown) => Promise<{
        isValid: boolean;
        errors: unknown[];
    }>): void;
    /**
     * Get custom validator
     */
    getCustomValidator(name: string): ((value: unknown) => Promise<{
        isValid: boolean;
        errors: unknown[];
    }>) | undefined;
    /**
     * Update plugin configuration
     */
    updateConfig(newConfig: Partial<CoreValidationConfig>): void;
    /**
     * Get current configuration (without sensitive data)
     */
    getPublicConfig(): Partial<CoreValidationPublicConfig>;
    /**
     * Health check for validation system
     */
    healthCheck(): Promise<{
        status: 'healthy' | 'warning' | 'error';
        checks: Record<string, boolean>;
        message: string;
        details: unknown;
    }>;
}
export declare const ValidationExports: {
    getValidationMiddleware(): Promise<typeof import("be-validation", { with: { "resolution-mode": "import" } }).ValidationMiddleware>;
    getXSSProtection(): Promise<typeof import("be-validation", { with: { "resolution-mode": "import" } }).XSSProtection>;
    getSQLInjectionProtection(): Promise<typeof import("be-validation", { with: { "resolution-mode": "import" } }).SQLInjectionProtection>;
    getSanitizer(): Promise<typeof import("be-validation", { with: { "resolution-mode": "import" } }).Sanitizer>;
    getCustomValidators(): Promise<typeof import("be-validation", { with: { "resolution-mode": "import" } }).CustomValidators>;
    getValidationUtils(): Promise<typeof import("be-validation", { with: { "resolution-mode": "import" } }).ValidationUtils>;
    getJoiValidator(): Promise<typeof import("be-validation", { with: { "resolution-mode": "import" } }).JoiValidator>;
    getZodValidator(): Promise<typeof import("be-validation", { with: { "resolution-mode": "import" } }).ZodValidator>;
};
//# sourceMappingURL=ValidationPlugin.d.ts.map