import type { RuntimeAwakeMetadata } from '../../../lib/runtime-web/runtime-awake';
import { type ResourceCheckResult, type ResourceType, type ResourceValidationResult } from './metadata-resolver.types';
/**
 * Configuration for ResourceValidator.
 *
 * @see Requirements 6.1, 6.2
 */
export interface ResourceValidatorConfig {
    /** AWS region */
    readonly region: string;
    /** AWS profile (optional) */
    readonly profile?: string;
    /** Stack name for error messages */
    readonly stackName: string;
}
/**
 * IoT endpoint validation pattern.
 *
 * Valid IoT endpoints follow the pattern:
 * {prefix}-ats.iot.{region}.amazonaws.com
 *
 * @see Requirements 6.3
 */
export declare const IOT_ENDPOINT_PATTERN: RegExp;
/**
 * Validate an IoT endpoint format.
 *
 * This is a pure function for testing purposes.
 *
 * @param endpoint - IoT endpoint to validate
 * @returns True if the endpoint format is valid
 *
 * @see Requirements 6.3
 */
export declare function isValidIotEndpoint(endpoint: string): boolean;
/**
 * ResourceValidator - Validates AWS resources exist and are accessible.
 *
 * Validates DynamoDB tables, S3 buckets, and IoT endpoints before
 * attempting Live Dev session registration.
 *
 * @see Requirements 6.1, 6.2, 6.3
 *
 * @example
 * ```typescript
 * const validator = new ResourceValidator({
 *   region: 'us-east-1',
 *   stackName: 'my-app-RuntimeAwake-dev',
 * });
 *
 * const result = await validator.validate(metadata);
 * if (!result.valid) {
 *   console.error(result.error?.message);
 * }
 * ```
 */
export declare class ResourceValidator {
    private readonly dynamoClient;
    private readonly s3Client;
    private readonly config;
    /**
     * Create a new ResourceValidator.
     *
     * @param config - Validator configuration
     */
    constructor(config: ResourceValidatorConfig);
    /**
     * Validate all Live Dev resources.
     *
     * Validates DynamoDB table, S3 bucket, and IoT endpoint.
     * Returns on first error encountered.
     *
     * @param metadata - Metadata containing resource names
     * @returns Validation result
     *
     * @see Requirements 6.1, 6.2, 6.3, 6.4
     */
    validate(metadata: RuntimeAwakeMetadata): Promise<ResourceValidationResult>;
    /**
     * Validate DynamoDB table exists.
     *
     * Uses DescribeTable to check if the table exists and is accessible.
     *
     * @param tableName - Table name to validate
     * @returns Check result
     *
     * @see Requirements 6.1
     */
    validateTable(tableName: string): Promise<ResourceCheckResult>;
    /**
     * Validate S3 bucket exists.
     *
     * Uses HeadBucket to check if the bucket exists and is accessible.
     *
     * @param bucketName - Bucket name to validate
     * @returns Check result
     *
     * @see Requirements 6.2
     */
    validateBucket(bucketName: string): Promise<ResourceCheckResult>;
    /**
     * Validate IoT endpoint format.
     *
     * Validates the endpoint follows the expected AWS IoT Core format.
     * This is a synchronous validation (no AWS call needed).
     *
     * @param endpoint - IoT endpoint to validate
     * @returns Check result
     *
     * @see Requirements 6.3
     */
    validateIotEndpoint(endpoint: string): Promise<ResourceCheckResult>;
    /**
     * Get a user-friendly error message for DynamoDB table errors.
     *
     * @param error - Error from AWS SDK
     * @param tableName - Table name for context
     * @returns User-friendly error message
     */
    private getTableErrorMessage;
    /**
     * Get a user-friendly error message for S3 bucket errors.
     *
     * @param error - Error from AWS SDK
     * @param bucketName - Bucket name for context
     * @returns User-friendly error message
     */
    private getBucketErrorMessage;
    /**
     * Check if an error is an AWS SDK error.
     *
     * @param error - Error to check
     * @returns True if the error is an AWS SDK error
     */
    private isAwsError;
}
/**
 * Create a ResourceValidator with the given configuration.
 *
 * @param config - Validator configuration
 * @returns ResourceValidator instance
 *
 * @example
 * ```typescript
 * const validator = createResourceValidator({
 *   region: 'us-east-1',
 *   stackName: 'my-app-RuntimeAwake-dev',
 * });
 * ```
 */
export declare function createResourceValidator(config: ResourceValidatorConfig): ResourceValidator;
/**
 * Validate a single resource by type.
 *
 * Utility function for validating individual resources.
 *
 * @param resourceType - Type of resource to validate
 * @param resourceName - Name of the resource
 * @param config - Validator configuration
 * @returns Check result
 */
export declare function validateResource(resourceType: ResourceType, resourceName: string, config: ResourceValidatorConfig): Promise<ResourceCheckResult>;
