@tevm/actions
Version:
A typesafe library for writing forge scripts in typescript
94 lines • 4.03 kB
TypeScript
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, 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' | 'prestateTracer' | undefined = 'callTracer' | 'prestateTracer' | undefined, TDiffMode extends boolean = boolean> = TTracer extends 'callTracer' ? CallTraceResult : TTracer extends 'prestateTracer' ? PrestateTraceResult<TDiffMode> : TraceResult;
/**
* Result from `debug_traceCall`
*/
export type DebugTraceCallResult<TTracer extends 'callTracer' | 'prestateTracer' | undefined = 'callTracer' | 'prestateTracer' | undefined, TDiffMode extends boolean = boolean> = TTracer extends 'callTracer' ? CallTraceResult : TTracer extends 'prestateTracer' ? PrestateTraceResult<TDiffMode> : TraceResult;
/**
* Result from `debug_traceBlock`.
*
* Returns an array of transaction traces
*/
export type DebugTraceBlockResult<TTracer extends 'callTracer' | 'prestateTracer' | undefined = 'callTracer' | 'prestateTracer' | undefined, TDiffMode extends boolean = boolean> = Array<{
/**
* Transaction hash
*/
txHash: Hex;
/**
* Transaction index in the block
*/
txIndex: number;
/**
* Trace result for this transaction
*/
result: DebugTraceTransactionResult<TTracer, TDiffMode>;
}>;
/**
* Complete state object structure
*/
export type DebugTraceStateObject = {
readonly blockchain: {
readonly blocksByNumber: Map<bigint, Block | undefined>;
readonly initOptions: ChainOptions;
};
readonly evm: {
readonly opcodes: Map<number, {
readonly code: number;
readonly name: string;
readonly fullName: string;
readonly fee: number;
readonly feeBigInt: bigint;
readonly isAsync: boolean;
readonly dynamicGas: boolean;
readonly isInvalid: boolean;
}>;
readonly precompiles: Map<string, (input: PrecompileInput) => Promise<ExecResult> | 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<Hex, Filter>;
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 extends readonly DebugTraceStateFilter[] = readonly DebugTraceStateFilter[]> = TStateFilters['length'] extends 0 ? DebugTraceStateObject : UnionToIntersection<{
[I in keyof TStateFilters]: GetPath<DebugTraceStateObject, TStateFilters[I] & string>;
}[keyof TStateFilters]>;
//# sourceMappingURL=DebugResult.d.ts.map