import { describe, expectTypeOf, test } from 'vitest' import { optimism } from '../../chains/index.js' import { createPublicClient, http } from '../../index.js' import type { Hash, Hex } from '../../types/misc.js' import type { Transaction } from '../../types/transaction.js' import type { Prettify } from '../../types/utils.js' import { getBlock } from './getBlock.js' import { publicClient } from '~test/src/utils.js' test('includeTransactions = false', async () => { const block_1 = await getBlock(publicClient) expectTypeOf(block_1.transactions).toEqualTypeOf() const block_2 = await getBlock(publicClient, { includeTransactions: false }) expectTypeOf(block_2.transactions).toEqualTypeOf() }) test('includeTransactions = true', async () => { const block = await getBlock(publicClient, { includeTransactions: true }) expectTypeOf(block.transactions).toEqualTypeOf< Prettify>[] >() }) test('blockTag = "latest" & includeTransactions = true', async () => { const block = await getBlock(publicClient, { includeTransactions: true }) expectTypeOf(block.hash).toEqualTypeOf() expectTypeOf(block.logsBloom).toEqualTypeOf() expectTypeOf(block.nonce).toEqualTypeOf() expectTypeOf(block.number).toEqualTypeOf() expectTypeOf(block.transactions[0].blockHash).toEqualTypeOf() expectTypeOf(block.transactions[0].blockNumber).toEqualTypeOf() expectTypeOf(block.transactions[0].transactionIndex).toEqualTypeOf() }) test('blockTag = "pending" & includeTransactions = true', async () => { const block = await getBlock(publicClient, { blockTag: 'pending', includeTransactions: true, }) expectTypeOf(block.hash).toEqualTypeOf() expectTypeOf(block.logsBloom).toEqualTypeOf() expectTypeOf(block.nonce).toEqualTypeOf() expectTypeOf(block.number).toEqualTypeOf() expectTypeOf(block.transactions).toEqualTypeOf< Prettify>[] >() expectTypeOf(block.transactions[0].blockHash).toEqualTypeOf() expectTypeOf(block.transactions[0].blockNumber).toEqualTypeOf() expectTypeOf(block.transactions[0].transactionIndex).toEqualTypeOf() }) describe('chain w/ formatter', () => { const client = createPublicClient({ chain: optimism, transport: http(), }) test('blockTag = "latest" & includeTransactions = true', async () => { const block = await getBlock(client, { includeTransactions: true }) expectTypeOf(block.hash).toEqualTypeOf() expectTypeOf(block.logsBloom).toEqualTypeOf() expectTypeOf(block.nonce).toEqualTypeOf() expectTypeOf(block.number).toEqualTypeOf() expectTypeOf(block.transactions[0].blockHash).toEqualTypeOf() expectTypeOf(block.transactions[0].blockNumber).toEqualTypeOf() expectTypeOf(block.transactions[0].transactionIndex).toEqualTypeOf() }) test('blockTag = "pending" & includeTransactions = true', async () => { const block = await getBlock(client, { blockTag: 'pending', includeTransactions: true, }) expectTypeOf(block.hash).toEqualTypeOf() expectTypeOf(block.logsBloom).toEqualTypeOf() expectTypeOf(block.nonce).toEqualTypeOf() expectTypeOf(block.number).toEqualTypeOf() expectTypeOf(block.transactions[0].blockHash).toEqualTypeOf() expectTypeOf(block.transactions[0].blockNumber).toEqualTypeOf() expectTypeOf(block.transactions[0].transactionIndex).toEqualTypeOf() }) })