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.
Files changed (134) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/_cjs/actions/public/simulate.js +1 -1
  3. package/_cjs/actions/public/simulate.js.map +1 -1
  4. package/_cjs/chains/definitions/berachain.js +24 -0
  5. package/_cjs/chains/definitions/berachain.js.map +1 -0
  6. package/_cjs/chains/definitions/donatuz.js +29 -0
  7. package/_cjs/chains/definitions/donatuz.js.map +1 -0
  8. package/_cjs/chains/definitions/forta.js +25 -0
  9. package/_cjs/chains/definitions/forta.js.map +1 -0
  10. package/_cjs/chains/definitions/sidra.js +25 -0
  11. package/_cjs/chains/definitions/sidra.js.map +1 -0
  12. package/_cjs/chains/definitions/songbird.js +6 -0
  13. package/_cjs/chains/definitions/songbird.js.map +1 -1
  14. package/_cjs/chains/definitions/wmcTestnet.js +22 -0
  15. package/_cjs/chains/definitions/wmcTestnet.js.map +1 -0
  16. package/_cjs/chains/index.js +21 -11
  17. package/_cjs/chains/index.js.map +1 -1
  18. package/_cjs/errors/version.js +1 -1
  19. package/_cjs/experimental/erc7821/actions/execute.js +13 -57
  20. package/_cjs/experimental/erc7821/actions/execute.js.map +1 -1
  21. package/_cjs/experimental/erc7821/actions/executeBatches.js +33 -0
  22. package/_cjs/experimental/erc7821/actions/executeBatches.js.map +1 -0
  23. package/_cjs/experimental/erc7821/actions/supportsExecutionMode.js +11 -3
  24. package/_cjs/experimental/erc7821/actions/supportsExecutionMode.js.map +1 -1
  25. package/_cjs/experimental/erc7821/constants.js +1 -0
  26. package/_cjs/experimental/erc7821/constants.js.map +1 -1
  27. package/_cjs/experimental/erc7821/decorators/erc7821.js +2 -0
  28. package/_cjs/experimental/erc7821/decorators/erc7821.js.map +1 -1
  29. package/_cjs/experimental/erc7821/index.js +11 -1
  30. package/_cjs/experimental/erc7821/index.js.map +1 -1
  31. package/_cjs/experimental/erc7821/utils/encodeCalls.js +21 -0
  32. package/_cjs/experimental/erc7821/utils/encodeCalls.js.map +1 -0
  33. package/_cjs/experimental/erc7821/utils/encodeExecuteBatchesData.js +22 -0
  34. package/_cjs/experimental/erc7821/utils/encodeExecuteBatchesData.js.map +1 -0
  35. package/_cjs/experimental/erc7821/utils/encodeExecuteData.js +17 -0
  36. package/_cjs/experimental/erc7821/utils/encodeExecuteData.js.map +1 -0
  37. package/_cjs/experimental/erc7821/utils/getExecuteError.js +40 -0
  38. package/_cjs/experimental/erc7821/utils/getExecuteError.js.map +1 -0
  39. package/_esm/actions/public/simulate.js +1 -1
  40. package/_esm/actions/public/simulate.js.map +1 -1
  41. package/_esm/chains/definitions/berachain.js +21 -0
  42. package/_esm/chains/definitions/berachain.js.map +1 -0
  43. package/_esm/chains/definitions/donatuz.js +26 -0
  44. package/_esm/chains/definitions/donatuz.js.map +1 -0
  45. package/_esm/chains/definitions/forta.js +22 -0
  46. package/_esm/chains/definitions/forta.js.map +1 -0
  47. package/_esm/chains/definitions/sidra.js +22 -0
  48. package/_esm/chains/definitions/sidra.js.map +1 -0
  49. package/_esm/chains/definitions/songbird.js +6 -0
  50. package/_esm/chains/definitions/songbird.js.map +1 -1
  51. package/_esm/chains/definitions/wmcTestnet.js +19 -0
  52. package/_esm/chains/definitions/wmcTestnet.js.map +1 -0
  53. package/_esm/chains/index.js +5 -0
  54. package/_esm/chains/index.js.map +1 -1
  55. package/_esm/errors/version.js +1 -1
  56. package/_esm/experimental/erc7821/actions/execute.js +15 -59
  57. package/_esm/experimental/erc7821/actions/execute.js.map +1 -1
  58. package/_esm/experimental/erc7821/actions/executeBatches.js +121 -0
  59. package/_esm/experimental/erc7821/actions/executeBatches.js.map +1 -0
  60. package/_esm/experimental/erc7821/actions/supportsExecutionMode.js +11 -3
  61. package/_esm/experimental/erc7821/actions/supportsExecutionMode.js.map +1 -1
  62. package/_esm/experimental/erc7821/constants.js +1 -0
  63. package/_esm/experimental/erc7821/constants.js.map +1 -1
  64. package/_esm/experimental/erc7821/decorators/erc7821.js +2 -0
  65. package/_esm/experimental/erc7821/decorators/erc7821.js.map +1 -1
  66. package/_esm/experimental/erc7821/index.js +5 -1
  67. package/_esm/experimental/erc7821/index.js.map +1 -1
  68. package/_esm/experimental/erc7821/utils/encodeCalls.js +18 -0
  69. package/_esm/experimental/erc7821/utils/encodeCalls.js.map +1 -0
  70. package/_esm/experimental/erc7821/utils/encodeExecuteBatchesData.js +19 -0
  71. package/_esm/experimental/erc7821/utils/encodeExecuteBatchesData.js.map +1 -0
  72. package/_esm/experimental/erc7821/utils/encodeExecuteData.js +14 -0
  73. package/_esm/experimental/erc7821/utils/encodeExecuteData.js.map +1 -0
  74. package/_esm/experimental/erc7821/utils/getExecuteError.js +37 -0
  75. package/_esm/experimental/erc7821/utils/getExecuteError.js.map +1 -0
  76. package/_types/actions/public/simulate.d.ts.map +1 -1
  77. package/_types/chains/definitions/berachain.d.ts +37 -0
  78. package/_types/chains/definitions/berachain.d.ts.map +1 -0
  79. package/_types/chains/definitions/donatuz.d.ts +33 -0
  80. package/_types/chains/definitions/donatuz.d.ts.map +1 -0
  81. package/_types/chains/definitions/forta.d.ts +37 -0
  82. package/_types/chains/definitions/forta.d.ts.map +1 -0
  83. package/_types/chains/definitions/sidra.d.ts +37 -0
  84. package/_types/chains/definitions/sidra.d.ts.map +1 -0
  85. package/_types/chains/definitions/songbird.d.ts +6 -10
  86. package/_types/chains/definitions/songbird.d.ts.map +1 -1
  87. package/_types/chains/definitions/wmcTestnet.d.ts +37 -0
  88. package/_types/chains/definitions/wmcTestnet.d.ts.map +1 -0
  89. package/_types/chains/index.d.ts +5 -0
  90. package/_types/chains/index.d.ts.map +1 -1
  91. package/_types/errors/version.d.ts +1 -1
  92. package/_types/experimental/erc7821/actions/execute.d.ts +3 -4
  93. package/_types/experimental/erc7821/actions/execute.d.ts.map +1 -1
  94. package/_types/experimental/erc7821/actions/executeBatches.d.ts +121 -0
  95. package/_types/experimental/erc7821/actions/executeBatches.d.ts.map +1 -0
  96. package/_types/experimental/erc7821/actions/supportsExecutionMode.d.ts +1 -1
  97. package/_types/experimental/erc7821/actions/supportsExecutionMode.d.ts.map +1 -1
  98. package/_types/experimental/erc7821/constants.d.ts +1 -0
  99. package/_types/experimental/erc7821/constants.d.ts.map +1 -1
  100. package/_types/experimental/erc7821/decorators/erc7821.d.ts +93 -0
  101. package/_types/experimental/erc7821/decorators/erc7821.d.ts.map +1 -1
  102. package/_types/experimental/erc7821/index.d.ts +5 -1
  103. package/_types/experimental/erc7821/index.d.ts.map +1 -1
  104. package/_types/experimental/erc7821/utils/encodeCalls.d.ts +8 -0
  105. package/_types/experimental/erc7821/utils/encodeCalls.d.ts.map +1 -0
  106. package/_types/experimental/erc7821/utils/encodeExecuteBatchesData.d.ts +21 -0
  107. package/_types/experimental/erc7821/utils/encodeExecuteBatchesData.d.ts.map +1 -0
  108. package/_types/experimental/erc7821/utils/encodeExecuteData.d.ts +16 -0
  109. package/_types/experimental/erc7821/utils/encodeExecuteData.d.ts.map +1 -0
  110. package/_types/experimental/erc7821/utils/getExecuteError.d.ts +12 -0
  111. package/_types/experimental/erc7821/utils/getExecuteError.d.ts.map +1 -0
  112. package/_types/types/calls.d.ts +21 -0
  113. package/_types/types/calls.d.ts.map +1 -1
  114. package/actions/public/simulate.ts +8 -7
  115. package/chains/definitions/berachain.ts +20 -0
  116. package/chains/definitions/donatuz.ts +26 -0
  117. package/chains/definitions/forta.ts +22 -0
  118. package/chains/definitions/sidra.ts +22 -0
  119. package/chains/definitions/songbird.ts +6 -0
  120. package/chains/definitions/wmcTestnet.ts +19 -0
  121. package/chains/index.ts +5 -0
  122. package/errors/version.ts +1 -1
  123. package/experimental/erc7821/actions/execute.ts +28 -89
  124. package/experimental/erc7821/actions/executeBatches.ts +194 -0
  125. package/experimental/erc7821/actions/supportsExecutionMode.ts +22 -9
  126. package/experimental/erc7821/constants.ts +2 -0
  127. package/experimental/erc7821/decorators/erc7821.ts +109 -0
  128. package/experimental/erc7821/index.ts +28 -1
  129. package/experimental/erc7821/utils/encodeCalls.ts +38 -0
  130. package/experimental/erc7821/utils/encodeExecuteBatchesData.ts +48 -0
  131. package/experimental/erc7821/utils/encodeExecuteData.ts +42 -0
  132. package/experimental/erc7821/utils/getExecuteError.ts +66 -0
  133. package/package.json +1 -1
  134. 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"}
@@ -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":"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;AAElC,MAAM,MAAM,OAAO,CACjB,OAAO,SAAS,SAAS;IAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,EAAE,EACxD,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAE3C,MAAM,SAAS,SAAS,GAAG,EAAE,GAAG,EAAE,IAChC,OAAO,SAAS,SAAS,CAAC,MAAM,KAAK,SAAS;IAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,CAAC,GAC5E,CAAC,GAAG,MAAM,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,GAAG,UAAU,CAAC,GAC1D,OAAO,SAAS,SAAS;IACrB,MAAM,KAAK,SAAS;QAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;KAAE;IACjD,GAAG,MAAM,IAAI,SAAS,SAAS;QAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;KAAE,EAAE;CAC/D,GACD,OAAO,CACL;IAAC,GAAG,IAAI;CAAC,EACT,UAAU,EACV;IAAC,GAAG,MAAM;IAAE;QAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;KAAE,GAAG,UAAU;CAAC,CAC3D,GACD,OAAO,CAAA"}
@@ -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 = abi
246
- ? decodeFunctionResult({
247
- abi,
248
- data,
249
- functionName,
250
- })
251
- : null
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.17'
1
+ export const version = '2.22.20'
@@ -1,6 +1,4 @@
1
- import type { Abi, Address, Narrow } from 'abitype'
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 { Call, Calls } from '../../../types/calls.js'
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 { abi, executionMode } from '../constants.js'
21
+ import { withCache } from '../../../utils/promise/withCache.js'
22
+ import { executionMode } from '../constants.js'
23
+ import { ExecuteUnsupportedError } from '../errors.js'
36
24
  import {
37
- ExecuteUnsupportedError,
38
- FunctionSelectorNotRecognizedError,
39
- } from '../errors.js'
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
- | DecodeErrorResultErrorType
72
- | GetContractErrorReturnType
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 { address, authorizationList, opData } = parameters
145
+ const { authorizationList, calls, opData } = parameters
155
146
 
156
- const calls = parameters.calls.map((call_) => {
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 encodedCalls = AbiParameters.encode(
167
- AbiParameters.from([
168
- 'struct Call { address target; uint256 value; bytes data; }',
169
- 'Call[] calls',
170
- ...(opData ? ['bytes opData'] : []),
171
- ]),
172
- [calls, ...(opData ? [opData] : [])] as any,
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: encodeFunctionData({
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
- const error = (e as BaseError).walk((e) => 'data' in (e as Error)) as
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
+ }