viem 2.5.0 → 2.6.0
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/CHANGELOG.md +18 -0
- package/_cjs/accounts/utils/sign.js.map +1 -1
- package/_cjs/chains/definitions/berachainTestnet.js +24 -0
- package/_cjs/chains/definitions/berachainTestnet.js.map +1 -0
- package/_cjs/chains/definitions/kcc.js +33 -0
- package/_cjs/chains/definitions/kcc.js.map +1 -0
- package/_cjs/chains/definitions/zkSync.js +3 -2
- package/_cjs/chains/definitions/zkSync.js.map +1 -1
- package/_cjs/chains/index.js +8 -4
- package/_cjs/chains/index.js.map +1 -1
- package/_cjs/chains/zksync/actions/sendEip712Transaction.js +52 -0
- package/_cjs/chains/zksync/actions/sendEip712Transaction.js.map +1 -0
- package/_cjs/chains/zksync/actions/sendTransaction.js +13 -0
- package/_cjs/chains/zksync/actions/sendTransaction.js.map +1 -0
- package/_cjs/chains/zksync/actions/signEip712Transaction.js +52 -0
- package/_cjs/chains/zksync/actions/signEip712Transaction.js.map +1 -0
- package/_cjs/chains/zksync/actions/signTransaction.js +13 -0
- package/_cjs/chains/zksync/actions/signTransaction.js.map +1 -0
- package/_cjs/chains/zksync/chainConfig.js +4 -0
- package/_cjs/chains/zksync/chainConfig.js.map +1 -1
- package/_cjs/chains/zksync/chains.js +10 -0
- package/_cjs/chains/zksync/chains.js.map +1 -0
- package/_cjs/chains/zksync/decorators/eip712.js +17 -0
- package/_cjs/chains/zksync/decorators/eip712.js.map +1 -0
- package/_cjs/chains/zksync/errors/transaction.js +23 -0
- package/_cjs/chains/zksync/errors/transaction.js.map +1 -0
- package/_cjs/chains/zksync/formatters.js +2 -2
- package/_cjs/chains/zksync/formatters.js.map +1 -1
- package/_cjs/chains/zksync/index.js +15 -1
- package/_cjs/chains/zksync/index.js.map +1 -1
- package/_cjs/chains/zksync/serializers.js +6 -35
- package/_cjs/chains/zksync/serializers.js.map +1 -1
- package/_cjs/chains/zksync/{types.js → types/block.js} +1 -1
- package/_cjs/chains/zksync/types/block.js.map +1 -0
- package/_cjs/chains/zksync/types/chain.js +3 -0
- package/_cjs/chains/zksync/types/chain.js.map +1 -0
- package/_cjs/chains/zksync/types/eip712.js +3 -0
- package/_cjs/chains/zksync/types/eip712.js.map +1 -0
- package/_cjs/chains/zksync/types/fee.js +3 -0
- package/_cjs/chains/zksync/types/fee.js.map +1 -0
- package/_cjs/chains/zksync/types/log.js +3 -0
- package/_cjs/chains/zksync/types/log.js.map +1 -0
- package/_cjs/chains/zksync/types/transaction.js +3 -0
- package/_cjs/chains/zksync/types/transaction.js.map +1 -0
- package/_cjs/chains/zksync/utils/assertEip712Request.js +13 -0
- package/_cjs/chains/zksync/utils/assertEip712Request.js.map +1 -0
- package/_cjs/chains/zksync/utils/assertEip712Transaction.js +30 -0
- package/_cjs/chains/zksync/utils/assertEip712Transaction.js.map +1 -0
- package/_cjs/chains/zksync/utils/getEip712Domain.js +54 -0
- package/_cjs/chains/zksync/utils/getEip712Domain.js.map +1 -0
- package/_cjs/chains/zksync/utils/isEip712Transaction.js +17 -0
- package/_cjs/chains/zksync/utils/isEip712Transaction.js.map +1 -0
- package/_cjs/errors/chain.js +3 -1
- package/_cjs/errors/chain.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_esm/accounts/utils/sign.js +1 -0
- package/_esm/accounts/utils/sign.js.map +1 -1
- package/_esm/chains/definitions/berachainTestnet.js +21 -0
- package/_esm/chains/definitions/berachainTestnet.js.map +1 -0
- package/_esm/chains/definitions/kcc.js +30 -0
- package/_esm/chains/definitions/kcc.js.map +1 -0
- package/_esm/chains/definitions/zkSync.js +3 -2
- package/_esm/chains/definitions/zkSync.js.map +1 -1
- package/_esm/chains/index.js +2 -0
- package/_esm/chains/index.js.map +1 -1
- package/_esm/chains/zksync/actions/sendEip712Transaction.js +91 -0
- package/_esm/chains/zksync/actions/sendEip712Transaction.js.map +1 -0
- package/_esm/chains/zksync/actions/sendTransaction.js +54 -0
- package/_esm/chains/zksync/actions/sendTransaction.js.map +1 -0
- package/_esm/chains/zksync/actions/signEip712Transaction.js +86 -0
- package/_esm/chains/zksync/actions/signEip712Transaction.js.map +1 -0
- package/_esm/chains/zksync/actions/signTransaction.js +49 -0
- package/_esm/chains/zksync/actions/signTransaction.js.map +1 -0
- package/_esm/chains/zksync/chainConfig.js +4 -0
- package/_esm/chains/zksync/chainConfig.js.map +1 -1
- package/_esm/chains/zksync/chains.js +4 -0
- package/_esm/chains/zksync/chains.js.map +1 -0
- package/_esm/chains/zksync/decorators/eip712.js +13 -0
- package/_esm/chains/zksync/decorators/eip712.js.map +1 -0
- package/_esm/chains/zksync/errors/transaction.js +19 -0
- package/_esm/chains/zksync/errors/transaction.js.map +1 -0
- package/_esm/chains/zksync/formatters.js +2 -2
- package/_esm/chains/zksync/formatters.js.map +1 -1
- package/_esm/chains/zksync/index.js +6 -0
- package/_esm/chains/zksync/index.js.map +1 -1
- package/_esm/chains/zksync/serializers.js +5 -35
- package/_esm/chains/zksync/serializers.js.map +1 -1
- package/_esm/chains/zksync/types/block.js +2 -0
- package/_esm/chains/zksync/types/block.js.map +1 -0
- package/_esm/chains/zksync/types/chain.js +2 -0
- package/_esm/chains/zksync/types/chain.js.map +1 -0
- package/_esm/chains/zksync/types/eip712.js +2 -0
- package/_esm/chains/zksync/types/eip712.js.map +1 -0
- package/_esm/chains/zksync/types/fee.js +2 -0
- package/_esm/chains/zksync/types/fee.js.map +1 -0
- package/_esm/chains/zksync/types/log.js +2 -0
- package/_esm/chains/zksync/types/log.js.map +1 -0
- package/_esm/chains/zksync/types/transaction.js +2 -0
- package/_esm/chains/zksync/types/transaction.js.map +1 -0
- package/_esm/chains/zksync/utils/assertEip712Request.js +9 -0
- package/_esm/chains/zksync/utils/assertEip712Request.js.map +1 -0
- package/_esm/chains/zksync/utils/assertEip712Transaction.js +26 -0
- package/_esm/chains/zksync/utils/assertEip712Transaction.js.map +1 -0
- package/_esm/chains/zksync/utils/getEip712Domain.js +52 -0
- package/_esm/chains/zksync/utils/getEip712Domain.js.map +1 -0
- package/_esm/chains/zksync/utils/isEip712Transaction.js +13 -0
- package/_esm/chains/zksync/utils/isEip712Transaction.js.map +1 -0
- package/_esm/errors/chain.js +3 -1
- package/_esm/errors/chain.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_types/accounts/utils/sign.d.ts.map +1 -1
- package/_types/chains/definitions/acala.d.ts +1 -0
- package/_types/chains/definitions/acala.d.ts.map +1 -1
- package/_types/chains/definitions/arbitrum.d.ts +1 -0
- package/_types/chains/definitions/arbitrum.d.ts.map +1 -1
- package/_types/chains/definitions/arbitrumGoerli.d.ts +1 -0
- package/_types/chains/definitions/arbitrumGoerli.d.ts.map +1 -1
- package/_types/chains/definitions/arbitrumNova.d.ts +1 -0
- package/_types/chains/definitions/arbitrumNova.d.ts.map +1 -1
- package/_types/chains/definitions/arbitrumSepolia.d.ts +1 -0
- package/_types/chains/definitions/arbitrumSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/astar.d.ts +1 -0
- package/_types/chains/definitions/astar.d.ts.map +1 -1
- package/_types/chains/definitions/astarZkatana.d.ts +1 -0
- package/_types/chains/definitions/astarZkatana.d.ts.map +1 -1
- package/_types/chains/definitions/aurora.d.ts +1 -0
- package/_types/chains/definitions/aurora.d.ts.map +1 -1
- package/_types/chains/definitions/auroraTestnet.d.ts +1 -0
- package/_types/chains/definitions/auroraTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/avalanche.d.ts +1 -0
- package/_types/chains/definitions/avalanche.d.ts.map +1 -1
- package/_types/chains/definitions/avalancheFuji.d.ts +1 -0
- package/_types/chains/definitions/avalancheFuji.d.ts.map +1 -1
- package/_types/chains/definitions/bahamut.d.ts +1 -0
- package/_types/chains/definitions/bahamut.d.ts.map +1 -1
- package/_types/chains/definitions/base.d.ts +2 -0
- package/_types/chains/definitions/base.d.ts.map +1 -1
- package/_types/chains/definitions/baseGoerli.d.ts +2 -0
- package/_types/chains/definitions/baseGoerli.d.ts.map +1 -1
- package/_types/chains/definitions/baseSepolia.d.ts +2 -0
- package/_types/chains/definitions/baseSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/bearNetworkChainMainnet.d.ts +1 -0
- package/_types/chains/definitions/bearNetworkChainMainnet.d.ts.map +1 -1
- package/_types/chains/definitions/bearNetworkChainTestnet.d.ts +1 -0
- package/_types/chains/definitions/bearNetworkChainTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/berachainTestnet.d.ts +35 -0
- package/_types/chains/definitions/berachainTestnet.d.ts.map +1 -0
- package/_types/chains/definitions/bitTorrent.d.ts +1 -0
- package/_types/chains/definitions/bitTorrent.d.ts.map +1 -1
- package/_types/chains/definitions/bitTorrentTestnet.d.ts +1 -0
- package/_types/chains/definitions/bitTorrentTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/blastSepolia.d.ts +1 -0
- package/_types/chains/definitions/blastSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/boba.d.ts +1 -0
- package/_types/chains/definitions/boba.d.ts.map +1 -1
- package/_types/chains/definitions/bronos.d.ts +1 -0
- package/_types/chains/definitions/bronos.d.ts.map +1 -1
- package/_types/chains/definitions/bronosTestnet.d.ts +1 -0
- package/_types/chains/definitions/bronosTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/bsc.d.ts +1 -0
- package/_types/chains/definitions/bsc.d.ts.map +1 -1
- package/_types/chains/definitions/bscTestnet.d.ts +1 -0
- package/_types/chains/definitions/bscTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/bxn.d.ts +1 -0
- package/_types/chains/definitions/bxn.d.ts.map +1 -1
- package/_types/chains/definitions/bxnTestnet.d.ts +1 -0
- package/_types/chains/definitions/bxnTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/canto.d.ts +1 -0
- package/_types/chains/definitions/canto.d.ts.map +1 -1
- package/_types/chains/definitions/celo.d.ts +1 -0
- package/_types/chains/definitions/celo.d.ts.map +1 -1
- package/_types/chains/definitions/celoAlfajores.d.ts +1 -0
- package/_types/chains/definitions/celoAlfajores.d.ts.map +1 -1
- package/_types/chains/definitions/chiliz.d.ts +1 -0
- package/_types/chains/definitions/chiliz.d.ts.map +1 -1
- package/_types/chains/definitions/classic.d.ts +1 -0
- package/_types/chains/definitions/classic.d.ts.map +1 -1
- package/_types/chains/definitions/confluxESpace.d.ts +1 -0
- package/_types/chains/definitions/confluxESpace.d.ts.map +1 -1
- package/_types/chains/definitions/confluxESpaceTestnet.d.ts +1 -0
- package/_types/chains/definitions/confluxESpaceTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/coreDao.d.ts +1 -0
- package/_types/chains/definitions/coreDao.d.ts.map +1 -1
- package/_types/chains/definitions/cronos.d.ts +1 -0
- package/_types/chains/definitions/cronos.d.ts.map +1 -1
- package/_types/chains/definitions/cronosTestnet.d.ts +1 -0
- package/_types/chains/definitions/cronosTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/crossbell.d.ts +1 -0
- package/_types/chains/definitions/crossbell.d.ts.map +1 -1
- package/_types/chains/definitions/defichainEvm.d.ts +1 -0
- package/_types/chains/definitions/defichainEvm.d.ts.map +1 -1
- package/_types/chains/definitions/defichainEvmTestnet.d.ts +1 -0
- package/_types/chains/definitions/defichainEvmTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/dfk.d.ts +1 -0
- package/_types/chains/definitions/dfk.d.ts.map +1 -1
- package/_types/chains/definitions/dogechain.d.ts +1 -0
- package/_types/chains/definitions/dogechain.d.ts.map +1 -1
- package/_types/chains/definitions/edgeware.d.ts +1 -0
- package/_types/chains/definitions/edgeware.d.ts.map +1 -1
- package/_types/chains/definitions/edgewareTestnet.d.ts +1 -0
- package/_types/chains/definitions/edgewareTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/ekta.d.ts +1 -0
- package/_types/chains/definitions/ekta.d.ts.map +1 -1
- package/_types/chains/definitions/ektaTestnet.d.ts +1 -0
- package/_types/chains/definitions/ektaTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/eon.d.ts +1 -0
- package/_types/chains/definitions/eon.d.ts.map +1 -1
- package/_types/chains/definitions/eos.d.ts +1 -0
- package/_types/chains/definitions/eos.d.ts.map +1 -1
- package/_types/chains/definitions/eosTestnet.d.ts +1 -0
- package/_types/chains/definitions/eosTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/evmos.d.ts +1 -0
- package/_types/chains/definitions/evmos.d.ts.map +1 -1
- package/_types/chains/definitions/evmosTestnet.d.ts +1 -0
- package/_types/chains/definitions/evmosTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/fantom.d.ts +1 -0
- package/_types/chains/definitions/fantom.d.ts.map +1 -1
- package/_types/chains/definitions/fantomSonicTestnet.d.ts +1 -0
- package/_types/chains/definitions/fantomSonicTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/fantomTestnet.d.ts +1 -0
- package/_types/chains/definitions/fantomTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/fibo.d.ts +1 -0
- package/_types/chains/definitions/fibo.d.ts.map +1 -1
- package/_types/chains/definitions/filecoin.d.ts +1 -0
- package/_types/chains/definitions/filecoin.d.ts.map +1 -1
- package/_types/chains/definitions/filecoinCalibration.d.ts +1 -0
- package/_types/chains/definitions/filecoinCalibration.d.ts.map +1 -1
- package/_types/chains/definitions/filecoinHyperspace.d.ts +1 -0
- package/_types/chains/definitions/filecoinHyperspace.d.ts.map +1 -1
- package/_types/chains/definitions/flare.d.ts +1 -0
- package/_types/chains/definitions/flare.d.ts.map +1 -1
- package/_types/chains/definitions/flareTestnet.d.ts +1 -0
- package/_types/chains/definitions/flareTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/foundry.d.ts +1 -0
- package/_types/chains/definitions/foundry.d.ts.map +1 -1
- package/_types/chains/definitions/fuse.d.ts +1 -0
- package/_types/chains/definitions/fuse.d.ts.map +1 -1
- package/_types/chains/definitions/fuseSparknet.d.ts +1 -0
- package/_types/chains/definitions/fuseSparknet.d.ts.map +1 -1
- package/_types/chains/definitions/gnosis.d.ts +1 -0
- package/_types/chains/definitions/gnosis.d.ts.map +1 -1
- package/_types/chains/definitions/gnosisChiado.d.ts +1 -0
- package/_types/chains/definitions/gnosisChiado.d.ts.map +1 -1
- package/_types/chains/definitions/gobi.d.ts +1 -0
- package/_types/chains/definitions/gobi.d.ts.map +1 -1
- package/_types/chains/definitions/goerli.d.ts +1 -0
- package/_types/chains/definitions/goerli.d.ts.map +1 -1
- package/_types/chains/definitions/haqqMainnet.d.ts +1 -0
- package/_types/chains/definitions/haqqMainnet.d.ts.map +1 -1
- package/_types/chains/definitions/haqqTestedge2.d.ts +1 -0
- package/_types/chains/definitions/haqqTestedge2.d.ts.map +1 -1
- package/_types/chains/definitions/hardhat.d.ts +1 -0
- package/_types/chains/definitions/hardhat.d.ts.map +1 -1
- package/_types/chains/definitions/harmonyOne.d.ts +1 -0
- package/_types/chains/definitions/harmonyOne.d.ts.map +1 -1
- package/_types/chains/definitions/holesky.d.ts +1 -0
- package/_types/chains/definitions/holesky.d.ts.map +1 -1
- package/_types/chains/definitions/iotex.d.ts +1 -0
- package/_types/chains/definitions/iotex.d.ts.map +1 -1
- package/_types/chains/definitions/iotexTestnet.d.ts +1 -0
- package/_types/chains/definitions/iotexTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/jbc.d.ts +1 -0
- package/_types/chains/definitions/jbc.d.ts.map +1 -1
- package/_types/chains/definitions/karura.d.ts +1 -0
- package/_types/chains/definitions/karura.d.ts.map +1 -1
- package/_types/chains/definitions/kava.d.ts +1 -0
- package/_types/chains/definitions/kava.d.ts.map +1 -1
- package/_types/chains/definitions/kavaTestnet.d.ts +1 -0
- package/_types/chains/definitions/kavaTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/kcc.d.ts +37 -0
- package/_types/chains/definitions/kcc.d.ts.map +1 -0
- package/_types/chains/definitions/klaytn.d.ts +1 -0
- package/_types/chains/definitions/klaytn.d.ts.map +1 -1
- package/_types/chains/definitions/klaytnBaobab.d.ts +1 -0
- package/_types/chains/definitions/klaytnBaobab.d.ts.map +1 -1
- package/_types/chains/definitions/kroma.d.ts +1 -0
- package/_types/chains/definitions/kroma.d.ts.map +1 -1
- package/_types/chains/definitions/kromaSepolia.d.ts +1 -0
- package/_types/chains/definitions/kromaSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/lightlinkPegasus.d.ts +1 -0
- package/_types/chains/definitions/lightlinkPegasus.d.ts.map +1 -1
- package/_types/chains/definitions/lightlinkPhoenix.d.ts +1 -0
- package/_types/chains/definitions/lightlinkPhoenix.d.ts.map +1 -1
- package/_types/chains/definitions/linea.d.ts +1 -0
- package/_types/chains/definitions/linea.d.ts.map +1 -1
- package/_types/chains/definitions/lineaTestnet.d.ts +1 -0
- package/_types/chains/definitions/lineaTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/localhost.d.ts +1 -0
- package/_types/chains/definitions/localhost.d.ts.map +1 -1
- package/_types/chains/definitions/lukso.d.ts +1 -0
- package/_types/chains/definitions/lukso.d.ts.map +1 -1
- package/_types/chains/definitions/mainnet.d.ts +1 -0
- package/_types/chains/definitions/mainnet.d.ts.map +1 -1
- package/_types/chains/definitions/mandala.d.ts +1 -0
- package/_types/chains/definitions/mandala.d.ts.map +1 -1
- package/_types/chains/definitions/manta.d.ts +1 -0
- package/_types/chains/definitions/manta.d.ts.map +1 -1
- package/_types/chains/definitions/mantaTestnet.d.ts +1 -0
- package/_types/chains/definitions/mantaTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/mantle.d.ts +1 -0
- package/_types/chains/definitions/mantle.d.ts.map +1 -1
- package/_types/chains/definitions/mantleTestnet.d.ts +1 -0
- package/_types/chains/definitions/mantleTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/metachain.d.ts +1 -0
- package/_types/chains/definitions/metachain.d.ts.map +1 -1
- package/_types/chains/definitions/meter.d.ts +1 -0
- package/_types/chains/definitions/meter.d.ts.map +1 -1
- package/_types/chains/definitions/meterTestnet.d.ts +1 -0
- package/_types/chains/definitions/meterTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/metis.d.ts +1 -0
- package/_types/chains/definitions/metis.d.ts.map +1 -1
- package/_types/chains/definitions/metisGoerli.d.ts +1 -0
- package/_types/chains/definitions/metisGoerli.d.ts.map +1 -1
- package/_types/chains/definitions/mev.d.ts +1 -0
- package/_types/chains/definitions/mev.d.ts.map +1 -1
- package/_types/chains/definitions/mevTestnet.d.ts +1 -0
- package/_types/chains/definitions/mevTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/modeTestnet.d.ts +1 -0
- package/_types/chains/definitions/modeTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/moonbaseAlpha.d.ts +1 -0
- package/_types/chains/definitions/moonbaseAlpha.d.ts.map +1 -1
- package/_types/chains/definitions/moonbeam.d.ts +1 -0
- package/_types/chains/definitions/moonbeam.d.ts.map +1 -1
- package/_types/chains/definitions/moonbeamDev.d.ts +1 -0
- package/_types/chains/definitions/moonbeamDev.d.ts.map +1 -1
- package/_types/chains/definitions/moonriver.d.ts +1 -0
- package/_types/chains/definitions/moonriver.d.ts.map +1 -1
- package/_types/chains/definitions/neonDevnet.d.ts +1 -0
- package/_types/chains/definitions/neonDevnet.d.ts.map +1 -1
- package/_types/chains/definitions/neonMainnet.d.ts +1 -0
- package/_types/chains/definitions/neonMainnet.d.ts.map +1 -1
- package/_types/chains/definitions/nexi.d.ts +1 -0
- package/_types/chains/definitions/nexi.d.ts.map +1 -1
- package/_types/chains/definitions/nexilix.d.ts +1 -0
- package/_types/chains/definitions/nexilix.d.ts.map +1 -1
- package/_types/chains/definitions/oasisTestnet.d.ts +1 -0
- package/_types/chains/definitions/oasisTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/oasys.d.ts +1 -0
- package/_types/chains/definitions/oasys.d.ts.map +1 -1
- package/_types/chains/definitions/okc.d.ts +1 -0
- package/_types/chains/definitions/okc.d.ts.map +1 -1
- package/_types/chains/definitions/opBNB.d.ts +1 -0
- package/_types/chains/definitions/opBNB.d.ts.map +1 -1
- package/_types/chains/definitions/opBNBTestnet.d.ts +1 -0
- package/_types/chains/definitions/opBNBTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/optimism.d.ts +2 -0
- package/_types/chains/definitions/optimism.d.ts.map +1 -1
- package/_types/chains/definitions/optimismGoerli.d.ts +2 -0
- package/_types/chains/definitions/optimismGoerli.d.ts.map +1 -1
- package/_types/chains/definitions/optimismSepolia.d.ts +2 -0
- package/_types/chains/definitions/optimismSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/palm.d.ts +1 -0
- package/_types/chains/definitions/palm.d.ts.map +1 -1
- package/_types/chains/definitions/palmTestnet.d.ts +1 -0
- package/_types/chains/definitions/palmTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/pgn.d.ts +2 -0
- package/_types/chains/definitions/pgn.d.ts.map +1 -1
- package/_types/chains/definitions/pgnTestnet.d.ts +2 -0
- package/_types/chains/definitions/pgnTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/plinga.d.ts +1 -0
- package/_types/chains/definitions/plinga.d.ts.map +1 -1
- package/_types/chains/definitions/polygon.d.ts +1 -0
- package/_types/chains/definitions/polygon.d.ts.map +1 -1
- package/_types/chains/definitions/polygonMumbai.d.ts +1 -0
- package/_types/chains/definitions/polygonMumbai.d.ts.map +1 -1
- package/_types/chains/definitions/polygonZkEvm.d.ts +1 -0
- package/_types/chains/definitions/polygonZkEvm.d.ts.map +1 -1
- package/_types/chains/definitions/polygonZkEvmTestnet.d.ts +1 -0
- package/_types/chains/definitions/polygonZkEvmTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/pulsechain.d.ts +1 -0
- package/_types/chains/definitions/pulsechain.d.ts.map +1 -1
- package/_types/chains/definitions/pulsechainV4.d.ts +1 -0
- package/_types/chains/definitions/pulsechainV4.d.ts.map +1 -1
- package/_types/chains/definitions/qMainnet.d.ts +1 -0
- package/_types/chains/definitions/qMainnet.d.ts.map +1 -1
- package/_types/chains/definitions/qTestnet.d.ts +1 -0
- package/_types/chains/definitions/qTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/rollux.d.ts +1 -0
- package/_types/chains/definitions/rollux.d.ts.map +1 -1
- package/_types/chains/definitions/rolluxTestnet.d.ts +1 -0
- package/_types/chains/definitions/rolluxTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/ronin.d.ts +1 -0
- package/_types/chains/definitions/ronin.d.ts.map +1 -1
- package/_types/chains/definitions/rootstock.d.ts +1 -0
- package/_types/chains/definitions/rootstock.d.ts.map +1 -1
- package/_types/chains/definitions/saigon.d.ts +1 -0
- package/_types/chains/definitions/saigon.d.ts.map +1 -1
- package/_types/chains/definitions/sapphire.d.ts +1 -0
- package/_types/chains/definitions/sapphire.d.ts.map +1 -1
- package/_types/chains/definitions/sapphireTestnet.d.ts +1 -0
- package/_types/chains/definitions/sapphireTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/scroll.d.ts +1 -0
- package/_types/chains/definitions/scroll.d.ts.map +1 -1
- package/_types/chains/definitions/scrollSepolia.d.ts +1 -0
- package/_types/chains/definitions/scrollSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/scrollTestnet.d.ts +1 -0
- package/_types/chains/definitions/scrollTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/sepolia.d.ts +1 -0
- package/_types/chains/definitions/sepolia.d.ts.map +1 -1
- package/_types/chains/definitions/shardeumSphinx.d.ts +1 -0
- package/_types/chains/definitions/shardeumSphinx.d.ts.map +1 -1
- package/_types/chains/definitions/shibarium.d.ts +1 -0
- package/_types/chains/definitions/shibarium.d.ts.map +1 -1
- package/_types/chains/definitions/shimmer.d.ts +1 -0
- package/_types/chains/definitions/shimmer.d.ts.map +1 -1
- package/_types/chains/definitions/shimmerTestnet.d.ts +1 -0
- package/_types/chains/definitions/shimmerTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/skale/brawl.d.ts +1 -0
- package/_types/chains/definitions/skale/brawl.d.ts.map +1 -1
- package/_types/chains/definitions/skale/calypso.d.ts +1 -0
- package/_types/chains/definitions/skale/calypso.d.ts.map +1 -1
- package/_types/chains/definitions/skale/calypsoTestnet.d.ts +1 -0
- package/_types/chains/definitions/skale/calypsoTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/skale/chaosTestnet.d.ts +1 -0
- package/_types/chains/definitions/skale/chaosTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/skale/cryptoBlades.d.ts +1 -0
- package/_types/chains/definitions/skale/cryptoBlades.d.ts.map +1 -1
- package/_types/chains/definitions/skale/cryptoColosseum.d.ts +1 -0
- package/_types/chains/definitions/skale/cryptoColosseum.d.ts.map +1 -1
- package/_types/chains/definitions/skale/europa.d.ts +1 -0
- package/_types/chains/definitions/skale/europa.d.ts.map +1 -1
- package/_types/chains/definitions/skale/europaTestnet.d.ts +1 -0
- package/_types/chains/definitions/skale/europaTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/skale/exorde.d.ts +1 -0
- package/_types/chains/definitions/skale/exorde.d.ts.map +1 -1
- package/_types/chains/definitions/skale/humanProtocol.d.ts +1 -0
- package/_types/chains/definitions/skale/humanProtocol.d.ts.map +1 -1
- package/_types/chains/definitions/skale/nebula.d.ts +1 -0
- package/_types/chains/definitions/skale/nebula.d.ts.map +1 -1
- package/_types/chains/definitions/skale/nebulaTestnet.d.ts +1 -0
- package/_types/chains/definitions/skale/nebulaTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/skale/razor.d.ts +1 -0
- package/_types/chains/definitions/skale/razor.d.ts.map +1 -1
- package/_types/chains/definitions/skale/titan.d.ts +1 -0
- package/_types/chains/definitions/skale/titan.d.ts.map +1 -1
- package/_types/chains/definitions/skale/titanTestnet.d.ts +1 -0
- package/_types/chains/definitions/skale/titanTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/songbird.d.ts +1 -0
- package/_types/chains/definitions/songbird.d.ts.map +1 -1
- package/_types/chains/definitions/songbirdTestnet.d.ts +1 -0
- package/_types/chains/definitions/songbirdTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/spicy.d.ts +1 -0
- package/_types/chains/definitions/spicy.d.ts.map +1 -1
- package/_types/chains/definitions/syscoin.d.ts +1 -0
- package/_types/chains/definitions/syscoin.d.ts.map +1 -1
- package/_types/chains/definitions/syscoinTestnet.d.ts +1 -0
- package/_types/chains/definitions/syscoinTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/taikoJolnir.d.ts +1 -0
- package/_types/chains/definitions/taikoJolnir.d.ts.map +1 -1
- package/_types/chains/definitions/taikoKatla.d.ts +1 -0
- package/_types/chains/definitions/taikoKatla.d.ts.map +1 -1
- package/_types/chains/definitions/taikoTestnetSepolia.d.ts +1 -0
- package/_types/chains/definitions/taikoTestnetSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/taraxa.d.ts +1 -0
- package/_types/chains/definitions/taraxa.d.ts.map +1 -1
- package/_types/chains/definitions/taraxaTestnet.d.ts +1 -0
- package/_types/chains/definitions/taraxaTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/telos.d.ts +1 -0
- package/_types/chains/definitions/telos.d.ts.map +1 -1
- package/_types/chains/definitions/telosTestnet.d.ts +1 -0
- package/_types/chains/definitions/telosTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/tenet.d.ts +1 -0
- package/_types/chains/definitions/tenet.d.ts.map +1 -1
- package/_types/chains/definitions/thunderTestnet.d.ts +1 -0
- package/_types/chains/definitions/thunderTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/vechain.d.ts +1 -0
- package/_types/chains/definitions/vechain.d.ts.map +1 -1
- package/_types/chains/definitions/wanchain.d.ts +1 -0
- package/_types/chains/definitions/wanchain.d.ts.map +1 -1
- package/_types/chains/definitions/wanchainTestnet.d.ts +1 -0
- package/_types/chains/definitions/wanchainTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/wemix.d.ts +1 -0
- package/_types/chains/definitions/wemix.d.ts.map +1 -1
- package/_types/chains/definitions/wemixTestnet.d.ts +1 -0
- package/_types/chains/definitions/wemixTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/xdc.d.ts +1 -0
- package/_types/chains/definitions/xdc.d.ts.map +1 -1
- package/_types/chains/definitions/xdcTestnet.d.ts +1 -0
- package/_types/chains/definitions/xdcTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/zetachainAthensTestnet.d.ts +1 -0
- package/_types/chains/definitions/zetachainAthensTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/zhejiang.d.ts +1 -0
- package/_types/chains/definitions/zhejiang.d.ts.map +1 -1
- package/_types/chains/definitions/zilliqa.d.ts +1 -0
- package/_types/chains/definitions/zilliqa.d.ts.map +1 -1
- package/_types/chains/definitions/zilliqaTestnet.d.ts +1 -0
- package/_types/chains/definitions/zilliqaTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/zkFair.d.ts +1 -0
- package/_types/chains/definitions/zkFair.d.ts.map +1 -1
- package/_types/chains/definitions/zkFairTestnet.d.ts +1 -0
- package/_types/chains/definitions/zkFairTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/zkSync.d.ts +23 -18
- package/_types/chains/definitions/zkSync.d.ts.map +1 -1
- package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +20 -16
- package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/zkSyncTestnet.d.ts +20 -16
- package/_types/chains/definitions/zkSyncTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/zora.d.ts +2 -0
- package/_types/chains/definitions/zora.d.ts.map +1 -1
- package/_types/chains/definitions/zoraSepolia.d.ts +2 -0
- package/_types/chains/definitions/zoraSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/zoraTestnet.d.ts +2 -0
- package/_types/chains/definitions/zoraTestnet.d.ts.map +1 -1
- package/_types/chains/index.d.ts +2 -0
- package/_types/chains/index.d.ts.map +1 -1
- package/_types/chains/opStack/chainConfig.d.ts +1 -0
- package/_types/chains/opStack/chainConfig.d.ts.map +1 -1
- package/_types/chains/opStack/formatters.d.ts +1 -0
- package/_types/chains/opStack/formatters.d.ts.map +1 -1
- package/_types/chains/zksync/actions/sendEip712Transaction.d.ts +50 -0
- package/_types/chains/zksync/actions/sendEip712Transaction.d.ts.map +1 -0
- package/_types/chains/zksync/actions/sendTransaction.d.ts +54 -0
- package/_types/chains/zksync/actions/sendTransaction.d.ts.map +1 -0
- package/_types/chains/zksync/actions/signEip712Transaction.d.ts +54 -0
- package/_types/chains/zksync/actions/signEip712Transaction.d.ts.map +1 -0
- package/_types/chains/zksync/actions/signTransaction.d.ts +56 -0
- package/_types/chains/zksync/actions/signTransaction.d.ts.map +1 -0
- package/_types/chains/zksync/chainConfig.d.ts +20 -16
- package/_types/chains/zksync/chainConfig.d.ts.map +1 -1
- package/_types/chains/zksync/chains.d.ts +4 -0
- package/_types/chains/zksync/chains.d.ts.map +1 -0
- package/_types/chains/zksync/decorators/eip712.d.ts +151 -0
- package/_types/chains/zksync/decorators/eip712.d.ts.map +1 -0
- package/_types/chains/zksync/errors/transaction.d.ts +9 -0
- package/_types/chains/zksync/errors/transaction.d.ts.map +1 -0
- package/_types/chains/zksync/formatters.d.ts +12 -9
- package/_types/chains/zksync/formatters.d.ts.map +1 -1
- package/_types/chains/zksync/index.d.ts +12 -1
- package/_types/chains/zksync/index.d.ts.map +1 -1
- package/_types/chains/zksync/serializers.d.ts +1 -2
- package/_types/chains/zksync/serializers.d.ts.map +1 -1
- package/_types/chains/zksync/types/block.d.ts +15 -0
- package/_types/chains/zksync/types/block.d.ts.map +1 -0
- package/_types/chains/zksync/types/chain.d.ts +9 -0
- package/_types/chains/zksync/types/chain.d.ts.map +1 -0
- package/_types/chains/zksync/types/eip712.d.ts +27 -0
- package/_types/chains/zksync/types/eip712.d.ts.map +1 -0
- package/_types/chains/zksync/types/fee.d.ts +6 -0
- package/_types/chains/zksync/types/fee.d.ts.map +1 -0
- package/_types/chains/zksync/types/log.d.ts +41 -0
- package/_types/chains/zksync/types/log.d.ts.map +1 -0
- package/_types/chains/zksync/{types.d.ts → types/transaction.d.ts} +35 -71
- package/_types/chains/zksync/types/transaction.d.ts.map +1 -0
- package/_types/chains/zksync/utils/assertEip712Request.d.ts +8 -0
- package/_types/chains/zksync/utils/assertEip712Request.d.ts.map +1 -0
- package/_types/chains/zksync/utils/assertEip712Transaction.d.ts +3 -0
- package/_types/chains/zksync/utils/assertEip712Transaction.d.ts.map +1 -0
- package/_types/chains/zksync/utils/getEip712Domain.d.ts +4 -0
- package/_types/chains/zksync/utils/getEip712Domain.d.ts.map +1 -0
- package/_types/chains/zksync/utils/isEip712Transaction.d.ts +3 -0
- package/_types/chains/zksync/utils/isEip712Transaction.d.ts.map +1 -0
- package/_types/errors/chain.d.ts +1 -1
- package/_types/errors/chain.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/types/chain.d.ts +3 -1
- package/_types/types/chain.d.ts.map +1 -1
- package/_types/types/transaction.d.ts +2 -0
- package/_types/types/transaction.d.ts.map +1 -1
- package/accounts/utils/sign.ts +2 -0
- package/chains/definitions/berachainTestnet.ts +21 -0
- package/chains/definitions/kcc.ts +30 -0
- package/chains/definitions/zkSync.ts +3 -2
- package/chains/index.ts +2 -0
- package/chains/zksync/actions/sendEip712Transaction.ts +129 -0
- package/chains/zksync/actions/sendTransaction.ts +78 -0
- package/chains/zksync/actions/signEip712Transaction.ts +150 -0
- package/chains/zksync/actions/signTransaction.ts +95 -0
- package/chains/zksync/chainConfig.ts +4 -0
- package/chains/zksync/chains.ts +3 -0
- package/chains/zksync/decorators/eip712.ts +186 -0
- package/chains/zksync/errors/transaction.ts +21 -0
- package/chains/zksync/formatters.ts +6 -5
- package/chains/zksync/index.ts +51 -4
- package/chains/zksync/serializers.ts +6 -50
- package/chains/zksync/types/block.ts +34 -0
- package/chains/zksync/types/chain.ts +28 -0
- package/chains/zksync/types/eip712.ts +31 -0
- package/chains/zksync/types/fee.ts +5 -0
- package/chains/zksync/types/log.ts +57 -0
- package/chains/zksync/{types.ts → types/transaction.ts} +50 -122
- package/chains/zksync/utils/assertEip712Request.ts +18 -0
- package/chains/zksync/utils/assertEip712Transaction.ts +35 -0
- package/chains/zksync/utils/getEip712Domain.ts +83 -0
- package/chains/zksync/utils/isEip712Transaction.ts +17 -0
- package/errors/chain.ts +6 -2
- package/errors/version.ts +1 -1
- package/package.json +1 -1
- package/types/chain.ts +5 -0
- package/types/transaction.ts +2 -0
- package/_cjs/chains/zksync/types.js.map +0 -1
- package/_esm/chains/zksync/types.js +0 -2
- package/_esm/chains/zksync/types.js.map +0 -1
- package/_types/chains/zksync/types.d.ts.map +0 -1
@@ -0,0 +1,150 @@
|
|
1
|
+
import type { Account } from '../../../accounts/types.js'
|
2
|
+
import { parseAccount } from '../../../accounts/utils/parseAccount.js'
|
3
|
+
import { getChainId } from '../../../actions/public/getChainId.js'
|
4
|
+
import type {
|
5
|
+
SignTransactionErrorType,
|
6
|
+
SignTransactionReturnType,
|
7
|
+
} from '../../../actions/wallet/signTransaction.js'
|
8
|
+
import { signTypedData } from '../../../actions/wallet/signTypedData.js'
|
9
|
+
import type { Client } from '../../../clients/createClient.js'
|
10
|
+
import type { Transport } from '../../../clients/transports/createTransport.js'
|
11
|
+
import { AccountNotFoundError } from '../../../errors/account.js'
|
12
|
+
import { BaseError } from '../../../errors/base.js'
|
13
|
+
import type { GetAccountParameter } from '../../../types/account.js'
|
14
|
+
import type {
|
15
|
+
ExtractChainFormatterParameters,
|
16
|
+
GetChainParameter,
|
17
|
+
} from '../../../types/chain.js'
|
18
|
+
import type { UnionOmit } from '../../../types/utils.js'
|
19
|
+
import { assertCurrentChain } from '../../../utils/chain/assertCurrentChain.js'
|
20
|
+
import { getAction } from '../../../utils/getAction.js'
|
21
|
+
import type { ChainEIP712 } from '../types/chain.js'
|
22
|
+
import type { TransactionRequestEIP712 } from '../types/transaction.js'
|
23
|
+
import {
|
24
|
+
type AssertEip712RequestParameters,
|
25
|
+
assertEip712Request,
|
26
|
+
} from '../utils/assertEip712Request.js'
|
27
|
+
|
28
|
+
type FormattedTransactionRequest<
|
29
|
+
TChain extends ChainEIP712 | undefined = ChainEIP712 | undefined,
|
30
|
+
> = ExtractChainFormatterParameters<
|
31
|
+
TChain,
|
32
|
+
'transactionRequest',
|
33
|
+
TransactionRequestEIP712
|
34
|
+
>
|
35
|
+
|
36
|
+
export type SignEip712TransactionParameters<
|
37
|
+
TChain extends ChainEIP712 | undefined = ChainEIP712 | undefined,
|
38
|
+
TAccount extends Account | undefined = Account | undefined,
|
39
|
+
TChainOverride extends ChainEIP712 | undefined = ChainEIP712 | undefined,
|
40
|
+
> = UnionOmit<
|
41
|
+
FormattedTransactionRequest<
|
42
|
+
TChainOverride extends ChainEIP712 ? TChainOverride : TChain
|
43
|
+
>,
|
44
|
+
'from'
|
45
|
+
> &
|
46
|
+
GetAccountParameter<TAccount> &
|
47
|
+
GetChainParameter<TChain, TChainOverride>
|
48
|
+
|
49
|
+
export type SignEip712TransactionReturnType = SignTransactionReturnType
|
50
|
+
|
51
|
+
export type SignEip712TransactionErrorType = SignTransactionErrorType
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Signs an EIP712 transaction.
|
55
|
+
*
|
56
|
+
* @param args - {@link SignTransactionParameters}
|
57
|
+
* @returns The signed serialized tranasction. {@link SignTransactionReturnType}
|
58
|
+
*
|
59
|
+
* @example
|
60
|
+
* import { createWalletClient, custom } from 'viem'
|
61
|
+
* import { zkSync } from 'viem/chains'
|
62
|
+
* import { signEip712Transaction } from 'viem/zksync'
|
63
|
+
*
|
64
|
+
* const client = createWalletClient({
|
65
|
+
* chain: zkSync,
|
66
|
+
* transport: custom(window.ethereum),
|
67
|
+
* })
|
68
|
+
* const signature = await signEip712Transaction(client, {
|
69
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
70
|
+
* to: '0x0000000000000000000000000000000000000000',
|
71
|
+
* value: 1n,
|
72
|
+
* })
|
73
|
+
*
|
74
|
+
* @example
|
75
|
+
* // Account Hoisting
|
76
|
+
* import { createWalletClient, http } from 'viem'
|
77
|
+
* import { privateKeyToAccount } from 'viem/accounts'
|
78
|
+
* import { zkSync } from 'viem/chains'
|
79
|
+
* import { signEip712Transaction } from 'viem/zksync'
|
80
|
+
*
|
81
|
+
* const client = createWalletClient({
|
82
|
+
* account: privateKeyToAccount('0x…'),
|
83
|
+
* chain: zkSync,
|
84
|
+
* transport: custom(window.ethereum),
|
85
|
+
* })
|
86
|
+
* const signature = await signEip712Transaction(client, {
|
87
|
+
* to: '0x0000000000000000000000000000000000000000',
|
88
|
+
* value: 1n,
|
89
|
+
* })
|
90
|
+
*/
|
91
|
+
export async function signEip712Transaction<
|
92
|
+
TChain extends ChainEIP712 | undefined,
|
93
|
+
TAccount extends Account | undefined,
|
94
|
+
TChainOverride extends ChainEIP712 | undefined,
|
95
|
+
>(
|
96
|
+
client: Client<Transport, TChain, TAccount>,
|
97
|
+
args: SignEip712TransactionParameters<TChain, TAccount, TChainOverride>,
|
98
|
+
): Promise<SignEip712TransactionReturnType> {
|
99
|
+
const {
|
100
|
+
account: account_ = client.account,
|
101
|
+
chain = client.chain,
|
102
|
+
...transaction
|
103
|
+
} = args
|
104
|
+
|
105
|
+
if (!account_)
|
106
|
+
throw new AccountNotFoundError({
|
107
|
+
docsPath: '/docs/actions/wallet/signTransaction',
|
108
|
+
})
|
109
|
+
const account = parseAccount(account_)
|
110
|
+
|
111
|
+
assertEip712Request({
|
112
|
+
account,
|
113
|
+
chain,
|
114
|
+
...(args as AssertEip712RequestParameters),
|
115
|
+
})
|
116
|
+
|
117
|
+
if (!chain?.custom?.getEip712Domain)
|
118
|
+
throw new BaseError('`getEip712Domain` not found on chain.')
|
119
|
+
if (!chain?.serializers?.transaction)
|
120
|
+
throw new BaseError('transaction serializer not found on chain.')
|
121
|
+
|
122
|
+
const chainId = await getAction(client, getChainId, 'getChainId')({})
|
123
|
+
if (chain !== null)
|
124
|
+
assertCurrentChain({
|
125
|
+
currentChainId: chainId,
|
126
|
+
chain: chain,
|
127
|
+
})
|
128
|
+
|
129
|
+
const eip712Domain = chain?.custom.getEip712Domain({
|
130
|
+
...transaction,
|
131
|
+
chainId,
|
132
|
+
from: account.address,
|
133
|
+
type: 'eip712',
|
134
|
+
})
|
135
|
+
|
136
|
+
const customSignature = await signTypedData(client, {
|
137
|
+
...eip712Domain,
|
138
|
+
account,
|
139
|
+
})
|
140
|
+
|
141
|
+
return chain?.serializers?.transaction(
|
142
|
+
{
|
143
|
+
chainId,
|
144
|
+
...transaction,
|
145
|
+
customSignature,
|
146
|
+
type: 'eip712',
|
147
|
+
},
|
148
|
+
{ r: '0x0', s: '0x0', v: 0n },
|
149
|
+
)
|
150
|
+
}
|
@@ -0,0 +1,95 @@
|
|
1
|
+
import type { Account } from '../../../accounts/types.js'
|
2
|
+
import { signTransaction as signTransaction_ } from '../../../actions/wallet/signTransaction.js'
|
3
|
+
import type {
|
4
|
+
SignTransactionErrorType as SignTransactionErrorType_,
|
5
|
+
SignTransactionReturnType as SignTransactionReturnType_,
|
6
|
+
} from '../../../actions/wallet/signTransaction.js'
|
7
|
+
import type { Client } from '../../../clients/createClient.js'
|
8
|
+
import type { Transport } from '../../../clients/transports/createTransport.js'
|
9
|
+
import type { GetAccountParameter } from '../../../types/account.js'
|
10
|
+
import type {
|
11
|
+
ExtractChainFormatterParameters,
|
12
|
+
GetChainParameter,
|
13
|
+
} from '../../../types/chain.js'
|
14
|
+
import type { UnionOmit } from '../../../types/utils.js'
|
15
|
+
import type { ChainEIP712 } from '../types/chain.js'
|
16
|
+
import type { TransactionRequestEIP712 } from '../types/transaction.js'
|
17
|
+
import { isEIP712Transaction } from '../utils/isEip712Transaction.js'
|
18
|
+
import { signEip712Transaction } from './signEip712Transaction.js'
|
19
|
+
|
20
|
+
type FormattedTransactionRequest<
|
21
|
+
TChain extends ChainEIP712 | undefined = ChainEIP712 | undefined,
|
22
|
+
> = ExtractChainFormatterParameters<
|
23
|
+
TChain,
|
24
|
+
'transactionRequest',
|
25
|
+
TransactionRequestEIP712
|
26
|
+
>
|
27
|
+
|
28
|
+
export type SignTransactionParameters<
|
29
|
+
TChain extends ChainEIP712 | undefined = ChainEIP712 | undefined,
|
30
|
+
TAccount extends Account | undefined = Account | undefined,
|
31
|
+
TChainOverride extends ChainEIP712 | undefined = ChainEIP712 | undefined,
|
32
|
+
> = UnionOmit<
|
33
|
+
FormattedTransactionRequest<
|
34
|
+
TChainOverride extends ChainEIP712 ? TChainOverride : TChain
|
35
|
+
>,
|
36
|
+
'from'
|
37
|
+
> &
|
38
|
+
GetAccountParameter<TAccount> &
|
39
|
+
GetChainParameter<TChain, TChainOverride>
|
40
|
+
|
41
|
+
export type SignTransactionReturnType = SignTransactionReturnType_
|
42
|
+
|
43
|
+
export type SignTransactionErrorType = SignTransactionErrorType_
|
44
|
+
|
45
|
+
/**
|
46
|
+
* Signs a transaction.
|
47
|
+
*
|
48
|
+
* - Docs: https://viem.sh/docs/zksync/actions/signTransaction
|
49
|
+
*
|
50
|
+
* @param args - {@link SignTransactionParameters}
|
51
|
+
* @returns The signed serialized tranasction. {@link SignTransactionReturnType}
|
52
|
+
*
|
53
|
+
* @example
|
54
|
+
* import { createWalletClient, custom } from 'viem'
|
55
|
+
* import { zkSync } from 'viem/chains'
|
56
|
+
* import { signTransaction } from 'viem/zksync'
|
57
|
+
*
|
58
|
+
* const client = createWalletClient({
|
59
|
+
* chain: zkSync,
|
60
|
+
* transport: custom(window.ethereum),
|
61
|
+
* })
|
62
|
+
* const signature = await signTransaction(client, {
|
63
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
64
|
+
* to: '0x0000000000000000000000000000000000000000',
|
65
|
+
* value: 1n,
|
66
|
+
* })
|
67
|
+
*
|
68
|
+
* @example
|
69
|
+
* // Account Hoisting
|
70
|
+
* import { createWalletClient, http } from 'viem'
|
71
|
+
* import { privateKeyToAccount } from 'viem/accounts'
|
72
|
+
* import { zkSync } from 'viem/chains'
|
73
|
+
* import { signTransaction } from 'viem/zksync'
|
74
|
+
*
|
75
|
+
* const client = createWalletClient({
|
76
|
+
* account: privateKeyToAccount('0x…'),
|
77
|
+
* chain: zkSync,
|
78
|
+
* transport: custom(window.ethereum),
|
79
|
+
* })
|
80
|
+
* const signature = await signTransaction(client, {
|
81
|
+
* to: '0x0000000000000000000000000000000000000000',
|
82
|
+
* value: 1n,
|
83
|
+
* })
|
84
|
+
*/
|
85
|
+
export async function signTransaction<
|
86
|
+
TChain extends ChainEIP712 | undefined,
|
87
|
+
TAccount extends Account | undefined,
|
88
|
+
TChainOverride extends ChainEIP712 | undefined,
|
89
|
+
>(
|
90
|
+
client: Client<Transport, TChain, TAccount>,
|
91
|
+
args: SignTransactionParameters<TChain, TAccount, TChainOverride>,
|
92
|
+
): Promise<SignTransactionReturnType> {
|
93
|
+
if (isEIP712Transaction(args)) return signEip712Transaction(client, args)
|
94
|
+
return await signTransaction_(client, args as any)
|
95
|
+
}
|
@@ -1,7 +1,11 @@
|
|
1
1
|
import { formatters } from './formatters.js'
|
2
2
|
import { serializers } from './serializers.js'
|
3
|
+
import { getEip712Domain } from './utils/getEip712Domain.js'
|
3
4
|
|
4
5
|
export const chainConfig = {
|
5
6
|
formatters,
|
6
7
|
serializers,
|
8
|
+
custom: {
|
9
|
+
getEip712Domain,
|
10
|
+
},
|
7
11
|
} as const
|
@@ -0,0 +1,186 @@
|
|
1
|
+
import { writeContract } from '../../../actions/wallet/writeContract.js'
|
2
|
+
import type { Client } from '../../../clients/createClient.js'
|
3
|
+
import type { WalletActions } from '../../../clients/decorators/wallet.js'
|
4
|
+
import type { Transport } from '../../../clients/transports/createTransport.js'
|
5
|
+
import type { Account } from '../../../types/account.js'
|
6
|
+
import {
|
7
|
+
type SendTransactionParameters,
|
8
|
+
type SendTransactionReturnType,
|
9
|
+
sendTransaction,
|
10
|
+
} from '../actions/sendTransaction.js'
|
11
|
+
import {
|
12
|
+
type SignTransactionParameters,
|
13
|
+
type SignTransactionReturnType,
|
14
|
+
signTransaction,
|
15
|
+
} from '../actions/signTransaction.js'
|
16
|
+
import type { ChainEIP712 } from '../types/chain.js'
|
17
|
+
|
18
|
+
export type Eip712WalletActions<
|
19
|
+
chain extends ChainEIP712 | undefined = ChainEIP712 | undefined,
|
20
|
+
account extends Account | undefined = Account | undefined,
|
21
|
+
> = {
|
22
|
+
/**
|
23
|
+
* Creates, signs, and sends a new transaction to the network.
|
24
|
+
*
|
25
|
+
* - Docs: https://viem.sh/docs/zksync/actions/sendTransaction
|
26
|
+
* - JSON-RPC Methods:
|
27
|
+
* - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction)
|
28
|
+
* - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction)
|
29
|
+
*
|
30
|
+
* @param client - Client to use
|
31
|
+
* @param parameters - {@link SendTransactionParameters}
|
32
|
+
* @returns The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link SendTransactionReturnType}
|
33
|
+
*
|
34
|
+
* @example
|
35
|
+
* import { createWalletClient, custom } from 'viem'
|
36
|
+
* import { zkSync } from 'viem/chains'
|
37
|
+
* import { eip712WalletActions } from 'viem/zksync'
|
38
|
+
*
|
39
|
+
* const client = createWalletClient({
|
40
|
+
* chain: zkSync,
|
41
|
+
* transport: custom(window.ethereum),
|
42
|
+
* }).extend(eip712WalletActions())
|
43
|
+
* const hash = await client.sendTransaction({
|
44
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
45
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
46
|
+
* value: 1000000000000000000n,
|
47
|
+
* })
|
48
|
+
*
|
49
|
+
* @example
|
50
|
+
* // Account Hoisting
|
51
|
+
* import { createWalletClient, http } from 'viem'
|
52
|
+
* import { privateKeyToAccount } from 'viem/accounts'
|
53
|
+
* import { zkSync } from 'viem/chains'
|
54
|
+
* import { eip712WalletActions } from 'viem/zksync'
|
55
|
+
*
|
56
|
+
* const client = createWalletClient({
|
57
|
+
* account: privateKeyToAccount('0x…'),
|
58
|
+
* chain: zkSync,
|
59
|
+
* transport: http(),
|
60
|
+
* }).extend(eip712WalletActions())
|
61
|
+
* const hash = await client.sendTransaction({
|
62
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
63
|
+
* value: 1000000000000000000n,
|
64
|
+
* })
|
65
|
+
*/
|
66
|
+
sendTransaction: <chainOverride extends ChainEIP712 | undefined = undefined>(
|
67
|
+
args: SendTransactionParameters<chain, account, chainOverride>,
|
68
|
+
) => Promise<SendTransactionReturnType>
|
69
|
+
/**
|
70
|
+
* Signs a transaction.
|
71
|
+
*
|
72
|
+
* - Docs: https://viem.sh/docs/actions/wallet/signTransaction
|
73
|
+
* - JSON-RPC Methods:
|
74
|
+
* - JSON-RPC Accounts: [`eth_signTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)
|
75
|
+
* - Local Accounts: Signs locally. No JSON-RPC request.
|
76
|
+
*
|
77
|
+
* @param args - {@link SignTransactionParameters}
|
78
|
+
* @returns The signed serialized tranasction. {@link SignTransactionReturnType}
|
79
|
+
*
|
80
|
+
* @example
|
81
|
+
* import { createWalletClient, custom } from 'viem'
|
82
|
+
* import { zkSync } from 'viem/chains'
|
83
|
+
* import { eip712WalletActions } from 'viem/zksync'
|
84
|
+
*
|
85
|
+
* const client = createWalletClient({
|
86
|
+
* chain: zkSync,
|
87
|
+
* transport: custom(window.ethereum),
|
88
|
+
* }).extend(eip712WalletActions())
|
89
|
+
* const signature = await client.signTransaction({
|
90
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
91
|
+
* to: '0x0000000000000000000000000000000000000000',
|
92
|
+
* value: 1n,
|
93
|
+
* })
|
94
|
+
*
|
95
|
+
* @example
|
96
|
+
* // Account Hoisting
|
97
|
+
* import { createWalletClient, http } from 'viem'
|
98
|
+
* import { privateKeyToAccount } from 'viem/accounts'
|
99
|
+
* import { zkSync } from 'viem/chains'
|
100
|
+
* import { eip712WalletActions } from 'viem/zksync'
|
101
|
+
*
|
102
|
+
* const client = createWalletClient({
|
103
|
+
* account: privateKeyToAccount('0x…'),
|
104
|
+
* chain: zkSync,
|
105
|
+
* transport: custom(window.ethereum),
|
106
|
+
* }).extend(eip712WalletActions())
|
107
|
+
* const signature = await client.signTransaction({
|
108
|
+
* to: '0x0000000000000000000000000000000000000000',
|
109
|
+
* value: 1n,
|
110
|
+
* })
|
111
|
+
*/
|
112
|
+
signTransaction: <chainOverride extends ChainEIP712 | undefined = undefined>(
|
113
|
+
args: SignTransactionParameters<chain, account, chainOverride>,
|
114
|
+
) => Promise<SignTransactionReturnType>
|
115
|
+
/**
|
116
|
+
* Executes a write function on a contract.
|
117
|
+
*
|
118
|
+
* - Docs: https://viem.sh/docs/contract/writeContract
|
119
|
+
* - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/writing-to-contracts
|
120
|
+
*
|
121
|
+
* A "write" function on a Solidity contract modifies the state of the blockchain. These types of functions require gas to be executed, and hence a [Transaction](https://viem.sh/docs/glossary/terms) is needed to be broadcast in order to change the state.
|
122
|
+
*
|
123
|
+
* Internally, uses a [Wallet Client](https://viem.sh/docs/clients/wallet) to call the [`sendTransaction` action](https://viem.sh/docs/actions/wallet/sendTransaction) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).
|
124
|
+
*
|
125
|
+
* __Warning: The `write` internally sends a transaction – it does not validate if the contract write will succeed (the contract may throw an error). It is highly recommended to [simulate the contract write with `contract.simulate`](https://viem.sh/docs/contract/writeContract#usage) before you execute it.__
|
126
|
+
*
|
127
|
+
* @param client - Client to use
|
128
|
+
* @param parameters - {@link WriteContractParameters}
|
129
|
+
* @returns A [Transaction Hash](https://viem.sh/docs/glossary/terms#hash). {@link WriteContractReturnType}
|
130
|
+
*
|
131
|
+
* @example
|
132
|
+
* import { createWalletClient, custom, parseAbi } from 'viem'
|
133
|
+
* import { zkSync } from 'viem/chains'
|
134
|
+
* import { eip712WalletActions } from 'viem/zksync'
|
135
|
+
*
|
136
|
+
* const client = createWalletClient({
|
137
|
+
* chain: zkSync,
|
138
|
+
* transport: custom(window.ethereum),
|
139
|
+
* }).extend(eip712WalletActions())
|
140
|
+
* const hash = await client.writeContract({
|
141
|
+
* address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
|
142
|
+
* abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),
|
143
|
+
* functionName: 'mint',
|
144
|
+
* args: [69420],
|
145
|
+
* })
|
146
|
+
*
|
147
|
+
* @example
|
148
|
+
* // With Validation
|
149
|
+
* import { createWalletClient, http, parseAbi } from 'viem'
|
150
|
+
* import { zkSync } from 'viem/chains'
|
151
|
+
* import { eip712WalletActions } from 'viem/zksync'
|
152
|
+
*
|
153
|
+
* const client = createWalletClient({
|
154
|
+
* chain: zkSync,
|
155
|
+
* transport: http(),
|
156
|
+
* }).extend(eip712WalletActions())
|
157
|
+
* const { request } = await client.simulateContract({
|
158
|
+
* address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
|
159
|
+
* abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),
|
160
|
+
* functionName: 'mint',
|
161
|
+
* args: [69420],
|
162
|
+
* }
|
163
|
+
* const hash = await client.writeContract(request)
|
164
|
+
*/
|
165
|
+
writeContract: WalletActions<chain, account>['writeContract']
|
166
|
+
}
|
167
|
+
|
168
|
+
export function eip712WalletActions() {
|
169
|
+
return <
|
170
|
+
transport extends Transport,
|
171
|
+
chain extends ChainEIP712 | undefined = ChainEIP712 | undefined,
|
172
|
+
account extends Account | undefined = Account | undefined,
|
173
|
+
>(
|
174
|
+
client: Client<transport, chain, account>,
|
175
|
+
): Eip712WalletActions<chain, account> => ({
|
176
|
+
sendTransaction: (args) => sendTransaction(client, args),
|
177
|
+
signTransaction: (args) => signTransaction(client, args),
|
178
|
+
writeContract: (args) =>
|
179
|
+
writeContract(
|
180
|
+
Object.assign(client, {
|
181
|
+
sendTransaction: (args: any) => sendTransaction(client, args),
|
182
|
+
}),
|
183
|
+
args,
|
184
|
+
),
|
185
|
+
})
|
186
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { BaseError } from '../../../errors/base.js'
|
2
|
+
|
3
|
+
export type InvalidEip712TransactionErrorType =
|
4
|
+
InvalidEip712TransactionError & {
|
5
|
+
name: 'InvalidEip712TransactionError'
|
6
|
+
}
|
7
|
+
export class InvalidEip712TransactionError extends BaseError {
|
8
|
+
override name = 'InvalidEip712TransactionError'
|
9
|
+
|
10
|
+
constructor() {
|
11
|
+
super(
|
12
|
+
[
|
13
|
+
'Transaction is not an EIP712 transaction.',
|
14
|
+
'',
|
15
|
+
'Transaction must:',
|
16
|
+
' - include `type: "eip712"`',
|
17
|
+
' - include one of the following: `customSignature`, `paymaster`, `paymasterInput`, `gasPerPubdata`, `factoryDeps`',
|
18
|
+
].join('\n'),
|
19
|
+
)
|
20
|
+
}
|
21
|
+
}
|
@@ -10,16 +10,17 @@ import { defineTransactionReceipt } from '../../utils/formatters/transactionRece
|
|
10
10
|
import { defineTransactionRequest } from '../../utils/formatters/transactionRequest.js'
|
11
11
|
import type {
|
12
12
|
ZkSyncBlockOverrides,
|
13
|
-
ZkSyncL2ToL1Log,
|
14
|
-
ZkSyncLog,
|
15
13
|
ZkSyncRpcBlockOverrides,
|
14
|
+
} from './types/block.js'
|
15
|
+
import type { ZkSyncL2ToL1Log, ZkSyncLog } from './types/log.js'
|
16
|
+
import type {
|
16
17
|
ZkSyncRpcTransaction,
|
17
18
|
ZkSyncRpcTransactionReceiptOverrides,
|
18
19
|
ZkSyncRpcTransactionRequest,
|
19
20
|
ZkSyncTransaction,
|
20
21
|
ZkSyncTransactionReceipt,
|
21
22
|
ZkSyncTransactionRequest,
|
22
|
-
} from './types.js'
|
23
|
+
} from './types/transaction.js'
|
23
24
|
|
24
25
|
export const formatters = {
|
25
26
|
block: /*#__PURE__*/ defineBlock({
|
@@ -32,7 +33,7 @@ export const formatters = {
|
|
32
33
|
} {
|
33
34
|
const transactions = args.transactions?.map((transaction) => {
|
34
35
|
if (typeof transaction === 'string') return transaction
|
35
|
-
const formatted = formatters.transaction
|
36
|
+
const formatted = formatters.transaction?.format(
|
36
37
|
transaction as ZkSyncRpcTransaction,
|
37
38
|
) as ZkSyncTransaction
|
38
39
|
if (formatted.typeHex === '0x71') formatted.type = 'eip712'
|
@@ -140,7 +141,7 @@ export const formatters = {
|
|
140
141
|
}
|
141
142
|
: {}),
|
142
143
|
},
|
143
|
-
type:
|
144
|
+
type: '0x71',
|
144
145
|
} as ZkSyncRpcTransactionRequest
|
145
146
|
return {} as ZkSyncRpcTransactionRequest
|
146
147
|
},
|
package/chains/zksync/index.ts
CHANGED
@@ -1,18 +1,65 @@
|
|
1
|
+
export {
|
2
|
+
type SendTransactionErrorType,
|
3
|
+
type SendTransactionParameters,
|
4
|
+
type SendTransactionReturnType,
|
5
|
+
sendTransaction,
|
6
|
+
} from './actions/sendTransaction.js'
|
7
|
+
export {
|
8
|
+
type SendEip712TransactionErrorType,
|
9
|
+
type SendEip712TransactionParameters,
|
10
|
+
type SendEip712TransactionReturnType,
|
11
|
+
sendEip712Transaction,
|
12
|
+
} from './actions/sendEip712Transaction.js'
|
13
|
+
export {
|
14
|
+
type SignEip712TransactionErrorType,
|
15
|
+
type SignEip712TransactionParameters,
|
16
|
+
type SignEip712TransactionReturnType,
|
17
|
+
signEip712Transaction,
|
18
|
+
} from './actions/signEip712Transaction.js'
|
19
|
+
export {
|
20
|
+
type SignTransactionErrorType,
|
21
|
+
type SignTransactionParameters,
|
22
|
+
type SignTransactionReturnType,
|
23
|
+
signTransaction,
|
24
|
+
} from './actions/signTransaction.js'
|
25
|
+
|
26
|
+
export {
|
27
|
+
zkSync,
|
28
|
+
zkSyncTestnet,
|
29
|
+
zkSyncSepoliaTestnet,
|
30
|
+
} from './chains.js'
|
31
|
+
|
1
32
|
export { chainConfig } from './chainConfig.js'
|
2
33
|
|
34
|
+
export {
|
35
|
+
eip712WalletActions,
|
36
|
+
type Eip712WalletActions,
|
37
|
+
} from './decorators/eip712.js'
|
38
|
+
|
3
39
|
export { serializeTransaction } from './serializers.js'
|
4
40
|
|
5
41
|
export type {
|
6
42
|
ZkSyncBlock,
|
7
43
|
ZkSyncBlockOverrides,
|
44
|
+
ZkSyncRpcBlock,
|
45
|
+
ZkSyncRpcBlockOverrides,
|
46
|
+
} from './types/block.js'
|
47
|
+
export type { ChainEIP712 } from './types/chain.js'
|
48
|
+
export type {
|
49
|
+
EIP712Domain,
|
50
|
+
EIP712DomainFn,
|
8
51
|
ZkSyncEip712Meta,
|
9
|
-
|
52
|
+
} from './types/eip712.js'
|
53
|
+
export type { ZkSyncFeeValues } from './types/fee.js'
|
54
|
+
export type {
|
10
55
|
ZkSyncL2ToL1Log,
|
11
56
|
ZkSyncLog,
|
12
|
-
ZkSyncRpcBlock,
|
13
|
-
ZkSyncRpcBlockOverrides,
|
14
57
|
ZkSyncRpcL2ToL1Log,
|
15
58
|
ZkSyncRpcLog,
|
59
|
+
} from './types/log.js'
|
60
|
+
export type {
|
61
|
+
TransactionRequestEIP712,
|
62
|
+
ZkSyncEIP712TransactionSignable,
|
16
63
|
ZkSyncRpcTransaction,
|
17
64
|
ZkSyncRpcTransactionEIP712,
|
18
65
|
ZkSyncRpcTransactionPriority,
|
@@ -30,4 +77,4 @@ export type {
|
|
30
77
|
ZkSyncTransactionSerialized,
|
31
78
|
ZkSyncTransactionSerializedEIP712,
|
32
79
|
ZkSyncTransactionType,
|
33
|
-
} from './types.js'
|
80
|
+
} from './types/transaction.js'
|
@@ -1,9 +1,5 @@
|
|
1
|
-
import { InvalidAddressError } from '../../errors/address.js'
|
2
|
-
import { BaseError } from '../../errors/base.js'
|
3
|
-
import { InvalidChainIdError } from '../../errors/chain.js'
|
4
1
|
import type { ChainSerializers } from '../../types/chain.js'
|
5
2
|
import type { TransactionSerializable } from '../../types/transaction.js'
|
6
|
-
import { isAddress } from '../../utils/address/isAddress.js'
|
7
3
|
import { concatHex } from '../../utils/data/concat.js'
|
8
4
|
import { toHex } from '../../utils/encoding/toHex.js'
|
9
5
|
import { toRlp } from '../../utils/encoding/toRlp.js'
|
@@ -15,12 +11,14 @@ import type {
|
|
15
11
|
ZkSyncTransactionSerializable,
|
16
12
|
ZkSyncTransactionSerializableEIP712,
|
17
13
|
ZkSyncTransactionSerializedEIP712,
|
18
|
-
} from './types.js'
|
14
|
+
} from './types/transaction.js'
|
15
|
+
import { assertEip712Transaction } from './utils/assertEip712Transaction.js'
|
16
|
+
import { isEIP712Transaction } from './utils/isEip712Transaction.js'
|
19
17
|
|
20
18
|
export const serializeTransaction: SerializeTransactionFn<
|
21
19
|
ZkSyncTransactionSerializable
|
22
20
|
> = (tx, signature) => {
|
23
|
-
if (
|
21
|
+
if (isEIP712Transaction(tx))
|
24
22
|
return serializeTransactionEIP712(tx as ZkSyncTransactionSerializableEIP712)
|
25
23
|
return serializeTransaction_(tx as TransactionSerializable, signature)
|
26
24
|
}
|
@@ -29,9 +27,6 @@ export const serializers = {
|
|
29
27
|
transaction: serializeTransaction,
|
30
28
|
} as const satisfies ChainSerializers
|
31
29
|
|
32
|
-
//////////////////////////////////////////////////////////////////////////////
|
33
|
-
// Serializers
|
34
|
-
|
35
30
|
export type SerializeTransactionEIP712ReturnType =
|
36
31
|
ZkSyncTransactionSerializedEIP712
|
37
32
|
|
@@ -55,7 +50,7 @@ function serializeTransactionEIP712(
|
|
55
50
|
data,
|
56
51
|
} = transaction
|
57
52
|
|
58
|
-
|
53
|
+
assertEip712Transaction(transaction)
|
59
54
|
|
60
55
|
const serializedTransaction = [
|
61
56
|
nonce ? toHex(nonce) : '0x',
|
@@ -64,7 +59,7 @@ function serializeTransactionEIP712(
|
|
64
59
|
gas ? toHex(gas) : '0x',
|
65
60
|
to ?? '0x',
|
66
61
|
value ? toHex(value) : '0x',
|
67
|
-
data ?? '
|
62
|
+
data ?? '0x0',
|
68
63
|
toHex(chainId),
|
69
64
|
toHex(''),
|
70
65
|
toHex(''),
|
@@ -81,42 +76,3 @@ function serializeTransactionEIP712(
|
|
81
76
|
toRlp(serializedTransaction),
|
82
77
|
]) as SerializeTransactionEIP712ReturnType
|
83
78
|
}
|
84
|
-
|
85
|
-
//////////////////////////////////////////////////////////////////////////////
|
86
|
-
// Utilities
|
87
|
-
|
88
|
-
function isEIP712(transaction: ZkSyncTransactionSerializable) {
|
89
|
-
if (
|
90
|
-
'customSignature' in transaction ||
|
91
|
-
'paymaster' in transaction ||
|
92
|
-
'paymasterInput' in transaction ||
|
93
|
-
'gasPerPubdata' in transaction ||
|
94
|
-
'factoryDeps' in transaction
|
95
|
-
)
|
96
|
-
return true
|
97
|
-
return false
|
98
|
-
}
|
99
|
-
|
100
|
-
export function assertTransactionEIP712(
|
101
|
-
transaction: ZkSyncTransactionSerializableEIP712,
|
102
|
-
) {
|
103
|
-
const { chainId, to, from, paymaster, paymasterInput } = transaction
|
104
|
-
if (chainId <= 0) throw new InvalidChainIdError({ chainId })
|
105
|
-
|
106
|
-
if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })
|
107
|
-
if (from && !isAddress(from)) throw new InvalidAddressError({ address: from })
|
108
|
-
if (paymaster && !isAddress(paymaster))
|
109
|
-
throw new InvalidAddressError({ address: paymaster })
|
110
|
-
|
111
|
-
if (paymaster && !paymasterInput) {
|
112
|
-
throw new BaseError(
|
113
|
-
'`paymasterInput` must be provided when `paymaster` is defined',
|
114
|
-
)
|
115
|
-
}
|
116
|
-
|
117
|
-
if (!paymaster && paymasterInput) {
|
118
|
-
throw new BaseError(
|
119
|
-
'`paymaster` must be provided when `paymasterInput` is defined',
|
120
|
-
)
|
121
|
-
}
|
122
|
-
}
|