import { Logger } from '../../Logger'; import { LogicConditionClause, LogicCommand, LogicInstruction } from '../../Types/Logic'; export type LogicLabel = { address: number; label: string; references: LogicInstruction[]; }; export type LogicASTNodeMetadata = { instructionAddress?: number; }; export type LogicCommandNode = LogicCommand & { id: string; label?: LogicLabel; next?: LogicASTNode; metadata?: LogicASTNodeMetadata; }; export type LogicIfNode = { type: 'if'; id: string; clauses: LogicConditionClause[]; then?: LogicASTNode; else?: LogicASTNode; label?: LogicLabel; metadata?: LogicASTNodeMetadata; }; export type LogicGotoNode = { type: 'goto'; id: string; jumpTarget: LogicASTNode; label?: LogicLabel; metadata?: LogicASTNodeMetadata; }; export type LogicInvalidGotoNode = { type: 'invalidGoto'; id: string; invalidTargetAddress: number; next?: LogicASTNode; label?: LogicLabel; metadata?: LogicASTNodeMetadata; }; export type LogicASTNode = LogicIfNode | LogicGotoNode | LogicInvalidGotoNode | LogicCommandNode; export declare function decompileInstructions(instructions: LogicInstruction[], logger?: Logger): LogicASTNode;