import { MicroserviceBundle } from '../../../core/runtime-web/bundle/microservice-bundle';
import type { MicroserviceDefinition } from '../../../lib/runtime-web/types/microservice.types';
import type { HashMapping } from './hash-map-loader';
/**
 * Error class for handler resolution failures.
 */
export declare class HandlerResolutionError extends Error {
    readonly microserviceName: string;
    readonly handlerHashKey: string;
    readonly cause?: Error | undefined;
    constructor(microserviceName: string, handlerHashKey: string, message: string, cause?: Error | undefined);
}
/**
 * Resolved handler information.
 */
export interface ResolvedHandler {
    /** The bound handler function */
    readonly handler: Function;
    /** Microservice name */
    readonly microserviceName: string;
    /** Handler hash key (from CDK) */
    readonly handlerHashKey: string;
    /** Handler name/ID (translated from hash) */
    readonly handlerName: string;
    /** The MicroserviceBundle instance */
    readonly bundle: MicroserviceBundle;
}
/**
 * Handler resolver configuration.
 */
export interface HandlerResolverConfig {
    /** Microservices enabled for Live Dev */
    readonly microservices: Record<string, MicroserviceDefinition>;
    /** Hash mappings from CDK bundles (hashKey → lambdaId) */
    readonly hashMappings?: Record<string, HashMapping>;
}
/**
 * Local Handler Resolver for Awake Lambda Development.
 *
 * Creates MicroserviceBundle instances from local configuration and resolves
 * handlers using hash key translation from CDK bundles.
 *
 * Architecture:
 * - CDK bundle contains `hashToNameMap`: { "brTkPfELKivMWFhMFBsn3vOQ1XXA-NNI": "get", ... }
 * - Lambda sends request with `handlerHashKey`
 * - Resolver translates: `hashKey → lambdaId` using CDK mapping
 * - Resolver executes LOCAL handler by `lambdaId`
 *
 * This allows users to modify handler code locally while Live Dev is running.
 *
 * @see Requirements 4.6, 12.6
 */
export declare class LocalHandlerResolver {
    /** Map of microservice name to MicroserviceBundle */
    private readonly bundles;
    /** Hash mappings from CDK bundles */
    private readonly hashMappings;
    /** Configuration */
    private readonly config;
    /** Initialization timestamp */
    private readonly initializationTime;
    constructor(config: HandlerResolverConfig);
    private initializeBundles;
    resolveHandler(microserviceName: string, handlerHashKey: string): ResolvedHandler;
    private translateHashKey;
    updateHashMappings(hashMappings: Record<string, HashMapping>): void;
    hasHandler(microserviceName: string, handlerHashKey: string): boolean;
    getBundle(microserviceName: string): MicroserviceBundle | undefined;
    getMicroserviceNames(): string[];
    getDiagnostics(): {
        microserviceCount: number;
        totalHandlerCount: number;
        microservices: Array<{
            name: string;
            handlerCount: number;
            cdkMappingsLoaded: boolean;
            cdkMappingCount: number;
            handlers: Array<{
                hashKey: string;
                name: string;
            }>;
        }>;
        initializationTimeMs: number;
    };
    reloadMicroservice(microserviceName: string): void;
    reloadAll(): void;
}
