UNPKG

ox

Version:

Ethereum Standard Library

90 lines 3.67 kB
/* 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_Transaction from './Transaction.js'; import * as z_Uint from './Uint.js'; import * as z_Withdrawal from './Withdrawal.js'; import * as z from 'zod/mini'; /** Block hash schema. */ export const Hash = z_Hex.Hex; /** Block number schema. */ export const Number = z_Uint.Uint; /** Block tag schema. */ export const Tag = z.union([ z.literal('latest'), z.literal('earliest'), z.literal('pending'), z.literal('safe'), z.literal('finalized'), ]); /** Block identifier schema. */ export const Identifier = z.union([ z.object({ blockNumber: Number, blockHash: z.optional(z.undefined()), requireCanonical: z.optional(z.boolean()), }), z.object({ blockHash: Hash, blockNumber: z.optional(z.undefined()), requireCanonical: z.optional(z.boolean()), }), ]); /** Block schema with transaction hashes. */ export const Block = z.object(blockFields(z.readonly(z.array(z_Hex.Hex)), z_Uint.Uint, z_Withdrawal.Withdrawal)); /** Encode-only block schema (transaction hashes) accepting numberish `toRpc` inputs. */ export const BlockToRpc = z.object(blockFields(z.readonly(z.array(z_Hex.Hex)), z_Uint.UintToRpc, z_Withdrawal.WithdrawalToRpc)); /** Block schema with full transactions. */ export const WithTransactions = z.object(blockFields(z.readonly(z.array(z_Transaction.Transaction)), z_Uint.Uint, z_Withdrawal.Withdrawal)); /** Encode-only block schema (full transactions) accepting numberish `toRpc` inputs. */ export const WithTransactionsToRpc = z.object(blockFields(z.readonly(z.array(z_Transaction.TransactionToRpc)), z_Uint.UintToRpc, z_Withdrawal.WithdrawalToRpc)); /** Pending block schema with transaction hashes. */ export const Pending = z.object(pendingBlockFields(z.readonly(z.array(z_Hex.Hex)), z_Uint.Uint, z_Withdrawal.Withdrawal)); /** Pending block schema with full transactions. */ export const PendingWithTransactions = z.object(pendingBlockFields(z.readonly(z.array(z_Transaction.Pending)), z_Uint.Uint, z_Withdrawal.Withdrawal)); function blockFields(transactions, uint, withdrawal) { return { ...commonFields(transactions, uint, withdrawal), hash: z_Hex.Hex, logsBloom: z_Hex.Hex, nonce: z_Hex.Hex, number: uint, }; } function pendingBlockFields(transactions, uint, withdrawal) { return { ...commonFields(transactions, uint, withdrawal), hash: z.null(), logsBloom: z.null(), nonce: z.null(), number: z.null(), }; } function commonFields(transactions, uint, withdrawal) { return { baseFeePerGas: z.optional(uint), blobGasUsed: z.optional(uint), difficulty: z.optional(uint), excessBlobGas: z.optional(uint), extraData: z.optional(z_Hex.Hex), gasLimit: uint, gasUsed: uint, miner: z_Address.Address, mixHash: z_Hex.Hex, parentBeaconBlockRoot: z.optional(z_Hex.Hex), parentHash: z_Hex.Hex, receiptsRoot: z_Hex.Hex, sealFields: z.optional(z.readonly(z.array(z_Hex.Hex))), sha3Uncles: z_Hex.Hex, size: uint, stateRoot: z_Hex.Hex, timestamp: uint, totalDifficulty: z.optional(uint), transactions, transactionsRoot: z_Hex.Hex, uncles: z.readonly(z.array(z_Hex.Hex)), withdrawals: z.optional(z.readonly(z.array(withdrawal))), withdrawalsRoot: z.optional(z_Hex.Hex), }; } //# sourceMappingURL=Block.js.map