viem 2.22.17 → 2.22.20
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 +30 -0
- package/_cjs/actions/public/simulate.js +1 -1
- package/_cjs/actions/public/simulate.js.map +1 -1
- package/_cjs/chains/definitions/berachain.js +24 -0
- package/_cjs/chains/definitions/berachain.js.map +1 -0
- package/_cjs/chains/definitions/donatuz.js +29 -0
- package/_cjs/chains/definitions/donatuz.js.map +1 -0
- package/_cjs/chains/definitions/forta.js +25 -0
- package/_cjs/chains/definitions/forta.js.map +1 -0
- package/_cjs/chains/definitions/sidra.js +25 -0
- package/_cjs/chains/definitions/sidra.js.map +1 -0
- package/_cjs/chains/definitions/songbird.js +6 -0
- package/_cjs/chains/definitions/songbird.js.map +1 -1
- package/_cjs/chains/definitions/wmcTestnet.js +22 -0
- package/_cjs/chains/definitions/wmcTestnet.js.map +1 -0
- package/_cjs/chains/index.js +21 -11
- package/_cjs/chains/index.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/experimental/erc7821/actions/execute.js +13 -57
- package/_cjs/experimental/erc7821/actions/execute.js.map +1 -1
- package/_cjs/experimental/erc7821/actions/executeBatches.js +33 -0
- package/_cjs/experimental/erc7821/actions/executeBatches.js.map +1 -0
- package/_cjs/experimental/erc7821/actions/supportsExecutionMode.js +11 -3
- package/_cjs/experimental/erc7821/actions/supportsExecutionMode.js.map +1 -1
- package/_cjs/experimental/erc7821/constants.js +1 -0
- package/_cjs/experimental/erc7821/constants.js.map +1 -1
- package/_cjs/experimental/erc7821/decorators/erc7821.js +2 -0
- package/_cjs/experimental/erc7821/decorators/erc7821.js.map +1 -1
- package/_cjs/experimental/erc7821/index.js +11 -1
- package/_cjs/experimental/erc7821/index.js.map +1 -1
- package/_cjs/experimental/erc7821/utils/encodeCalls.js +21 -0
- package/_cjs/experimental/erc7821/utils/encodeCalls.js.map +1 -0
- package/_cjs/experimental/erc7821/utils/encodeExecuteBatchesData.js +22 -0
- package/_cjs/experimental/erc7821/utils/encodeExecuteBatchesData.js.map +1 -0
- package/_cjs/experimental/erc7821/utils/encodeExecuteData.js +17 -0
- package/_cjs/experimental/erc7821/utils/encodeExecuteData.js.map +1 -0
- package/_cjs/experimental/erc7821/utils/getExecuteError.js +40 -0
- package/_cjs/experimental/erc7821/utils/getExecuteError.js.map +1 -0
- package/_esm/actions/public/simulate.js +1 -1
- package/_esm/actions/public/simulate.js.map +1 -1
- package/_esm/chains/definitions/berachain.js +21 -0
- package/_esm/chains/definitions/berachain.js.map +1 -0
- package/_esm/chains/definitions/donatuz.js +26 -0
- package/_esm/chains/definitions/donatuz.js.map +1 -0
- package/_esm/chains/definitions/forta.js +22 -0
- package/_esm/chains/definitions/forta.js.map +1 -0
- package/_esm/chains/definitions/sidra.js +22 -0
- package/_esm/chains/definitions/sidra.js.map +1 -0
- package/_esm/chains/definitions/songbird.js +6 -0
- package/_esm/chains/definitions/songbird.js.map +1 -1
- package/_esm/chains/definitions/wmcTestnet.js +19 -0
- package/_esm/chains/definitions/wmcTestnet.js.map +1 -0
- package/_esm/chains/index.js +5 -0
- package/_esm/chains/index.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/experimental/erc7821/actions/execute.js +15 -59
- package/_esm/experimental/erc7821/actions/execute.js.map +1 -1
- package/_esm/experimental/erc7821/actions/executeBatches.js +121 -0
- package/_esm/experimental/erc7821/actions/executeBatches.js.map +1 -0
- package/_esm/experimental/erc7821/actions/supportsExecutionMode.js +11 -3
- package/_esm/experimental/erc7821/actions/supportsExecutionMode.js.map +1 -1
- package/_esm/experimental/erc7821/constants.js +1 -0
- package/_esm/experimental/erc7821/constants.js.map +1 -1
- package/_esm/experimental/erc7821/decorators/erc7821.js +2 -0
- package/_esm/experimental/erc7821/decorators/erc7821.js.map +1 -1
- package/_esm/experimental/erc7821/index.js +5 -1
- package/_esm/experimental/erc7821/index.js.map +1 -1
- package/_esm/experimental/erc7821/utils/encodeCalls.js +18 -0
- package/_esm/experimental/erc7821/utils/encodeCalls.js.map +1 -0
- package/_esm/experimental/erc7821/utils/encodeExecuteBatchesData.js +19 -0
- package/_esm/experimental/erc7821/utils/encodeExecuteBatchesData.js.map +1 -0
- package/_esm/experimental/erc7821/utils/encodeExecuteData.js +14 -0
- package/_esm/experimental/erc7821/utils/encodeExecuteData.js.map +1 -0
- package/_esm/experimental/erc7821/utils/getExecuteError.js +37 -0
- package/_esm/experimental/erc7821/utils/getExecuteError.js.map +1 -0
- package/_types/actions/public/simulate.d.ts.map +1 -1
- package/_types/chains/definitions/berachain.d.ts +37 -0
- package/_types/chains/definitions/berachain.d.ts.map +1 -0
- package/_types/chains/definitions/donatuz.d.ts +33 -0
- package/_types/chains/definitions/donatuz.d.ts.map +1 -0
- package/_types/chains/definitions/forta.d.ts +37 -0
- package/_types/chains/definitions/forta.d.ts.map +1 -0
- package/_types/chains/definitions/sidra.d.ts +37 -0
- package/_types/chains/definitions/sidra.d.ts.map +1 -0
- package/_types/chains/definitions/songbird.d.ts +6 -10
- package/_types/chains/definitions/songbird.d.ts.map +1 -1
- package/_types/chains/definitions/wmcTestnet.d.ts +37 -0
- package/_types/chains/definitions/wmcTestnet.d.ts.map +1 -0
- package/_types/chains/index.d.ts +5 -0
- package/_types/chains/index.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/experimental/erc7821/actions/execute.d.ts +3 -4
- package/_types/experimental/erc7821/actions/execute.d.ts.map +1 -1
- package/_types/experimental/erc7821/actions/executeBatches.d.ts +121 -0
- package/_types/experimental/erc7821/actions/executeBatches.d.ts.map +1 -0
- package/_types/experimental/erc7821/actions/supportsExecutionMode.d.ts +1 -1
- package/_types/experimental/erc7821/actions/supportsExecutionMode.d.ts.map +1 -1
- package/_types/experimental/erc7821/constants.d.ts +1 -0
- package/_types/experimental/erc7821/constants.d.ts.map +1 -1
- package/_types/experimental/erc7821/decorators/erc7821.d.ts +93 -0
- package/_types/experimental/erc7821/decorators/erc7821.d.ts.map +1 -1
- package/_types/experimental/erc7821/index.d.ts +5 -1
- package/_types/experimental/erc7821/index.d.ts.map +1 -1
- package/_types/experimental/erc7821/utils/encodeCalls.d.ts +8 -0
- package/_types/experimental/erc7821/utils/encodeCalls.d.ts.map +1 -0
- package/_types/experimental/erc7821/utils/encodeExecuteBatchesData.d.ts +21 -0
- package/_types/experimental/erc7821/utils/encodeExecuteBatchesData.d.ts.map +1 -0
- package/_types/experimental/erc7821/utils/encodeExecuteData.d.ts +16 -0
- package/_types/experimental/erc7821/utils/encodeExecuteData.d.ts.map +1 -0
- package/_types/experimental/erc7821/utils/getExecuteError.d.ts +12 -0
- package/_types/experimental/erc7821/utils/getExecuteError.d.ts.map +1 -0
- package/_types/types/calls.d.ts +21 -0
- package/_types/types/calls.d.ts.map +1 -1
- package/actions/public/simulate.ts +8 -7
- package/chains/definitions/berachain.ts +20 -0
- package/chains/definitions/donatuz.ts +26 -0
- package/chains/definitions/forta.ts +22 -0
- package/chains/definitions/sidra.ts +22 -0
- package/chains/definitions/songbird.ts +6 -0
- package/chains/definitions/wmcTestnet.ts +19 -0
- package/chains/index.ts +5 -0
- package/errors/version.ts +1 -1
- package/experimental/erc7821/actions/execute.ts +28 -89
- package/experimental/erc7821/actions/executeBatches.ts +194 -0
- package/experimental/erc7821/actions/supportsExecutionMode.ts +22 -9
- package/experimental/erc7821/constants.ts +2 -0
- package/experimental/erc7821/decorators/erc7821.ts +109 -0
- package/experimental/erc7821/index.ts +28 -1
- package/experimental/erc7821/utils/encodeCalls.ts +38 -0
- package/experimental/erc7821/utils/encodeExecuteBatchesData.ts +48 -0
- package/experimental/erc7821/utils/encodeExecuteData.ts +42 -0
- package/experimental/erc7821/utils/getExecuteError.ts +66 -0
- package/package.json +1 -1
- package/types/calls.ts +18 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
import type { Narrow } from 'abitype';
|
2
|
+
import type { ErrorType } from '../../../errors/utils.js';
|
3
|
+
import type { Calls } from '../../../types/calls.js';
|
4
|
+
import type { Hex } from '../../../types/misc.js';
|
5
|
+
import { type EncodeFunctionDataErrorType } from '../../../utils/abi/encodeFunctionData.js';
|
6
|
+
import { type EncodeCallsErrorType } from './encodeCalls.js';
|
7
|
+
export type EncodeExecuteDataParameters<calls extends readonly unknown[] = readonly unknown[]> = {
|
8
|
+
/** Calls to execute. */
|
9
|
+
calls: Calls<Narrow<calls>>;
|
10
|
+
/** Additional data to include for execution. */
|
11
|
+
opData?: Hex | undefined;
|
12
|
+
};
|
13
|
+
export type EncodeExecuteDataReturnType = Hex;
|
14
|
+
export type EncodeExecuteDataErrorType = EncodeCallsErrorType | EncodeFunctionDataErrorType | ErrorType;
|
15
|
+
export declare function encodeExecuteData<const calls extends readonly unknown[]>(parameters: EncodeExecuteDataParameters<calls>): EncodeExecuteDataReturnType;
|
16
|
+
//# sourceMappingURL=encodeExecuteData.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"encodeExecuteData.d.ts","sourceRoot":"","sources":["../../../../experimental/erc7821/utils/encodeExecuteData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,0CAA0C,CAAA;AAEjD,OAAO,EAAE,KAAK,oBAAoB,EAAe,MAAM,kBAAkB,CAAA;AAEzE,MAAM,MAAM,2BAA2B,CACrC,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,IACnD;IACF,wBAAwB;IACxB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3B,gDAAgD;IAChD,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,GAAG,CAAA;AAE7C,MAAM,MAAM,0BAA0B,GAClC,oBAAoB,GACpB,2BAA2B,GAC3B,SAAS,CAAA;AAEb,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EACtE,UAAU,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAC7C,2BAA2B,CAW7B"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import type { Narrow } from 'abitype';
|
2
|
+
import type { BaseError } from '../../../errors/base.js';
|
3
|
+
import type { Calls } from '../../../types/calls.js';
|
4
|
+
import { type GetContractErrorReturnType } from '../../../utils/errors/getContractError.js';
|
5
|
+
import { type FunctionSelectorNotRecognizedErrorType } from '../errors.js';
|
6
|
+
export type GetExecuteErrorParameters<calls extends readonly unknown[] = readonly unknown[]> = {
|
7
|
+
/** Calls to execute. */
|
8
|
+
calls: Calls<Narrow<calls>>;
|
9
|
+
};
|
10
|
+
export type GetExecuteErrorReturnType = FunctionSelectorNotRecognizedErrorType | GetContractErrorReturnType;
|
11
|
+
export declare function getExecuteError<const calls extends readonly unknown[]>(e: BaseError, parameters: GetExecuteErrorParameters<calls>): GetExecuteErrorReturnType;
|
12
|
+
//# sourceMappingURL=getExecuteError.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getExecuteError.d.ts","sourceRoot":"","sources":["../../../../experimental/erc7821/utils/getExecuteError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,MAAM,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAQ,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAG1D,OAAO,EACL,KAAK,0BAA0B,EAEhC,MAAM,2CAA2C,CAAA;AAClD,OAAO,EAEL,KAAK,sCAAsC,EAC5C,MAAM,cAAc,CAAA;AAErB,MAAM,MAAM,yBAAyB,CACnC,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,IACnD;IACF,wBAAwB;IACxB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,yBAAyB,GACjC,sCAAsC,GACtC,0BAA0B,CAAA;AAE9B,wBAAgB,eAAe,CAAC,KAAK,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EACpE,CAAC,EAAE,SAAS,EACZ,UAAU,EAAE,yBAAyB,CAAC,KAAK,CAAC,GAC3C,yBAAyB,CAmC3B"}
|
package/_types/types/calls.d.ts
CHANGED
@@ -16,4 +16,25 @@ export type Calls<calls extends readonly unknown[], extraProperties extends Reco
|
|
16
16
|
...result,
|
17
17
|
Prettify<Call<call, extraProperties>>
|
18
18
|
]> : readonly unknown[] extends calls ? calls : calls extends readonly (infer call extends OneOf<Call>)[] ? readonly Prettify<call>[] : readonly OneOf<Call>[];
|
19
|
+
export type Batches<batches extends readonly {
|
20
|
+
calls: readonly unknown[];
|
21
|
+
}[], properties extends Record<string, any> = {}, result extends readonly any[] = []> = batches extends readonly [infer batch extends {
|
22
|
+
calls: readonly unknown[];
|
23
|
+
}] ? [...result, {
|
24
|
+
calls: Calls<batch['calls']>;
|
25
|
+
} & properties] : batches extends readonly [
|
26
|
+
infer batch extends {
|
27
|
+
calls: readonly unknown[];
|
28
|
+
},
|
29
|
+
...infer rest extends readonly {
|
30
|
+
calls: readonly unknown[];
|
31
|
+
}[]
|
32
|
+
] ? Batches<[
|
33
|
+
...rest
|
34
|
+
], properties, [
|
35
|
+
...result,
|
36
|
+
{
|
37
|
+
calls: Calls<batch['calls']>;
|
38
|
+
} & properties
|
39
|
+
]> : batches;
|
19
40
|
//# sourceMappingURL=calls.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../types/calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,MAAM,IAAI,CACd,IAAI,GAAG,OAAO,EACd,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,IAClD,KAAK,CACL,CAAC,eAAe,GAAG;IACjB,IAAI,CAAC,EAAE,GAAG,GAAG,SAAS,CAAA;IACtB,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3B,CAAC,GACF,CAAC,eAAe,GACd,CAAC,IAAI,CACH,8BAA8B,CAAC,IAAI,EAAE,kBAAkB,CAAC,EACxD,SAAS,CACV,GAAG;IACF,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3B,CAAC,CAAC,CACR,CAAA;AAED,MAAM,MAAM,KAAK,CACf,KAAK,SAAS,SAAS,OAAO,EAAE,EAChC,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EAEpD,MAAM,SAAS,SAAS,GAAG,EAAE,GAAG,EAAE,IAChC,KAAK,SAAS,SAAS,EAAE,GACzB,SAAS,EAAE,GACX,KAAK,SAAS,SAAS,CAAC,MAAM,IAAI,CAAC,GACjC,SAAS,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3D,KAAK,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAChD,KAAK,CACH;IAAC,GAAG,IAAI;CAAC,EACT,eAAe,EACf;IAAC,GAAG,MAAM;IAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;CAAC,CACnD,GACD,SAAS,OAAO,EAAE,SAAS,KAAK,GAC9B,KAAK,GAGL,KAAK,SAAS,SAAS,CAAC,MAAM,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GACvD,SAAS,QAAQ,CAAC,IAAI,CAAC,EAAE,GAEzB,SAAS,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA"}
|
1
|
+
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../types/calls.ts"],"names":[],"mappings":"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"}
|
@@ -242,13 +242,14 @@ export async function simulate<
|
|
242
242
|
const logs = call.logs?.map((log) => formatLog(log))
|
243
243
|
const status = call.status === '0x1' ? 'success' : 'failure'
|
244
244
|
|
245
|
-
const result =
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
245
|
+
const result =
|
246
|
+
abi && status === 'success'
|
247
|
+
? decodeFunctionResult({
|
248
|
+
abi,
|
249
|
+
data,
|
250
|
+
functionName,
|
251
|
+
})
|
252
|
+
: null
|
252
253
|
|
253
254
|
const error = (() => {
|
254
255
|
if (status === 'success') return undefined
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { defineChain } from '../../utils/chain/defineChain.js'
|
2
|
+
export const berachain = /*#__PURE__*/ defineChain({
|
3
|
+
id: 80094,
|
4
|
+
name: 'Berachain',
|
5
|
+
nativeCurrency: {
|
6
|
+
decimals: 18,
|
7
|
+
name: 'BERA Token',
|
8
|
+
symbol: 'BERA',
|
9
|
+
},
|
10
|
+
rpcUrls: {
|
11
|
+
default: { http: ['https://rpc.berachain.com'] },
|
12
|
+
},
|
13
|
+
blockExplorers: {
|
14
|
+
default: {
|
15
|
+
name: 'Berascan',
|
16
|
+
url: 'https://berascan.com',
|
17
|
+
},
|
18
|
+
},
|
19
|
+
testnet: false,
|
20
|
+
})
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { defineChain } from '../../utils/chain/defineChain.js'
|
2
|
+
|
3
|
+
export const donatuz = /*#__PURE__*/ defineChain({
|
4
|
+
id: 42_026,
|
5
|
+
name: 'Donatuz',
|
6
|
+
nativeCurrency: {
|
7
|
+
decimals: 18,
|
8
|
+
name: 'Ether',
|
9
|
+
symbol: 'ETH',
|
10
|
+
},
|
11
|
+
rpcUrls: {
|
12
|
+
default: { http: ['ttps://rpc.donatuz.com'] },
|
13
|
+
},
|
14
|
+
blockExplorers: {
|
15
|
+
default: {
|
16
|
+
name: 'Donatuz Explorer',
|
17
|
+
url: 'https://explorer.donatuz.com',
|
18
|
+
},
|
19
|
+
},
|
20
|
+
contracts: {
|
21
|
+
multicall3: {
|
22
|
+
address: '0xca11bde05977b3631167028862be2a173976ca11',
|
23
|
+
blockCreated: 0,
|
24
|
+
},
|
25
|
+
},
|
26
|
+
})
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { defineChain } from '../../utils/chain/defineChain.js'
|
2
|
+
|
3
|
+
export const forta = /*#__PURE__*/ defineChain({
|
4
|
+
id: 80_931,
|
5
|
+
name: 'Forta Chain',
|
6
|
+
nativeCurrency: {
|
7
|
+
symbol: 'FORT',
|
8
|
+
name: 'FORT',
|
9
|
+
decimals: 18,
|
10
|
+
},
|
11
|
+
rpcUrls: {
|
12
|
+
default: {
|
13
|
+
http: ['https://rpc-forta-chain-8gj1qndmfc.t.conduit.xyz'],
|
14
|
+
},
|
15
|
+
},
|
16
|
+
blockExplorers: {
|
17
|
+
default: {
|
18
|
+
name: 'Forta Explorer',
|
19
|
+
url: 'https://explorer.forta.org',
|
20
|
+
},
|
21
|
+
},
|
22
|
+
})
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { defineChain } from '../../utils/chain/defineChain.js'
|
2
|
+
|
3
|
+
export const sidraChain = /*#__PURE__*/ defineChain({
|
4
|
+
id: 97_453,
|
5
|
+
name: 'Sidra Chain',
|
6
|
+
nativeCurrency: {
|
7
|
+
decimals: 18,
|
8
|
+
name: 'Sidra Digital Asset',
|
9
|
+
symbol: 'SDA',
|
10
|
+
},
|
11
|
+
rpcUrls: {
|
12
|
+
default: {
|
13
|
+
http: ['https://node.sidrachain.com'],
|
14
|
+
},
|
15
|
+
},
|
16
|
+
blockExplorers: {
|
17
|
+
default: {
|
18
|
+
name: 'Sidra Chain Explorer',
|
19
|
+
url: 'https://ledger.sidrachain.com',
|
20
|
+
},
|
21
|
+
},
|
22
|
+
})
|
@@ -18,4 +18,10 @@ export const songbird = /*#__PURE__*/ defineChain({
|
|
18
18
|
apiUrl: 'https://songbird-explorer.flare.network/api',
|
19
19
|
},
|
20
20
|
},
|
21
|
+
contracts: {
|
22
|
+
multicall3: {
|
23
|
+
address: '0xcA11bde05977b3631167028862bE2a173976CA11',
|
24
|
+
blockCreated: 13382504,
|
25
|
+
},
|
26
|
+
},
|
21
27
|
})
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { defineChain } from '../../utils/chain/defineChain.js'
|
2
|
+
|
3
|
+
export const wmcTestnet = /*#__PURE__*/ defineChain({
|
4
|
+
id: 42070,
|
5
|
+
name: 'WMC Testnet',
|
6
|
+
nativeCurrency: { name: 'WMTx', symbol: 'WMTx', decimals: 18 },
|
7
|
+
rpcUrls: {
|
8
|
+
default: {
|
9
|
+
http: ['https://rpc-testnet-base.worldmobile.net'],
|
10
|
+
},
|
11
|
+
},
|
12
|
+
blockExplorers: {
|
13
|
+
default: {
|
14
|
+
name: 'WMC Explorer',
|
15
|
+
url: 'https://explorer2-base-testnet.worldmobile.net',
|
16
|
+
},
|
17
|
+
},
|
18
|
+
testnet: true,
|
19
|
+
})
|
package/chains/index.ts
CHANGED
@@ -47,6 +47,7 @@ export { beam } from './definitions/beam.js'
|
|
47
47
|
export { beamTestnet } from './definitions/beamTestnet.js'
|
48
48
|
export { bearNetworkChainMainnet } from './definitions/bearNetworkChainMainnet.js'
|
49
49
|
export { bearNetworkChainTestnet } from './definitions/bearNetworkChainTestnet.js'
|
50
|
+
export { berachain } from './definitions/berachain.js'
|
50
51
|
export { berachainTestnet } from './definitions/berachainTestnet.js'
|
51
52
|
export { berachainTestnetbArtio } from './definitions/berachainTestnetbArtio.js'
|
52
53
|
export { bevmMainnet } from './definitions/bevmMainnet.js'
|
@@ -121,6 +122,7 @@ export { diode } from './definitions/diode.js'
|
|
121
122
|
export { disChain } from './definitions/disChain.js'
|
122
123
|
export { dodochainTestnet } from './definitions/dodochainTestnet.js'
|
123
124
|
export { dogechain } from './definitions/dogechain.js'
|
125
|
+
export { donatuz } from './definitions/donatuz.js'
|
124
126
|
export { dosChain } from './definitions/dosChain.js'
|
125
127
|
export { dosChainTestnet } from './definitions/dosChainTestnet.js'
|
126
128
|
export { dreyerxMainnet } from './definitions/dreyerxMainnet.js'
|
@@ -171,6 +173,7 @@ export { fluence } from './definitions/fluence.js'
|
|
171
173
|
export { fluenceStage } from './definitions/fluenceStage.js'
|
172
174
|
export { fluenceTestnet } from './definitions/fluenceTestnet.js'
|
173
175
|
export { forma } from './definitions/forma.js'
|
176
|
+
export { forta } from './definitions/forta.js'
|
174
177
|
/** @deprecated Use `anvil` instead. */
|
175
178
|
export { foundry } from './definitions/foundry.js'
|
176
179
|
export { fraxtal } from './definitions/fraxtal.js'
|
@@ -401,6 +404,7 @@ export { shibariumTestnet } from './definitions/shibariumTestnet.js'
|
|
401
404
|
export { shiden } from './definitions/shiden.js'
|
402
405
|
export { shimmer } from './definitions/shimmer.js'
|
403
406
|
export { shimmerTestnet } from './definitions/shimmerTestnet.js'
|
407
|
+
export { sidraChain } from './definitions/sidra.js'
|
404
408
|
export { silicon } from './definitions/silicon.js'
|
405
409
|
export { siliconSepolia } from './definitions/siliconSepolia.js'
|
406
410
|
export { sixProtocol } from './definitions/sixProtocol.js'
|
@@ -490,6 +494,7 @@ export { wanchainTestnet } from './definitions/wanchainTestnet.js'
|
|
490
494
|
export { weaveVMAlphanet } from './definitions/weavevmAlphanet.js'
|
491
495
|
export { wemix } from './definitions/wemix.js'
|
492
496
|
export { wemixTestnet } from './definitions/wemixTestnet.js'
|
497
|
+
export { wmcTestnet } from './definitions/wmcTestnet.js'
|
493
498
|
export { worldchain } from './definitions/worldchain.js'
|
494
499
|
export { worldchainSepolia } from './definitions/worldchainSepolia.js'
|
495
500
|
export { worldLand } from './definitions/worldLand.js'
|
package/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '2.22.
|
1
|
+
export const version = '2.22.20'
|
@@ -1,6 +1,4 @@
|
|
1
|
-
import type {
|
2
|
-
import * as AbiError from 'ox/AbiError'
|
3
|
-
import * as AbiParameters from 'ox/AbiParameters'
|
1
|
+
import type { Address, Narrow } from 'abitype'
|
4
2
|
|
5
3
|
import {
|
6
4
|
type SendTransactionErrorType,
|
@@ -11,7 +9,7 @@ import type { Transport } from '../../../clients/transports/createTransport.js'
|
|
11
9
|
import type { BaseError } from '../../../errors/base.js'
|
12
10
|
import type { ErrorType } from '../../../errors/utils.js'
|
13
11
|
import type { Account, GetAccountParameter } from '../../../types/account.js'
|
14
|
-
import type {
|
12
|
+
import type { Calls } from '../../../types/calls.js'
|
15
13
|
import type {
|
16
14
|
Chain,
|
17
15
|
DeriveChain,
|
@@ -19,24 +17,18 @@ import type {
|
|
19
17
|
} from '../../../types/chain.js'
|
20
18
|
import type { Hex } from '../../../types/misc.js'
|
21
19
|
import type { UnionEvaluate, UnionPick } from '../../../types/utils.js'
|
22
|
-
import {
|
23
|
-
type DecodeErrorResultErrorType,
|
24
|
-
decodeErrorResult,
|
25
|
-
} from '../../../utils/abi/decodeErrorResult.js'
|
26
|
-
import {
|
27
|
-
type EncodeFunctionDataErrorType,
|
28
|
-
encodeFunctionData,
|
29
|
-
} from '../../../utils/abi/encodeFunctionData.js'
|
30
|
-
import {
|
31
|
-
type GetContractErrorReturnType,
|
32
|
-
getContractError,
|
33
|
-
} from '../../../utils/errors/getContractError.js'
|
34
20
|
import type { FormattedTransactionRequest } from '../../../utils/formatters/transactionRequest.js'
|
35
|
-
import {
|
21
|
+
import { withCache } from '../../../utils/promise/withCache.js'
|
22
|
+
import { executionMode } from '../constants.js'
|
23
|
+
import { ExecuteUnsupportedError } from '../errors.js'
|
36
24
|
import {
|
37
|
-
|
38
|
-
|
39
|
-
} from '../
|
25
|
+
type EncodeExecuteDataErrorType,
|
26
|
+
encodeExecuteData,
|
27
|
+
} from '../utils/encodeExecuteData.js'
|
28
|
+
import {
|
29
|
+
type GetExecuteErrorReturnType,
|
30
|
+
getExecuteError,
|
31
|
+
} from '../utils/getExecuteError.js'
|
40
32
|
import { supportsExecutionMode } from './supportsExecutionMode.js'
|
41
33
|
|
42
34
|
export type ExecuteParameters<
|
@@ -68,9 +60,8 @@ export type ExecuteParameters<
|
|
68
60
|
export type ExecuteReturnType = Hex
|
69
61
|
|
70
62
|
export type ExecuteErrorType =
|
71
|
-
|
|
72
|
-
|
|
73
|
-
| EncodeFunctionDataErrorType
|
63
|
+
| GetExecuteErrorReturnType
|
64
|
+
| EncodeExecuteDataErrorType
|
74
65
|
| SendTransactionErrorType
|
75
66
|
| ErrorType
|
76
67
|
|
@@ -151,82 +142,30 @@ export async function execute<
|
|
151
142
|
client: Client<Transport, chain, account>,
|
152
143
|
parameters: ExecuteParameters<calls, chain, account, chainOverride>,
|
153
144
|
): Promise<ExecuteReturnType> {
|
154
|
-
const {
|
145
|
+
const { authorizationList, calls, opData } = parameters
|
155
146
|
|
156
|
-
const
|
157
|
-
const call = call_ as Call
|
158
|
-
return {
|
159
|
-
data: call.abi ? encodeFunctionData(call) : (call.data ?? '0x'),
|
160
|
-
value: call.value ?? 0n,
|
161
|
-
target: call.to,
|
162
|
-
}
|
163
|
-
})
|
147
|
+
const address = authorizationList?.[0]?.contractAddress ?? parameters.address
|
164
148
|
const mode = opData ? executionMode.opData : executionMode.default
|
165
149
|
|
166
|
-
const
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
150
|
+
const supported = await withCache(
|
151
|
+
() =>
|
152
|
+
supportsExecutionMode(client, {
|
153
|
+
address,
|
154
|
+
mode,
|
155
|
+
}),
|
156
|
+
{
|
157
|
+
cacheKey: `supportsExecutionMode.${client.uid}.${address}.${mode}`,
|
158
|
+
},
|
173
159
|
)
|
174
|
-
|
175
|
-
const supported = await supportsExecutionMode(client, {
|
176
|
-
address: authorizationList?.[0]?.contractAddress ?? address,
|
177
|
-
opData,
|
178
|
-
})
|
179
160
|
if (!supported) throw new ExecuteUnsupportedError()
|
180
161
|
|
181
162
|
try {
|
182
163
|
return await sendTransaction(client, {
|
183
164
|
...parameters,
|
184
|
-
to: address,
|
185
|
-
data:
|
186
|
-
abi,
|
187
|
-
functionName: 'execute',
|
188
|
-
args: [mode, encodedCalls],
|
189
|
-
}),
|
165
|
+
to: parameters.address,
|
166
|
+
data: encodeExecuteData({ calls, opData }),
|
190
167
|
} as any)
|
191
168
|
} catch (e) {
|
192
|
-
|
193
|
-
| (BaseError & { data?: Hex | undefined })
|
194
|
-
| undefined
|
195
|
-
|
196
|
-
if (!error?.data) throw e
|
197
|
-
if (
|
198
|
-
error.data ===
|
199
|
-
AbiError.getSelector(AbiError.from('error FnSelectorNotRecognized()'))
|
200
|
-
)
|
201
|
-
throw new FunctionSelectorNotRecognizedError()
|
202
|
-
|
203
|
-
const matched = parameters.calls.find((call_) => {
|
204
|
-
const call = call_ as Call
|
205
|
-
if (!call.abi) return false
|
206
|
-
try {
|
207
|
-
return Boolean(
|
208
|
-
decodeErrorResult({
|
209
|
-
abi: call.abi,
|
210
|
-
data: error.data!,
|
211
|
-
}),
|
212
|
-
)
|
213
|
-
} catch {
|
214
|
-
return false
|
215
|
-
}
|
216
|
-
}) as {
|
217
|
-
abi: Abi
|
218
|
-
functionName: string
|
219
|
-
args: unknown[]
|
220
|
-
to: Address
|
221
|
-
} | null
|
222
|
-
if (!matched) throw e
|
223
|
-
|
224
|
-
throw getContractError(error as BaseError, {
|
225
|
-
abi: matched.abi,
|
226
|
-
address: matched.to,
|
227
|
-
args: matched.args,
|
228
|
-
docsPath: '/experimental/erc7821/execute',
|
229
|
-
functionName: matched.functionName,
|
230
|
-
})
|
169
|
+
throw getExecuteError(e as BaseError, { calls })
|
231
170
|
}
|
232
171
|
}
|
@@ -0,0 +1,194 @@
|
|
1
|
+
import type { Address, Narrow } from 'abitype'
|
2
|
+
|
3
|
+
import {
|
4
|
+
type SendTransactionErrorType,
|
5
|
+
sendTransaction,
|
6
|
+
} from '../../../actions/wallet/sendTransaction.js'
|
7
|
+
import type { Client } from '../../../clients/createClient.js'
|
8
|
+
import type { Transport } from '../../../clients/transports/createTransport.js'
|
9
|
+
import type { BaseError } from '../../../errors/base.js'
|
10
|
+
import type { ErrorType } from '../../../errors/utils.js'
|
11
|
+
import type { Account, GetAccountParameter } from '../../../types/account.js'
|
12
|
+
import type { Batches, Calls } from '../../../types/calls.js'
|
13
|
+
import type {
|
14
|
+
Chain,
|
15
|
+
DeriveChain,
|
16
|
+
GetChainParameter,
|
17
|
+
} from '../../../types/chain.js'
|
18
|
+
import type { Hex } from '../../../types/misc.js'
|
19
|
+
import type { UnionEvaluate, UnionPick } from '../../../types/utils.js'
|
20
|
+
import type { FormattedTransactionRequest } from '../../../utils/formatters/transactionRequest.js'
|
21
|
+
import { withCache } from '../../../utils/promise/withCache.js'
|
22
|
+
import { ExecuteUnsupportedError } from '../errors.js'
|
23
|
+
import {
|
24
|
+
type EncodeExecuteBatchesDataErrorType,
|
25
|
+
encodeExecuteBatchesData,
|
26
|
+
} from '../utils/encodeExecuteBatchesData.js'
|
27
|
+
import {
|
28
|
+
type GetExecuteErrorReturnType,
|
29
|
+
getExecuteError,
|
30
|
+
} from '../utils/getExecuteError.js'
|
31
|
+
import { supportsExecutionMode } from './supportsExecutionMode.js'
|
32
|
+
|
33
|
+
/** @internal */
|
34
|
+
export type Batch = { calls: readonly unknown[]; opData?: Hex | undefined }
|
35
|
+
|
36
|
+
export type ExecuteBatchesParameters<
|
37
|
+
batches extends readonly Batch[] = readonly Batch[],
|
38
|
+
chain extends Chain | undefined = Chain | undefined,
|
39
|
+
account extends Account | undefined = Account | undefined,
|
40
|
+
chainOverride extends Chain | undefined = Chain | undefined,
|
41
|
+
_derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,
|
42
|
+
> = UnionEvaluate<
|
43
|
+
UnionPick<
|
44
|
+
FormattedTransactionRequest<_derivedChain>,
|
45
|
+
| 'authorizationList'
|
46
|
+
| 'gas'
|
47
|
+
| 'gasPrice'
|
48
|
+
| 'maxFeePerGas'
|
49
|
+
| 'maxPriorityFeePerGas'
|
50
|
+
>
|
51
|
+
> &
|
52
|
+
GetAccountParameter<account, Account | Address, true, true> &
|
53
|
+
GetChainParameter<chain, chainOverride> & {
|
54
|
+
/** Address that will execute the calls. */
|
55
|
+
address: Address
|
56
|
+
/** Batches to execute. */
|
57
|
+
batches: Batches<Narrow<batches>, { opData?: Hex | undefined }>
|
58
|
+
}
|
59
|
+
|
60
|
+
export type ExecuteBatchesReturnType = Hex
|
61
|
+
|
62
|
+
export type ExecuteBatchesErrorType =
|
63
|
+
| GetExecuteErrorReturnType
|
64
|
+
| EncodeExecuteBatchesDataErrorType
|
65
|
+
| SendTransactionErrorType
|
66
|
+
| ErrorType
|
67
|
+
|
68
|
+
/**
|
69
|
+
* Executes batches of call(s) using "batch of batches" mode on an [ERC-7821-compatible contract](https://eips.ethereum.org/EIPS/eip-7821).
|
70
|
+
*
|
71
|
+
* @example
|
72
|
+
* ```ts
|
73
|
+
* import { createClient, http, parseEther } from 'viem'
|
74
|
+
* import { privateKeyToAccount } from 'viem/accounts'
|
75
|
+
* import { mainnet } from 'viem/chains'
|
76
|
+
* import { executeBatches } from 'viem/experimental/erc7821'
|
77
|
+
*
|
78
|
+
* const account = privateKeyToAccount('0x...')
|
79
|
+
*
|
80
|
+
* const client = createClient({
|
81
|
+
* chain: mainnet,
|
82
|
+
* transport: http(),
|
83
|
+
* })
|
84
|
+
*
|
85
|
+
* const hash = await executeBatches(client, {
|
86
|
+
* account,
|
87
|
+
* batches: [
|
88
|
+
* {
|
89
|
+
* calls: [
|
90
|
+
* {
|
91
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
92
|
+
* value: parseEther('1'),
|
93
|
+
* },
|
94
|
+
* ],
|
95
|
+
* },
|
96
|
+
* {
|
97
|
+
* calls: [
|
98
|
+
* {
|
99
|
+
* to: '0xcb98643b8786950F0461f3B0edf99D88F274574D',
|
100
|
+
* value: parseEther('2'),
|
101
|
+
* },
|
102
|
+
* {
|
103
|
+
* data: '0xdeadbeef',
|
104
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
105
|
+
* },
|
106
|
+
* ],
|
107
|
+
* },
|
108
|
+
* ],
|
109
|
+
* to: account.address,
|
110
|
+
* })
|
111
|
+
* ```
|
112
|
+
*
|
113
|
+
* @example
|
114
|
+
* ```ts
|
115
|
+
* // Account Hoisting
|
116
|
+
* import { createClient, http, parseEther } from 'viem'
|
117
|
+
* import { privateKeyToAccount } from 'viem/accounts'
|
118
|
+
* import { mainnet } from 'viem/chains'
|
119
|
+
* import { executeBatches } from 'viem/experimental/erc7821'
|
120
|
+
*
|
121
|
+
* const account = privateKeyToAccount('0x...')
|
122
|
+
*
|
123
|
+
* const client = createClient({
|
124
|
+
* chain: mainnet,
|
125
|
+
* transport: http(),
|
126
|
+
* })
|
127
|
+
*
|
128
|
+
* const hash = await executeBatches(client, {
|
129
|
+
* batches: [
|
130
|
+
* {
|
131
|
+
* calls: [
|
132
|
+
* {
|
133
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
134
|
+
* value: parseEther('1'),
|
135
|
+
* },
|
136
|
+
* ],
|
137
|
+
* },
|
138
|
+
* {
|
139
|
+
* calls: [
|
140
|
+
* {
|
141
|
+
* to: '0xcb98643b8786950F0461f3B0edf99D88F274574D',
|
142
|
+
* value: parseEther('2'),
|
143
|
+
* },
|
144
|
+
* {
|
145
|
+
* data: '0xdeadbeef',
|
146
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
147
|
+
* },
|
148
|
+
* ],
|
149
|
+
* },
|
150
|
+
* ],
|
151
|
+
* to: account.address,
|
152
|
+
* })
|
153
|
+
* ```
|
154
|
+
*
|
155
|
+
* @param client - Client to use.
|
156
|
+
* @param parameters - {@link ExecuteBatchesParameters}
|
157
|
+
* @returns Transaction hash. {@link ExecuteBatchesReturnType}
|
158
|
+
*/
|
159
|
+
export async function executeBatches<
|
160
|
+
batches extends readonly Batch[],
|
161
|
+
chain extends Chain | undefined,
|
162
|
+
account extends Account | undefined,
|
163
|
+
chainOverride extends Chain | undefined = undefined,
|
164
|
+
>(
|
165
|
+
client: Client<Transport, chain, account>,
|
166
|
+
parameters: ExecuteBatchesParameters<batches, chain, account, chainOverride>,
|
167
|
+
): Promise<ExecuteBatchesReturnType> {
|
168
|
+
const { authorizationList, batches } = parameters
|
169
|
+
|
170
|
+
const address = authorizationList?.[0]?.contractAddress ?? parameters.address
|
171
|
+
|
172
|
+
const supported = await withCache(
|
173
|
+
() =>
|
174
|
+
supportsExecutionMode(client, {
|
175
|
+
address,
|
176
|
+
mode: 'batchOfBatches',
|
177
|
+
}),
|
178
|
+
{
|
179
|
+
cacheKey: `supportsExecutionMode.${client.uid}.${address}.batchOfBatches`,
|
180
|
+
},
|
181
|
+
)
|
182
|
+
if (!supported) throw new ExecuteUnsupportedError()
|
183
|
+
|
184
|
+
try {
|
185
|
+
return await sendTransaction(client, {
|
186
|
+
...parameters,
|
187
|
+
to: parameters.address,
|
188
|
+
data: encodeExecuteBatchesData({ batches }),
|
189
|
+
} as any)
|
190
|
+
} catch (e) {
|
191
|
+
const calls = batches.flatMap((b) => b.calls) as Calls<Narrow<batches>>
|
192
|
+
throw getExecuteError(e as BaseError, { calls })
|
193
|
+
}
|
194
|
+
}
|