viem 0.0.0-w-20230829165118 → 0.0.0-w-20230904174840
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/README.md +6 -0
- package/dist/cjs/accounts/index.js +19 -19
- package/dist/cjs/accounts/index.js.map +1 -1
- package/dist/cjs/actions/getContract.js.map +1 -1
- package/dist/cjs/actions/public/call.js +1 -1
- package/dist/cjs/actions/public/call.js.map +1 -1
- package/dist/cjs/actions/public/getLogs.js.map +1 -1
- package/dist/cjs/actions/public/multicall.js +54 -31
- package/dist/cjs/actions/public/multicall.js.map +1 -1
- package/dist/cjs/actions/public/watchContractEvent.js +3 -2
- package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
- package/dist/cjs/actions/public/watchEvent.js +2 -5
- package/dist/cjs/actions/public/watchEvent.js.map +1 -1
- package/dist/cjs/actions/wallet/deployContract.js +3 -6
- package/dist/cjs/actions/wallet/deployContract.js.map +1 -1
- package/dist/cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
- package/dist/cjs/actions/wallet/signTypedData.js +1 -13
- package/dist/cjs/actions/wallet/signTypedData.js.map +1 -1
- package/dist/cjs/chains/definitions/base.js +1 -3
- package/dist/cjs/chains/definitions/base.js.map +1 -1
- package/dist/cjs/chains/definitions/baseGoerli.js +1 -3
- package/dist/cjs/chains/definitions/baseGoerli.js.map +1 -1
- package/dist/cjs/chains/definitions/meter.js +22 -0
- package/dist/cjs/chains/definitions/meter.js.map +1 -0
- package/dist/cjs/chains/definitions/meterTestnet.js +25 -0
- package/dist/cjs/chains/definitions/meterTestnet.js.map +1 -0
- package/dist/cjs/chains/definitions/opBNB.js +28 -0
- package/dist/cjs/chains/definitions/opBNB.js.map +1 -0
- package/dist/cjs/chains/definitions/opBNBTestnet.js +29 -0
- package/dist/cjs/chains/definitions/opBNBTestnet.js.map +1 -0
- package/dist/cjs/chains/definitions/optimism.js +0 -2
- package/dist/cjs/chains/definitions/optimism.js.map +1 -1
- package/dist/cjs/chains/definitions/optimismGoerli.js +0 -2
- package/dist/cjs/chains/definitions/optimismGoerli.js.map +1 -1
- package/dist/cjs/chains/definitions/plinga.js +31 -0
- package/dist/cjs/chains/definitions/plinga.js.map +1 -0
- package/dist/cjs/chains/definitions/scrollSepolia.js +6 -0
- package/dist/cjs/chains/definitions/scrollSepolia.js.map +1 -1
- package/dist/cjs/chains/definitions/sepolia.js +5 -0
- package/dist/cjs/chains/definitions/sepolia.js.map +1 -1
- package/dist/cjs/chains/definitions/vechain.js +29 -0
- package/dist/cjs/chains/definitions/vechain.js.map +1 -0
- package/dist/cjs/chains/definitions/zora.js +0 -2
- package/dist/cjs/chains/definitions/zora.js.map +1 -1
- package/dist/cjs/chains/definitions/zoraTestnet.js +0 -2
- package/dist/cjs/chains/definitions/zoraTestnet.js.map +1 -1
- package/dist/cjs/chains/index.js +14 -2
- package/dist/cjs/chains/index.js.map +1 -1
- package/dist/cjs/clients/decorators/public.js.map +1 -1
- package/dist/cjs/errors/node.js +1 -1
- package/dist/cjs/errors/node.js.map +1 -1
- package/dist/cjs/errors/utils.js +1 -1
- package/dist/cjs/errors/utils.js.map +1 -1
- package/dist/cjs/{version.js → errors/version.js} +1 -1
- package/dist/cjs/errors/version.js.map +1 -0
- package/dist/cjs/index.js +2 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/abi/decodeDeployData.js +2 -1
- package/dist/cjs/utils/abi/decodeDeployData.js.map +1 -1
- package/dist/cjs/utils/abi/decodeErrorResult.js +4 -3
- package/dist/cjs/utils/abi/decodeErrorResult.js.map +1 -1
- package/dist/cjs/utils/abi/decodeEventLog.js +4 -7
- package/dist/cjs/utils/abi/decodeEventLog.js.map +1 -1
- package/dist/cjs/utils/abi/decodeFunctionData.js +2 -1
- package/dist/cjs/utils/abi/decodeFunctionData.js.map +1 -1
- package/dist/cjs/utils/abi/decodeFunctionResult.js +5 -7
- package/dist/cjs/utils/abi/decodeFunctionResult.js.map +1 -1
- package/dist/cjs/utils/abi/encodeDeployData.js +2 -1
- package/dist/cjs/utils/abi/encodeDeployData.js.map +1 -1
- package/dist/cjs/utils/abi/encodeErrorResult.js +5 -7
- package/dist/cjs/utils/abi/encodeErrorResult.js.map +1 -1
- package/dist/cjs/utils/abi/encodeEventTopics.js +8 -13
- package/dist/cjs/utils/abi/encodeEventTopics.js.map +1 -1
- package/dist/cjs/utils/abi/encodeFunctionData.js +9 -10
- package/dist/cjs/utils/abi/encodeFunctionData.js.map +1 -1
- package/dist/cjs/utils/abi/encodeFunctionResult.js +7 -12
- package/dist/cjs/utils/abi/encodeFunctionResult.js.map +1 -1
- package/dist/cjs/utils/abi/getAbiItem.js +2 -1
- package/dist/cjs/utils/abi/getAbiItem.js.map +1 -1
- package/dist/cjs/utils/buildRequest.js +2 -0
- package/dist/cjs/utils/buildRequest.js.map +1 -1
- package/dist/cjs/utils/ccip.js.map +1 -1
- package/dist/cjs/utils/errors/getCallError.js +4 -3
- package/dist/cjs/utils/errors/getCallError.js.map +1 -1
- package/dist/cjs/utils/errors/getContractError.js +2 -1
- package/dist/cjs/utils/errors/getContractError.js.map +1 -1
- package/dist/cjs/utils/errors/getEstimateGasError.js +4 -3
- package/dist/cjs/utils/errors/getEstimateGasError.js.map +1 -1
- package/dist/cjs/utils/errors/getNodeError.js +16 -10
- package/dist/cjs/utils/errors/getNodeError.js.map +1 -1
- package/dist/cjs/utils/errors/getTransactionError.js +4 -3
- package/dist/cjs/utils/errors/getTransactionError.js.map +1 -1
- package/dist/cjs/utils/formatters/transaction.js +5 -5
- package/dist/cjs/utils/formatters/transaction.js.map +1 -1
- package/dist/cjs/utils/hash/getFunctionSelector.js.map +1 -1
- package/dist/cjs/utils/hash/hashFunction.js.map +1 -1
- package/dist/cjs/utils/rpc.js +10 -16
- package/dist/cjs/utils/rpc.js.map +1 -1
- package/dist/cjs/utils/signature/hashTypedData.js +3 -14
- package/dist/cjs/utils/signature/hashTypedData.js.map +1 -1
- package/dist/cjs/utils/signature/hexToSignature.js +1 -1
- package/dist/cjs/utils/signature/hexToSignature.js.map +1 -1
- package/dist/cjs/utils/typedData.js +27 -1
- package/dist/cjs/utils/typedData.js.map +1 -1
- package/dist/esm/accounts/index.js +9 -9
- package/dist/esm/accounts/index.js.map +1 -1
- package/dist/esm/actions/getContract.js.map +1 -1
- package/dist/esm/actions/public/call.js +1 -1
- package/dist/esm/actions/public/call.js.map +1 -1
- package/dist/esm/actions/public/getLogs.js.map +1 -1
- package/dist/esm/actions/public/multicall.js +66 -31
- package/dist/esm/actions/public/multicall.js.map +1 -1
- package/dist/esm/actions/public/watchContractEvent.js +3 -2
- package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
- package/dist/esm/actions/public/watchEvent.js +2 -5
- package/dist/esm/actions/public/watchEvent.js.map +1 -1
- package/dist/esm/actions/wallet/deployContract.js +3 -6
- package/dist/esm/actions/wallet/deployContract.js.map +1 -1
- package/dist/esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
- package/dist/esm/actions/wallet/signTypedData.js +2 -14
- package/dist/esm/actions/wallet/signTypedData.js.map +1 -1
- package/dist/esm/chains/definitions/base.js +1 -3
- package/dist/esm/chains/definitions/base.js.map +1 -1
- package/dist/esm/chains/definitions/baseGoerli.js +1 -3
- package/dist/esm/chains/definitions/baseGoerli.js.map +1 -1
- package/dist/esm/chains/definitions/meter.js +19 -0
- package/dist/esm/chains/definitions/meter.js.map +1 -0
- package/dist/esm/chains/definitions/meterTestnet.js +22 -0
- package/dist/esm/chains/definitions/meterTestnet.js.map +1 -0
- package/dist/esm/chains/definitions/opBNB.js +25 -0
- package/dist/esm/chains/definitions/opBNB.js.map +1 -0
- package/dist/esm/chains/definitions/opBNBTestnet.js +26 -0
- package/dist/esm/chains/definitions/opBNBTestnet.js.map +1 -0
- package/dist/esm/chains/definitions/optimism.js +0 -2
- package/dist/esm/chains/definitions/optimism.js.map +1 -1
- package/dist/esm/chains/definitions/optimismGoerli.js +0 -2
- package/dist/esm/chains/definitions/optimismGoerli.js.map +1 -1
- package/dist/esm/chains/definitions/plinga.js +28 -0
- package/dist/esm/chains/definitions/plinga.js.map +1 -0
- package/dist/esm/chains/definitions/scrollSepolia.js +6 -0
- package/dist/esm/chains/definitions/scrollSepolia.js.map +1 -1
- package/dist/esm/chains/definitions/sepolia.js +5 -0
- package/dist/esm/chains/definitions/sepolia.js.map +1 -1
- package/dist/esm/chains/definitions/vechain.js +26 -0
- package/dist/esm/chains/definitions/vechain.js.map +1 -0
- package/dist/esm/chains/definitions/zora.js +0 -2
- package/dist/esm/chains/definitions/zora.js.map +1 -1
- package/dist/esm/chains/definitions/zoraTestnet.js +0 -2
- package/dist/esm/chains/definitions/zoraTestnet.js.map +1 -1
- package/dist/esm/chains/index.js +6 -0
- package/dist/esm/chains/index.js.map +1 -1
- package/dist/esm/clients/decorators/public.js.map +1 -1
- package/dist/esm/errors/node.js +1 -1
- package/dist/esm/errors/node.js.map +1 -1
- package/dist/esm/errors/utils.js +1 -1
- package/dist/esm/errors/utils.js.map +1 -1
- package/dist/esm/errors/version.js +2 -0
- package/dist/esm/errors/version.js.map +1 -0
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/contract.js.map +1 -1
- package/dist/esm/utils/abi/decodeDeployData.js +2 -1
- package/dist/esm/utils/abi/decodeDeployData.js.map +1 -1
- package/dist/esm/utils/abi/decodeErrorResult.js +4 -3
- package/dist/esm/utils/abi/decodeErrorResult.js.map +1 -1
- package/dist/esm/utils/abi/decodeEventLog.js +4 -7
- package/dist/esm/utils/abi/decodeEventLog.js.map +1 -1
- package/dist/esm/utils/abi/decodeFunctionData.js +2 -1
- package/dist/esm/utils/abi/decodeFunctionData.js.map +1 -1
- package/dist/esm/utils/abi/decodeFunctionResult.js +5 -7
- package/dist/esm/utils/abi/decodeFunctionResult.js.map +1 -1
- package/dist/esm/utils/abi/encodeDeployData.js +2 -1
- package/dist/esm/utils/abi/encodeDeployData.js.map +1 -1
- package/dist/esm/utils/abi/encodeErrorResult.js +5 -7
- package/dist/esm/utils/abi/encodeErrorResult.js.map +1 -1
- package/dist/esm/utils/abi/encodeEventTopics.js +8 -13
- package/dist/esm/utils/abi/encodeEventTopics.js.map +1 -1
- package/dist/esm/utils/abi/encodeFunctionData.js +9 -10
- package/dist/esm/utils/abi/encodeFunctionData.js.map +1 -1
- package/dist/esm/utils/abi/encodeFunctionResult.js +7 -12
- package/dist/esm/utils/abi/encodeFunctionResult.js.map +1 -1
- package/dist/esm/utils/abi/getAbiItem.js +2 -1
- package/dist/esm/utils/abi/getAbiItem.js.map +1 -1
- package/dist/esm/utils/buildRequest.js +4 -0
- package/dist/esm/utils/buildRequest.js.map +1 -1
- package/dist/esm/utils/ccip.js.map +1 -1
- package/dist/esm/utils/errors/getCallError.js +5 -4
- package/dist/esm/utils/errors/getCallError.js.map +1 -1
- package/dist/esm/utils/errors/getContractError.js +2 -1
- package/dist/esm/utils/errors/getContractError.js.map +1 -1
- package/dist/esm/utils/errors/getEstimateGasError.js +5 -4
- package/dist/esm/utils/errors/getEstimateGasError.js.map +1 -1
- package/dist/esm/utils/errors/getNodeError.js +16 -10
- package/dist/esm/utils/errors/getNodeError.js.map +1 -1
- package/dist/esm/utils/errors/getTransactionError.js +5 -4
- package/dist/esm/utils/errors/getTransactionError.js.map +1 -1
- package/dist/esm/utils/formatters/transaction.js +5 -5
- package/dist/esm/utils/formatters/transaction.js.map +1 -1
- package/dist/esm/utils/hash/getFunctionSelector.js.map +1 -1
- package/dist/esm/utils/hash/hashFunction.js.map +1 -1
- package/dist/esm/utils/rpc.js +7 -16
- package/dist/esm/utils/rpc.js.map +1 -1
- package/dist/esm/utils/signature/hashTypedData.js +3 -15
- package/dist/esm/utils/signature/hashTypedData.js.map +1 -1
- package/dist/esm/utils/signature/hexToSignature.js +1 -1
- package/dist/esm/utils/signature/hexToSignature.js.map +1 -1
- package/dist/esm/utils/typedData.js +24 -0
- package/dist/esm/utils/typedData.js.map +1 -1
- package/dist/types/accounts/index.d.ts +9 -9
- package/dist/types/accounts/index.d.ts.map +1 -1
- package/dist/types/actions/getContract.d.ts +3 -3
- package/dist/types/actions/getContract.d.ts.map +1 -1
- package/dist/types/actions/public/getLogs.d.ts.map +1 -1
- package/dist/types/actions/public/multicall.d.ts.map +1 -1
- package/dist/types/actions/public/watchContractEvent.d.ts +29 -29
- package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
- package/dist/types/actions/public/watchEvent.d.ts.map +1 -1
- package/dist/types/actions/wallet/deployContract.d.ts +10 -6
- package/dist/types/actions/wallet/deployContract.d.ts.map +1 -1
- package/dist/types/actions/wallet/prepareTransactionRequest.d.ts +1 -1
- package/dist/types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
- package/dist/types/actions/wallet/signTypedData.d.ts.map +1 -1
- package/dist/types/chains/definitions/base.d.ts +1 -1
- package/dist/types/chains/definitions/base.d.ts.map +1 -1
- package/dist/types/chains/definitions/baseGoerli.d.ts +1 -1
- package/dist/types/chains/definitions/baseGoerli.d.ts.map +1 -1
- package/dist/types/chains/definitions/meter.d.ts +28 -0
- package/dist/types/chains/definitions/meter.d.ts.map +1 -0
- package/dist/types/chains/definitions/meterTestnet.d.ts +28 -0
- package/dist/types/chains/definitions/meterTestnet.d.ts.map +1 -0
- package/dist/types/chains/definitions/opBNB.d.ts +34 -0
- package/dist/types/chains/definitions/opBNB.d.ts.map +1 -0
- package/dist/types/chains/definitions/opBNBTestnet.d.ts +35 -0
- package/dist/types/chains/definitions/opBNBTestnet.d.ts.map +1 -0
- package/dist/types/chains/definitions/optimism.d.ts.map +1 -1
- package/dist/types/chains/definitions/optimismGoerli.d.ts.map +1 -1
- package/dist/types/chains/definitions/plinga.d.ts +34 -0
- package/dist/types/chains/definitions/plinga.d.ts.map +1 -0
- package/dist/types/chains/definitions/scrollSepolia.d.ts +6 -0
- package/dist/types/chains/definitions/scrollSepolia.d.ts.map +1 -1
- package/dist/types/chains/definitions/sepolia.d.ts +7 -0
- package/dist/types/chains/definitions/sepolia.d.ts.map +1 -1
- package/dist/types/chains/definitions/vechain.d.ts +32 -0
- package/dist/types/chains/definitions/vechain.d.ts.map +1 -0
- package/dist/types/chains/definitions/zora.d.ts.map +1 -1
- package/dist/types/chains/definitions/zoraTestnet.d.ts.map +1 -1
- package/dist/types/chains/index.d.ts +6 -0
- package/dist/types/chains/index.d.ts.map +1 -1
- package/dist/types/clients/decorators/public.d.ts +2 -2
- package/dist/types/clients/decorators/public.d.ts.map +1 -1
- package/dist/types/clients/decorators/wallet.d.ts +1 -1
- package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +2 -0
- package/dist/types/errors/version.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -7
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/chain.d.ts +4 -0
- package/dist/types/types/chain.d.ts.map +1 -1
- package/dist/types/types/contract.d.ts +48 -82
- package/dist/types/types/contract.d.ts.map +1 -1
- package/dist/types/types/multicall.d.ts +4 -4
- package/dist/types/types/multicall.d.ts.map +1 -1
- package/dist/types/utils/abi/decodeDeployData.d.ts +7 -6
- package/dist/types/utils/abi/decodeDeployData.d.ts.map +1 -1
- package/dist/types/utils/abi/decodeErrorResult.d.ts +16 -11
- package/dist/types/utils/abi/decodeErrorResult.d.ts.map +1 -1
- package/dist/types/utils/abi/decodeEventLog.d.ts +24 -17
- package/dist/types/utils/abi/decodeEventLog.d.ts.map +1 -1
- package/dist/types/utils/abi/decodeFunctionData.d.ts +14 -10
- package/dist/types/utils/abi/decodeFunctionData.d.ts.map +1 -1
- package/dist/types/utils/abi/decodeFunctionResult.d.ts +18 -11
- package/dist/types/utils/abi/decodeFunctionResult.d.ts.map +1 -1
- package/dist/types/utils/abi/encodeDeployData.d.ts +13 -5
- package/dist/types/utils/abi/encodeDeployData.d.ts.map +1 -1
- package/dist/types/utils/abi/encodeErrorResult.d.ts +16 -10
- package/dist/types/utils/abi/encodeErrorResult.d.ts.map +1 -1
- package/dist/types/utils/abi/encodeEventTopics.d.ts +14 -12
- package/dist/types/utils/abi/encodeEventTopics.d.ts.map +1 -1
- package/dist/types/utils/abi/encodeFunctionData.d.ts +19 -10
- package/dist/types/utils/abi/encodeFunctionData.d.ts.map +1 -1
- package/dist/types/utils/abi/encodeFunctionResult.d.ts +16 -12
- package/dist/types/utils/abi/encodeFunctionResult.d.ts.map +1 -1
- package/dist/types/utils/abi/getAbiItem.d.ts +11 -8
- package/dist/types/utils/abi/getAbiItem.d.ts.map +1 -1
- package/dist/types/utils/buildRequest.d.ts.map +1 -1
- package/dist/types/utils/ccip.d.ts.map +1 -1
- package/dist/types/utils/errors/getCallError.d.ts.map +1 -1
- package/dist/types/utils/errors/getContractError.d.ts.map +1 -1
- package/dist/types/utils/errors/getEstimateGasError.d.ts.map +1 -1
- package/dist/types/utils/errors/getNodeError.d.ts +1 -1
- package/dist/types/utils/errors/getNodeError.d.ts.map +1 -1
- package/dist/types/utils/errors/getTransactionError.d.ts.map +1 -1
- package/dist/types/utils/hash/getEventSelector.d.ts +1 -1
- package/dist/types/utils/hash/getEventSelector.d.ts.map +1 -1
- package/dist/types/utils/hash/getFunctionSelector.d.ts.map +1 -1
- package/dist/types/utils/hash/hashFunction.d.ts.map +1 -1
- package/dist/types/utils/rpc.d.ts +3 -1
- package/dist/types/utils/rpc.d.ts.map +1 -1
- package/dist/types/utils/signature/hashTypedData.d.ts +10 -1
- package/dist/types/utils/signature/hashTypedData.d.ts.map +1 -1
- package/dist/types/utils/signature/verifyMessage.d.ts +2 -2
- package/dist/types/utils/signature/verifyMessage.d.ts.map +1 -1
- package/dist/types/utils/typedData.d.ts +8 -1
- package/dist/types/utils/typedData.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/accounts/index.ts +10 -9
- package/src/actions/getContract.ts +5 -2
- package/src/actions/public/call.ts +1 -1
- package/src/actions/public/getLogs.ts +3 -3
- package/src/actions/public/multicall.ts +72 -29
- package/src/actions/public/watchContractEvent.ts +58 -52
- package/src/actions/public/watchEvent.ts +4 -7
- package/src/actions/wallet/deployContract.ts +29 -34
- package/src/actions/wallet/prepareTransactionRequest.ts +3 -6
- package/src/actions/wallet/signTypedData.ts +5 -14
- package/src/chains/definitions/base.ts +1 -3
- package/src/chains/definitions/baseGoerli.ts +1 -3
- package/src/chains/definitions/meter.ts +19 -0
- package/src/chains/definitions/meterTestnet.ts +22 -0
- package/src/chains/definitions/opBNB.ts +26 -0
- package/src/chains/definitions/opBNBTestnet.ts +26 -0
- package/src/chains/definitions/optimism.ts +0 -2
- package/src/chains/definitions/optimismGoerli.ts +0 -2
- package/src/chains/definitions/plinga.ts +28 -0
- package/src/chains/definitions/scrollSepolia.ts +6 -0
- package/src/chains/definitions/sepolia.ts +5 -0
- package/src/chains/definitions/vechain.ts +26 -0
- package/src/chains/definitions/zora.ts +0 -2
- package/src/chains/definitions/zoraTestnet.ts +0 -2
- package/src/chains/index.ts +6 -0
- package/src/clients/decorators/public.ts +2 -1
- package/src/clients/decorators/wallet.ts +3 -3
- package/src/errors/node.ts +1 -1
- package/src/errors/utils.ts +1 -1
- package/src/errors/version.ts +1 -0
- package/src/index.ts +10 -11
- package/src/types/chain.ts +2 -0
- package/src/types/contract.ts +183 -216
- package/src/types/multicall.ts +19 -13
- package/src/utils/abi/decodeDeployData.ts +16 -15
- package/src/utils/abi/decodeErrorResult.ts +41 -25
- package/src/utils/abi/decodeEventLog.ts +65 -67
- package/src/utils/abi/decodeFunctionData.ts +30 -22
- package/src/utils/abi/decodeFunctionResult.ts +124 -46
- package/src/utils/abi/encodeDeployData.ts +27 -16
- package/src/utils/abi/encodeErrorResult.ts +47 -26
- package/src/utils/abi/encodeEventTopics.ts +49 -30
- package/src/utils/abi/encodeFunctionData.ts +58 -32
- package/src/utils/abi/encodeFunctionResult.ts +53 -36
- package/src/utils/abi/getAbiItem.ts +68 -32
- package/src/utils/buildRequest.ts +4 -0
- package/src/utils/ccip.ts +1 -5
- package/src/utils/errors/getCallError.ts +4 -8
- package/src/utils/errors/getContractError.ts +2 -1
- package/src/utils/errors/getEstimateGasError.ts +4 -8
- package/src/utils/errors/getNodeError.ts +18 -13
- package/src/utils/errors/getTransactionError.ts +4 -8
- package/src/utils/formatters/transaction.ts +5 -5
- package/src/utils/hash/getEventSelector.ts +1 -1
- package/src/utils/hash/getFunctionSelector.ts +1 -1
- package/src/utils/hash/hashFunction.ts +1 -1
- package/src/utils/rpc.ts +9 -20
- package/src/utils/signature/hashTypedData.ts +4 -16
- package/src/utils/signature/hexToSignature.ts +1 -1
- package/src/utils/signature/verifyMessage.ts +2 -2
- package/src/utils/typedData.ts +29 -1
- package/dist/cjs/accounts/wordlists/czech.js +0 -6
- package/dist/cjs/accounts/wordlists/czech.js.map +0 -1
- package/dist/cjs/accounts/wordlists/english.js +0 -6
- package/dist/cjs/accounts/wordlists/english.js.map +0 -1
- package/dist/cjs/accounts/wordlists/french.js +0 -6
- package/dist/cjs/accounts/wordlists/french.js.map +0 -1
- package/dist/cjs/accounts/wordlists/italian.js +0 -6
- package/dist/cjs/accounts/wordlists/italian.js.map +0 -1
- package/dist/cjs/accounts/wordlists/japanese.js +0 -6
- package/dist/cjs/accounts/wordlists/japanese.js.map +0 -1
- package/dist/cjs/accounts/wordlists/korean.js +0 -6
- package/dist/cjs/accounts/wordlists/korean.js.map +0 -1
- package/dist/cjs/accounts/wordlists/simplifiedChinese.js +0 -6
- package/dist/cjs/accounts/wordlists/simplifiedChinese.js.map +0 -1
- package/dist/cjs/accounts/wordlists/spanish.js +0 -6
- package/dist/cjs/accounts/wordlists/spanish.js.map +0 -1
- package/dist/cjs/accounts/wordlists/traditionalChinese.js +0 -6
- package/dist/cjs/accounts/wordlists/traditionalChinese.js.map +0 -1
- package/dist/cjs/chains/optimism/fees.js +0 -7
- package/dist/cjs/chains/optimism/fees.js.map +0 -1
- package/dist/cjs/version.js.map +0 -1
- package/dist/esm/accounts/wordlists/czech.js +0 -2
- package/dist/esm/accounts/wordlists/czech.js.map +0 -1
- package/dist/esm/accounts/wordlists/english.js +0 -2
- package/dist/esm/accounts/wordlists/english.js.map +0 -1
- package/dist/esm/accounts/wordlists/french.js +0 -2
- package/dist/esm/accounts/wordlists/french.js.map +0 -1
- package/dist/esm/accounts/wordlists/italian.js +0 -2
- package/dist/esm/accounts/wordlists/italian.js.map +0 -1
- package/dist/esm/accounts/wordlists/japanese.js +0 -2
- package/dist/esm/accounts/wordlists/japanese.js.map +0 -1
- package/dist/esm/accounts/wordlists/korean.js +0 -2
- package/dist/esm/accounts/wordlists/korean.js.map +0 -1
- package/dist/esm/accounts/wordlists/simplifiedChinese.js +0 -2
- package/dist/esm/accounts/wordlists/simplifiedChinese.js.map +0 -1
- package/dist/esm/accounts/wordlists/spanish.js +0 -2
- package/dist/esm/accounts/wordlists/spanish.js.map +0 -1
- package/dist/esm/accounts/wordlists/traditionalChinese.js +0 -2
- package/dist/esm/accounts/wordlists/traditionalChinese.js.map +0 -1
- package/dist/esm/chains/optimism/fees.js +0 -4
- package/dist/esm/chains/optimism/fees.js.map +0 -1
- package/dist/esm/version.js +0 -2
- package/dist/esm/version.js.map +0 -1
- package/dist/types/accounts/wordlists/czech.d.ts +0 -2
- package/dist/types/accounts/wordlists/czech.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/english.d.ts +0 -2
- package/dist/types/accounts/wordlists/english.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/french.d.ts +0 -2
- package/dist/types/accounts/wordlists/french.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/italian.d.ts +0 -2
- package/dist/types/accounts/wordlists/italian.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/japanese.d.ts +0 -2
- package/dist/types/accounts/wordlists/japanese.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/korean.d.ts +0 -2
- package/dist/types/accounts/wordlists/korean.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/simplifiedChinese.d.ts +0 -2
- package/dist/types/accounts/wordlists/simplifiedChinese.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/spanish.d.ts +0 -2
- package/dist/types/accounts/wordlists/spanish.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/traditionalChinese.d.ts +0 -2
- package/dist/types/accounts/wordlists/traditionalChinese.d.ts.map +0 -1
- package/dist/types/chains/optimism/fees.d.ts +0 -4
- package/dist/types/chains/optimism/fees.d.ts.map +0 -1
- package/dist/types/version.d.ts +0 -2
- package/dist/types/version.d.ts.map +0 -1
- package/src/accounts/wordlists/czech.ts +0 -1
- package/src/accounts/wordlists/english.ts +0 -1
- package/src/accounts/wordlists/french.ts +0 -1
- package/src/accounts/wordlists/italian.ts +0 -1
- package/src/accounts/wordlists/japanese.ts +0 -1
- package/src/accounts/wordlists/korean.ts +0 -1
- package/src/accounts/wordlists/simplifiedChinese.ts +0 -1
- package/src/accounts/wordlists/spanish.ts +0 -1
- package/src/accounts/wordlists/traditionalChinese.ts +0 -1
- package/src/chains/optimism/fees.ts +0 -5
- package/src/version.ts +0 -1
@@ -1,45 +1,60 @@
|
|
1
|
-
import type { Abi, ExtractAbiError
|
1
|
+
import type { Abi, ExtractAbiError } from 'abitype'
|
2
2
|
|
3
3
|
import { solidityError, solidityPanic } from '../../constants/solidity.js'
|
4
4
|
import {
|
5
5
|
AbiDecodingZeroDataError,
|
6
6
|
AbiErrorSignatureNotFoundError,
|
7
7
|
} from '../../errors/abi.js'
|
8
|
-
import type {
|
8
|
+
import type {
|
9
|
+
AbiItem,
|
10
|
+
ContractErrorArgs,
|
11
|
+
ContractErrorName,
|
12
|
+
} from '../../types/contract.js'
|
9
13
|
import type { Hex } from '../../types/misc.js'
|
10
14
|
import { slice } from '../data/slice.js'
|
11
15
|
import { getFunctionSelector } from '../hash/getFunctionSelector.js'
|
12
16
|
|
17
|
+
import type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'
|
13
18
|
import { decodeAbiParameters } from './decodeAbiParameters.js'
|
14
19
|
import { formatAbiItem } from './formatAbiItem.js'
|
15
20
|
|
16
21
|
export type DecodeErrorResultParameters<
|
17
|
-
|
18
|
-
> = { abi?:
|
22
|
+
abi extends Abi | readonly unknown[] = Abi,
|
23
|
+
> = { abi?: abi | undefined; data: Hex }
|
19
24
|
|
20
25
|
export type DecodeErrorResultReturnType<
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
abi extends Abi | readonly unknown[] = Abi,
|
27
|
+
///
|
28
|
+
allErrorNames extends ContractErrorName<abi> = ContractErrorName<abi>,
|
29
|
+
> = IsNarrowable<abi, Abi> extends true
|
30
|
+
? UnionEvaluate<
|
31
|
+
{
|
32
|
+
[errorName in allErrorNames]: {
|
33
|
+
abiItem: abi extends Abi
|
34
|
+
? Abi extends abi
|
35
|
+
? AbiItem
|
36
|
+
: ExtractAbiError<abi, errorName>
|
37
|
+
: AbiItem
|
38
|
+
args: ContractErrorArgs<abi, errorName>
|
39
|
+
errorName: errorName
|
40
|
+
}
|
41
|
+
}[allErrorNames]
|
42
|
+
>
|
43
|
+
: {
|
44
|
+
abiItem: AbiItem
|
45
|
+
args: readonly unknown[] | undefined
|
46
|
+
errorName: string
|
47
|
+
}
|
48
|
+
|
49
|
+
export function decodeErrorResult<const TAbi extends Abi | readonly unknown[]>(
|
50
|
+
parameters: DecodeErrorResultParameters<TAbi>,
|
51
|
+
): DecodeErrorResultReturnType<TAbi> {
|
52
|
+
const { abi, data } = parameters as DecodeErrorResultParameters
|
34
53
|
|
35
|
-
export function decodeErrorResult<const TAbi extends Abi | readonly unknown[]>({
|
36
|
-
abi,
|
37
|
-
data,
|
38
|
-
}: DecodeErrorResultParameters<TAbi>): DecodeErrorResultReturnType<TAbi> {
|
39
54
|
const signature = slice(data, 0, 4)
|
40
55
|
if (signature === '0x') throw new AbiDecodingZeroDataError()
|
41
56
|
|
42
|
-
const abi_ = [...(
|
57
|
+
const abi_ = [...(abi || []), solidityError, solidityPanic]
|
43
58
|
const abiItem = abi_.find(
|
44
59
|
(x) =>
|
45
60
|
x.type === 'error' && signature === getFunctionSelector(formatAbiItem(x)),
|
@@ -50,9 +65,10 @@ export function decodeErrorResult<const TAbi extends Abi | readonly unknown[]>({
|
|
50
65
|
})
|
51
66
|
return {
|
52
67
|
abiItem,
|
53
|
-
args:
|
54
|
-
|
55
|
-
|
68
|
+
args:
|
69
|
+
'inputs' in abiItem && abiItem.inputs && abiItem.inputs.length > 0
|
70
|
+
? decodeAbiParameters(abiItem.inputs, slice(data, 4))
|
71
|
+
: undefined,
|
56
72
|
errorName: (abiItem as { name: string }).name,
|
57
73
|
} as DecodeErrorResultReturnType<TAbi>
|
58
74
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { Abi, AbiParameter
|
1
|
+
import type { Abi, AbiParameter } from 'abitype'
|
2
2
|
|
3
3
|
import {
|
4
4
|
AbiDecodingDataSizeTooSmallError,
|
@@ -8,91 +8,95 @@ import {
|
|
8
8
|
DecodeLogTopicsMismatch,
|
9
9
|
} from '../../errors/abi.js'
|
10
10
|
import type {
|
11
|
+
ContractEventArgsFromTopics,
|
12
|
+
ContractEventName,
|
11
13
|
EventDefinition,
|
12
|
-
GetEventArgsFromTopics,
|
13
|
-
InferEventName,
|
14
14
|
} from '../../types/contract.js'
|
15
15
|
import type { Hex } from '../../types/misc.js'
|
16
|
-
import type {
|
16
|
+
import type {
|
17
|
+
IsNarrowable,
|
18
|
+
Prettify,
|
19
|
+
UnionEvaluate,
|
20
|
+
} from '../../types/utils.js'
|
17
21
|
import { getEventSelector } from '../hash/getEventSelector.js'
|
18
22
|
|
19
23
|
import { decodeAbiParameters } from './decodeAbiParameters.js'
|
20
24
|
import { formatAbiItem } from './formatAbiItem.js'
|
21
25
|
|
22
26
|
export type DecodeEventLogParameters<
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
27
|
+
abi extends Abi | readonly unknown[] = Abi,
|
28
|
+
eventName extends ContractEventName<abi> | undefined = ContractEventName<abi>,
|
29
|
+
topics extends Hex[] = Hex[],
|
30
|
+
data extends Hex | undefined = undefined,
|
31
|
+
strict extends boolean = true,
|
28
32
|
> = {
|
29
|
-
abi:
|
30
|
-
data?:
|
31
|
-
eventName?:
|
32
|
-
strict?:
|
33
|
-
topics: [signature: Hex, ...args:
|
33
|
+
abi: abi
|
34
|
+
data?: data
|
35
|
+
eventName?: eventName | ContractEventName<abi>
|
36
|
+
strict?: strict
|
37
|
+
topics: [signature: Hex, ...args: topics] | []
|
34
38
|
}
|
35
39
|
|
36
40
|
export type DecodeEventLogReturnType<
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
{
|
50
|
-
eventName: TEventName
|
51
|
-
} & GetEventArgsFromTopics<TAbi, TEventName, TTopics, TData, TStrict>
|
52
|
-
>
|
53
|
-
: {
|
54
|
-
[TName in _EventNames]: Prettify<
|
41
|
+
abi extends Abi | readonly unknown[] = Abi,
|
42
|
+
eventName extends ContractEventName<abi> | undefined = ContractEventName<abi>,
|
43
|
+
topics extends Hex[] = Hex[],
|
44
|
+
data extends Hex | undefined = undefined,
|
45
|
+
strict extends boolean = true,
|
46
|
+
///
|
47
|
+
allEventNames extends ContractEventName<abi> = eventName extends ContractEventName<abi>
|
48
|
+
? eventName
|
49
|
+
: ContractEventName<abi>,
|
50
|
+
> = IsNarrowable<abi, Abi> extends true
|
51
|
+
? {
|
52
|
+
[name in allEventNames]: Prettify<
|
55
53
|
{
|
56
|
-
eventName:
|
57
|
-
} &
|
54
|
+
eventName: name
|
55
|
+
} & UnionEvaluate<
|
56
|
+
ContractEventArgsFromTopics<abi, name, strict> extends infer allArgs
|
57
|
+
? topics extends readonly []
|
58
|
+
? data extends undefined
|
59
|
+
? { args?: undefined }
|
60
|
+
: { args?: allArgs | undefined }
|
61
|
+
: { args: allArgs }
|
62
|
+
: never
|
63
|
+
>
|
58
64
|
>
|
59
|
-
}[
|
65
|
+
}[allEventNames]
|
66
|
+
: {
|
67
|
+
eventName: eventName
|
68
|
+
args: readonly unknown[] | undefined
|
69
|
+
}
|
60
70
|
|
61
71
|
const docsPath = '/docs/contract/decodeEventLog'
|
62
72
|
|
63
73
|
export function decodeEventLog<
|
64
|
-
const
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
>(
|
70
|
-
abi,
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
TStrict
|
80
|
-
>): DecodeEventLogReturnType<TAbi, TEventName, TTopics, TData, TStrict> {
|
74
|
+
const abi extends Abi | readonly unknown[],
|
75
|
+
eventName extends ContractEventName<abi> | undefined = undefined,
|
76
|
+
topics extends Hex[] = Hex[],
|
77
|
+
data extends Hex | undefined = undefined,
|
78
|
+
strict extends boolean = true,
|
79
|
+
>(
|
80
|
+
parameters: DecodeEventLogParameters<abi, eventName, topics, data, strict>,
|
81
|
+
): DecodeEventLogReturnType<abi, eventName, topics, data, strict> {
|
82
|
+
const {
|
83
|
+
abi,
|
84
|
+
data,
|
85
|
+
strict: strict_,
|
86
|
+
topics,
|
87
|
+
} = parameters as DecodeEventLogParameters
|
88
|
+
|
81
89
|
const strict = strict_ ?? true
|
82
90
|
const [signature, ...argTopics] = topics
|
83
|
-
if (!signature)
|
84
|
-
|
85
|
-
|
86
|
-
})
|
87
|
-
const abiItem = (abi as Abi).find(
|
91
|
+
if (!signature) throw new AbiEventSignatureEmptyTopicsError({ docsPath })
|
92
|
+
|
93
|
+
const abiItem = abi.find(
|
88
94
|
(x) =>
|
89
95
|
x.type === 'event' &&
|
90
96
|
signature === getEventSelector(formatAbiItem(x) as EventDefinition),
|
91
97
|
)
|
92
98
|
if (!(abiItem && 'name' in abiItem) || abiItem.type !== 'event')
|
93
|
-
throw new AbiEventSignatureNotFoundError(signature, {
|
94
|
-
docsPath,
|
95
|
-
})
|
99
|
+
throw new AbiEventSignatureNotFoundError(signature, { docsPath })
|
96
100
|
|
97
101
|
const { name, inputs } = abiItem
|
98
102
|
const isUnnamed = inputs?.some((x) => !('name' in x && x.name))
|
@@ -153,13 +157,7 @@ export function decodeEventLog<
|
|
153
157
|
return {
|
154
158
|
eventName: name,
|
155
159
|
args: Object.values(args).length > 0 ? args : undefined,
|
156
|
-
} as unknown as DecodeEventLogReturnType<
|
157
|
-
TAbi,
|
158
|
-
TEventName,
|
159
|
-
TTopics,
|
160
|
-
TData,
|
161
|
-
TStrict
|
162
|
-
>
|
160
|
+
} as unknown as DecodeEventLogReturnType<abi, eventName, topics, data, strict>
|
163
161
|
}
|
164
162
|
|
165
163
|
function decodeTopic({ param, value }: { param: AbiParameter; value: Hex }) {
|
@@ -1,41 +1,49 @@
|
|
1
|
-
import type { Abi,
|
1
|
+
import type { Abi, AbiStateMutability } from 'abitype'
|
2
2
|
|
3
3
|
import { AbiFunctionSignatureNotFoundError } from '../../errors/abi.js'
|
4
|
-
import type {
|
4
|
+
import type {
|
5
|
+
ContractFunctionArgs,
|
6
|
+
ContractFunctionName,
|
7
|
+
} from '../../types/contract.js'
|
5
8
|
import type { Hex } from '../../types/misc.js'
|
6
9
|
import { slice } from '../data/slice.js'
|
7
10
|
import { getFunctionSelector } from '../hash/getFunctionSelector.js'
|
8
11
|
|
12
|
+
import type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'
|
9
13
|
import { decodeAbiParameters } from './decodeAbiParameters.js'
|
10
14
|
import { formatAbiItem } from './formatAbiItem.js'
|
11
15
|
|
12
16
|
export type DecodeFunctionDataParameters<
|
13
|
-
|
17
|
+
abi extends Abi | readonly unknown[] = Abi,
|
14
18
|
> = {
|
15
|
-
abi:
|
19
|
+
abi: abi
|
16
20
|
data: Hex
|
17
21
|
}
|
18
22
|
|
19
23
|
export type DecodeFunctionDataReturnType<
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
24
|
+
abi extends Abi | readonly unknown[] = Abi,
|
25
|
+
///
|
26
|
+
allFunctionNames extends ContractFunctionName<abi> = ContractFunctionName<abi>,
|
27
|
+
> = IsNarrowable<abi, Abi> extends true
|
28
|
+
? UnionEvaluate<
|
29
|
+
{
|
30
|
+
[functionName in allFunctionNames]: {
|
31
|
+
args: ContractFunctionArgs<abi, AbiStateMutability, functionName>
|
32
|
+
functionName: functionName
|
33
|
+
}
|
34
|
+
}[allFunctionNames]
|
35
|
+
>
|
36
|
+
: {
|
37
|
+
args: readonly unknown[] | undefined
|
38
|
+
functionName: string
|
39
|
+
}
|
32
40
|
|
33
|
-
export function decodeFunctionData<
|
34
|
-
abi
|
35
|
-
|
36
|
-
}
|
41
|
+
export function decodeFunctionData<const abi extends Abi | readonly unknown[]>(
|
42
|
+
parameters: DecodeFunctionDataParameters<abi>,
|
43
|
+
) {
|
44
|
+
const { abi, data } = parameters as DecodeFunctionDataParameters
|
37
45
|
const signature = slice(data, 0, 4)
|
38
|
-
const description =
|
46
|
+
const description = abi.find(
|
39
47
|
(x) =>
|
40
48
|
x.type === 'function' &&
|
41
49
|
signature === getFunctionSelector(formatAbiItem(x)),
|
@@ -51,5 +59,5 @@ export function decodeFunctionData<TAbi extends Abi | readonly unknown[]>({
|
|
51
59
|
description.inputs.length > 0
|
52
60
|
? decodeAbiParameters(description.inputs, slice(data, 4))
|
53
61
|
: undefined) as readonly unknown[] | undefined,
|
54
|
-
} as DecodeFunctionDataReturnType<
|
62
|
+
} as DecodeFunctionDataReturnType<abi>
|
55
63
|
}
|
@@ -1,67 +1,143 @@
|
|
1
|
-
import type { Abi,
|
1
|
+
import type { Abi, AbiStateMutability, ExtractAbiFunctions } from 'abitype'
|
2
2
|
|
3
3
|
import {
|
4
4
|
AbiFunctionNotFoundError,
|
5
5
|
AbiFunctionOutputsNotFoundError,
|
6
6
|
} from '../../errors/abi.js'
|
7
7
|
import type {
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
ContractFunctionArgs,
|
9
|
+
ContractFunctionName,
|
10
|
+
ContractFunctionReturnType,
|
11
|
+
Widen,
|
12
12
|
} from '../../types/contract.js'
|
13
13
|
import type { Hex } from '../../types/misc.js'
|
14
14
|
|
15
|
+
import type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'
|
15
16
|
import { decodeAbiParameters } from './decodeAbiParameters.js'
|
16
|
-
import {
|
17
|
+
import { getAbiItem } from './getAbiItem.js'
|
17
18
|
|
18
19
|
const docsPath = '/docs/contract/decodeFunctionResult'
|
19
20
|
|
20
21
|
export type DecodeFunctionResultParameters<
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
abi extends Abi | readonly unknown[] = Abi,
|
23
|
+
functionName extends
|
24
|
+
| ContractFunctionName<abi>
|
25
|
+
| undefined = ContractFunctionName<abi>,
|
26
|
+
args extends ContractFunctionArgs<
|
27
|
+
abi,
|
28
|
+
AbiStateMutability,
|
29
|
+
functionName extends ContractFunctionName<abi>
|
30
|
+
? functionName
|
31
|
+
: ContractFunctionName<abi>
|
32
|
+
> = ContractFunctionArgs<
|
33
|
+
abi,
|
34
|
+
AbiStateMutability,
|
35
|
+
functionName extends ContractFunctionName<abi>
|
36
|
+
? functionName
|
37
|
+
: ContractFunctionName<abi>
|
38
|
+
>,
|
39
|
+
///
|
40
|
+
hasFunctions = abi extends Abi
|
41
|
+
? Abi extends abi
|
42
|
+
? true
|
43
|
+
: [ExtractAbiFunctions<abi>] extends [never]
|
44
|
+
? false
|
45
|
+
: true
|
46
|
+
: true,
|
47
|
+
allArgs = ContractFunctionArgs<
|
48
|
+
abi,
|
49
|
+
AbiStateMutability,
|
50
|
+
functionName extends ContractFunctionName<abi>
|
51
|
+
? functionName
|
52
|
+
: ContractFunctionName<abi>
|
53
|
+
>,
|
54
|
+
allFunctionNames = ContractFunctionName<abi>,
|
24
55
|
> = {
|
25
|
-
|
56
|
+
abi: abi
|
26
57
|
data: Hex
|
27
|
-
} &
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
58
|
+
} & UnionEvaluate<
|
59
|
+
IsNarrowable<abi, Abi> extends true
|
60
|
+
? abi['length'] extends 1
|
61
|
+
? { functionName?: functionName | allFunctionNames }
|
62
|
+
: { functionName: functionName | allFunctionNames }
|
63
|
+
: { functionName?: functionName | allFunctionNames }
|
64
|
+
> &
|
65
|
+
UnionEvaluate<
|
66
|
+
readonly [] extends allArgs
|
67
|
+
? {
|
68
|
+
args?:
|
69
|
+
| allArgs // show all options
|
70
|
+
// infer value, widen inferred value of `args` conditionally to match `allArgs`
|
71
|
+
| (abi extends Abi
|
72
|
+
? args extends allArgs
|
73
|
+
? Widen<args>
|
74
|
+
: never
|
75
|
+
: never)
|
76
|
+
| undefined
|
77
|
+
}
|
78
|
+
: {
|
79
|
+
args?:
|
80
|
+
| allArgs // show all options
|
81
|
+
| (Widen<args> & (args extends allArgs ? unknown : never)) // infer value, widen inferred value of `args` match `allArgs` (e.g. avoid union `args: readonly [123n] | readonly [bigint]`)
|
82
|
+
| undefined
|
83
|
+
}
|
84
|
+
> &
|
85
|
+
(hasFunctions extends true ? unknown : never)
|
32
86
|
|
33
87
|
export type DecodeFunctionResultReturnType<
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
88
|
+
abi extends Abi | readonly unknown[] = Abi,
|
89
|
+
functionName extends
|
90
|
+
| ContractFunctionName<abi>
|
91
|
+
| undefined = ContractFunctionName<abi>,
|
92
|
+
args extends ContractFunctionArgs<
|
93
|
+
abi,
|
94
|
+
AbiStateMutability,
|
95
|
+
functionName extends ContractFunctionName<abi>
|
96
|
+
? functionName
|
97
|
+
: ContractFunctionName<abi>
|
98
|
+
> = ContractFunctionArgs<
|
99
|
+
abi,
|
100
|
+
AbiStateMutability,
|
101
|
+
functionName extends ContractFunctionName<abi>
|
102
|
+
? functionName
|
103
|
+
: ContractFunctionName<abi>
|
104
|
+
>,
|
105
|
+
> = ContractFunctionReturnType<
|
106
|
+
abi,
|
107
|
+
AbiStateMutability,
|
108
|
+
functionName extends ContractFunctionName<abi>
|
109
|
+
? functionName
|
110
|
+
: ContractFunctionName<abi>,
|
111
|
+
args
|
112
|
+
>
|
44
113
|
|
45
114
|
export function decodeFunctionResult<
|
46
|
-
const
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
115
|
+
const abi extends Abi | readonly unknown[],
|
116
|
+
functionName extends ContractFunctionName<abi> | undefined = undefined,
|
117
|
+
args extends ContractFunctionArgs<
|
118
|
+
abi,
|
119
|
+
AbiStateMutability,
|
120
|
+
functionName extends ContractFunctionName<abi>
|
121
|
+
? functionName
|
122
|
+
: ContractFunctionName<abi>
|
123
|
+
> = ContractFunctionArgs<
|
124
|
+
abi,
|
125
|
+
AbiStateMutability,
|
126
|
+
functionName extends ContractFunctionName<abi>
|
127
|
+
? functionName
|
128
|
+
: ContractFunctionName<abi>
|
129
|
+
>,
|
130
|
+
>(
|
131
|
+
parameters: DecodeFunctionResultParameters<abi, functionName, args>,
|
132
|
+
): DecodeFunctionResultReturnType<abi, functionName, args> {
|
133
|
+
const { abi, args, functionName, data } =
|
134
|
+
parameters as DecodeFunctionResultParameters
|
135
|
+
|
136
|
+
let abiItem = abi[0]
|
58
137
|
if (functionName) {
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
name: functionName,
|
63
|
-
} as GetAbiItemParameters)
|
64
|
-
if (!abiItem) throw new AbiFunctionNotFoundError(functionName, { docsPath })
|
138
|
+
const item = getAbiItem({ abi, args, name: functionName })
|
139
|
+
if (!item) throw new AbiFunctionNotFoundError(functionName, { docsPath })
|
140
|
+
abiItem = item
|
65
141
|
}
|
66
142
|
|
67
143
|
if (abiItem.type !== 'function')
|
@@ -70,7 +146,9 @@ export function decodeFunctionResult<
|
|
70
146
|
throw new AbiFunctionOutputsNotFoundError(abiItem.name, { docsPath })
|
71
147
|
|
72
148
|
const values = decodeAbiParameters(abiItem.outputs, data)
|
73
|
-
if (values && values.length > 1)
|
74
|
-
|
75
|
-
|
149
|
+
if (values && values.length > 1)
|
150
|
+
return values as DecodeFunctionResultReturnType<abi, functionName, args>
|
151
|
+
if (values && values.length === 1)
|
152
|
+
return values[0] as DecodeFunctionResultReturnType<abi, functionName, args>
|
153
|
+
return undefined as DecodeFunctionResultReturnType<abi, functionName, args>
|
76
154
|
}
|
@@ -4,40 +4,51 @@ import {
|
|
4
4
|
AbiConstructorNotFoundError,
|
5
5
|
AbiConstructorParamsNotFoundError,
|
6
6
|
} from '../../errors/abi.js'
|
7
|
-
import type {
|
7
|
+
import type { ContractConstructorArgs } from '../../types/contract.js'
|
8
8
|
import type { Hex } from '../../types/misc.js'
|
9
9
|
import { concatHex } from '../data/concat.js'
|
10
10
|
|
11
|
+
import type { UnionEvaluate } from '../../types/utils.js'
|
11
12
|
import { encodeAbiParameters } from './encodeAbiParameters.js'
|
12
13
|
|
13
14
|
const docsPath = '/docs/contract/encodeDeployData'
|
14
15
|
|
15
16
|
export type EncodeDeployDataParameters<
|
16
|
-
|
17
|
+
abi extends Abi | readonly unknown[] = Abi,
|
18
|
+
///
|
19
|
+
hasConstructor = abi extends Abi
|
20
|
+
? Abi extends abi
|
21
|
+
? true
|
22
|
+
: [Extract<abi[number], { type: 'constructor' }>] extends [never]
|
23
|
+
? false
|
24
|
+
: true
|
25
|
+
: true,
|
26
|
+
allArgs = ContractConstructorArgs<abi>,
|
17
27
|
> = {
|
18
|
-
abi:
|
28
|
+
abi: abi
|
19
29
|
bytecode: Hex
|
20
|
-
} &
|
30
|
+
} & UnionEvaluate<
|
31
|
+
readonly [] extends allArgs
|
32
|
+
? { args?: allArgs | undefined }
|
33
|
+
: { args: allArgs }
|
34
|
+
> &
|
35
|
+
(hasConstructor extends true ? unknown : never)
|
21
36
|
|
22
|
-
export
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
37
|
+
export type EncodeDeployDataReturnType = Hex
|
38
|
+
|
39
|
+
export function encodeDeployData<const abi extends Abi | readonly unknown[]>(
|
40
|
+
parameters: EncodeDeployDataParameters<abi>,
|
41
|
+
): EncodeDeployDataReturnType {
|
42
|
+
const { abi, args, bytecode } = parameters as EncodeDeployDataParameters
|
27
43
|
if (!args || args.length === 0) return bytecode
|
28
44
|
|
29
|
-
const description = (
|
30
|
-
(x) => 'type' in x && x.type === 'constructor',
|
31
|
-
)
|
45
|
+
const description = abi.find((x) => 'type' in x && x.type === 'constructor')
|
32
46
|
if (!description) throw new AbiConstructorNotFoundError({ docsPath })
|
33
47
|
if (!('inputs' in description))
|
34
48
|
throw new AbiConstructorParamsNotFoundError({ docsPath })
|
35
49
|
if (!description.inputs || description.inputs.length === 0)
|
36
50
|
throw new AbiConstructorParamsNotFoundError({ docsPath })
|
37
51
|
|
38
|
-
const data = encodeAbiParameters(
|
39
|
-
description.inputs,
|
40
|
-
args as readonly unknown[],
|
41
|
-
)
|
52
|
+
const data = encodeAbiParameters(description.inputs, args)
|
42
53
|
return concatHex([bytecode, data!])
|
43
54
|
}
|