sevm
Version:
A Symbolic Ethereum Virtual Machine (EVM) bytecode decompiler & analyzer library & CLI
64 lines (63 loc) • 1.94 kB
TypeScript
import { type Expr, type IInst, Tag } from '.';
export interface IStore {
/**
* Variables definition
*/
readonly variables: Map<bigint, Variable>;
/**
* mappings definition
*/
readonly mappings: {
[location: string]: {
name: string | undefined;
structs: bigint[];
keys: Expr[][];
values: Expr[];
};
};
}
/**
*
*/
export declare class Variable {
label: string | null;
readonly types: Expr[];
readonly index: number;
constructor(label: string | null, types: Expr[], index: number);
}
export declare class MappingStore implements IInst {
readonly slot: Expr;
readonly mappings: IStore['mappings'];
readonly location: number;
readonly items: Expr[];
readonly data: Expr;
readonly structlocation?: bigint | undefined;
readonly name = "MappingStore";
constructor(slot: Expr, mappings: IStore['mappings'], location: number, items: Expr[], data: Expr, structlocation?: bigint | undefined);
eval(): MappingStore;
}
export declare class SStore {
readonly slot: Expr;
readonly data: Expr;
readonly variable: Variable | undefined;
readonly name = "SStore";
constructor(slot: Expr, data: Expr, variable: Variable | undefined);
eval(): SStore;
}
export declare class MappingLoad extends Tag {
readonly slot: Expr;
readonly mappings: IStore['mappings'];
readonly location: number;
readonly items: Expr[];
readonly structlocation?: bigint | undefined;
readonly tag = "MappingLoad";
constructor(slot: Expr, mappings: IStore['mappings'], location: number, items: Expr[], structlocation?: bigint | undefined);
eval(): this;
}
export declare class SLoad extends Tag {
readonly slot: Expr;
readonly variable: Variable | undefined;
readonly tag = "SLoad";
constructor(slot: Expr, variable: Variable | undefined);
eval(): Expr;
}