import { Block } from 'ox'
import { describe, expect, test } from 'vp/test'
import { anvilMainnet } from '../../../test/prool.js'

describe('fromRpc', () => {
  test('default', () => {
    const block = Block.fromRpc({
      blobGasUsed: '0x1',
      baseFeePerGas: '0x0',
      difficulty: '0x2d3a678cddba9b',
      excessBlobGas: '0x2',
      extraData: '0x',
      gasLimit: '0x1c9c347',
      gasUsed: '0x0',
      hash: '0xebc3644804e4040c0a74c5a5bbbc6b46a71a5d4010fe0c92ebb2fdf4a43ea5dd',
      logsBloom:
        '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
      miner: '0x0000000000000000000000000000000000000000',
      mixHash:
        '0x0000000000000000000000000000000000000000000000000000000000000000',
      nonce: '0x0000000000000000',
      number: '0xec6fc6',
      parentHash:
        '0xe55516ad8029e53cd32087f14653d851401b05245abb1b2d6ed4ddcc597ac5a6',
      receiptsRoot:
        '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
      sealFields: [
        '0x0000000000000000000000000000000000000000000000000000000000000000',
        '0x0000000000000000',
      ],
      sha3Uncles:
        '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
      size: '0x208',
      stateRoot:
        '0x0000000000000000000000000000000000000000000000000000000000000000',
      timestamp: '0x63198f6f',
      totalDifficulty: '0x1',
      transactions: [],
      transactionsRoot:
        '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
      uncles: [],
      withdrawals: [],
      withdrawalsRoot:
        '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
    })
    expect(block).toMatchInlineSnapshot(`
    {
      "baseFeePerGas": 0n,
      "blobGasUsed": 1n,
      "difficulty": 12730590371363483n,
      "excessBlobGas": 2n,
      "extraData": "0x",
      "gasLimit": 29999943n,
      "gasUsed": 0n,
      "hash": "0xebc3644804e4040c0a74c5a5bbbc6b46a71a5d4010fe0c92ebb2fdf4a43ea5dd",
      "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
      "miner": "0x0000000000000000000000000000000000000000",
      "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "nonce": "0x0000000000000000",
      "number": 15495110n,
      "parentHash": "0xe55516ad8029e53cd32087f14653d851401b05245abb1b2d6ed4ddcc597ac5a6",
      "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
      "sealFields": [
        "0x0000000000000000000000000000000000000000000000000000000000000000",
        "0x0000000000000000",
      ],
      "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
      "size": 520n,
      "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "timestamp": 1662619503n,
      "totalDifficulty": 1n,
      "transactions": [],
      "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
      "uncles": [],
      "withdrawals": [],
      "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
    }
  `)
  })

  test('behavior: null block', () => {
    const block = Block.fromRpc(null)
    expect(block).toBeNull()
  })

  test('behavior: optional totalDifficulty preserved as undefined', () => {
    const block = Block.fromRpc({
      extraData: '0x',
      gasLimit: '0x1c9c347',
      gasUsed: '0x0',
      hash: '0xebc3644804e4040c0a74c5a5bbbc6b46a71a5d4010fe0c92ebb2fdf4a43ea5dd',
      logsBloom: '0x',
      miner: '0x0000000000000000000000000000000000000000',
      mixHash:
        '0x0000000000000000000000000000000000000000000000000000000000000000',
      nonce: '0x0000000000000000',
      number: '0xec6fc6',
      parentHash:
        '0xe55516ad8029e53cd32087f14653d851401b05245abb1b2d6ed4ddcc597ac5a6',
      receiptsRoot:
        '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
      sha3Uncles:
        '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
      size: '0x208',
      stateRoot:
        '0x0000000000000000000000000000000000000000000000000000000000000000',
      timestamp: '0x63198f6f',
      transactions: [],
      transactionsRoot:
        '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
      uncles: [],
    })
    expect(block?.totalDifficulty).toBeUndefined()
  })

  test('behavior: network', async () => {
    const block = await anvilMainnet
      .request({
        method: 'eth_getBlockByNumber',
        params: ['latest', false],
      })
      .then(Block.fromRpc)

    expect(block).toMatchInlineSnapshot(`
      {
        "baseFeePerGas": 8758571930n,
        "blobGasUsed": 0n,
        "difficulty": 0n,
        "excessBlobGas": 0n,
        "extraData": "0x6265617665726275696c642e6f7267",
        "gasLimit": 30000000n,
        "gasUsed": 13655878n,
        "hash": "0x0c3e51fc62e1dd7401c8884882755b72e1c5720d0b01c75443cdfa8a129d3fc9",
        "logsBloom": "0xd123054441c15c9d30998061c8899fbdb40be9b00b9c9b73202d015aef6a92b80e6a1520ca498004de50db02f992518322199054de076a903019e47aa1a8b018a046a6c95d2d39a92c06e33ea9a225aa80c5408964c57f5fe083d5dc8a7051e5e92f4844e244023e90cc74c040236e49c31b9aa023596ec5aa1c0e1458593c036dbe9f7cbaa69538a2ed205c0ae2145e441b1319eb6946a9d82da46e6e9c0ca85f9688c6fa946b844bbdd4cc3f225ce09641d62220214a7cb9744c66340c807013f0315212455a000620a3b27359c8c13e1000130da23e141107d28a4900e1909470a80b03d746114b1596d3a4430b68b4ff3e219bac38d8dfa1680ae4005d4d",
        "miner": "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5",
        "mixHash": "0x7702b2acc3443bd74c0b3ff142414f9d51e4caa0f111d57d319f4d46e21dedf7",
        "nonce": "0x0000000000000000",
        "number": 19868020n,
        "parentBeaconBlockRoot": "0xd472790dc1fd2d1b1cc9e208706266196f261e4c1a74f535d86981670c0d5f99",
        "parentHash": "0xa93b995575bda48d4cf45a4f72593a48a744786b5e32e5ff92a21372f7a60875",
        "receiptsRoot": "0xe2822bc9663118439077ad806cd7a2a1a75bf1d70bf61d901199cf599c46f9d7",
        "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
        "size": 56024n,
        "stateRoot": "0x115fd5eac921e6728825958b2b87da8aaf17edc0085164f11de798f6ed00abbd",
        "timestamp": 1715686979n,
        "totalDifficulty": undefined,
        "transactions": [
          "0x5d374a026007c13e901765497b9164d44822902463efdf7b574b10c476ee2ad6",
          "0x2762a7fb7c973e888edc457a3808d3882b5c8fc4f6c43a082d823319b126b91a",
          "0xe637d86545a9b508b373fdd46cc71682ac4a5dba222d7c9ac01380306cc96cd9",
          "0xecdfec41e9859fa217c5467debc9a5fa95290c3273f0ecf282f802983d2ca105",
          "0x75f544151f040710f96a2c8cd6da6cd7bb60e461bfc9b4f87d015562d9a55328",
          "0x07e609166382b05cd4cfd59764226374af8457a5dc0cea255721e5570cb32844",
          "0x08109ccb2b1609d10cd929594ba3a131d59c7aa6eb174cc7bf578670a8198405",
          "0x932fb264036b15e8a9704501e4f1ae34a9ac7543c498223c3456f03ebbefe221",
          "0x4773aaf55c914947aeefe6c996b961c900bddd82b4e809d47a5f99af22b014ef",
          "0x04d0728690604a7ec930782021704bb5d75d16d2c3330f8ab051348c906c52d4",
          "0x61d5fc3a8aa4f5e802dcd54a7fceaad89a97c873578b845ad12b34a96540aeb7",
          "0xd14bf1505356f83e55d4baffa315e0e9210479dff7486c4164a050c935d5bccf",
          "0x6c4e8a1e9484ad717ef42df12a6cb9655216b6a2f7420f52dc540ed952860fdb",
          "0x1d2361b3ec4fcb498732048e348fec130f15fb7e05187d8878985681c506b32a",
          "0xc3da74a44904c29c9046587cbade10386db5aed500d7ead58335a9757fc64c93",
          "0xc8632c7648b32e86023d8b585145bda62e5f8c160a5e6c8c02ec183297d05d2d",
          "0xb6a79dcd720a72d2ea5728a8e58885304202535b00861113dce00d07bca7f3ab",
          "0xc8b9a208eccabd84320946527cb1df897ec48318c1ca67e5fedc48388152518a",
          "0xd5b0feea2d8e474913d280c45c4a6e365ec2bd8ab09982f0b07a7e6e2e433526",
          "0xd67fa075f7abde07de71273e227856b43373276f18eb1446d1566cfafe896947",
          "0xca96b4905a5854d52f3152dc2f86b1e8ef0891ce82b8a6d0622d4470fa980c03",
          "0xd80b94b3d5e72e1cc74b3acbf6bec79bde51d6341f021a1259fe2e3303a919f4",
          "0x0e034d76d3593f1f07baf2452e337da912dfc06fd61704e658797eaf5c33222e",
          "0x755a7415073e029b231d575f935a10ae657eb30d3aa3edd32fcfc812ba2075b9",
          "0x082bebb8c90bc915b6931d6d135ae7016a41b01e6d07151b5d11d2e3cc15868c",
          "0x5a550298d163c3a6b1ca91412076781462a6e77825a7a34789e514f566a2ddd2",
          "0x7f5523181ea3b7b83577e2de0ff3edf0b7bed050436fd6958274a0a6882a487d",
          "0xc63aa388331f5016643dc4744dc47f0b79ac2dc30f2837f36058959de5c6d97b",
          "0xa1cdde08be62979fb2d51e3d1447e67ef9a72e7e9ad6c70834b6667ab4b25b2f",
          "0xeaf27f121d562cf7d6ba5fe04cb7477c2eae917f6ed0d254c474595334e1e61b",
          "0x4d3a2c0aa20291ec2a3e9663676770bb1cb1c33c8caa7308ec9b0e180df42039",
          "0x1f13065bd8d6bd0ff04592f8216576eb2ce38d766cf1fd4114392b4e622a7658",
          "0x220ce318063ac4496ba1e7946b78fd1574f95518ac920563531b124bbc3ec22d",
          "0x6c258638f3e25d325a1f73075a338ce02e57b4fac1b2a810a544d40b24e8b9f9",
          "0xa2a5fdce0672a32e04908e9a12a683697057855a33da8ab3cfc5275094f270fe",
          "0xfeb465bea0d19e832b87965440a36b3ea1d8bffda29d27ab72bf196f5a3954c0",
          "0x20b39aed43810bfc46a279f91e2814ae5a56906f7b7505c499850f2605c82dac",
          "0xd75f805748cdf37402c13b685d9dd9884ba1c0b0e3189f9f613a3a9ed223dbc8",
          "0x46bb82c63a8a2e29d01360f78d5ee871178847627774756ca6efc614c9710cee",
          "0x37a217624ca5724463612bc0a4f0943a3bf8599a05e9d4dc82da20bb0df79867",
          "0xca8ec3dfca0e43c79a9a32cdd8a01c161a8fbbed07d6f5b4231dc7b4086d1380",
          "0x12f7e01f6efcfb1c56bb3d4bf4358c32df847303c92d4f646996d4c601e1bd2f",
          "0x50a0a2e7abaeee10aa9ec6ca0303a019acd2b09279357a480fd37c2c03e177f1",
          "0x0c0134f6a1f68649f4777c86668ac2c3d348cd5ee9f71adaf5a783a3852a2e1c",
          "0x740fb5ab5762b25c2be2f3590cb0811d74b54dae5e40f52bf1e68c8fe2cb6e92",
          "0xa2218d513e2ca93a8acb3652d638af7be7e62711f48e81bf255fff3cfbe3a0dd",
          "0x413a7f87acffc04ef34261ae47737ab2f5f461d0af5d57269c5f6cdf78275159",
          "0x60d81ea9118a9d8075101f22e09d0646f155f23c2f4b84804f7ffc5afb203a68",
          "0x2ff7f513238717f264521c91bc457fb17800beda940eaf6d7e56b1c866b42c06",
          "0xda6dc1ae732e7ecbcac5765fc442fcee5a3617b5d575f5103b4fd9f706847c07",
          "0xf59ef60c1d9dda81fc22a8e985b6d3e589f512eb8b2518b3511a43908a460294",
          "0x81c6e17337cabd304c329a799b02e02245f37ece12a413f5c49282d18b1883cb",
          "0x18fb9299e78ffe36bfea65442d790288937a4d1d5b69138525dadaa70dc42367",
          "0x9db74bf461bb809717866699fb8b5d6bbe33b5bcc967dec46357331272e20df2",
          "0xc59eefbe4041f7dc7fdf2c86c9cfc0f1706993dcee80de6b27f25489cb8e10a9",
          "0x38b2207a133bfc3aec210fb386a199efb9087d13330fa0f637bfe37df59c312f",
          "0xd35ffbf38934b54a900e35c65c07fc3081993ebf5a55bc67977b73410abc211f",
          "0xa13e7a446c7f3ddaa8555c5d3437e8d827303b152a4dbb09ff01bde01a0585b0",
          "0x0bb1b3eea492459f2796fb9b3f7022417860f3a5450374220c0c9c3bd2e63512",
          "0xd9ebb04da1035f95bf3ed0bd06268f53737001f3f292ac825852875c57a6c4be",
          "0xe07cf18aa356d0134f2e0da6f68de7c9f28af854455fbdd38770b44be98a1dc6",
          "0x9be4c6c6a3c5622fcd0a1bbe13e21b8612eb39932f05b42972edf2ed184804dc",
          "0x9cf9a53f37175b3eba970af4b06a9fa98042e08882b2ed96dd285c0eaaa8e13c",
          "0x23f3b4e0dad22684741df92bba387be4e5c05414aca5bf54383e74a4b24b30eb",
          "0x4dcfcf6353596c9665fd94b7b9281b65e0a94b45f98ddff681db9ffc5c561602",
          "0x460b33043b87067727977ec7daea667bf440f482f0e77ab5a86745832c05d09e",
          "0x2fd8ab214c757b69349f10a86d94ccdae0a2c692f3408ea4d65bf5a58c710166",
          "0x6627f34e22dec201d70e4304375e60b0703a992610487356a7af6812c4ae89f0",
          "0x6a2ac6c7b4f140443ea9190beba68706aa0828055cc0a49c037f6bed4a3b94c9",
          "0xbadc35a3b5eb2524ddea54babbc6a7c531f94c845b499e2773f0d82f347976df",
          "0x258972ea1dced55b6b95ed07085de981786401d4da790000d7bd8739b0132cd9",
          "0x2b70ba122ab93b5b020a3e0ede3e5170d91b2fd8c429c4909b025a68e50a0a2a",
          "0xa1f2796fbf29d6cb19d541bb9e2ac1bdb8ecf4f64e9d4068a77b18325d736be8",
          "0x297b30d9b997e375d6d560c9670449c4ab9fc9e6cbfcfb094c659d053bd74fae",
          "0x4f2058432f7e90bde5ac4661e66dd4ddb4865a31a015b5da7a74f1ed682d4471",
          "0x88777368f2847a5a370cb5c6113b25841987168e1d60eff8f5e622b608c073b1",
          "0x4b6de4690fed6b924865cf234a94b74f8765c969d821bbddeb4333936c558aa9",
          "0x89db01005aa4cd9b60c481763f21dffe39a7ba2da6a4df80e1649fe71952ef70",
          "0x888b2ccb261734919308c792c458dcafbaf5ec09b35ff490b77e55304d8f6352",
          "0x847e03a9a940c74f151694bed14c82fc53eaaae5e4236e7f0525ab438f5e9d77",
          "0x176f3b0b49ee54ec554dc3a4dea00b3d115e48a8c0d5d3c6f328d7da8f6beff7",
          "0x009d634f81d6cbefe083d48d0741ab332f238bf496aafca838095e6fde0b541f",
          "0xaec2cd6a1cf8954187174f4a62c07b021293cac8b69d1b48cd206ba3244292ba",
          "0xc914a43546e51a0d4ab116e8fc86bd639c14b563474c9c247bb406404b6241c3",
          "0xdd7f4c16cc0512e308b521c944e11b852d652652656ba5c30589fbbd4454002d",
          "0x0329301ecb0cca138d687a07c3fc0e13358d10fb73f7ddac636fe1940d45be8b",
          "0x2f569a19dff21bc2674064a636b3f87689f3e0ed0ef69a0d99bbedb5721e154c",
          "0x06f42e2ae50574d560a495411ed504d3ca1c34ff5fe9f6f74a4327a9ada801f5",
          "0x04db2f50573f591543a42ad27ad89efe7182ff286b6d2c75e8787cdfd67682ad",
          "0xcac34907d292c7d1e8e307a3c669e9867977630b6667aa8ed0db0d0cb0e757f8",
          "0xe043631e0d3d42dfacb87783a95d9a7fb6d1b4a6b556ad5ffd9724dfec8a05dd",
          "0x163bd1073a5e99e886ae0ca8a469a58096e9992f772d8cf03c12897bc759ebf9",
          "0xe468530ce156f65bf52574d52c7b55489ae9a4a7bc3df7710e3ef8fd47d72386",
          "0xc19059a3d7e5f89c1bd674b798c5ff3860748acd9ccb7d684785358bc5a12d20",
          "0x73f819dd32e6679910453dafe4976b5724749fcd18407078e46864a22e47181d",
          "0xfe592761d1dc1bd893e0f8fdc548eaa3f5b441fda87ee71826d2d498a19b1f33",
          "0x291c84340609f89adc913f236425e23792af8728f6320f5e67f936384e02debc",
          "0x48aafb002e34c51e578c57e780ef52676301c44ce359c943238e56188c9be970",
          "0xb3790060ee3927e51a8415bf742287ed54fefd32e8e5e0e6e6d8327504f67e3f",
          "0x3fb1be8cec3734f7f261eee9bb67e16f89bd5e3836822cb30b79c3661fbbe00e",
          "0x32ca794db2e8bb3a6ce2fee48506541397112c3deea2dfe46deeae71ee9f663a",
          "0x81dc670fb945eb8c35b00b50f015fd9cef8c4560a855563364d01f2ef4508e14",
          "0xbd6556b6d46cca1b2b17a19a3a59c240b0ef3cf48a64dec4d3998c9cc24c1a8e",
          "0x90ad6135bfdf67e34c8f73238d31cc0986af1cb489bcfe81fc3eee05d9c29b97",
          "0x6e1cb115a90aabc2808bc7322acd7b3c34545f4aa8038f5c6d730da941c2e676",
          "0xf3f3af837c7e33b56008a0c04e8ab247210934cb6f3c5067e3a7a37f3e5dafe1",
          "0xc9d4ceee42f0ec528c1a63eb9d44098fd23beeedba9604f9e083afb2d505fdef",
          "0x17e4dea18b087b93f1215bcfad045ec54713658ebc484fe4e8986a771b0852a9",
          "0xfb649abb7e83c2cd08e1e30f0604d06186e3d34901206b1d4c409b26b0510d08",
          "0xcf248cf3701057459fc2347f9a9c3dc75332df6cfe002a8befe950ec2aa41b8c",
          "0xe355fea96b01d1f58a9ad11787f347ab05da938b8ae8355fb4a4811c1791ddf2",
          "0xf41a9728a3c5beb95bd54d48781fc5989608892c59cdf58545787581d7ef86a3",
          "0x974a1c129883d3d47d8faaae93cb8a0559b095ec5440f2e876b1ee12588be268",
          "0x7902398372de025e2a389ab30720d9219a48e0c843800fe2a117870b8588514e",
          "0x3858c51d5edd299685ce0ac9aa398d572eba7a25afe941580e9ff281f3ef4b96",
          "0x1a1a0c85194c4ceba80a6266fd6cf9977ace734c0bbe36fdb3f3b14fe185dbfc",
          "0xfc0faddbc7dfa5939e91d6759c1a58bc8fb19ee24fb19aa31d05cbf8cada3cf2",
          "0x99a9b35bfa30a6546895c6d134041b1564f7d404693619cf94fd6d5087559c2e",
          "0x9689c75b7fa465187f1723e96ae4a1092f6f6aa86e187882acced16882682e46",
          "0x70c6c50149f0bc6fd7c685bc9fab53dfd3f484a3c9bf206578951684a7e78d22",
          "0x1c2b3e1326bc24046d45e3c626ce5e865e9f0f4807f129994558caeccc7e4c40",
          "0x41491514a58d6db155b09d99c21e935f60aabdcb0b2bfd0ac3c7a66add88c8dc",
          "0x120d2916730adbd56c3a6fd6fd4618af561c81b73952b9f247ebd6fb0d253a01",
          "0xc65bb3d2984276ad902ed5d790cdbc5cfb953d5ff01dd0790532b2214dfb2f78",
          "0xbdf1cf02af245b580cf20f728fddfa39c6eb5b0ed70e0487c1074fbf28ebc0b0",
          "0xcbd578f01e8b5feba2ab69487c979e551c33ce2b73902c63943df9945dd23b9b",
          "0xc8c42876c9f093326fd24262be17af1ec0a1030693f7e4a24201c28b3b90d82c",
          "0x0b8839b2d0aa101cc2e8887c2d20c83d813559e7800f7ad9ce9af8be697a9a18",
          "0xf621df816c070c7f0091dda13b34e6a46a7a86dab6852500351d4f5e2ae9eefe",
          "0x8418a842e94ae25f54f427b389cee45d06da8cd3f55e41be9332c56241d48962",
          "0xac58a960f5db3cc0570a20f8ca307ef444d9a90f630c7b629e66e4313aad45b3",
          "0xf66d09329c4db75279f910ebe6d7a1c643632668a711dfb8069f47cf00d7a57a",
          "0xdcacf0e0951030d0f733cbbb46b5f0b3b45840953525b757001ceb74bae9fa4b",
          "0x941e10e4fde951acfbc184d76a51823b6ab04214b297e7e52bee236d8f66b8b9",
          "0xd1dd9fbed648c9d93f590a91ef9922b6256878a498e61055d8fec739395ce0e9",
          "0xe7eae47cd583cab13d7d684adc6e443ef38d83c7d2120171eecf7b0c9168a77b",
          "0x08a6ff7d42b3056bc571e9c16607b373d37565a71cac95b9a85bf5788f08ea0d",
          "0x3bae2e6ec6af9bbffe37b395df67769b234cdd743bd848764420ff2799ea673c",
          "0xaa0b772f59055d8dfbef446352b2d08fbacd97968643a300e03e520c50ffdcbf",
          "0xd8d29dfd14ab5068e615662b3580d191663f64cc15557873194d7b2718dc0425",
          "0x0561ae8390935eece56ca93e3ea5feaa187e3777418fc19134649726c9519f41",
          "0xe3c8dc3145997086caf05a06d4209d10096df09379fce4819f40c13cad005d3e",
          "0x02d87b27d2a9e5cb47a71051ef0ef3202e2a86373807753e8603807e43ecf4f5",
        ],
        "transactionsRoot": "0xec75fee6c90538b6b5d846f5fd25f550591eaccbb366fc393c4a693f8370d0b4",
        "uncles": [],
        "withdrawals": [
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18669565n,
            "index": 45328939,
            "validatorIndex": 221973,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18607647n,
            "index": 45328940,
            "validatorIndex": 221974,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18647628n,
            "index": 45328941,
            "validatorIndex": 221975,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18611031n,
            "index": 45328942,
            "validatorIndex": 221976,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18607324n,
            "index": 45328943,
            "validatorIndex": 221977,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18614402n,
            "index": 45328944,
            "validatorIndex": 221978,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18617029n,
            "index": 45328945,
            "validatorIndex": 221979,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18655967n,
            "index": 45328946,
            "validatorIndex": 221980,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18630613n,
            "index": 45328947,
            "validatorIndex": 221981,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 63545835n,
            "index": 45328948,
            "validatorIndex": 221982,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18617348n,
            "index": 45328949,
            "validatorIndex": 221983,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18621145n,
            "index": 45328950,
            "validatorIndex": 221984,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18623915n,
            "index": 45328951,
            "validatorIndex": 221985,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18611702n,
            "index": 45328952,
            "validatorIndex": 221986,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18591667n,
            "index": 45328953,
            "validatorIndex": 221987,
          },
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": 18583892n,
            "index": 45328954,
            "validatorIndex": 221988,
          },
        ],
        "withdrawalsRoot": "0x3f196863f2d0d52b020c33d1ac2fb588f257ac153baa09fbee2cc1cce42fadef",
      }
    `)
  })

  test('behavior: network (with tx)', async () => {
    const block = await anvilMainnet
      .request({
        method: 'eth_getBlockByNumber',
        params: ['latest', true],
      })
      .then(Block.fromRpc)

    expect(block).toMatchSnapshot()
  })
})

describe('toRpc', () => {
  test('default', () => {
    const block = Block.toRpc(
      {
        baseFeePerGas: 0n,
        blobGasUsed: 1n,
        difficulty: 12730590371363483n,
        excessBlobGas: 2n,
        extraData: '0x',
        gasLimit: 29999943n,
        gasUsed: 0n,
        hash: '0xebc3644804e4040c0a74c5a5bbbc6b46a71a5d4010fe0c92ebb2fdf4a43ea5dd',
        logsBloom:
          '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
        miner: '0x0000000000000000000000000000000000000000',
        mixHash:
          '0x0000000000000000000000000000000000000000000000000000000000000000',
        nonce: '0x0000000000000000',
        number: 15495110n,
        parentBeaconBlockRoot: undefined,
        parentHash:
          '0xe55516ad8029e53cd32087f14653d851401b05245abb1b2d6ed4ddcc597ac5a6',
        receiptsRoot:
          '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
        sealFields: [
          '0x0000000000000000000000000000000000000000000000000000000000000000',
          '0x0000000000000000',
        ],
        sha3Uncles:
          '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
        size: 520n,
        stateRoot:
          '0x0000000000000000000000000000000000000000000000000000000000000000',
        timestamp: 1662619503n,
        totalDifficulty: 1n,
        transactions: [
          {
            accessList: [],
            blockHash:
              '0x0c3e51fc62e1dd7401c8884882755b72e1c5720d0b01c75443cdfa8a129d3fc9',
            blockNumber: 19868020n,
            chainId: 1,
            data: '0x030102553e9c493678d8606d6a5ba284643db2110df8230040150000000000000000000000daa0e9d3ba85490000006401ae78736cd615f374d3085123a210448e74fc6393c02aaa39b223fe8d0a0e5c4f27ead9083c756cc202e590f497df75e26b99774030e1592a27c3e54a91dffc8d8c7ad7df808906ea64992a25297e17000000000000000000000000cc3d76219d81b15491f32a217206fda8e0f4982a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ae78736cd615f374d3085123a210448e74fc6393000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000c5abae0c91f1ee00000000000000000000000000000000000000000000000000c9c9d12f33719d8a8000000000000000000000e647457cf40066434f0e00000000000000000000469be304682ad55c57aeb258f271eeebd9e81277e3b53955fcf42a134c0b947477322c96c6a6a2d43120b9f8a661ff8cee8b27a146962f39b377d71cff6eb12b00000000000000000000000000000000000000000000000000c5abae0c91f1eea80000e1000015000000000000000000000000000000000000d276d30606c1e400000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000010a553e9c493678d8606d6a5ba284643db2110df823000000c1000000540000005400000054000000540000002a0000000000000000fb2809a5314473e1165f6b58018e20ed8f07b840065e8a0000234c66434e4e0000b40cbbf4065e8a00b4fb2809a5314473e1165f6b58018e20ed8f07b840065e8a0000234c66434e4e0000b40cbbf4065e8a00b4fb2809a5314473e1165f6b58018e20ed8f07b84066434e36b09498030ae3416b66dc00007bf29735c20c566e5a0c00000c989d73cf0bd5f83b660000d18bd45f0b94f54a968f0000d61b892b2ad6249011850000a59ca88d5813e693528f0000299aad897099c9fc85ce000038d42b0ecf8a9f8ba9db7b0c989d73cf0bd5f83b660300000000000000000000000000000000000000000000',
            from: '0x0ff82acd0cd11bff58729e7dc9cdcdbe1fcf7a74',
            gas: 690100n,
            hash: '0x6c4e8a1e9484ad717ef42df12a6cb9655216b6a2f7420f52dc540ed952860fdb',
            input:
              '0x030102553e9c493678d8606d6a5ba284643db2110df8230040150000000000000000000000daa0e9d3ba85490000006401ae78736cd615f374d3085123a210448e74fc6393c02aaa39b223fe8d0a0e5c4f27ead9083c756cc202e590f497df75e26b99774030e1592a27c3e54a91dffc8d8c7ad7df808906ea64992a25297e17000000000000000000000000cc3d76219d81b15491f32a217206fda8e0f4982a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ae78736cd615f374d3085123a210448e74fc6393000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000c5abae0c91f1ee00000000000000000000000000000000000000000000000000c9c9d12f33719d8a8000000000000000000000e647457cf40066434f0e00000000000000000000469be304682ad55c57aeb258f271eeebd9e81277e3b53955fcf42a134c0b947477322c96c6a6a2d43120b9f8a661ff8cee8b27a146962f39b377d71cff6eb12b00000000000000000000000000000000000000000000000000c5abae0c91f1eea80000e1000015000000000000000000000000000000000000d276d30606c1e400000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000010a553e9c493678d8606d6a5ba284643db2110df823000000c1000000540000005400000054000000540000002a0000000000000000fb2809a5314473e1165f6b58018e20ed8f07b840065e8a0000234c66434e4e0000b40cbbf4065e8a00b4fb2809a5314473e1165f6b58018e20ed8f07b840065e8a0000234c66434e4e0000b40cbbf4065e8a00b4fb2809a5314473e1165f6b58018e20ed8f07b84066434e36b09498030ae3416b66dc00007bf29735c20c566e5a0c00000c989d73cf0bd5f83b660000d18bd45f0b94f54a968f0000d61b892b2ad6249011850000a59ca88d5813e693528f0000299aad897099c9fc85ce000038d42b0ecf8a9f8ba9db7b0c989d73cf0bd5f83b660300000000000000000000000000000000000000000000',
            maxFeePerGas: 10483885608n,
            maxPriorityFeePerGas: 10483885608n,
            nonce: 5605n,
            r: '0x6b55b361fe0329871a1654ba2c6bf4174aa8cffaa69dc912e36f2b5a722ec9a3',
            s: '0x37739460ab0ca1c2007b48d1442601ac1bae40957ceaf7212966f857af6fb8c9',
            to: '0xd42b0ecf8a9f8ba9db7b0c989d73cf0bd5f83b66',
            transactionIndex: 12,
            type: 'eip1559',
            v: 27,
            value: 21n,
            yParity: 0,
          },
        ],
        transactionsRoot:
          '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
        uncles: [],
        withdrawals: [
          {
            address: '0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f',
            amount: 18611031n,
            index: 45328942,
            validatorIndex: 221976,
          },
        ],
        withdrawalsRoot:
          '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
      },
      { includeTransactions: true },
    )
    expect(block).toMatchInlineSnapshot(`
      {
        "baseFeePerGas": "0x0",
        "blobGasUsed": "0x1",
        "difficulty": "0x2d3a678cddba9b",
        "excessBlobGas": "0x2",
        "extraData": "0x",
        "gasLimit": "0x1c9c347",
        "gasUsed": "0x0",
        "hash": "0xebc3644804e4040c0a74c5a5bbbc6b46a71a5d4010fe0c92ebb2fdf4a43ea5dd",
        "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "miner": "0x0000000000000000000000000000000000000000",
        "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "nonce": "0x0000000000000000",
        "number": "0xec6fc6",
        "parentBeaconBlockRoot": undefined,
        "parentHash": "0xe55516ad8029e53cd32087f14653d851401b05245abb1b2d6ed4ddcc597ac5a6",
        "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
        "sealFields": [
          "0x0000000000000000000000000000000000000000000000000000000000000000",
          "0x0000000000000000",
        ],
        "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
        "size": "0x208",
        "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "timestamp": "0x63198f6f",
        "totalDifficulty": "0x1",
        "transactions": [
          {
            "accessList": [],
            "blockHash": "0x0c3e51fc62e1dd7401c8884882755b72e1c5720d0b01c75443cdfa8a129d3fc9",
            "blockNumber": "0x12f2974",
            "chainId": "0x1",
            "from": "0x0ff82acd0cd11bff58729e7dc9cdcdbe1fcf7a74",
            "gas": "0xa87b4",
            "hash": "0x6c4e8a1e9484ad717ef42df12a6cb9655216b6a2f7420f52dc540ed952860fdb",
            "input": "0x030102553e9c493678d8606d6a5ba284643db2110df8230040150000000000000000000000daa0e9d3ba85490000006401ae78736cd615f374d3085123a210448e74fc6393c02aaa39b223fe8d0a0e5c4f27ead9083c756cc202e590f497df75e26b99774030e1592a27c3e54a91dffc8d8c7ad7df808906ea64992a25297e17000000000000000000000000cc3d76219d81b15491f32a217206fda8e0f4982a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ae78736cd615f374d3085123a210448e74fc6393000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000c5abae0c91f1ee00000000000000000000000000000000000000000000000000c9c9d12f33719d8a8000000000000000000000e647457cf40066434f0e00000000000000000000469be304682ad55c57aeb258f271eeebd9e81277e3b53955fcf42a134c0b947477322c96c6a6a2d43120b9f8a661ff8cee8b27a146962f39b377d71cff6eb12b00000000000000000000000000000000000000000000000000c5abae0c91f1eea80000e1000015000000000000000000000000000000000000d276d30606c1e400000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000010a553e9c493678d8606d6a5ba284643db2110df823000000c1000000540000005400000054000000540000002a0000000000000000fb2809a5314473e1165f6b58018e20ed8f07b840065e8a0000234c66434e4e0000b40cbbf4065e8a00b4fb2809a5314473e1165f6b58018e20ed8f07b840065e8a0000234c66434e4e0000b40cbbf4065e8a00b4fb2809a5314473e1165f6b58018e20ed8f07b84066434e36b09498030ae3416b66dc00007bf29735c20c566e5a0c00000c989d73cf0bd5f83b660000d18bd45f0b94f54a968f0000d61b892b2ad6249011850000a59ca88d5813e693528f0000299aad897099c9fc85ce000038d42b0ecf8a9f8ba9db7b0c989d73cf0bd5f83b660300000000000000000000000000000000000000000000",
            "maxFeePerGas": "0x270e36628",
            "maxPriorityFeePerGas": "0x270e36628",
            "nonce": "0x15e5",
            "r": "0x6b55b361fe0329871a1654ba2c6bf4174aa8cffaa69dc912e36f2b5a722ec9a3",
            "s": "0x37739460ab0ca1c2007b48d1442601ac1bae40957ceaf7212966f857af6fb8c9",
            "to": "0xd42b0ecf8a9f8ba9db7b0c989d73cf0bd5f83b66",
            "transactionIndex": "0xc",
            "type": "0x2",
            "v": "0x1b",
            "value": "0x15",
            "yParity": "0x0",
          },
        ],
        "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
        "uncles": [],
        "withdrawals": [
          {
            "address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
            "amount": "0x11bfb57",
            "index": "0x2b3aa2e",
            "validatorIndex": "0x36318",
          },
        ],
        "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
      }
    `)
  })

  test('numberish inputs', () => {
    const input = {
      extraData: '0x',
      hash: '0xebc3644804e4040c0a74c5a5bbbc6b46a71a5d4010fe0c92ebb2fdf4a43ea5dd',
      logsBloom:
        '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
      miner: '0x0000000000000000000000000000000000000000',
      mixHash:
        '0x0000000000000000000000000000000000000000000000000000000000000000',
      nonce: '0x0000000000000000',
      parentBeaconBlockRoot: undefined,
      parentHash:
        '0xe55516ad8029e53cd32087f14653d851401b05245abb1b2d6ed4ddcc597ac5a6',
      receiptsRoot:
        '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
      sealFields: [
        '0x0000000000000000000000000000000000000000000000000000000000000000',
        '0x0000000000000000',
      ],
      sha3Uncles:
        '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
      stateRoot:
        '0x0000000000000000000000000000000000000000000000000000000000000000',
      transactions: [],
      transactionsRoot:
        '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
      uncles: [],
      withdrawalsRoot:
        '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
    } satisfies Partial<Parameters<typeof Block.toRpc>[0]>
    const fromBigint = Block.toRpc({
      ...input,
      baseFeePerGas: 1n,
      blobGasUsed: 2n,
      difficulty: 3n,
      excessBlobGas: 4n,
      gasLimit: 5n,
      gasUsed: 6n,
      number: 7n,
      size: 8n,
      timestamp: 9n,
      totalDifficulty: 10n,
      withdrawals: [
        {
          address: '0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f',
          amount: 11n,
          index: 12,
          validatorIndex: 13,
        },
      ],
    })
    const fromNumber = Block.toRpc({
      ...input,
      baseFeePerGas: 1,
      blobGasUsed: 2,
      difficulty: 3,
      excessBlobGas: 4,
      gasLimit: 5,
      gasUsed: 6,
      number: 7,
      size: 8,
      timestamp: 9,
      totalDifficulty: 10,
      withdrawals: [
        {
          address: '0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f',
          amount: 11,
          index: 12,
          validatorIndex: 13,
        },
      ],
    })
    const fromHex = Block.toRpc({
      ...input,
      baseFeePerGas: '0x1',
      blobGasUsed: '0x2',
      difficulty: '0x3',
      excessBlobGas: '0x4',
      gasLimit: '0x5',
      gasUsed: '0x6',
      number: '0x7',
      size: '0x8',
      timestamp: '0x9',
      totalDifficulty: '0xa',
      withdrawals: [
        {
          address: '0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f',
          amount: '0xb',
          index: '0xc',
          validatorIndex: '0xd',
        },
      ],
    })

    expect(fromBigint).toEqual(fromNumber)
    expect(fromBigint).toEqual(fromHex)
  })

  test('behavior: nullish values', () => {
    const block = Block.toRpc(
      {
        baseFeePerGas: undefined,
        blobGasUsed: undefined,
        difficulty: undefined,
        excessBlobGas: undefined,
        extraData: '0x',
        gasLimit: 0n,
        gasUsed: 0n,
        hash: null,
        logsBloom: null,
        miner: '0x0000000000000000000000000000000000000000',
        mixHash:
          '0x0000000000000000000000000000000000000000000000000000000000000000',
        nonce: null,
        number: null,
        parentBeaconBlockRoot: undefined,
        parentHash:
          '0xe55516ad8029e53cd32087f14653d851401b05245abb1b2d6ed4ddcc597ac5a6',
        receiptsRoot:
          '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
        sealFields: [
          '0x0000000000000000000000000000000000000000000000000000000000000000',
          '0x0000000000000000',
        ],
        sha3Uncles:
          '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
        size: 0n,
        stateRoot:
          '0x0000000000000000000000000000000000000000000000000000000000000000',
        timestamp: 0n,
        transactions: [
          '0x6c4e8a1e9484ad717ef42df12a6cb9655216b6a2f7420f52dc540ed952860fdb',
        ],
        transactionsRoot:
          '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
        uncles: [],
        withdrawals: [],
        withdrawalsRoot:
          '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
      },
      { blockTag: 'pending' },
    )
    expect(block).toMatchInlineSnapshot(`
      {
        "baseFeePerGas": undefined,
        "blobGasUsed": undefined,
        "difficulty": undefined,
        "excessBlobGas": undefined,
        "extraData": "0x",
        "gasLimit": "0x0",
        "gasUsed": "0x0",
        "hash": null,
        "logsBloom": null,
        "miner": "0x0000000000000000000000000000000000000000",
        "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "nonce": null,
        "number": null,
        "parentBeaconBlockRoot": undefined,
        "parentHash": "0xe55516ad8029e53cd32087f14653d851401b05245abb1b2d6ed4ddcc597ac5a6",
        "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
        "sealFields": [
          "0x0000000000000000000000000000000000000000000000000000000000000000",
          "0x0000000000000000",
        ],
        "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
        "size": "0x0",
        "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "timestamp": "0x0",
        "totalDifficulty": undefined,
        "transactions": [
          "0x6c4e8a1e9484ad717ef42df12a6cb9655216b6a2f7420f52dc540ed952860fdb",
        ],
        "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
        "uncles": [],
        "withdrawals": [],
        "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
      }
    `)
  })
})

test('exports', () => {
  expect(Object.keys(Block)).toMatchInlineSnapshot(`
    [
      "toRpc",
      "fromRpc",
    ]
  `)
})
