viem 2.44.2 → 2.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js +4 -2
  3. package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -1
  4. package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -1
  5. package/_cjs/account-abstraction/clients/createBundlerClient.js +8 -2
  6. package/_cjs/account-abstraction/clients/createBundlerClient.js.map +1 -1
  7. package/_cjs/actions/public/estimateContractGas.js +3 -1
  8. package/_cjs/actions/public/estimateContractGas.js.map +1 -1
  9. package/_cjs/actions/public/simulateContract.js +3 -1
  10. package/_cjs/actions/public/simulateContract.js.map +1 -1
  11. package/_cjs/actions/wallet/sendCalls.js +17 -1
  12. package/_cjs/actions/wallet/sendCalls.js.map +1 -1
  13. package/_cjs/actions/wallet/sendTransaction.js +11 -7
  14. package/_cjs/actions/wallet/sendTransaction.js.map +1 -1
  15. package/_cjs/actions/wallet/sendTransactionSync.js +11 -7
  16. package/_cjs/actions/wallet/sendTransactionSync.js.map +1 -1
  17. package/_cjs/actions/wallet/writeContract.js +2 -2
  18. package/_cjs/actions/wallet/writeContract.js.map +1 -1
  19. package/_cjs/chains/definitions/megaeth.js +33 -0
  20. package/_cjs/chains/definitions/megaeth.js.map +1 -0
  21. package/_cjs/chains/definitions/megaethTestnet.js +6 -1
  22. package/_cjs/chains/definitions/megaethTestnet.js.map +1 -1
  23. package/_cjs/chains/definitions/rise.js +28 -0
  24. package/_cjs/chains/definitions/rise.js.map +1 -0
  25. package/_cjs/chains/definitions/stable.js +35 -0
  26. package/_cjs/chains/definitions/stable.js.map +1 -0
  27. package/_cjs/chains/definitions/stableTestnet.js +10 -3
  28. package/_cjs/chains/definitions/stableTestnet.js.map +1 -1
  29. package/_cjs/chains/index.js +13 -7
  30. package/_cjs/chains/index.js.map +1 -1
  31. package/_cjs/clients/createClient.js +2 -1
  32. package/_cjs/clients/createClient.js.map +1 -1
  33. package/_cjs/clients/createWalletClient.js.map +1 -1
  34. package/_cjs/errors/version.js +1 -1
  35. package/_cjs/index.js.map +1 -1
  36. package/_cjs/op-stack/index.js +9 -1
  37. package/_cjs/op-stack/index.js.map +1 -1
  38. package/_cjs/tempo/Abis.js +2 -2
  39. package/_cjs/tempo/Abis.js.map +1 -1
  40. package/_cjs/tempo/Addresses.js +2 -1
  41. package/_cjs/tempo/Addresses.js.map +1 -1
  42. package/_cjs/tempo/Decorator.js +19 -0
  43. package/_cjs/tempo/Decorator.js.map +1 -1
  44. package/_cjs/tempo/Transport.js +1 -1
  45. package/_cjs/tempo/Transport.js.map +1 -1
  46. package/_cjs/tempo/actions/fee.js +91 -0
  47. package/_cjs/tempo/actions/fee.js.map +1 -1
  48. package/_cjs/tempo/actions/index.js +2 -1
  49. package/_cjs/tempo/actions/index.js.map +1 -1
  50. package/_cjs/tempo/actions/validator.js +308 -0
  51. package/_cjs/tempo/actions/validator.js.map +1 -0
  52. package/_cjs/types/dataSuffix.js +3 -0
  53. package/_cjs/types/dataSuffix.js.map +1 -0
  54. package/_cjs/utils/abi/decodeEventLog.js +29 -12
  55. package/_cjs/utils/abi/decodeEventLog.js.map +1 -1
  56. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js +4 -2
  57. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -1
  58. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -1
  59. package/_esm/account-abstraction/clients/createBundlerClient.js +8 -2
  60. package/_esm/account-abstraction/clients/createBundlerClient.js.map +1 -1
  61. package/_esm/actions/public/estimateContractGas.js +3 -1
  62. package/_esm/actions/public/estimateContractGas.js.map +1 -1
  63. package/_esm/actions/public/simulateContract.js +3 -1
  64. package/_esm/actions/public/simulateContract.js.map +1 -1
  65. package/_esm/actions/wallet/sendCalls.js +17 -1
  66. package/_esm/actions/wallet/sendCalls.js.map +1 -1
  67. package/_esm/actions/wallet/sendTransaction.js +11 -7
  68. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  69. package/_esm/actions/wallet/sendTransactionSync.js +11 -7
  70. package/_esm/actions/wallet/sendTransactionSync.js.map +1 -1
  71. package/_esm/actions/wallet/writeContract.js +2 -2
  72. package/_esm/actions/wallet/writeContract.js.map +1 -1
  73. package/_esm/chains/definitions/megaeth.js +30 -0
  74. package/_esm/chains/definitions/megaeth.js.map +1 -0
  75. package/_esm/chains/definitions/megaethTestnet.js +6 -1
  76. package/_esm/chains/definitions/megaethTestnet.js.map +1 -1
  77. package/_esm/chains/definitions/rise.js +25 -0
  78. package/_esm/chains/definitions/rise.js.map +1 -0
  79. package/_esm/chains/definitions/stable.js +32 -0
  80. package/_esm/chains/definitions/stable.js.map +1 -0
  81. package/_esm/chains/definitions/stableTestnet.js +10 -3
  82. package/_esm/chains/definitions/stableTestnet.js.map +1 -1
  83. package/_esm/chains/index.js +3 -0
  84. package/_esm/chains/index.js.map +1 -1
  85. package/_esm/clients/createClient.js +2 -1
  86. package/_esm/clients/createClient.js.map +1 -1
  87. package/_esm/clients/createWalletClient.js.map +1 -1
  88. package/_esm/errors/version.js +1 -1
  89. package/_esm/index.js.map +1 -1
  90. package/_esm/op-stack/index.js +4 -0
  91. package/_esm/op-stack/index.js.map +1 -1
  92. package/_esm/tempo/Abis.js +1 -1
  93. package/_esm/tempo/Abis.js.map +1 -1
  94. package/_esm/tempo/Account.js +6 -6
  95. package/_esm/tempo/Addresses.js +1 -0
  96. package/_esm/tempo/Addresses.js.map +1 -1
  97. package/_esm/tempo/Decorator.js +19 -0
  98. package/_esm/tempo/Decorator.js.map +1 -1
  99. package/_esm/tempo/Transport.js +1 -1
  100. package/_esm/tempo/Transport.js.map +1 -1
  101. package/_esm/tempo/WebAuthnP256.js +2 -2
  102. package/_esm/tempo/actions/amm.js +28 -28
  103. package/_esm/tempo/actions/dex.js +68 -68
  104. package/_esm/tempo/actions/faucet.js +4 -4
  105. package/_esm/tempo/actions/fee.js +236 -10
  106. package/_esm/tempo/actions/fee.js.map +1 -1
  107. package/_esm/tempo/actions/index.js +1 -0
  108. package/_esm/tempo/actions/index.js.map +1 -1
  109. package/_esm/tempo/actions/nonce.js +4 -4
  110. package/_esm/tempo/actions/policy.js +36 -36
  111. package/_esm/tempo/actions/reward.js +28 -28
  112. package/_esm/tempo/actions/token.js +122 -122
  113. package/_esm/tempo/actions/validator.js +1017 -0
  114. package/_esm/tempo/actions/validator.js.map +1 -0
  115. package/_esm/types/dataSuffix.js +2 -0
  116. package/_esm/types/dataSuffix.js.map +1 -0
  117. package/_esm/utils/abi/decodeEventLog.js +34 -13
  118. package/_esm/utils/abi/decodeEventLog.js.map +1 -1
  119. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts +2 -0
  120. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts.map +1 -1
  121. package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts +2 -0
  122. package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts.map +1 -1
  123. package/_types/account-abstraction/clients/createBundlerClient.d.ts +4 -0
  124. package/_types/account-abstraction/clients/createBundlerClient.d.ts.map +1 -1
  125. package/_types/actions/public/estimateContractGas.d.ts.map +1 -1
  126. package/_types/actions/public/simulateContract.d.ts.map +1 -1
  127. package/_types/actions/wallet/sendCalls.d.ts.map +1 -1
  128. package/_types/actions/wallet/sendTransaction.d.ts +7 -2
  129. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  130. package/_types/actions/wallet/sendTransactionSync.d.ts +5 -0
  131. package/_types/actions/wallet/sendTransactionSync.d.ts.map +1 -1
  132. package/_types/actions/wallet/writeContract.d.ts.map +1 -1
  133. package/_types/chains/definitions/megaeth.d.ts +46 -0
  134. package/_types/chains/definitions/megaeth.d.ts.map +1 -0
  135. package/_types/chains/definitions/megaethTestnet.d.ts +6 -1
  136. package/_types/chains/definitions/megaethTestnet.d.ts.map +1 -1
  137. package/_types/chains/definitions/rise.d.ts +46 -0
  138. package/_types/chains/definitions/rise.d.ts.map +1 -0
  139. package/_types/chains/definitions/stable.d.ts +47 -0
  140. package/_types/chains/definitions/stable.d.ts.map +1 -0
  141. package/_types/chains/definitions/stableTestnet.d.ts +10 -13
  142. package/_types/chains/definitions/stableTestnet.d.ts.map +1 -1
  143. package/_types/chains/index.d.ts +3 -0
  144. package/_types/chains/index.d.ts.map +1 -1
  145. package/_types/clients/createClient.d.ts +5 -0
  146. package/_types/clients/createClient.d.ts.map +1 -1
  147. package/_types/clients/createWalletClient.d.ts +1 -1
  148. package/_types/clients/createWalletClient.d.ts.map +1 -1
  149. package/_types/errors/version.d.ts +1 -1
  150. package/_types/index.d.ts +2 -1
  151. package/_types/index.d.ts.map +1 -1
  152. package/_types/op-stack/index.d.ts +4 -0
  153. package/_types/op-stack/index.d.ts.map +1 -1
  154. package/_types/tempo/Abis.d.ts +1 -1
  155. package/_types/tempo/Abis.d.ts.map +1 -1
  156. package/_types/tempo/Account.d.ts +6 -6
  157. package/_types/tempo/Addresses.d.ts +1 -0
  158. package/_types/tempo/Addresses.d.ts.map +1 -1
  159. package/_types/tempo/Decorator.d.ts +607 -208
  160. package/_types/tempo/Decorator.d.ts.map +1 -1
  161. package/_types/tempo/Transport.d.ts.map +1 -1
  162. package/_types/tempo/WebAuthnP256.d.ts +2 -2
  163. package/_types/tempo/actions/amm.d.ts +28 -28
  164. package/_types/tempo/actions/dex.d.ts +68 -68
  165. package/_types/tempo/actions/faucet.d.ts +4 -4
  166. package/_types/tempo/actions/fee.d.ts +380 -10
  167. package/_types/tempo/actions/fee.d.ts.map +1 -1
  168. package/_types/tempo/actions/index.d.ts +1 -0
  169. package/_types/tempo/actions/index.d.ts.map +1 -1
  170. package/_types/tempo/actions/nonce.d.ts +4 -4
  171. package/_types/tempo/actions/policy.d.ts +36 -36
  172. package/_types/tempo/actions/reward.d.ts +28 -28
  173. package/_types/tempo/actions/token.d.ts +122 -122
  174. package/_types/tempo/actions/validator.d.ts +1174 -0
  175. package/_types/tempo/actions/validator.d.ts.map +1 -0
  176. package/_types/types/dataSuffix.d.ts +16 -0
  177. package/_types/types/dataSuffix.d.ts.map +1 -0
  178. package/_types/utils/abi/decodeEventLog.d.ts.map +1 -1
  179. package/account-abstraction/actions/bundler/prepareUserOperation.ts +7 -1
  180. package/account-abstraction/actions/bundler/sendUserOperation.ts +2 -0
  181. package/account-abstraction/clients/createBundlerClient.ts +12 -1
  182. package/actions/public/estimateContractGas.ts +11 -2
  183. package/actions/public/simulateContract.ts +11 -2
  184. package/actions/wallet/sendCalls.ts +18 -1
  185. package/actions/wallet/sendTransaction.ts +19 -8
  186. package/actions/wallet/sendTransactionSync.ts +17 -7
  187. package/actions/wallet/writeContract.ts +1 -2
  188. package/chains/definitions/megaeth.ts +30 -0
  189. package/chains/definitions/megaethTestnet.ts +6 -1
  190. package/chains/definitions/rise.ts +25 -0
  191. package/chains/definitions/stable.ts +32 -0
  192. package/chains/definitions/stableTestnet.ts +10 -3
  193. package/chains/index.ts +3 -0
  194. package/clients/createClient.ts +7 -0
  195. package/clients/createWalletClient.ts +1 -0
  196. package/errors/version.ts +1 -1
  197. package/index.ts +2 -0
  198. package/op-stack/index.ts +24 -0
  199. package/package.json +1 -1
  200. package/tempo/Abis.ts +1 -1
  201. package/tempo/Account.ts +6 -6
  202. package/tempo/Addresses.ts +1 -0
  203. package/tempo/Decorator.ts +672 -208
  204. package/tempo/Transport.ts +4 -1
  205. package/tempo/WebAuthnP256.ts +2 -2
  206. package/tempo/actions/amm.ts +28 -28
  207. package/tempo/actions/dex.ts +68 -68
  208. package/tempo/actions/faucet.ts +4 -4
  209. package/tempo/actions/fee.ts +346 -10
  210. package/tempo/actions/index.ts +1 -0
  211. package/tempo/actions/nonce.ts +4 -4
  212. package/tempo/actions/policy.ts +36 -36
  213. package/tempo/actions/reward.ts +28 -28
  214. package/tempo/actions/token.ts +122 -122
  215. package/tempo/actions/validator.ts +1417 -0
  216. package/types/dataSuffix.ts +18 -0
  217. package/utils/abi/decodeEventLog.ts +38 -14
@@ -0,0 +1,18 @@
1
+ import type { Hex } from './misc.js'
2
+
3
+ /**
4
+ * Data suffix configuration for transaction attribution.
5
+ *
6
+ * Can be specified in two forms:
7
+ * - Simple hex string: `"0x1234"` - Appended to transaction data, not required
8
+ * - Object form: `{ value: "0x1234", required: true }` - Explicit required flag
9
+ *
10
+ * When `required` is `true`, transactions will fail if the suffix cannot be appended.
11
+ * When `required` is `false` (default), the suffix is best-effort.
12
+ */
13
+ export type DataSuffix =
14
+ | Hex
15
+ | {
16
+ value: Hex
17
+ required?: boolean | undefined
18
+ }
@@ -133,36 +133,60 @@ export function decodeEventLog<
133
133
  const indexedInputs = inputs
134
134
  .map((x, i) => [x, i] as const)
135
135
  .filter(([x]) => 'indexed' in x && x.indexed)
136
+
137
+ const missingIndexedInputs: [AbiParameter, number][] = []
138
+
136
139
  for (let i = 0; i < indexedInputs.length; i++) {
137
140
  const [param, argIndex] = indexedInputs[i]
138
141
  const topic = argTopics[i]
139
- if (!topic)
140
- throw new DecodeLogTopicsMismatch({
141
- abiItem,
142
- param: param as AbiParameter & { indexed: boolean },
143
- })
142
+ if (!topic) {
143
+ if (strict)
144
+ throw new DecodeLogTopicsMismatch({
145
+ abiItem,
146
+ param: param as AbiParameter & { indexed: boolean },
147
+ })
148
+ // Track missing indexed inputs to decode from data when strict is false
149
+ missingIndexedInputs.push([param, argIndex])
150
+ continue
151
+ }
144
152
  args[isUnnamed ? argIndex : param.name || argIndex] = decodeTopic({
145
153
  param,
146
154
  value: topic,
147
155
  })
148
156
  }
149
157
 
150
- // Decode data (non-indexed args).
158
+ // Decode data (non-indexed args + missing indexed args when strict is false).
151
159
  const nonIndexedInputs = inputs.filter((x) => !('indexed' in x && x.indexed))
152
- if (nonIndexedInputs.length > 0) {
160
+
161
+ // When strict is false, missing indexed inputs should be decoded from data
162
+ const inputsToDecode = strict
163
+ ? nonIndexedInputs
164
+ : [...missingIndexedInputs.map(([param]) => param), ...nonIndexedInputs]
165
+
166
+ if (inputsToDecode.length > 0) {
153
167
  if (data && data !== '0x') {
154
168
  try {
155
169
  const decodedData = decodeAbiParameters(
156
- nonIndexedInputs,
170
+ inputsToDecode,
157
171
  data,
158
172
  ) as unknown[]
159
173
  if (decodedData) {
160
- if (isUnnamed)
174
+ let dataIndex = 0
175
+ // First, assign missing indexed parameters (when strict is false)
176
+ if (!strict) {
177
+ for (const [param, argIndex] of missingIndexedInputs) {
178
+ args[isUnnamed ? argIndex : param.name || argIndex] =
179
+ decodedData[dataIndex++]
180
+ }
181
+ }
182
+ // Then, assign non-indexed parameters
183
+ if (isUnnamed) {
161
184
  for (let i = 0; i < inputs.length; i++)
162
- args[i] = args[i] ?? decodedData.shift()
163
- else
185
+ if (args[i] === undefined && dataIndex < decodedData.length)
186
+ args[i] = decodedData[dataIndex++]
187
+ } else
164
188
  for (let i = 0; i < nonIndexedInputs.length; i++)
165
- args[nonIndexedInputs[i].name!] = decodedData[i]
189
+ args[nonIndexedInputs[i].name!] = decodedData[dataIndex++]
166
190
  }
167
191
  } catch (err) {
168
192
  if (strict) {
@@ -173,7 +197,7 @@ export function decodeEventLog<
173
197
  throw new DecodeLogDataMismatch({
174
198
  abiItem,
175
199
  data: data,
176
- params: nonIndexedInputs,
200
+ params: inputsToDecode,
177
201
  size: size(data),
178
202
  })
179
203
  throw err
@@ -183,7 +207,7 @@ export function decodeEventLog<
183
207
  throw new DecodeLogDataMismatch({
184
208
  abiItem,
185
209
  data: '0x',
186
- params: nonIndexedInputs,
210
+ params: inputsToDecode,
187
211
  size: 0,
188
212
  })
189
213
  }