import { StackFrame } from "@vscode/debugadapter";
import { DebugProtocol } from "@vscode/debugprotocol";
import { GdbClient } from "../gdbClient";
import VariableManager from "../variableManager";
import { DisassembledFile } from "./disassembledFile";
import SourceMap from "../sourceMap";
import { StackPosition } from "../stackManager";
export interface DisassembledLine {
    text: string;
    isCopper: boolean;
}
export declare class DisassemblyManager {
    private gdb;
    private variables;
    private sourceMap;
    private sourceHandles;
    protected lineCache: Map<number, DisassembledLine>;
    constructor(gdb: GdbClient, variables: VariableManager, sourceMap: SourceMap);
    /**
     * Disassemble memory to CPU or Copper instructions
     */
    disassemble(args: DebugProtocol.DisassembleArguments & DisassembledFile): Promise<DebugProtocol.DisassembledInstruction[]>;
    /**
     * Get disassembled file contents by source reference
     */
    getDisassembledFileContentsByRef(ref: number): Promise<string | undefined>;
    /**
     * Get disassembled content for a .dgasm file path
     *
     * The filename contains tokens for the disassemble options
     */
    getDisassembledFileContentsByPath(path: string): Promise<string>;
    /**
     * Get text content for a disassembled source file
     */
    getDisassembledFileContents(dAsmFile: DisassembledFile): Promise<string>;
    disassembleLine(pc: number, threadId: number): Promise<DisassembledLine>;
    isCopperLine(pc: number): boolean;
    getStackFrame(stackPosition: StackPosition, threadId: number): Promise<StackFrame>;
    getSourceByReference(ref: number): DisassembledFile | undefined;
    disassembleSegment(segmentId: number): Promise<DebugProtocol.DisassembledInstruction[]>;
    disassembleAddressExpression(addressExpression: string, length: number, offset: number | undefined, isCopper: boolean): Promise<DebugProtocol.DisassembledInstruction[]>;
    disassembleAddress(address: number, length: number, isCopper?: boolean): Promise<DebugProtocol.DisassembledInstruction[]>;
    getAddressForFileEditorLine(filePath: string, lineNumber: number): Promise<number>;
    private getLineNumberInDisassembledSegment;
    private evaluateAddress;
    private getCopperAddress;
}
