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,497 @@
|
|
1
|
+
import type {
|
2
|
+
Abi,
|
3
|
+
AbiError,
|
4
|
+
AbiEvent,
|
5
|
+
AbiFunction,
|
6
|
+
AbiType,
|
7
|
+
AbiTypeToPrimitiveType,
|
8
|
+
AbiParameter,
|
9
|
+
AbiParameterToPrimitiveType,
|
10
|
+
AbiParametersToPrimitiveTypes,
|
11
|
+
AbiStateMutability,
|
12
|
+
ExtractAbiFunction,
|
13
|
+
ExtractAbiEvent,
|
14
|
+
ExtractAbiEventNames,
|
15
|
+
ExtractAbiError,
|
16
|
+
ExtractAbiErrorNames,
|
17
|
+
ExtractAbiFunctionNames,
|
18
|
+
Narrow,
|
19
|
+
} from 'abitype'
|
20
|
+
import type { Address, Hex, LogTopic } from './misc'
|
21
|
+
import type { TransactionRequest } from './transaction'
|
22
|
+
import type { NoUndefined, Prettify, Trim } from './utils'
|
23
|
+
|
24
|
+
//////////////////////////////////////////////////////////////////////
|
25
|
+
// ABIs
|
26
|
+
|
27
|
+
export type AbiItem = Abi[number]
|
28
|
+
|
29
|
+
type HashedEventTypes = 'string' | 'bytes' | 'tuple' | `${string}[${string}]`
|
30
|
+
|
31
|
+
type EventTopicParam<
|
32
|
+
TPrimitiveType = Hex,
|
33
|
+
TTopic extends LogTopic = LogTopic,
|
34
|
+
> = NoUndefined<
|
35
|
+
| (TTopic extends Hex ? TPrimitiveType : undefined)
|
36
|
+
| (TTopic extends Hex[] ? TPrimitiveType[] : undefined)
|
37
|
+
| (TTopic extends null ? null : undefined)
|
38
|
+
>
|
39
|
+
|
40
|
+
export type AbiEventParameterToPrimitiveType<TParam extends AbiParameter> =
|
41
|
+
EventTopicParam<AbiParameterToPrimitiveType<TParam>>
|
42
|
+
|
43
|
+
export type AbiEventParametersToPrimitiveTypes<
|
44
|
+
TAbiParameters extends readonly AbiParameter[],
|
45
|
+
TBase = TAbiParameters[0] extends { name: string } ? {} : [],
|
46
|
+
> = Prettify<
|
47
|
+
TAbiParameters extends readonly [infer Head, ...infer Tail]
|
48
|
+
? Head extends { indexed: true }
|
49
|
+
? Head extends AbiParameter
|
50
|
+
? Head extends { name: infer Name }
|
51
|
+
? Name extends string
|
52
|
+
? {
|
53
|
+
[name in Name]?: AbiEventParameterToPrimitiveType<Head>
|
54
|
+
} & (Tail extends readonly []
|
55
|
+
? {}
|
56
|
+
: Tail extends readonly AbiParameter[]
|
57
|
+
? AbiEventParametersToPrimitiveTypes<Tail>
|
58
|
+
: {})
|
59
|
+
: never
|
60
|
+
: [
|
61
|
+
AbiEventParameterToPrimitiveType<Head>,
|
62
|
+
...(Tail extends readonly []
|
63
|
+
? []
|
64
|
+
: Tail extends readonly AbiParameter[]
|
65
|
+
? AbiEventParametersToPrimitiveTypes<Tail>
|
66
|
+
: []),
|
67
|
+
]
|
68
|
+
: TBase
|
69
|
+
: TBase
|
70
|
+
: TBase
|
71
|
+
>
|
72
|
+
|
73
|
+
export type AbiEventTopicToPrimitiveType<
|
74
|
+
TParam extends AbiParameter,
|
75
|
+
TTopic extends LogTopic,
|
76
|
+
TPrimitiveType = TParam['type'] extends HashedEventTypes
|
77
|
+
? TTopic
|
78
|
+
: AbiParameterToPrimitiveType<TParam>,
|
79
|
+
> = EventTopicParam<TPrimitiveType, TTopic>
|
80
|
+
|
81
|
+
export type AbiEventTopicsToPrimitiveTypes<
|
82
|
+
TAbiParameters extends readonly AbiParameter[],
|
83
|
+
TTopics extends LogTopic[] | undefined = undefined,
|
84
|
+
TData extends Hex | undefined = undefined,
|
85
|
+
TBase = TAbiParameters[0] extends { name: string } ? {} : [],
|
86
|
+
> = Prettify<
|
87
|
+
TAbiParameters extends readonly [infer Head, ...infer Tail]
|
88
|
+
? TTopics extends readonly [infer TopicHead, ...infer TopicTail]
|
89
|
+
? Head extends { indexed: true }
|
90
|
+
? Head extends AbiParameter
|
91
|
+
? Head extends { name: infer Name }
|
92
|
+
? Name extends string
|
93
|
+
? {
|
94
|
+
[name in Name]: TopicHead extends LogTopic
|
95
|
+
? AbiEventTopicToPrimitiveType<Head, TopicHead>
|
96
|
+
: never
|
97
|
+
} & (Tail extends readonly []
|
98
|
+
? {}
|
99
|
+
: Tail extends readonly AbiParameter[]
|
100
|
+
? TopicTail extends LogTopic[]
|
101
|
+
? AbiEventTopicsToPrimitiveTypes<Tail, TopicTail, TData>
|
102
|
+
: {}
|
103
|
+
: {})
|
104
|
+
: never
|
105
|
+
: [
|
106
|
+
TopicHead extends LogTopic
|
107
|
+
? AbiEventTopicToPrimitiveType<Head, TopicHead>
|
108
|
+
: never,
|
109
|
+
...(Tail extends readonly []
|
110
|
+
? []
|
111
|
+
: Tail extends readonly AbiParameter[]
|
112
|
+
? TopicTail extends LogTopic[]
|
113
|
+
? AbiEventTopicsToPrimitiveTypes<Tail, TopicTail, TData>
|
114
|
+
: []
|
115
|
+
: []),
|
116
|
+
]
|
117
|
+
: TBase
|
118
|
+
: TBase
|
119
|
+
: TTopics extends readonly []
|
120
|
+
? TData extends Hex
|
121
|
+
? Head extends AbiParameter
|
122
|
+
? Head extends { indexed: true }
|
123
|
+
? Tail extends readonly AbiParameter[]
|
124
|
+
? AbiEventTopicsToPrimitiveTypes<Tail, [], TData>
|
125
|
+
: TBase
|
126
|
+
: Head extends { name: infer Name }
|
127
|
+
? Name extends string
|
128
|
+
? {
|
129
|
+
[name in Name]: AbiParameterToPrimitiveType<Head>
|
130
|
+
} & (Tail extends readonly []
|
131
|
+
? {}
|
132
|
+
: Tail extends readonly AbiParameter[]
|
133
|
+
? AbiEventTopicsToPrimitiveTypes<Tail, [], TData>
|
134
|
+
: {})
|
135
|
+
: never
|
136
|
+
: [
|
137
|
+
AbiParameterToPrimitiveType<Head>,
|
138
|
+
...(Tail extends readonly []
|
139
|
+
? []
|
140
|
+
: Tail extends readonly AbiParameter[]
|
141
|
+
? AbiEventTopicsToPrimitiveTypes<Tail, [], TData>
|
142
|
+
: []),
|
143
|
+
]
|
144
|
+
: TBase
|
145
|
+
: TBase
|
146
|
+
: TBase
|
147
|
+
: undefined
|
148
|
+
>
|
149
|
+
|
150
|
+
export type ExtractArgsFromAbi<
|
151
|
+
TAbi extends Abi | readonly unknown[],
|
152
|
+
TFunctionName extends string,
|
153
|
+
TAbiFunction extends AbiFunction & { type: 'function' } = TAbi extends Abi
|
154
|
+
? ExtractAbiFunction<TAbi, TFunctionName>
|
155
|
+
: AbiFunction & { type: 'function' },
|
156
|
+
TArgs = AbiParametersToPrimitiveTypes<TAbiFunction['inputs']>,
|
157
|
+
FailedToParseArgs =
|
158
|
+
| ([TArgs] extends [never] ? true : false)
|
159
|
+
| (readonly unknown[] extends TArgs ? true : false),
|
160
|
+
> = true extends FailedToParseArgs
|
161
|
+
? {
|
162
|
+
/**
|
163
|
+
* Arguments to pass contract method
|
164
|
+
*
|
165
|
+
* Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link abi} for type inference.
|
166
|
+
*/
|
167
|
+
args?: readonly unknown[]
|
168
|
+
}
|
169
|
+
: TArgs extends readonly []
|
170
|
+
? { args?: never }
|
171
|
+
: {
|
172
|
+
/** Arguments to pass contract method */ args: TArgs
|
173
|
+
}
|
174
|
+
|
175
|
+
export type ExtractConstructorArgsFromAbi<
|
176
|
+
TAbi extends Abi | readonly unknown[],
|
177
|
+
TAbiFunction extends AbiFunction & { type: 'constructor' } = TAbi extends Abi
|
178
|
+
? Extract<
|
179
|
+
TAbi[number],
|
180
|
+
{
|
181
|
+
type: 'constructor'
|
182
|
+
}
|
183
|
+
>
|
184
|
+
: AbiFunction & { type: 'constructor' },
|
185
|
+
TArgs = AbiParametersToPrimitiveTypes<TAbiFunction['inputs']>,
|
186
|
+
FailedToParseArgs =
|
187
|
+
| ([TArgs] extends [never] ? true : false)
|
188
|
+
| (readonly unknown[] extends TArgs ? true : false),
|
189
|
+
> = true extends FailedToParseArgs
|
190
|
+
? {
|
191
|
+
/**
|
192
|
+
* Arguments to pass contract method
|
193
|
+
*
|
194
|
+
* Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link abi} for type inference.
|
195
|
+
*/
|
196
|
+
args?: readonly unknown[]
|
197
|
+
}
|
198
|
+
: TArgs extends readonly []
|
199
|
+
? { args?: never }
|
200
|
+
: {
|
201
|
+
/** Arguments to pass contract method */ args: TArgs
|
202
|
+
}
|
203
|
+
|
204
|
+
export type ExtractErrorArgsFromAbi<
|
205
|
+
TAbi extends Abi | readonly unknown[],
|
206
|
+
TErrorName extends string,
|
207
|
+
TAbiError extends AbiError = TAbi extends Abi
|
208
|
+
? ExtractAbiError<TAbi, TErrorName>
|
209
|
+
: AbiError,
|
210
|
+
TArgs = AbiParametersToPrimitiveTypes<TAbiError['inputs']>,
|
211
|
+
FailedToParseArgs =
|
212
|
+
| ([TArgs] extends [never] ? true : false)
|
213
|
+
| (readonly unknown[] extends TArgs ? true : false),
|
214
|
+
> = true extends FailedToParseArgs
|
215
|
+
? {
|
216
|
+
/**
|
217
|
+
* Arguments to pass contract method
|
218
|
+
*
|
219
|
+
* Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link abi} for type inference.
|
220
|
+
*/
|
221
|
+
args?: readonly unknown[]
|
222
|
+
}
|
223
|
+
: TArgs extends readonly []
|
224
|
+
? { args?: never }
|
225
|
+
: {
|
226
|
+
/** Arguments to pass contract method */ args: TArgs
|
227
|
+
}
|
228
|
+
|
229
|
+
export type ExtractEventArgsFromAbi<
|
230
|
+
TAbi extends Abi | readonly unknown[],
|
231
|
+
TEventName extends string,
|
232
|
+
TAbiEvent extends AbiEvent & { type: 'event' } = TAbi extends Abi
|
233
|
+
? ExtractAbiEvent<TAbi, TEventName>
|
234
|
+
: AbiEvent & { type: 'event' },
|
235
|
+
TArgs = AbiEventParametersToPrimitiveTypes<TAbiEvent['inputs']>,
|
236
|
+
FailedToParseArgs =
|
237
|
+
| ([TArgs] extends [never] ? true : false)
|
238
|
+
| (readonly unknown[] extends TArgs ? true : false),
|
239
|
+
> = true extends FailedToParseArgs
|
240
|
+
? {
|
241
|
+
/**
|
242
|
+
* Arguments to pass contract method
|
243
|
+
*
|
244
|
+
* Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link abi} for type inference.
|
245
|
+
*/
|
246
|
+
args?: readonly unknown[]
|
247
|
+
}
|
248
|
+
: TArgs extends readonly []
|
249
|
+
? { args?: never }
|
250
|
+
: {
|
251
|
+
args?: TArgs
|
252
|
+
}
|
253
|
+
|
254
|
+
export type ExtractEventArgsFromTopics<
|
255
|
+
TAbi extends Abi | readonly unknown[],
|
256
|
+
TEventName extends string,
|
257
|
+
TTopics extends LogTopic[],
|
258
|
+
TData extends Hex | undefined,
|
259
|
+
TAbiEvent extends AbiEvent & { type: 'event' } = TAbi extends Abi
|
260
|
+
? ExtractAbiEvent<TAbi, TEventName>
|
261
|
+
: AbiEvent & { type: 'event' },
|
262
|
+
TArgs = AbiEventTopicsToPrimitiveTypes<TAbiEvent['inputs'], TTopics, TData>,
|
263
|
+
> = TTopics extends readonly []
|
264
|
+
? TData extends undefined
|
265
|
+
? { args?: never }
|
266
|
+
: { args?: TArgs }
|
267
|
+
: {
|
268
|
+
args?: TArgs
|
269
|
+
}
|
270
|
+
|
271
|
+
export type ExtractErrorNameFromAbi<
|
272
|
+
TAbi extends Abi | readonly unknown[] = Abi,
|
273
|
+
TErrorName extends string = string,
|
274
|
+
> = TAbi extends Abi
|
275
|
+
? ExtractAbiErrorNames<TAbi> extends infer AbiErrorNames
|
276
|
+
?
|
277
|
+
| AbiErrorNames
|
278
|
+
| (TErrorName extends AbiErrorNames ? TErrorName : never)
|
279
|
+
| (Abi extends TAbi ? string : never)
|
280
|
+
: never
|
281
|
+
: TErrorName
|
282
|
+
|
283
|
+
export type ExtractEventNameFromAbi<
|
284
|
+
TAbi extends Abi | readonly unknown[] = Abi,
|
285
|
+
TEventName extends string = string,
|
286
|
+
> = TAbi extends Abi
|
287
|
+
? ExtractAbiEventNames<TAbi> extends infer AbiEventNames
|
288
|
+
?
|
289
|
+
| AbiEventNames
|
290
|
+
| (TEventName extends AbiEventNames ? TEventName : never)
|
291
|
+
| (Abi extends TAbi ? string : never)
|
292
|
+
: never
|
293
|
+
: TEventName
|
294
|
+
|
295
|
+
export type ExtractFunctionNameFromAbi<
|
296
|
+
TAbi extends Abi | readonly unknown[] = Abi,
|
297
|
+
TFunctionName extends string = string,
|
298
|
+
TAbiStateMutability extends AbiStateMutability = AbiStateMutability,
|
299
|
+
> = TAbi extends Abi
|
300
|
+
? ExtractAbiFunctionNames<
|
301
|
+
TAbi,
|
302
|
+
TAbiStateMutability
|
303
|
+
> extends infer AbiFunctionNames
|
304
|
+
?
|
305
|
+
| AbiFunctionNames
|
306
|
+
| (TFunctionName extends AbiFunctionNames ? TFunctionName : never)
|
307
|
+
| (Abi extends TAbi ? string : never)
|
308
|
+
: never
|
309
|
+
: TFunctionName
|
310
|
+
|
311
|
+
type ExtractNames<TAbi extends Abi> =
|
312
|
+
| ExtractAbiFunctionNames<TAbi>
|
313
|
+
| ExtractAbiEventNames<TAbi>
|
314
|
+
| ExtractAbiErrorNames<TAbi>
|
315
|
+
|
316
|
+
export type ExtractNameFromAbi<
|
317
|
+
TAbi extends Abi | readonly unknown[] = Abi,
|
318
|
+
TName extends string = string,
|
319
|
+
> = TAbi extends Abi
|
320
|
+
? ExtractNames<TAbi> extends infer AbiNames
|
321
|
+
?
|
322
|
+
| AbiNames
|
323
|
+
| (TName extends AbiNames ? TName : never)
|
324
|
+
| (Abi extends TAbi ? string : never)
|
325
|
+
: never
|
326
|
+
: TName
|
327
|
+
|
328
|
+
export type ExtractResultFromAbi<
|
329
|
+
TAbi extends Abi | readonly unknown[] = Abi,
|
330
|
+
TFunctionName extends string = string,
|
331
|
+
TAbiFunction extends AbiFunction & {
|
332
|
+
type: 'function'
|
333
|
+
} = TAbi extends Abi
|
334
|
+
? ExtractAbiFunction<TAbi, TFunctionName>
|
335
|
+
: AbiFunction & { type: 'function' },
|
336
|
+
TArgs = AbiParametersToPrimitiveTypes<TAbiFunction['outputs']>,
|
337
|
+
FailedToParseArgs =
|
338
|
+
| ([TArgs] extends [never] ? true : false)
|
339
|
+
| (readonly unknown[] extends TArgs ? true : false),
|
340
|
+
> = true extends FailedToParseArgs
|
341
|
+
? unknown
|
342
|
+
: TArgs extends readonly []
|
343
|
+
? void
|
344
|
+
: TArgs extends readonly [infer Arg]
|
345
|
+
? Arg
|
346
|
+
: TArgs
|
347
|
+
|
348
|
+
//////////////////////////////////////////////////////////////////////
|
349
|
+
// Event/Function Definitions
|
350
|
+
|
351
|
+
// REFACTOR: Remove below once we implement `ParseAbi`.
|
352
|
+
// https://github.com/wagmi-dev/viem/issues/29
|
353
|
+
|
354
|
+
export type EventDefinition = `${string}(${string})`
|
355
|
+
|
356
|
+
type ExtractArgsFromDefinitionConfig = {
|
357
|
+
indexedOnly: unknown
|
358
|
+
}
|
359
|
+
|
360
|
+
type ExtractArgsFromDefinitionDefaultConfig = {
|
361
|
+
indexedOnly: false
|
362
|
+
}
|
363
|
+
|
364
|
+
type NamedArg<
|
365
|
+
TType extends string,
|
366
|
+
TName extends string,
|
367
|
+
TIndexed = false,
|
368
|
+
> = `${TType}${TIndexed extends true ? ' indexed ' : ' '}${TName}`
|
369
|
+
type UnnamedArg<TType extends string> = `${TType}`
|
370
|
+
type IndexedArg<TType extends string> = `${TType} indexed`
|
371
|
+
|
372
|
+
type ExtractTypeFromArg<
|
373
|
+
TArg,
|
374
|
+
TRest = unknown,
|
375
|
+
TConfig extends ExtractArgsFromDefinitionConfig = ExtractArgsFromDefinitionDefaultConfig,
|
376
|
+
> = Trim<TArg> extends NamedArg<infer Type, infer Name, true>
|
377
|
+
? Type extends AbiType
|
378
|
+
? Name extends ''
|
379
|
+
? TRest extends [...args: any]
|
380
|
+
? [AbiTypeToPrimitiveType<Type>, ...TRest]
|
381
|
+
: never
|
382
|
+
: {
|
383
|
+
[name in Trim<Name>]?:
|
384
|
+
| AbiTypeToPrimitiveType<Type>
|
385
|
+
| AbiTypeToPrimitiveType<Type>[]
|
386
|
+
} & TRest
|
387
|
+
: never
|
388
|
+
: TConfig extends { indexedOnly: false }
|
389
|
+
? TArg extends NamedArg<infer Type, infer Name, false>
|
390
|
+
? Type extends AbiType
|
391
|
+
? Name extends 'indexed'
|
392
|
+
? TRest extends [...args: any]
|
393
|
+
? [AbiTypeToPrimitiveType<Type>, ...TRest]
|
394
|
+
: never
|
395
|
+
: { [name in Trim<Name>]: AbiTypeToPrimitiveType<Type> } & TRest
|
396
|
+
: never
|
397
|
+
: TArg extends UnnamedArg<infer Type>
|
398
|
+
? Type extends AbiType
|
399
|
+
? TRest extends [...args: any]
|
400
|
+
? [AbiTypeToPrimitiveType<Type>, ...TRest]
|
401
|
+
: never
|
402
|
+
: never
|
403
|
+
: never
|
404
|
+
: TArg extends NamedArg<infer Type, string, true>
|
405
|
+
? Type extends AbiType
|
406
|
+
? TRest extends [...args: any]
|
407
|
+
? [AbiTypeToPrimitiveType<Type>, ...TRest]
|
408
|
+
: never
|
409
|
+
: TRest
|
410
|
+
: TArg extends IndexedArg<infer Type>
|
411
|
+
? Type extends AbiType
|
412
|
+
? TRest extends [...args: any]
|
413
|
+
?
|
414
|
+
| [
|
415
|
+
| AbiTypeToPrimitiveType<Type>
|
416
|
+
| AbiTypeToPrimitiveType<Type>[]
|
417
|
+
| null,
|
418
|
+
]
|
419
|
+
| [
|
420
|
+
(
|
421
|
+
| AbiTypeToPrimitiveType<Type>
|
422
|
+
| AbiTypeToPrimitiveType<Type>[]
|
423
|
+
| null
|
424
|
+
),
|
425
|
+
...TRest,
|
426
|
+
]
|
427
|
+
: never
|
428
|
+
: TRest
|
429
|
+
: TRest
|
430
|
+
|
431
|
+
type ExtractTypesFromArgs<
|
432
|
+
TArgs,
|
433
|
+
TConfig extends ExtractArgsFromDefinitionConfig = ExtractArgsFromDefinitionDefaultConfig,
|
434
|
+
> = Trim<TArgs> extends `${infer Head},${infer Tail}`
|
435
|
+
? ExtractTypeFromArg<Head, ExtractTypesFromArgs<Tail, TConfig>, TConfig>
|
436
|
+
: ExtractTypeFromArg<
|
437
|
+
Trim<TArgs>,
|
438
|
+
Trim<TArgs> extends NamedArg<string, string>
|
439
|
+
? Trim<TArgs> extends IndexedArg<string>
|
440
|
+
? []
|
441
|
+
: unknown
|
442
|
+
: [],
|
443
|
+
TConfig
|
444
|
+
>
|
445
|
+
|
446
|
+
type ExtractArgsFromDefinition<
|
447
|
+
TDef,
|
448
|
+
TConfig extends ExtractArgsFromDefinitionConfig = ExtractArgsFromDefinitionDefaultConfig,
|
449
|
+
> = TDef extends `${string}(${infer Args})`
|
450
|
+
? ExtractTypesFromArgs<Args, TConfig>
|
451
|
+
: 'Error: Invalid definition was provided.'
|
452
|
+
|
453
|
+
export type ExtractArgsFromEventDefinition<
|
454
|
+
TDef extends EventDefinition | undefined,
|
455
|
+
TConfig extends ExtractArgsFromDefinitionConfig = {
|
456
|
+
indexedOnly: true
|
457
|
+
},
|
458
|
+
> = Prettify<
|
459
|
+
TDef extends EventDefinition
|
460
|
+
? ExtractArgsFromDefinition<TDef, TConfig> extends [...args: any]
|
461
|
+
? ExtractArgsFromDefinition<TDef, TConfig> | []
|
462
|
+
: ExtractArgsFromDefinition<TDef, TConfig>
|
463
|
+
: undefined
|
464
|
+
>
|
465
|
+
|
466
|
+
//////////////////////////////////////////////////////////////////////
|
467
|
+
// Args
|
468
|
+
|
469
|
+
export type ContractConfig<
|
470
|
+
TAbi extends Abi | readonly unknown[] = Abi,
|
471
|
+
TFunctionName extends string = string,
|
472
|
+
TAbiStateMutability extends AbiStateMutability = AbiStateMutability,
|
473
|
+
> = {
|
474
|
+
/** Contract ABI */
|
475
|
+
abi: Narrow<TAbi>
|
476
|
+
/** Contract address */
|
477
|
+
address: Address
|
478
|
+
/** Function to invoke on the contract */
|
479
|
+
functionName: ExtractFunctionNameFromAbi<
|
480
|
+
TAbi,
|
481
|
+
TFunctionName,
|
482
|
+
TAbiStateMutability
|
483
|
+
>
|
484
|
+
} & ExtractArgsFromAbi<TAbi, TFunctionName>
|
485
|
+
|
486
|
+
export type GetValue<
|
487
|
+
TAbi extends Abi | readonly unknown[],
|
488
|
+
TFunctionName extends string,
|
489
|
+
TValueType = TransactionRequest['value'],
|
490
|
+
TAbiFunction extends AbiFunction & { type: 'function' } = TAbi extends Abi
|
491
|
+
? ExtractAbiFunction<TAbi, TFunctionName>
|
492
|
+
: AbiFunction & { type: 'function' },
|
493
|
+
> = TAbiFunction['stateMutability'] extends 'payable'
|
494
|
+
? TValueType
|
495
|
+
: TAbiFunction['payable'] extends true
|
496
|
+
? TValueType
|
497
|
+
: never
|