import { CompiledCode, ExecState, IExecutor, Log, OnEndedCall, OnLog, OnStartingCall, StopReason } from './interfaces'; import { utils } from 'ethers'; export declare class Executor implements IExecutor { state: ExecState; private gasLimit; private code; private _stack; private _len; private mem; readonly logs: Log[]; private stop; private _onResult; private opSpy; private _onMemChange; private _onStartCall; private _onEndCall; private _onLog; private notifyMemChanged; private run; private lastReturndata; private knownSequence; gas: bigint; get contractName(): string; get contractAbi(): utils.Interface | undefined; get contractAddress(): bigint; constructor(state: ExecState, gasLimit: bigint, code: CompiledCode); execute(): Promise; copyStack(): readonly bigint[]; get gasSpent(): bigint; dumpStack(): string[]; dumpCalldata(): string[]; dumpMemory(): string[]; private spyOps; watch(handler: (opcode: number, opName: string, paddedOpName: string, opSpy: string[], knownSeq: string | null) => any): void; onMemChange(fn: (bytes: () => number[]) => void): void; onStartingCall(fn: OnStartingCall): void; onEndingCall(fn: OnEndedCall): void; onLog(fn: OnLog): void; onResult(handler: (ret: StopReason) => void | Promise): void; popN(num: number): bigint[]; pop(): bigint; popAsNum(): number; popAsBool(): boolean; startKnownSequence(seq: string): void; endKnownSequence(): void; swap(position: number): void; dup(position: number): void; push(value: bigint): void; pushBool(elt: boolean): void; decrementGas(num: number | bigint): void; op_stop(): void; op_add(): void; op_mul(): void; op_sub(): void; op_div(): void; op_sdiv(): void; op_mod(): void; op_smod(): void; op_addmod(): void; op_mulmod(): void; op_exp(): void; op_signextend(): void; op_unused(): void; op_lt(): void; op_gt(): void; op_slt(): void; op_sgt(): void; op_eq(): void; op_iszero(): void; op_and(): void; op_or(): void; op_xor(): void; op_not(): void; op_byte(): void; op_shl(): void; op_shr(): void; op_sar(): void; op_sha3(): void; op_address(): void; op_balance(): Promise; op_origin(): void; op_caller(): void; op_callvalue(): void; op_calldataload(): void; op_calldatasize(): void; op_calldatacopy(): void; op_codesize(): void; op_codecopy(): void; private copyDataToMem; op_gasprice(): void; op_extcodesize(): Promise; op_extcodecopy(): void; op_returndatasize(): void; op_returndatacopy(): void; op_extcodehash(): Promise; op_blockhash(): void; op_coinbase(): void; op_timestamp(): Promise; op_number(): Promise; op_difficulty(): void; op_gaslimit(): void; op_chainid(): Promise; op_selfbalance(): Promise; op_basefee(): void; op_blobhash(): void; op_blobbasefee(): void; op_pop(): void; op_mload(): void; op_mstore(): void; op_mstore8(): void; op_sload(): Promise; op_sstore(): void; op_jump(): void; op_jumpi(): void; op_pc(num: number): void; op_msize(): void; op_gas(): void; op_jumpdest(): void; op_tload(): void; op_tstore(): void; op_mcopy(): void; private doOpPush; op_push0(num: number): void; op_push1(num: number): void; op_push2(data: number[]): void; op_push3(data: number[]): void; op_push4(data: number[]): void; op_push5(data: number[]): void; op_push6(data: number[]): void; op_push7(data: number[]): void; op_push8(data: number[]): void; op_push9(data: number[]): void; op_push10(data: number[]): void; op_push11(data: number[]): void; op_push12(data: number[]): void; op_push13(data: number[]): void; op_push14(data: number[]): void; op_push15(data: number[]): void; op_push16(data: number[]): void; op_push17(data: number[]): void; op_push18(data: number[]): void; op_push19(data: number[]): void; op_push20(data: number[]): void; op_push21(data: number[]): void; op_push22(data: number[]): void; op_push23(data: number[]): void; op_push24(data: number[]): void; op_push25(data: number[]): void; op_push26(data: number[]): void; op_push27(data: number[]): void; op_push28(data: number[]): void; op_push29(data: number[]): void; op_push30(data: number[]): void; op_push31(data: number[]): void; op_push32(data: number[]): void; op_dup1(): void; op_dup2(): void; op_dup3(): void; op_dup4(): void; op_dup5(): void; op_dup6(): void; op_dup7(): void; op_dup8(): void; op_dup9(): void; op_dup10(): void; op_dup11(): void; op_dup12(): void; op_dup13(): void; op_dup14(): void; op_dup15(): void; op_dup16(): void; op_swap1(): void; op_swap2(): void; op_swap3(): void; op_swap4(): void; op_swap5(): void; op_swap6(): void; op_swap7(): void; op_swap8(): void; op_swap9(): void; op_swap10(): void; op_swap11(): void; op_swap12(): void; op_swap13(): void; op_swap14(): void; op_swap15(): void; op_swap16(): void; private getData; op_log0(): void; op_log1(): void; op_log2(): void; op_log3(): void; op_log4(): void; op_create(): void; op_call(): Promise; private setCallResult; op_callcode(): void; op_return(): void; op_delegatecall(): Promise; op_create2(): Promise; doCreate2(salt: bigint, code: Uint8Array, value: bigint): Promise; private computeCreate2Address; op_staticcall(): Promise; op_revert(): void; op_invalid(): void; op_selfdestruct(): void; } export declare type OpFn = ((...args: any[]) => void | Promise) & { isAsync?: boolean; }; export declare const ops: OpFn[];