import { ProbeBackend, CommandResult, GDBServerInfo } from "./backend";
import { ProcessManager } from "../utils/process-manager";
export interface OpenOCDConfig {
    /** Path to openocd binary */
    binaryPath: string;
    /** OpenOCD interface config (e.g., "interface/stlink.cfg", "interface/cmsis-dap.cfg") */
    interfaceConfig: string;
    /** OpenOCD target config (e.g., "target/stm32f4x.cfg", "target/nrf52.cfg") */
    targetConfig: string;
    /** Extra OpenOCD config files */
    extraConfigs: string[];
    /** GDB port */
    gdbPort: number;
    /** Telnet port (for OpenOCD commands) */
    telnetPort: number;
    /** TCL port */
    tclPort: number;
}
/**
 * OpenOCD backend. Supports ST-Link, CMSIS-DAP, FTDI, and many other adapters.
 * Uses OpenOCD's telnet interface for commands when the server is running,
 * or spawns one-shot openocd processes for individual commands.
 */
export declare class OpenOCDBackend extends ProbeBackend {
    readonly type: "openocd";
    readonly displayName = "OpenOCD";
    private config;
    private processManager;
    private gdbOutputBuffer;
    constructor(config: Partial<OpenOCDConfig>, processManager: ProcessManager);
    /** Send a command via OpenOCD's telnet interface (when server is running) */
    private telnetCommand;
    /** Execute OpenOCD commands. If server is running, uses telnet. Otherwise spawns a one-shot process. */
    private exec;
    private buildConfigArgs;
    getDeviceInfo(): Promise<CommandResult>;
    halt(): Promise<CommandResult>;
    resume(): Promise<CommandResult>;
    reset(halt?: boolean): Promise<CommandResult>;
    step(): Promise<CommandResult>;
    readMemory(address: number, length: number): Promise<CommandResult>;
    writeMemory(address: number, value: number): Promise<CommandResult>;
    readAllRegisters(): Promise<CommandResult>;
    readRegister(name: string): Promise<CommandResult>;
    flash(filePath: string, baseAddress?: number): Promise<CommandResult>;
    erase(): Promise<CommandResult>;
    setBreakpoint(address: number): Promise<CommandResult>;
    clearBreakpoints(): Promise<CommandResult>;
    executeRaw(commands: string[]): Promise<CommandResult>;
    startGDBServer(): Promise<{
        success: boolean;
        message: string;
    }>;
    stopGDBServer(): {
        success: boolean;
        message: string;
    };
    isGDBServerRunning(): boolean;
    getGDBServerStatus(): GDBServerInfo;
    getGDBServerOutput(lines?: number): string[];
    supportsRTT(): boolean;
    isDeviceConfigured(): boolean;
    getDeviceName(): string;
    setDevice(device: string): void;
    listDevices(): Promise<CommandResult>;
    dispose(): void;
}
//# sourceMappingURL=openocd.d.ts.map