import { ProbeBackend, CommandResult, GDBServerInfo } from "./backend";
import { ProcessManager } from "../utils/process-manager";
export interface BlackMagicConfig {
    /** Path to GDB binary (arm-none-eabi-gdb) */
    gdbPath: string;
    /** Serial port for BMP (e.g., "/dev/ttyACM0", "/dev/cu.usbmodem*") */
    serialPort: string;
    /** Target index when scanning (default 1) */
    targetIndex: number;
    /** GDB port if using networked BMP */
    gdbPort: number;
}
/**
 * Black Magic Probe backend.
 * BMP is unique: it has a built-in GDB server on a serial port.
 * We interact with it by running arm-none-eabi-gdb with commands.
 * No separate GDB server process is needed.
 */
export declare class BlackMagicBackend extends ProbeBackend {
    readonly type: "blackmagic";
    readonly displayName = "Black Magic Probe";
    private config;
    private processManager;
    constructor(config: Partial<BlackMagicConfig>, processManager: ProcessManager);
    /** Execute GDB commands against the Black Magic Probe */
    private gdbExec;
    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=blackmagic.d.ts.map