hardhat
Version:
Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.
142 lines (126 loc) • 3.42 kB
text/typescript
// TODO: These types should be moved to core, and probably inferred by io-ts
export interface RpcBlockOutput {
difficulty: string;
extraData: string;
gasLimit: string;
gasUsed: string;
hash: string | null;
logsBloom: string;
miner: string;
mixHash: string | null;
nonce: string | null;
number: string | null;
parentHash: string;
receiptsRoot: string;
sha3Uncles: string;
size: string;
stateRoot: string;
timestamp: string;
totalDifficulty: string;
transactions: string[] | RpcTransactionOutput[];
transactionsRoot: string;
uncles: string[];
baseFeePerGas?: string;
withdrawals?: RpcWithdrawalItem[];
withdrawalsRoot?: string;
parentBeaconBlockRoot?: string | null;
blobGasUsed?: string | null;
excessBlobGas?: string | null;
}
export type RpcTransactionOutput =
| LegacyRpcTransactionOutput
| AccessListEIP2930RpcTransactionOutput
| EIP1559RpcTransactionOutput;
interface BaseRpcTransactionOutput {
blockHash: string | null;
blockNumber: string | null;
from: string;
gas: string;
hash: string;
input: string;
nonce: string;
r: string; // This is documented as DATA, but implementations use QUANTITY
s: string; // This is documented as DATA, but implementations use QUANTITY
to: string | null;
transactionIndex: string | null;
v: string;
value: string;
// Only shown if the local hardfork is at least Berlin, or if the (remote) tx has an access list
type?: string;
}
export interface LegacyRpcTransactionOutput extends BaseRpcTransactionOutput {
gasPrice: string;
}
export type RpcAccessListOutput = Array<{
address: string;
storageKeys: string[];
}>;
export interface AccessListEIP2930RpcTransactionOutput
extends BaseRpcTransactionOutput {
gasPrice: string;
accessList?: RpcAccessListOutput;
chainId: string;
}
export interface EIP1559RpcTransactionOutput extends BaseRpcTransactionOutput {
gasPrice: string;
maxFeePerGas: string;
maxPriorityFeePerGas: string;
accessList?: RpcAccessListOutput;
chainId: string;
}
export interface RpcReceiptOutput {
blockHash: string;
blockNumber: string;
contractAddress: string | null;
cumulativeGasUsed: string;
from: string;
gasUsed: string;
logs: RpcLogOutput[];
logsBloom: string;
to: string | null;
transactionHash: string;
transactionIndex: string;
// Only present after Byzantium
status?: string;
// Only present before Byzantium
root?: string;
// Only shown if the local hardfork is at least Berlin, or if the (remote) is not a legacy one
type?: string;
// Only shown if the local hardfork is at least London, or if the (remote) is EIP-1559
effectiveGasPrice?: string;
}
export interface RpcLogOutput {
address: string;
blockHash: string | null;
blockNumber: string | null;
data: string;
logIndex: string | null;
removed: boolean;
topics: string[];
transactionHash: string | null;
transactionIndex: string | null;
}
export interface RpcStructLog {
depth: number;
gas: number;
gasCost: number;
op: string;
pc: number;
memory?: string[];
stack?: string[];
storage?: Record<string, string>;
memSize?: number;
error?: object;
}
export interface RpcDebugTraceOutput {
failed: boolean;
gas: number;
returnValue: string;
structLogs: RpcStructLog[];
}
export interface RpcWithdrawalItem {
index: string;
validatorIndex: string;
address: string;
amount: string;
}