viem 2.12.4 → 2.13.1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +22 -0
- package/_cjs/accounts/index.js.map +1 -1
- package/_cjs/accounts/privateKeyToAccount.js +0 -4
- package/_cjs/accounts/privateKeyToAccount.js.map +1 -1
- package/_cjs/accounts/toAccount.js +0 -1
- package/_cjs/accounts/toAccount.js.map +1 -1
- package/_cjs/actions/index.js.map +1 -1
- package/_cjs/celo/index.js.map +1 -1
- package/_cjs/chains/definitions/redstone.js +23 -0
- package/_cjs/chains/definitions/redstone.js.map +1 -0
- package/_cjs/chains/definitions/scrollSepolia.js +3 -3
- package/_cjs/chains/definitions/scrollSepolia.js.map +1 -1
- package/_cjs/chains/definitions/taiko.js +32 -0
- package/_cjs/chains/definitions/taiko.js.map +1 -0
- package/_cjs/chains/index.js +7 -5
- package/_cjs/chains/index.js.map +1 -1
- package/_cjs/chains/utils.js.map +1 -1
- package/_cjs/ens/index.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/experimental/erc7715/actions/issuePermissions.js +74 -0
- package/_cjs/experimental/erc7715/actions/issuePermissions.js.map +1 -0
- package/_cjs/experimental/erc7715/decorators/erc7715.js +13 -0
- package/_cjs/experimental/erc7715/decorators/erc7715.js.map +1 -0
- package/_cjs/experimental/erc7715/types/permission.js +3 -0
- package/_cjs/experimental/erc7715/types/permission.js.map +1 -0
- package/_cjs/experimental/erc7715/types/signer.js +3 -0
- package/_cjs/experimental/erc7715/types/signer.js.map +1 -0
- package/_cjs/experimental/index.js +5 -15
- package/_cjs/experimental/index.js.map +1 -1
- package/_cjs/index.js.map +1 -1
- package/_cjs/node/index.js.map +1 -1
- package/_cjs/op-stack/chains.js.map +1 -1
- package/_cjs/op-stack/index.js.map +1 -1
- package/_cjs/siwe/index.js.map +1 -1
- package/_cjs/utils/accounts.js.map +1 -1
- package/_cjs/utils/hash/toEventHash.js.map +1 -1
- package/_cjs/utils/hash/toEventSignature.js.map +1 -1
- package/_cjs/utils/hash/toFunctionHash.js.map +1 -1
- package/_cjs/utils/hash/toFunctionSignature.js.map +1 -1
- package/_cjs/utils/index.js.map +1 -1
- package/_cjs/utils/promise/withTimeout.js.map +1 -1
- package/_cjs/utils/typedData.js +0 -1
- package/_cjs/utils/typedData.js.map +1 -1
- package/_cjs/zksync/chains.js.map +1 -1
- package/_cjs/zksync/index.js.map +1 -1
- package/_esm/accounts/index.js +1 -0
- package/_esm/accounts/index.js.map +1 -1
- package/_esm/accounts/privateKeyToAccount.js +0 -4
- package/_esm/accounts/privateKeyToAccount.js.map +1 -1
- package/_esm/accounts/toAccount.js +0 -1
- package/_esm/accounts/toAccount.js.map +1 -1
- package/_esm/actions/index.js +1 -0
- package/_esm/actions/index.js.map +1 -1
- package/_esm/celo/index.js +1 -0
- package/_esm/celo/index.js.map +1 -1
- package/_esm/chains/definitions/redstone.js +20 -0
- package/_esm/chains/definitions/redstone.js.map +1 -0
- package/_esm/chains/definitions/scrollSepolia.js +3 -3
- package/_esm/chains/definitions/scrollSepolia.js.map +1 -1
- package/_esm/chains/definitions/taiko.js +29 -0
- package/_esm/chains/definitions/taiko.js.map +1 -0
- package/_esm/chains/index.js +3 -1
- package/_esm/chains/index.js.map +1 -1
- package/_esm/chains/utils.js +1 -0
- package/_esm/chains/utils.js.map +1 -1
- package/_esm/ens/index.js +1 -0
- package/_esm/ens/index.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/experimental/erc7715/actions/issuePermissions.js +107 -0
- package/_esm/experimental/erc7715/actions/issuePermissions.js.map +1 -0
- package/_esm/experimental/erc7715/decorators/erc7715.js +26 -0
- package/_esm/experimental/erc7715/decorators/erc7715.js.map +1 -0
- package/_esm/experimental/erc7715/types/permission.js +2 -0
- package/_esm/experimental/erc7715/types/permission.js.map +1 -0
- package/_esm/experimental/erc7715/types/signer.js +2 -0
- package/_esm/experimental/erc7715/types/signer.js.map +1 -0
- package/_esm/experimental/index.js +3 -7
- package/_esm/experimental/index.js.map +1 -1
- package/_esm/index.js +1 -0
- package/_esm/index.js.map +1 -1
- package/_esm/node/index.js +1 -0
- package/_esm/node/index.js.map +1 -1
- package/_esm/op-stack/chains.js +1 -0
- package/_esm/op-stack/chains.js.map +1 -1
- package/_esm/op-stack/index.js +2 -0
- package/_esm/op-stack/index.js.map +1 -1
- package/_esm/siwe/index.js +1 -0
- package/_esm/siwe/index.js.map +1 -1
- package/_esm/utils/accounts.js +1 -0
- package/_esm/utils/accounts.js.map +1 -1
- package/_esm/utils/hash/toEventHash.js +1 -0
- package/_esm/utils/hash/toEventHash.js.map +1 -1
- package/_esm/utils/hash/toEventSignature.js +1 -0
- package/_esm/utils/hash/toEventSignature.js.map +1 -1
- package/_esm/utils/hash/toFunctionHash.js +1 -0
- package/_esm/utils/hash/toFunctionHash.js.map +1 -1
- package/_esm/utils/hash/toFunctionSignature.js +1 -0
- package/_esm/utils/hash/toFunctionSignature.js.map +1 -1
- package/_esm/utils/index.js +1 -0
- package/_esm/utils/index.js.map +1 -1
- package/_esm/utils/promise/withTimeout.js.map +1 -1
- package/_esm/utils/typedData.js +0 -1
- package/_esm/utils/typedData.js.map +1 -1
- package/_esm/zksync/chains.js +1 -0
- package/_esm/zksync/chains.js.map +1 -1
- package/_esm/zksync/index.js +1 -0
- package/_esm/zksync/index.js.map +1 -1
- package/_types/accounts/index.d.ts.map +1 -1
- package/_types/accounts/privateKeyToAccount.d.ts.map +1 -1
- package/_types/accounts/toAccount.d.ts.map +1 -1
- package/_types/accounts/types.d.ts +2 -4
- package/_types/accounts/types.d.ts.map +1 -1
- package/_types/actions/index.d.ts.map +1 -1
- package/_types/celo/chainConfig.d.ts +76 -76
- package/_types/celo/formatters.d.ts +38 -38
- package/_types/celo/index.d.ts.map +1 -1
- package/_types/chains/definitions/ancient8.d.ts +30 -30
- package/_types/chains/definitions/ancient8Sepolia.d.ts +30 -30
- package/_types/chains/definitions/base.d.ts +30 -30
- package/_types/chains/definitions/baseGoerli.d.ts +30 -30
- package/_types/chains/definitions/baseSepolia.d.ts +30 -30
- package/_types/chains/definitions/celo.d.ts +76 -76
- package/_types/chains/definitions/celoAlfajores.d.ts +76 -76
- package/_types/chains/definitions/fraxtal.d.ts +30 -30
- package/_types/chains/definitions/fraxtalTestnet.d.ts +30 -30
- package/_types/chains/definitions/funkiSepolia.d.ts +30 -30
- package/_types/chains/definitions/liskSepolia.d.ts +30 -30
- package/_types/chains/definitions/metalL2.d.ts +30 -30
- package/_types/chains/definitions/optimism.d.ts +30 -30
- package/_types/chains/definitions/optimismGoerli.d.ts +30 -30
- package/_types/chains/definitions/optimismSepolia.d.ts +30 -30
- package/_types/chains/definitions/pgn.d.ts +30 -30
- package/_types/chains/definitions/pgnTestnet.d.ts +30 -30
- package/_types/chains/definitions/{scrollTestnet.d.ts → redstone.d.ts} +10 -11
- package/_types/chains/definitions/redstone.d.ts.map +1 -0
- package/_types/chains/definitions/rss3.d.ts +30 -30
- package/_types/chains/definitions/rss3Sepolia.d.ts +30 -30
- package/_types/chains/definitions/scrollSepolia.d.ts +3 -3
- package/_types/chains/definitions/taiko.d.ts +34 -0
- package/_types/chains/definitions/taiko.d.ts.map +1 -0
- package/_types/chains/definitions/zora.d.ts +30 -30
- package/_types/chains/definitions/zoraSepolia.d.ts +30 -30
- package/_types/chains/definitions/zoraTestnet.d.ts +30 -30
- package/_types/chains/index.d.ts +2 -1
- package/_types/chains/index.d.ts.map +1 -1
- package/_types/chains/utils.d.ts.map +1 -1
- package/_types/ens/index.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/experimental/erc7715/actions/issuePermissions.d.ts +73 -0
- package/_types/experimental/erc7715/actions/issuePermissions.d.ts.map +1 -0
- package/_types/experimental/erc7715/decorators/erc7715.d.ts +61 -0
- package/_types/experimental/erc7715/decorators/erc7715.d.ts.map +1 -0
- package/_types/experimental/erc7715/types/permission.d.ts +36 -0
- package/_types/experimental/erc7715/types/permission.d.ts.map +1 -0
- package/_types/experimental/erc7715/types/signer.d.ts +22 -0
- package/_types/experimental/erc7715/types/signer.d.ts.map +1 -0
- package/_types/experimental/index.d.ts +2 -7
- package/_types/experimental/index.d.ts.map +1 -1
- package/_types/index.d.ts +1 -1
- package/_types/index.d.ts.map +1 -1
- package/_types/node/index.d.ts.map +1 -1
- package/_types/op-stack/chainConfig.d.ts +30 -30
- package/_types/op-stack/chains.d.ts.map +1 -1
- package/_types/op-stack/formatters.d.ts +30 -30
- package/_types/op-stack/index.d.ts.map +1 -1
- package/_types/siwe/index.d.ts.map +1 -1
- package/_types/types/eip1193.d.ts +38 -0
- package/_types/types/eip1193.d.ts.map +1 -1
- package/_types/utils/accounts.d.ts.map +1 -1
- package/_types/utils/formatters/transaction.d.ts +1 -1
- package/_types/utils/hash/toEventHash.d.ts.map +1 -1
- package/_types/utils/hash/toEventSignature.d.ts.map +1 -1
- package/_types/utils/hash/toFunctionHash.d.ts.map +1 -1
- package/_types/utils/hash/toFunctionSignature.d.ts.map +1 -1
- package/_types/utils/index.d.ts.map +1 -1
- package/_types/utils/typedData.d.ts.map +1 -1
- package/_types/zksync/chains.d.ts.map +1 -1
- package/_types/zksync/index.d.ts.map +1 -1
- package/accounts/index.ts +2 -0
- package/accounts/privateKeyToAccount.ts +0 -4
- package/accounts/toAccount.ts +0 -1
- package/accounts/types.ts +2 -9
- package/actions/index.ts +1 -0
- package/celo/index.ts +1 -0
- package/chains/definitions/redstone.ts +20 -0
- package/chains/definitions/scrollSepolia.ts +3 -3
- package/chains/definitions/taiko.ts +29 -0
- package/chains/index.ts +3 -1
- package/chains/utils.ts +1 -0
- package/ens/index.ts +1 -0
- package/errors/version.ts +1 -1
- package/experimental/erc7715/actions/issuePermissions.ts +161 -0
- package/experimental/erc7715/decorators/erc7715.ts +80 -0
- package/experimental/erc7715/types/permission.ts +46 -0
- package/experimental/erc7715/types/signer.ts +25 -0
- package/experimental/index.ts +11 -44
- package/index.ts +3 -0
- package/node/index.ts +1 -0
- package/op-stack/chains.ts +1 -0
- package/op-stack/index.ts +2 -0
- package/package.json +1 -1
- package/siwe/index.ts +1 -0
- package/types/eip1193.ts +44 -0
- package/utils/accounts.ts +2 -0
- package/utils/hash/toEventHash.ts +1 -0
- package/utils/hash/toEventSignature.ts +1 -0
- package/utils/hash/toFunctionHash.ts +1 -0
- package/utils/hash/toFunctionSignature.ts +1 -0
- package/utils/index.ts +1 -0
- package/utils/promise/withTimeout.ts +1 -1
- package/utils/typedData.ts +0 -2
- package/zksync/chains.ts +1 -0
- package/zksync/index.ts +1 -0
- package/_cjs/chains/definitions/scrollTestnet.js +0 -24
- package/_cjs/chains/definitions/scrollTestnet.js.map +0 -1
- package/_cjs/experimental/eip3074/actions/signAuthMessage.js +0 -29
- package/_cjs/experimental/eip3074/actions/signAuthMessage.js.map +0 -1
- package/_cjs/experimental/eip3074/constants/abis.js +0 -123
- package/_cjs/experimental/eip3074/constants/abis.js.map +0 -1
- package/_cjs/experimental/eip3074/decorators/eip3074.js +0 -13
- package/_cjs/experimental/eip3074/decorators/eip3074.js.map +0 -1
- package/_cjs/experimental/eip3074/invokers/coders/batchInvokerCoder.js +0 -26
- package/_cjs/experimental/eip3074/invokers/coders/batchInvokerCoder.js.map +0 -1
- package/_cjs/experimental/eip3074/invokers/coders/defineInvokerCoder.js +0 -8
- package/_cjs/experimental/eip3074/invokers/coders/defineInvokerCoder.js.map +0 -1
- package/_cjs/experimental/eip3074/invokers/getInvoker.js +0 -64
- package/_cjs/experimental/eip3074/invokers/getInvoker.js.map +0 -1
- package/_cjs/experimental/eip3074/utils/recoverAuthMessageAddress.js +0 -12
- package/_cjs/experimental/eip3074/utils/recoverAuthMessageAddress.js.map +0 -1
- package/_cjs/experimental/eip3074/utils/signAuthMessage.js +0 -17
- package/_cjs/experimental/eip3074/utils/signAuthMessage.js.map +0 -1
- package/_cjs/experimental/eip3074/utils/toAuthMessage.js +0 -17
- package/_cjs/experimental/eip3074/utils/toAuthMessage.js.map +0 -1
- package/_cjs/experimental/eip3074/utils/verifyAuthMessage.js +0 -11
- package/_cjs/experimental/eip3074/utils/verifyAuthMessage.js.map +0 -1
- package/_esm/chains/definitions/scrollTestnet.js +0 -21
- package/_esm/chains/definitions/scrollTestnet.js.map +0 -1
- package/_esm/experimental/eip3074/actions/signAuthMessage.js +0 -78
- package/_esm/experimental/eip3074/actions/signAuthMessage.js.map +0 -1
- package/_esm/experimental/eip3074/constants/abis.js +0 -120
- package/_esm/experimental/eip3074/constants/abis.js.map +0 -1
- package/_esm/experimental/eip3074/decorators/eip3074.js +0 -26
- package/_esm/experimental/eip3074/decorators/eip3074.js.map +0 -1
- package/_esm/experimental/eip3074/invokers/coders/batchInvokerCoder.js +0 -22
- package/_esm/experimental/eip3074/invokers/coders/batchInvokerCoder.js.map +0 -1
- package/_esm/experimental/eip3074/invokers/coders/defineInvokerCoder.js +0 -4
- package/_esm/experimental/eip3074/invokers/coders/defineInvokerCoder.js.map +0 -1
- package/_esm/experimental/eip3074/invokers/getInvoker.js +0 -60
- package/_esm/experimental/eip3074/invokers/getInvoker.js.map +0 -1
- package/_esm/experimental/eip3074/utils/recoverAuthMessageAddress.js +0 -8
- package/_esm/experimental/eip3074/utils/recoverAuthMessageAddress.js.map +0 -1
- package/_esm/experimental/eip3074/utils/signAuthMessage.js +0 -16
- package/_esm/experimental/eip3074/utils/signAuthMessage.js.map +0 -1
- package/_esm/experimental/eip3074/utils/toAuthMessage.js +0 -16
- package/_esm/experimental/eip3074/utils/toAuthMessage.js.map +0 -1
- package/_esm/experimental/eip3074/utils/verifyAuthMessage.js +0 -13
- package/_esm/experimental/eip3074/utils/verifyAuthMessage.js.map +0 -1
- package/_types/chains/definitions/scrollTestnet.d.ts.map +0 -1
- package/_types/experimental/eip3074/actions/signAuthMessage.d.ts +0 -82
- package/_types/experimental/eip3074/actions/signAuthMessage.d.ts.map +0 -1
- package/_types/experimental/eip3074/constants/abis.d.ts +0 -91
- package/_types/experimental/eip3074/constants/abis.d.ts.map +0 -1
- package/_types/experimental/eip3074/decorators/eip3074.d.ts +0 -27
- package/_types/experimental/eip3074/decorators/eip3074.d.ts.map +0 -1
- package/_types/experimental/eip3074/invokers/coders/batchInvokerCoder.d.ts +0 -11
- package/_types/experimental/eip3074/invokers/coders/batchInvokerCoder.d.ts.map +0 -1
- package/_types/experimental/eip3074/invokers/coders/defineInvokerCoder.d.ts +0 -14
- package/_types/experimental/eip3074/invokers/coders/defineInvokerCoder.d.ts.map +0 -1
- package/_types/experimental/eip3074/invokers/getInvoker.d.ts +0 -48
- package/_types/experimental/eip3074/invokers/getInvoker.d.ts.map +0 -1
- package/_types/experimental/eip3074/utils/recoverAuthMessageAddress.d.ts +0 -12
- package/_types/experimental/eip3074/utils/recoverAuthMessageAddress.d.ts.map +0 -1
- package/_types/experimental/eip3074/utils/signAuthMessage.d.ts +0 -16
- package/_types/experimental/eip3074/utils/signAuthMessage.d.ts.map +0 -1
- package/_types/experimental/eip3074/utils/toAuthMessage.d.ts +0 -20
- package/_types/experimental/eip3074/utils/toAuthMessage.d.ts.map +0 -1
- package/_types/experimental/eip3074/utils/verifyAuthMessage.d.ts +0 -19
- package/_types/experimental/eip3074/utils/verifyAuthMessage.d.ts.map +0 -1
- package/chains/definitions/scrollTestnet.ts +0 -21
- package/experimental/eip3074/actions/signAuthMessage.ts +0 -151
- package/experimental/eip3074/constants/abis.ts +0 -119
- package/experimental/eip3074/decorators/eip3074.ts +0 -58
- package/experimental/eip3074/invokers/coders/batchInvokerCoder.ts +0 -46
- package/experimental/eip3074/invokers/coders/defineInvokerCoder.ts +0 -20
- package/experimental/eip3074/invokers/getInvoker.ts +0 -192
- package/experimental/eip3074/utils/recoverAuthMessageAddress.ts +0 -29
- package/experimental/eip3074/utils/signAuthMessage.ts +0 -40
- package/experimental/eip3074/utils/toAuthMessage.ts +0 -50
- package/experimental/eip3074/utils/verifyAuthMessage.ts +0 -46
@@ -1,119 +0,0 @@
|
|
1
|
-
export const invokerAbi = [
|
2
|
-
{
|
3
|
-
type: 'function',
|
4
|
-
name: 'execute',
|
5
|
-
inputs: [
|
6
|
-
{
|
7
|
-
name: 'execData',
|
8
|
-
type: 'bytes',
|
9
|
-
internalType: 'bytes',
|
10
|
-
},
|
11
|
-
{
|
12
|
-
name: 'signature',
|
13
|
-
type: 'tuple',
|
14
|
-
internalType: 'struct Auth.Signature',
|
15
|
-
components: [
|
16
|
-
{
|
17
|
-
name: 'signer',
|
18
|
-
type: 'address',
|
19
|
-
internalType: 'address',
|
20
|
-
},
|
21
|
-
{
|
22
|
-
name: 'yParity',
|
23
|
-
type: 'uint8',
|
24
|
-
internalType: 'uint8',
|
25
|
-
},
|
26
|
-
{
|
27
|
-
name: 'r',
|
28
|
-
type: 'bytes32',
|
29
|
-
internalType: 'bytes32',
|
30
|
-
},
|
31
|
-
{
|
32
|
-
name: 's',
|
33
|
-
type: 'bytes32',
|
34
|
-
internalType: 'bytes32',
|
35
|
-
},
|
36
|
-
],
|
37
|
-
},
|
38
|
-
],
|
39
|
-
outputs: [],
|
40
|
-
stateMutability: 'nonpayable',
|
41
|
-
},
|
42
|
-
{
|
43
|
-
type: 'function',
|
44
|
-
name: 'getDigest',
|
45
|
-
inputs: [
|
46
|
-
{
|
47
|
-
name: 'execData',
|
48
|
-
type: 'bytes',
|
49
|
-
internalType: 'bytes',
|
50
|
-
},
|
51
|
-
{
|
52
|
-
name: 'nonce',
|
53
|
-
type: 'uint256',
|
54
|
-
internalType: 'uint256',
|
55
|
-
},
|
56
|
-
],
|
57
|
-
outputs: [
|
58
|
-
{
|
59
|
-
name: 'digest',
|
60
|
-
type: 'bytes32',
|
61
|
-
internalType: 'bytes32',
|
62
|
-
},
|
63
|
-
],
|
64
|
-
stateMutability: 'view',
|
65
|
-
},
|
66
|
-
{
|
67
|
-
type: 'function',
|
68
|
-
name: 'multiSend',
|
69
|
-
inputs: [
|
70
|
-
{
|
71
|
-
name: 'transactions',
|
72
|
-
type: 'bytes',
|
73
|
-
internalType: 'bytes',
|
74
|
-
},
|
75
|
-
],
|
76
|
-
outputs: [],
|
77
|
-
stateMutability: 'payable',
|
78
|
-
},
|
79
|
-
{
|
80
|
-
type: 'function',
|
81
|
-
name: 'nextNonce',
|
82
|
-
inputs: [
|
83
|
-
{
|
84
|
-
name: '',
|
85
|
-
type: 'address',
|
86
|
-
internalType: 'address',
|
87
|
-
},
|
88
|
-
],
|
89
|
-
outputs: [
|
90
|
-
{
|
91
|
-
name: '',
|
92
|
-
type: 'uint256',
|
93
|
-
internalType: 'uint256',
|
94
|
-
},
|
95
|
-
],
|
96
|
-
stateMutability: 'view',
|
97
|
-
},
|
98
|
-
{
|
99
|
-
type: 'error',
|
100
|
-
name: 'BadAuth',
|
101
|
-
inputs: [],
|
102
|
-
},
|
103
|
-
{
|
104
|
-
type: 'error',
|
105
|
-
name: 'InvalidNonce',
|
106
|
-
inputs: [
|
107
|
-
{
|
108
|
-
name: 'authority',
|
109
|
-
type: 'address',
|
110
|
-
internalType: 'address',
|
111
|
-
},
|
112
|
-
{
|
113
|
-
name: 'attempted',
|
114
|
-
type: 'uint256',
|
115
|
-
internalType: 'uint256',
|
116
|
-
},
|
117
|
-
],
|
118
|
-
},
|
119
|
-
] as const
|
@@ -1,58 +0,0 @@
|
|
1
|
-
import type { Client } from '../../../clients/createClient.js'
|
2
|
-
import type { Transport } from '../../../clients/transports/createTransport.js'
|
3
|
-
import type { Account } from '../../../types/account.js'
|
4
|
-
import type { Chain } from '../../../types/chain.js'
|
5
|
-
import {
|
6
|
-
type SignAuthMessageParameters,
|
7
|
-
type SignAuthMessageReturnType,
|
8
|
-
signAuthMessage,
|
9
|
-
} from '../actions/signAuthMessage.js'
|
10
|
-
|
11
|
-
export type WalletActionsEip3074<
|
12
|
-
chain extends Chain | undefined = Chain | undefined,
|
13
|
-
account extends Account | undefined = Account | undefined,
|
14
|
-
> = {
|
15
|
-
signAuthMessage: <
|
16
|
-
chainOverride extends Chain | undefined = undefined,
|
17
|
-
accountOverride extends Account | undefined = undefined,
|
18
|
-
>(
|
19
|
-
parameters: SignAuthMessageParameters<
|
20
|
-
chain,
|
21
|
-
account,
|
22
|
-
chainOverride,
|
23
|
-
accountOverride
|
24
|
-
>,
|
25
|
-
) => Promise<SignAuthMessageReturnType>
|
26
|
-
}
|
27
|
-
|
28
|
-
/**
|
29
|
-
* A suite of EIP-3074 Wallet Actions.
|
30
|
-
*
|
31
|
-
* - Docs: https://viem.sh/experimental
|
32
|
-
*
|
33
|
-
* @example
|
34
|
-
* import { createPublicClient, createWalletClient, http } from 'viem'
|
35
|
-
* import { mainnet } from 'viem/chains'
|
36
|
-
* import { walletActionsEip3074 } from 'viem/experimental'
|
37
|
-
*
|
38
|
-
* const walletClient = createWalletClient({
|
39
|
-
* chain: mainnet,
|
40
|
-
* transport: http(),
|
41
|
-
* }).extend(walletActionsEip3074())
|
42
|
-
*
|
43
|
-
* const signature = await walletClient.signAuthMessage({...})
|
44
|
-
*/
|
45
|
-
export function walletActionsEip3074() {
|
46
|
-
return <
|
47
|
-
transport extends Transport,
|
48
|
-
chain extends Chain | undefined = Chain | undefined,
|
49
|
-
account extends Account | undefined = Account | undefined,
|
50
|
-
>(
|
51
|
-
client: Client<transport, chain, account>,
|
52
|
-
): WalletActionsEip3074<chain, account> => {
|
53
|
-
return {
|
54
|
-
signAuthMessage: (parameters) =>
|
55
|
-
signAuthMessage(client as any, parameters),
|
56
|
-
}
|
57
|
-
}
|
58
|
-
}
|
@@ -1,46 +0,0 @@
|
|
1
|
-
import type { Address } from 'abitype'
|
2
|
-
import { readContract } from '../../../../actions/public/readContract.js'
|
3
|
-
import type { Hex } from '../../../../types/misc.js'
|
4
|
-
import { encodeAbiParameters } from '../../../../utils/abi/encodeAbiParameters.js'
|
5
|
-
import { encodePacked } from '../../../../utils/abi/encodePacked.js'
|
6
|
-
import { concat } from '../../../../utils/data/concat.js'
|
7
|
-
import { size } from '../../../../utils/data/size.js'
|
8
|
-
import { invokerAbi } from '../../constants/abis.js'
|
9
|
-
import { defineInvokerCoder } from './defineInvokerCoder.js'
|
10
|
-
|
11
|
-
type Calls = readonly {
|
12
|
-
to: Address
|
13
|
-
data?: Hex | undefined
|
14
|
-
value?: bigint | undefined
|
15
|
-
}[]
|
16
|
-
|
17
|
-
export type BatchInvokerArgs = Calls
|
18
|
-
|
19
|
-
export function batchInvokerCoder() {
|
20
|
-
return defineInvokerCoder({
|
21
|
-
async toExecData(
|
22
|
-
args: BatchInvokerArgs,
|
23
|
-
{ authority, client, invokerAddress },
|
24
|
-
) {
|
25
|
-
const nonce = await readContract(client, {
|
26
|
-
abi: invokerAbi,
|
27
|
-
address: invokerAddress,
|
28
|
-
functionName: 'nextNonce',
|
29
|
-
args: [authority],
|
30
|
-
})
|
31
|
-
|
32
|
-
const calls = concat(
|
33
|
-
args.map(({ data = '0x', to, value = 0n }) =>
|
34
|
-
encodePacked(
|
35
|
-
['uint8', 'address', 'uint256', 'uint256', 'bytes'],
|
36
|
-
[2, to, value, BigInt(size(data)), data],
|
37
|
-
),
|
38
|
-
),
|
39
|
-
)
|
40
|
-
return encodeAbiParameters(
|
41
|
-
[{ type: 'uint256' }, { type: 'bytes' }],
|
42
|
-
[nonce, calls],
|
43
|
-
)
|
44
|
-
},
|
45
|
-
})
|
46
|
-
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import type { Address } from 'abitype'
|
2
|
-
import type { Client } from '../../../../clients/createClient.js'
|
3
|
-
import type { Hex } from '../../../../types/misc.js'
|
4
|
-
|
5
|
-
export type InvokerCoder<args = unknown> = {
|
6
|
-
toExecData: (
|
7
|
-
args: args,
|
8
|
-
options: { authority: Address; client: Client; invokerAddress: Hex },
|
9
|
-
) => Promise<Hex>
|
10
|
-
}
|
11
|
-
|
12
|
-
export type DefineInvokerCoderParameters<args = unknown> = InvokerCoder<args>
|
13
|
-
|
14
|
-
export type DefineInvokerCoderReturnType<args = unknown> = InvokerCoder<args>
|
15
|
-
|
16
|
-
export function defineInvokerCoder<args>(
|
17
|
-
parameters: DefineInvokerCoderParameters<args>,
|
18
|
-
): DefineInvokerCoderReturnType<args> {
|
19
|
-
return parameters
|
20
|
-
}
|
@@ -1,192 +0,0 @@
|
|
1
|
-
import type { Address } from 'abitype'
|
2
|
-
import {
|
3
|
-
type GetTransactionCountErrorType,
|
4
|
-
getTransactionCount,
|
5
|
-
} from '../../../actions/public/getTransactionCount.js'
|
6
|
-
import {
|
7
|
-
type WriteContractErrorType,
|
8
|
-
writeContract,
|
9
|
-
} from '../../../actions/wallet/writeContract.js'
|
10
|
-
import type { Client } from '../../../clients/createClient.js'
|
11
|
-
import type { Transport } from '../../../clients/transports/createTransport.js'
|
12
|
-
import type { ErrorType } from '../../../errors/utils.js'
|
13
|
-
import type { Account, LocalAccount } from '../../../types/account.js'
|
14
|
-
import type { Chain, GetChainParameter } from '../../../types/chain.js'
|
15
|
-
import type { Hex } from '../../../types/misc.js'
|
16
|
-
import type { IsUndefined } from '../../../types/utils.js'
|
17
|
-
import { parseAccount } from '../../../utils/accounts.js'
|
18
|
-
import {
|
19
|
-
type IsAddressEqualErrorType,
|
20
|
-
isAddressEqual,
|
21
|
-
} from '../../../utils/address/isAddressEqual.js'
|
22
|
-
import { getAction } from '../../../utils/getAction.js'
|
23
|
-
import {
|
24
|
-
type Keccak256ErrorType,
|
25
|
-
keccak256,
|
26
|
-
} from '../../../utils/hash/keccak256.js'
|
27
|
-
import {
|
28
|
-
type ParseSignatureErrorType,
|
29
|
-
parseSignature,
|
30
|
-
} from '../../../utils/signature/parseSignature.js'
|
31
|
-
import {
|
32
|
-
type SignAuthMessageErrorType,
|
33
|
-
signAuthMessage,
|
34
|
-
} from '../actions/signAuthMessage.js'
|
35
|
-
import { invokerAbi } from '../constants/abis.js'
|
36
|
-
import type { InvokerCoder } from './coders/defineInvokerCoder.js'
|
37
|
-
|
38
|
-
type GetExecutorParameter<
|
39
|
-
TAccount extends Account | undefined = Account | undefined,
|
40
|
-
TAccountOverride extends Account | Address | undefined = Account | Address,
|
41
|
-
TRequired extends boolean = true,
|
42
|
-
> = IsUndefined<TAccount> extends true
|
43
|
-
? TRequired extends true
|
44
|
-
? { executor: TAccountOverride | Account | Address }
|
45
|
-
: { executor?: TAccountOverride | Account | Address | undefined }
|
46
|
-
: { executor?: TAccountOverride | Account | Address | undefined }
|
47
|
-
|
48
|
-
export type InvokerExecuteParameters<
|
49
|
-
account extends Account | undefined = Account | undefined,
|
50
|
-
chain extends Chain | undefined = Chain | undefined,
|
51
|
-
chainOverride extends Chain | undefined = Chain | undefined,
|
52
|
-
args = unknown,
|
53
|
-
> = {
|
54
|
-
args: args
|
55
|
-
authority: Account | Address
|
56
|
-
signature: Hex
|
57
|
-
} & GetExecutorParameter<account> &
|
58
|
-
GetChainParameter<chain, chainOverride>
|
59
|
-
|
60
|
-
export type InvokerExecuteErrorType =
|
61
|
-
| WriteContractErrorType
|
62
|
-
| ParseSignatureErrorType
|
63
|
-
| ErrorType
|
64
|
-
|
65
|
-
export type InvokerSignParameters<
|
66
|
-
account extends Account | undefined = Account | undefined,
|
67
|
-
chain extends Chain | undefined = Chain | undefined,
|
68
|
-
chainOverride extends Chain | undefined = Chain | undefined,
|
69
|
-
args = unknown,
|
70
|
-
> = {
|
71
|
-
args: args
|
72
|
-
authority: LocalAccount
|
73
|
-
} & GetExecutorParameter<account, Account | Address, false> &
|
74
|
-
GetChainParameter<chain, chainOverride>
|
75
|
-
|
76
|
-
export type InvokerSignErrorType =
|
77
|
-
| GetTransactionCountErrorType
|
78
|
-
| SignAuthMessageErrorType
|
79
|
-
| Keccak256ErrorType
|
80
|
-
| IsAddressEqualErrorType
|
81
|
-
| ErrorType
|
82
|
-
|
83
|
-
export type Invoker<
|
84
|
-
account extends Account | undefined = Account | undefined,
|
85
|
-
chain extends Chain | undefined = Chain | undefined,
|
86
|
-
args = unknown,
|
87
|
-
> = {
|
88
|
-
address: Address
|
89
|
-
execute<chainOverride extends Chain | undefined = undefined>(
|
90
|
-
parameters: InvokerExecuteParameters<account, chain, chainOverride, args>,
|
91
|
-
): Promise<Hex>
|
92
|
-
sign<chainOverride extends Chain | undefined = undefined>(
|
93
|
-
parameters: InvokerSignParameters<account, chain, chainOverride, args>,
|
94
|
-
): Promise<Hex>
|
95
|
-
}
|
96
|
-
|
97
|
-
export type GetInvokerParameters<
|
98
|
-
account extends Account | undefined = Account | undefined,
|
99
|
-
chain extends Chain | undefined = Chain | undefined,
|
100
|
-
args = unknown,
|
101
|
-
> = {
|
102
|
-
address: Address
|
103
|
-
client: Client<Transport, chain, account>
|
104
|
-
coder: InvokerCoder<args>
|
105
|
-
}
|
106
|
-
|
107
|
-
export type GetInvokerErrorType = ErrorType
|
108
|
-
|
109
|
-
export type InvokerArgs<invoker extends Invoker<any, any, any> = Invoker> =
|
110
|
-
invoker extends Invoker<any, any, infer args> ? args : unknown
|
111
|
-
|
112
|
-
export function getInvoker<
|
113
|
-
account extends Account | undefined,
|
114
|
-
chain extends Chain | undefined,
|
115
|
-
args,
|
116
|
-
>(
|
117
|
-
parameters: GetInvokerParameters<account, chain, args>,
|
118
|
-
): Invoker<account, chain, args> {
|
119
|
-
const { address, client, coder } = parameters
|
120
|
-
return {
|
121
|
-
address,
|
122
|
-
async execute(parameters) {
|
123
|
-
const {
|
124
|
-
executor: executor_ = client.account,
|
125
|
-
authority: authority_,
|
126
|
-
args,
|
127
|
-
chain = client.chain,
|
128
|
-
signature,
|
129
|
-
} = parameters
|
130
|
-
const authority = parseAccount(authority_!)
|
131
|
-
const executor = parseAccount(executor_!)
|
132
|
-
|
133
|
-
const execData = await coder.toExecData(args, {
|
134
|
-
authority: authority.address,
|
135
|
-
client,
|
136
|
-
invokerAddress: address,
|
137
|
-
})
|
138
|
-
|
139
|
-
const { r, s, yParity } = parseSignature(signature)
|
140
|
-
return getAction(
|
141
|
-
client,
|
142
|
-
writeContract,
|
143
|
-
'writeContract',
|
144
|
-
)({
|
145
|
-
abi: invokerAbi,
|
146
|
-
address,
|
147
|
-
account: executor,
|
148
|
-
chain,
|
149
|
-
functionName: 'execute',
|
150
|
-
args: [execData, { signer: authority.address, r, s, yParity }],
|
151
|
-
})
|
152
|
-
},
|
153
|
-
async sign(parameters) {
|
154
|
-
const {
|
155
|
-
args,
|
156
|
-
authority,
|
157
|
-
executor: executor_ = client.account,
|
158
|
-
chain = client.chain,
|
159
|
-
} = parameters
|
160
|
-
const executor = parseAccount(executor_!)
|
161
|
-
const [execData, nonce] = await Promise.all([
|
162
|
-
await coder.toExecData(args, {
|
163
|
-
authority: authority.address,
|
164
|
-
client,
|
165
|
-
invokerAddress: address,
|
166
|
-
}),
|
167
|
-
getAction(
|
168
|
-
client,
|
169
|
-
getTransactionCount,
|
170
|
-
'getTransactionCount',
|
171
|
-
)({
|
172
|
-
address: authority.address,
|
173
|
-
blockTag: 'pending',
|
174
|
-
}),
|
175
|
-
])
|
176
|
-
const signature = await getAction(
|
177
|
-
client,
|
178
|
-
signAuthMessage,
|
179
|
-
'signAuthMessage',
|
180
|
-
)({
|
181
|
-
account: authority,
|
182
|
-
chain,
|
183
|
-
commit: keccak256(execData),
|
184
|
-
invokerAddress: address,
|
185
|
-
nonce: isAddressEqual(authority.address, executor.address)
|
186
|
-
? nonce + 1
|
187
|
-
: nonce,
|
188
|
-
})
|
189
|
-
return signature
|
190
|
-
},
|
191
|
-
}
|
192
|
-
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
import type { Address } from 'abitype'
|
2
|
-
|
3
|
-
import type { ByteArray, Hex, Signature } from '../../../types/misc.js'
|
4
|
-
|
5
|
-
import type { ErrorType } from '../../../errors/utils.js'
|
6
|
-
import { keccak256 } from '../../../utils/hash/keccak256.js'
|
7
|
-
import {
|
8
|
-
type RecoverAddressErrorType,
|
9
|
-
recoverAddress,
|
10
|
-
} from '../../../utils/signature/recoverAddress.js'
|
11
|
-
import { type ToAuthMessageParameters, toAuthMessage } from './toAuthMessage.js'
|
12
|
-
|
13
|
-
export type RecoverAuthMessageAddressParameters = ToAuthMessageParameters & {
|
14
|
-
signature: Hex | ByteArray | Signature
|
15
|
-
}
|
16
|
-
|
17
|
-
export type RecoverAuthMessageAddressReturnType = Address
|
18
|
-
|
19
|
-
export type RecoverAuthMessageAddressErrorType =
|
20
|
-
| RecoverAddressErrorType
|
21
|
-
| ErrorType
|
22
|
-
|
23
|
-
export async function recoverAuthMessageAddress({
|
24
|
-
signature,
|
25
|
-
...parameters
|
26
|
-
}: RecoverAuthMessageAddressParameters): Promise<RecoverAuthMessageAddressReturnType> {
|
27
|
-
const hash = keccak256(toAuthMessage(parameters))
|
28
|
-
return recoverAddress({ hash, signature })
|
29
|
-
}
|
@@ -1,40 +0,0 @@
|
|
1
|
-
import { type SignErrorType, sign } from '../../../accounts/utils/sign.js'
|
2
|
-
import type { ErrorType } from '../../../errors/utils.js'
|
3
|
-
import type { Hex } from '../../../types/misc.js'
|
4
|
-
import { keccak256 } from '../../../utils/hash/keccak256.js'
|
5
|
-
import {
|
6
|
-
type SerializeSignatureErrorType,
|
7
|
-
serializeSignature,
|
8
|
-
} from '../../../utils/signature/serializeSignature.js'
|
9
|
-
import {
|
10
|
-
type ToAuthMessageErrorType,
|
11
|
-
type ToAuthMessageParameters,
|
12
|
-
toAuthMessage,
|
13
|
-
} from './toAuthMessage.js'
|
14
|
-
|
15
|
-
export type SignAuthMessageParameters = ToAuthMessageParameters & {
|
16
|
-
/** The private key to sign with. */
|
17
|
-
privateKey: Hex
|
18
|
-
}
|
19
|
-
|
20
|
-
export type SignAuthMessageReturnType = Hex
|
21
|
-
|
22
|
-
export type SignAuthMessageErrorType =
|
23
|
-
| SignErrorType
|
24
|
-
| ToAuthMessageErrorType
|
25
|
-
| SerializeSignatureErrorType
|
26
|
-
| ErrorType
|
27
|
-
|
28
|
-
/**
|
29
|
-
* Computes a EIP-3074 authorization signature in format: `keccak256(MAGIC || chainId || nonce || invokerAddress || commit))`.
|
30
|
-
*/
|
31
|
-
export async function signAuthMessage(
|
32
|
-
parameters: SignAuthMessageParameters,
|
33
|
-
): Promise<SignAuthMessageReturnType> {
|
34
|
-
const { privateKey } = parameters
|
35
|
-
const signature = await sign({
|
36
|
-
hash: keccak256(toAuthMessage(parameters)),
|
37
|
-
privateKey,
|
38
|
-
})
|
39
|
-
return serializeSignature(signature)
|
40
|
-
}
|
@@ -1,50 +0,0 @@
|
|
1
|
-
import type { Address } from 'abitype'
|
2
|
-
import type { ErrorType } from '../../../errors/utils.js'
|
3
|
-
import type { Hash } from '../../../types/misc.js'
|
4
|
-
import {
|
5
|
-
type EncodePackedErrorType,
|
6
|
-
encodePacked,
|
7
|
-
} from '../../../utils/abi/encodePacked.js'
|
8
|
-
import { type PadHexErrorType, padHex } from '../../../utils/data/pad.js'
|
9
|
-
import {
|
10
|
-
type NumberToHexErrorType,
|
11
|
-
numberToHex,
|
12
|
-
} from '../../../utils/encoding/toHex.js'
|
13
|
-
import type { Keccak256ErrorType } from '../../../utils/hash/keccak256.js'
|
14
|
-
|
15
|
-
export type ToAuthMessageParameters = {
|
16
|
-
chainId: number
|
17
|
-
commit: Hash
|
18
|
-
invokerAddress: Address
|
19
|
-
nonce: number
|
20
|
-
}
|
21
|
-
|
22
|
-
export type ToAuthMessageReturnType = Hash
|
23
|
-
|
24
|
-
export type ToAuthMessageErrorType =
|
25
|
-
| Keccak256ErrorType
|
26
|
-
| EncodePackedErrorType
|
27
|
-
| NumberToHexErrorType
|
28
|
-
| PadHexErrorType
|
29
|
-
| ErrorType
|
30
|
-
|
31
|
-
/**
|
32
|
-
* Returns the message to be signed for EIP-3074 authorization.
|
33
|
-
*/
|
34
|
-
export function toAuthMessage({
|
35
|
-
chainId,
|
36
|
-
commit,
|
37
|
-
invokerAddress,
|
38
|
-
nonce,
|
39
|
-
}: ToAuthMessageParameters): ToAuthMessageReturnType {
|
40
|
-
return encodePacked(
|
41
|
-
['uint8', 'bytes32', 'uint256', 'bytes32', 'bytes32'],
|
42
|
-
[
|
43
|
-
0x04, // MAGIC
|
44
|
-
numberToHex(chainId, { size: 32 }),
|
45
|
-
BigInt(nonce),
|
46
|
-
padHex(invokerAddress, { size: 32 }),
|
47
|
-
commit,
|
48
|
-
],
|
49
|
-
)
|
50
|
-
}
|
@@ -1,46 +0,0 @@
|
|
1
|
-
import type { Address } from 'abitype'
|
2
|
-
|
3
|
-
import type { ErrorType } from '../../../errors/utils.js'
|
4
|
-
import {
|
5
|
-
type GetAddressErrorType,
|
6
|
-
getAddress,
|
7
|
-
} from '../../../utils/address/getAddress.js'
|
8
|
-
import {
|
9
|
-
type IsAddressEqualErrorType,
|
10
|
-
isAddressEqual,
|
11
|
-
} from '../../../utils/address/isAddressEqual.js'
|
12
|
-
import {
|
13
|
-
type RecoverAuthMessageAddressErrorType,
|
14
|
-
type RecoverAuthMessageAddressParameters,
|
15
|
-
recoverAuthMessageAddress,
|
16
|
-
} from './recoverAuthMessageAddress.js'
|
17
|
-
|
18
|
-
export type VerifyAuthMessageParameters =
|
19
|
-
RecoverAuthMessageAddressParameters & {
|
20
|
-
/** The address that signed the original auth message. */
|
21
|
-
address: Address
|
22
|
-
}
|
23
|
-
|
24
|
-
export type VerifyAuthMessageReturnType = boolean
|
25
|
-
|
26
|
-
export type VerifyAuthMessageErrorType =
|
27
|
-
| IsAddressEqualErrorType
|
28
|
-
| GetAddressErrorType
|
29
|
-
| RecoverAuthMessageAddressErrorType
|
30
|
-
| ErrorType
|
31
|
-
|
32
|
-
/**
|
33
|
-
* Verify that a auth message was signed by the provided address.
|
34
|
-
*
|
35
|
-
* @param parameters - {@link VerifyAuthMessageParameters}
|
36
|
-
* @returns Whether or not the signature is valid. {@link VerifyAuthMessageReturnType}
|
37
|
-
*/
|
38
|
-
export async function verifyAuthMessage({
|
39
|
-
address,
|
40
|
-
...parameters
|
41
|
-
}: VerifyAuthMessageParameters): Promise<VerifyAuthMessageReturnType> {
|
42
|
-
return isAddressEqual(
|
43
|
-
getAddress(address),
|
44
|
-
await recoverAuthMessageAddress(parameters),
|
45
|
-
)
|
46
|
-
}
|