@pufferfinance/puffer-sdk 1.12.2 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/api/puffer-client-helpers.cjs +1 -1
  2. package/dist/api/puffer-client-helpers.cjs.map +1 -1
  3. package/dist/api/puffer-client-helpers.js +70 -65
  4. package/dist/api/puffer-client-helpers.js.map +1 -1
  5. package/dist/api/puffer-client.cjs +1 -1
  6. package/dist/api/puffer-client.cjs.map +1 -1
  7. package/dist/api/puffer-client.d.ts +3 -0
  8. package/dist/api/puffer-client.js +20 -13
  9. package/dist/api/puffer-client.js.map +1 -1
  10. package/dist/{ccip-BO_b9tFc.cjs → ccip-C0xwQhXU.cjs} +2 -2
  11. package/dist/ccip-C0xwQhXU.cjs.map +1 -0
  12. package/dist/{ccip-DLDO0_x2.js → ccip-K-z2PL4P.js} +3 -3
  13. package/dist/ccip-K-z2PL4P.js.map +1 -0
  14. package/dist/chains/constants.cjs +1 -1
  15. package/dist/chains/constants.js +1 -1
  16. package/dist/constants-BcPRVxdH.cjs +9 -0
  17. package/dist/constants-BcPRVxdH.cjs.map +1 -0
  18. package/dist/{constants-BjRNQpT2.js → constants-CH7Tz5jz.js} +745 -694
  19. package/dist/constants-CH7Tz5jz.js.map +1 -0
  20. package/dist/contracts/abis/l1-reward-manager-abis.cjs +1 -1
  21. package/dist/contracts/abis/l1-reward-manager-abis.d.ts +527 -1
  22. package/dist/contracts/abis/l1-reward-manager-abis.js +1 -1
  23. package/dist/contracts/abis/l2-reward-manager-abis.cjs +1 -1
  24. package/dist/contracts/abis/l2-reward-manager-abis.d.ts +1416 -1
  25. package/dist/contracts/abis/l2-reward-manager-abis.js +1 -1
  26. package/dist/contracts/abis/mainnet/Distributor.cjs +2 -0
  27. package/dist/contracts/abis/mainnet/Distributor.cjs.map +1 -0
  28. package/dist/contracts/abis/mainnet/Distributor.d.ts +618 -0
  29. package/dist/contracts/abis/mainnet/Distributor.js +492 -0
  30. package/dist/contracts/abis/mainnet/Distributor.js.map +1 -0
  31. package/dist/contracts/abis/nucleus-accountant-abis.cjs +1 -1
  32. package/dist/contracts/abis/nucleus-accountant-abis.d.ts +2 -1
  33. package/dist/contracts/abis/nucleus-accountant-abis.js +1 -1
  34. package/dist/contracts/abis/nucleus-atomic-queue-abis.cjs +1 -1
  35. package/dist/contracts/abis/nucleus-atomic-queue-abis.d.ts +2 -1
  36. package/dist/contracts/abis/nucleus-atomic-queue-abis.js +1 -1
  37. package/dist/contracts/abis/nucleus-boring-vault-abis.cjs +1 -1
  38. package/dist/contracts/abis/nucleus-boring-vault-abis.d.ts +2 -1
  39. package/dist/contracts/abis/nucleus-boring-vault-abis.js +1 -1
  40. package/dist/contracts/abis/nucleus-teller-abis.cjs +1 -1
  41. package/dist/contracts/abis/nucleus-teller-abis.d.ts +2 -1
  42. package/dist/contracts/abis/nucleus-teller-abis.js +1 -1
  43. package/dist/contracts/abis/puf-locker-abis.cjs +1 -1
  44. package/dist/contracts/abis/puf-locker-abis.d.ts +484 -1
  45. package/dist/contracts/abis/puf-locker-abis.js +1 -1
  46. package/dist/contracts/abis/puffer-depositor-abis.cjs +1 -1
  47. package/dist/contracts/abis/puffer-depositor-abis.d.ts +663 -2
  48. package/dist/contracts/abis/puffer-depositor-abis.js +1 -1
  49. package/dist/contracts/abis/puffer-vault-abis.cjs +1 -1
  50. package/dist/contracts/abis/puffer-vault-abis.d.ts +4 -2
  51. package/dist/contracts/abis/puffer-vault-abis.js +1 -1
  52. package/dist/contracts/abis/puffer-withdrawal-manager-abis.cjs +1 -1
  53. package/dist/contracts/abis/puffer-withdrawal-manager-abis.d.ts +514 -1
  54. package/dist/contracts/abis/puffer-withdrawal-manager-abis.js +1 -1
  55. package/dist/contracts/addresses.cjs +1 -1
  56. package/dist/contracts/addresses.cjs.map +1 -1
  57. package/dist/contracts/addresses.d.ts +7 -13
  58. package/dist/contracts/addresses.js +6 -5
  59. package/dist/contracts/addresses.js.map +1 -1
  60. package/dist/contracts/handlers/carrot-staking-handler.cjs +1 -1
  61. package/dist/contracts/handlers/carrot-staking-handler.js +2 -2
  62. package/dist/contracts/handlers/distributor-handler.cjs +2 -0
  63. package/dist/contracts/handlers/distributor-handler.cjs.map +1 -0
  64. package/dist/contracts/handlers/distributor-handler.js +318 -0
  65. package/dist/contracts/handlers/distributor-handler.js.map +1 -0
  66. package/dist/contracts/handlers/erc20-permit-handler.cjs +1 -1
  67. package/dist/contracts/handlers/erc20-permit-handler.cjs.map +1 -1
  68. package/dist/contracts/handlers/erc20-permit-handler.d.ts +17101 -14898
  69. package/dist/contracts/handlers/erc20-permit-handler.js +3 -3
  70. package/dist/contracts/handlers/erc20-permit-handler.js.map +1 -1
  71. package/dist/contracts/handlers/l1-reward-manager-handler.cjs +1 -1
  72. package/dist/contracts/handlers/l1-reward-manager-handler.js +2 -2
  73. package/dist/contracts/handlers/l2-reward-manager-handler.cjs +1 -1
  74. package/dist/contracts/handlers/l2-reward-manager-handler.js +2 -2
  75. package/dist/contracts/handlers/mtw-carrot-handler.cjs +1 -1
  76. package/dist/contracts/handlers/mtw-carrot-handler.js +2 -2
  77. package/dist/contracts/handlers/nucleus-accountant-handler.cjs +1 -1
  78. package/dist/contracts/handlers/nucleus-accountant-handler.js +1 -1
  79. package/dist/contracts/handlers/nucleus-atomic-queue-handler.cjs +1 -1
  80. package/dist/contracts/handlers/nucleus-atomic-queue-handler.cjs.map +1 -1
  81. package/dist/contracts/handlers/nucleus-atomic-queue-handler.d.ts +7619 -14812
  82. package/dist/contracts/handlers/nucleus-atomic-queue-handler.js +2 -2
  83. package/dist/contracts/handlers/nucleus-atomic-queue-handler.js.map +1 -1
  84. package/dist/contracts/handlers/nucleus-boring-vault-handler.cjs +1 -1
  85. package/dist/contracts/handlers/nucleus-boring-vault-handler.js +2 -2
  86. package/dist/contracts/handlers/nucleus-teller-handler.cjs +1 -1
  87. package/dist/contracts/handlers/nucleus-teller-handler.js +2 -2
  88. package/dist/contracts/handlers/puf-locker-handler.cjs +1 -1
  89. package/dist/contracts/handlers/puf-locker-handler.cjs.map +1 -1
  90. package/dist/contracts/handlers/puf-locker-handler.js +2 -2
  91. package/dist/contracts/handlers/puf-locker-handler.js.map +1 -1
  92. package/dist/contracts/handlers/puffer-depositor-handler.cjs +1 -1
  93. package/dist/contracts/handlers/puffer-depositor-handler.d.ts +11215 -14794
  94. package/dist/contracts/handlers/puffer-depositor-handler.js +2 -2
  95. package/dist/contracts/handlers/puffer-l2-depositor-handler.cjs +1 -1
  96. package/dist/contracts/handlers/puffer-l2-depositor-handler.js +2 -2
  97. package/dist/contracts/handlers/puffer-vault-handler.cjs +1 -1
  98. package/dist/contracts/handlers/puffer-vault-handler.js +2 -2
  99. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.cjs +1 -1
  100. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.js +2 -2
  101. package/dist/contracts/tokens.cjs +1 -1
  102. package/dist/contracts/tokens.js +1 -1
  103. package/dist/contracts/vaults-addresses.cjs +1 -1
  104. package/dist/contracts/vaults-addresses.d.ts +5 -4
  105. package/dist/contracts/vaults-addresses.js +1 -1
  106. package/dist/createWalletClient-DNLhBkOd.js +3289 -0
  107. package/dist/createWalletClient-DNLhBkOd.js.map +1 -0
  108. package/dist/createWalletClient-Di5of07E.cjs +6 -0
  109. package/dist/createWalletClient-Di5of07E.cjs.map +1 -0
  110. package/dist/{getContract-CezEyDf-.js → getContract-6ajhFbP2.js} +2 -2
  111. package/dist/getContract-6ajhFbP2.js.map +1 -0
  112. package/dist/{getContract-3QbyfZBF.cjs → getContract-ChPFzc5y.cjs} +2 -2
  113. package/dist/{getContract-CezEyDf-.js.map → getContract-ChPFzc5y.cjs.map} +1 -1
  114. package/dist/main.cjs +1 -1
  115. package/dist/main.d.ts +1 -0
  116. package/dist/main.js +13 -11
  117. package/dist/main.js.map +1 -1
  118. package/dist/secp256k1-B8plqpXf.cjs +2 -0
  119. package/dist/secp256k1-B8plqpXf.cjs.map +1 -0
  120. package/dist/secp256k1-Ev0s9Yr6.js +1340 -0
  121. package/dist/secp256k1-Ev0s9Yr6.js.map +1 -0
  122. package/dist/utils/version.cjs +1 -1
  123. package/dist/utils/version.js +1 -1
  124. package/dist/writeContract-BatuNuTe.cjs +32 -0
  125. package/dist/writeContract-BatuNuTe.cjs.map +1 -0
  126. package/dist/{writeContract-ChuHpJLC.js → writeContract-CjcOEtWX.js} +822 -763
  127. package/dist/writeContract-CjcOEtWX.js.map +1 -0
  128. package/package.json +15 -15
  129. package/dist/ccip-BO_b9tFc.cjs.map +0 -1
  130. package/dist/ccip-DLDO0_x2.js.map +0 -1
  131. package/dist/constants-BjRNQpT2.js.map +0 -1
  132. package/dist/constants-DA2xUb9r.cjs +0 -9
  133. package/dist/constants-DA2xUb9r.cjs.map +0 -1
  134. package/dist/contracts/handlers/carrot-staking-handler.d.ts +0 -15063
  135. package/dist/contracts/handlers/l1-reward-manager-handler.d.ts +0 -15107
  136. package/dist/contracts/handlers/l2-reward-manager-handler.d.ts +0 -15353
  137. package/dist/contracts/handlers/mtw-carrot-handler.d.ts +0 -15293
  138. package/dist/contracts/handlers/nucleus-accountant-handler.d.ts +0 -15126
  139. package/dist/contracts/handlers/nucleus-boring-vault-handler.d.ts +0 -15284
  140. package/dist/contracts/handlers/nucleus-teller-handler.d.ts +0 -15201
  141. package/dist/contracts/handlers/puf-locker-handler.d.ts +0 -15116
  142. package/dist/contracts/handlers/puffer-l2-depositor-handler.d.ts +0 -14969
  143. package/dist/contracts/handlers/puffer-vault-handler.d.ts +0 -17452
  144. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.d.ts +0 -15111
  145. package/dist/createWalletClient-BuLYysrp.cjs +0 -4
  146. package/dist/createWalletClient-BuLYysrp.cjs.map +0 -1
  147. package/dist/createWalletClient-DNcW-ENe.js +0 -2028
  148. package/dist/createWalletClient-DNcW-ENe.js.map +0 -1
  149. package/dist/getContract-3QbyfZBF.cjs.map +0 -1
  150. package/dist/secp256k1-3OC5y4qp.js +0 -1579
  151. package/dist/secp256k1-3OC5y4qp.js.map +0 -1
  152. package/dist/secp256k1-bcahnPX9.cjs +0 -2
  153. package/dist/secp256k1-bcahnPX9.cjs.map +0 -1
  154. package/dist/writeContract-ChuHpJLC.js.map +0 -1
  155. package/dist/writeContract-D97dSJQe.cjs +0 -32
  156. package/dist/writeContract-D97dSJQe.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"createWalletClient-BuLYysrp.cjs","sources":["../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/errors/eip712.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getEip712Domain.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/addChain.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/uid.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/clients/createClient.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/promise/withDedupe.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/promise/withRetry.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/buildRequest.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/clients/transports/createTransport.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/errors/transport.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/promise/withTimeout.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/rpc/id.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/rpc/http.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/clients/transports/http.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/ens/errors.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/ens/encodedLabelToLabelhash.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/ens/namehash.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/ens/encodeLabelhash.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/ens/labelhash.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/ens/packetToBytes.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/ens/getEnsAddress.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/errors/ens.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/ens/avatar/utils.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/ens/avatar/parseAvatarRecord.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/ens/getEnsText.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/ens/getEnsAvatar.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/ens/getEnsName.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/ens/getEnsResolver.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/createBlockFilter.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/createEventFilter.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/createPendingTransactionFilter.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getBlobBaseFee.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getBlockTransactionCount.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getCode.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/formatters/feeHistory.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getFeeHistory.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getFilterLogs.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/errors/typedData.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/signature/hashTypedData.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/typedData.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/constants/strings.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/signature/toPrefixedMessage.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/signature/hashMessage.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/constants/bytes.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/signature/isErc6492Signature.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/signature/serializeErc6492Signature.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/formatters/proof.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getProof.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getStorageAt.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getTransaction.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getTransactionConfirmations.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/getTransactionReceipt.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/multicall.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/signature/serializeSignature.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/verifyHash.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/verifyMessage.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/verifyTypedData.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/watchBlockNumber.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/waitForTransactionReceipt.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/watchBlocks.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/watchEvent.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/public/watchPendingTransactions.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/siwe/parseSiweMessage.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/utils/siwe/validateSiweMessage.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/siwe/verifySiweMessage.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/clients/decorators/public.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/clients/createPublicClient.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/deployContract.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/getAddresses.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/getPermissions.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/requestAddresses.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/requestPermissions.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/signMessage.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/signTransaction.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/signTypedData.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/switchChain.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/actions/wallet/watchAsset.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/clients/decorators/wallet.js","../node_modules/.pnpm/viem@2.21.55_typescript@5.7.2_zod@3.24.1/node_modules/viem/_esm/clients/createWalletClient.js"],"sourcesContent":["import { BaseError } from './base.js';\nexport class Eip712DomainNotFoundError extends BaseError {\n constructor({ address }) {\n super(`No EIP-712 domain found on contract \"${address}\".`, {\n metaMessages: [\n 'Ensure that:',\n `- The contract is deployed at the address \"${address}\".`,\n '- `eip712Domain()` function exists on the contract.',\n '- `eip712Domain()` function matches signature to ERC-5267 specification.',\n ],\n name: 'Eip712DomainNotFoundError',\n });\n }\n}\n//# sourceMappingURL=eip712.js.map","import { Eip712DomainNotFoundError, } from '../../errors/eip712.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from './readContract.js';\n/**\n * Reads the EIP-712 domain from a contract, based on the ERC-5267 specification.\n *\n * @param client - A {@link Client} instance.\n * @param parameters - The parameters of the action. {@link GetEip712DomainParameters}\n * @returns The EIP-712 domain, fields, and extensions. {@link GetEip712DomainReturnType}\n *\n * @example\n * ```ts\n * import { createPublicClient, http, getEip712Domain } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n *\n * const domain = await getEip712Domain(client, {\n * address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n * })\n * // {\n * // domain: {\n * // name: 'ExampleContract',\n * // version: '1',\n * // chainId: 1,\n * // verifyingContract: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n * // },\n * // fields: '0x0f',\n * // extensions: [],\n * // }\n * ```\n */\nexport async function getEip712Domain(client, parameters) {\n const { address, factory, factoryData } = parameters;\n try {\n const [fields, name, version, chainId, verifyingContract, salt, extensions,] = await getAction(client, readContract, 'readContract')({\n abi,\n address,\n functionName: 'eip712Domain',\n factory,\n factoryData,\n });\n return {\n domain: {\n name,\n version,\n chainId: Number(chainId),\n verifyingContract,\n salt,\n },\n extensions,\n fields,\n };\n }\n catch (e) {\n const error = e;\n if (error.name === 'ContractFunctionExecutionError' &&\n error.cause.name === 'ContractFunctionZeroDataError') {\n throw new Eip712DomainNotFoundError({ address });\n }\n throw error;\n }\n}\nconst abi = [\n {\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', type: 'bytes1' },\n { name: 'name', type: 'string' },\n { name: 'version', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n { name: 'salt', type: 'bytes32' },\n { name: 'extensions', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n];\n//# sourceMappingURL=getEip712Domain.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Adds an EVM chain to the wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/addChain\n * - JSON-RPC Methods: [`eth_addEthereumChain`](https://eips.ethereum.org/EIPS/eip-3085)\n *\n * @param client - Client to use\n * @param parameters - {@link AddChainParameters}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { optimism } from 'viem/chains'\n * import { addChain } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * transport: custom(window.ethereum),\n * })\n * await addChain(client, { chain: optimism })\n */\nexport async function addChain(client, { chain }) {\n const { id, name, nativeCurrency, rpcUrls, blockExplorers } = chain;\n await client.request({\n method: 'wallet_addEthereumChain',\n params: [\n {\n chainId: numberToHex(id),\n chainName: name,\n nativeCurrency,\n rpcUrls: rpcUrls.default.http,\n blockExplorerUrls: blockExplorers\n ? Object.values(blockExplorers).map(({ url }) => url)\n : undefined,\n },\n ],\n }, { dedupe: true, retryCount: 0 });\n}\n//# sourceMappingURL=addChain.js.map","const size = 256;\nlet index = size;\nlet buffer;\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = '';\n index = 0;\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1);\n }\n }\n return buffer.substring(index, index++ + length);\n}\n//# sourceMappingURL=uid.js.map","import { parseAccount, } from '../accounts/utils/parseAccount.js';\nimport { uid } from '../utils/uid.js';\nexport function createClient(parameters) {\n const { batch, cacheTime = parameters.pollingInterval ?? 4_000, ccipRead, key = 'base', name = 'Base Client', pollingInterval = 4_000, type = 'base', } = parameters;\n const chain = parameters.chain;\n const account = parameters.account\n ? parseAccount(parameters.account)\n : undefined;\n const { config, request, value } = parameters.transport({\n chain,\n pollingInterval,\n });\n const transport = { ...config, ...value };\n const client = {\n account,\n batch,\n cacheTime,\n ccipRead,\n chain,\n key,\n name,\n pollingInterval,\n request,\n transport,\n type,\n uid: uid(),\n };\n function extend(base) {\n return (extendFn) => {\n const extended = extendFn(base);\n for (const key in client)\n delete extended[key];\n const combined = { ...base, ...extended };\n return Object.assign(combined, { extend: extend(combined) });\n };\n }\n return Object.assign(client, { extend: extend(client) });\n}\n/**\n * Defines a typed JSON-RPC schema for the client.\n * Note: This is a runtime noop function.\n */\nexport function rpcSchema() {\n return null;\n}\n//# sourceMappingURL=createClient.js.map","import { LruMap } from '../lru.js';\n/** @internal */\nexport const promiseCache = /*#__PURE__*/ new LruMap(8192);\n/** Deduplicates in-flight promises. */\nexport function withDedupe(fn, { enabled = true, id }) {\n if (!enabled || !id)\n return fn();\n if (promiseCache.get(id))\n return promiseCache.get(id);\n const promise = fn().finally(() => promiseCache.delete(id));\n promiseCache.set(id, promise);\n return promise;\n}\n//# sourceMappingURL=withDedupe.js.map","import { wait } from '../wait.js';\nexport function withRetry(fn, { delay: delay_ = 100, retryCount = 2, shouldRetry = () => true, } = {}) {\n return new Promise((resolve, reject) => {\n const attemptRetry = async ({ count = 0 } = {}) => {\n const retry = async ({ error }) => {\n const delay = typeof delay_ === 'function' ? delay_({ count, error }) : delay_;\n if (delay)\n await wait(delay);\n attemptRetry({ count: count + 1 });\n };\n try {\n const data = await fn();\n resolve(data);\n }\n catch (err) {\n if (count < retryCount &&\n (await shouldRetry({ count, error: err })))\n return retry({ error: err });\n reject(err);\n }\n };\n attemptRetry();\n });\n}\n//# sourceMappingURL=withRetry.js.map","import { BaseError } from '../errors/base.js';\nimport { HttpRequestError, } from '../errors/request.js';\nimport { ChainDisconnectedError, InternalRpcError, InvalidInputRpcError, InvalidParamsRpcError, InvalidRequestRpcError, JsonRpcVersionUnsupportedError, LimitExceededRpcError, MethodNotFoundRpcError, MethodNotSupportedRpcError, ParseRpcError, ProviderDisconnectedError, ResourceNotFoundRpcError, ResourceUnavailableRpcError, SwitchChainError, TransactionRejectedRpcError, UnauthorizedProviderError, UnknownRpcError, UnsupportedProviderMethodError, UserRejectedRequestError, } from '../errors/rpc.js';\nimport { stringToHex } from './encoding/toHex.js';\nimport { keccak256 } from './hash/keccak256.js';\nimport { withDedupe } from './promise/withDedupe.js';\nimport { withRetry } from './promise/withRetry.js';\nimport { stringify } from './stringify.js';\nexport function buildRequest(request, options = {}) {\n return async (args, overrideOptions = {}) => {\n const { dedupe = false, retryDelay = 150, retryCount = 3, uid, } = {\n ...options,\n ...overrideOptions,\n };\n const requestId = dedupe\n ? keccak256(stringToHex(`${uid}.${stringify(args)}`))\n : undefined;\n return withDedupe(() => withRetry(async () => {\n try {\n return await request(args);\n }\n catch (err_) {\n const err = err_;\n switch (err.code) {\n // -32700\n case ParseRpcError.code:\n throw new ParseRpcError(err);\n // -32600\n case InvalidRequestRpcError.code:\n throw new InvalidRequestRpcError(err);\n // -32601\n case MethodNotFoundRpcError.code:\n throw new MethodNotFoundRpcError(err, { method: args.method });\n // -32602\n case InvalidParamsRpcError.code:\n throw new InvalidParamsRpcError(err);\n // -32603\n case InternalRpcError.code:\n throw new InternalRpcError(err);\n // -32000\n case InvalidInputRpcError.code:\n throw new InvalidInputRpcError(err);\n // -32001\n case ResourceNotFoundRpcError.code:\n throw new ResourceNotFoundRpcError(err);\n // -32002\n case ResourceUnavailableRpcError.code:\n throw new ResourceUnavailableRpcError(err);\n // -32003\n case TransactionRejectedRpcError.code:\n throw new TransactionRejectedRpcError(err);\n // -32004\n case MethodNotSupportedRpcError.code:\n throw new MethodNotSupportedRpcError(err, {\n method: args.method,\n });\n // -32005\n case LimitExceededRpcError.code:\n throw new LimitExceededRpcError(err);\n // -32006\n case JsonRpcVersionUnsupportedError.code:\n throw new JsonRpcVersionUnsupportedError(err);\n // 4001\n case UserRejectedRequestError.code:\n throw new UserRejectedRequestError(err);\n // 4100\n case UnauthorizedProviderError.code:\n throw new UnauthorizedProviderError(err);\n // 4200\n case UnsupportedProviderMethodError.code:\n throw new UnsupportedProviderMethodError(err);\n // 4900\n case ProviderDisconnectedError.code:\n throw new ProviderDisconnectedError(err);\n // 4901\n case ChainDisconnectedError.code:\n throw new ChainDisconnectedError(err);\n // 4902\n case SwitchChainError.code:\n throw new SwitchChainError(err);\n // CAIP-25: User Rejected Error\n // https://docs.walletconnect.com/2.0/specs/clients/sign/error-codes#rejected-caip-25\n case 5000:\n throw new UserRejectedRequestError(err);\n default:\n if (err_ instanceof BaseError)\n throw err_;\n throw new UnknownRpcError(err);\n }\n }\n }, {\n delay: ({ count, error }) => {\n // If we find a Retry-After header, let's retry after the given time.\n if (error && error instanceof HttpRequestError) {\n const retryAfter = error?.headers?.get('Retry-After');\n if (retryAfter?.match(/\\d/))\n return Number.parseInt(retryAfter) * 1000;\n }\n // Otherwise, let's retry with an exponential backoff.\n return ~~(1 << count) * retryDelay;\n },\n retryCount,\n shouldRetry: ({ error }) => shouldRetry(error),\n }), { enabled: dedupe, id: requestId });\n };\n}\n/** @internal */\nexport function shouldRetry(error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === -1)\n return true; // Unknown error\n if (error.code === LimitExceededRpcError.code)\n return true;\n if (error.code === InternalRpcError.code)\n return true;\n return false;\n }\n if (error instanceof HttpRequestError && error.status) {\n // Forbidden\n if (error.status === 403)\n return true;\n // Request Timeout\n if (error.status === 408)\n return true;\n // Request Entity Too Large\n if (error.status === 413)\n return true;\n // Too Many Requests\n if (error.status === 429)\n return true;\n // Internal Server Error\n if (error.status === 500)\n return true;\n // Bad Gateway\n if (error.status === 502)\n return true;\n // Service Unavailable\n if (error.status === 503)\n return true;\n // Gateway Timeout\n if (error.status === 504)\n return true;\n return false;\n }\n return true;\n}\n//# sourceMappingURL=buildRequest.js.map","import { buildRequest } from '../../utils/buildRequest.js';\nimport { uid as uid_ } from '../../utils/uid.js';\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport({ key, name, request, retryCount = 3, retryDelay = 150, timeout, type, }, value) {\n const uid = uid_();\n return {\n config: {\n key,\n name,\n request,\n retryCount,\n retryDelay,\n timeout,\n type,\n },\n request: buildRequest(request, { retryCount, retryDelay, uid }),\n value,\n };\n}\n//# sourceMappingURL=createTransport.js.map","import { BaseError } from './base.js';\nexport class UrlRequiredError extends BaseError {\n constructor() {\n super('No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.', {\n docsPath: '/docs/clients/intro',\n name: 'UrlRequiredError',\n });\n }\n}\n//# sourceMappingURL=transport.js.map","export function withTimeout(fn, { errorInstance = new Error('timed out'), timeout, signal, }) {\n return new Promise((resolve, reject) => {\n ;\n (async () => {\n let timeoutId;\n try {\n const controller = new AbortController();\n if (timeout > 0) {\n timeoutId = setTimeout(() => {\n if (signal) {\n controller.abort();\n }\n else {\n reject(errorInstance);\n }\n }, timeout); // need to cast because bun globals.d.ts overrides @types/node\n }\n resolve(await fn({ signal: controller?.signal || null }));\n }\n catch (err) {\n if (err?.name === 'AbortError')\n reject(errorInstance);\n reject(err);\n }\n finally {\n clearTimeout(timeoutId);\n }\n })();\n });\n}\n//# sourceMappingURL=withTimeout.js.map","function createIdStore() {\n return {\n current: 0,\n take() {\n return this.current++;\n },\n reset() {\n this.current = 0;\n },\n };\n}\nexport const idCache = /*#__PURE__*/ createIdStore();\n//# sourceMappingURL=id.js.map","import { HttpRequestError, TimeoutError, } from '../../errors/request.js';\nimport { withTimeout, } from '../promise/withTimeout.js';\nimport { stringify } from '../stringify.js';\nimport { idCache } from './id.js';\nexport function getHttpRpcClient(url, options = {}) {\n return {\n async request(params) {\n const { body, onRequest = options.onRequest, onResponse = options.onResponse, timeout = options.timeout ?? 10_000, } = params;\n const fetchOptions = {\n ...(options.fetchOptions ?? {}),\n ...(params.fetchOptions ?? {}),\n };\n const { headers, method, signal: signal_ } = fetchOptions;\n try {\n const response = await withTimeout(async ({ signal }) => {\n const init = {\n ...fetchOptions,\n body: Array.isArray(body)\n ? stringify(body.map((body) => ({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n })))\n : stringify({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n }),\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n method: method || 'POST',\n signal: signal_ || (timeout > 0 ? signal : null),\n };\n const request = new Request(url, init);\n const args = (await onRequest?.(request, init)) ?? { ...init, url };\n const response = await fetch(args.url ?? url, args);\n return response;\n }, {\n errorInstance: new TimeoutError({ body, url }),\n timeout,\n signal: true,\n });\n if (onResponse)\n await onResponse(response);\n let data;\n if (response.headers.get('Content-Type')?.startsWith('application/json'))\n data = await response.json();\n else {\n data = await response.text();\n try {\n data = JSON.parse(data || '{}');\n }\n catch (err) {\n if (response.ok)\n throw err;\n data = { error: data };\n }\n }\n if (!response.ok) {\n throw new HttpRequestError({\n body,\n details: stringify(data.error) || response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n }\n return data;\n }\n catch (err) {\n if (err instanceof HttpRequestError)\n throw err;\n if (err instanceof TimeoutError)\n throw err;\n throw new HttpRequestError({\n body,\n cause: err,\n url,\n });\n }\n },\n };\n}\n//# sourceMappingURL=http.js.map","import { RpcRequestError } from '../../errors/request.js';\nimport { UrlRequiredError, } from '../../errors/transport.js';\nimport { createBatchScheduler } from '../../utils/promise/createBatchScheduler.js';\nimport { getHttpRpcClient, } from '../../utils/rpc/http.js';\nimport { createTransport, } from './createTransport.js';\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n/** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\nurl, config = {}) {\n const { batch, fetchOptions, key = 'http', name = 'HTTP JSON-RPC', onFetchRequest, onFetchResponse, retryDelay, } = config;\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const { batchSize = 1000, wait = 0 } = typeof batch === 'object' ? batch : {};\n const retryCount = config.retryCount ?? retryCount_;\n const timeout = timeout_ ?? config.timeout ?? 10_000;\n const url_ = url || chain?.rpcUrls.default.http[0];\n if (!url_)\n throw new UrlRequiredError();\n const rpcClient = getHttpRpcClient(url_, {\n fetchOptions,\n onRequest: onFetchRequest,\n onResponse: onFetchResponse,\n timeout,\n });\n return createTransport({\n key,\n name,\n async request({ method, params }) {\n const body = { method, params };\n const { schedule } = createBatchScheduler({\n id: url_,\n wait,\n shouldSplitBatch(requests) {\n return requests.length > batchSize;\n },\n fn: (body) => rpcClient.request({\n body,\n }),\n sort: (a, b) => a.id - b.id,\n });\n const fn = async (body) => batch\n ? schedule(body)\n : [\n await rpcClient.request({\n body,\n }),\n ];\n const [{ error, result }] = await fn(body);\n if (error)\n throw new RpcRequestError({\n body,\n error,\n url: url_,\n });\n return result;\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n }, {\n fetchOptions,\n url: url_,\n });\n };\n}\n//# sourceMappingURL=http.js.map","import { panicReasons } from '../../constants/solidity.js';\nimport { BaseError } from '../../errors/base.js';\nimport { ContractFunctionRevertedError } from '../../errors/contract.js';\n/*\n * @description Checks if error is a valid null result UniversalResolver error\n */\nexport function isNullUniversalResolverError(err, callType) {\n if (!(err instanceof BaseError))\n return false;\n const cause = err.walk((e) => e instanceof ContractFunctionRevertedError);\n if (!(cause instanceof ContractFunctionRevertedError))\n return false;\n if (cause.data?.errorName === 'ResolverNotFound')\n return true;\n if (cause.data?.errorName === 'ResolverWildcardNotSupported')\n return true;\n if (cause.data?.errorName === 'ResolverNotContract')\n return true;\n if (cause.data?.errorName === 'ResolverError')\n return true;\n if (cause.data?.errorName === 'HttpError')\n return true;\n // Backwards compatibility for older UniversalResolver contracts\n if (cause.reason?.includes('Wildcard on non-extended resolvers is not supported'))\n return true;\n // No primary name set for address.\n if (callType === 'reverse' && cause.reason === panicReasons[50])\n return true;\n return false;\n}\n//# sourceMappingURL=errors.js.map","import { isHex } from '../data/isHex.js';\nexport function encodedLabelToLabelhash(label) {\n if (label.length !== 66)\n return null;\n if (label.indexOf('[') !== 0)\n return null;\n if (label.indexOf(']') !== 65)\n return null;\n const hash = `0x${label.slice(1, 65)}`;\n if (!isHex(hash))\n return null;\n return hash;\n}\n//# sourceMappingURL=encodedLabelToLabelhash.js.map","import { concat } from '../data/concat.js';\nimport { stringToBytes, toBytes, } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { encodedLabelToLabelhash, } from './encodedLabelToLabelhash.js';\n/**\n * @description Hashes ENS name\n *\n * - Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `namehash`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @example\n * namehash('wevm.eth')\n * '0xf246651c1b9a6b141d19c2604e9a58f567973833990f830d882534a747801359'\n *\n * @link https://eips.ethereum.org/EIPS/eip-137\n */\nexport function namehash(name) {\n let result = new Uint8Array(32).fill(0);\n if (!name)\n return bytesToHex(result);\n const labels = name.split('.');\n // Iterate in reverse order building up hash\n for (let i = labels.length - 1; i >= 0; i -= 1) {\n const hashFromEncodedLabel = encodedLabelToLabelhash(labels[i]);\n const hashed = hashFromEncodedLabel\n ? toBytes(hashFromEncodedLabel)\n : keccak256(stringToBytes(labels[i]), 'bytes');\n result = keccak256(concat([result, hashed]), 'bytes');\n }\n return bytesToHex(result);\n}\n//# sourceMappingURL=namehash.js.map","export function encodeLabelhash(hash) {\n return `[${hash.slice(2)}]`;\n}\n//# sourceMappingURL=encodeLabelhash.js.map","import { stringToBytes, } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { encodedLabelToLabelhash, } from './encodedLabelToLabelhash.js';\n/**\n * @description Hashes ENS label\n *\n * - Since ENS labels prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS labels](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `labelhash`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @example\n * labelhash('eth')\n * '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0'\n */\nexport function labelhash(label) {\n const result = new Uint8Array(32).fill(0);\n if (!label)\n return bytesToHex(result);\n return encodedLabelToLabelhash(label) || keccak256(stringToBytes(label));\n}\n//# sourceMappingURL=labelhash.js.map","import { stringToBytes, } from '../encoding/toBytes.js';\nimport { encodeLabelhash, } from './encodeLabelhash.js';\nimport { labelhash } from './labelhash.js';\n/*\n * @description Encodes a DNS packet into a ByteArray containing a UDP payload.\n *\n * @example\n * packetToBytes('awkweb.eth')\n * '0x0661776b7765620365746800'\n *\n * @see https://docs.ens.domains/resolution/names#dns\n *\n */\nexport function packetToBytes(packet) {\n // strip leading and trailing `.`\n const value = packet.replace(/^\\.|\\.$/gm, '');\n if (value.length === 0)\n return new Uint8Array(1);\n const bytes = new Uint8Array(stringToBytes(value).byteLength + 2);\n let offset = 0;\n const list = value.split('.');\n for (let i = 0; i < list.length; i++) {\n let encoded = stringToBytes(list[i]);\n // if the length is > 255, make the encoded label value a labelhash\n // this is compatible with the universal resolver\n if (encoded.byteLength > 255)\n encoded = stringToBytes(encodeLabelhash(labelhash(list[i])));\n bytes[offset] = encoded.length;\n bytes.set(encoded, offset + 1);\n offset += encoded.length + 1;\n }\n if (bytes.byteLength !== offset + 1)\n return bytes.slice(0, offset + 1);\n return bytes;\n}\n//# sourceMappingURL=packetToBytes.js.map","import { addressResolverAbi, universalResolverResolveAbi, } from '../../constants/abis.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { trim } from '../../utils/data/trim.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js';\nimport { namehash } from '../../utils/ens/namehash.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets address for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAddress\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsAddressParameters}\n * @returns Address for ENS name or `null` if not found. {@link GetEnsAddressReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsAddress, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAddress = await getEnsAddress(client, {\n * name: normalize('wevm.eth'),\n * })\n * // '0xd2135CfB216b74109775236E36d4b433F1DF507B'\n */\nexport async function getEnsAddress(client, { blockNumber, blockTag, coinType, name, gatewayUrls, strict, universalResolverAddress: universalResolverAddress_, }) {\n let universalResolverAddress = universalResolverAddress_;\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n });\n }\n try {\n const functionData = encodeFunctionData({\n abi: addressResolverAbi,\n functionName: 'addr',\n ...(coinType != null\n ? { args: [namehash(name), BigInt(coinType)] }\n : { args: [namehash(name)] }),\n });\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverResolveAbi,\n functionName: 'resolve',\n args: [toHex(packetToBytes(name)), functionData],\n blockNumber,\n blockTag,\n };\n const readContractAction = getAction(client, readContract, 'readContract');\n const res = gatewayUrls\n ? await readContractAction({\n ...readContractParameters,\n args: [...readContractParameters.args, gatewayUrls],\n })\n : await readContractAction(readContractParameters);\n if (res[0] === '0x')\n return null;\n const address = decodeFunctionResult({\n abi: addressResolverAbi,\n args: coinType != null ? [namehash(name), BigInt(coinType)] : undefined,\n functionName: 'addr',\n data: res[0],\n });\n if (address === '0x')\n return null;\n if (trim(address) === '0x00')\n return null;\n return address;\n }\n catch (err) {\n if (strict)\n throw err;\n if (isNullUniversalResolverError(err, 'resolve'))\n return null;\n throw err;\n }\n}\n//# sourceMappingURL=getEnsAddress.js.map","import { BaseError } from './base.js';\nexport class EnsAvatarInvalidMetadataError extends BaseError {\n constructor({ data }) {\n super('Unable to extract image from metadata. The metadata may be malformed or invalid.', {\n metaMessages: [\n '- Metadata must be a JSON object with at least an `image`, `image_url` or `image_data` property.',\n '',\n `Provided data: ${JSON.stringify(data)}`,\n ],\n name: 'EnsAvatarInvalidMetadataError',\n });\n }\n}\nexport class EnsAvatarInvalidNftUriError extends BaseError {\n constructor({ reason }) {\n super(`ENS NFT avatar URI is invalid. ${reason}`, {\n name: 'EnsAvatarInvalidNftUriError',\n });\n }\n}\nexport class EnsAvatarUriResolutionError extends BaseError {\n constructor({ uri }) {\n super(`Unable to resolve ENS avatar URI \"${uri}\". The URI may be malformed, invalid, or does not respond with a valid image.`, { name: 'EnsAvatarUriResolutionError' });\n }\n}\nexport class EnsAvatarUnsupportedNamespaceError extends BaseError {\n constructor({ namespace }) {\n super(`ENS NFT avatar namespace \"${namespace}\" is not supported. Must be \"erc721\" or \"erc1155\".`, { name: 'EnsAvatarUnsupportedNamespaceError' });\n }\n}\n//# sourceMappingURL=ens.js.map","import { readContract, } from '../../../actions/public/readContract.js';\nimport { EnsAvatarInvalidMetadataError, EnsAvatarInvalidNftUriError, EnsAvatarUnsupportedNamespaceError, EnsAvatarUriResolutionError, } from '../../../errors/ens.js';\nconst networkRegex = /(?<protocol>https?:\\/\\/[^\\/]*|ipfs:\\/|ipns:\\/|ar:\\/)?(?<root>\\/)?(?<subpath>ipfs\\/|ipns\\/)?(?<target>[\\w\\-.]+)(?<subtarget>\\/.*)?/;\nconst ipfsHashRegex = /^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\\/(?<target>[\\w\\-.]+))?(?<subtarget>\\/.*)?$/;\nconst base64Regex = /^data:([a-zA-Z\\-/+]*);base64,([^\"].*)/;\nconst dataURIRegex = /^data:([a-zA-Z\\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;\n/** @internal */\nexport async function isImageUri(uri) {\n try {\n const res = await fetch(uri, { method: 'HEAD' });\n // retrieve content type header to check if content is image\n if (res.status === 200) {\n const contentType = res.headers.get('content-type');\n return contentType?.startsWith('image/');\n }\n return false;\n }\n catch (error) {\n // if error is not cors related then fail\n if (typeof error === 'object' && typeof error.response !== 'undefined') {\n return false;\n }\n // fail in NodeJS, since the error is not cors but any other network issue\n // biome-ignore lint/suspicious/noPrototypeBuiltins:\n if (!globalThis.hasOwnProperty('Image'))\n return false;\n // in case of cors, use image api to validate if given url is an actual image\n return new Promise((resolve) => {\n const img = new Image();\n img.onload = () => {\n resolve(true);\n };\n img.onerror = () => {\n resolve(false);\n };\n img.src = uri;\n });\n }\n}\n/** @internal */\nexport function getGateway(custom, defaultGateway) {\n if (!custom)\n return defaultGateway;\n if (custom.endsWith('/'))\n return custom.slice(0, -1);\n return custom;\n}\nexport function resolveAvatarUri({ uri, gatewayUrls, }) {\n const isEncoded = base64Regex.test(uri);\n if (isEncoded)\n return { uri, isOnChain: true, isEncoded };\n const ipfsGateway = getGateway(gatewayUrls?.ipfs, 'https://ipfs.io');\n const arweaveGateway = getGateway(gatewayUrls?.arweave, 'https://arweave.net');\n const networkRegexMatch = uri.match(networkRegex);\n const { protocol, subpath, target, subtarget = '', } = networkRegexMatch?.groups || {};\n const isIPNS = protocol === 'ipns:/' || subpath === 'ipns/';\n const isIPFS = protocol === 'ipfs:/' || subpath === 'ipfs/' || ipfsHashRegex.test(uri);\n if (uri.startsWith('http') && !isIPNS && !isIPFS) {\n let replacedUri = uri;\n if (gatewayUrls?.arweave)\n replacedUri = uri.replace(/https:\\/\\/arweave.net/g, gatewayUrls?.arweave);\n return { uri: replacedUri, isOnChain: false, isEncoded: false };\n }\n if ((isIPNS || isIPFS) && target) {\n return {\n uri: `${ipfsGateway}/${isIPNS ? 'ipns' : 'ipfs'}/${target}${subtarget}`,\n isOnChain: false,\n isEncoded: false,\n };\n }\n if (protocol === 'ar:/' && target) {\n return {\n uri: `${arweaveGateway}/${target}${subtarget || ''}`,\n isOnChain: false,\n isEncoded: false,\n };\n }\n let parsedUri = uri.replace(dataURIRegex, '');\n if (parsedUri.startsWith('<svg')) {\n // if svg, base64 encode\n parsedUri = `data:image/svg+xml;base64,${btoa(parsedUri)}`;\n }\n if (parsedUri.startsWith('data:') || parsedUri.startsWith('{')) {\n return {\n uri: parsedUri,\n isOnChain: true,\n isEncoded: false,\n };\n }\n throw new EnsAvatarUriResolutionError({ uri });\n}\nexport function getJsonImage(data) {\n // validation check for json data, must include one of theses properties\n if (typeof data !== 'object' ||\n (!('image' in data) && !('image_url' in data) && !('image_data' in data))) {\n throw new EnsAvatarInvalidMetadataError({ data });\n }\n return data.image || data.image_url || data.image_data;\n}\nexport async function getMetadataAvatarUri({ gatewayUrls, uri, }) {\n try {\n const res = await fetch(uri).then((res) => res.json());\n const image = await parseAvatarUri({\n gatewayUrls,\n uri: getJsonImage(res),\n });\n return image;\n }\n catch {\n throw new EnsAvatarUriResolutionError({ uri });\n }\n}\nexport async function parseAvatarUri({ gatewayUrls, uri, }) {\n const { uri: resolvedURI, isOnChain } = resolveAvatarUri({ uri, gatewayUrls });\n if (isOnChain)\n return resolvedURI;\n // check if resolvedURI is an image, if it is return the url\n const isImage = await isImageUri(resolvedURI);\n if (isImage)\n return resolvedURI;\n throw new EnsAvatarUriResolutionError({ uri });\n}\nexport function parseNftUri(uri_) {\n let uri = uri_;\n // parse valid nft spec (CAIP-22/CAIP-29)\n // @see: https://github.com/ChainAgnostic/CAIPs/tree/master/CAIPs\n if (uri.startsWith('did:nft:')) {\n // convert DID to CAIP\n uri = uri.replace('did:nft:', '').replace(/_/g, '/');\n }\n const [reference, asset_namespace, tokenID] = uri.split('/');\n const [eip_namespace, chainID] = reference.split(':');\n const [erc_namespace, contractAddress] = asset_namespace.split(':');\n if (!eip_namespace || eip_namespace.toLowerCase() !== 'eip155')\n throw new EnsAvatarInvalidNftUriError({ reason: 'Only EIP-155 supported' });\n if (!chainID)\n throw new EnsAvatarInvalidNftUriError({ reason: 'Chain ID not found' });\n if (!contractAddress)\n throw new EnsAvatarInvalidNftUriError({\n reason: 'Contract address not found',\n });\n if (!tokenID)\n throw new EnsAvatarInvalidNftUriError({ reason: 'Token ID not found' });\n if (!erc_namespace)\n throw new EnsAvatarInvalidNftUriError({ reason: 'ERC namespace not found' });\n return {\n chainID: Number.parseInt(chainID),\n namespace: erc_namespace.toLowerCase(),\n contractAddress: contractAddress,\n tokenID,\n };\n}\nexport async function getNftTokenUri(client, { nft }) {\n if (nft.namespace === 'erc721') {\n return readContract(client, {\n address: nft.contractAddress,\n abi: [\n {\n name: 'tokenURI',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'tokenId', type: 'uint256' }],\n outputs: [{ name: '', type: 'string' }],\n },\n ],\n functionName: 'tokenURI',\n args: [BigInt(nft.tokenID)],\n });\n }\n if (nft.namespace === 'erc1155') {\n return readContract(client, {\n address: nft.contractAddress,\n abi: [\n {\n name: 'uri',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: '_id', type: 'uint256' }],\n outputs: [{ name: '', type: 'string' }],\n },\n ],\n functionName: 'uri',\n args: [BigInt(nft.tokenID)],\n });\n }\n throw new EnsAvatarUnsupportedNamespaceError({ namespace: nft.namespace });\n}\n//# sourceMappingURL=utils.js.map","import { getJsonImage, getMetadataAvatarUri, getNftTokenUri, parseAvatarUri, parseNftUri, resolveAvatarUri, } from './utils.js';\n/*\n * @description Parses an ENS avatar record.\n *\n * @example\n * parseAvatarRecord('eip155:1/erc1155:0xb32979486938aa9694bfc898f35dbed459f44424/10063')\n * 'https://ipfs.io/ipfs/QmSP4nq9fnN9dAiCj42ug9Wa79rqmQerZXZch82VqpiH7U/image.gif'\n *\n * @see https://docs.ens.domains/web/avatars\n *\n */\nexport async function parseAvatarRecord(client, { gatewayUrls, record, }) {\n if (/eip155:/i.test(record))\n return parseNftAvatarUri(client, { gatewayUrls, record });\n return parseAvatarUri({ uri: record, gatewayUrls });\n}\nasync function parseNftAvatarUri(client, { gatewayUrls, record, }) {\n // parse NFT URI into properties\n const nft = parseNftUri(record);\n // fetch tokenURI from the NFT contract\n const nftUri = await getNftTokenUri(client, { nft });\n // resolve the URI from the fetched tokenURI\n const { uri: resolvedNftUri, isOnChain, isEncoded, } = resolveAvatarUri({ uri: nftUri, gatewayUrls });\n // if the resolved URI is on chain, return the data\n if (isOnChain &&\n (resolvedNftUri.includes('data:application/json;base64,') ||\n resolvedNftUri.startsWith('{'))) {\n const encodedJson = isEncoded\n ? // if it is encoded, decode it\n atob(resolvedNftUri.replace('data:application/json;base64,', ''))\n : // if it isn't encoded assume it is a JSON string, but it could be anything (it will error if it is)\n resolvedNftUri;\n const decoded = JSON.parse(encodedJson);\n return parseAvatarUri({ uri: getJsonImage(decoded), gatewayUrls });\n }\n let uriTokenId = nft.tokenID;\n if (nft.namespace === 'erc1155')\n uriTokenId = uriTokenId.replace('0x', '').padStart(64, '0');\n return getMetadataAvatarUri({\n gatewayUrls,\n uri: resolvedNftUri.replace(/(?:0x)?{id}/, uriTokenId),\n });\n}\n//# sourceMappingURL=parseAvatarRecord.js.map","import { textResolverAbi, universalResolverResolveAbi, } from '../../constants/abis.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js';\nimport { namehash } from '../../utils/ens/namehash.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets a text record for specified ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsResolver\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsTextParameters}\n * @returns Address for ENS resolver. {@link GetEnsTextReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsText, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const twitterRecord = await getEnsText(client, {\n * name: normalize('wevm.eth'),\n * key: 'com.twitter',\n * })\n * // 'wevm_dev'\n */\nexport async function getEnsText(client, { blockNumber, blockTag, name, key, gatewayUrls, strict, universalResolverAddress: universalResolverAddress_, }) {\n let universalResolverAddress = universalResolverAddress_;\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n });\n }\n try {\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverResolveAbi,\n functionName: 'resolve',\n args: [\n toHex(packetToBytes(name)),\n encodeFunctionData({\n abi: textResolverAbi,\n functionName: 'text',\n args: [namehash(name), key],\n }),\n ],\n blockNumber,\n blockTag,\n };\n const readContractAction = getAction(client, readContract, 'readContract');\n const res = gatewayUrls\n ? await readContractAction({\n ...readContractParameters,\n args: [...readContractParameters.args, gatewayUrls],\n })\n : await readContractAction(readContractParameters);\n if (res[0] === '0x')\n return null;\n const record = decodeFunctionResult({\n abi: textResolverAbi,\n functionName: 'text',\n data: res[0],\n });\n return record === '' ? null : record;\n }\n catch (err) {\n if (strict)\n throw err;\n if (isNullUniversalResolverError(err, 'resolve'))\n return null;\n throw err;\n }\n}\n//# sourceMappingURL=getEnsText.js.map","import { parseAvatarRecord, } from '../../utils/ens/avatar/parseAvatarRecord.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { getEnsText, } from './getEnsText.js';\n/**\n * Gets the avatar of an ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAvatar\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls [`getEnsText`](https://viem.sh/docs/ens/actions/getEnsText) with `key` set to `'avatar'`.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsAvatarParameters}\n * @returns Avatar URI or `null` if not found. {@link GetEnsAvatarReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsAvatar, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAvatar = await getEnsAvatar(client, {\n * name: normalize('wevm.eth'),\n * })\n * // 'https://ipfs.io/ipfs/Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio'\n */\nexport async function getEnsAvatar(client, { blockNumber, blockTag, assetGatewayUrls, name, gatewayUrls, strict, universalResolverAddress, }) {\n const record = await getAction(client, getEnsText, 'getEnsText')({\n blockNumber,\n blockTag,\n key: 'avatar',\n name,\n universalResolverAddress,\n gatewayUrls,\n strict,\n });\n if (!record)\n return null;\n try {\n return await parseAvatarRecord(client, {\n record,\n gatewayUrls: assetGatewayUrls,\n });\n }\n catch {\n return null;\n }\n}\n//# sourceMappingURL=getEnsAvatar.js.map","import { universalResolverReverseAbi } from '../../constants/abis.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets primary name for specified address.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsName\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `reverse(bytes)` on ENS Universal Resolver Contract to \"reverse resolve\" the address to the primary ENS name.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsNameParameters}\n * @returns Name or `null` if not found. {@link GetEnsNameReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsName } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensName = await getEnsName(client, {\n * address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',\n * })\n * // 'wevm.eth'\n */\nexport async function getEnsName(client, { address, blockNumber, blockTag, gatewayUrls, strict, universalResolverAddress: universalResolverAddress_, }) {\n let universalResolverAddress = universalResolverAddress_;\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n });\n }\n const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`;\n try {\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverReverseAbi,\n functionName: 'reverse',\n args: [toHex(packetToBytes(reverseNode))],\n blockNumber,\n blockTag,\n };\n const readContractAction = getAction(client, readContract, 'readContract');\n const [name, resolvedAddress] = gatewayUrls\n ? await readContractAction({\n ...readContractParameters,\n args: [...readContractParameters.args, gatewayUrls],\n })\n : await readContractAction(readContractParameters);\n if (address.toLowerCase() !== resolvedAddress.toLowerCase())\n return null;\n return name;\n }\n catch (err) {\n if (strict)\n throw err;\n if (isNullUniversalResolverError(err, 'reverse'))\n return null;\n throw err;\n }\n}\n//# sourceMappingURL=getEnsName.js.map","import { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets resolver for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsResolver\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `findResolver(bytes)` on ENS Universal Resolver Contract to retrieve the resolver of an ENS name.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsResolverParameters}\n * @returns Address for ENS resolver. {@link GetEnsResolverReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsResolver, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const resolverAddress = await getEnsResolver(client, {\n * name: normalize('wevm.eth'),\n * })\n * // '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41'\n */\nexport async function getEnsResolver(client, { blockNumber, blockTag, name, universalResolverAddress: universalResolverAddress_, }) {\n let universalResolverAddress = universalResolverAddress_;\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n });\n }\n const [resolverAddress] = await getAction(client, readContract, 'readContract')({\n address: universalResolverAddress,\n abi: [\n {\n inputs: [{ type: 'bytes' }],\n name: 'findResolver',\n outputs: [{ type: 'address' }, { type: 'bytes32' }],\n stateMutability: 'view',\n type: 'function',\n },\n ],\n functionName: 'findResolver',\n args: [toHex(packetToBytes(name))],\n blockNumber,\n blockTag,\n });\n return resolverAddress;\n}\n//# sourceMappingURL=getEnsResolver.js.map","import { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js';\n/**\n * Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new block hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createBlockFilter\n * - JSON-RPC Methods: [`eth_newBlockFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newBlockFilter)\n *\n * @param client - Client to use\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateBlockFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createBlockFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createBlockFilter(client)\n * // { id: \"0x345a6572337856574a76364e457a4366\", type: 'block' }\n */\nexport async function createBlockFilter(client) {\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newBlockFilter',\n });\n const id = await client.request({\n method: 'eth_newBlockFilter',\n });\n return { id, request: getRequest(id), type: 'block' };\n}\n//# sourceMappingURL=createBlockFilter.js.map","import { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js';\n/**\n * Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new events that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createEventFilter\n * - JSON-RPC Methods: [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter)\n *\n * @param client - Client to use\n * @param parameters - {@link CreateEventFilterParameters}\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateEventFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createEventFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createEventFilter(client, {\n * address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',\n * })\n */\nexport async function createEventFilter(client, { address, args, event, events: events_, fromBlock, strict, toBlock, } = {}) {\n const events = events_ ?? (event ? [event] : undefined);\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newFilter',\n });\n let topics = [];\n if (events) {\n const encoded = events.flatMap((event) => encodeEventTopics({\n abi: [event],\n eventName: event.name,\n args,\n }));\n // TODO: Clean up type casting\n topics = [encoded];\n if (event)\n topics = topics[0];\n }\n const id = await client.request({\n method: 'eth_newFilter',\n params: [\n {\n address,\n fromBlock: typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n ...(topics.length ? { topics } : {}),\n },\n ],\n });\n return {\n abi: events,\n args,\n eventName: event ? event.name : undefined,\n fromBlock,\n id,\n request: getRequest(id),\n strict: Boolean(strict),\n toBlock,\n type: 'event',\n };\n}\n//# sourceMappingURL=createEventFilter.js.map","import { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js';\n/**\n * Creates a Filter to listen for new pending transaction hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createPendingTransactionFilter\n * - JSON-RPC Methods: [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter)\n *\n * @param client - Client to use\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateBlockFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createPendingTransactionFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createPendingTransactionFilter(client)\n * // { id: \"0x345a6572337856574a76364e457a4366\", type: 'transaction' }\n */\nexport async function createPendingTransactionFilter(client) {\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newPendingTransactionFilter',\n });\n const id = await client.request({\n method: 'eth_newPendingTransactionFilter',\n });\n return { id, request: getRequest(id), type: 'transaction' };\n}\n//# sourceMappingURL=createPendingTransactionFilter.js.map","/**\n * Returns the base fee per blob gas in wei.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlobBaseFee\n * - JSON-RPC Methods: [`eth_blobBaseFee`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blobBaseFee)\n *\n * @param client - Client to use\n * @returns The blob base fee (in wei). {@link GetBlobBaseFeeReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlobBaseFee } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const blobBaseFee = await getBlobBaseFee(client)\n */\nexport async function getBlobBaseFee(client) {\n const baseFee = await client.request({\n method: 'eth_blobBaseFee',\n });\n return BigInt(baseFee);\n}\n//# sourceMappingURL=getBlobBaseFee.js.map","import { hexToNumber, } from '../../utils/encoding/fromHex.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Returns the number of Transactions at a block number, hash, or tag.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlockTransactionCount\n * - JSON-RPC Methods:\n * - Calls [`eth_getBlockTransactionCountByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber) for `blockNumber` & `blockTag`.\n * - Calls [`eth_getBlockTransactionCountByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash) for `blockHash`.\n *\n * @param client - Client to use\n * @param parameters - {@link GetBlockTransactionCountParameters}\n * @returns The block transaction count. {@link GetBlockTransactionCountReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlockTransactionCount } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const count = await getBlockTransactionCount(client)\n */\nexport async function getBlockTransactionCount(client, { blockHash, blockNumber, blockTag = 'latest', } = {}) {\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n let count;\n if (blockHash) {\n count = await client.request({\n method: 'eth_getBlockTransactionCountByHash',\n params: [blockHash],\n }, { dedupe: true });\n }\n else {\n count = await client.request({\n method: 'eth_getBlockTransactionCountByNumber',\n params: [blockNumberHex || blockTag],\n }, { dedupe: Boolean(blockNumberHex) });\n }\n return hexToNumber(count);\n}\n//# sourceMappingURL=getBlockTransactionCount.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Retrieves the bytecode at an address.\n *\n * - Docs: https://viem.sh/docs/contract/getCode\n * - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode)\n *\n * @param client - Client to use\n * @param parameters - {@link GetCodeParameters}\n * @returns The contract's bytecode. {@link GetCodeReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getCode } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const code = await getCode(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * })\n */\nexport async function getCode(client, { address, blockNumber, blockTag = 'latest' }) {\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n const hex = await client.request({\n method: 'eth_getCode',\n params: [address, blockNumberHex || blockTag],\n }, { dedupe: Boolean(blockNumberHex) });\n if (hex === '0x')\n return undefined;\n return hex;\n}\n//# sourceMappingURL=getCode.js.map","export function formatFeeHistory(feeHistory) {\n return {\n baseFeePerGas: feeHistory.baseFeePerGas.map((value) => BigInt(value)),\n gasUsedRatio: feeHistory.gasUsedRatio,\n oldestBlock: BigInt(feeHistory.oldestBlock),\n reward: feeHistory.reward?.map((reward) => reward.map((value) => BigInt(value))),\n };\n}\n//# sourceMappingURL=feeHistory.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatFeeHistory, } from '../../utils/formatters/feeHistory.js';\n/**\n * Returns a collection of historical gas information.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFeeHistory\n * - JSON-RPC Methods: [`eth_feeHistory`](https://docs.alchemy.com/reference/eth-feehistory)\n *\n * @param client - Client to use\n * @param parameters - {@link GetFeeHistoryParameters}\n * @returns The gas estimate (in wei). {@link GetFeeHistoryReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getFeeHistory } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const feeHistory = await getFeeHistory(client, {\n * blockCount: 4,\n * rewardPercentiles: [25, 75],\n * })\n */\nexport async function getFeeHistory(client, { blockCount, blockNumber, blockTag = 'latest', rewardPercentiles, }) {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined;\n const feeHistory = await client.request({\n method: 'eth_feeHistory',\n params: [\n numberToHex(blockCount),\n blockNumberHex || blockTag,\n rewardPercentiles,\n ],\n }, { dedupe: Boolean(blockNumberHex) });\n return formatFeeHistory(feeHistory);\n}\n//# sourceMappingURL=getFeeHistory.js.map","import { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport { formatLog, } from '../../utils/formatters/log.js';\n/**\n * Returns a list of event logs since the filter was created.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFilterLogs\n * - JSON-RPC Methods: [`eth_getFilterLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterlogs)\n *\n * `getFilterLogs` is only compatible with **event filters**.\n *\n * @param client - Client to use\n * @param parameters - {@link GetFilterLogsParameters}\n * @returns A list of event logs. {@link GetFilterLogsReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createEventFilter, getFilterLogs } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createEventFilter(client, {\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),\n * })\n * const logs = await getFilterLogs(client, { filter })\n */\nexport async function getFilterLogs(_client, { filter, }) {\n const strict = filter.strict ?? false;\n const logs = await filter.request({\n method: 'eth_getFilterLogs',\n params: [filter.id],\n });\n const formattedLogs = logs.map((log) => formatLog(log));\n if (!filter.abi)\n return formattedLogs;\n return parseEventLogs({\n abi: filter.abi,\n logs: formattedLogs,\n strict,\n });\n}\n//# sourceMappingURL=getFilterLogs.js.map","import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nexport class InvalidDomainError extends BaseError {\n constructor({ domain }) {\n super(`Invalid domain \"${stringify(domain)}\".`, {\n metaMessages: ['Must be a valid EIP-712 domain.'],\n });\n }\n}\nexport class InvalidPrimaryTypeError extends BaseError {\n constructor({ primaryType, types, }) {\n super(`Invalid primary type \\`${primaryType}\\` must be one of \\`${JSON.stringify(Object.keys(types))}\\`.`, {\n docsPath: '/api/glossary/Errors#typeddatainvalidprimarytypeerror',\n metaMessages: ['Check that the primary type is a key in `types`.'],\n });\n }\n}\nexport class InvalidStructTypeError extends BaseError {\n constructor({ type }) {\n super(`Struct type \"${type}\" is invalid.`, {\n metaMessages: ['Struct type must not be a Solidity type.'],\n name: 'InvalidStructTypeError',\n });\n }\n}\n//# sourceMappingURL=typedData.js.map","// Implementation forked and adapted from https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-typed-data.ts\nimport { encodeAbiParameters, } from '../abi/encodeAbiParameters.js';\nimport { concat } from '../data/concat.js';\nimport { toHex } from '../encoding/toHex.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { getTypesForEIP712Domain, validateTypedData, } from '../typedData.js';\nexport function hashTypedData(parameters) {\n const { domain = {}, message, primaryType, } = parameters;\n const types = {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n ...parameters.types,\n };\n // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc\n // as we can't statically check this with TypeScript.\n validateTypedData({\n domain,\n message,\n primaryType,\n types,\n });\n const parts = ['0x1901'];\n if (domain)\n parts.push(hashDomain({\n domain,\n types: types,\n }));\n if (primaryType !== 'EIP712Domain')\n parts.push(hashStruct({\n data: message,\n primaryType,\n types: types,\n }));\n return keccak256(concat(parts));\n}\nexport function hashDomain({ domain, types, }) {\n return hashStruct({\n data: domain,\n primaryType: 'EIP712Domain',\n types,\n });\n}\nexport function hashStruct({ data, primaryType, types, }) {\n const encoded = encodeData({\n data,\n primaryType,\n types,\n });\n return keccak256(encoded);\n}\nfunction encodeData({ data, primaryType, types, }) {\n const encodedTypes = [{ type: 'bytes32' }];\n const encodedValues = [hashType({ primaryType, types })];\n for (const field of types[primaryType]) {\n const [type, value] = encodeField({\n types,\n name: field.name,\n type: field.type,\n value: data[field.name],\n });\n encodedTypes.push(type);\n encodedValues.push(value);\n }\n return encodeAbiParameters(encodedTypes, encodedValues);\n}\nfunction hashType({ primaryType, types, }) {\n const encodedHashType = toHex(encodeType({ primaryType, types }));\n return keccak256(encodedHashType);\n}\nexport function encodeType({ primaryType, types, }) {\n let result = '';\n const unsortedDeps = findTypeDependencies({ primaryType, types });\n unsortedDeps.delete(primaryType);\n const deps = [primaryType, ...Array.from(unsortedDeps).sort()];\n for (const type of deps) {\n result += `${type}(${types[type]\n .map(({ name, type: t }) => `${t} ${name}`)\n .join(',')})`;\n }\n return result;\n}\nfunction findTypeDependencies({ primaryType: primaryType_, types, }, results = new Set()) {\n const match = primaryType_.match(/^\\w*/u);\n const primaryType = match?.[0];\n if (results.has(primaryType) || types[primaryType] === undefined) {\n return results;\n }\n results.add(primaryType);\n for (const field of types[primaryType]) {\n findTypeDependencies({ primaryType: field.type, types }, results);\n }\n return results;\n}\nfunction encodeField({ types, name, type, value, }) {\n if (types[type] !== undefined) {\n return [\n { type: 'bytes32' },\n keccak256(encodeData({ data: value, primaryType: type, types })),\n ];\n }\n if (type === 'bytes') {\n const prepend = value.length % 2 ? '0' : '';\n value = `0x${prepend + value.slice(2)}`;\n return [{ type: 'bytes32' }, keccak256(value)];\n }\n if (type === 'string')\n return [{ type: 'bytes32' }, keccak256(toHex(value))];\n if (type.lastIndexOf(']') === type.length - 1) {\n const parsedType = type.slice(0, type.lastIndexOf('['));\n const typeValuePairs = value.map((item) => encodeField({\n name,\n type: parsedType,\n types,\n value: item,\n }));\n return [\n { type: 'bytes32' },\n keccak256(encodeAbiParameters(typeValuePairs.map(([t]) => t), typeValuePairs.map(([, v]) => v))),\n ];\n }\n return [{ type }, value];\n}\n//# sourceMappingURL=hashTypedData.js.map","import { BytesSizeMismatchError } from '../errors/abi.js';\nimport { InvalidAddressError } from '../errors/address.js';\nimport { InvalidDomainError, InvalidPrimaryTypeError, InvalidStructTypeError, } from '../errors/typedData.js';\nimport { isAddress } from './address/isAddress.js';\nimport { size } from './data/size.js';\nimport { numberToHex } from './encoding/toHex.js';\nimport { bytesRegex, integerRegex } from './regex.js';\nimport { hashDomain, } from './signature/hashTypedData.js';\nimport { stringify } from './stringify.js';\nexport function serializeTypedData(parameters) {\n const { domain: domain_, message: message_, primaryType, types, } = parameters;\n const normalizeData = (struct, data_) => {\n const data = { ...data_ };\n for (const param of struct) {\n const { name, type } = param;\n if (type === 'address')\n data[name] = data[name].toLowerCase();\n }\n return data;\n };\n const domain = (() => {\n if (!types.EIP712Domain)\n return {};\n if (!domain_)\n return {};\n return normalizeData(types.EIP712Domain, domain_);\n })();\n const message = (() => {\n if (primaryType === 'EIP712Domain')\n return undefined;\n return normalizeData(types[primaryType], message_);\n })();\n return stringify({ domain, message, primaryType, types });\n}\nexport function validateTypedData(parameters) {\n const { domain, message, primaryType, types } = parameters;\n const validateData = (struct, data) => {\n for (const param of struct) {\n const { name, type } = param;\n const value = data[name];\n const integerMatch = type.match(integerRegex);\n if (integerMatch &&\n (typeof value === 'number' || typeof value === 'bigint')) {\n const [_type, base, size_] = integerMatch;\n // If number cannot be cast to a sized hex value, it is out of range\n // and will throw.\n numberToHex(value, {\n signed: base === 'int',\n size: Number.parseInt(size_) / 8,\n });\n }\n if (type === 'address' && typeof value === 'string' && !isAddress(value))\n throw new InvalidAddressError({ address: value });\n const bytesMatch = type.match(bytesRegex);\n if (bytesMatch) {\n const [_type, size_] = bytesMatch;\n if (size_ && size(value) !== Number.parseInt(size_))\n throw new BytesSizeMismatchError({\n expectedSize: Number.parseInt(size_),\n givenSize: size(value),\n });\n }\n const struct = types[type];\n if (struct) {\n validateReference(type);\n validateData(struct, value);\n }\n }\n };\n // Validate domain types.\n if (types.EIP712Domain && domain) {\n if (typeof domain !== 'object')\n throw new InvalidDomainError({ domain });\n validateData(types.EIP712Domain, domain);\n }\n // Validate message types.\n if (primaryType !== 'EIP712Domain') {\n if (types[primaryType])\n validateData(types[primaryType], message);\n else\n throw new InvalidPrimaryTypeError({ primaryType, types });\n }\n}\nexport function getTypesForEIP712Domain({ domain, }) {\n return [\n typeof domain?.name === 'string' && { name: 'name', type: 'string' },\n domain?.version && { name: 'version', type: 'string' },\n typeof domain?.chainId === 'number' && {\n name: 'chainId',\n type: 'uint256',\n },\n domain?.verifyingContract && {\n name: 'verifyingContract',\n type: 'address',\n },\n domain?.salt && { name: 'salt', type: 'bytes32' },\n ].filter(Boolean);\n}\nexport function domainSeparator({ domain }) {\n return hashDomain({\n domain,\n types: {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n },\n });\n}\n/** @internal */\nfunction validateReference(type) {\n // Struct type must not be a Solidity type.\n if (type === 'address' ||\n type === 'bool' ||\n type === 'string' ||\n type.startsWith('bytes') ||\n type.startsWith('uint') ||\n type.startsWith('int'))\n throw new InvalidStructTypeError({ type });\n}\n//# sourceMappingURL=typedData.js.map","export const presignMessagePrefix = '\\x19Ethereum Signed Message:\\n';\n//# sourceMappingURL=strings.js.map","import { presignMessagePrefix } from '../../constants/strings.js';\nimport { concat } from '../data/concat.js';\nimport { size } from '../data/size.js';\nimport { bytesToHex, stringToHex, } from '../encoding/toHex.js';\nexport function toPrefixedMessage(message_) {\n const message = (() => {\n if (typeof message_ === 'string')\n return stringToHex(message_);\n if (typeof message_.raw === 'string')\n return message_.raw;\n return bytesToHex(message_.raw);\n })();\n const prefix = stringToHex(`${presignMessagePrefix}${size(message)}`);\n return concat([prefix, message]);\n}\n//# sourceMappingURL=toPrefixedMessage.js.map","import { keccak256 } from '../hash/keccak256.js';\nimport { toPrefixedMessage } from './toPrefixedMessage.js';\nexport function hashMessage(message, to_) {\n return keccak256(toPrefixedMessage(message), to_);\n}\n//# sourceMappingURL=hashMessage.js.map","export const erc6492MagicBytes = '0x6492649264926492649264926492649264926492649264926492649264926492';\nexport const zeroHash = '0x0000000000000000000000000000000000000000000000000000000000000000';\n//# sourceMappingURL=bytes.js.map","import { erc6492MagicBytes } from '../../constants/bytes.js';\nimport { sliceHex } from '../data/slice.js';\n/** Whether or not the signature is an ERC-6492 formatted signature. */\nexport function isErc6492Signature(signature) {\n return sliceHex(signature, -32) === erc6492MagicBytes;\n}\n//# sourceMappingURL=isErc6492Signature.js.map","import { erc6492MagicBytes } from '../../constants/bytes.js';\nimport { encodeAbiParameters } from '../abi/encodeAbiParameters.js';\nimport { concatHex } from '../data/concat.js';\nimport { hexToBytes } from '../encoding/toBytes.js';\n/**\n * @description Serializes a ERC-6492 flavoured signature into hex format.\n *\n * @param signature ERC-6492 signature in object format.\n * @returns ERC-6492 signature in hex format.\n *\n * @example\n * serializeSignature({ address: '0x...', data: '0x...', signature: '0x...' })\n * // '0x000000000000000000000000cafebabecafebabecafebabecafebabecafebabe000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004deadbeef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041a461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b000000000000000000000000000000000000000000000000000000000000006492649264926492649264926492649264926492649264926492649264926492'\n */\nexport function serializeErc6492Signature(parameters) {\n const { address, data, signature, to = 'hex' } = parameters;\n const signature_ = concatHex([\n encodeAbiParameters([{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }], [address, data, signature]),\n erc6492MagicBytes,\n ]);\n if (to === 'hex')\n return signature_;\n return hexToBytes(signature_);\n}\n//# sourceMappingURL=serializeErc6492Signature.js.map","import { hexToNumber } from '../index.js';\nfunction formatStorageProof(storageProof) {\n return storageProof.map((proof) => ({\n ...proof,\n value: BigInt(proof.value),\n }));\n}\nexport function formatProof(proof) {\n return {\n ...proof,\n balance: proof.balance ? BigInt(proof.balance) : undefined,\n nonce: proof.nonce ? hexToNumber(proof.nonce) : undefined,\n storageProof: proof.storageProof\n ? formatStorageProof(proof.storageProof)\n : undefined,\n };\n}\n//# sourceMappingURL=proof.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatProof, } from '../../utils/formatters/proof.js';\n/**\n * Returns the account and storage values of the specified account including the Merkle-proof.\n *\n * - Docs: https://viem.sh/docs/actions/public/getProof\n * - JSON-RPC Methods:\n * - Calls [`eth_getProof`](https://eips.ethereum.org/EIPS/eip-1186)\n *\n * @param client - Client to use\n * @param parameters - {@link GetProofParameters}\n * @returns Proof data. {@link GetProofReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getProof } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const block = await getProof(client, {\n * address: '0x...',\n * storageKeys: ['0x...'],\n * })\n */\nexport async function getProof(client, { address, blockNumber, blockTag: blockTag_, storageKeys, }) {\n const blockTag = blockTag_ ?? 'latest';\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n const proof = await client.request({\n method: 'eth_getProof',\n params: [address, storageKeys, blockNumberHex || blockTag],\n });\n return formatProof(proof);\n}\n//# sourceMappingURL=getProof.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Returns the value from a storage slot at a given address.\n *\n * - Docs: https://viem.sh/docs/contract/getStorageAt\n * - JSON-RPC Methods: [`eth_getStorageAt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat)\n *\n * @param client - Client to use\n * @param parameters - {@link GetStorageAtParameters}\n * @returns The value of the storage slot. {@link GetStorageAtReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getStorageAt } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const code = await getStorageAt(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * slot: toHex(0),\n * })\n */\nexport async function getStorageAt(client, { address, blockNumber, blockTag = 'latest', slot }) {\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n const data = await client.request({\n method: 'eth_getStorageAt',\n params: [address, slot, blockNumberHex || blockTag],\n });\n return data;\n}\n//# sourceMappingURL=getStorageAt.js.map","import { TransactionNotFoundError } from '../../errors/transaction.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatTransaction, } from '../../utils/formatters/transaction.js';\n/**\n * Returns information about a [Transaction](https://viem.sh/docs/glossary/terms#transaction) given a hash or block identifier.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransaction\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionByHash)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionParameters}\n * @returns The transaction information. {@link GetTransactionReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransaction } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transaction = await getTransaction(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getTransaction(client, { blockHash, blockNumber, blockTag: blockTag_, hash, index, }) {\n const blockTag = blockTag_ || 'latest';\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n let transaction = null;\n if (hash) {\n transaction = await client.request({\n method: 'eth_getTransactionByHash',\n params: [hash],\n }, { dedupe: true });\n }\n else if (blockHash) {\n transaction = await client.request({\n method: 'eth_getTransactionByBlockHashAndIndex',\n params: [blockHash, numberToHex(index)],\n }, { dedupe: true });\n }\n else if (blockNumberHex || blockTag) {\n transaction = await client.request({\n method: 'eth_getTransactionByBlockNumberAndIndex',\n params: [blockNumberHex || blockTag, numberToHex(index)],\n }, { dedupe: Boolean(blockNumberHex) });\n }\n if (!transaction)\n throw new TransactionNotFoundError({\n blockHash,\n blockNumber,\n blockTag,\n hash,\n index,\n });\n const format = client.chain?.formatters?.transaction?.format || formatTransaction;\n return format(transaction);\n}\n//# sourceMappingURL=getTransaction.js.map","import { getAction } from '../../utils/getAction.js';\nimport { getBlockNumber, } from './getBlockNumber.js';\nimport { getTransaction, } from './getTransaction.js';\n/**\n * Returns the number of blocks passed (confirmations) since the transaction was processed on a block.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionConfirmations\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionConfirmations`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionConfirmations)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionConfirmationsParameters}\n * @returns The number of blocks passed since the transaction was processed. If confirmations is 0, then the Transaction has not been confirmed & processed yet. {@link GetTransactionConfirmationsReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransactionConfirmations } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const confirmations = await getTransactionConfirmations(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getTransactionConfirmations(client, { hash, transactionReceipt }) {\n const [blockNumber, transaction] = await Promise.all([\n getAction(client, getBlockNumber, 'getBlockNumber')({}),\n hash\n ? getAction(client, getTransaction, 'getTransaction')({ hash })\n : undefined,\n ]);\n const transactionBlockNumber = transactionReceipt?.blockNumber || transaction?.blockNumber;\n if (!transactionBlockNumber)\n return 0n;\n return blockNumber - transactionBlockNumber + 1n;\n}\n//# sourceMappingURL=getTransactionConfirmations.js.map","import { TransactionReceiptNotFoundError, } from '../../errors/transaction.js';\nimport { formatTransactionReceipt, } from '../../utils/formatters/transactionReceipt.js';\n/**\n * Returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt) given a [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionReceipt\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionReceiptParameters}\n * @returns The transaction receipt. {@link GetTransactionReceiptReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransactionReceipt } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionReceipt = await getTransactionReceipt(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getTransactionReceipt(client, { hash }) {\n const receipt = await client.request({\n method: 'eth_getTransactionReceipt',\n params: [hash],\n }, { dedupe: true });\n if (!receipt)\n throw new TransactionReceiptNotFoundError({ hash });\n const format = client.chain?.formatters?.transactionReceipt?.format ||\n formatTransactionReceipt;\n return format(receipt);\n}\n//# sourceMappingURL=getTransactionReceipt.js.map","import { multicall3Abi } from '../../constants/abis.js';\nimport { AbiDecodingZeroDataError } from '../../errors/abi.js';\nimport { BaseError } from '../../errors/base.js';\nimport { RawContractError } from '../../errors/contract.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { getContractError, } from '../../utils/errors/getContractError.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract } from './readContract.js';\n/**\n * Similar to [`readContract`](https://viem.sh/docs/contract/readContract), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall).\n *\n * - Docs: https://viem.sh/docs/contract/multicall\n *\n * @param client - Client to use\n * @param parameters - {@link MulticallParameters}\n * @returns An array of results with accompanying status. {@link MulticallReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { multicall } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const abi = parseAbi([\n * 'function balanceOf(address) view returns (uint256)',\n * 'function totalSupply() view returns (uint256)',\n * ])\n * const results = await multicall(client, {\n * contracts: [\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * },\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'totalSupply',\n * },\n * ],\n * })\n * // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }]\n */\nexport async function multicall(client, parameters) {\n const { allowFailure = true, batchSize: batchSize_, blockNumber, blockTag, multicallAddress: multicallAddress_, stateOverride, } = parameters;\n const contracts = parameters.contracts;\n const batchSize = batchSize_ ??\n ((typeof client.batch?.multicall === 'object' &&\n client.batch.multicall.batchSize) ||\n 1_024);\n let multicallAddress = multicallAddress_;\n if (!multicallAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. multicallAddress is required.');\n multicallAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'multicall3',\n });\n }\n const chunkedCalls = [[]];\n let currentChunk = 0;\n let currentChunkSize = 0;\n for (let i = 0; i < contracts.length; i++) {\n const { abi, address, args, functionName } = contracts[i];\n try {\n const callData = encodeFunctionData({ abi, args, functionName });\n currentChunkSize += (callData.length - 2) / 2;\n // Check to see if we need to create a new chunk.\n if (\n // Check if batching is enabled.\n batchSize > 0 &&\n // Check if the current size of the batch exceeds the size limit.\n currentChunkSize > batchSize &&\n // Check if the current chunk is not already empty.\n chunkedCalls[currentChunk].length > 0) {\n currentChunk++;\n currentChunkSize = (callData.length - 2) / 2;\n chunkedCalls[currentChunk] = [];\n }\n chunkedCalls[currentChunk] = [\n ...chunkedCalls[currentChunk],\n {\n allowFailure: true,\n callData,\n target: address,\n },\n ];\n }\n catch (err) {\n const error = getContractError(err, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/multicall',\n functionName,\n });\n if (!allowFailure)\n throw error;\n chunkedCalls[currentChunk] = [\n ...chunkedCalls[currentChunk],\n {\n allowFailure: true,\n callData: '0x',\n target: address,\n },\n ];\n }\n }\n const aggregate3Results = await Promise.allSettled(chunkedCalls.map((calls) => getAction(client, readContract, 'readContract')({\n abi: multicall3Abi,\n address: multicallAddress,\n args: [calls],\n blockNumber,\n blockTag,\n functionName: 'aggregate3',\n stateOverride,\n })));\n const results = [];\n for (let i = 0; i < aggregate3Results.length; i++) {\n const result = aggregate3Results[i];\n // If an error occurred in a `readContract` invocation (ie. network error),\n // then append the failure reason to each contract result.\n if (result.status === 'rejected') {\n if (!allowFailure)\n throw result.reason;\n for (let j = 0; j < chunkedCalls[i].length; j++) {\n results.push({\n status: 'failure',\n error: result.reason,\n result: undefined,\n });\n }\n continue;\n }\n // If the `readContract` call was successful, then decode the results.\n const aggregate3Result = result.value;\n for (let j = 0; j < aggregate3Result.length; j++) {\n // Extract the response from `readContract`\n const { returnData, success } = aggregate3Result[j];\n // Extract the request call data from the original call.\n const { callData } = chunkedCalls[i][j];\n // Extract the contract config for this call from the `contracts` argument\n // for decoding.\n const { abi, address, functionName, args } = contracts[results.length];\n try {\n if (callData === '0x')\n throw new AbiDecodingZeroDataError();\n if (!success)\n throw new RawContractError({ data: returnData });\n const result = decodeFunctionResult({\n abi,\n args,\n data: returnData,\n functionName,\n });\n results.push(allowFailure ? { result, status: 'success' } : result);\n }\n catch (err) {\n const error = getContractError(err, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/multicall',\n functionName,\n });\n if (!allowFailure)\n throw error;\n results.push({ error, result: undefined, status: 'failure' });\n }\n }\n }\n if (results.length !== contracts.length)\n throw new BaseError('multicall results mismatch');\n return results;\n}\n//# sourceMappingURL=multicall.js.map","import { secp256k1 } from '@noble/curves/secp256k1';\nimport { hexToBigInt } from '../encoding/fromHex.js';\nimport { hexToBytes } from '../encoding/toBytes.js';\n/**\n * @description Converts a signature into hex format.\n *\n * @param signature The signature to convert.\n * @returns The signature in hex format.\n *\n * @example\n * serializeSignature({\n * r: '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf',\n * s: '0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8',\n * yParity: 1\n * })\n * // \"0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c\"\n */\nexport function serializeSignature({ r, s, to = 'hex', v, yParity, }) {\n const yParity_ = (() => {\n if (yParity === 0 || yParity === 1)\n return yParity;\n if (v && (v === 27n || v === 28n || v >= 35n))\n return v % 2n === 0n ? 1 : 0;\n throw new Error('Invalid `v` or `yParity` value');\n })();\n const signature = `0x${new secp256k1.Signature(hexToBigInt(r), hexToBigInt(s)).toCompactHex()}${yParity_ === 0 ? '1b' : '1c'}`;\n if (to === 'hex')\n return signature;\n return hexToBytes(signature);\n}\n//# sourceMappingURL=serializeSignature.js.map","import { universalSignatureValidatorAbi } from '../../constants/abis.js';\nimport { universalSignatureValidatorByteCode } from '../../constants/contracts.js';\nimport { CallExecutionError } from '../../errors/contract.js';\nimport { encodeDeployData, } from '../../utils/abi/encodeDeployData.js';\nimport { getAddress } from '../../utils/address/getAddress.js';\nimport { isAddressEqual } from '../../utils/address/isAddressEqual.js';\nimport { isHex } from '../../utils/data/isHex.js';\nimport { bytesToHex } from '../../utils/encoding/toHex.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { encodeFunctionData, hexToBool } from '../../utils/index.js';\nimport { isErc6492Signature } from '../../utils/signature/isErc6492Signature.js';\nimport { recoverAddress } from '../../utils/signature/recoverAddress.js';\nimport { serializeErc6492Signature } from '../../utils/signature/serializeErc6492Signature.js';\nimport { serializeSignature } from '../../utils/signature/serializeSignature.js';\nimport { call } from './call.js';\n/**\n * Verifies a message hash onchain using ERC-6492.\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyHashParameters}\n * @returns Whether or not the signature is valid. {@link VerifyHashReturnType}\n */\nexport async function verifyHash(client, parameters) {\n const { address, factory, factoryData, hash, signature, universalSignatureVerifierAddress = client.chain?.contracts\n ?.universalSignatureVerifier?.address, ...rest } = parameters;\n const signatureHex = (() => {\n if (isHex(signature))\n return signature;\n if (typeof signature === 'object' && 'r' in signature && 's' in signature)\n return serializeSignature(signature);\n return bytesToHex(signature);\n })();\n const wrappedSignature = await (async () => {\n // If no `factory` or `factoryData` is provided, it is assumed that the\n // address is not a Smart Account, or the Smart Account is already deployed.\n if (!factory && !factoryData)\n return signatureHex;\n // If the signature is already wrapped, return the signature.\n if (isErc6492Signature(signatureHex))\n return signatureHex;\n // If the Smart Account is not deployed, wrap the signature with a 6492 wrapper\n // to perform counterfactual validation.\n return serializeErc6492Signature({\n address: factory,\n data: factoryData,\n signature: signatureHex,\n });\n })();\n try {\n const args = universalSignatureVerifierAddress\n ? {\n to: universalSignatureVerifierAddress,\n data: encodeFunctionData({\n abi: universalSignatureValidatorAbi,\n functionName: 'isValidSig',\n args: [address, hash, wrappedSignature],\n }),\n ...rest,\n }\n : {\n data: encodeDeployData({\n abi: universalSignatureValidatorAbi,\n args: [address, hash, wrappedSignature],\n bytecode: universalSignatureValidatorByteCode,\n }),\n ...rest,\n };\n const { data } = await getAction(client, call, 'call')(args);\n return hexToBool(data ?? '0x0');\n }\n catch (error) {\n // Fallback attempt to verify the signature via ECDSA recovery.\n try {\n const verified = isAddressEqual(getAddress(address), await recoverAddress({ hash, signature }));\n if (verified)\n return true;\n }\n catch { }\n if (error instanceof CallExecutionError) {\n // if the execution fails, the signature was not valid and an internal method inside of the validator reverted\n // this can happen for many reasons, for example if signer can not be recovered from the signature\n // or if the signature has no valid format\n return false;\n }\n throw error;\n }\n}\n//# sourceMappingURL=verifyHash.js.map","import { hashMessage } from '../../utils/signature/hashMessage.js';\nimport { verifyHash, } from './verifyHash.js';\n/**\n * Verify that a message was signed by the provided address.\n *\n * Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).\n *\n * - Docs {@link https://viem.sh/docs/actions/public/verifyMessage}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyMessageParameters}\n * @returns Whether or not the signature is valid. {@link VerifyMessageReturnType}\n */\nexport async function verifyMessage(client, { address, message, factory, factoryData, signature, ...callRequest }) {\n const hash = hashMessage(message);\n return verifyHash(client, {\n address,\n factory: factory,\n factoryData: factoryData,\n hash,\n signature,\n ...callRequest,\n });\n}\n//# sourceMappingURL=verifyMessage.js.map","import { hashTypedData, } from '../../utils/signature/hashTypedData.js';\nimport { verifyHash, } from './verifyHash.js';\n/**\n * Verify that typed data was signed by the provided address.\n *\n * - Docs {@link https://viem.sh/docs/actions/public/verifyTypedData}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyTypedDataParameters}\n * @returns Whether or not the signature is valid. {@link VerifyTypedDataReturnType}\n */\nexport async function verifyTypedData(client, parameters) {\n const { address, factory, factoryData, signature, message, primaryType, types, domain, ...callRequest } = parameters;\n const hash = hashTypedData({ message, primaryType, types, domain });\n return verifyHash(client, {\n address,\n factory: factory,\n factoryData: factoryData,\n hash,\n signature,\n ...callRequest,\n });\n}\n//# sourceMappingURL=verifyTypedData.js.map","import { hexToBigInt } from '../../utils/encoding/fromHex.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { getBlockNumber, } from './getBlockNumber.js';\n/**\n * Watches and returns incoming block numbers.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchBlockNumber\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_watching-blocks\n * - JSON-RPC Methods:\n * - When `poll: true`, calls [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newHeads\"` event.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchBlockNumberParameters}\n * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlockNumberReturnType}\n *\n * @example\n * import { createPublicClient, watchBlockNumber, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchBlockNumber(client, {\n * onBlockNumber: (blockNumber) => console.log(blockNumber),\n * })\n */\nexport function watchBlockNumber(client, { emitOnBegin = false, emitMissed = false, onBlockNumber, onError, poll: poll_, pollingInterval = client.pollingInterval, }) {\n const enablePolling = (() => {\n if (typeof poll_ !== 'undefined')\n return poll_;\n if (client.transport.type === 'webSocket')\n return false;\n if (client.transport.type === 'fallback' &&\n client.transport.transports[0].config.type === 'webSocket')\n return false;\n return true;\n })();\n let prevBlockNumber;\n const pollBlockNumber = () => {\n const observerId = stringify([\n 'watchBlockNumber',\n client.uid,\n emitOnBegin,\n emitMissed,\n pollingInterval,\n ]);\n return observe(observerId, { onBlockNumber, onError }, (emit) => poll(async () => {\n try {\n const blockNumber = await getAction(client, getBlockNumber, 'getBlockNumber')({ cacheTime: 0 });\n if (prevBlockNumber) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (blockNumber === prevBlockNumber)\n return;\n // If we have missed out on some previous blocks, and the\n // `emitMissed` flag is truthy, let's emit those blocks.\n if (blockNumber - prevBlockNumber > 1 && emitMissed) {\n for (let i = prevBlockNumber + 1n; i < blockNumber; i++) {\n emit.onBlockNumber(i, prevBlockNumber);\n prevBlockNumber = i;\n }\n }\n }\n // If the next block number is greater than the previous,\n // it is not in the past, and we can emit the new block number.\n if (!prevBlockNumber || blockNumber > prevBlockNumber) {\n emit.onBlockNumber(blockNumber, prevBlockNumber);\n prevBlockNumber = blockNumber;\n }\n }\n catch (err) {\n emit.onError?.(err);\n }\n }, {\n emitOnBegin,\n interval: pollingInterval,\n }));\n };\n const subscribeBlockNumber = () => {\n const observerId = stringify([\n 'watchBlockNumber',\n client.uid,\n emitOnBegin,\n emitMissed,\n ]);\n return observe(observerId, { onBlockNumber, onError }, (emit) => {\n let active = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n const transport = (() => {\n if (client.transport.type === 'fallback') {\n const transport = client.transport.transports.find((transport) => transport.config.type === 'webSocket');\n if (!transport)\n return client.transport;\n return transport.value;\n }\n return client.transport;\n })();\n const { unsubscribe: unsubscribe_ } = await transport.subscribe({\n params: ['newHeads'],\n onData(data) {\n if (!active)\n return;\n const blockNumber = hexToBigInt(data.result?.number);\n emit.onBlockNumber(blockNumber, prevBlockNumber);\n prevBlockNumber = blockNumber;\n },\n onError(error) {\n emit.onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return () => unsubscribe();\n });\n };\n return enablePolling ? pollBlockNumber() : subscribeBlockNumber();\n}\n//# sourceMappingURL=watchBlockNumber.js.map","import { BlockNotFoundError } from '../../errors/block.js';\nimport { TransactionNotFoundError, TransactionReceiptNotFoundError, WaitForTransactionReceiptTimeoutError, } from '../../errors/transaction.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { withResolvers } from '../../utils/promise/withResolvers.js';\nimport { withRetry, } from '../../utils/promise/withRetry.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { getBlock } from './getBlock.js';\nimport { getTransaction, } from './getTransaction.js';\nimport { getTransactionReceipt, } from './getTransactionReceipt.js';\nimport { watchBlockNumber, } from './watchBlockNumber.js';\n/**\n * Waits for the [Transaction](https://viem.sh/docs/glossary/terms#transaction) to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt).\n *\n * - Docs: https://viem.sh/docs/actions/public/waitForTransactionReceipt\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_sending-transactions\n * - JSON-RPC Methods:\n * - Polls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) on each block until it has been processed.\n * - If a Transaction has been replaced:\n * - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) and extracts the transactions\n * - Checks if one of the Transactions is a replacement\n * - If so, calls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt).\n *\n * The `waitForTransactionReceipt` action additionally supports Replacement detection (e.g. sped up Transactions).\n *\n * Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce.\n *\n * There are 3 types of Transaction Replacement reasons:\n *\n * - `repriced`: The gas price has been modified (e.g. different `maxFeePerGas`)\n * - `cancelled`: The Transaction has been cancelled (e.g. `value === 0n`)\n * - `replaced`: The Transaction has been replaced (e.g. different `value` or `data`)\n *\n * @param client - Client to use\n * @param parameters - {@link WaitForTransactionReceiptParameters}\n * @returns The transaction receipt. {@link WaitForTransactionReceiptReturnType}\n *\n * @example\n * import { createPublicClient, waitForTransactionReceipt, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionReceipt = await waitForTransactionReceipt(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function waitForTransactionReceipt(client, { confirmations = 1, hash, onReplaced, pollingInterval = client.pollingInterval, retryCount = 6, retryDelay = ({ count }) => ~~(1 << count) * 200, // exponential backoff\ntimeout = 180_000, }) {\n const observerId = stringify(['waitForTransactionReceipt', client.uid, hash]);\n let transaction;\n let replacedTransaction;\n let receipt;\n let retrying = false;\n const { promise, resolve, reject } = withResolvers();\n const timer = timeout\n ? setTimeout(() => reject(new WaitForTransactionReceiptTimeoutError({ hash })), timeout)\n : undefined;\n const _unobserve = observe(observerId, { onReplaced, resolve, reject }, (emit) => {\n const _unwatch = getAction(client, watchBlockNumber, 'watchBlockNumber')({\n emitMissed: true,\n emitOnBegin: true,\n poll: true,\n pollingInterval,\n async onBlockNumber(blockNumber_) {\n const done = (fn) => {\n clearTimeout(timer);\n _unwatch();\n fn();\n _unobserve();\n };\n let blockNumber = blockNumber_;\n if (retrying)\n return;\n try {\n // If we already have a valid receipt, let's check if we have enough\n // confirmations. If we do, then we can resolve.\n if (receipt) {\n if (confirmations > 1 &&\n (!receipt.blockNumber ||\n blockNumber - receipt.blockNumber + 1n < confirmations))\n return;\n done(() => emit.resolve(receipt));\n return;\n }\n // Get the transaction to check if it's been replaced.\n // We need to retry as some RPC Providers may be slow to sync\n // up mined transactions.\n if (!transaction) {\n retrying = true;\n await withRetry(async () => {\n transaction = (await getAction(client, getTransaction, 'getTransaction')({ hash }));\n if (transaction.blockNumber)\n blockNumber = transaction.blockNumber;\n }, {\n delay: retryDelay,\n retryCount,\n });\n retrying = false;\n }\n // Get the receipt to check if it's been processed.\n receipt = await getAction(client, getTransactionReceipt, 'getTransactionReceipt')({ hash });\n // Check if we have enough confirmations. If not, continue polling.\n if (confirmations > 1 &&\n (!receipt.blockNumber ||\n blockNumber - receipt.blockNumber + 1n < confirmations))\n return;\n done(() => emit.resolve(receipt));\n }\n catch (err) {\n // If the receipt is not found, the transaction will be pending.\n // We need to check if it has potentially been replaced.\n if (err instanceof TransactionNotFoundError ||\n err instanceof TransactionReceiptNotFoundError) {\n if (!transaction) {\n retrying = false;\n return;\n }\n try {\n replacedTransaction = transaction;\n // Let's retrieve the transactions from the current block.\n // We need to retry as some RPC Providers may be slow to sync\n // up mined blocks.\n retrying = true;\n const block = await withRetry(() => getAction(client, getBlock, 'getBlock')({\n blockNumber,\n includeTransactions: true,\n }), {\n delay: retryDelay,\n retryCount,\n shouldRetry: ({ error }) => error instanceof BlockNotFoundError,\n });\n retrying = false;\n const replacementTransaction = block.transactions.find(({ from, nonce }) => from === replacedTransaction.from &&\n nonce === replacedTransaction.nonce);\n // If we couldn't find a replacement transaction, continue polling.\n if (!replacementTransaction)\n return;\n // If we found a replacement transaction, return it's receipt.\n receipt = await getAction(client, getTransactionReceipt, 'getTransactionReceipt')({\n hash: replacementTransaction.hash,\n });\n // Check if we have enough confirmations. If not, continue polling.\n if (confirmations > 1 &&\n (!receipt.blockNumber ||\n blockNumber - receipt.blockNumber + 1n < confirmations))\n return;\n let reason = 'replaced';\n if (replacementTransaction.to === replacedTransaction.to &&\n replacementTransaction.value === replacedTransaction.value) {\n reason = 'repriced';\n }\n else if (replacementTransaction.from === replacementTransaction.to &&\n replacementTransaction.value === 0n) {\n reason = 'cancelled';\n }\n done(() => {\n emit.onReplaced?.({\n reason,\n replacedTransaction: replacedTransaction,\n transaction: replacementTransaction,\n transactionReceipt: receipt,\n });\n emit.resolve(receipt);\n });\n }\n catch (err_) {\n done(() => emit.reject(err_));\n }\n }\n else {\n done(() => emit.reject(err));\n }\n }\n },\n });\n });\n return promise;\n}\n//# sourceMappingURL=waitForTransactionReceipt.js.map","import { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { getBlock } from './getBlock.js';\n/**\n * Watches and returns information for incoming blocks.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchBlocks\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_watching-blocks\n * - JSON-RPC Methods:\n * - When `poll: true`, calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getBlockByNumber) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newHeads\"` event.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchBlocksParameters}\n * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlocksReturnType}\n *\n * @example\n * import { createPublicClient, watchBlocks, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchBlocks(client, {\n * onBlock: (block) => console.log(block),\n * })\n */\nexport function watchBlocks(client, { blockTag = 'latest', emitMissed = false, emitOnBegin = false, onBlock, onError, includeTransactions: includeTransactions_, poll: poll_, pollingInterval = client.pollingInterval, }) {\n const enablePolling = (() => {\n if (typeof poll_ !== 'undefined')\n return poll_;\n if (client.transport.type === 'webSocket')\n return false;\n if (client.transport.type === 'fallback' &&\n client.transport.transports[0].config.type === 'webSocket')\n return false;\n return true;\n })();\n const includeTransactions = includeTransactions_ ?? false;\n let prevBlock;\n const pollBlocks = () => {\n const observerId = stringify([\n 'watchBlocks',\n client.uid,\n blockTag,\n emitMissed,\n emitOnBegin,\n includeTransactions,\n pollingInterval,\n ]);\n return observe(observerId, { onBlock, onError }, (emit) => poll(async () => {\n try {\n const block = await getAction(client, getBlock, 'getBlock')({\n blockTag,\n includeTransactions,\n });\n if (block.number && prevBlock?.number) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (block.number === prevBlock.number)\n return;\n // If we have missed out on some previous blocks, and the\n // `emitMissed` flag is truthy, let's emit those blocks.\n if (block.number - prevBlock.number > 1 && emitMissed) {\n for (let i = prevBlock?.number + 1n; i < block.number; i++) {\n const block = (await getAction(client, getBlock, 'getBlock')({\n blockNumber: i,\n includeTransactions,\n }));\n emit.onBlock(block, prevBlock);\n prevBlock = block;\n }\n }\n }\n if (\n // If no previous block exists, emit.\n !prevBlock?.number ||\n // If the block tag is \"pending\" with no block number, emit.\n (blockTag === 'pending' && !block?.number) ||\n // If the next block number is greater than the previous block number, emit.\n // We don't want to emit blocks in the past.\n (block.number && block.number > prevBlock.number)) {\n emit.onBlock(block, prevBlock);\n prevBlock = block;\n }\n }\n catch (err) {\n emit.onError?.(err);\n }\n }, {\n emitOnBegin,\n interval: pollingInterval,\n }));\n };\n const subscribeBlocks = () => {\n let active = true;\n let emitFetched = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n if (emitOnBegin) {\n getAction(client, getBlock, 'getBlock')({\n blockTag,\n includeTransactions,\n }).then((block) => {\n if (!active)\n return;\n if (!emitFetched)\n return;\n onBlock(block, undefined);\n emitFetched = false;\n });\n }\n const transport = (() => {\n if (client.transport.type === 'fallback') {\n const transport = client.transport.transports.find((transport) => transport.config.type === 'webSocket');\n if (!transport)\n return client.transport;\n return transport.value;\n }\n return client.transport;\n })();\n const { unsubscribe: unsubscribe_ } = await transport.subscribe({\n params: ['newHeads'],\n async onData(data) {\n if (!active)\n return;\n const block = (await getAction(client, getBlock, 'getBlock')({\n blockNumber: data.blockNumber,\n includeTransactions,\n }).catch(() => { }));\n if (!active)\n return;\n onBlock(block, prevBlock);\n emitFetched = false;\n prevBlock = block;\n },\n onError(error) {\n onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return () => unsubscribe();\n };\n return enablePolling ? pollBlocks() : subscribeBlocks();\n}\n//# sourceMappingURL=watchBlocks.js.map","import { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { DecodeLogDataMismatch, DecodeLogTopicsMismatch, } from '../../errors/abi.js';\nimport { InvalidInputRpcError } from '../../errors/rpc.js';\nimport { decodeEventLog } from '../../utils/abi/decodeEventLog.js';\nimport { formatLog } from '../../utils/formatters/log.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { createEventFilter, } from './createEventFilter.js';\nimport { getBlockNumber } from './getBlockNumber.js';\nimport { getFilterChanges } from './getFilterChanges.js';\nimport { getLogs } from './getLogs.js';\nimport { uninstallFilter } from './uninstallFilter.js';\n/**\n * Watches and returns emitted [Event Logs](https://viem.sh/docs/glossary/terms#event-log).\n *\n * - Docs: https://viem.sh/docs/actions/public/watchEvent\n * - JSON-RPC Methods:\n * - **RPC Provider supports `eth_newFilter`:**\n * - Calls [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) to create a filter (called on initialize).\n * - On a polling interval, it will call [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges).\n * - **RPC Provider does not support `eth_newFilter`:**\n * - Calls [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) for each block between the polling interval.\n *\n * This Action will batch up all the Event Logs found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/actions/public/watchEvent#onLogs).\n *\n * `watchEvent` will attempt to create an [Event Filter](https://viem.sh/docs/actions/public/createEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchEventParameters}\n * @returns A function that can be invoked to stop watching for new Event Logs. {@link WatchEventReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchEvent } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchEvent(client, {\n * onLogs: (logs) => console.log(logs),\n * })\n */\nexport function watchEvent(client, { address, args, batch = true, event, events, fromBlock, onError, onLogs, poll: poll_, pollingInterval = client.pollingInterval, strict: strict_, }) {\n const enablePolling = (() => {\n if (typeof poll_ !== 'undefined')\n return poll_;\n if (typeof fromBlock === 'bigint')\n return true;\n if (client.transport.type === 'webSocket')\n return false;\n if (client.transport.type === 'fallback' &&\n client.transport.transports[0].config.type === 'webSocket')\n return false;\n return true;\n })();\n const strict = strict_ ?? false;\n const pollEvent = () => {\n const observerId = stringify([\n 'watchEvent',\n address,\n args,\n batch,\n client.uid,\n event,\n pollingInterval,\n fromBlock,\n ]);\n return observe(observerId, { onLogs, onError }, (emit) => {\n let previousBlockNumber;\n if (fromBlock !== undefined)\n previousBlockNumber = fromBlock - 1n;\n let filter;\n let initialized = false;\n const unwatch = poll(async () => {\n if (!initialized) {\n try {\n filter = (await getAction(client, createEventFilter, 'createEventFilter')({\n address,\n args,\n event: event,\n events,\n strict,\n fromBlock,\n }));\n }\n catch { }\n initialized = true;\n return;\n }\n try {\n let logs;\n if (filter) {\n logs = await getAction(client, getFilterChanges, 'getFilterChanges')({ filter });\n }\n else {\n // If the filter doesn't exist, we will fall back to use `getLogs`.\n // The fall back exists because some RPC Providers do not support filters.\n // Fetch the block number to use for `getLogs`.\n const blockNumber = await getAction(client, getBlockNumber, 'getBlockNumber')({});\n // If the block number has changed, we will need to fetch the logs.\n // If the block number doesn't exist, we are yet to reach the first poll interval,\n // so do not emit any logs.\n if (previousBlockNumber && previousBlockNumber !== blockNumber) {\n logs = await getAction(client, getLogs, 'getLogs')({\n address,\n args,\n event: event,\n events,\n fromBlock: previousBlockNumber + 1n,\n toBlock: blockNumber,\n });\n }\n else {\n logs = [];\n }\n previousBlockNumber = blockNumber;\n }\n if (logs.length === 0)\n return;\n if (batch)\n emit.onLogs(logs);\n else\n for (const log of logs)\n emit.onLogs([log]);\n }\n catch (err) {\n // If a filter has been set and gets uninstalled, providers will throw an InvalidInput error.\n // Reinitialize the filter when this occurs\n if (filter && err instanceof InvalidInputRpcError)\n initialized = false;\n emit.onError?.(err);\n }\n }, {\n emitOnBegin: true,\n interval: pollingInterval,\n });\n return async () => {\n if (filter)\n await getAction(client, uninstallFilter, 'uninstallFilter')({ filter });\n unwatch();\n };\n });\n };\n const subscribeEvent = () => {\n let active = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n const transport = (() => {\n if (client.transport.type === 'fallback') {\n const transport = client.transport.transports.find((transport) => transport.config.type === 'webSocket');\n if (!transport)\n return client.transport;\n return transport.value;\n }\n return client.transport;\n })();\n const events_ = events ?? (event ? [event] : undefined);\n let topics = [];\n if (events_) {\n const encoded = events_.flatMap((event) => encodeEventTopics({\n abi: [event],\n eventName: event.name,\n args,\n }));\n // TODO: Clean up type casting\n topics = [encoded];\n if (event)\n topics = topics[0];\n }\n const { unsubscribe: unsubscribe_ } = await transport.subscribe({\n params: ['logs', { address, topics }],\n onData(data) {\n if (!active)\n return;\n const log = data.result;\n try {\n const { eventName, args } = decodeEventLog({\n abi: events_ ?? [],\n data: log.data,\n topics: log.topics,\n strict,\n });\n const formatted = formatLog(log, { args, eventName });\n onLogs([formatted]);\n }\n catch (err) {\n let eventName;\n let isUnnamed;\n if (err instanceof DecodeLogDataMismatch ||\n err instanceof DecodeLogTopicsMismatch) {\n // If strict mode is on, and log data/topics do not match event definition, skip.\n if (strict_)\n return;\n eventName = err.abiItem.name;\n isUnnamed = err.abiItem.inputs?.some((x) => !('name' in x && x.name));\n }\n // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).\n const formatted = formatLog(log, {\n args: isUnnamed ? [] : {},\n eventName,\n });\n onLogs([formatted]);\n }\n },\n onError(error) {\n onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return () => unsubscribe();\n };\n return enablePolling ? pollEvent() : subscribeEvent();\n}\n//# sourceMappingURL=watchEvent.js.map","import { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { createPendingTransactionFilter } from './createPendingTransactionFilter.js';\nimport { getFilterChanges } from './getFilterChanges.js';\nimport { uninstallFilter } from './uninstallFilter.js';\n/**\n * Watches and returns pending transaction hashes.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchPendingTransactions\n * - JSON-RPC Methods:\n * - When `poll: true`\n * - Calls [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) to initialize the filter.\n * - Calls [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getFilterChanges) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newPendingTransactions\"` event.\n *\n * This Action will batch up all the pending transactions found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchPendingTransactions#pollinginterval-optional), and invoke them via [`onTransactions`](https://viem.sh/docs/actions/public/watchPendingTransactions#ontransactions).\n *\n * @param client - Client to use\n * @param parameters - {@link WatchPendingTransactionsParameters}\n * @returns A function that can be invoked to stop watching for new pending transaction hashes. {@link WatchPendingTransactionsReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchPendingTransactions } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = await watchPendingTransactions(client, {\n * onTransactions: (hashes) => console.log(hashes),\n * })\n */\nexport function watchPendingTransactions(client, { batch = true, onError, onTransactions, poll: poll_, pollingInterval = client.pollingInterval, }) {\n const enablePolling = typeof poll_ !== 'undefined' ? poll_ : client.transport.type !== 'webSocket';\n const pollPendingTransactions = () => {\n const observerId = stringify([\n 'watchPendingTransactions',\n client.uid,\n batch,\n pollingInterval,\n ]);\n return observe(observerId, { onTransactions, onError }, (emit) => {\n let filter;\n const unwatch = poll(async () => {\n try {\n if (!filter) {\n try {\n filter = await getAction(client, createPendingTransactionFilter, 'createPendingTransactionFilter')({});\n return;\n }\n catch (err) {\n unwatch();\n throw err;\n }\n }\n const hashes = await getAction(client, getFilterChanges, 'getFilterChanges')({ filter });\n if (hashes.length === 0)\n return;\n if (batch)\n emit.onTransactions(hashes);\n else\n for (const hash of hashes)\n emit.onTransactions([hash]);\n }\n catch (err) {\n emit.onError?.(err);\n }\n }, {\n emitOnBegin: true,\n interval: pollingInterval,\n });\n return async () => {\n if (filter)\n await getAction(client, uninstallFilter, 'uninstallFilter')({ filter });\n unwatch();\n };\n });\n };\n const subscribePendingTransactions = () => {\n let active = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n const { unsubscribe: unsubscribe_ } = await client.transport.subscribe({\n params: ['newPendingTransactions'],\n onData(data) {\n if (!active)\n return;\n const transaction = data.result;\n onTransactions([transaction]);\n },\n onError(error) {\n onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return () => unsubscribe();\n };\n return enablePolling\n ? pollPendingTransactions()\n : subscribePendingTransactions();\n}\n//# sourceMappingURL=watchPendingTransactions.js.map","/**\n * @description Parses EIP-4361 formatted message into message fields object.\n *\n * @see https://eips.ethereum.org/EIPS/eip-4361\n *\n * @returns EIP-4361 fields object\n */\nexport function parseSiweMessage(message) {\n const { scheme, statement, ...prefix } = (message.match(prefixRegex)\n ?.groups ?? {});\n const { chainId, expirationTime, issuedAt, notBefore, requestId, ...suffix } = (message.match(suffixRegex)?.groups ?? {});\n const resources = message.split('Resources:')[1]?.split('\\n- ').slice(1);\n return {\n ...prefix,\n ...suffix,\n ...(chainId ? { chainId: Number(chainId) } : {}),\n ...(expirationTime ? { expirationTime: new Date(expirationTime) } : {}),\n ...(issuedAt ? { issuedAt: new Date(issuedAt) } : {}),\n ...(notBefore ? { notBefore: new Date(notBefore) } : {}),\n ...(requestId ? { requestId } : {}),\n ...(resources ? { resources } : {}),\n ...(scheme ? { scheme } : {}),\n ...(statement ? { statement } : {}),\n };\n}\n// https://regexr.com/80gdj\nconst prefixRegex = /^(?:(?<scheme>[a-zA-Z][a-zA-Z0-9+-.]*):\\/\\/)?(?<domain>[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\\n)(?<address>0x[a-fA-F0-9]{40})\\n\\n(?:(?<statement>.*)\\n\\n)?/;\n// https://regexr.com/80gf9\nconst suffixRegex = /(?:URI: (?<uri>.+))\\n(?:Version: (?<version>.+))\\n(?:Chain ID: (?<chainId>\\d+))\\n(?:Nonce: (?<nonce>[a-zA-Z0-9]+))\\n(?:Issued At: (?<issuedAt>.+))(?:\\nExpiration Time: (?<expirationTime>.+))?(?:\\nNot Before: (?<notBefore>.+))?(?:\\nRequest ID: (?<requestId>.+))?/;\n//# sourceMappingURL=parseSiweMessage.js.map","import { isAddressEqual } from '../address/isAddressEqual.js';\n/**\n * @description Validates EIP-4361 message.\n *\n * @see https://eips.ethereum.org/EIPS/eip-4361\n */\nexport function validateSiweMessage(parameters) {\n const { address, domain, message, nonce, scheme, time = new Date(), } = parameters;\n if (domain && message.domain !== domain)\n return false;\n if (nonce && message.nonce !== nonce)\n return false;\n if (scheme && message.scheme !== scheme)\n return false;\n if (message.expirationTime && time >= message.expirationTime)\n return false;\n if (message.notBefore && time < message.notBefore)\n return false;\n try {\n if (!message.address)\n return false;\n if (address && !isAddressEqual(message.address, address))\n return false;\n }\n catch {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=validateSiweMessage.js.map","import { hashMessage } from '../../utils/signature/hashMessage.js';\nimport { parseSiweMessage } from '../../utils/siwe/parseSiweMessage.js';\nimport { validateSiweMessage, } from '../../utils/siwe/validateSiweMessage.js';\nimport { verifyHash, } from '../public/verifyHash.js';\n/**\n * Verifies [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) formatted message was signed.\n *\n * Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).\n *\n * - Docs {@link https://viem.sh/docs/siwe/actions/verifySiweMessage}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifySiweMessageParameters}\n * @returns Whether or not the signature is valid. {@link VerifySiweMessageReturnType}\n */\nexport async function verifySiweMessage(client, parameters) {\n const { address, domain, message, nonce, scheme, signature, time = new Date(), ...callRequest } = parameters;\n const parsed = parseSiweMessage(message);\n if (!parsed.address)\n return false;\n const isValid = validateSiweMessage({\n address,\n domain,\n message: parsed,\n nonce,\n scheme,\n time,\n });\n if (!isValid)\n return false;\n const hash = hashMessage(message);\n return verifyHash(client, {\n address: parsed.address,\n hash,\n signature,\n ...callRequest,\n });\n}\n//# sourceMappingURL=verifySiweMessage.js.map","import { getEnsAddress, } from '../../actions/ens/getEnsAddress.js';\nimport { getEnsAvatar, } from '../../actions/ens/getEnsAvatar.js';\nimport { getEnsName, } from '../../actions/ens/getEnsName.js';\nimport { getEnsResolver, } from '../../actions/ens/getEnsResolver.js';\nimport { getEnsText, } from '../../actions/ens/getEnsText.js';\nimport { call, } from '../../actions/public/call.js';\nimport { createBlockFilter, } from '../../actions/public/createBlockFilter.js';\nimport { createContractEventFilter, } from '../../actions/public/createContractEventFilter.js';\nimport { createEventFilter, } from '../../actions/public/createEventFilter.js';\nimport { createPendingTransactionFilter, } from '../../actions/public/createPendingTransactionFilter.js';\nimport { estimateContractGas, } from '../../actions/public/estimateContractGas.js';\nimport { estimateFeesPerGas, } from '../../actions/public/estimateFeesPerGas.js';\nimport { estimateGas, } from '../../actions/public/estimateGas.js';\nimport { estimateMaxPriorityFeePerGas, } from '../../actions/public/estimateMaxPriorityFeePerGas.js';\nimport { getBalance, } from '../../actions/public/getBalance.js';\nimport { getBlobBaseFee, } from '../../actions/public/getBlobBaseFee.js';\nimport { getBlock, } from '../../actions/public/getBlock.js';\nimport { getBlockNumber, } from '../../actions/public/getBlockNumber.js';\nimport { getBlockTransactionCount, } from '../../actions/public/getBlockTransactionCount.js';\nimport { getChainId, } from '../../actions/public/getChainId.js';\nimport { getCode, } from '../../actions/public/getCode.js';\nimport { getContractEvents, } from '../../actions/public/getContractEvents.js';\nimport { getEip712Domain, } from '../../actions/public/getEip712Domain.js';\nimport { getFeeHistory, } from '../../actions/public/getFeeHistory.js';\nimport { getFilterChanges, } from '../../actions/public/getFilterChanges.js';\nimport { getFilterLogs, } from '../../actions/public/getFilterLogs.js';\nimport { getGasPrice, } from '../../actions/public/getGasPrice.js';\nimport { getLogs, } from '../../actions/public/getLogs.js';\nimport { getProof, } from '../../actions/public/getProof.js';\nimport { getStorageAt, } from '../../actions/public/getStorageAt.js';\nimport { getTransaction, } from '../../actions/public/getTransaction.js';\nimport { getTransactionConfirmations, } from '../../actions/public/getTransactionConfirmations.js';\nimport { getTransactionCount, } from '../../actions/public/getTransactionCount.js';\nimport { getTransactionReceipt, } from '../../actions/public/getTransactionReceipt.js';\nimport { multicall, } from '../../actions/public/multicall.js';\nimport { readContract, } from '../../actions/public/readContract.js';\nimport { simulateContract, } from '../../actions/public/simulateContract.js';\nimport { uninstallFilter, } from '../../actions/public/uninstallFilter.js';\nimport { verifyMessage, } from '../../actions/public/verifyMessage.js';\nimport { verifyTypedData, } from '../../actions/public/verifyTypedData.js';\nimport { waitForTransactionReceipt, } from '../../actions/public/waitForTransactionReceipt.js';\nimport { watchBlockNumber, } from '../../actions/public/watchBlockNumber.js';\nimport { watchBlocks, } from '../../actions/public/watchBlocks.js';\nimport { watchContractEvent, } from '../../actions/public/watchContractEvent.js';\nimport { watchEvent, } from '../../actions/public/watchEvent.js';\nimport { watchPendingTransactions, } from '../../actions/public/watchPendingTransactions.js';\nimport { verifySiweMessage, } from '../../actions/siwe/verifySiweMessage.js';\nimport { prepareTransactionRequest, } from '../../actions/wallet/prepareTransactionRequest.js';\nimport { sendRawTransaction, } from '../../actions/wallet/sendRawTransaction.js';\nexport function publicActions(client) {\n return {\n call: (args) => call(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) => createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () => createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlobBaseFee: () => getBlobBaseFee(client),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getCode(client, args),\n getChainId: () => getChainId(client),\n getCode: (args) => getCode(client, args),\n getContractEvents: (args) => getContractEvents(client, args),\n getEip712Domain: (args) => getEip712Domain(client, args),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsAvatar: (args) => getEnsAvatar(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getEnsResolver: (args) => getEnsResolver(client, args),\n getEnsText: (args) => getEnsText(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n estimateFeesPerGas: (args) => estimateFeesPerGas(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args),\n getProof: (args) => getProof(client, args),\n estimateMaxPriorityFeePerGas: (args) => estimateMaxPriorityFeePerGas(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) => getTransactionConfirmations(client, args),\n getTransactionCount: (args) => getTransactionCount(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n prepareTransactionRequest: (args) => prepareTransactionRequest(client, args),\n readContract: (args) => readContract(client, args),\n sendRawTransaction: (args) => sendRawTransaction(client, args),\n simulateContract: (args) => simulateContract(client, args),\n verifyMessage: (args) => verifyMessage(client, args),\n verifySiweMessage: (args) => verifySiweMessage(client, args),\n verifyTypedData: (args) => verifyTypedData(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n };\n}\n//# sourceMappingURL=public.js.map","import { createClient, } from './createClient.js';\nimport { publicActions } from './decorators/public.js';\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://viem.sh/docs/clients/public\n *\n * A Public Client is an interface to \"public\" [JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Public Client. {@link PublicClient}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n */\nexport function createPublicClient(parameters) {\n const { key = 'public', name = 'Public Client' } = parameters;\n const client = createClient({\n ...parameters,\n key,\n name,\n type: 'publicClient',\n });\n return client.extend(publicActions);\n}\n//# sourceMappingURL=createPublicClient.js.map","import { encodeDeployData } from '../../utils/abi/encodeDeployData.js';\nimport { sendTransaction, } from './sendTransaction.js';\n/**\n * Deploys a contract to the network, given bytecode and constructor arguments.\n *\n * - Docs: https://viem.sh/docs/contract/deployContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_deploying-contracts\n *\n * @param client - Client to use\n * @param parameters - {@link DeployContractParameters}\n * @returns The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link DeployContractReturnType}\n *\n * @example\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { deployContract } from 'viem/contract'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const hash = await deployContract(client, {\n * abi: [],\n * account: '0x…,\n * bytecode: '0x608060405260405161083e38038061083e833981016040819052610...',\n * })\n */\nexport function deployContract(walletClient, parameters) {\n const { abi, args, bytecode, ...request } = parameters;\n const calldata = encodeDeployData({ abi, args, bytecode });\n return sendTransaction(walletClient, {\n ...request,\n data: calldata,\n });\n}\n//# sourceMappingURL=deployContract.js.map","import { checksumAddress, } from '../../utils/address/getAddress.js';\n/**\n * Returns a list of account addresses owned by the wallet or client.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/getAddresses\n * - JSON-RPC Methods: [`eth_accounts`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_accounts)\n *\n * @param client - Client to use\n * @returns List of account addresses owned by the wallet or client. {@link GetAddressesReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getAddresses } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const accounts = await getAddresses(client)\n */\nexport async function getAddresses(client) {\n if (client.account?.type === 'local')\n return [client.account.address];\n const addresses = await client.request({ method: 'eth_accounts' }, { dedupe: true });\n return addresses.map((address) => checksumAddress(address));\n}\n//# sourceMappingURL=getAddresses.js.map","/**\n * Gets the wallets current permissions.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/getPermissions\n * - JSON-RPC Methods: [`wallet_getPermissions`](https://eips.ethereum.org/EIPS/eip-2255)\n *\n * @param client - Client to use\n * @returns The wallet permissions. {@link GetPermissionsReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getPermissions } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const permissions = await getPermissions(client)\n */\nexport async function getPermissions(client) {\n const permissions = await client.request({ method: 'wallet_getPermissions' }, { dedupe: true });\n return permissions;\n}\n//# sourceMappingURL=getPermissions.js.map","import { getAddress } from '../../utils/address/getAddress.js';\n/**\n * Requests a list of accounts managed by a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/requestAddresses\n * - JSON-RPC Methods: [`eth_requestAccounts`](https://eips.ethereum.org/EIPS/eip-1102)\n *\n * Sends a request to the wallet, asking for permission to access the user's accounts. After the user accepts the request, it will return a list of accounts (addresses).\n *\n * This API can be useful for dapps that need to access the user's accounts in order to execute transactions or interact with smart contracts.\n *\n * @param client - Client to use\n * @returns List of accounts managed by a wallet {@link RequestAddressesReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { requestAddresses } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const accounts = await requestAddresses(client)\n */\nexport async function requestAddresses(client) {\n const addresses = await client.request({ method: 'eth_requestAccounts' }, { dedupe: true, retryCount: 0 });\n return addresses.map((address) => getAddress(address));\n}\n//# sourceMappingURL=requestAddresses.js.map","/**\n * Requests permissions for a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/requestPermissions\n * - JSON-RPC Methods: [`wallet_requestPermissions`](https://eips.ethereum.org/EIPS/eip-2255)\n *\n * @param client - Client to use\n * @param parameters - {@link RequestPermissionsParameters}\n * @returns The wallet permissions. {@link RequestPermissionsReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { requestPermissions } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const permissions = await requestPermissions(client, {\n * eth_accounts: {}\n * })\n */\nexport async function requestPermissions(client, permissions) {\n return client.request({\n method: 'wallet_requestPermissions',\n params: [permissions],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=requestPermissions.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError } from '../../errors/account.js';\nimport { stringToHex, toHex, } from '../../utils/encoding/toHex.js';\n/**\n * Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signMessage\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`personal_sign`](https://docs.metamask.io/guide/signing-data#personal-sign)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * With the calculated signature, you can:\n * - use [`verifyMessage`](https://viem.sh/docs/utilities/verifyMessage) to verify the signature,\n * - use [`recoverMessageAddress`](https://viem.sh/docs/utilities/recoverMessageAddress) to recover the signing address from a signature.\n *\n * @param client - Client to use\n * @param parameters - {@link SignMessageParameters}\n * @returns The signed message. {@link SignMessageReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signMessage } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signMessage(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * message: 'hello world',\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, custom } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signMessage } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signMessage(client, {\n * message: 'hello world',\n * })\n */\nexport async function signMessage(client, { account: account_ = client.account, message, }) {\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/signMessage',\n });\n const account = parseAccount(account_);\n if (account.signMessage)\n return account.signMessage({ message });\n const message_ = (() => {\n if (typeof message === 'string')\n return stringToHex(message);\n if (message.raw instanceof Uint8Array)\n return toHex(message.raw);\n return message.raw;\n })();\n return client.request({\n method: 'personal_sign',\n params: [message_, account.address],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=signMessage.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError } from '../../errors/account.js';\nimport { assertCurrentChain, } from '../../utils/chain/assertCurrentChain.js';\nimport { numberToHex } from '../../utils/encoding/toHex.js';\nimport { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { assertRequest, } from '../../utils/transaction/assertRequest.js';\nimport { getChainId } from '../public/getChainId.js';\n/**\n * Signs a transaction.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signTransaction\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_signTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * @param args - {@link SignTransactionParameters}\n * @returns The signed serialized transaction. {@link SignTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signTransaction } from 'viem/actions'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signTransaction(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signTransaction } from 'viem/actions'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signTransaction(client, {\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n */\nexport async function signTransaction(client, parameters) {\n const { account: account_ = client.account, chain = client.chain, ...transaction } = parameters;\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/signTransaction',\n });\n const account = parseAccount(account_);\n assertRequest({\n account,\n ...parameters,\n });\n const chainId = await getAction(client, getChainId, 'getChainId')({});\n if (chain !== null)\n assertCurrentChain({\n currentChainId: chainId,\n chain,\n });\n const formatters = chain?.formatters || client.chain?.formatters;\n const format = formatters?.transactionRequest?.format || formatTransactionRequest;\n if (account.signTransaction)\n return account.signTransaction({\n ...transaction,\n chainId,\n }, { serializer: client.chain?.serializers?.transaction });\n return await client.request({\n method: 'eth_signTransaction',\n params: [\n {\n ...format(transaction),\n chainId: numberToHex(chainId),\n from: account.address,\n },\n ],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=signTransaction.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError, } from '../../errors/account.js';\nimport { getTypesForEIP712Domain, serializeTypedData, validateTypedData, } from '../../utils/typedData.js';\n/**\n * Signs typed data and calculates an Ethereum-specific signature in [https://eips.ethereum.org/EIPS/eip-712](https://eips.ethereum.org/EIPS/eip-712): `sign(keccak256(\"\\x19\\x01\" ‖ domainSeparator ‖ hashStruct(message)))`\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signTypedData\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_signTypedData_v4`](https://docs.metamask.io/guide/signing-data#signtypeddata-v4)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * @param client - Client to use\n * @param parameters - {@link SignTypedDataParameters}\n * @returns The signed data. {@link SignTypedDataReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signTypedData } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signTypedData(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * domain: {\n * name: 'Ether Mail',\n * version: '1',\n * chainId: 1,\n * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n * },\n * types: {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'wallet', type: 'address' },\n * ],\n * Mail: [\n * { name: 'from', type: 'Person' },\n * { name: 'to', type: 'Person' },\n * { name: 'contents', type: 'string' },\n * ],\n * },\n * primaryType: 'Mail',\n * message: {\n * from: {\n * name: 'Cow',\n * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n * },\n * to: {\n * name: 'Bob',\n * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n * },\n * contents: 'Hello, Bob!',\n * },\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signTypedData } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const signature = await signTypedData(client, {\n * domain: {\n * name: 'Ether Mail',\n * version: '1',\n * chainId: 1,\n * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n * },\n * types: {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'wallet', type: 'address' },\n * ],\n * Mail: [\n * { name: 'from', type: 'Person' },\n * { name: 'to', type: 'Person' },\n * { name: 'contents', type: 'string' },\n * ],\n * },\n * primaryType: 'Mail',\n * message: {\n * from: {\n * name: 'Cow',\n * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n * },\n * to: {\n * name: 'Bob',\n * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n * },\n * contents: 'Hello, Bob!',\n * },\n * })\n */\nexport async function signTypedData(client, parameters) {\n const { account: account_ = client.account, domain, message, primaryType, } = parameters;\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/signTypedData',\n });\n const account = parseAccount(account_);\n const types = {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n ...parameters.types,\n };\n // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc\n // as we can't statically check this with TypeScript.\n validateTypedData({ domain, message, primaryType, types });\n if (account.signTypedData)\n return account.signTypedData({ domain, message, primaryType, types });\n const typedData = serializeTypedData({ domain, message, primaryType, types });\n return client.request({\n method: 'eth_signTypedData_v4',\n params: [account.address, typedData],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=signTypedData.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Switch the target chain in a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/switchChain\n * - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-3326)\n *\n * @param client - Client to use\n * @param parameters - {@link SwitchChainParameters}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet, optimism } from 'viem/chains'\n * import { switchChain } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * await switchChain(client, { id: optimism.id })\n */\nexport async function switchChain(client, { id }) {\n await client.request({\n method: 'wallet_switchEthereumChain',\n params: [\n {\n chainId: numberToHex(id),\n },\n ],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=switchChain.js.map","/**\n * Adds an EVM chain to the wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/watchAsset\n * - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-747)\n *\n * @param client - Client to use\n * @param parameters - {@link WatchAssetParameters}\n * @returns Boolean indicating if the token was successfully added. {@link WatchAssetReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchAsset } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const success = await watchAsset(client, {\n * type: 'ERC20',\n * options: {\n * address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n * decimals: 18,\n * symbol: 'WETH',\n * },\n * })\n */\nexport async function watchAsset(client, params) {\n const added = await client.request({\n method: 'wallet_watchAsset',\n params,\n }, { retryCount: 0 });\n return added;\n}\n//# sourceMappingURL=watchAsset.js.map","import { getChainId, } from '../../actions/public/getChainId.js';\nimport { addChain, } from '../../actions/wallet/addChain.js';\nimport { deployContract, } from '../../actions/wallet/deployContract.js';\nimport { getAddresses, } from '../../actions/wallet/getAddresses.js';\nimport { getPermissions, } from '../../actions/wallet/getPermissions.js';\nimport { prepareTransactionRequest, } from '../../actions/wallet/prepareTransactionRequest.js';\nimport { requestAddresses, } from '../../actions/wallet/requestAddresses.js';\nimport { requestPermissions, } from '../../actions/wallet/requestPermissions.js';\nimport { sendRawTransaction, } from '../../actions/wallet/sendRawTransaction.js';\nimport { sendTransaction, } from '../../actions/wallet/sendTransaction.js';\nimport { signMessage, } from '../../actions/wallet/signMessage.js';\nimport { signTransaction, } from '../../actions/wallet/signTransaction.js';\nimport { signTypedData, } from '../../actions/wallet/signTypedData.js';\nimport { switchChain, } from '../../actions/wallet/switchChain.js';\nimport { watchAsset, } from '../../actions/wallet/watchAsset.js';\nimport { writeContract, } from '../../actions/wallet/writeContract.js';\nexport function walletActions(client) {\n return {\n addChain: (args) => addChain(client, args),\n deployContract: (args) => deployContract(client, args),\n getAddresses: () => getAddresses(client),\n getChainId: () => getChainId(client),\n getPermissions: () => getPermissions(client),\n prepareTransactionRequest: (args) => prepareTransactionRequest(client, args),\n requestAddresses: () => requestAddresses(client),\n requestPermissions: (args) => requestPermissions(client, args),\n sendRawTransaction: (args) => sendRawTransaction(client, args),\n sendTransaction: (args) => sendTransaction(client, args),\n signMessage: (args) => signMessage(client, args),\n signTransaction: (args) => signTransaction(client, args),\n signTypedData: (args) => signTypedData(client, args),\n switchChain: (args) => switchChain(client, args),\n watchAsset: (args) => watchAsset(client, args),\n writeContract: (args) => writeContract(client, args),\n };\n}\n//# sourceMappingURL=wallet.js.map","import { createClient, } from './createClient.js';\nimport { walletActions } from './decorators/wallet.js';\nexport function createWalletClient(parameters) {\n const { key = 'wallet', name = 'Wallet Client', transport } = parameters;\n const client = createClient({\n ...parameters,\n key,\n name,\n transport,\n type: 'walletClient',\n });\n return client.extend(walletActions);\n}\n//# sourceMappingURL=createWalletClient.js.map"],"names":["Eip712DomainNotFoundError","BaseError","address","getEip712Domain","client","parameters","factory","factoryData","fields","name","version","chainId","verifyingContract","salt","extensions","getAction","readContract","abi","e","error","addChain","chain","id","nativeCurrency","rpcUrls","blockExplorers","numberToHex","url","size","index","buffer","uid","length","i","createClient","batch","cacheTime","ccipRead","key","pollingInterval","type","account","parseAccount","config","request","value","transport","extend","base","extendFn","extended","combined","promiseCache","LruMap","withDedupe","fn","enabled","promise","withRetry","delay_","retryCount","shouldRetry","resolve","reject","attemptRetry","count","retry","delay","wait","data","err","buildRequest","options","args","overrideOptions","dedupe","retryDelay","requestId","keccak256","stringToHex","stringify","err_","ParseRpcError","InvalidRequestRpcError","MethodNotFoundRpcError","InvalidParamsRpcError","InternalRpcError","InvalidInputRpcError","ResourceNotFoundRpcError","ResourceUnavailableRpcError","TransactionRejectedRpcError","MethodNotSupportedRpcError","LimitExceededRpcError","JsonRpcVersionUnsupportedError","UserRejectedRequestError","UnauthorizedProviderError","UnsupportedProviderMethodError","ProviderDisconnectedError","ChainDisconnectedError","SwitchChainError","UnknownRpcError","HttpRequestError","retryAfter","_a","createTransport","timeout","uid_","UrlRequiredError","withTimeout","errorInstance","signal","timeoutId","controller","createIdStore","idCache","getHttpRpcClient","params","body","onRequest","onResponse","fetchOptions","headers","method","signal_","response","init","TimeoutError","http","onFetchRequest","onFetchResponse","retryCount_","timeout_","batchSize","url_","rpcClient","schedule","createBatchScheduler","requests","a","b","result","RpcRequestError","isNullUniversalResolverError","callType","cause","ContractFunctionRevertedError","_b","_c","_d","_e","_f","panicReasons","encodedLabelToLabelhash","label","hash","isHex","namehash","bytesToHex","labels","hashFromEncodedLabel","hashed","toBytes","stringToBytes","concat","encodeLabelhash","labelhash","packetToBytes","packet","bytes","offset","list","encoded","getEnsAddress","blockNumber","blockTag","coinType","gatewayUrls","strict","universalResolverAddress_","universalResolverAddress","getChainContractAddress","functionData","encodeFunctionData","addressResolverAbi","readContractParameters","universalResolverResolveAbi","toHex","readContractAction","res","decodeFunctionResult","trim","EnsAvatarInvalidMetadataError","EnsAvatarInvalidNftUriError","reason","EnsAvatarUriResolutionError","uri","EnsAvatarUnsupportedNamespaceError","namespace","networkRegex","ipfsHashRegex","base64Regex","dataURIRegex","isImageUri","contentType","img","getGateway","custom","defaultGateway","resolveAvatarUri","isEncoded","ipfsGateway","arweaveGateway","networkRegexMatch","protocol","subpath","target","subtarget","isIPNS","isIPFS","replacedUri","parsedUri","getJsonImage","getMetadataAvatarUri","parseAvatarUri","resolvedURI","isOnChain","parseNftUri","uri_","reference","asset_namespace","tokenID","eip_namespace","chainID","erc_namespace","contractAddress","getNftTokenUri","nft","parseAvatarRecord","record","parseNftAvatarUri","nftUri","resolvedNftUri","encodedJson","decoded","uriTokenId","getEnsText","textResolverAbi","getEnsAvatar","assetGatewayUrls","getEnsName","reverseNode","universalResolverReverseAbi","resolvedAddress","getEnsResolver","resolverAddress","createBlockFilter","getRequest","createFilterRequestScope","createEventFilter","event","events_","fromBlock","toBlock","events","topics","encodeEventTopics","createPendingTransactionFilter","getBlobBaseFee","baseFee","getBlockTransactionCount","blockHash","blockNumberHex","hexToNumber","getCode","hex","formatFeeHistory","feeHistory","reward","getFeeHistory","blockCount","rewardPercentiles","getFilterLogs","_client","filter","formattedLogs","log","formatLog","parseEventLogs","InvalidDomainError","domain","InvalidPrimaryTypeError","primaryType","types","InvalidStructTypeError","hashTypedData","message","getTypesForEIP712Domain","validateTypedData","parts","hashDomain","hashStruct","encodeData","encodedTypes","encodedValues","hashType","field","encodeField","encodeAbiParameters","encodedHashType","encodeType","unsortedDeps","findTypeDependencies","deps","t","primaryType_","results","match","parsedType","typeValuePairs","item","v","serializeTypedData","domain_","message_","normalizeData","struct","data_","param","validateData","integerMatch","integerRegex","_type","size_","isAddress","InvalidAddressError","bytesMatch","bytesRegex","BytesSizeMismatchError","validateReference","presignMessagePrefix","toPrefixedMessage","prefix","hashMessage","to_","erc6492MagicBytes","isErc6492Signature","signature","sliceHex","serializeErc6492Signature","to","signature_","concatHex","hexToBytes","formatStorageProof","storageProof","proof","formatProof","getProof","blockTag_","storageKeys","getStorageAt","slot","getTransaction","transaction","TransactionNotFoundError","formatTransaction","getTransactionConfirmations","transactionReceipt","getBlockNumber","transactionBlockNumber","getTransactionReceipt","receipt","TransactionReceiptNotFoundError","formatTransactionReceipt","multicall","allowFailure","batchSize_","multicallAddress_","stateOverride","contracts","multicallAddress","chunkedCalls","currentChunk","currentChunkSize","functionName","callData","getContractError","aggregate3Results","calls","multicall3Abi","j","aggregate3Result","returnData","success","AbiDecodingZeroDataError","RawContractError","serializeSignature","r","s","yParity","yParity_","secp256k1","hexToBigInt","verifyHash","universalSignatureVerifierAddress","rest","signatureHex","wrappedSignature","universalSignatureValidatorAbi","encodeDeployData","universalSignatureValidatorByteCode","call","hexToBool","isAddressEqual","getAddress","recoverAddress","CallExecutionError","verifyMessage","callRequest","verifyTypedData","watchBlockNumber","emitOnBegin","emitMissed","onBlockNumber","onError","poll_","enablePolling","prevBlockNumber","observerId","observe","emit","poll","active","unsubscribe","unsubscribe_","waitForTransactionReceipt","confirmations","onReplaced","replacedTransaction","retrying","withResolvers","timer","WaitForTransactionReceiptTimeoutError","_unobserve","_unwatch","blockNumber_","done","block","getBlock","BlockNotFoundError","replacementTransaction","from","nonce","watchBlocks","onBlock","includeTransactions_","includeTransactions","prevBlock","emitFetched","watchEvent","onLogs","strict_","previousBlockNumber","initialized","unwatch","logs","getFilterChanges","getLogs","uninstallFilter","eventName","decodeEventLog","formatted","isUnnamed","DecodeLogDataMismatch","DecodeLogTopicsMismatch","x","watchPendingTransactions","onTransactions","hashes","parseSiweMessage","scheme","statement","prefixRegex","expirationTime","issuedAt","notBefore","suffix","suffixRegex","resources","validateSiweMessage","time","verifySiweMessage","parsed","publicActions","createContractEventFilter","estimateContractGas","estimateGas","getBalance","getChainId","getContractEvents","estimateFeesPerGas","getGasPrice","estimateMaxPriorityFeePerGas","getTransactionCount","prepareTransactionRequest","sendRawTransaction","simulateContract","watchContractEvent","createPublicClient","deployContract","walletClient","bytecode","calldata","sendTransaction","getAddresses","checksumAddress","getPermissions","requestAddresses","requestPermissions","permissions","signMessage","account_","AccountNotFoundError","signTransaction","assertRequest","assertCurrentChain","formatters","format","formatTransactionRequest","signTypedData","typedData","switchChain","watchAsset","walletActions","writeContract","createWalletClient"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78]}