import type { InfraOptions, RuntimeWebConfig } from '../../../lib/runtime-web/types';
/**
 * Validation result containing success status and any errors.
 */
export interface ConfigValidationResult {
    /** Whether the configuration is valid */
    valid: boolean;
    /** Array of validation error messages */
    errors: string[];
}
/**
 * Error thrown when configuration validation fails.
 */
export declare class ConfigValidationError extends Error {
    /** Array of validation error messages */
    readonly errors: string[];
    constructor(errors: string[]);
}
/**
 * Configuration validator for Runtime Web Core.
 *
 * Validates RuntimeWebConfig objects to ensure they meet all requirements
 * before execution. Provides detailed error messages with actionable guidance.
 *
 * **Validation Rules**:
 * - serviceName: Must start with letter, alphanumeric and hyphens only, max 128 chars
 * - stage: Must be 'dev', 'staging', or 'prod'
 * - infra: Required in CDK context, optional in browser/Lambda
 * - register: Must have at least one microservice if provided
 *
 * @example
 * ```typescript
 * const validator = new ConfigValidator();
 * const result = validator.validate(config);
 *
 * if (!result.valid) {
 *   console.error('Configuration errors:', result.errors);
 * }
 * ```
 */
export declare class ConfigValidator {
    /** Regex pattern for valid service names */
    private static readonly SERVICE_NAME_PATTERN;
    /** Valid stage values */
    private static readonly VALID_STAGES;
    /** AWS account ID pattern (12 digits) */
    private static readonly AWS_ACCOUNT_PATTERN;
    /**
     * Validate a RuntimeWebConfig object.
     *
     * Performs comprehensive validation of all configuration properties
     * and returns a result with any validation errors.
     *
     * @param config - Configuration to validate
     * @param isCDKContext - Whether running in CDK context (requires infra)
     * @returns Validation result with errors array
     */
    validate(config: RuntimeWebConfig, isCDKContext?: boolean): ConfigValidationResult;
    /**
     * Validate configuration and throw if invalid.
     *
     * @param config - Configuration to validate
     * @param isCDKContext - Whether running in CDK context
     * @throws ConfigValidationError if validation fails
     */
    validateOrThrow(config: RuntimeWebConfig, isCDKContext?: boolean): void;
    /**
     * Validate service name format.
     *
     * Service name must:
     * - Start with a letter (a-z, A-Z)
     * - Contain only alphanumeric characters and hyphens
     * - Be between 1 and 128 characters
     *
     * @param serviceName - Service name to validate
     * @returns Array of error messages (empty if valid)
     */
    validateServiceName(serviceName: unknown): string[];
    /**
     * Validate deployment stage.
     *
     * Stage must be one of: 'dev', 'staging', 'prod'
     *
     * @param stage - Stage to validate
     * @returns Array of error messages (empty if valid)
     */
    validateStage(stage: unknown): string[];
    /**
     * Validate app factory function.
     *
     * App must be a function that accepts router dependency and returns React element.
     *
     * @param app - App factory function to validate
     * @returns Array of error messages (empty if valid)
     */
    validateApp(app: unknown): string[];
    /**
     * Validate router instance.
     *
     * Router must be a RuntimeRouter instance with getRoutes method.
     *
     * @param router - Router to validate
     * @returns Array of error messages (empty if valid)
     */
    validateRouter(router: unknown): string[];
    /**
     * Validate microservice register.
     *
     * Register must be an object with microservice definitions.
     * Each microservice must have ties and lambdas arrays.
     *
     * @param register - Microservice register to validate
     * @returns Array of error messages (empty if valid)
     */
    validateRegister(register: unknown): string[];
    /**
     * Validate infrastructure configuration.
     *
     * Infra is required in CDK context and must have valid env and stage.
     *
     * @param infra - Infrastructure options to validate
     * @param isCDKContext - Whether running in CDK context
     * @returns Array of error messages (empty if valid)
     */
    validateInfra(infra: InfraOptions | undefined, isCDKContext: boolean): string[];
}
