UNPKG

sevm

Version:

A Symbolic Ethereum Virtual Machine (EVM) bytecode decompiler & analyzer library & CLI

106 lines (105 loc) 2.45 kB
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 {};