import type { Block } from '@tevm/block'; import type { ChainOptions } from '@tevm/blockchain'; import type { ConsensusAlgorithm, ConsensusType } from '@tevm/common'; import type { ExecResult, PrecompileInput } from '@tevm/evm'; import type { Filter, TevmNode } from '@tevm/node'; import type { StateRoots, TevmState } from '@tevm/state'; import type { TxPool } from '@tevm/txpool'; import type { Address } from '@tevm/utils'; import type { CallTraceResult, FourbyteTraceResult, Hex, PrestateTraceResult, TraceResult } from '../common/index.js'; import type { GetPath } from '../utils/GetPath.js'; import type { UnionToIntersection } from '../utils/UnionToIntersection.js'; import type { DebugTraceStateFilter } from './DebugParams.js'; /** * Result from `debug_traceTransaction` */ export type DebugTraceTransactionResult = TTracer extends 'callTracer' ? CallTraceResult : TTracer extends 'prestateTracer' ? PrestateTraceResult : TTracer extends '4byteTracer' ? FourbyteTraceResult : TraceResult; /** * Result from `debug_traceCall` */ export type DebugTraceCallResult = TTracer extends 'callTracer' ? CallTraceResult : TTracer extends 'prestateTracer' ? PrestateTraceResult : TTracer extends '4byteTracer' ? FourbyteTraceResult : TraceResult; /** * Result from `debug_traceBlock`. * * Returns an array of transaction traces */ export type DebugTraceBlockResult = Array<{ /** * Transaction hash */ txHash: Hex; /** * Transaction index in the block */ txIndex: number; /** * Trace result for this transaction */ result: DebugTraceTransactionResult; }>; /** * Complete state object structure */ export type DebugTraceStateObject = { readonly blockchain: { readonly blocksByNumber: Map; readonly initOptions: ChainOptions; }; readonly evm: { readonly opcodes: Map; readonly precompiles: Map Promise | ExecResult>; readonly common: { readonly eips: number[]; readonly hardfork: string; readonly consensus: { readonly algorithm: string | ConsensusAlgorithm; readonly type: string | ConsensusType; }; }; }; readonly node: { readonly status: TevmNode['status']; readonly mode: TevmNode['mode']; readonly miningConfig: TevmNode['miningConfig']; readonly filters: Map; readonly impersonatedAccount: Address | undefined; }; readonly pool: { readonly pool: TxPool['pool']; readonly txsByHash: TxPool['txsByHash']; readonly txsByNonce: TxPool['txsByNonce']; readonly txsInNonceOrder: TxPool['txsInNonceOrder']; readonly txsInPool: TxPool['txsInPool']; }; readonly stateManager: { readonly storage: TevmState; readonly stateRoots: StateRoots; }; }; /** * Result from `debug_traceState` */ export type DebugTraceStateResult = TStateFilters['length'] extends 0 ? DebugTraceStateObject : UnionToIntersection<{ [I in keyof TStateFilters]: GetPath; }[keyof TStateFilters]>; //# sourceMappingURL=DebugResult.d.ts.map