/// <reference types="node" />
import { ProtobufToTunnel } from './protobuf2tunnel';
import { MemoryCache } from './memorycache';
import { MemoryMap } from './memorymap';
import { EventEmitter } from 'node:events';
import { HaltReasonResponse, IHaltReasonResponse, ReadRegistersResponse, DebugProtocol, PluginTelemetryType } from '../../../../proto_gen/proto';
declare enum GdbPacketType {
    ReadRegisters,
    WriteRegisters,
    ReadMemory,
    WriteMemory,
    Continue,
    Step,
    GeneralQueryRead,
    GeneralQueryWrite,
    ExtendedMode,
    SetThread,
    GetHaltReason,
    InsertBreakpoint,
    RemoveBreakpoint,
    ReadRegister,
    WriteRegister,
    ThreadStatus,
    ExtendedCommand,
    KillRequest
}
declare class ThreadInfo {
    fault: HaltReasonResponse.HaltReason | undefined;
    name: string;
    constructor(name: string);
    private faultString;
    toString(): string;
}
export declare class GdbPacket {
    content: string;
    constructor(content: string);
    getType(): GdbPacketType;
    getArgs(): string;
    getData(): string;
    static build(data: string): GdbPacket;
    static escape(data: string): string;
    static unescape(data: string): string;
    static checksum(data: string): number;
}
export declare class GdbToProtobuf extends EventEmitter {
    static readonly MEMORY_LINE_LENGTH = 128;
    protobufToTunnel: ProtobufToTunnel;
    debugProto: DebugProtocol;
    threadInfo: ThreadInfo;
    memMap: MemoryMap;
    memMapXml: string;
    memCache: MemoryCache;
    packetHandlers: Map<GdbPacketType, ((p: GdbPacket) => Promise<GdbPacket>)>;
    unsupportedPackets: Set<GdbPacketType>;
    constructor(protobufToTunnel: ProtobufToTunnel);
    packet(packet: GdbPacket): Promise<GdbPacket>;
    interrupt(): Promise<void>;
    hello(): Promise<void>;
    goodbye(): Promise<void>;
    telemetry(type: PluginTelemetryType, data: string): Promise<void>;
    setFault(fault: HaltReasonResponse.HaltReason | undefined): void;
    formatHaltReason(reason: IHaltReasonResponse): string;
    formatReadRegisters(resp: ReadRegistersResponse): string;
    static regToHex(reg: number): string;
    static hexToReg(reg: string | undefined): number;
    handleReadRegisters(_packet: GdbPacket): Promise<GdbPacket>;
    handleWriteRegisters(packet: GdbPacket): Promise<GdbPacket>;
    handleReadMemory(packet: GdbPacket): Promise<GdbPacket>;
    handleWriteMemory(packet: GdbPacket): Promise<GdbPacket>;
    handleContinue(_packet: GdbPacket): Promise<GdbPacket>;
    handleStep(_packet: GdbPacket): Promise<GdbPacket>;
    readWindow(packetArguments: string, file: string): string;
    handleGeneralQueryRead(packet: GdbPacket): Promise<GdbPacket>;
    handleGeneralQueryWrite(_packet: GdbPacket): Promise<GdbPacket>;
    handleExtendedMode(_packet: GdbPacket): Promise<GdbPacket>;
    handleSetThread(_packet: GdbPacket): Promise<GdbPacket>;
    handleGetHaltReason(_packet: GdbPacket): Promise<GdbPacket>;
    handleInsertBreakpoint(packet: GdbPacket): Promise<GdbPacket>;
    handleRemoveBreakpoint(packet: GdbPacket): Promise<GdbPacket>;
    handleReadRegister(packet: GdbPacket): Promise<GdbPacket>;
    handleWriteRegister(packet: GdbPacket): Promise<GdbPacket>;
    handleThreadStatus(_packet: GdbPacket): Promise<GdbPacket>;
    handleExtendedCommand(_packet: GdbPacket): Promise<GdbPacket>;
}
export {};
