viem 0.0.1-cjs.10 → 0.0.1-sushi.26
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.
- package/contract/package.json +4 -0
- package/dist/call-ac509982.d.ts +23 -0
- package/dist/chain-c4ccb458.d.ts +5 -0
- package/dist/{rpc-b77c5aee.d.ts → chain-f16512e8.d.ts} +97 -17
- package/dist/chains.d.ts +1303 -74
- package/dist/chains.js +81 -85
- package/dist/chains.js.map +1 -0
- package/dist/chains.mjs +121 -125
- package/dist/chains.mjs.map +1 -0
- package/dist/chunk-2PFNLP3F.js +192 -0
- package/dist/chunk-2PFNLP3F.js.map +1 -0
- package/dist/chunk-5ND4P6QL.mjs +192 -0
- package/dist/chunk-5ND4P6QL.mjs.map +1 -0
- package/dist/{chunk-5ZBNF5WM.js → chunk-NXCI5KQC.js} +769 -359
- package/dist/chunk-NXCI5KQC.js.map +1 -0
- package/dist/{chunk-HLVCJ7RV.mjs → chunk-O7T5NQLB.mjs} +484 -477
- package/dist/chunk-O7T5NQLB.mjs.map +1 -0
- package/dist/{chunk-2FDH6XP5.mjs → chunk-SD5X7F4U.mjs} +777 -367
- package/dist/chunk-SD5X7F4U.mjs.map +1 -0
- package/dist/{chunk-46ZFLVHC.js → chunk-UTL6F7UN.js} +519 -512
- package/dist/chunk-UTL6F7UN.js.map +1 -0
- package/dist/contract-9e76e561.d.ts +166 -0
- package/dist/contract.d.ts +123 -0
- package/dist/contract.js +53 -0
- package/dist/contract.js.map +1 -0
- package/dist/contract.mjs +53 -0
- package/dist/contract.mjs.map +1 -0
- package/dist/createClient-68ee4bb4.d.ts +62 -0
- package/dist/createPublicClient-b732194e.d.ts +19 -0
- package/dist/createTestClient-dedf321e.d.ts +34 -0
- package/dist/createWalletClient-75813d83.d.ts +30 -0
- package/dist/decodeErrorResult-0b934d23.d.ts +16 -0
- package/dist/{eip1193-020a6f13.d.ts → eip1193-6f9ba163.d.ts} +12 -9
- package/dist/ens.d.ts +82 -0
- package/dist/ens.js +216 -0
- package/dist/ens.js.map +1 -0
- package/dist/ens.mjs +216 -0
- package/dist/ens.mjs.map +1 -0
- package/dist/getAbiItem-c8e6e7d4.d.ts +97 -0
- package/dist/index.d.ts +128 -33
- package/dist/index.js +240 -244
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +257 -261
- package/dist/index.mjs.map +1 -0
- package/dist/public.d.ts +353 -0
- package/dist/public.js +58 -0
- package/dist/public.js.map +1 -0
- package/dist/public.mjs +58 -0
- package/dist/public.mjs.map +1 -0
- package/dist/readContract-4f6e2692.d.ts +10 -0
- package/dist/rpc-a5a7f376.d.ts +121 -0
- package/dist/sendTransaction-e713f90c.d.ts +12 -0
- package/dist/test.d.ts +161 -0
- package/dist/test.js +264 -0
- package/dist/test.js.map +1 -0
- package/dist/test.mjs +264 -0
- package/dist/test.mjs.map +1 -0
- package/dist/transactionReceipt-2a86c7c7.d.ts +26 -0
- package/dist/transactionRequest-c7794f5e.d.ts +15 -0
- package/dist/utils/index.d.ts +238 -24
- package/dist/utils/index.js +27 -2
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +30 -5
- package/dist/utils/index.mjs.map +1 -0
- package/dist/wallet.d.ts +42 -0
- package/dist/wallet.js +24 -0
- package/dist/wallet.js.map +1 -0
- package/dist/wallet.mjs +24 -0
- package/dist/wallet.mjs.map +1 -0
- package/dist/watchEvent-c346c12d.d.ts +41 -0
- package/dist/window.d.ts +3 -2
- package/dist/window.js +1 -1
- package/dist/window.js.map +1 -0
- package/dist/window.mjs +1 -0
- package/dist/window.mjs.map +1 -0
- package/ens/package.json +4 -0
- package/package.json +40 -72
- package/src/_test/abis.ts +1420 -0
- package/src/_test/bench.ts +15 -0
- package/src/_test/constants.ts +63 -0
- package/src/_test/generated.ts +128 -0
- package/src/_test/globalSetup.ts +11 -0
- package/src/_test/index.ts +25 -0
- package/src/_test/setup.ts +8 -0
- package/src/_test/utils.ts +155 -0
- package/src/actions/ens/getEnsAddress.bench.ts +26 -0
- package/src/actions/ens/getEnsAddress.test.ts +97 -0
- package/src/actions/ens/getEnsAddress.ts +122 -0
- package/src/actions/ens/getEnsName.bench.ts +30 -0
- package/src/actions/ens/getEnsName.test.ts +101 -0
- package/src/actions/ens/getEnsName.ts +106 -0
- package/src/actions/ens/index.test.ts +12 -0
- package/src/actions/ens/index.ts +3 -0
- package/src/actions/index.test.ts +81 -0
- package/src/actions/index.ts +182 -0
- package/src/actions/public/call.bench.ts +48 -0
- package/src/actions/public/call.test.ts +99 -0
- package/src/actions/public/call.ts +97 -0
- package/src/actions/public/createBlockFilter.bench.ts +11 -0
- package/src/actions/public/createBlockFilter.test.ts +9 -0
- package/src/actions/public/createBlockFilter.ts +14 -0
- package/src/actions/public/createContractEventFilter.test.ts +119 -0
- package/src/actions/public/createContractEventFilter.ts +69 -0
- package/src/actions/public/createEventFilter.test.ts +277 -0
- package/src/actions/public/createEventFilter.ts +93 -0
- package/src/actions/public/createPendingTransactionFilter.bench.ts +11 -0
- package/src/actions/public/createPendingTransactionFilter.test.ts +9 -0
- package/src/actions/public/createPendingTransactionFilter.ts +14 -0
- package/src/actions/public/estimateGas.bench.ts +46 -0
- package/src/actions/public/estimateGas.test.ts +92 -0
- package/src/actions/public/estimateGas.ts +61 -0
- package/src/actions/public/getBalance.test.ts +83 -0
- package/src/actions/public/getBalance.ts +37 -0
- package/src/actions/public/getBlock.bench.ts +28 -0
- package/src/actions/public/getBlock.test.ts +575 -0
- package/src/actions/public/getBlock.ts +65 -0
- package/src/actions/public/getBlockNumber.bench.ts +28 -0
- package/src/actions/public/getBlockNumber.test.ts +27 -0
- package/src/actions/public/getBlockNumber.ts +32 -0
- package/src/actions/public/getBlockTransactionCount.bench.ts +15 -0
- package/src/actions/public/getBlockTransactionCount.test.ts +57 -0
- package/src/actions/public/getBlockTransactionCount.ts +52 -0
- package/src/actions/public/getBytecode.test.ts +27 -0
- package/src/actions/public/getBytecode.ts +32 -0
- package/src/actions/public/getChainId.bench.ts +15 -0
- package/src/actions/public/getChainId.test.ts +8 -0
- package/src/actions/public/getChainId.ts +7 -0
- package/src/actions/public/getFeeHistory.bench.ts +18 -0
- package/src/actions/public/getFeeHistory.test.ts +137 -0
- package/src/actions/public/getFeeHistory.ts +44 -0
- package/src/actions/public/getFilterChanges.bench.ts +13 -0
- package/src/actions/public/getFilterChanges.test.ts +383 -0
- package/src/actions/public/getFilterChanges.ts +23 -0
- package/src/actions/public/getFilterLogs.test.ts +297 -0
- package/src/actions/public/getFilterLogs.ts +20 -0
- package/src/actions/public/getGasPrice.bench.ts +19 -0
- package/src/actions/public/getGasPrice.test.ts +8 -0
- package/src/actions/public/getGasPrice.ts +15 -0
- package/src/actions/public/getLogs.test.ts +306 -0
- package/src/actions/public/getLogs.ts +84 -0
- package/src/actions/public/getStorageAt.test.ts +34 -0
- package/src/actions/public/getStorageAt.ts +32 -0
- package/src/actions/public/getTransaction.bench.ts +33 -0
- package/src/actions/public/getTransaction.test.ts +311 -0
- package/src/actions/public/getTransaction.ts +95 -0
- package/src/actions/public/getTransactionConfirmations.test.ts +69 -0
- package/src/actions/public/getTransactionConfirmations.ts +38 -0
- package/src/actions/public/getTransactionCount.test.ts +56 -0
- package/src/actions/public/getTransactionCount.ts +34 -0
- package/src/actions/public/getTransactionReceipt.bench.ts +33 -0
- package/src/actions/public/getTransactionReceipt.test.ts +179 -0
- package/src/actions/public/getTransactionReceipt.ts +34 -0
- package/src/actions/public/index.test.ts +43 -0
- package/src/actions/public/index.ts +146 -0
- package/src/actions/public/multicall.test.ts +452 -0
- package/src/actions/public/multicall.ts +108 -0
- package/src/actions/public/readContract.test.ts +328 -0
- package/src/actions/public/readContract.ts +73 -0
- package/src/actions/public/simulateContract.bench.ts +41 -0
- package/src/actions/public/simulateContract.test.ts +410 -0
- package/src/actions/public/simulateContract.ts +91 -0
- package/src/actions/public/uninstallFilter.bench.ts +13 -0
- package/src/actions/public/uninstallFilter.test.ts +65 -0
- package/src/actions/public/uninstallFilter.ts +17 -0
- package/src/actions/public/waitForTransactionReceipt.test.ts +322 -0
- package/src/actions/public/waitForTransactionReceipt.ts +170 -0
- package/src/actions/public/watchBlockNumber.test.ts +166 -0
- package/src/actions/public/watchBlockNumber.ts +79 -0
- package/src/actions/public/watchBlocks.test.ts +210 -0
- package/src/actions/public/watchBlocks.ts +114 -0
- package/src/actions/public/watchContractEvent.test.ts +305 -0
- package/src/actions/public/watchContractEvent.ts +108 -0
- package/src/actions/public/watchEvent.test.ts +195 -0
- package/src/actions/public/watchEvent.ts +95 -0
- package/src/actions/public/watchPendingTransactions.test.ts +116 -0
- package/src/actions/public/watchPendingTransactions.ts +74 -0
- package/src/actions/test/dropTransaction.test.ts +34 -0
- package/src/actions/test/dropTransaction.ts +17 -0
- package/src/actions/test/getAutomine.test.ts +14 -0
- package/src/actions/test/getAutomine.ts +11 -0
- package/src/actions/test/getTxpoolContent.test.ts +45 -0
- package/src/actions/test/getTxpoolContent.ts +7 -0
- package/src/actions/test/getTxpoolStatus.test.ts +41 -0
- package/src/actions/test/getTxpoolStatus.ts +12 -0
- package/src/actions/test/impersonateAccount.test.ts +26 -0
- package/src/actions/test/impersonateAccount.ts +17 -0
- package/src/actions/test/increaseTime.test.ts +18 -0
- package/src/actions/test/increaseTime.ts +17 -0
- package/src/actions/test/index.test.ts +38 -0
- package/src/actions/test/index.ts +77 -0
- package/src/actions/test/inspectTxpool.test.ts +50 -0
- package/src/actions/test/inspectTxpool.ts +7 -0
- package/src/actions/test/mine.test.ts +20 -0
- package/src/actions/test/mine.ts +16 -0
- package/src/actions/test/removeBlockTimestampInterval.test.ts +23 -0
- package/src/actions/test/removeBlockTimestampInterval.ts +7 -0
- package/src/actions/test/reset.test.ts +19 -0
- package/src/actions/test/reset.ts +18 -0
- package/src/actions/test/revert.test.ts +39 -0
- package/src/actions/test/revert.ts +14 -0
- package/src/actions/test/sendUnsignedTransaction.test.ts +52 -0
- package/src/actions/test/sendUnsignedTransaction.ts +19 -0
- package/src/actions/test/setAutomine.test.ts +14 -0
- package/src/actions/test/setAutomine.ts +8 -0
- package/src/actions/test/setBalance.test.ts +29 -0
- package/src/actions/test/setBalance.ts +20 -0
- package/src/actions/test/setBlockGasLimit.test.ts +21 -0
- package/src/actions/test/setBlockGasLimit.ts +17 -0
- package/src/actions/test/setBlockTimestampInterval.test.ts +23 -0
- package/src/actions/test/setBlockTimestampInterval.ts +16 -0
- package/src/actions/test/setCode.test.ts +26 -0
- package/src/actions/test/setCode.ts +19 -0
- package/src/actions/test/setCoinbase.test.ts +11 -0
- package/src/actions/test/setCoinbase.ts +17 -0
- package/src/actions/test/setIntervalMining.test.ts +30 -0
- package/src/actions/test/setIntervalMining.ts +16 -0
- package/src/actions/test/setLoggingEnabled.test.ts +10 -0
- package/src/actions/test/setLoggingEnabled.ts +8 -0
- package/src/actions/test/setMinGasPrice.test.ts +22 -0
- package/src/actions/test/setMinGasPrice.ts +17 -0
- package/src/actions/test/setNextBlockBaseFeePerGas.test.ts +23 -0
- package/src/actions/test/setNextBlockBaseFeePerGas.ts +17 -0
- package/src/actions/test/setNextBlockTimestamp.test.ts +19 -0
- package/src/actions/test/setNextBlockTimestamp.ts +17 -0
- package/src/actions/test/setNonce.test.ts +28 -0
- package/src/actions/test/setNonce.ts +20 -0
- package/src/actions/test/setRpcUrl.test.ts +9 -0
- package/src/actions/test/setRpcUrl.ts +8 -0
- package/src/actions/test/setStorageAt.test.ts +36 -0
- package/src/actions/test/setStorageAt.ts +26 -0
- package/src/actions/test/snapshot.test.ts +18 -0
- package/src/actions/test/snapshot.ts +7 -0
- package/src/actions/test/stopImpersonatingAccount.test.ts +29 -0
- package/src/actions/test/stopImpersonatingAccount.ts +17 -0
- package/src/actions/wallet/addChain.test.ts +14 -0
- package/src/actions/wallet/addChain.ts +21 -0
- package/src/actions/wallet/deployContract.test.ts +55 -0
- package/src/actions/wallet/deployContract.ts +38 -0
- package/src/actions/wallet/getAccounts.test.ts +22 -0
- package/src/actions/wallet/getAccounts.ts +7 -0
- package/src/actions/wallet/getPermissions.test.ts +24 -0
- package/src/actions/wallet/getPermissions.ts +9 -0
- package/src/actions/wallet/index.test.ts +21 -0
- package/src/actions/wallet/index.ts +36 -0
- package/src/actions/wallet/requestAccounts.test.ts +13 -0
- package/src/actions/wallet/requestAccounts.ts +7 -0
- package/src/actions/wallet/requestPermissions.test.ts +26 -0
- package/src/actions/wallet/requestPermissions.ts +19 -0
- package/src/actions/wallet/sendTransaction.bench.ts +57 -0
- package/src/actions/wallet/sendTransaction.test.ts +440 -0
- package/src/actions/wallet/sendTransaction.ts +77 -0
- package/src/actions/wallet/signMessage.test.ts +61 -0
- package/src/actions/wallet/signMessage.ts +35 -0
- package/src/actions/wallet/switchChain.test.ts +21 -0
- package/src/actions/wallet/switchChain.ts +19 -0
- package/src/actions/wallet/watchAsset.test.ts +40 -0
- package/src/actions/wallet/watchAsset.ts +16 -0
- package/src/actions/wallet/writeContract.test.ts +84 -0
- package/src/actions/wallet/writeContract.ts +47 -0
- package/src/chains.test.ts +439 -0
- package/src/chains.ts +99 -0
- package/src/clients/createClient.test.ts +295 -0
- package/src/clients/createClient.ts +81 -0
- package/src/clients/createPublicClient.test.ts +165 -0
- package/src/clients/createPublicClient.ts +49 -0
- package/src/clients/createTestClient.test.ts +145 -0
- package/src/clients/createTestClient.ts +72 -0
- package/src/clients/createWalletClient.test.ts +121 -0
- package/src/clients/createWalletClient.ts +54 -0
- package/src/clients/index.test.ts +19 -0
- package/src/clients/index.ts +31 -0
- package/src/clients/transports/createTransport.test.ts +58 -0
- package/src/clients/transports/createTransport.ts +48 -0
- package/src/clients/transports/custom.test.ts +98 -0
- package/src/clients/transports/custom.ts +34 -0
- package/src/clients/transports/fallback.test.ts +393 -0
- package/src/clients/transports/fallback.ts +58 -0
- package/src/clients/transports/http.test.ts +109 -0
- package/src/clients/transports/http.ts +51 -0
- package/src/clients/transports/index.test.ts +15 -0
- package/src/clients/transports/index.ts +17 -0
- package/src/clients/transports/webSocket.test.ts +164 -0
- package/src/clients/transports/webSocket.ts +118 -0
- package/src/constants/abis.test.ts +53 -0
- package/src/constants/abis.ts +44 -0
- package/src/constants/index.test.ts +14 -0
- package/src/constants/index.ts +3 -0
- package/src/constants/solidity.test.ts +41 -0
- package/src/constants/solidity.ts +35 -0
- package/src/contract.test.ts +32 -0
- package/src/contract.ts +68 -0
- package/src/ens.test.ts +15 -0
- package/src/ens.ts +8 -0
- package/src/errors/abi.test.ts +81 -0
- package/src/errors/abi.ts +254 -0
- package/src/errors/address.test.ts +14 -0
- package/src/errors/address.ts +9 -0
- package/src/errors/base.test.ts +114 -0
- package/src/errors/base.ts +57 -0
- package/src/errors/block.test.ts +24 -0
- package/src/errors/block.ts +18 -0
- package/src/errors/chain.test.ts +46 -0
- package/src/errors/chain.ts +33 -0
- package/src/errors/contract.test.ts +233 -0
- package/src/errors/contract.ts +178 -0
- package/src/errors/data.ts +20 -0
- package/src/errors/encoding.ts +60 -0
- package/src/errors/index.ts +82 -0
- package/src/errors/log.ts +8 -0
- package/src/errors/request.test.ts +330 -0
- package/src/errors/request.ts +163 -0
- package/src/errors/rpc.test.ts +87 -0
- package/src/errors/rpc.ts +113 -0
- package/src/errors/transaction.test.ts +83 -0
- package/src/errors/transaction.ts +54 -0
- package/src/errors/transport.test.ts +11 -0
- package/src/errors/transport.ts +12 -0
- package/src/index.test.ts +116 -0
- package/src/index.ts +132 -0
- package/src/public.test.ts +36 -0
- package/src/public.ts +76 -0
- package/src/test.test.ts +38 -0
- package/src/test.ts +52 -0
- package/src/types/block.ts +71 -0
- package/src/types/chain.ts +6 -0
- package/src/types/contract.ts +497 -0
- package/src/types/eip1193.ts +1041 -0
- package/src/types/fee.ts +47 -0
- package/src/types/filter.ts +8 -0
- package/src/types/formatter.ts +23 -0
- package/src/types/index.ts +84 -0
- package/src/types/log.ts +22 -0
- package/src/types/misc.ts +5 -0
- package/src/types/multicall.ts +82 -0
- package/src/types/rpc.ts +35 -0
- package/src/types/transaction.ts +145 -0
- package/src/types/utils.ts +88 -0
- package/src/types/window.ts +9 -0
- package/src/utils/abi/decodeAbi.bench.ts +135 -0
- package/src/utils/abi/decodeAbi.test.ts +1614 -0
- package/src/utils/abi/decodeAbi.ts +300 -0
- package/src/utils/abi/decodeDeployData.test.ts +151 -0
- package/src/utils/abi/decodeDeployData.ts +44 -0
- package/src/utils/abi/decodeErrorResult.test.ts +230 -0
- package/src/utils/abi/decodeErrorResult.ts +45 -0
- package/src/utils/abi/decodeEventLog.test.ts +542 -0
- package/src/utils/abi/decodeEventLog.ts +107 -0
- package/src/utils/abi/decodeFunctionData.test.ts +138 -0
- package/src/utils/abi/decodeFunctionData.ts +32 -0
- package/src/utils/abi/decodeFunctionResult.test.ts +333 -0
- package/src/utils/abi/decodeFunctionResult.ts +57 -0
- package/src/utils/abi/encodeAbi.bench.ts +163 -0
- package/src/utils/abi/encodeAbi.test.ts +1447 -0
- package/src/utils/abi/encodeAbi.ts +273 -0
- package/src/utils/abi/encodeDeployData.test.ts +124 -0
- package/src/utils/abi/encodeDeployData.ts +40 -0
- package/src/utils/abi/encodeErrorResult.test.ts +192 -0
- package/src/utils/abi/encodeErrorResult.ts +47 -0
- package/src/utils/abi/encodeEventTopics.test.ts +345 -0
- package/src/utils/abi/encodeEventTopics.ts +75 -0
- package/src/utils/abi/encodeFunctionData.test.ts +138 -0
- package/src/utils/abi/encodeFunctionData.ts +42 -0
- package/src/utils/abi/encodeFunctionResult.test.ts +279 -0
- package/src/utils/abi/encodeFunctionResult.ts +41 -0
- package/src/utils/abi/formatAbiItem.test.ts +335 -0
- package/src/utils/abi/formatAbiItem.ts +41 -0
- package/src/utils/abi/formatAbiItemWithArgs.test.ts +291 -0
- package/src/utils/abi/formatAbiItemWithArgs.ts +27 -0
- package/src/utils/abi/getAbiItem.test.ts +547 -0
- package/src/utils/abi/getAbiItem.ts +95 -0
- package/src/utils/abi/index.test.ts +24 -0
- package/src/utils/abi/index.ts +48 -0
- package/src/utils/address/getAddress.bench.ts +22 -0
- package/src/utils/address/getAddress.test.ts +46 -0
- package/src/utils/address/getAddress.ts +28 -0
- package/src/utils/address/getContractAddress.bench.ts +20 -0
- package/src/utils/address/getContractAddress.test.ts +78 -0
- package/src/utils/address/getContractAddress.ts +59 -0
- package/src/utils/address/index.test.ts +17 -0
- package/src/utils/address/index.ts +16 -0
- package/src/utils/address/isAddress.test.ts +10 -0
- package/src/utils/address/isAddress.ts +10 -0
- package/src/utils/address/isAddressEqual.test.ts +55 -0
- package/src/utils/address/isAddressEqual.ts +6 -0
- package/src/utils/buildRequest.test.ts +428 -0
- package/src/utils/buildRequest.ts +72 -0
- package/src/utils/chain.test.ts +43 -0
- package/src/utils/chain.ts +8 -0
- package/src/utils/contract/extractFunctionParts.test.ts +109 -0
- package/src/utils/contract/extractFunctionParts.ts +27 -0
- package/src/utils/contract/getContractError.test.ts +282 -0
- package/src/utils/contract/getContractError.ts +58 -0
- package/src/utils/contract/index.test.ts +15 -0
- package/src/utils/contract/index.ts +8 -0
- package/src/utils/data/concat.test.ts +35 -0
- package/src/utils/data/concat.ts +34 -0
- package/src/utils/data/index.test.ts +23 -0
- package/src/utils/data/index.ts +13 -0
- package/src/utils/data/isBytes.test.ts +9 -0
- package/src/utils/data/isBytes.ts +7 -0
- package/src/utils/data/isHex.test.ts +13 -0
- package/src/utils/data/isHex.ts +5 -0
- package/src/utils/data/pad.bench.ts +30 -0
- package/src/utils/data/pad.test.ts +367 -0
- package/src/utils/data/pad.ts +53 -0
- package/src/utils/data/size.test.ts +18 -0
- package/src/utils/data/size.ts +13 -0
- package/src/utils/data/slice.test.ts +203 -0
- package/src/utils/data/slice.ts +60 -0
- package/src/utils/data/trim.bench.ts +34 -0
- package/src/utils/data/trim.test.ts +175 -0
- package/src/utils/data/trim.ts +33 -0
- package/src/utils/encoding/decodeBytes.bench.ts +40 -0
- package/src/utils/encoding/decodeBytes.test.ts +144 -0
- package/src/utils/encoding/decodeBytes.ts +63 -0
- package/src/utils/encoding/decodeHex.bench.ts +24 -0
- package/src/utils/encoding/decodeHex.test.ts +167 -0
- package/src/utils/encoding/decodeHex.ts +76 -0
- package/src/utils/encoding/decodeRlp.bench.ts +34 -0
- package/src/utils/encoding/decodeRlp.test.ts +350 -0
- package/src/utils/encoding/decodeRlp.ts +121 -0
- package/src/utils/encoding/encodeBytes.bench.ts +29 -0
- package/src/utils/encoding/encodeBytes.test.ts +676 -0
- package/src/utils/encoding/encodeBytes.ts +59 -0
- package/src/utils/encoding/encodeHex.bench.ts +49 -0
- package/src/utils/encoding/encodeHex.test.ts +232 -0
- package/src/utils/encoding/encodeHex.ts +104 -0
- package/src/utils/encoding/encodeRlp.bench.ts +54 -0
- package/src/utils/encoding/encodeRlp.test.ts +254 -0
- package/src/utils/encoding/encodeRlp.ts +48 -0
- package/src/utils/encoding/index.test.ts +32 -0
- package/src/utils/encoding/index.ts +36 -0
- package/src/utils/ens/index.test.ts +14 -0
- package/src/utils/ens/index.ts +7 -0
- package/src/utils/ens/labelhash.test.ts +55 -0
- package/src/utils/ens/labelhash.ts +16 -0
- package/src/utils/ens/namehash.test.ts +65 -0
- package/src/utils/ens/namehash.ts +28 -0
- package/src/utils/ens/normalize.bench.ts +14 -0
- package/src/utils/ens/normalize.test.ts +35 -0
- package/src/utils/ens/normalize.ts +14 -0
- package/src/utils/ens/packetToBytes.test.ts +11 -0
- package/src/utils/ens/packetToBytes.ts +29 -0
- package/src/utils/formatters/block.bench.ts +51 -0
- package/src/utils/formatters/block.test.ts +115 -0
- package/src/utils/formatters/block.ts +37 -0
- package/src/utils/formatters/extract.test.ts +14 -0
- package/src/utils/formatters/extract.ts +18 -0
- package/src/utils/formatters/feeHistory.test.ts +66 -0
- package/src/utils/formatters/feeHistory.ts +12 -0
- package/src/utils/formatters/format.test.ts +93 -0
- package/src/utils/formatters/format.ts +90 -0
- package/src/utils/formatters/index.test.ts +27 -0
- package/src/utils/formatters/index.ts +34 -0
- package/src/utils/formatters/log.test.ts +79 -0
- package/src/utils/formatters/log.ts +12 -0
- package/src/utils/formatters/transaction.test.ts +271 -0
- package/src/utils/formatters/transaction.ts +63 -0
- package/src/utils/formatters/transactionReceipt.bench.ts +73 -0
- package/src/utils/formatters/transactionReceipt.test.ts +151 -0
- package/src/utils/formatters/transactionReceipt.ts +63 -0
- package/src/utils/formatters/transactionRequest.bench.ts +29 -0
- package/src/utils/formatters/transactionRequest.test.ts +237 -0
- package/src/utils/formatters/transactionRequest.ts +56 -0
- package/src/utils/hash/getEventSignature.test.ts +61 -0
- package/src/utils/hash/getEventSignature.ts +4 -0
- package/src/utils/hash/getFunctionSignature.test.ts +22 -0
- package/src/utils/hash/getFunctionSignature.ts +5 -0
- package/src/utils/hash/hashFunction.test.ts +65 -0
- package/src/utils/hash/hashFunction.ts +12 -0
- package/src/utils/hash/index.test.ts +13 -0
- package/src/utils/hash/index.ts +5 -0
- package/src/utils/hash/keccak256.test.ts +59 -0
- package/src/utils/hash/keccak256.ts +21 -0
- package/src/utils/index.test.ts +111 -0
- package/src/utils/index.ts +142 -0
- package/src/utils/observe.test.ts +176 -0
- package/src/utils/observe.ts +66 -0
- package/src/utils/poll.test.ts +127 -0
- package/src/utils/poll.ts +42 -0
- package/src/utils/promise/index.test.ts +14 -0
- package/src/utils/promise/index.ts +3 -0
- package/src/utils/promise/withCache.test.ts +97 -0
- package/src/utils/promise/withCache.ts +73 -0
- package/src/utils/promise/withRetry.test.ts +231 -0
- package/src/utils/promise/withRetry.ts +61 -0
- package/src/utils/promise/withTimeout.test.ts +37 -0
- package/src/utils/promise/withTimeout.ts +39 -0
- package/src/utils/rpc.test.ts +990 -0
- package/src/utils/rpc.ts +294 -0
- package/src/utils/stringify.test.ts +13 -0
- package/src/utils/stringify.ts +5 -0
- package/src/utils/uid.ts +14 -0
- package/src/utils/unit/constants.test.ts +22 -0
- package/src/utils/unit/constants.ts +12 -0
- package/src/utils/unit/formatEther.test.ts +75 -0
- package/src/utils/unit/formatEther.ts +6 -0
- package/src/utils/unit/formatGwei.test.ts +32 -0
- package/src/utils/unit/formatGwei.ts +6 -0
- package/src/utils/unit/formatUnit.bench.ts +21 -0
- package/src/utils/unit/formatUnit.test.ts +40 -0
- package/src/utils/unit/formatUnit.ts +16 -0
- package/src/utils/unit/index.test.ts +28 -0
- package/src/utils/unit/index.ts +7 -0
- package/src/utils/unit/parseEther.test.ts +126 -0
- package/src/utils/unit/parseEther.ts +6 -0
- package/src/utils/unit/parseGwei.test.ts +50 -0
- package/src/utils/unit/parseGwei.ts +6 -0
- package/src/utils/unit/parseUnit.bench.ts +21 -0
- package/src/utils/unit/parseUnit.test.ts +54 -0
- package/src/utils/unit/parseUnit.ts +27 -0
- package/src/utils/wait.ts +3 -0
- package/src/wallet.test.ts +19 -0
- package/src/wallet.ts +23 -0
- package/src/window.ts +1 -0
- package/wallet/package.json +4 -0
- package/actions/package.json +0 -4
- package/clients/package.json +0 -4
- package/dist/actions/index.d.ts +0 -8
- package/dist/actions/index.js +0 -125
- package/dist/actions/index.mjs +0 -125
- package/dist/chunk-CWCWWGBC.mjs +0 -258
- package/dist/chunk-SGTIBKHG.js +0 -258
- package/dist/clients/index.d.ts +0 -7
- package/dist/clients/index.js +0 -23
- package/dist/clients/index.mjs +0 -23
- package/dist/createWalletClient-d612fe08.d.ts +0 -130
- package/dist/parseGwei-7c87ff41.d.ts +0 -278
- package/dist/rpc-26932bae.d.ts +0 -61
- package/dist/transactionRequest-08d30731.d.ts +0 -132
- package/dist/watchAsset-bc6373f4.d.ts +0 -534
- package/dist/webSocket-7f88e9e0.d.ts +0 -83
@@ -0,0 +1,62 @@
|
|
1
|
+
import { C as Chain } from './chain-f16512e8.js';
|
2
|
+
import { R as Requests } from './eip1193-6f9ba163.js';
|
3
|
+
|
4
|
+
type BaseRpcRequests = {
|
5
|
+
request(...args: any): Promise<any>;
|
6
|
+
};
|
7
|
+
type TransportConfig<TType extends string = string, TRequests extends BaseRpcRequests['request'] = Requests['request']> = {
|
8
|
+
/** The name of the transport. */
|
9
|
+
name: string;
|
10
|
+
/** The key of the transport. */
|
11
|
+
key: string;
|
12
|
+
/** The JSON-RPC request function that matches the EIP-1193 request spec. */
|
13
|
+
request: TRequests;
|
14
|
+
/** The type of the transport. */
|
15
|
+
type: TType;
|
16
|
+
};
|
17
|
+
type Transport<TType extends string = string, TRpcAttributes = Record<string, any>> = <TChain extends Chain = Chain>({ chain, }: {
|
18
|
+
chain?: TChain;
|
19
|
+
}) => {
|
20
|
+
config: TransportConfig<TType>;
|
21
|
+
value?: TRpcAttributes;
|
22
|
+
};
|
23
|
+
/**
|
24
|
+
* @description Creates an transport intended to be used with a client.
|
25
|
+
*/
|
26
|
+
declare function createTransport<TType extends string = string, TRpcAttributes = any>(config: TransportConfig<TType>, value?: TRpcAttributes): ReturnType<Transport<TType, TRpcAttributes>>;
|
27
|
+
|
28
|
+
type Client<TTransport extends Transport = Transport, TChain extends Chain = Chain, TRequests extends BaseRpcRequests = Requests> = {
|
29
|
+
/** Chain for the client. */
|
30
|
+
chain?: TChain;
|
31
|
+
/** A key for the client. */
|
32
|
+
key: string;
|
33
|
+
/** A name for the client. */
|
34
|
+
name: string;
|
35
|
+
/** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */
|
36
|
+
pollingInterval: number;
|
37
|
+
/** Request function wrapped with friendly error handling */
|
38
|
+
request: TRequests['request'];
|
39
|
+
/** The RPC transport (http, webSocket, custom, etc) */
|
40
|
+
transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value'];
|
41
|
+
/** The type of client. */
|
42
|
+
type: string;
|
43
|
+
/** A unique ID for the client. */
|
44
|
+
uid: string;
|
45
|
+
};
|
46
|
+
type ClientConfig<TTransport extends Transport = Transport, TChain extends Chain = Chain, TRequests extends BaseRpcRequests = Requests> = Partial<Pick<Client<TTransport, TChain, TRequests>, 'chain' | 'key' | 'name' | 'pollingInterval' | 'type'>> & {
|
47
|
+
transport: TTransport;
|
48
|
+
};
|
49
|
+
/**
|
50
|
+
* @description Creates a base RPC client with the given transport.
|
51
|
+
*
|
52
|
+
* - Intended to be used as a base for other RPC clients.
|
53
|
+
* - Has access to _all_ EIP-1474 RPC methods.
|
54
|
+
*
|
55
|
+
* @example
|
56
|
+
* import { mainnet } from 'viem/chains'
|
57
|
+
* import { createClient, http } from 'viem/clients'
|
58
|
+
* const client = createClient(http({ chain: mainnet }))
|
59
|
+
*/
|
60
|
+
declare function createClient<TTransport extends Transport, TChain extends Chain, TRequests extends BaseRpcRequests>({ chain, key, name, pollingInterval, transport, type, }: ClientConfig<TTransport, TChain, TRequests>): Client<TTransport, TChain, TRequests>;
|
61
|
+
|
62
|
+
export { BaseRpcRequests as B, Client as C, TransportConfig as T, Transport as a, ClientConfig as b, createClient as c, createTransport as d };
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { P as PublicRequests } from './eip1193-6f9ba163.js';
|
2
|
+
import { a as Transport, b as ClientConfig, C as Client } from './createClient-68ee4bb4.js';
|
3
|
+
import { C as Chain } from './chain-f16512e8.js';
|
4
|
+
|
5
|
+
type PublicClientConfig<TTransport extends Transport = Transport, TChain extends Chain = Chain> = Pick<ClientConfig<TTransport, TChain>, 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'>;
|
6
|
+
type PublicClient<TTransport extends Transport = Transport, TChain extends Chain = Chain> = Client<TTransport, TChain, PublicRequests>;
|
7
|
+
/**
|
8
|
+
* @description Creates a public client with a given transport.
|
9
|
+
*
|
10
|
+
* - Only has access to "public" EIP-1474 RPC methods (ie. `eth_blockNumber`, etc).
|
11
|
+
*
|
12
|
+
* @example
|
13
|
+
* import { mainnet } from 'viem/chains'
|
14
|
+
* import { createPublicClient, http } from 'viem/clients'
|
15
|
+
* const client = createPublicClient(http({ chain: mainnet }))
|
16
|
+
*/
|
17
|
+
declare function createPublicClient<TTransport extends Transport, TChain extends Chain>({ chain, key, name, transport, pollingInterval, }: PublicClientConfig<TTransport, TChain>): PublicClient<TTransport, TChain>;
|
18
|
+
|
19
|
+
export { PublicClient as P, PublicClientConfig as a, createPublicClient as c };
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import { T as TestRequests } from './eip1193-6f9ba163.js';
|
2
|
+
import { a as Transport, b as ClientConfig, C as Client } from './createClient-68ee4bb4.js';
|
3
|
+
import { C as Chain } from './chain-f16512e8.js';
|
4
|
+
|
5
|
+
type TestClientModes = 'anvil' | 'hardhat';
|
6
|
+
type TestClientConfig<TTransport extends Transport = Transport, TChain extends Chain = Chain, TMode extends TestClientModes = TestClientModes> = {
|
7
|
+
chain?: ClientConfig<TTransport, TChain>['chain'];
|
8
|
+
/** The key of the client. */
|
9
|
+
key?: ClientConfig['key'];
|
10
|
+
/** Mode of the test client. Available: "anvil" | "hardhat" */
|
11
|
+
mode: TMode;
|
12
|
+
/** The name of the client. */
|
13
|
+
name?: ClientConfig['name'];
|
14
|
+
/** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */
|
15
|
+
pollingInterval?: ClientConfig['pollingInterval'];
|
16
|
+
transport: ClientConfig<TTransport, TChain>['transport'];
|
17
|
+
};
|
18
|
+
type TestClient<TTransport extends Transport = Transport, TChain extends Chain = Chain, TMode extends TestClientModes = TestClientModes> = Client<TTransport, TChain, TestRequests<TMode>> & {
|
19
|
+
mode: TMode;
|
20
|
+
};
|
21
|
+
/**
|
22
|
+
* @description Creates a test client with a given transport.
|
23
|
+
*
|
24
|
+
* - Only has access to "test" RPC methods (ie. `anvil_setBalance`,
|
25
|
+
* `evm_mine`, etc).
|
26
|
+
*
|
27
|
+
* @example
|
28
|
+
* import { createTestClient, http } from 'viem'
|
29
|
+
* import { local } from 'viem/chains'
|
30
|
+
* const client = createTestClient({ chain: local, mode: 'anvil', transport: http() })
|
31
|
+
*/
|
32
|
+
declare function createTestClient<TTransport extends Transport, TChain extends Chain, TMode extends TestClientModes>({ chain, key, name, mode, pollingInterval, transport, }: TestClientConfig<TTransport, TChain, TMode>): TestClient<TTransport, TChain, TMode>;
|
33
|
+
|
34
|
+
export { TestClient as T, TestClientConfig as a, createTestClient as c };
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { S as SignableRequests, W as WalletRequests } from './eip1193-6f9ba163.js';
|
2
|
+
import { a as Transport, b as ClientConfig, C as Client } from './createClient-68ee4bb4.js';
|
3
|
+
import { C as Chain } from './chain-f16512e8.js';
|
4
|
+
|
5
|
+
type WalletClientConfig<TTransport extends Transport = Transport, TChain extends Chain = Chain> = {
|
6
|
+
chain?: ClientConfig<TTransport, TChain>['chain'];
|
7
|
+
/** The key of the Wallet Client. */
|
8
|
+
key?: ClientConfig['key'];
|
9
|
+
/** The name of the Wallet Client. */
|
10
|
+
name?: ClientConfig['name'];
|
11
|
+
/** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */
|
12
|
+
pollingInterval?: ClientConfig['pollingInterval'];
|
13
|
+
transport: ClientConfig<TTransport, TChain>['transport'];
|
14
|
+
};
|
15
|
+
type WalletClient<TTransport extends Transport = Transport, TChain extends Chain = Chain> = Client<TTransport, TChain, SignableRequests & WalletRequests>;
|
16
|
+
/**
|
17
|
+
* @description Creates a wallet client with a given transport.
|
18
|
+
*
|
19
|
+
* - Only has access to "wallet" & "signable" EIP-1474 RPC methods
|
20
|
+
* (ie. `eth_sendTransaction`, `eth_requestAccounts`, etc).
|
21
|
+
*
|
22
|
+
* @example
|
23
|
+
* import { createWalletClient, custom } from 'viem'
|
24
|
+
* const client = createWalletClient(
|
25
|
+
* custom(window.ethereum)
|
26
|
+
* )
|
27
|
+
*/
|
28
|
+
declare function createWalletClient<TTransport extends Transport, TChain extends Chain>({ transport, key, name, pollingInterval, }: WalletClientConfig<TTransport, TChain>): WalletClient<TTransport, TChain>;
|
29
|
+
|
30
|
+
export { WalletClient as W, WalletClientConfig as a, createWalletClient as c };
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { Abi } from 'abitype';
|
2
|
+
import { H as Hex } from './chain-f16512e8.js';
|
3
|
+
import { A as AbiItem } from './contract-9e76e561.js';
|
4
|
+
|
5
|
+
type DecodeErrorResultArgs = {
|
6
|
+
abi?: Abi;
|
7
|
+
data: Hex;
|
8
|
+
};
|
9
|
+
type DecodeErrorResultResponse = {
|
10
|
+
abiItem: AbiItem;
|
11
|
+
errorName: string;
|
12
|
+
args?: readonly unknown[];
|
13
|
+
};
|
14
|
+
declare function decodeErrorResult({ abi, data, }: DecodeErrorResultArgs): DecodeErrorResultResponse;
|
15
|
+
|
16
|
+
export { DecodeErrorResultResponse as D, DecodeErrorResultArgs as a, decodeErrorResult as d };
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { A as Address, a as Hash, Q as Quantity,
|
1
|
+
import { A as Address, a as Hash, Q as Quantity, q as RpcTransactionRequest, k as RpcBlockNumber, b as BlockTag, j as RpcBlockIdentifier, H as Hex, J as RpcEstimateGasParameters, l as RpcFeeHistory, R as RpcBlock, n as RpcLog, G as LogTopic, o as RpcTransaction, p as RpcTransactionReceipt, r as RpcUncle } from './chain-f16512e8.js';
|
2
2
|
|
3
3
|
declare class RpcError extends Error {
|
4
4
|
code: number;
|
@@ -35,7 +35,7 @@ type Chain = {
|
|
35
35
|
symbol: string;
|
36
36
|
decimals: number;
|
37
37
|
};
|
38
|
-
rpcUrls: string[];
|
38
|
+
rpcUrls: readonly string[];
|
39
39
|
blockExplorerUrls?: string[];
|
40
40
|
iconUrls?: string[];
|
41
41
|
};
|
@@ -331,22 +331,25 @@ type PublicRequests = {
|
|
331
331
|
* @description Returns a list of all logs based on a filter object
|
332
332
|
* @link https://eips.ethereum.org/EIPS/eip-1474
|
333
333
|
* @example
|
334
|
-
* provider.request({ method: 'eth_getLogs', params: [{ ... }] })
|
334
|
+
* provider.request({ method: 'eth_getLogs', params: [{ fromBlock: '0x...', toBlock: '0x...', address: '0x...', topics: ['0x...'] }] })
|
335
335
|
* // => [{ ... }, { ... }]
|
336
336
|
* */
|
337
337
|
method: 'eth_getLogs';
|
338
338
|
params: [
|
339
|
-
|
339
|
+
parameters: {
|
340
340
|
address?: Address | Address[];
|
341
|
-
topics?:
|
341
|
+
topics?: LogTopic[];
|
342
342
|
} & ({
|
343
343
|
fromBlock?: RpcBlockNumber | BlockTag;
|
344
344
|
toBlock?: RpcBlockNumber | BlockTag;
|
345
|
+
blockHash?: never;
|
345
346
|
} | {
|
347
|
+
fromBlock?: never;
|
348
|
+
toBlock?: never;
|
346
349
|
blockHash?: Hash;
|
347
350
|
})
|
348
351
|
];
|
349
|
-
}): Promise<RpcLog>;
|
352
|
+
}): Promise<RpcLog[]>;
|
350
353
|
request(args: {
|
351
354
|
/**
|
352
355
|
* @description Returns the value from a storage position at an address
|
@@ -361,7 +364,7 @@ type PublicRequests = {
|
|
361
364
|
index: Quantity,
|
362
365
|
block: RpcBlockNumber | BlockTag | RpcBlockIdentifier
|
363
366
|
];
|
364
|
-
}): Promise<
|
367
|
+
}): Promise<Hex>;
|
365
368
|
request(args: {
|
366
369
|
/**
|
367
370
|
* @description Returns information about a transaction specified by block hash and transaction index
|
@@ -486,7 +489,7 @@ type PublicRequests = {
|
|
486
489
|
fromBlock?: RpcBlockNumber | BlockTag;
|
487
490
|
toBlock?: RpcBlockNumber | BlockTag;
|
488
491
|
address?: Address | Address[];
|
489
|
-
topics?:
|
492
|
+
topics?: LogTopic[];
|
490
493
|
}
|
491
494
|
];
|
492
495
|
}): Promise<Quantity>;
|
@@ -984,4 +987,4 @@ type WalletRequests = {
|
|
984
987
|
};
|
985
988
|
type Requests = PublicRequests & SignableRequests & WalletRequests;
|
986
989
|
|
987
|
-
export { Events as E, PublicRequests as P, Requests as R, SignableRequests as S, TestRequests as T,
|
990
|
+
export { Events as E, PublicRequests as P, Requests as R, SignableRequests as S, TestRequests as T, WalletRequests as W, WalletPermission as a, WatchAssetParams as b };
|
package/dist/ens.d.ts
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
import { P as Prettify, A as Address } from './chain-f16512e8.js';
|
2
|
+
import { P as PublicClient } from './createPublicClient-b732194e.js';
|
3
|
+
import { R as ReadContractArgs } from './readContract-4f6e2692.js';
|
4
|
+
import '@wagmi/chains';
|
5
|
+
import './eip1193-6f9ba163.js';
|
6
|
+
import './createClient-68ee4bb4.js';
|
7
|
+
import 'abitype';
|
8
|
+
import './contract-9e76e561.js';
|
9
|
+
import './call-ac509982.js';
|
10
|
+
import './transactionRequest-c7794f5e.js';
|
11
|
+
|
12
|
+
type GetEnsAddressArgs = Prettify<Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {
|
13
|
+
/** ENS name to get address. */
|
14
|
+
name: string;
|
15
|
+
/** Address of ENS Universal Resolver Contract */
|
16
|
+
universalResolverAddress?: Address;
|
17
|
+
}>;
|
18
|
+
/**
|
19
|
+
* @description Gets address for ENS name.
|
20
|
+
*
|
21
|
+
* - Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.
|
22
|
+
*
|
23
|
+
* @example
|
24
|
+
* const ensAddress = await getEnsAddress(publicClient, {
|
25
|
+
* name: 'wagmi-dev.eth',
|
26
|
+
* })
|
27
|
+
* // '0xd2135CfB216b74109775236E36d4b433F1DF507B'
|
28
|
+
*/
|
29
|
+
declare function getEnsAddress(client: PublicClient, { blockNumber, blockTag, name, universalResolverAddress: universalResolverAddress_, }: GetEnsAddressArgs): Promise<`0x${string}`>;
|
30
|
+
|
31
|
+
type GetEnsNameArgs = Prettify<Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {
|
32
|
+
/** Address to get ENS name for. */
|
33
|
+
address: Address;
|
34
|
+
/** Address of ENS Universal Resolver Contract. */
|
35
|
+
universalResolverAddress?: Address;
|
36
|
+
}>;
|
37
|
+
/**
|
38
|
+
* @description Gets primary name for specified address.
|
39
|
+
*
|
40
|
+
* - Calls `reverse(bytes)` on ENS Universal Resolver Contract.
|
41
|
+
*
|
42
|
+
* @example
|
43
|
+
* const ensName = await getEnsName(publicClient, {
|
44
|
+
* address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',
|
45
|
+
* })
|
46
|
+
* // 'wagmi-dev.eth'
|
47
|
+
*/
|
48
|
+
declare function getEnsName(client: PublicClient, { address, blockNumber, blockTag, universalResolverAddress: universalResolverAddress_, }: GetEnsNameArgs): Promise<string | null>;
|
49
|
+
|
50
|
+
/**
|
51
|
+
* @description Hashes ENS label
|
52
|
+
*
|
53
|
+
* @example
|
54
|
+
* labelhash('eth')
|
55
|
+
* '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0'
|
56
|
+
*/
|
57
|
+
declare function labelhash(label: string): `0x${string}`;
|
58
|
+
|
59
|
+
/**
|
60
|
+
* @description Hashes ENS name
|
61
|
+
*
|
62
|
+
* @example
|
63
|
+
* namehash('wagmi-dev.eth')
|
64
|
+
* '0xf246651c1b9a6b141d19c2604e9a58f567973833990f830d882534a747801359'
|
65
|
+
*
|
66
|
+
* @see https://eips.ethereum.org/EIPS/eip-137
|
67
|
+
* @see https://docs.ens.domains/contract-api-reference/name-processing#hashing-names
|
68
|
+
*/
|
69
|
+
declare function namehash(name: string): `0x${string}`;
|
70
|
+
|
71
|
+
/**
|
72
|
+
* @description Normalizes ENS name
|
73
|
+
*
|
74
|
+
* @example
|
75
|
+
* normalize('wagmi-dev.eth')
|
76
|
+
* 'wagmi-dev.eth'
|
77
|
+
*
|
78
|
+
* @see https://docs.ens.domains/contract-api-reference/name-processing#normalising-names
|
79
|
+
*/
|
80
|
+
declare function normalize(name: string): string;
|
81
|
+
|
82
|
+
export { GetEnsAddressArgs, GetEnsNameArgs, getEnsAddress, getEnsName, labelhash, namehash, normalize };
|
package/dist/ens.js
ADDED
@@ -0,0 +1,216 @@
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
2
|
+
|
3
|
+
var _chunkUTL6F7UNjs = require('./chunk-UTL6F7UN.js');
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
var _chunkNXCI5KQCjs = require('./chunk-NXCI5KQC.js');
|
17
|
+
|
18
|
+
// src/utils/ens/normalize.ts
|
19
|
+
var _idnauts46hx = require('idna-uts46-hx');
|
20
|
+
function normalize(name) {
|
21
|
+
return _idnauts46hx.toUnicode.call(void 0, name, { useStd3ASCII: true });
|
22
|
+
}
|
23
|
+
|
24
|
+
// src/utils/ens/labelhash.ts
|
25
|
+
function labelhash(label) {
|
26
|
+
let result = new Uint8Array(32).fill(0);
|
27
|
+
if (!label)
|
28
|
+
return _chunkNXCI5KQCjs.bytesToHex.call(void 0, result);
|
29
|
+
return _chunkNXCI5KQCjs.keccak256.call(void 0, _chunkNXCI5KQCjs.stringToBytes.call(void 0, normalize(label)));
|
30
|
+
}
|
31
|
+
|
32
|
+
// src/utils/ens/namehash.ts
|
33
|
+
function namehash(name) {
|
34
|
+
let result = new Uint8Array(32).fill(0);
|
35
|
+
if (!name)
|
36
|
+
return _chunkNXCI5KQCjs.bytesToHex.call(void 0, result);
|
37
|
+
const labels = normalize(name).split(".");
|
38
|
+
for (let i = labels.length - 1; i >= 0; i -= 1) {
|
39
|
+
const hashed = _chunkNXCI5KQCjs.keccak256.call(void 0, _chunkNXCI5KQCjs.stringToBytes.call(void 0, labels[i]), "bytes");
|
40
|
+
result = _chunkNXCI5KQCjs.keccak256.call(void 0, _chunkNXCI5KQCjs.concat.call(void 0, [result, hashed]), "bytes");
|
41
|
+
}
|
42
|
+
return _chunkNXCI5KQCjs.bytesToHex.call(void 0, result);
|
43
|
+
}
|
44
|
+
|
45
|
+
// src/utils/ens/packetToBytes.ts
|
46
|
+
function packetToBytes(packet) {
|
47
|
+
function length(value2) {
|
48
|
+
if (value2 === "." || value2 === "..")
|
49
|
+
return 1;
|
50
|
+
return _chunkNXCI5KQCjs.encodeBytes.call(void 0, value2.replace(/^\.|\.$/gm, "")).length + 2;
|
51
|
+
}
|
52
|
+
const bytes = new Uint8Array(length(packet));
|
53
|
+
const value = packet.replace(/^\.|\.$/gm, "");
|
54
|
+
if (!value.length)
|
55
|
+
return bytes;
|
56
|
+
let offset = 0;
|
57
|
+
const list = value.split(".");
|
58
|
+
for (let i = 0; i < list.length; i++) {
|
59
|
+
const encoded = _chunkNXCI5KQCjs.encodeBytes.call(void 0, list[i]);
|
60
|
+
bytes[offset] = encoded.length;
|
61
|
+
bytes.set(encoded, offset + 1);
|
62
|
+
offset += encoded.length + 1;
|
63
|
+
}
|
64
|
+
return bytes;
|
65
|
+
}
|
66
|
+
|
67
|
+
// src/actions/ens/getEnsAddress.ts
|
68
|
+
async function getEnsAddress(client, {
|
69
|
+
blockNumber,
|
70
|
+
blockTag,
|
71
|
+
name,
|
72
|
+
universalResolverAddress: universalResolverAddress_
|
73
|
+
}) {
|
74
|
+
let universalResolverAddress = universalResolverAddress_;
|
75
|
+
if (!universalResolverAddress) {
|
76
|
+
if (!client.chain)
|
77
|
+
throw new Error(
|
78
|
+
"client chain not configured. universalResolverAddress is required."
|
79
|
+
);
|
80
|
+
const contract = _optionalChain([client, 'access', _ => _.chain, 'optionalAccess', _2 => _2.contracts, 'optionalAccess', _3 => _3.ensUniversalResolver]);
|
81
|
+
if (!contract)
|
82
|
+
throw new (0, _chunkNXCI5KQCjs.ChainDoesNotSupportContract)({
|
83
|
+
chain: client.chain,
|
84
|
+
contract: { name: "ensUniversalResolver" }
|
85
|
+
});
|
86
|
+
if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
|
87
|
+
throw new (0, _chunkNXCI5KQCjs.ChainDoesNotSupportContract)({
|
88
|
+
blockNumber,
|
89
|
+
chain: client.chain,
|
90
|
+
contract: {
|
91
|
+
name: "ensUniversalResolver",
|
92
|
+
blockCreated: contract.blockCreated
|
93
|
+
}
|
94
|
+
});
|
95
|
+
universalResolverAddress = contract.address;
|
96
|
+
}
|
97
|
+
const res = await _chunkUTL6F7UNjs.readContract.call(void 0, client, {
|
98
|
+
address: universalResolverAddress,
|
99
|
+
abi: [
|
100
|
+
{
|
101
|
+
name: "resolve",
|
102
|
+
type: "function",
|
103
|
+
stateMutability: "view",
|
104
|
+
inputs: [
|
105
|
+
{ name: "name", type: "bytes" },
|
106
|
+
{ name: "data", type: "bytes" }
|
107
|
+
],
|
108
|
+
outputs: [
|
109
|
+
{ name: "", type: "bytes" },
|
110
|
+
{ name: "address", type: "address" }
|
111
|
+
]
|
112
|
+
}
|
113
|
+
],
|
114
|
+
functionName: "resolve",
|
115
|
+
args: [
|
116
|
+
_chunkNXCI5KQCjs.encodeHex.call(void 0, packetToBytes(name)),
|
117
|
+
_chunkNXCI5KQCjs.encodeFunctionData.call(void 0, {
|
118
|
+
abi: [
|
119
|
+
{
|
120
|
+
name: "addr",
|
121
|
+
type: "function",
|
122
|
+
stateMutability: "view",
|
123
|
+
inputs: [{ name: "name", type: "bytes32" }],
|
124
|
+
outputs: []
|
125
|
+
}
|
126
|
+
],
|
127
|
+
functionName: "addr",
|
128
|
+
args: [namehash(name)]
|
129
|
+
})
|
130
|
+
],
|
131
|
+
blockNumber,
|
132
|
+
blockTag
|
133
|
+
});
|
134
|
+
return _chunkNXCI5KQCjs.decodeFunctionResult.call(void 0, {
|
135
|
+
abi: [
|
136
|
+
{
|
137
|
+
name: "addr",
|
138
|
+
type: "function",
|
139
|
+
stateMutability: "view",
|
140
|
+
inputs: [],
|
141
|
+
outputs: [{ name: "name", type: "address" }]
|
142
|
+
}
|
143
|
+
],
|
144
|
+
functionName: "addr",
|
145
|
+
data: res[0]
|
146
|
+
});
|
147
|
+
}
|
148
|
+
|
149
|
+
// src/actions/ens/getEnsName.ts
|
150
|
+
async function getEnsName(client, {
|
151
|
+
address,
|
152
|
+
blockNumber,
|
153
|
+
blockTag,
|
154
|
+
universalResolverAddress: universalResolverAddress_
|
155
|
+
}) {
|
156
|
+
let universalResolverAddress = universalResolverAddress_;
|
157
|
+
if (!universalResolverAddress) {
|
158
|
+
if (!client.chain)
|
159
|
+
throw new Error(
|
160
|
+
"client chain not configured. universalResolverAddress is required."
|
161
|
+
);
|
162
|
+
const contract = _optionalChain([client, 'access', _4 => _4.chain, 'optionalAccess', _5 => _5.contracts, 'optionalAccess', _6 => _6.ensUniversalResolver]);
|
163
|
+
if (!contract)
|
164
|
+
throw new (0, _chunkNXCI5KQCjs.ChainDoesNotSupportContract)({
|
165
|
+
chain: client.chain,
|
166
|
+
contract: { name: "ensUniversalResolver" }
|
167
|
+
});
|
168
|
+
if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
|
169
|
+
throw new (0, _chunkNXCI5KQCjs.ChainDoesNotSupportContract)({
|
170
|
+
blockNumber,
|
171
|
+
chain: client.chain,
|
172
|
+
contract: {
|
173
|
+
name: "ensUniversalResolver",
|
174
|
+
blockCreated: contract.blockCreated
|
175
|
+
}
|
176
|
+
});
|
177
|
+
universalResolverAddress = contract.address;
|
178
|
+
}
|
179
|
+
const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`;
|
180
|
+
try {
|
181
|
+
const res = await _chunkUTL6F7UNjs.readContract.call(void 0, client, {
|
182
|
+
address: universalResolverAddress,
|
183
|
+
abi: [
|
184
|
+
{
|
185
|
+
name: "reverse",
|
186
|
+
type: "function",
|
187
|
+
stateMutability: "view",
|
188
|
+
inputs: [{ type: "bytes", name: "reverseName" }],
|
189
|
+
outputs: [
|
190
|
+
{ type: "string", name: "resolvedName" },
|
191
|
+
{ type: "address", name: "resolvedAddress" },
|
192
|
+
{ type: "address", name: "reverseResolver" },
|
193
|
+
{ type: "address", name: "resolver" }
|
194
|
+
]
|
195
|
+
}
|
196
|
+
],
|
197
|
+
functionName: "reverse",
|
198
|
+
args: [_chunkNXCI5KQCjs.encodeHex.call(void 0, packetToBytes(reverseNode))],
|
199
|
+
blockNumber,
|
200
|
+
blockTag
|
201
|
+
});
|
202
|
+
return res[0];
|
203
|
+
} catch (error) {
|
204
|
+
if (error instanceof _chunkNXCI5KQCjs.ContractFunctionExecutionError && error.cause.reason === _chunkNXCI5KQCjs.panicReasons[50])
|
205
|
+
return null;
|
206
|
+
throw error;
|
207
|
+
}
|
208
|
+
}
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
exports.getEnsAddress = getEnsAddress; exports.getEnsName = getEnsName; exports.labelhash = labelhash; exports.namehash = namehash; exports.normalize = normalize;
|
216
|
+
//# sourceMappingURL=ens.js.map
|
package/dist/ens.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/utils/ens/normalize.ts","../src/utils/ens/labelhash.ts","../src/utils/ens/namehash.ts","../src/utils/ens/packetToBytes.ts","../src/actions/ens/getEnsAddress.ts","../src/actions/ens/getEnsName.ts"],"names":["value"],"mappings":"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","sourcesContent":["import { toUnicode } from 'idna-uts46-hx'\n\n/**\n * @description Normalizes ENS name\n *\n * @example\n * normalize('wagmi-dev.eth')\n * 'wagmi-dev.eth'\n *\n * @see https://docs.ens.domains/contract-api-reference/name-processing#normalising-names\n */\nexport function normalize(name: string) {\n return toUnicode(name, { useStd3ASCII: true })\n}\n","import { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\nimport { normalize } from './normalize'\n\n/**\n * @description Hashes ENS label\n *\n * @example\n * labelhash('eth')\n * '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0'\n */\nexport function labelhash(label: string) {\n let result = new Uint8Array(32).fill(0)\n if (!label) return bytesToHex(result)\n return keccak256(stringToBytes(normalize(label)))\n}\n","import { concat } from '../data'\nimport { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\nimport { normalize } from './normalize'\n\n/**\n * @description Hashes ENS name\n *\n * @example\n * namehash('wagmi-dev.eth')\n * '0xf246651c1b9a6b141d19c2604e9a58f567973833990f830d882534a747801359'\n *\n * @see https://eips.ethereum.org/EIPS/eip-137\n * @see https://docs.ens.domains/contract-api-reference/name-processing#hashing-names\n */\nexport function namehash(name: string) {\n let result = new Uint8Array(32).fill(0)\n if (!name) return bytesToHex(result)\n\n const labels = normalize(name).split('.')\n // Iterate in reverse order building up hash\n for (let i = labels.length - 1; i >= 0; i -= 1) {\n const hashed = keccak256(stringToBytes(labels[i]), 'bytes')\n result = keccak256(concat([result, hashed]), 'bytes')\n }\n\n return bytesToHex(result)\n}\n","// Adapted from https://github.com/mafintosh/dns-packet\nimport { ByteArray } from '../../types'\nimport { encodeBytes } from '../encoding'\n\n/*\n * @description Encodes a DNS packet into a ByteArray containing a UDP payload.\n */\nexport function packetToBytes(packet: string): ByteArray {\n function length(value: string) {\n if (value === '.' || value === '..') return 1\n return encodeBytes(value.replace(/^\\.|\\.$/gm, '')).length + 2\n }\n\n const bytes = new Uint8Array(length(packet))\n // strip leading and trailing `.`\n const value = packet.replace(/^\\.|\\.$/gm, '')\n if (!value.length) return bytes\n\n let offset = 0\n const list = value.split('.')\n for (let i = 0; i < list.length; i++) {\n const encoded = encodeBytes(list[i])\n bytes[offset] = encoded.length\n bytes.set(encoded, offset + 1)\n offset += encoded.length + 1\n }\n\n return bytes\n}\n","import { PublicClient } from '../../clients'\nimport { ChainDoesNotSupportContract } from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport {\n decodeFunctionResult,\n encodeFunctionData,\n encodeHex,\n} from '../../utils'\nimport { namehash, packetToBytes } from '../../utils/ens'\nimport { readContract, ReadContractArgs } from '../public'\n\nexport type GetEnsAddressArgs = Prettify<\n Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {\n /** ENS name to get address. */\n name: string\n /** Address of ENS Universal Resolver Contract */\n universalResolverAddress?: Address\n }\n>\n\n/**\n * @description Gets address for ENS name.\n *\n * - Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * @example\n * const ensAddress = await getEnsAddress(publicClient, {\n * name: 'wagmi-dev.eth',\n * })\n * // '0xd2135CfB216b74109775236E36d4b433F1DF507B'\n */\nexport async function getEnsAddress(\n client: PublicClient,\n {\n blockNumber,\n blockTag,\n name,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsAddressArgs,\n) {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n const contract = client.chain?.contracts?.ensUniversalResolver\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain: client.chain,\n contract: { name: 'ensUniversalResolver' },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain: client.chain,\n contract: {\n name: 'ensUniversalResolver',\n blockCreated: contract.blockCreated,\n },\n })\n\n universalResolverAddress = contract.address\n }\n\n const res = await readContract(client, {\n address: universalResolverAddress,\n abi: [\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n ],\n functionName: 'resolve',\n args: [\n encodeHex(packetToBytes(name)),\n encodeFunctionData({\n abi: [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [],\n },\n ],\n functionName: 'addr',\n args: [namehash(name)],\n }),\n ],\n blockNumber,\n blockTag,\n })\n return decodeFunctionResult({\n abi: [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ name: 'name', type: 'address' }],\n },\n ],\n functionName: 'addr',\n data: res[0],\n })\n}\n","import { PublicClient } from '../../clients'\nimport { panicReasons } from '../../constants'\nimport {\n ChainDoesNotSupportContract,\n ContractFunctionExecutionError,\n ContractFunctionRevertedError,\n} from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport { encodeHex } from '../../utils'\nimport { packetToBytes } from '../../utils/ens'\nimport { readContract, ReadContractArgs } from '../public'\n\nexport type GetEnsNameArgs = Prettify<\n Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {\n /** Address to get ENS name for. */\n address: Address\n /** Address of ENS Universal Resolver Contract. */\n universalResolverAddress?: Address\n }\n>\n\n/**\n * @description Gets primary name for specified address.\n *\n * - Calls `reverse(bytes)` on ENS Universal Resolver Contract.\n *\n * @example\n * const ensName = await getEnsName(publicClient, {\n * address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',\n * })\n * // 'wagmi-dev.eth'\n */\nexport async function getEnsName(\n client: PublicClient,\n {\n address,\n blockNumber,\n blockTag,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsNameArgs,\n) {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n const contract = client.chain?.contracts?.ensUniversalResolver\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain: client.chain,\n contract: { name: 'ensUniversalResolver' },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain: client.chain,\n contract: {\n name: 'ensUniversalResolver',\n blockCreated: contract.blockCreated,\n },\n })\n\n universalResolverAddress = contract.address\n }\n\n const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`\n try {\n const res = await readContract(client, {\n address: universalResolverAddress,\n abi: [\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n ],\n functionName: 'reverse',\n args: [encodeHex(packetToBytes(reverseNode))],\n blockNumber,\n blockTag,\n })\n return res[0]\n } catch (error) {\n if (\n error instanceof ContractFunctionExecutionError &&\n (error.cause as ContractFunctionRevertedError).reason === panicReasons[50]\n )\n // No primary name set for address.\n return null\n throw error\n }\n}\n"]}
|