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
package/src/types/fee.ts
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
import type { Address, Hex } from './misc'
|
2
|
+
|
3
|
+
export type EstimateGasParameters<TQuantity = bigint> = {
|
4
|
+
/** Contract code or a hashed method call with encoded args */
|
5
|
+
data?: Hex
|
6
|
+
/** Gas provided for transaction execution */
|
7
|
+
gas?: TQuantity
|
8
|
+
/** Transaction sender */
|
9
|
+
from?: Address
|
10
|
+
/** Transaction recipient */
|
11
|
+
to?: Address
|
12
|
+
/** Value in wei sent with this transaction */
|
13
|
+
value?: TQuantity
|
14
|
+
} & Partial<FeeValues<TQuantity>>
|
15
|
+
|
16
|
+
export type FeeHistory<TQuantity = bigint> = {
|
17
|
+
/**
|
18
|
+
* An array of block base fees per gas (in wei). This includes the next block after
|
19
|
+
* the newest of the returned range, because this value can be derived from the newest block.
|
20
|
+
* Zeroes are returned for pre-EIP-1559 blocks. */
|
21
|
+
baseFeePerGas: TQuantity[]
|
22
|
+
/** An array of block gas used ratios. These are calculated as the ratio of gasUsed and gasLimit. */
|
23
|
+
gasUsedRatio: number[]
|
24
|
+
/** Lowest number block of the returned range. */
|
25
|
+
oldestBlock: TQuantity
|
26
|
+
/** An array of effective priority fees (in wei) per gas data points from a single block. All zeroes are returned if the block is empty. */
|
27
|
+
reward?: TQuantity[][]
|
28
|
+
}
|
29
|
+
|
30
|
+
export type FeeValuesLegacy<TQuantity = bigint> = {
|
31
|
+
/** Base fee per gas. */
|
32
|
+
gasPrice: TQuantity
|
33
|
+
maxFeePerGas?: never
|
34
|
+
maxPriorityFeePerGas?: never
|
35
|
+
}
|
36
|
+
|
37
|
+
export type FeeValuesEIP1559<TQuantity = bigint> = {
|
38
|
+
gasPrice?: never
|
39
|
+
/** Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas). */
|
40
|
+
maxFeePerGas: TQuantity
|
41
|
+
/** Max priority fee per gas (in wei). */
|
42
|
+
maxPriorityFeePerGas: TQuantity
|
43
|
+
}
|
44
|
+
|
45
|
+
export type FeeValues<TQuantity = bigint> =
|
46
|
+
| FeeValuesLegacy<TQuantity>
|
47
|
+
| FeeValuesEIP1559<TQuantity>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { Block } from './block'
|
2
|
+
import {
|
3
|
+
RpcBlock,
|
4
|
+
RpcTransaction,
|
5
|
+
RpcTransactionReceipt,
|
6
|
+
RpcTransactionRequest,
|
7
|
+
} from './rpc'
|
8
|
+
import {
|
9
|
+
Transaction,
|
10
|
+
TransactionReceipt,
|
11
|
+
TransactionRequest,
|
12
|
+
} from './transaction'
|
13
|
+
|
14
|
+
export type Formatter<TSource = any, TTarget = any> = (
|
15
|
+
value: TSource & { [key: string]: unknown },
|
16
|
+
) => TTarget
|
17
|
+
|
18
|
+
export type Formatters = {
|
19
|
+
block?: Formatter<RpcBlock, Block>
|
20
|
+
transaction?: Formatter<RpcTransaction, Transaction>
|
21
|
+
transactionReceipt?: Formatter<RpcTransactionReceipt, TransactionReceipt>
|
22
|
+
transactionRequest?: Formatter<TransactionRequest, RpcTransactionRequest>
|
23
|
+
}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
export type {
|
2
|
+
Block,
|
3
|
+
BlockIdentifier,
|
4
|
+
BlockNumber,
|
5
|
+
BlockTag,
|
6
|
+
Uncle,
|
7
|
+
} from './block'
|
8
|
+
|
9
|
+
export type { Chain } from './chain'
|
10
|
+
|
11
|
+
export type {
|
12
|
+
AbiItem,
|
13
|
+
AbiEventParametersToPrimitiveTypes,
|
14
|
+
ContractConfig,
|
15
|
+
EventDefinition,
|
16
|
+
ExtractArgsFromAbi,
|
17
|
+
ExtractArgsFromEventDefinition,
|
18
|
+
ExtractConstructorArgsFromAbi,
|
19
|
+
ExtractErrorArgsFromAbi,
|
20
|
+
ExtractErrorNameFromAbi,
|
21
|
+
ExtractEventArgsFromAbi,
|
22
|
+
ExtractEventArgsFromTopics,
|
23
|
+
ExtractEventNameFromAbi,
|
24
|
+
ExtractFunctionNameFromAbi,
|
25
|
+
ExtractNameFromAbi,
|
26
|
+
ExtractResultFromAbi,
|
27
|
+
GetValue,
|
28
|
+
} from './contract'
|
29
|
+
|
30
|
+
export type {
|
31
|
+
EstimateGasParameters,
|
32
|
+
FeeHistory,
|
33
|
+
FeeValues,
|
34
|
+
FeeValuesEIP1559,
|
35
|
+
FeeValuesLegacy,
|
36
|
+
} from './fee'
|
37
|
+
|
38
|
+
export type { Filter, FilterType } from './filter'
|
39
|
+
|
40
|
+
export type { Formatter, Formatters } from './formatter'
|
41
|
+
|
42
|
+
export type { Log } from './log'
|
43
|
+
|
44
|
+
export type { Address, ByteArray, Hex, Hash, LogTopic } from './misc'
|
45
|
+
|
46
|
+
export type { MulticallContracts } from './multicall'
|
47
|
+
|
48
|
+
export type {
|
49
|
+
Index,
|
50
|
+
Quantity,
|
51
|
+
RpcBlock,
|
52
|
+
RpcBlockIdentifier,
|
53
|
+
RpcBlockNumber,
|
54
|
+
RpcEstimateGasParameters,
|
55
|
+
RpcFeeHistory,
|
56
|
+
RpcFeeValues,
|
57
|
+
RpcLog,
|
58
|
+
RpcTransactionReceipt,
|
59
|
+
RpcTransactionRequest,
|
60
|
+
RpcTransaction,
|
61
|
+
RpcUncle,
|
62
|
+
} from './rpc'
|
63
|
+
|
64
|
+
export type {
|
65
|
+
AccessList,
|
66
|
+
TransactionReceipt,
|
67
|
+
TransactionRequest,
|
68
|
+
TransactionRequestBase,
|
69
|
+
TransactionRequestEIP1559,
|
70
|
+
TransactionRequestEIP2930,
|
71
|
+
TransactionRequestLegacy,
|
72
|
+
Transaction,
|
73
|
+
TransactionBase,
|
74
|
+
TransactionEIP1559,
|
75
|
+
TransactionEIP2930,
|
76
|
+
TransactionLegacy,
|
77
|
+
} from './transaction'
|
78
|
+
|
79
|
+
export type {
|
80
|
+
PartialBy,
|
81
|
+
Prettify,
|
82
|
+
MergeIntersectionProperties,
|
83
|
+
OptionalNullable,
|
84
|
+
} from './utils'
|
package/src/types/log.ts
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
import type { Address, Hash, Hex } from './misc'
|
2
|
+
|
3
|
+
export type Log<TQuantity = bigint, TIndex = number> = {
|
4
|
+
/** The address from which this log originated */
|
5
|
+
address: Address
|
6
|
+
/** Hash of block containing this log or `null` if pending */
|
7
|
+
blockHash: Hash | null
|
8
|
+
/** Number of block containing this log or `null` if pending */
|
9
|
+
blockNumber: TQuantity | null
|
10
|
+
/** Contains the non-indexed arguments of the log */
|
11
|
+
data: Hex
|
12
|
+
/** Index of this log within its block or `null` if pending */
|
13
|
+
logIndex: TIndex | null
|
14
|
+
/** Hash of the transaction that created this log or `null` if pending */
|
15
|
+
transactionHash: Hash | null
|
16
|
+
/** Index of the transaction that created this log or `null` if pending */
|
17
|
+
transactionIndex: TIndex | null
|
18
|
+
/** List of order-dependent topics */
|
19
|
+
topics: Hex[]
|
20
|
+
/** `true` if this filter has been destroyed and is invalid */
|
21
|
+
removed: boolean
|
22
|
+
}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
import { Abi } from 'abitype';
|
2
|
+
import { ContractConfig, ExtractResultFromAbi } from './contract';
|
3
|
+
|
4
|
+
type MAXIMUM_DEPTH = 20
|
5
|
+
|
6
|
+
export type Contract<
|
7
|
+
TAbi extends Abi | readonly unknown[] = Abi | readonly unknown[],
|
8
|
+
TFunctionName extends string = string,
|
9
|
+
> = { abi: TAbi; functionName: TFunctionName }
|
10
|
+
|
11
|
+
export type MulticallContracts<
|
12
|
+
TContracts extends Contract[],
|
13
|
+
TProperties extends Record<string, any> = object,
|
14
|
+
Result extends any[] = [],
|
15
|
+
Depth extends ReadonlyArray<number> = [],
|
16
|
+
> = Depth['length'] extends MAXIMUM_DEPTH
|
17
|
+
? (ContractConfig & TProperties)[]
|
18
|
+
: TContracts extends []
|
19
|
+
? []
|
20
|
+
: TContracts extends [infer Head extends Contract]
|
21
|
+
? [
|
22
|
+
...Result,
|
23
|
+
ContractConfig<Head['abi'], Head['functionName']> &
|
24
|
+
TProperties,
|
25
|
+
]
|
26
|
+
: TContracts extends [
|
27
|
+
infer Head extends Contract,
|
28
|
+
...infer Tail extends Contract[],
|
29
|
+
]
|
30
|
+
? MulticallContracts<
|
31
|
+
[...Tail],
|
32
|
+
TProperties,
|
33
|
+
[
|
34
|
+
...Result,
|
35
|
+
ContractConfig<Head['abi'], Head['functionName']> &
|
36
|
+
TProperties,
|
37
|
+
],
|
38
|
+
[...Depth, 1]
|
39
|
+
>
|
40
|
+
: unknown[] extends TContracts
|
41
|
+
? TContracts
|
42
|
+
: // If `TContracts` is *some* array but we couldn't assign `unknown[]` to it, then it must hold some known/homogenous type!
|
43
|
+
// use this to infer the param types in the case of Array.map() argument
|
44
|
+
TContracts extends ContractConfig<infer TAbi, infer TFunctionName>[]
|
45
|
+
? (ContractConfig<TAbi, TFunctionName> & TProperties)[]
|
46
|
+
: (ContractConfig & TProperties)[]
|
47
|
+
|
48
|
+
|
49
|
+
export type MulticallResult<Result, TAllowFailure extends boolean = true> = TAllowFailure extends true ? ({
|
50
|
+
error?: undefined
|
51
|
+
result: Result
|
52
|
+
status: 'success'
|
53
|
+
} | {
|
54
|
+
error: Error
|
55
|
+
result?: undefined
|
56
|
+
status: 'error'
|
57
|
+
}) : Result
|
58
|
+
|
59
|
+
export type MulticallResults<
|
60
|
+
TContracts extends Contract[],
|
61
|
+
TAllowFailure extends boolean = true,
|
62
|
+
Result extends any[] = [],
|
63
|
+
Depth extends ReadonlyArray<number> = [],
|
64
|
+
> = Depth['length'] extends MAXIMUM_DEPTH
|
65
|
+
? MulticallResult<ExtractResultFromAbi, TAllowFailure>[]
|
66
|
+
: TContracts extends []
|
67
|
+
? []
|
68
|
+
: TContracts extends [infer Head extends Contract]
|
69
|
+
? [...Result, MulticallResult<ExtractResultFromAbi<Head['abi'], Head['functionName']>, TAllowFailure>]
|
70
|
+
: TContracts extends [
|
71
|
+
infer Head extends Contract,
|
72
|
+
...infer Tail extends Contract[],
|
73
|
+
]
|
74
|
+
? MulticallResults<
|
75
|
+
[...Tail],
|
76
|
+
TAllowFailure,
|
77
|
+
[...Result, MulticallResult<ExtractResultFromAbi<Head['abi'], Head['functionName']>, TAllowFailure>],
|
78
|
+
[...Depth, 1]
|
79
|
+
>
|
80
|
+
: TContracts extends ContractConfig<infer TAbi, infer TFunctionName>[]
|
81
|
+
? MulticallResult<ExtractResultFromAbi<TAbi, TFunctionName>, TAllowFailure>[]
|
82
|
+
: MulticallResult<ExtractResultFromAbi, TAllowFailure>[]
|
package/src/types/rpc.ts
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
import type { Block, BlockIdentifier, BlockNumber, Uncle } from './block'
|
2
|
+
import type { EstimateGasParameters, FeeHistory, FeeValues } from './fee'
|
3
|
+
import type { Log } from './log'
|
4
|
+
import type {
|
5
|
+
TransactionEIP1559,
|
6
|
+
TransactionEIP2930,
|
7
|
+
TransactionLegacy,
|
8
|
+
TransactionReceipt,
|
9
|
+
TransactionRequest,
|
10
|
+
} from './transaction'
|
11
|
+
|
12
|
+
export type Index = `0x${string}`
|
13
|
+
export type Quantity = `0x${string}`
|
14
|
+
export type Status = '0x0' | '0x1'
|
15
|
+
export type TransactionType = '0x0' | '0x1' | '0x2'
|
16
|
+
|
17
|
+
export type RpcBlock = Block<Quantity, RpcTransaction>
|
18
|
+
export type RpcBlockNumber = BlockNumber<Quantity>
|
19
|
+
export type RpcBlockIdentifier = BlockIdentifier<Quantity>
|
20
|
+
export type RpcEstimateGasParameters = EstimateGasParameters<Quantity>
|
21
|
+
export type RpcUncle = Uncle<Quantity>
|
22
|
+
export type RpcFeeHistory = FeeHistory<Quantity>
|
23
|
+
export type RpcFeeValues = FeeValues<Quantity>
|
24
|
+
export type RpcLog = Log<Quantity, Index>
|
25
|
+
export type RpcTransactionReceipt = TransactionReceipt<
|
26
|
+
Quantity,
|
27
|
+
Index,
|
28
|
+
Status,
|
29
|
+
TransactionType
|
30
|
+
>
|
31
|
+
export type RpcTransactionRequest = TransactionRequest<Quantity, Index>
|
32
|
+
export type RpcTransaction =
|
33
|
+
| TransactionLegacy<Quantity, Index, '0x0'>
|
34
|
+
| TransactionEIP2930<Quantity, Index, '0x1'>
|
35
|
+
| TransactionEIP1559<Quantity, Index, '0x2'>
|
@@ -0,0 +1,145 @@
|
|
1
|
+
import { transactionType } from '../utils'
|
2
|
+
import type { FeeValuesEIP1559, FeeValuesLegacy } from './fee'
|
3
|
+
import type { Log } from './log'
|
4
|
+
import type { Address, Hash, Hex } from './misc'
|
5
|
+
import type { ValueOf } from './utils'
|
6
|
+
|
7
|
+
export type AccessList = Array<{ address: Address; storageKeys: Array<Hex> }>
|
8
|
+
|
9
|
+
export type TransactionType = ValueOf<typeof transactionType>
|
10
|
+
|
11
|
+
export type TransactionReceipt<
|
12
|
+
TQuantity = bigint,
|
13
|
+
TIndex = number,
|
14
|
+
TStatus = 'success' | 'reverted',
|
15
|
+
TType = TransactionType,
|
16
|
+
> = {
|
17
|
+
/** Hash of block containing this transaction */
|
18
|
+
blockHash: Hash
|
19
|
+
/** Number of block containing this transaction */
|
20
|
+
blockNumber: TQuantity
|
21
|
+
/** Address of new contract or `null` if no contract was created */
|
22
|
+
contractAddress: Address | null
|
23
|
+
/** Gas used by this and all preceding transactions in this block */
|
24
|
+
cumulativeGasUsed: TQuantity
|
25
|
+
/** Pre-London, it is equal to the transaction's gasPrice. Post-London, it is equal to the actual gas price paid for inclusion. */
|
26
|
+
effectiveGasPrice: TQuantity
|
27
|
+
/** Transaction sender */
|
28
|
+
from: Address
|
29
|
+
/** Gas used by this transaction */
|
30
|
+
gasUsed: TQuantity
|
31
|
+
/** List of log objects generated by this transaction */
|
32
|
+
logs: Log<TQuantity, TIndex>[]
|
33
|
+
/** Logs bloom filter */
|
34
|
+
logsBloom: Hex
|
35
|
+
/** `1` if this transaction was successful or `0` if it failed */
|
36
|
+
status: TStatus
|
37
|
+
/** Transaction recipient or `null` if deploying a contract */
|
38
|
+
to: Address | null
|
39
|
+
/** Hash of this transaction */
|
40
|
+
transactionHash: Hash
|
41
|
+
/** Index of this transaction in the block */
|
42
|
+
transactionIndex: TIndex
|
43
|
+
/** Transaction type */
|
44
|
+
type: TType
|
45
|
+
}
|
46
|
+
|
47
|
+
export type TransactionBase<TQuantity = bigint, TIndex = number> = {
|
48
|
+
/** Hash of block containing this transaction or `null` if pending */
|
49
|
+
blockHash: Hash | null
|
50
|
+
/** Number of block containing this transaction or `null` if pending */
|
51
|
+
blockNumber: TQuantity | null
|
52
|
+
/** Transaction sender */
|
53
|
+
from: Address
|
54
|
+
/** Gas provided for transaction execution */
|
55
|
+
gas: TQuantity
|
56
|
+
/** Hash of this transaction */
|
57
|
+
hash: Hash
|
58
|
+
/** Contract code or a hashed method call */
|
59
|
+
input: Hex
|
60
|
+
/** Unique number identifying this transaction */
|
61
|
+
nonce: TIndex
|
62
|
+
/** ECDSA signature r */
|
63
|
+
r: Hex
|
64
|
+
/** ECDSA signature s */
|
65
|
+
s: Hex
|
66
|
+
/** Transaction recipient or `null` if deploying a contract */
|
67
|
+
to: Address | null
|
68
|
+
/** Index of this transaction in the block or `null` if pending */
|
69
|
+
transactionIndex: TIndex | null
|
70
|
+
/** ECDSA recovery ID */
|
71
|
+
v: TQuantity
|
72
|
+
/** Value in wei sent with this transaction */
|
73
|
+
value: TQuantity
|
74
|
+
}
|
75
|
+
export type TransactionLegacy<
|
76
|
+
TQuantity = bigint,
|
77
|
+
TIndex = number,
|
78
|
+
TType = 'legacy',
|
79
|
+
> = TransactionBase<TQuantity, TIndex> &
|
80
|
+
FeeValuesLegacy<TQuantity> & {
|
81
|
+
accessList?: never
|
82
|
+
type: TType
|
83
|
+
}
|
84
|
+
export type TransactionEIP2930<
|
85
|
+
TQuantity = bigint,
|
86
|
+
TIndex = number,
|
87
|
+
TType = 'eip2930',
|
88
|
+
> = TransactionBase<TQuantity, TIndex> &
|
89
|
+
FeeValuesLegacy<TQuantity> & {
|
90
|
+
accessList: AccessList
|
91
|
+
type: TType
|
92
|
+
}
|
93
|
+
export type TransactionEIP1559<
|
94
|
+
TQuantity = bigint,
|
95
|
+
TIndex = number,
|
96
|
+
TType = 'eip1559',
|
97
|
+
> = TransactionBase<TQuantity, TIndex> &
|
98
|
+
FeeValuesEIP1559<TQuantity> & {
|
99
|
+
accessList: AccessList
|
100
|
+
type: TType
|
101
|
+
}
|
102
|
+
export type Transaction<TQuantity = bigint, TIndex = number> =
|
103
|
+
| TransactionLegacy<TQuantity, TIndex>
|
104
|
+
| TransactionEIP2930<TQuantity, TIndex>
|
105
|
+
| TransactionEIP1559<TQuantity, TIndex>
|
106
|
+
|
107
|
+
export type TransactionRequestBase<TQuantity = bigint, TIndex = number> = {
|
108
|
+
/** Contract code or a hashed method call with encoded args */
|
109
|
+
data?: Hex
|
110
|
+
/** Transaction sender */
|
111
|
+
from: Address
|
112
|
+
/** Gas provided for transaction execution */
|
113
|
+
gas?: TQuantity
|
114
|
+
/** Unique number identifying this transaction */
|
115
|
+
nonce?: TIndex
|
116
|
+
/** Transaction recipient */
|
117
|
+
to?: Address
|
118
|
+
/** Value in wei sent with this transaction */
|
119
|
+
value?: TQuantity
|
120
|
+
}
|
121
|
+
export type TransactionRequestLegacy<
|
122
|
+
TQuantity = bigint,
|
123
|
+
TIndex = number,
|
124
|
+
> = TransactionRequestBase<TQuantity, TIndex> &
|
125
|
+
Partial<FeeValuesLegacy<TQuantity>> & {
|
126
|
+
accessList?: never
|
127
|
+
}
|
128
|
+
export type TransactionRequestEIP2930<
|
129
|
+
TQuantity = bigint,
|
130
|
+
TIndex = number,
|
131
|
+
> = TransactionRequestBase<TQuantity, TIndex> &
|
132
|
+
Partial<FeeValuesLegacy<TQuantity>> & {
|
133
|
+
accessList?: AccessList
|
134
|
+
}
|
135
|
+
export type TransactionRequestEIP1559<
|
136
|
+
TQuantity = bigint,
|
137
|
+
TIndex = number,
|
138
|
+
> = TransactionRequestBase<TQuantity, TIndex> &
|
139
|
+
Partial<FeeValuesEIP1559<TQuantity>> & {
|
140
|
+
accessList?: AccessList
|
141
|
+
}
|
142
|
+
export type TransactionRequest<TQuantity = bigint, TIndex = number> =
|
143
|
+
| TransactionRequestLegacy<TQuantity, TIndex>
|
144
|
+
| TransactionRequestEIP2930<TQuantity, TIndex>
|
145
|
+
| TransactionRequestEIP1559<TQuantity, TIndex>
|
@@ -0,0 +1,88 @@
|
|
1
|
+
export type MaybePromise<T> = T | Promise<T>
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @description Merges the intersection properties of T and U.
|
5
|
+
*
|
6
|
+
* @example
|
7
|
+
* MergeIntersectionProperties<{ a: string, b: number }, { a: number, c: boolean }>
|
8
|
+
* => { a: number, b: number }
|
9
|
+
*/
|
10
|
+
export type MergeIntersectionProperties<T, U> = {
|
11
|
+
[K in
|
12
|
+
keyof T as K extends keyof U
|
13
|
+
? U[K] extends void
|
14
|
+
? never
|
15
|
+
: K
|
16
|
+
: K]: K extends keyof U ? U[K] : T[K]
|
17
|
+
}
|
18
|
+
|
19
|
+
/**
|
20
|
+
* @description Makes nullable properties from T optional.
|
21
|
+
*
|
22
|
+
* @example
|
23
|
+
* OptionalNullable<{ a: string | undefined, c: number }>
|
24
|
+
* => { a?: string | undefined, c: number }
|
25
|
+
*/
|
26
|
+
export type OptionalNullable<T> = {
|
27
|
+
[K in keyof T as T[K] extends NonNullable<unknown> ? K : never]: T[K]
|
28
|
+
} & {
|
29
|
+
[K in keyof T as T[K] extends NonNullable<unknown> ? never : K]?: T[K]
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* @description Constructs a type by excluding `undefined` from `T`.
|
34
|
+
*
|
35
|
+
* @example
|
36
|
+
* NoUndefined<string | undefined>
|
37
|
+
* => string
|
38
|
+
*/
|
39
|
+
export type NoUndefined<T> = T extends undefined ? never : T
|
40
|
+
|
41
|
+
/**
|
42
|
+
* @description Creates a type that is a partial of T, but with the required keys K.
|
43
|
+
*
|
44
|
+
* @example
|
45
|
+
* PartialBy<{ a: string, b: number }, 'a'>
|
46
|
+
* => { a?: string, b: number }
|
47
|
+
*/
|
48
|
+
export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
|
49
|
+
|
50
|
+
/**
|
51
|
+
* @description Combines members of an intersection into a readable type.
|
52
|
+
*
|
53
|
+
* @link https://twitter.com/mattpocockuk/status/1622730173446557697?s=20&t=NdpAcmEFXY01xkqU3KO0Mg
|
54
|
+
* @example
|
55
|
+
* Prettify<{ a: string } | { b: string } | { c: number, d: bigint }>
|
56
|
+
* => { a: string, b: string, c: number, d: bigint }
|
57
|
+
*/
|
58
|
+
export type Prettify<T> = {
|
59
|
+
[K in keyof T]: T[K]
|
60
|
+
} & {}
|
61
|
+
|
62
|
+
type TrimLeft<T, Chars extends string = ' '> = T extends `${Chars}${infer R}`
|
63
|
+
? TrimLeft<R>
|
64
|
+
: T
|
65
|
+
type TrimRight<T, Chars extends string = ' '> = T extends `${infer R}${Chars}`
|
66
|
+
? TrimRight<R>
|
67
|
+
: T
|
68
|
+
|
69
|
+
/**
|
70
|
+
* @description Trims empty space from type T.
|
71
|
+
*
|
72
|
+
* @example
|
73
|
+
* Trim<' lol '>
|
74
|
+
* => 'lol'
|
75
|
+
*/
|
76
|
+
export type Trim<T, Chars extends string = ' '> = TrimLeft<
|
77
|
+
TrimRight<T, Chars>,
|
78
|
+
Chars
|
79
|
+
>
|
80
|
+
|
81
|
+
/**
|
82
|
+
* @description Creates a type that extracts the values of T.
|
83
|
+
*
|
84
|
+
* @example
|
85
|
+
* ValueOf<{ a: string, b: number }>
|
86
|
+
* => string | number
|
87
|
+
*/
|
88
|
+
export type ValueOf<T> = T[keyof T]
|
@@ -0,0 +1,135 @@
|
|
1
|
+
import { AbiCoder } from 'ethers/lib/utils'
|
2
|
+
import { bench, describe } from 'vitest'
|
3
|
+
|
4
|
+
import { decodeAbi } from './decodeAbi'
|
5
|
+
|
6
|
+
describe('ABI Decode (static struct)', () => {
|
7
|
+
bench('viem: `decodeAbi`', () => {
|
8
|
+
decodeAbi({
|
9
|
+
data: '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac00000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c961145a54c96e3ae9baa048c4f4d6b04c13916b00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002',
|
10
|
+
params: [
|
11
|
+
{
|
12
|
+
components: [
|
13
|
+
{
|
14
|
+
components: [
|
15
|
+
{
|
16
|
+
internalType: 'uint256',
|
17
|
+
name: 'x',
|
18
|
+
type: 'uint256',
|
19
|
+
},
|
20
|
+
{
|
21
|
+
internalType: 'bool',
|
22
|
+
name: 'y',
|
23
|
+
type: 'bool',
|
24
|
+
},
|
25
|
+
{
|
26
|
+
internalType: 'address',
|
27
|
+
name: 'z',
|
28
|
+
type: 'address',
|
29
|
+
},
|
30
|
+
],
|
31
|
+
internalType: 'struct ABIExample.Foo',
|
32
|
+
name: 'foo',
|
33
|
+
type: 'tuple',
|
34
|
+
},
|
35
|
+
{
|
36
|
+
components: [
|
37
|
+
{
|
38
|
+
internalType: 'uint256',
|
39
|
+
name: 'x',
|
40
|
+
type: 'uint256',
|
41
|
+
},
|
42
|
+
{
|
43
|
+
internalType: 'bool',
|
44
|
+
name: 'y',
|
45
|
+
type: 'bool',
|
46
|
+
},
|
47
|
+
{
|
48
|
+
internalType: 'address',
|
49
|
+
name: 'z',
|
50
|
+
type: 'address',
|
51
|
+
},
|
52
|
+
],
|
53
|
+
internalType: 'struct ABIExample.Foo',
|
54
|
+
name: 'baz',
|
55
|
+
type: 'tuple',
|
56
|
+
},
|
57
|
+
{
|
58
|
+
internalType: 'uint8[2]',
|
59
|
+
name: 'x',
|
60
|
+
type: 'uint8[2]',
|
61
|
+
},
|
62
|
+
],
|
63
|
+
internalType: 'struct ABIExample.Bar',
|
64
|
+
name: 'barOut',
|
65
|
+
type: 'tuple',
|
66
|
+
},
|
67
|
+
],
|
68
|
+
})
|
69
|
+
})
|
70
|
+
|
71
|
+
bench('ethers: `AbiCoder.decode`', () => {
|
72
|
+
const coder = new AbiCoder()
|
73
|
+
coder.decode(
|
74
|
+
[
|
75
|
+
{
|
76
|
+
components: [
|
77
|
+
{
|
78
|
+
components: [
|
79
|
+
{
|
80
|
+
internalType: 'uint256',
|
81
|
+
name: 'x',
|
82
|
+
type: 'uint256',
|
83
|
+
},
|
84
|
+
{
|
85
|
+
internalType: 'bool',
|
86
|
+
name: 'y',
|
87
|
+
type: 'bool',
|
88
|
+
},
|
89
|
+
{
|
90
|
+
internalType: 'address',
|
91
|
+
name: 'z',
|
92
|
+
type: 'address',
|
93
|
+
},
|
94
|
+
],
|
95
|
+
internalType: 'struct ABIExample.Foo',
|
96
|
+
name: 'foo',
|
97
|
+
type: 'tuple',
|
98
|
+
},
|
99
|
+
{
|
100
|
+
components: [
|
101
|
+
{
|
102
|
+
internalType: 'uint256',
|
103
|
+
name: 'x',
|
104
|
+
type: 'uint256',
|
105
|
+
},
|
106
|
+
{
|
107
|
+
internalType: 'bool',
|
108
|
+
name: 'y',
|
109
|
+
type: 'bool',
|
110
|
+
},
|
111
|
+
{
|
112
|
+
internalType: 'address',
|
113
|
+
name: 'z',
|
114
|
+
type: 'address',
|
115
|
+
},
|
116
|
+
],
|
117
|
+
internalType: 'struct ABIExample.Foo',
|
118
|
+
name: 'baz',
|
119
|
+
type: 'tuple',
|
120
|
+
},
|
121
|
+
{
|
122
|
+
internalType: 'uint8[2]',
|
123
|
+
name: 'x',
|
124
|
+
type: 'uint8[2]',
|
125
|
+
},
|
126
|
+
],
|
127
|
+
internalType: 'struct ABIExample.Bar',
|
128
|
+
name: 'barOut',
|
129
|
+
type: 'tuple',
|
130
|
+
},
|
131
|
+
],
|
132
|
+
'0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac00000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c961145a54c96e3ae9baa048c4f4d6b04c13916b00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002',
|
133
|
+
)
|
134
|
+
})
|
135
|
+
})
|