sevm
Version:
A Symbolic Ethereum Virtual Machine (EVM) bytecode decompiler & analyzer library & CLI
106 lines (105 loc) • 2.45 kB
TypeScript
import { type Expr, Tag } from './index';
declare abstract class Bin extends Tag {
readonly left: Expr;
readonly right: Expr;
constructor(left: Expr, right: Expr);
}
export declare class Add extends Bin {
readonly tag = "Add";
eval(): Expr;
}
export declare class Mul extends Bin {
readonly tag = "Mul";
eval(): Expr;
}
export declare class Sub extends Bin {
readonly tag = "Sub";
eval(): Expr;
}
export declare class Div extends Bin {
readonly tag = "Div";
eval(): Expr;
}
export declare class Mod extends Bin {
readonly tag = "Mod";
eval(): Expr;
}
export declare class Exp extends Bin {
readonly tag = "Exp";
eval(): Expr;
}
declare abstract class Cmp extends Tag {
readonly left: Expr;
readonly right: Expr;
readonly equal: boolean;
constructor(left: Expr, right: Expr, equal?: boolean);
}
declare abstract class Unary extends Tag {
readonly value: Expr;
constructor(value: Expr);
}
declare abstract class Shift extends Tag {
readonly value: Expr;
readonly shift: Expr;
constructor(value: Expr, shift: Expr);
}
export declare class Lt extends Cmp {
readonly tag = "Lt";
eval(): Expr;
}
export declare class Gt extends Cmp {
readonly tag = "Gt";
eval(): Expr;
}
export declare class Eq extends Bin {
readonly tag = "Eq";
eval(): Expr;
}
export declare class IsZero extends Tag {
readonly value: Expr;
readonly tag = "IsZero";
constructor(value: Expr);
eval(): Expr;
}
export declare class And extends Bin {
readonly tag = "And";
eval(): Expr;
}
export declare class Or extends Bin {
readonly tag = "Or";
eval(): Expr;
}
export declare class Xor extends Bin {
readonly tag = "Xor";
eval(): Expr;
}
export declare class Not extends Unary {
readonly tag = "Not";
eval(): Expr;
}
export declare class Byte extends Tag {
readonly pos: Expr;
readonly data: Expr;
readonly tag = "Byte";
constructor(pos: Expr, data: Expr);
eval(): Expr;
}
export declare class Shl extends Shift {
readonly tag = "Shl";
eval(): Expr;
}
export declare class Shr extends Shift {
readonly tag = "Shr";
eval(): Expr;
}
export declare class Sar extends Shift {
readonly tag = "Sar";
eval(): Expr;
}
export declare class Sig extends Tag {
readonly selector: string;
readonly tag = "Sig";
constructor(selector: string);
eval(): Expr;
}
export {};