{"version":3,"file":"block.mjs","names":[],"sources":["../../src/commands/block.ts"],"sourcesContent":["/** Get block info by number */\nimport { defineCommand } from \"citty\";\nimport type { BlockInfo } from \"../core/types.js\";\nimport {\n  failCommand,\n  parseNonNegativeInteger,\n  print,\n  reportCommandError,\n  withSelectedProvider,\n} from \"./shared.js\";\n\nfunction renderBlock(providerName: string, block: Readonly<BlockInfo>): void {\n  print(`[${providerName}] Block #${block.number}`);\n  print(`  Hash: ${block.hash}`);\n  print(`  Timestamp: ${block.timestamp}`);\n  print(`  Miner: ${block.miner}`);\n  print(`  Gas used/limit: ${block.gasUsed} / ${block.gasLimit}`);\n  print(`  Transactions: ${block.txCount}`);\n  if (block.baseFee) print(`  Base fee per gas: ${block.baseFee}`);\n}\n\nexport default defineCommand({\n  meta: {\n    name: \"block\",\n    description: \"Get block info by number\",\n  },\n  args: {\n    number: {\n      type: \"positional\",\n      description: \"Block number\",\n      required: true,\n    },\n    chain: {\n      type: \"string\",\n      alias: \"c\",\n      description: \"Chain\",\n    },\n    provider: {\n      type: \"string\",\n      alias: \"p\",\n      description: \"Provider\",\n    },\n  },\n  async run({ args }) {\n    try {\n      await withSelectedProvider(\n        args.chain as string | undefined,\n        args.provider as string | undefined,\n        \"blockInfo\",\n        async (selected) => {\n          const blockNumber = parseNonNegativeInteger(\n            args.number as string,\n            \"Invalid block number\",\n          );\n          const getBlockInfo = selected.provider.getBlockInfo?.bind(selected.provider);\n          if (!selected.provider.capabilities.blockInfo || !getBlockInfo) {\n            failCommand(`Provider \"${selected.name}\" does not support block info`);\n          }\n          const block = await getBlockInfo(blockNumber, selected.chain);\n          renderBlock(selected.name, block);\n        },\n      );\n    } catch (error) {\n      reportCommandError(error);\n    }\n  },\n});\n"],"mappings":";;AAWA,SAAS,YAAY,cAAsB,OAAkC;CAC3E,MAAM,IAAI,aAAa,WAAW,MAAM,QAAQ;CAChD,MAAM,WAAW,MAAM,MAAM;CAC7B,MAAM,gBAAgB,MAAM,WAAW;CACvC,MAAM,YAAY,MAAM,OAAO;CAC/B,MAAM,qBAAqB,MAAM,QAAQ,KAAK,MAAM,UAAU;CAC9D,MAAM,mBAAmB,MAAM,SAAS;CACxC,IAAI,MAAM,SAAS,MAAM,uBAAuB,MAAM,SAAS;AACjE;AAEA,IAAA,gBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;EACJ,QAAQ;GACN,MAAM;GACN,aAAa;GACb,UAAU;EACZ;EACA,OAAO;GACL,MAAM;GACN,OAAO;GACP,aAAa;EACf;EACA,UAAU;GACR,MAAM;GACN,OAAO;GACP,aAAa;EACf;CACF;CACA,MAAM,IAAI,EAAE,QAAQ;EAClB,IAAI;GACF,MAAM,qBACJ,KAAK,OACL,KAAK,UACL,aACA,OAAO,aAAa;IAClB,MAAM,cAAc,wBAClB,KAAK,QACL,sBACF;IACA,MAAM,eAAe,SAAS,SAAS,cAAc,KAAK,SAAS,QAAQ;IAC3E,IAAI,CAAC,SAAS,SAAS,aAAa,aAAa,CAAC,cAChD,YAAY,aAAa,SAAS,KAAK,8BAA8B;IAEvE,MAAM,QAAQ,MAAM,aAAa,aAAa,SAAS,KAAK;IAC5D,YAAY,SAAS,MAAM,KAAK;GAClC,CACF;EACF,SAAS,OAAO;GACd,mBAAmB,KAAK;EAC1B;CACF;AACF,CAAC"}