/**
 * Mock Debug Adapter implementation for testing
 *
 * Provides a fully functional debug adapter that simulates debugging
 * without requiring external dependencies.
 *
 * @since 2.0.0
 */
import { EventEmitter } from 'events';
import { DebugProtocol } from '@vscode/debugprotocol';
import { IDebugAdapter, AdapterState, ValidationResult, DependencyInfo, AdapterCommand, AdapterConfig, GenericLaunchConfig, LanguageSpecificLaunchConfig, DebugFeature, FeatureRequirement, AdapterCapabilities } from '../debug-adapter-interface.js';
import { DebugLanguage } from '../../session/models.js';
import { AdapterDependencies } from '../adapter-registry-interface.js';
/**
 * Mock adapter configuration
 */
export interface MockAdapterConfig {
    defaultDelay?: number;
    connectionDelay?: number;
    stepDelay?: number;
    supportedFeatures?: DebugFeature[];
    maxVariableDepth?: number;
    maxArrayLength?: number;
    errorProbability?: number;
    errorScenarios?: MockErrorScenario[];
    cpuIntensive?: boolean;
    memoryIntensive?: boolean;
}
/**
 * Mock error scenarios
 */
export declare enum MockErrorScenario {
    NONE = "none",
    EXECUTABLE_NOT_FOUND = "executable_not_found",
    ADAPTER_CRASH = "adapter_crash",
    CONNECTION_TIMEOUT = "connection_timeout",
    INVALID_BREAKPOINT = "invalid_breakpoint",
    SCRIPT_ERROR = "script_error",
    OUT_OF_MEMORY = "out_of_memory"
}
/**
 * Mock debug adapter implementation
 */
export declare class MockDebugAdapter extends EventEmitter implements IDebugAdapter {
    readonly language = DebugLanguage.MOCK;
    readonly name = "Mock Debug Adapter";
    private state;
    private config;
    private dependencies;
    private currentThreadId;
    private connected;
    private errorScenario;
    constructor(dependencies: AdapterDependencies, config?: MockAdapterConfig);
    initialize(): Promise<void>;
    dispose(): Promise<void>;
    getState(): AdapterState;
    isReady(): boolean;
    getCurrentThreadId(): number | null;
    private transitionTo;
    validateEnvironment(): Promise<ValidationResult>;
    getRequiredDependencies(): DependencyInfo[];
    resolveExecutablePath(preferredPath?: string): Promise<string>;
    getDefaultExecutableName(): string;
    getExecutableSearchPaths(): string[];
    buildAdapterCommand(config: AdapterConfig): AdapterCommand;
    getAdapterModuleName(): string;
    getAdapterInstallCommand(): string;
    transformLaunchConfig(config: GenericLaunchConfig): LanguageSpecificLaunchConfig;
    getDefaultLaunchConfig(): Partial<GenericLaunchConfig>;
    sendDapRequest<T extends DebugProtocol.Response>(command: string, args?: unknown): Promise<T>;
    handleDapEvent(event: DebugProtocol.Event): void;
    handleDapResponse(_response: DebugProtocol.Response): void;
    connect(host: string, port: number): Promise<void>;
    disconnect(): Promise<void>;
    isConnected(): boolean;
    getInstallationInstructions(): string;
    getMissingExecutableError(): string;
    translateErrorMessage(error: Error): string;
    supportsFeature(feature: DebugFeature): boolean;
    getFeatureRequirements(feature: DebugFeature): FeatureRequirement[];
    getCapabilities(): AdapterCapabilities;
    /**
     * Set error scenario for testing
     */
    setErrorScenario(scenario: MockErrorScenario): void;
}
