import { describe, expectTypeOf, test } from 'vitest' import { getBlock } from '../../actions/public/getBlock.js' import { getTransaction } from '../../actions/public/getTransaction.js' import { getTransactionReceipt } from '../../actions/public/getTransactionReceipt.js' import { createPublicClient } from '../../clients/createPublicClient.js' import { http } from '../../clients/transports/http.js' import type { Hash } from '../../types/misc.js' import type { RpcBlock } from '../../types/rpc.js' import type { Assign } from '../../types/utils.js' import { optimism } from '../index.js' import { formattersOptimism } from './formatters.js' import type { OptimismRpcBlockOverrides, OptimismRpcTransaction, } from './types.js' describe('block', () => { expectTypeOf(formattersOptimism.block.format).parameter(0).toEqualTypeOf< Assign< Partial, OptimismRpcBlockOverrides & { transactions: `0x${string}`[] | OptimismRpcTransaction[] } > >() }) describe('transaction', () => { expectTypeOf< ReturnType['sourceHash'] >().toEqualTypeOf<`0x${string}` | undefined>() expectTypeOf< ReturnType['mint'] >().toEqualTypeOf() expectTypeOf< ReturnType['isSystemTx'] >().toEqualTypeOf() }) describe('smoke', () => { test('block', async () => { const client = createPublicClient({ chain: optimism, transport: http(), }) const block = await getBlock(client, { blockNumber: 16645775n, }) expectTypeOf(block.transactions).toEqualTypeOf() const block_includeTransactions = await getBlock(client, { blockNumber: 16645775n, includeTransactions: true, }) expectTypeOf( block_includeTransactions.transactions[0].sourceHash, ).toEqualTypeOf<`0x${string}` | undefined>() expectTypeOf( block_includeTransactions.transactions[0].type === 'deposit' && block_includeTransactions.transactions[0].sourceHash, ).toEqualTypeOf() expectTypeOf( block_includeTransactions.transactions[0].type === 'eip1559' && block_includeTransactions.transactions[0].sourceHash, ).toEqualTypeOf() }) test('transaction', async () => { const client = createPublicClient({ chain: optimism, transport: http(), }) const transaction = await getTransaction(client, { blockNumber: 16628100n, index: 0, }) expectTypeOf(transaction.type).toEqualTypeOf< 'legacy' | 'eip2930' | 'eip1559' | 'deposit' >() expectTypeOf( transaction.type === 'deposit' && transaction.isSystemTx, ).toEqualTypeOf() expectTypeOf( transaction.type === 'deposit' && transaction.sourceHash, ).toEqualTypeOf() expectTypeOf( transaction.type === 'deposit' && transaction.mint, ).toEqualTypeOf() expectTypeOf( transaction.type === 'eip1559' && transaction.isSystemTx, ).toEqualTypeOf() expectTypeOf( transaction.type === 'eip1559' && transaction.sourceHash, ).toEqualTypeOf() expectTypeOf( transaction.type === 'eip1559' && transaction.mint, ).toEqualTypeOf() }) test('transaction receipt', async () => { const client = createPublicClient({ chain: optimism, transport: http(), }) const transactionReceipt = await getTransactionReceipt(client, { hash: '0x', }) expectTypeOf(transactionReceipt.l1Fee).toEqualTypeOf() expectTypeOf(transactionReceipt.l1FeeScalar).toEqualTypeOf() expectTypeOf(transactionReceipt.l1GasPrice).toEqualTypeOf() expectTypeOf(transactionReceipt.l1GasUsed).toEqualTypeOf() }) })