viem 2.21.58 → 2.21.60
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/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -1
- package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js +1 -1
- package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -1
- package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -1
- package/_cjs/account-abstraction/index.js.map +1 -1
- package/_cjs/account-abstraction/utils/errors/getUserOperationError.js.map +1 -1
- package/_cjs/actions/index.js +4 -2
- package/_cjs/actions/index.js.map +1 -1
- package/_cjs/actions/public/createAccessList.js +49 -0
- package/_cjs/actions/public/createAccessList.js.map +1 -0
- package/_cjs/clients/decorators/public.js +2 -0
- package/_cjs/clients/decorators/public.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/experimental/erc7821/actions/execute.js +78 -0
- package/_cjs/experimental/erc7821/actions/execute.js.map +1 -0
- package/_cjs/experimental/erc7821/actions/supportsExecutionMode.js +21 -0
- package/_cjs/experimental/erc7821/actions/supportsExecutionMode.js.map +1 -0
- package/_cjs/experimental/erc7821/constants.js +65 -0
- package/_cjs/experimental/erc7821/constants.js.map +1 -0
- package/_cjs/experimental/erc7821/decorators/erc7821.js +14 -0
- package/_cjs/experimental/erc7821/decorators/erc7821.js.map +1 -0
- package/_cjs/experimental/erc7821/errors.js +26 -0
- package/_cjs/experimental/erc7821/errors.js.map +1 -0
- package/_cjs/experimental/erc7821/index.js +13 -0
- package/_cjs/experimental/erc7821/index.js.map +1 -0
- package/_cjs/experimental/index.js +3 -1
- package/_cjs/experimental/index.js.map +1 -1
- package/_cjs/types/calls.js +3 -0
- package/_cjs/types/calls.js.map +1 -0
- package/_cjs/types/eip1193.js.map +1 -1
- package/_cjs/zksync/actions/deployContract.js +3 -1
- package/_cjs/zksync/actions/deployContract.js.map +1 -1
- package/_cjs/zksync/actions/getL1TokenAddress.js +21 -0
- package/_cjs/zksync/actions/getL1TokenAddress.js.map +1 -0
- package/_cjs/zksync/actions/getL2TokenAddress.js +25 -0
- package/_cjs/zksync/actions/getL2TokenAddress.js.map +1 -0
- package/_cjs/zksync/actions/sendEip712Transaction.js +3 -3
- package/_cjs/zksync/actions/sendEip712Transaction.js.map +1 -1
- package/_cjs/zksync/actions/signEip712Transaction.js +2 -2
- package/_cjs/zksync/actions/signEip712Transaction.js.map +1 -1
- package/_cjs/zksync/constants/abis.js +185 -1
- package/_cjs/zksync/constants/abis.js.map +1 -1
- package/_cjs/zksync/constants/address.js +2 -1
- package/_cjs/zksync/constants/address.js.map +1 -1
- package/_cjs/zksync/decorators/publicL2.js +4 -0
- package/_cjs/zksync/decorators/publicL2.js.map +1 -1
- package/_cjs/zksync/index.js +5 -1
- package/_cjs/zksync/index.js.map +1 -1
- package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -1
- package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js +1 -1
- package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -1
- package/_esm/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -1
- package/_esm/account-abstraction/index.js.map +1 -1
- package/_esm/account-abstraction/utils/errors/getUserOperationError.js.map +1 -1
- package/_esm/actions/index.js +1 -0
- package/_esm/actions/index.js.map +1 -1
- package/_esm/actions/public/createAccessList.js +72 -0
- package/_esm/actions/public/createAccessList.js.map +1 -0
- package/_esm/clients/decorators/public.js +2 -0
- package/_esm/clients/decorators/public.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/experimental/erc7821/actions/execute.js +143 -0
- package/_esm/experimental/erc7821/actions/execute.js.map +1 -0
- package/_esm/experimental/erc7821/actions/supportsExecutionMode.js +41 -0
- package/_esm/experimental/erc7821/actions/supportsExecutionMode.js.map +1 -0
- package/_esm/experimental/erc7821/constants.js +62 -0
- package/_esm/experimental/erc7821/constants.js.map +1 -0
- package/_esm/experimental/erc7821/decorators/erc7821.js +24 -0
- package/_esm/experimental/erc7821/decorators/erc7821.js.map +1 -0
- package/_esm/experimental/erc7821/errors.js +21 -0
- package/_esm/experimental/erc7821/errors.js.map +1 -0
- package/_esm/experimental/erc7821/index.js +7 -0
- package/_esm/experimental/erc7821/index.js.map +1 -0
- package/_esm/experimental/index.js +1 -0
- package/_esm/experimental/index.js.map +1 -1
- package/_esm/types/calls.js +2 -0
- package/_esm/types/calls.js.map +1 -0
- package/_esm/types/eip1193.js.map +1 -1
- package/_esm/zksync/actions/deployContract.js +5 -3
- package/_esm/zksync/actions/deployContract.js.map +1 -1
- package/_esm/zksync/actions/getL1TokenAddress.js +40 -0
- package/_esm/zksync/actions/getL1TokenAddress.js.map +1 -0
- package/_esm/zksync/actions/getL2TokenAddress.js +45 -0
- package/_esm/zksync/actions/getL2TokenAddress.js.map +1 -0
- package/_esm/zksync/actions/sendEip712Transaction.js +3 -3
- package/_esm/zksync/actions/sendEip712Transaction.js.map +1 -1
- package/_esm/zksync/actions/signEip712Transaction.js +4 -2
- package/_esm/zksync/actions/signEip712Transaction.js.map +1 -1
- package/_esm/zksync/constants/abis.js +184 -0
- package/_esm/zksync/constants/abis.js.map +1 -1
- package/_esm/zksync/constants/address.js +1 -0
- package/_esm/zksync/constants/address.js.map +1 -1
- package/_esm/zksync/decorators/publicL2.js +4 -0
- package/_esm/zksync/decorators/publicL2.js.map +1 -1
- package/_esm/zksync/index.js +2 -0
- package/_esm/zksync/index.js.map +1 -1
- package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts +3 -2
- package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts.map +1 -1
- package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts +3 -2
- package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts.map +1 -1
- package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts +3 -2
- package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts.map +1 -1
- package/_types/account-abstraction/index.d.ts +1 -1
- package/_types/account-abstraction/index.d.ts.map +1 -1
- package/_types/account-abstraction/types/userOperation.d.ts +2 -30
- package/_types/account-abstraction/types/userOperation.d.ts.map +1 -1
- package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts.map +1 -1
- package/_types/actions/index.d.ts +1 -0
- package/_types/actions/index.d.ts.map +1 -1
- package/_types/actions/public/createAccessList.d.ts +61 -0
- package/_types/actions/public/createAccessList.d.ts.map +1 -0
- package/_types/clients/decorators/public.d.ts +25 -0
- package/_types/clients/decorators/public.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/experimental/erc7821/actions/execute.d.ts +94 -0
- package/_types/experimental/erc7821/actions/execute.d.ts.map +1 -0
- package/_types/experimental/erc7821/actions/supportsExecutionMode.d.ts +37 -0
- package/_types/experimental/erc7821/actions/supportsExecutionMode.d.ts.map +1 -0
- package/_types/experimental/erc7821/constants.d.ts +48 -0
- package/_types/experimental/erc7821/constants.d.ts.map +1 -0
- package/_types/experimental/erc7821/decorators/erc7821.d.ts +116 -0
- package/_types/experimental/erc7821/decorators/erc7821.d.ts.map +1 -0
- package/_types/experimental/erc7821/errors.d.ts +14 -0
- package/_types/experimental/erc7821/errors.d.ts.map +1 -0
- package/_types/experimental/erc7821/index.d.ts +6 -0
- package/_types/experimental/erc7821/index.d.ts.map +1 -0
- package/_types/experimental/index.d.ts +1 -0
- package/_types/experimental/index.d.ts.map +1 -1
- package/_types/types/calls.d.ts +14 -0
- package/_types/types/calls.d.ts.map +1 -0
- package/_types/types/eip1193.d.ts +19 -0
- package/_types/types/eip1193.d.ts.map +1 -1
- package/_types/zksync/actions/deployContract.d.ts +1 -1
- package/_types/zksync/actions/deployContract.d.ts.map +1 -1
- package/_types/zksync/actions/getL1TokenAddress.d.ts +34 -0
- package/_types/zksync/actions/getL1TokenAddress.d.ts.map +1 -0
- package/_types/zksync/actions/getL2TokenAddress.d.ts +37 -0
- package/_types/zksync/actions/getL2TokenAddress.d.ts.map +1 -0
- package/_types/zksync/actions/sendEip712Transaction.d.ts.map +1 -1
- package/_types/zksync/actions/signEip712Transaction.d.ts +2 -0
- package/_types/zksync/actions/signEip712Transaction.d.ts.map +1 -1
- package/_types/zksync/constants/abis.d.ts +143 -0
- package/_types/zksync/constants/abis.d.ts.map +1 -1
- package/_types/zksync/constants/address.d.ts +1 -0
- package/_types/zksync/constants/address.d.ts.map +1 -1
- package/_types/zksync/decorators/publicL2.d.ts +46 -0
- package/_types/zksync/decorators/publicL2.d.ts.map +1 -1
- package/_types/zksync/index.d.ts +2 -0
- package/_types/zksync/index.d.ts.map +1 -1
- package/account-abstraction/actions/bundler/estimateUserOperationGas.ts +2 -4
- package/account-abstraction/actions/bundler/prepareUserOperation.ts +6 -10
- package/account-abstraction/actions/bundler/sendUserOperation.ts +2 -4
- package/account-abstraction/index.ts +0 -2
- package/account-abstraction/types/userOperation.ts +2 -72
- package/account-abstraction/utils/errors/getUserOperationError.ts +10 -16
- package/actions/index.ts +6 -0
- package/actions/public/createAccessList.ts +159 -0
- package/clients/decorators/public.ts +32 -0
- package/errors/version.ts +1 -1
- package/experimental/erc7821/actions/execute.ts +232 -0
- package/experimental/erc7821/actions/supportsExecutionMode.ts +60 -0
- package/experimental/erc7821/constants.ts +62 -0
- package/experimental/erc7821/decorators/erc7821.ts +149 -0
- package/experimental/erc7821/errors.ts +29 -0
- package/experimental/erc7821/index.ts +23 -0
- package/experimental/index.ts +5 -0
- package/package.json +6 -1
- package/types/calls.ts +38 -0
- package/types/eip1193.ts +21 -0
- package/zksync/actions/deployContract.ts +9 -3
- package/zksync/actions/getL1TokenAddress.ts +59 -0
- package/zksync/actions/getL2TokenAddress.ts +70 -0
- package/zksync/actions/sendEip712Transaction.ts +5 -3
- package/zksync/actions/signEip712Transaction.ts +5 -2
- package/zksync/constants/abis.ts +185 -0
- package/zksync/constants/address.ts +3 -0
- package/zksync/decorators/publicL2.ts +62 -0
- package/zksync/index.ts +10 -0
@@ -0,0 +1,72 @@
|
|
1
|
+
import { parseAccount, } from '../../accounts/utils/parseAccount.js';
|
2
|
+
import { numberToHex, } from '../../utils/encoding/toHex.js';
|
3
|
+
import { getCallError, } from '../../utils/errors/getCallError.js';
|
4
|
+
import { extract } from '../../utils/formatters/extract.js';
|
5
|
+
import { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';
|
6
|
+
import { assertRequest } from '../../utils/transaction/assertRequest.js';
|
7
|
+
/**
|
8
|
+
* Creates an EIP-2930 access list.
|
9
|
+
*
|
10
|
+
* - Docs: https://viem.sh/docs/actions/public/createAccessList
|
11
|
+
* - JSON-RPC Methods: `eth_createAccessList`
|
12
|
+
*
|
13
|
+
* @param client - Client to use
|
14
|
+
* @param parameters - {@link CreateAccessListParameters}
|
15
|
+
* @returns The access list. {@link CreateAccessListReturnType}
|
16
|
+
*
|
17
|
+
* @example
|
18
|
+
* import { createPublicClient, http } from 'viem'
|
19
|
+
* import { mainnet } from 'viem/chains'
|
20
|
+
* import { createAccessList } from 'viem/public'
|
21
|
+
*
|
22
|
+
* const client = createPublicClient({
|
23
|
+
* chain: mainnet,
|
24
|
+
* transport: http(),
|
25
|
+
* })
|
26
|
+
* const data = await createAccessList(client, {
|
27
|
+
* account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
|
28
|
+
* data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
29
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
30
|
+
* })
|
31
|
+
*/
|
32
|
+
export async function createAccessList(client, args) {
|
33
|
+
const { account: account_ = client.account, blockNumber, blockTag = 'latest', blobs, data, gas, gasPrice, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, to, value, ...rest } = args;
|
34
|
+
const account = account_ ? parseAccount(account_) : undefined;
|
35
|
+
try {
|
36
|
+
assertRequest(args);
|
37
|
+
const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined;
|
38
|
+
const block = blockNumberHex || blockTag;
|
39
|
+
const chainFormat = client.chain?.formatters?.transactionRequest?.format;
|
40
|
+
const format = chainFormat || formatTransactionRequest;
|
41
|
+
const request = format({
|
42
|
+
// Pick out extra data that might exist on the chain's transaction request type.
|
43
|
+
...extract(rest, { format: chainFormat }),
|
44
|
+
from: account?.address,
|
45
|
+
blobs,
|
46
|
+
data,
|
47
|
+
gas,
|
48
|
+
gasPrice,
|
49
|
+
maxFeePerBlobGas,
|
50
|
+
maxFeePerGas,
|
51
|
+
maxPriorityFeePerGas,
|
52
|
+
to,
|
53
|
+
value,
|
54
|
+
});
|
55
|
+
const response = await client.request({
|
56
|
+
method: 'eth_createAccessList',
|
57
|
+
params: [request, block],
|
58
|
+
});
|
59
|
+
return {
|
60
|
+
accessList: response.accessList,
|
61
|
+
gasUsed: BigInt(response.gasUsed),
|
62
|
+
};
|
63
|
+
}
|
64
|
+
catch (err) {
|
65
|
+
throw getCallError(err, {
|
66
|
+
...args,
|
67
|
+
account,
|
68
|
+
chain: client.chain,
|
69
|
+
});
|
70
|
+
}
|
71
|
+
}
|
72
|
+
//# sourceMappingURL=createAccessList.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"createAccessList.js","sourceRoot":"","sources":["../../../actions/public/createAccessList.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,YAAY,GACb,MAAM,sCAAsC,CAAA;AAU7C,OAAO,EAEL,WAAW,GACZ,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAEL,YAAY,GACb,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAGL,wBAAwB,GACzB,MAAM,8CAA8C,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAA;AA2CxE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAgC,EAChC,IAAuC;IAEvC,MAAM,EACJ,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAClC,WAAW,EACX,QAAQ,GAAG,QAAQ,EACnB,KAAK,EACL,IAAI,EACJ,GAAG,EACH,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,EAAE,EACF,KAAK,EACL,GAAG,IAAI,EACR,GAAG,IAAI,CAAA;IACR,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE7D,IAAI,CAAC;QACH,aAAa,CAAC,IAA+B,CAAC,CAAA;QAE9C,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzE,MAAM,KAAK,GAAG,cAAc,IAAI,QAAQ,CAAA;QAExC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,CAAA;QACxE,MAAM,MAAM,GAAG,WAAW,IAAI,wBAAwB,CAAA;QAEtD,MAAM,OAAO,GAAG,MAAM,CAAC;YACrB,gFAAgF;YAChF,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YACzC,IAAI,EAAE,OAAO,EAAE,OAAO;YACtB,KAAK;YACL,IAAI;YACJ,GAAG;YACH,QAAQ;YACR,gBAAgB;YAChB,YAAY;YACZ,oBAAoB;YACpB,EAAE;YACF,KAAK;SACgB,CAAuB,CAAA;QAE9C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YACpC,MAAM,EAAE,sBAAsB;YAC9B,MAAM,EAAE,CAAC,OAA8C,EAAE,KAAK,CAAC;SAChE,CAAC,CAAA;QACF,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;SAClC,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,CAAC,GAAgB,EAAE;YACnC,GAAG,IAAI;YACP,OAAO;YACP,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
|
@@ -4,6 +4,7 @@ import { getEnsName, } from '../../actions/ens/getEnsName.js';
|
|
4
4
|
import { getEnsResolver, } from '../../actions/ens/getEnsResolver.js';
|
5
5
|
import { getEnsText, } from '../../actions/ens/getEnsText.js';
|
6
6
|
import { call, } from '../../actions/public/call.js';
|
7
|
+
import { createAccessList, } from '../../actions/public/createAccessList.js';
|
7
8
|
import { createBlockFilter, } from '../../actions/public/createBlockFilter.js';
|
8
9
|
import { createContractEventFilter, } from '../../actions/public/createContractEventFilter.js';
|
9
10
|
import { createEventFilter, } from '../../actions/public/createEventFilter.js';
|
@@ -50,6 +51,7 @@ import { sendRawTransaction, } from '../../actions/wallet/sendRawTransaction.js'
|
|
50
51
|
export function publicActions(client) {
|
51
52
|
return {
|
52
53
|
call: (args) => call(client, args),
|
54
|
+
createAccessList: (args) => createAccessList(client, args),
|
53
55
|
createBlockFilter: () => createBlockFilter(client),
|
54
56
|
createContractEventFilter: (args) => createContractEventFilter(client, args),
|
55
57
|
createEventFilter: (args) => createEventFilter(client, args),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../clients/decorators/public.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../clients/decorators/public.ts"],"names":[],"mappings":"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"}
|
package/_esm/errors/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = '2.21.
|
1
|
+
export const version = '2.21.60';
|
2
2
|
//# sourceMappingURL=version.js.map
|
@@ -0,0 +1,143 @@
|
|
1
|
+
import * as AbiError from 'ox/AbiError';
|
2
|
+
import * as AbiParameters from 'ox/AbiParameters';
|
3
|
+
import { sendTransaction, } from '../../../actions/wallet/sendTransaction.js';
|
4
|
+
import { decodeErrorResult, } from '../../../utils/abi/decodeErrorResult.js';
|
5
|
+
import { encodeFunctionData, } from '../../../utils/abi/encodeFunctionData.js';
|
6
|
+
import { getContractError, } from '../../../utils/errors/getContractError.js';
|
7
|
+
import { abi, executionMode } from '../constants.js';
|
8
|
+
import { ExecuteUnsupportedError, FunctionSelectorNotRecognizedError, } from '../errors.js';
|
9
|
+
import { supportsExecutionMode } from './supportsExecutionMode.js';
|
10
|
+
/**
|
11
|
+
* Executes call(s) using the `execute` function on an [ERC-7821-compatible contract](https://eips.ethereum.org/EIPS/eip-7821).
|
12
|
+
*
|
13
|
+
* @example
|
14
|
+
* ```ts
|
15
|
+
* import { createClient, http } from 'viem'
|
16
|
+
* import { privateKeyToAccount } from 'viem/accounts'
|
17
|
+
* import { mainnet } from 'viem/chains'
|
18
|
+
* import { execute } from 'viem/experimental/erc7821'
|
19
|
+
*
|
20
|
+
* const account = privateKeyToAccount('0x...')
|
21
|
+
*
|
22
|
+
* const client = createClient({
|
23
|
+
* chain: mainnet,
|
24
|
+
* transport: http(),
|
25
|
+
* })
|
26
|
+
*
|
27
|
+
* const hash = await execute(client, {
|
28
|
+
* account,
|
29
|
+
* calls: [{
|
30
|
+
* {
|
31
|
+
* data: '0xdeadbeef',
|
32
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
33
|
+
* },
|
34
|
+
* {
|
35
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
36
|
+
* value: 69420n,
|
37
|
+
* },
|
38
|
+
* }],
|
39
|
+
* to: account.address,
|
40
|
+
* })
|
41
|
+
* ```
|
42
|
+
*
|
43
|
+
* @example
|
44
|
+
* ```ts
|
45
|
+
* // Account Hoisting
|
46
|
+
* import { createClient, http } from 'viem'
|
47
|
+
* import { privateKeyToAccount } from 'viem/accounts'
|
48
|
+
* import { mainnet } from 'viem/chains'
|
49
|
+
* import { execute } from 'viem/experimental/erc7821'
|
50
|
+
*
|
51
|
+
* const account = privateKeyToAccount('0x...')
|
52
|
+
*
|
53
|
+
* const client = createClient({
|
54
|
+
* account,
|
55
|
+
* chain: mainnet,
|
56
|
+
* transport: http(),
|
57
|
+
* })
|
58
|
+
*
|
59
|
+
* const hash = await execute(client, {
|
60
|
+
* calls: [{
|
61
|
+
* {
|
62
|
+
* data: '0xdeadbeef',
|
63
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
64
|
+
* },
|
65
|
+
* {
|
66
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
67
|
+
* value: 69420n,
|
68
|
+
* },
|
69
|
+
* }],
|
70
|
+
* to: account.address,
|
71
|
+
* })
|
72
|
+
* ```
|
73
|
+
*
|
74
|
+
* @param client - Client to use.
|
75
|
+
* @param parameters - {@link ExecuteParameters}
|
76
|
+
* @returns Transaction hash. {@link ExecuteReturnType}
|
77
|
+
*/
|
78
|
+
export async function execute(client, parameters) {
|
79
|
+
const { address, authorizationList, opData } = parameters;
|
80
|
+
const calls = parameters.calls.map((call_) => {
|
81
|
+
const call = call_;
|
82
|
+
return {
|
83
|
+
data: call.abi ? encodeFunctionData(call) : (call.data ?? '0x'),
|
84
|
+
value: call.value ?? 0n,
|
85
|
+
target: call.to,
|
86
|
+
};
|
87
|
+
});
|
88
|
+
const mode = opData ? executionMode.opData : executionMode.default;
|
89
|
+
const encodedCalls = AbiParameters.encode(AbiParameters.from([
|
90
|
+
'struct Call { address target; uint256 value; bytes data; }',
|
91
|
+
'Call[] calls',
|
92
|
+
...(opData ? ['bytes opData'] : []),
|
93
|
+
]), [calls, ...(opData ? [opData] : [])]);
|
94
|
+
const supported = await supportsExecutionMode(client, {
|
95
|
+
address: authorizationList?.[0]?.contractAddress ?? address,
|
96
|
+
opData,
|
97
|
+
});
|
98
|
+
if (!supported)
|
99
|
+
throw new ExecuteUnsupportedError();
|
100
|
+
try {
|
101
|
+
return await sendTransaction(client, {
|
102
|
+
...parameters,
|
103
|
+
to: address,
|
104
|
+
data: encodeFunctionData({
|
105
|
+
abi,
|
106
|
+
functionName: 'execute',
|
107
|
+
args: [mode, encodedCalls],
|
108
|
+
}),
|
109
|
+
});
|
110
|
+
}
|
111
|
+
catch (e) {
|
112
|
+
const error = e.walk((e) => 'data' in e);
|
113
|
+
if (!error?.data)
|
114
|
+
throw e;
|
115
|
+
if (error.data ===
|
116
|
+
AbiError.getSelector(AbiError.from('error FnSelectorNotRecognized()')))
|
117
|
+
throw new FunctionSelectorNotRecognizedError();
|
118
|
+
const matched = parameters.calls.find((call_) => {
|
119
|
+
const call = call_;
|
120
|
+
if (!call.abi)
|
121
|
+
return false;
|
122
|
+
try {
|
123
|
+
return Boolean(decodeErrorResult({
|
124
|
+
abi: call.abi,
|
125
|
+
data: error.data,
|
126
|
+
}));
|
127
|
+
}
|
128
|
+
catch {
|
129
|
+
return false;
|
130
|
+
}
|
131
|
+
});
|
132
|
+
if (!matched)
|
133
|
+
throw e;
|
134
|
+
throw getContractError(error, {
|
135
|
+
abi: matched.abi,
|
136
|
+
address: matched.to,
|
137
|
+
args: matched.args,
|
138
|
+
docsPath: '/experimental/erc7821/execute',
|
139
|
+
functionName: matched.functionName,
|
140
|
+
});
|
141
|
+
}
|
142
|
+
}
|
143
|
+
//# sourceMappingURL=execute.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../../experimental/erc7821/actions/execute.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import { readContract } from '../../../actions/public/readContract.js';
|
2
|
+
import { abi, executionMode } from '../constants.js';
|
3
|
+
/**
|
4
|
+
* Checks if the contract supports the ERC-7821 execution mode.
|
5
|
+
*
|
6
|
+
* @example
|
7
|
+
* ```ts
|
8
|
+
* import { createClient, http } from 'viem'
|
9
|
+
* import { mainnet } from 'viem/chains'
|
10
|
+
* import { supportsExecutionMode } from 'viem/experimental/erc7821'
|
11
|
+
*
|
12
|
+
* const client = createClient({
|
13
|
+
* chain: mainnet,
|
14
|
+
* transport: http(),
|
15
|
+
* })
|
16
|
+
*
|
17
|
+
* const supported = await supportsExecutionMode(client, {
|
18
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
19
|
+
* })
|
20
|
+
* ```
|
21
|
+
*
|
22
|
+
* @param client - Client to use.
|
23
|
+
* @param parameters - {@link SupportsExecutionModeParameters}
|
24
|
+
* @returns If the execution mode is supported. {@link SupportsExecutionModeReturnType}
|
25
|
+
*/
|
26
|
+
export async function supportsExecutionMode(client, parameters) {
|
27
|
+
const { address, opData } = parameters;
|
28
|
+
const mode = opData ? executionMode.opData : executionMode.default;
|
29
|
+
try {
|
30
|
+
return await readContract(client, {
|
31
|
+
abi,
|
32
|
+
address,
|
33
|
+
functionName: 'supportsExecutionMode',
|
34
|
+
args: [mode],
|
35
|
+
});
|
36
|
+
}
|
37
|
+
catch {
|
38
|
+
return false;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
//# sourceMappingURL=supportsExecutionMode.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"supportsExecutionMode.js","sourceRoot":"","sources":["../../../../experimental/erc7821/actions/supportsExecutionMode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAA;AAMtE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAWpD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAGzC,MAAgC,EAChC,UAA2C;IAE3C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAA;IAClE,IAAI,CAAC;QACH,OAAO,MAAM,YAAY,CAAC,MAAM,EAAE;YAChC,GAAG;YACH,OAAO;YACP,YAAY,EAAE,uBAAuB;YACrC,IAAI,EAAE,CAAC,IAAI,CAAC;SACb,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
export const abi = [
|
2
|
+
{
|
3
|
+
type: 'fallback',
|
4
|
+
stateMutability: 'payable',
|
5
|
+
},
|
6
|
+
{
|
7
|
+
type: 'receive',
|
8
|
+
stateMutability: 'payable',
|
9
|
+
},
|
10
|
+
{
|
11
|
+
type: 'function',
|
12
|
+
name: 'execute',
|
13
|
+
inputs: [
|
14
|
+
{
|
15
|
+
name: 'mode',
|
16
|
+
type: 'bytes32',
|
17
|
+
internalType: 'bytes32',
|
18
|
+
},
|
19
|
+
{
|
20
|
+
name: 'executionData',
|
21
|
+
type: 'bytes',
|
22
|
+
internalType: 'bytes',
|
23
|
+
},
|
24
|
+
],
|
25
|
+
outputs: [],
|
26
|
+
stateMutability: 'payable',
|
27
|
+
},
|
28
|
+
{
|
29
|
+
type: 'function',
|
30
|
+
name: 'supportsExecutionMode',
|
31
|
+
inputs: [
|
32
|
+
{
|
33
|
+
name: 'mode',
|
34
|
+
type: 'bytes32',
|
35
|
+
internalType: 'bytes32',
|
36
|
+
},
|
37
|
+
],
|
38
|
+
outputs: [
|
39
|
+
{
|
40
|
+
name: 'result',
|
41
|
+
type: 'bool',
|
42
|
+
internalType: 'bool',
|
43
|
+
},
|
44
|
+
],
|
45
|
+
stateMutability: 'view',
|
46
|
+
},
|
47
|
+
{
|
48
|
+
type: 'error',
|
49
|
+
name: 'FnSelectorNotRecognized',
|
50
|
+
inputs: [],
|
51
|
+
},
|
52
|
+
{
|
53
|
+
type: 'error',
|
54
|
+
name: 'UnsupportedExecutionMode',
|
55
|
+
inputs: [],
|
56
|
+
},
|
57
|
+
];
|
58
|
+
export const executionMode = {
|
59
|
+
default: '0x0100000000000000000000000000000000000000000000000000000000000000',
|
60
|
+
opData: '0x0100000000007821000100000000000000000000000000000000000000000000',
|
61
|
+
};
|
62
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../experimental/erc7821/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB;QACE,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,SAAS;KAC3B;IACD;QACE,IAAI,EAAE,SAAS;QACf,eAAe,EAAE,SAAS;KAC3B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,SAAS;aACxB;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,OAAO;aACtB;SACF;QACD,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,SAAS;KAC3B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,SAAS;aACxB;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;gBACZ,YAAY,EAAE,MAAM;aACrB;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,EAAE;KACX;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,EAAE;KACX;CACO,CAAA;AAEV,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,oEAAoE;IAC7E,MAAM,EAAE,oEAAoE;CACpE,CAAA"}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { execute, } from '../actions/execute.js';
|
2
|
+
import { supportsExecutionMode, } from '../actions/supportsExecutionMode.js';
|
3
|
+
/**
|
4
|
+
* A suite of Actions for [ERC-7821](https://eips.ethereum.org/EIPS/eip-7821).
|
5
|
+
*
|
6
|
+
* @example
|
7
|
+
* import { createClient, http } from 'viem'
|
8
|
+
* import { mainnet } from 'viem/chains'
|
9
|
+
* import { erc7821Actions } from 'viem/experimental'
|
10
|
+
*
|
11
|
+
* const client = createClient({
|
12
|
+
* chain: mainnet,
|
13
|
+
* transport: http(),
|
14
|
+
* }).extend(erc7821Actions())
|
15
|
+
*/
|
16
|
+
export function erc7821Actions() {
|
17
|
+
return (client) => {
|
18
|
+
return {
|
19
|
+
execute: (parameters) => execute(client, parameters),
|
20
|
+
supportsExecutionMode: (parameters) => supportsExecutionMode(client, parameters),
|
21
|
+
};
|
22
|
+
};
|
23
|
+
}
|
24
|
+
//# sourceMappingURL=erc7821.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"erc7821.js","sourceRoot":"","sources":["../../../../experimental/erc7821/decorators/erc7821.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,OAAO,GACR,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAGL,qBAAqB,GACtB,MAAM,qCAAqC,CAAA;AA4G5C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,CAKL,MAAyC,EACT,EAAE;QAClC,OAAO;YACL,OAAO,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;YACpD,qBAAqB,EAAE,CAAC,UAAU,EAAE,EAAE,CACpC,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC;SAC5C,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { BaseError } from '../../errors/base.js';
|
2
|
+
export class ExecuteUnsupportedError extends BaseError {
|
3
|
+
constructor() {
|
4
|
+
super('ERC-7821 execution is not supported.', {
|
5
|
+
name: 'ExecuteUnsupportedError',
|
6
|
+
});
|
7
|
+
}
|
8
|
+
}
|
9
|
+
export class FunctionSelectorNotRecognizedError extends BaseError {
|
10
|
+
constructor() {
|
11
|
+
super('Function is not recognized.', {
|
12
|
+
metaMessages: [
|
13
|
+
'This could be due to any of the following:',
|
14
|
+
' - The contract does not have the function,',
|
15
|
+
' - The address is not a contract.',
|
16
|
+
],
|
17
|
+
name: 'FunctionSelectorNotRecognizedError',
|
18
|
+
});
|
19
|
+
}
|
20
|
+
}
|
21
|
+
//# sourceMappingURL=errors.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../experimental/erc7821/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAKhD,MAAM,OAAO,uBAAwB,SAAQ,SAAS;IACpD;QACE,KAAK,CAAC,sCAAsC,EAAE;YAC5C,IAAI,EAAE,yBAAyB;SAChC,CAAC,CAAA;IACJ,CAAC;CACF;AAMD,MAAM,OAAO,kCAAmC,SAAQ,SAAS;IAC/D;QACE,KAAK,CAAC,6BAA6B,EAAE;YACnC,YAAY,EAAE;gBACZ,4CAA4C;gBAC5C,8CAA8C;gBAC9C,oCAAoC;aACrC;YACD,IAAI,EAAE,oCAAoC;SAC3C,CAAC,CAAA;IACJ,CAAC;CACF"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/** */
|
2
|
+
// biome-ignore lint/performance/noBarrelFile: entrypoint
|
3
|
+
export { execute, } from './actions/execute.js';
|
4
|
+
export { supportsExecutionMode, } from './actions/supportsExecutionMode.js';
|
5
|
+
export { ExecuteUnsupportedError, FunctionSelectorNotRecognizedError, } from './errors.js';
|
6
|
+
export { erc7821Actions } from './decorators/erc7821.js';
|
7
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../experimental/erc7821/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,yDAAyD;AACzD,OAAO,EAIL,OAAO,GACR,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAIL,qBAAqB,GACtB,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EACL,uBAAuB,EAEvB,kCAAkC,GAEnC,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAuB,cAAc,EAAE,MAAM,yBAAyB,CAAA"}
|
@@ -21,6 +21,7 @@ export {
|
|
21
21
|
/** @deprecated use `erc7715Actions` instead. */
|
22
22
|
erc7715Actions as walletActionsErc7715, erc7715Actions, } from './erc7715/decorators/erc7715.js';
|
23
23
|
export { erc7739Actions, } from './erc7739/decorators/erc7739.js';
|
24
|
+
export { erc7821Actions, } from './erc7821/decorators/erc7821.js';
|
24
25
|
export {
|
25
26
|
/** @deprecated This is no longer experimental – use `import { parseErc6492Signature } from 'viem'` instead. */
|
26
27
|
parseErc6492Signature, } from '../utils/signature/parseErc6492Signature.js';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../experimental/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAIL,eAAe,GAChB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAIL,SAAS,GACV,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAIL,cAAc,GACf,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAIL,eAAe,GAChB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAKL,cAAc,GACf,MAAM,qCAAqC,CAAA;AAC5C,OAAO;AAGL,gDAAgD;AAChD,cAAc,IAAI,oBAAoB,EAEtC,cAAc,GACf,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAEL,cAAc,GACf,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAIL,oBAAoB,GACrB,MAAM,2CAA2C,CAAA;AAClD,OAAO,EAIL,iBAAiB,GAClB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAON,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAGN,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAIL,iBAAiB,GAClB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAIL,2BAA2B,GAC5B,MAAM,gDAAgD,CAAA;AACvD,OAAO,EAGL,0BAA0B,GAC3B,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAIL,mBAAmB,GACpB,MAAM,wCAAwC,CAAA;AAE/C,OAAO,EAGL,gBAAgB,GACjB,MAAM,uCAAuC,CAAA;AAC9C,OAAO;AAGL,gDAAgD;AAChD,cAAc,IAAI,oBAAoB,EAEtC,cAAc,GACf,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAGL,cAAc,GACf,MAAM,iCAAiC,CAAA;AAExC,OAAO;AAOL,+GAA+G;AAC/G,qBAAqB,GACtB,MAAM,6CAA6C,CAAA;AACpD,OAAO;AAOL,4GAA4G;AAC5G,kBAAkB,GACnB,MAAM,0CAA0C,CAAA;AACjD,OAAO;AAOL,mHAAmH;AACnH,yBAAyB,GAC1B,MAAM,iDAAiD,CAAA"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../experimental/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAIL,eAAe,GAChB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAIL,SAAS,GACV,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAIL,cAAc,GACf,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAIL,eAAe,GAChB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAKL,cAAc,GACf,MAAM,qCAAqC,CAAA;AAC5C,OAAO;AAGL,gDAAgD;AAChD,cAAc,IAAI,oBAAoB,EAEtC,cAAc,GACf,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAEL,cAAc,GACf,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAIL,oBAAoB,GACrB,MAAM,2CAA2C,CAAA;AAClD,OAAO,EAIL,iBAAiB,GAClB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAON,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAGN,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAIL,iBAAiB,GAClB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAIL,2BAA2B,GAC5B,MAAM,gDAAgD,CAAA;AACvD,OAAO,EAGL,0BAA0B,GAC3B,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAIL,mBAAmB,GACpB,MAAM,wCAAwC,CAAA;AAE/C,OAAO,EAGL,gBAAgB,GACjB,MAAM,uCAAuC,CAAA;AAC9C,OAAO;AAGL,gDAAgD;AAChD,cAAc,IAAI,oBAAoB,EAEtC,cAAc,GACf,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAGL,cAAc,GACf,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAEL,cAAc,GACf,MAAM,iCAAiC,CAAA;AAExC,OAAO;AAOL,+GAA+G;AAC/G,qBAAqB,GACtB,MAAM,6CAA6C,CAAA;AACpD,OAAO;AAOL,4GAA4G;AAC5G,kBAAkB,GACnB,MAAM,0CAA0C,CAAA;AACjD,OAAO;AAOL,mHAAmH;AACnH,yBAAyB,GAC1B,MAAM,iDAAiD,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"calls.js","sourceRoot":"","sources":["../../types/calls.ts"],"names":[],"mappings":""}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"eip1193.js","sourceRoot":"","sources":["../../types/eip1193.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"eip1193.js","sourceRoot":"","sources":["../../types/eip1193.ts"],"names":[],"mappings":"AAiDA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAIzC,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAA;QAJhB;;;;;WAAY;QACZ;;;;;WAAe;QAIb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { contractDeployerAddress } from '../constants/address.js';
|
1
|
+
import { contract2FactoryAddress, contractDeployerAddress, } from '../constants/address.js';
|
2
2
|
import { encodeDeployData, } from '../utils/abi/encodeDeployData.js';
|
3
3
|
import { sendEip712Transaction, } from './sendEip712Transaction.js';
|
4
4
|
/**
|
@@ -6,7 +6,7 @@ import { sendEip712Transaction, } from './sendEip712Transaction.js';
|
|
6
6
|
*
|
7
7
|
* - Docs: https://viem.sh/docs/contract/deployContract
|
8
8
|
*
|
9
|
-
* @param
|
9
|
+
* @param walletClient - Client to use
|
10
10
|
* @param parameters - {@link DeployContractParameters}
|
11
11
|
* @returns The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link DeployContractReturnType}
|
12
12
|
*
|
@@ -46,7 +46,9 @@ export function deployContract(walletClient, parameters) {
|
|
46
46
|
return sendEip712Transaction(walletClient, {
|
47
47
|
...request,
|
48
48
|
data,
|
49
|
-
to:
|
49
|
+
to: deploymentType === 'create2' || deploymentType === 'create2Account'
|
50
|
+
? contract2FactoryAddress
|
51
|
+
: contractDeployerAddress,
|
50
52
|
});
|
51
53
|
}
|
52
54
|
//# sourceMappingURL=deployContract.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"deployContract.js","sourceRoot":"","sources":["../../../zksync/actions/deployContract.ts"],"names":[],"mappings":"AASA,OAAO,
|
1
|
+
{"version":3,"file":"deployContract.js","sourceRoot":"","sources":["../../../zksync/actions/deployContract.ts"],"names":[],"mappings":"AASA,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EAEL,gBAAgB,GACjB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAIL,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AAqBnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,cAAc,CAM5B,YAA+C,EAC/C,UAAwE;IAExE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,GAC7D,UAAsC,CAAA;IAExC,MAAM,IAAI,GAAG,gBAAgB,CAAC;QAC5B,GAAG;QACH,IAAI;QACJ,QAAQ;QACR,cAAc;QACd,IAAI;KACL,CAAC,CAAA;IAEF,gEAAgE;IAChE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAA;IAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEpC,OAAO,qBAAqB,CAAC,YAAY,EAAE;QACzC,GAAG,OAAO;QACV,IAAI;QACJ,EAAE,EACA,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,gBAAgB;YACjE,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,uBAAuB;KAK9B,CAAC,CAAA;AACJ,CAAC"}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { readContract } from '../../actions/public/readContract.js';
|
2
|
+
import { isAddressEqual } from '../../utils/index.js';
|
3
|
+
import { l2SharedBridgeAbi } from '../constants/abis.js';
|
4
|
+
import { legacyEthAddress } from '../constants/address.js';
|
5
|
+
import { getDefaultBridgeAddresses } from './getDefaultBridgeAddresses.js';
|
6
|
+
/**
|
7
|
+
* Returns the L1 token address equivalent for a L2 token address as they are not equal.
|
8
|
+
* ETH address is set to zero address.
|
9
|
+
*
|
10
|
+
* @remarks Only works for tokens bridged on default ZKsync Era bridges.
|
11
|
+
*
|
12
|
+
* @param client - Client to use
|
13
|
+
* @param parameters - {@link GetL1TokenAddressParameters}
|
14
|
+
* @returns The L1 token address equivalent for a L2 token address.
|
15
|
+
*
|
16
|
+
*
|
17
|
+
* @example
|
18
|
+
* import { createPublicClient, http } from 'viem'
|
19
|
+
* import { zksync } from 'viem/chains'
|
20
|
+
*
|
21
|
+
* const client = createPublicClient({
|
22
|
+
* chain: zksync,
|
23
|
+
* transport: http(),
|
24
|
+
* })
|
25
|
+
*
|
26
|
+
* const address = await getL1TokenAddress(client, {token: '0x...'});
|
27
|
+
*/
|
28
|
+
export async function getL1TokenAddress(client, parameters) {
|
29
|
+
const { token } = parameters;
|
30
|
+
if (isAddressEqual(token, legacyEthAddress))
|
31
|
+
return legacyEthAddress;
|
32
|
+
const bridgeAddress = (await getDefaultBridgeAddresses(client)).sharedL2;
|
33
|
+
return await readContract(client, {
|
34
|
+
address: bridgeAddress,
|
35
|
+
abi: l2SharedBridgeAbi,
|
36
|
+
functionName: 'l1TokenAddress',
|
37
|
+
args: [token],
|
38
|
+
});
|
39
|
+
}
|
40
|
+
//# sourceMappingURL=getL1TokenAddress.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getL1TokenAddress.js","sourceRoot":"","sources":["../../../zksync/actions/getL1TokenAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AAKnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAS1E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAIrC,MAAyC,EACzC,UAAuC;IAEvC,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;IAC5B,IAAI,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC;QAAE,OAAO,gBAAgB,CAAA;IAEpE,MAAM,aAAa,GAAG,CAAC,MAAM,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;IAExE,OAAO,MAAM,YAAY,CAAC,MAAM,EAAE;QAChC,OAAO,EAAE,aAAa;QACtB,GAAG,EAAE,iBAAiB;QACtB,YAAY,EAAE,gBAAgB;QAC9B,IAAI,EAAE,CAAC,KAAK,CAAC;KACd,CAAC,CAAA;AACJ,CAAC"}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import { readContract } from '../../actions/public/readContract.js';
|
2
|
+
import { isAddressEqual } from '../../utils/index.js';
|
3
|
+
import { l2SharedBridgeAbi } from '../constants/abis.js';
|
4
|
+
import { ethAddressInContracts, l2BaseTokenAddress, legacyEthAddress, } from '../constants/address.js';
|
5
|
+
import { getBaseTokenL1Address } from './getBaseTokenL1Address.js';
|
6
|
+
import { getDefaultBridgeAddresses } from './getDefaultBridgeAddresses.js';
|
7
|
+
/**
|
8
|
+
* Returns the L2 token address equivalent for a L1 token address as they are not equal.
|
9
|
+
* ETH address is set to zero address.
|
10
|
+
*
|
11
|
+
* @remarks Only works for tokens bridged on default ZKsync Era bridges.
|
12
|
+
*
|
13
|
+
* @param client - Client to use
|
14
|
+
* @param parameters - {@link GetL2TokenAddressParameters}
|
15
|
+
* @returns The L2 token address equivalent for a L1 token address.
|
16
|
+
*
|
17
|
+
*
|
18
|
+
* @example
|
19
|
+
* import { createPublicClient, http } from 'viem'
|
20
|
+
* import { zksync } from 'viem/chains'
|
21
|
+
* import { publicActionsL2 } from 'viem/zksync'
|
22
|
+
*
|
23
|
+
* const client = createPublicClient({
|
24
|
+
* chain: zksync,
|
25
|
+
* transport: http(),
|
26
|
+
* }).extend(publicActionsL2())
|
27
|
+
*
|
28
|
+
* const address = await getL2TokenAddress(client, {token: '0x...'});
|
29
|
+
*/
|
30
|
+
export async function getL2TokenAddress(client, parameters) {
|
31
|
+
let { token, bridgeAddress } = parameters;
|
32
|
+
if (isAddressEqual(token, legacyEthAddress))
|
33
|
+
token = ethAddressInContracts;
|
34
|
+
const baseToken = await getBaseTokenL1Address(client);
|
35
|
+
if (isAddressEqual(token, baseToken))
|
36
|
+
return l2BaseTokenAddress;
|
37
|
+
bridgeAddress ??= (await getDefaultBridgeAddresses(client)).sharedL2;
|
38
|
+
return await readContract(client, {
|
39
|
+
address: bridgeAddress,
|
40
|
+
abi: l2SharedBridgeAbi,
|
41
|
+
functionName: 'l2TokenAddress',
|
42
|
+
args: [token],
|
43
|
+
});
|
44
|
+
}
|
45
|
+
//# sourceMappingURL=getL2TokenAddress.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getL2TokenAddress.js","sourceRoot":"","sources":["../../../zksync/actions/getL2TokenAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AAKnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAW1E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAIrC,MAAyC,EACzC,UAAuC;IAEvC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,UAAU,CAAA;IACzC,IAAI,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC;QAAE,KAAK,GAAG,qBAAqB,CAAA;IAE1E,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAA;IACrD,IAAI,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;QAAE,OAAO,kBAAkB,CAAA;IAE/D,aAAa,KAAK,CAAC,MAAM,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;IAEpE,OAAO,MAAM,YAAY,CAAC,MAAM,EAAE;QAChC,OAAO,EAAE,aAAa;QACtB,GAAG,EAAE,iBAAiB;QACtB,YAAY,EAAE,gBAAgB;QAC9B,IAAI,EAAE,CAAC,KAAK,CAAC;KACd,CAAC,CAAA;AACJ,CAAC"}
|
@@ -49,12 +49,12 @@ import { signTransaction } from './signTransaction.js';
|
|
49
49
|
* })
|
50
50
|
*/
|
51
51
|
export async function sendEip712Transaction(client, parameters) {
|
52
|
-
const { chain = client.chain } = parameters;
|
53
|
-
|
52
|
+
const { account: account_ = client.account, chain = client.chain } = parameters;
|
53
|
+
const account = account_ ? parseAccount(account_) : client.account;
|
54
|
+
if (!account)
|
54
55
|
throw new AccountNotFoundError({
|
55
56
|
docsPath: '/docs/actions/wallet/sendTransaction',
|
56
57
|
});
|
57
|
-
const account = parseAccount(parameters.account);
|
58
58
|
try {
|
59
59
|
assertEip712Request(parameters);
|
60
60
|
// Prepare the request for signing (assign appropriate fees, etc.)
|