ox
Version:
Ethereum Standard Library
65 lines • 2.2 kB
JavaScript
/* eslint-disable jsdoc-js/require-jsdoc, jsdoc-js/require-description, jsdoc-js/require-example */
import * as z_Address from './Address.js';
import * as z_Hex from './Hex.js';
import * as z_Log from './Log.js';
import * as z_Number from './Number.js';
import * as z_Uint from './Uint.js';
import * as z from 'zod/mini';
const fromRpcStatus = {
'0x0': 'reverted',
'0x1': 'success',
};
const toRpcStatus = {
reverted: '0x0',
success: '0x1',
};
const fromRpcType = {
'0x0': 'legacy',
'0x1': 'eip2930',
'0x2': 'eip1559',
'0x3': 'eip4844',
'0x4': 'eip7702',
};
const toRpcType = {
legacy: '0x0',
eip2930: '0x1',
eip1559: '0x2',
eip4844: '0x3',
eip7702: '0x4',
};
/** Transaction receipt status schema. */
export const Status = z.codec(z.union([z.literal('0x0'), z.literal('0x1')]), z.union([z.literal('reverted'), z.literal('success')]), {
decode: (value) => fromRpcStatus[value],
encode: (value) => toRpcStatus[value],
});
/** Transaction receipt type schema. */
export const Type = z.codec(z.string(), z.string(), {
decode: (value) => fromRpcType[value] ?? value,
encode: (value) => toRpcType[value] ?? value,
});
/** Transaction receipt schema. */
export const TransactionReceipt = z.object(fields(z_Uint.Uint, z_Number.Number, z_Log.Log));
/** Encode-only transaction receipt schema accepting numberish `toRpc` inputs. */
export const TransactionReceiptToRpc = z.object(fields(z_Uint.UintToRpc, z_Number.NumberToRpc, z_Log.LogToRpc));
function fields(uint, num, log) {
return {
blobGasPrice: z.optional(uint),
blobGasUsed: z.optional(uint),
blockHash: z_Hex.Hex,
blockNumber: uint,
contractAddress: z.optional(z.union([z_Address.Address, z.null()])),
cumulativeGasUsed: uint,
effectiveGasPrice: uint,
from: z_Address.Address,
gasUsed: uint,
logs: z.array(log),
logsBloom: z_Hex.Hex,
root: z.optional(z_Hex.Hex),
status: Status,
to: z.union([z_Address.Address, z.null()]),
transactionHash: z_Hex.Hex,
transactionIndex: num,
type: Type,
};
}
//# sourceMappingURL=TransactionReceipt.js.map