ox 0.9.4 → 0.9.6

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 (137) hide show
  1. package/Abi/package.json +6 -0
  2. package/AbiConstructor/package.json +6 -0
  3. package/AbiError/package.json +6 -0
  4. package/AbiEvent/package.json +6 -0
  5. package/AbiFunction/package.json +6 -0
  6. package/AbiItem/package.json +6 -0
  7. package/AbiParameters/package.json +6 -0
  8. package/AccessList/package.json +6 -0
  9. package/AccountProof/package.json +6 -0
  10. package/Address/package.json +6 -0
  11. package/AesGcm/package.json +6 -0
  12. package/Authorization/package.json +6 -0
  13. package/Base58/package.json +6 -0
  14. package/Base64/package.json +6 -0
  15. package/BinaryStateTree/package.json +6 -0
  16. package/Blobs/package.json +6 -0
  17. package/Block/package.json +6 -0
  18. package/BlockOverrides/package.json +6 -0
  19. package/Bloom/package.json +6 -0
  20. package/Bls/package.json +6 -0
  21. package/BlsPoint/package.json +6 -0
  22. package/Bytes/package.json +6 -0
  23. package/CHANGELOG.md +28 -0
  24. package/Caches/package.json +6 -0
  25. package/ContractAddress/package.json +6 -0
  26. package/Ed25519/package.json +6 -0
  27. package/Ens/package.json +6 -0
  28. package/Errors/package.json +6 -0
  29. package/Fee/package.json +6 -0
  30. package/Filter/package.json +6 -0
  31. package/Hash/package.json +6 -0
  32. package/HdKey/package.json +6 -0
  33. package/Hex/package.json +6 -0
  34. package/Json/package.json +6 -0
  35. package/Keystore/package.json +6 -0
  36. package/Kzg/package.json +6 -0
  37. package/Log/package.json +6 -0
  38. package/Mnemonic/package.json +6 -0
  39. package/P256/package.json +6 -0
  40. package/PersonalMessage/package.json +6 -0
  41. package/Provider/package.json +6 -0
  42. package/PublicKey/package.json +6 -0
  43. package/Rlp/package.json +6 -0
  44. package/RpcRequest/package.json +6 -0
  45. package/RpcResponse/package.json +6 -0
  46. package/RpcSchema/package.json +6 -0
  47. package/RpcTransport/package.json +6 -0
  48. package/Secp256k1/package.json +6 -0
  49. package/Signature/package.json +6 -0
  50. package/Siwe/package.json +6 -0
  51. package/Solidity/package.json +6 -0
  52. package/StateOverrides/package.json +6 -0
  53. package/Transaction/package.json +6 -0
  54. package/TransactionEnvelope/package.json +6 -0
  55. package/TransactionEnvelopeEip1559/package.json +6 -0
  56. package/TransactionEnvelopeEip2930/package.json +6 -0
  57. package/TransactionEnvelopeEip4844/package.json +6 -0
  58. package/TransactionEnvelopeEip7702/package.json +6 -0
  59. package/TransactionEnvelopeLegacy/package.json +6 -0
  60. package/TransactionReceipt/package.json +6 -0
  61. package/TransactionRequest/package.json +6 -0
  62. package/TypedData/package.json +6 -0
  63. package/ValidatorData/package.json +6 -0
  64. package/Value/package.json +6 -0
  65. package/WebAuthnP256/package.json +6 -0
  66. package/WebCryptoP256/package.json +6 -0
  67. package/Withdrawal/package.json +6 -0
  68. package/X25519/package.json +6 -0
  69. package/_cjs/core/AbiConstructor.js +16 -2
  70. package/_cjs/core/AbiConstructor.js.map +1 -1
  71. package/_cjs/core/AbiError.js +17 -2
  72. package/_cjs/core/AbiError.js.map +1 -1
  73. package/_cjs/core/AbiEvent.js +17 -2
  74. package/_cjs/core/AbiEvent.js.map +1 -1
  75. package/_cjs/core/AbiFunction.js +35 -8
  76. package/_cjs/core/AbiFunction.js.map +1 -1
  77. package/_cjs/core/AbiItem.js +24 -3
  78. package/_cjs/core/AbiItem.js.map +1 -1
  79. package/_cjs/version.js +1 -1
  80. package/_esm/core/Abi.js +2 -2
  81. package/_esm/core/Abi.js.map +1 -1
  82. package/_esm/core/AbiConstructor.js +18 -56
  83. package/_esm/core/AbiConstructor.js.map +1 -1
  84. package/_esm/core/AbiError.js +19 -54
  85. package/_esm/core/AbiError.js.map +1 -1
  86. package/_esm/core/AbiEvent.js +19 -187
  87. package/_esm/core/AbiEvent.js.map +1 -1
  88. package/_esm/core/AbiFunction.js +39 -242
  89. package/_esm/core/AbiFunction.js.map +1 -1
  90. package/_esm/core/AbiItem.js +27 -93
  91. package/_esm/core/AbiItem.js.map +1 -1
  92. package/_esm/erc6492/SignatureErc6492.js +2 -2
  93. package/_esm/erc6492/index.js +2 -2
  94. package/_esm/erc8010/SignatureErc8010.js +2 -2
  95. package/_esm/erc8010/index.js +2 -2
  96. package/_esm/version.js +1 -1
  97. package/_types/core/AbiConstructor.d.ts +43 -4
  98. package/_types/core/AbiConstructor.d.ts.map +1 -1
  99. package/_types/core/AbiError.d.ts +29 -19
  100. package/_types/core/AbiError.d.ts.map +1 -1
  101. package/_types/core/AbiEvent.d.ts +60 -0
  102. package/_types/core/AbiEvent.d.ts.map +1 -1
  103. package/_types/core/AbiFunction.d.ts +84 -2
  104. package/_types/core/AbiFunction.d.ts.map +1 -1
  105. package/_types/core/AbiItem.d.ts +36 -0
  106. package/_types/core/AbiItem.d.ts.map +1 -1
  107. package/_types/erc6492/SignatureErc6492.d.ts +2 -2
  108. package/_types/erc6492/index.d.ts +2 -2
  109. package/_types/erc8010/SignatureErc8010.d.ts +2 -2
  110. package/_types/erc8010/index.d.ts +2 -2
  111. package/_types/version.d.ts +1 -1
  112. package/core/Abi.ts +2 -2
  113. package/core/AbiConstructor.ts +96 -12
  114. package/core/AbiError.ts +121 -27
  115. package/core/AbiEvent.ts +145 -1
  116. package/core/AbiFunction.ts +272 -11
  117. package/core/AbiItem.ts +87 -3
  118. package/erc4337/EntryPoint/package.json +6 -0
  119. package/erc4337/RpcSchema/package.json +6 -0
  120. package/erc4337/UserOperation/package.json +6 -0
  121. package/erc4337/UserOperationGas/package.json +6 -0
  122. package/erc4337/UserOperationReceipt/package.json +6 -0
  123. package/erc4337/package.json +6 -0
  124. package/erc6492/SignatureErc6492/package.json +6 -0
  125. package/erc6492/SignatureErc6492.ts +2 -2
  126. package/erc6492/index.ts +2 -2
  127. package/erc6492/package.json +6 -0
  128. package/erc8010/SignatureErc8010/package.json +6 -0
  129. package/erc8010/SignatureErc8010.ts +2 -2
  130. package/erc8010/index.ts +2 -2
  131. package/erc8010/package.json +6 -0
  132. package/index.docs/package.json +6 -0
  133. package/package.json +1 -1
  134. package/trusted-setups/Paths/package.json +6 -0
  135. package/trusted-setups/package.json +6 -0
  136. package/version.ts +1 -1
  137. package/window/package.json +6 -0
@@ -112,94 +112,15 @@ export function assertArgs(abiEvent, args, matchArgs) {
112
112
  });
113
113
  }
114
114
  }
115
- /**
116
- * ABI-Decodes the provided [Log Topics and Data](https://info.etherscan.com/what-is-event-logs/) according to the ABI Event's parameter types (`input`).
117
- *
118
- * :::tip
119
- *
120
- * This function is typically used to decode an [Event Log](https://info.etherscan.com/what-is-event-logs/) that may be returned from a Log Query (e.g. `eth_getLogs`) or Transaction Receipt.
121
- *
122
- * See the [End-to-end Example](#end-to-end).
123
- *
124
- * :::
125
- *
126
- * @example
127
- * ```ts twoslash
128
- * import { AbiEvent } from 'ox'
129
- *
130
- * const transfer = AbiEvent.from(
131
- * 'event Transfer(address indexed from, address indexed to, uint256 value)'
132
- * )
133
- *
134
- * const log = {
135
- * // ...
136
- * data: '0x0000000000000000000000000000000000000000000000000000000000000001',
137
- * topics: [
138
- * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
139
- * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
140
- * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
141
- * ],
142
- * } as const
143
- *
144
- * const decoded = AbiEvent.decode(transfer, log)
145
- * // @log: {
146
- * // @log: from: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
147
- * // @log: to: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
148
- * // @log: value: 1n
149
- * // @log: }
150
- * ```
151
- *
152
- * @example
153
- * ### End-to-end
154
- *
155
- * Below is an end-to-end example of using `AbiEvent.decode` to decode the topics of a `Transfer` event on the [Wagmi Mint Example contract](https://etherscan.io/address/0xfba3912ca04dd458c843e2ee08967fc04f3579c2).
156
- *
157
- * ```ts twoslash
158
- * import 'ox/window'
159
- * import { AbiEvent, Hex } from 'ox'
160
- *
161
- * // 1. Instantiate the `Transfer` ABI Event.
162
- * const transfer = AbiEvent.from(
163
- * 'event Transfer(address indexed from, address indexed to, uint256 value)',
164
- * )
165
- *
166
- * // 2. Encode the ABI Event into Event Topics.
167
- * const { topics } = AbiEvent.encode(transfer)
168
- *
169
- * // 3. Query for events matching the encoded Topics.
170
- * const logs = await window.ethereum!.request({
171
- * method: 'eth_getLogs',
172
- * params: [
173
- * {
174
- * address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
175
- * fromBlock: Hex.fromNumber(19760235n),
176
- * toBlock: Hex.fromNumber(19760240n),
177
- * topics,
178
- * },
179
- * ],
180
- * })
181
- *
182
- * // 4. Decode the Log. // [!code focus]
183
- * const decoded = AbiEvent.decode(transfer, logs[0]!) // [!code focus]
184
- * // @log: {
185
- * // @log: from: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
186
- * // @log: to: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
187
- * // @log: value: 603n
188
- * // @log: }
189
- * ```
190
- *
191
- * :::note
192
- *
193
- * For simplicity, the above example uses `window.ethereum.request`, but you can use any
194
- * type of JSON-RPC interface.
195
- *
196
- * :::
197
- *
198
- * @param abiEvent - The ABI Event to decode.
199
- * @param log - `topics` & `data` to decode.
200
- * @returns The decoded event.
201
- */
202
- export function decode(abiEvent, log) {
115
+ // eslint-disable-next-line jsdoc/require-jsdoc
116
+ export function decode(...parameters) {
117
+ const [abiEvent, log] = (() => {
118
+ if (Array.isArray(parameters[0])) {
119
+ const [abi, name, log] = parameters;
120
+ return [fromAbi(abi, name), log];
121
+ }
122
+ return parameters;
123
+ })();
203
124
  const { data, topics } = log;
204
125
  const [selector_, ...argTopics] = topics;
205
126
  const selector = getSelector(abiEvent);
@@ -272,105 +193,16 @@ export function decode(abiEvent, log) {
272
193
  }
273
194
  return Object.values(args).length > 0 ? args : undefined;
274
195
  }
275
- /**
276
- * ABI-encodes the provided event input (`inputs`) into an array of [Event Topics](https://info.etherscan.com/what-is-event-logs/).
277
- *
278
- * :::tip
279
- *
280
- * This function is typically used to encode event arguments into [Event Topics](https://info.etherscan.com/what-is-event-logs/).
281
- *
282
- * See the [End-to-end Example](#end-to-end).
283
- *
284
- * :::
285
- *
286
- * @example
287
- * ```ts twoslash
288
- * import { AbiEvent } from 'ox'
289
- *
290
- * const transfer = AbiEvent.from(
291
- * 'event Transfer(address indexed from, address indexed to, uint256 value)'
292
- * )
293
- *
294
- * const { topics } = AbiEvent.encode(transfer)
295
- * // @log: ['0x406dade31f7ae4b5dbc276258c28dde5ae6d5c2773c5745802c493a2360e55e0']
296
- * ```
297
- *
298
- * @example
299
- * ### Passing Arguments
300
- *
301
- * You can pass `indexed` parameter values to `AbiEvent.encode`.
302
- *
303
- * TypeScript types will be inferred from the ABI Event, to guard you from inserting the wrong values.
304
- *
305
- * For example, the `Transfer` event below accepts an `address` type for the `from` and `to` attributes.
306
- *
307
- * ```ts twoslash
308
- * import { AbiEvent } from 'ox'
309
- *
310
- * const transfer = AbiEvent.from(
311
- * 'event Transfer(address indexed from, address indexed to, uint256 value)'
312
- * )
313
- *
314
- * const { topics } = AbiEvent.encode(transfer, {
315
- * from: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', // [!code hl]
316
- * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8' // [!code hl]
317
- * })
318
- * // @log: [
319
- * // @log: '0x406dade31f7ae4b5dbc276258c28dde5ae6d5c2773c5745802c493a2360e55e0',
320
- * // @log: '0x00000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266',
321
- * // @log: '0x0000000000000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8'
322
- * // @log: ]
323
- * ```
324
- *
325
- * @example
326
- * ### End-to-end
327
- *
328
- * Below is an end-to-end example of using `AbiEvent.encode` to encode the topics of a `Transfer` event and query for events matching the encoded topics on the [Wagmi Mint Example contract](https://etherscan.io/address/0xfba3912ca04dd458c843e2ee08967fc04f3579c2).
329
- *
330
- * ```ts twoslash
331
- * import 'ox/window'
332
- * import { AbiEvent, Hex } from 'ox'
333
- *
334
- * // 1. Instantiate the `Transfer` ABI Event.
335
- * const transfer = AbiEvent.from(
336
- * 'event Transfer(address indexed from, address indexed to, uint256 value)',
337
- * )
338
- *
339
- * // 2. Encode the ABI Event into Event Topics.
340
- * const { topics } = AbiEvent.encode(transfer)
341
- *
342
- * // 3. Query for events matching the encoded Topics.
343
- * const logs = await window.ethereum!.request({
344
- * method: 'eth_getLogs',
345
- * params: [
346
- * {
347
- * address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
348
- * fromBlock: Hex.fromNumber(19760235n),
349
- * toBlock: Hex.fromNumber(19760240n),
350
- * topics,
351
- * },
352
- * ],
353
- * })
354
- * // @log: [
355
- * // @log: "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
356
- * // @log: "0x0000000000000000000000000000000000000000000000000000000000000000",
357
- * // @log: "0x0000000000000000000000000c04d9e9278ec5e4d424476d3ebec70cb5d648d1",
358
- * // @log: "0x000000000000000000000000000000000000000000000000000000000000025b",
359
- * // @log: ]
360
- * ```
361
- *
362
- * :::note
363
- *
364
- * For simplicity, the above example uses `window.ethereum.request`, but you can use any
365
- * type of JSON-RPC interface.
366
- *
367
- * :::
368
- *
369
- * @param abiEvent - The event to encode.
370
- * @param args - The arguments to encode.
371
- * @returns The encoded event topics.
372
- */
373
- export function encode(abiEvent, ...[args]) {
196
+ // eslint-disable-next-line jsdoc/require-jsdoc
197
+ export function encode(...parameters) {
198
+ const [abiEvent, args] = (() => {
199
+ if (Array.isArray(parameters[0])) {
200
+ const [abi, name, args] = parameters;
201
+ return [fromAbi(abi, name), args];
202
+ }
203
+ const [abiEvent, args] = parameters;
204
+ return [abiEvent, args];
205
+ })();
374
206
  let topics = [];
375
207
  if (args && abiEvent.inputs) {
376
208
  const indexedInputs = abiEvent.inputs.filter((param) => 'indexed' in param && param.indexed);
@@ -1 +1 @@
1
- {"version":3,"file":"AbiEvent.js","sourceRoot":"","sources":["../../core/AbiEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAElC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAG/B,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AA4DlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,UAAU,CACxB,QAA6B,EAC7B,IAAa,EACb,SAOW;IAEX,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;QACrB,MAAM,IAAI,iBAAiB,CAAC;YAC1B,QAAQ;YACR,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;IAEJ,SAAS,OAAO,CACd,KAAgC,EAChC,KAAc,EACd,GAAY;QAEZ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,KAAwB,EAAE,GAAsB,CAAC,CAAA;QAC1E,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YACzB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,KAAe,CAAC,CAAC,KAAK,GAAG,CAAA;QAClE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAgB,CAAC,KAAK,GAAG,CAAA;QAC3E,OAAO,KAAK,KAAK,GAAG,CAAA;IACtB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAQ;YACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpC,IAAI,CAAC,KAAK;gBACR,MAAM,IAAI,kBAAkB,CAAC;oBAC3B,QAAQ;oBACR,IAAI,EAAE,GAAG,KAAK,EAAE;iBACjB,CAAC,CAAA;YACJ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YACrD,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBAAE,KAAK,GAAG,IAAI,CAAA;YACtD,CAAC;YACD,IAAI,CAAC,KAAK;gBACR,MAAM,IAAI,iBAAiB,CAAC;oBAC1B,QAAQ;oBACR,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAA;QACN,CAAC;IACH,CAAC;IAED,IACE,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACpB,OAAO,SAAS,KAAK,QAAQ;QAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAEzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAQ;YACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;YACjE,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,kBAAkB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;YACjE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YACrD,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAAG,IAAgC,CAAC,GAAG,CAAC,CAAC;oBAC/D,KAAK,GAAG,IAAI,CAAA;YAChB,CAAC;YACD,IAAI,CAAC,KAAK;gBACR,MAAM,IAAI,iBAAiB,CAAC;oBAC1B,QAAQ;oBACR,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAA;QACN,CAAC;AACL,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH,MAAM,UAAU,MAAM,CACpB,QAA6B,EAC7B,GAAe;IAEf,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAE5B,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,GAAG,MAAM,CAAA;IAExC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,SAAS,KAAK,QAAQ;QACxB,MAAM,IAAI,0BAA0B,CAAC;YACnC,QAAQ;YACR,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAA;IAEJ,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;IAC3B,MAAM,SAAS,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAEhE,IAAI,IAAI,GAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAEnC,gCAAgC;IAChC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAE,CAAA;QAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,mBAAmB,CAAC;gBAC5B,QAAQ;gBACR,KAAK,EAAE,KAAoD;aAC5D,CAAC,CAAA;QACJ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;YAC5C,IACE,KAAK,CAAC,IAAI,KAAK,QAAQ;gBACvB,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBAEpC,OAAO,KAAK,CAAA;YACd,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;YAC1D,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;IAED,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7E,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;gBAChE,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,SAAS;wBAAE,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC,CAAA;yBAC1C,CAAC;wBACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BACjD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAC,CAAA;4BAClD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAC,IAAK,IAAI,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;wBAC5D,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IACE,GAAG,YAAY,aAAa,CAAC,qBAAqB;oBAClD,GAAG,YAAY,MAAM,CAAC,wBAAwB;oBAE9C,MAAM,IAAI,iBAAiB,CAAC;wBAC1B,QAAQ;wBACR,IAAI,EAAE,IAAI;wBACV,UAAU,EAAE,gBAAgB;wBAC5B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;qBACrB,CAAC,CAAA;gBACJ,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,iBAAiB,CAAC;gBAC1B,QAAQ;gBACR,IAAI,EAAE,IAAI;gBACV,UAAU,EAAE,gBAAgB;gBAC5B,IAAI,EAAE,CAAC;aACR,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1D,CAAC;AA6BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiGG;AACH,MAAM,UAAU,MAAM,CACpB,QAA6B,EAC7B,GAAG,CAAC,IAAI,CAAwB;IAEhC,IAAI,MAAM,GAAmC,EAAE,CAAA;IAC/C,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1C,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAC/C,CAAA;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBAC9B,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CACjB,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAE,IAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAClD,IAAI,EAAE,CAAC;gBACV,CAAC,CAAC,EAAE,CAAA;QAER,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,CAAC,KAA2B,EAAE,KAAc,EAAE,EAAE;gBAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;oBACzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAe,CAAC,CAAC,CAAA;gBACxD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;oBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAgB,CAAC,CAAA;gBACnE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;oBAChE,MAAM,IAAI,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACnD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;YAC/C,CAAC,CAAA;YAED,MAAM;gBACJ,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACzB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CACxC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3B,CAAA;oBACH,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;wBACzD,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;wBACzB,CAAC,CAAC,IAAI,CAAA;gBACV,CAAC,CAAC,IAAI,EAAE,CAAA;QACZ,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,QAAQ,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAA;QACvC,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC9B,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,EAAE,CAAA;AAC1C,CAAC;AAgCD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,MAAM,CACpB,QAA6B;IAE7B,OAAO,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAU,CAAA;AACjD,CAAC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,MAAM,UAAU,IAAI,CAGlB,QAOG,EACH,UAAwB,EAAE;IAE1B,OAAO,OAAO,CAAC,IAAI,CAAC,QAAoB,EAAE,OAAO,CAAU,CAAA;AAC7D,CAAC;AAmBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,MAAM,UAAU,OAAO,CASrB,GAAuC,EACvC,IAAsD,EACtD,OAKC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAc,CAAC,CAAA;IACvD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QACvB,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC1D,OAAO,IAAa,CAAA;AACtB,CAAC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,WAAW,CAAC,OAA0B;IACpD,OAAO,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;AAC1C,CAAC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,SAAS;IAGrD,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,KAAK,GAKN;QACC,KAAK,CAAC,sDAAsD,EAAE;YAC5D,YAAY,EAAE;gBACZ,UAAU,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC5B,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChD,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC5C,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1C,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;aACvC;SACF,CAAC,CAAA;QAnBc;;;;mBAAO,4BAA4B;WAAA;IAoBrD,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,SAAS;IAGtD,YAAY,EACV,QAAQ,EACR,IAAI,GAIL;QACC,KAAK,CAAC,cAAc,IAAI,oBAAoB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QATlD;;;;mBAAO,6BAA6B;WAAA;IAUtD,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,SAAS;IAQrD,YAAY,EACV,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,IAAI,GAML;QACC,KAAK,CACH;YACE,gBAAgB,IAAI,uDAAuD;SAC5E,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ;YACE,YAAY,EAAE;gBACZ,4BAA4B,aAAa,CAAC,MAAM,CAAC,UAAiB,CAAC,GAAG;gBACtE,WAAW,IAAI,KAAK,IAAI,SAAS;aAClC;SACF,CACF,CAAA;QA5Be;;;;mBAAO,4BAA4B;WAAA;QAErD;;;;;WAAkB;QAClB;;;;;WAAa;QACb;;;;;WAA2C;QAC3C;;;;;WAAY;QAyBV,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,SAAS;IAKvD,YAAY,EACV,QAAQ,EACR,KAAK,GAIN;QACC,KAAK,CACH;YACE,+CACE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EACpC,SAAS,MAAM,CAAC,QAAQ,CAAC,IAAI;SAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAA;QAjBe;;;;mBAAO,8BAA8B;WAAA;QAEvD;;;;;WAAkB;QAiBhB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,SAAS;IAG9D,YAAY,EACV,QAAQ,EACR,MAAM,EACN,QAAQ,GAKT;QACC,KAAK,CACH,cAAc,MAAM,4CAA4C,QAAQ,IAAI,EAC5E;YACE,YAAY,EAAE,CAAC,UAAU,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,aAAa,QAAQ,EAAE,CAAC;SACtE,CACF,CAAA;QAhBe;;;;mBAAO,qCAAqC;WAAA;IAiB9D,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,2BAA4B,SAAQ,MAAM,CAAC,SAAS;IAE/D,YAAY,IAAY;QACtB,KAAK,CAAC,gBAAgB,IAAI,qBAAqB,CAAC,CAAA;QAFhC;;;;mBAAO,sCAAsC;WAAA;IAG/D,CAAC;CACF"}
1
+ {"version":3,"file":"AbiEvent.js","sourceRoot":"","sources":["../../core/AbiEvent.ts"],"names":[],"mappings":"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"}
@@ -2,29 +2,15 @@ import * as abitype from 'abitype';
2
2
  import * as AbiItem from './AbiItem.js';
3
3
  import * as AbiParameters from './AbiParameters.js';
4
4
  import * as Hex from './Hex.js';
5
- /**
6
- * ABI-decodes function arguments according to the ABI Item's input types (`inputs`).
7
- *
8
- * @example
9
- * ```ts twoslash
10
- * import { AbiFunction } from 'ox'
11
- *
12
- * const approve = AbiFunction.from('function approve(address, uint256)')
13
- *
14
- * const data = AbiFunction.encodeData(
15
- * approve,
16
- * ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 69420n]
17
- * )
18
- * // '0x095ea7b3000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa960450000000000000000000000000000000000000000000000000000000000010f2c'
19
- *
20
- * const input = AbiFunction.decodeData(approve, data) // [!code focus]
21
- * // @log: ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 69420n]
22
- * ```
23
- *
24
- * @param abiFunction - The ABI Item to decode.
25
- * @param data - The data to decode.
26
- */
27
- export function decodeData(abiFunction, data) {
5
+ // eslint-disable-next-line jsdoc/require-jsdoc
6
+ export function decodeData(...parameters) {
7
+ const [abiFunction, data] = (() => {
8
+ if (Array.isArray(parameters[0])) {
9
+ const [abi, name, data] = parameters;
10
+ return [fromAbi(abi, name), data];
11
+ }
12
+ return parameters;
13
+ })();
28
14
  const { overloads } = abiFunction;
29
15
  if (Hex.size(data) < 4)
30
16
  throw new AbiItem.InvalidSelectorSizeError({ data });
@@ -37,103 +23,15 @@ export function decodeData(abiFunction, data) {
37
23
  return undefined;
38
24
  return AbiParameters.decode(item.inputs, Hex.slice(data, 4));
39
25
  }
40
- /**
41
- * ABI-decodes a function's result according to the ABI Item's output types (`outputs`).
42
- *
43
- * :::tip
44
- *
45
- * This function is typically used to decode contract function return values (e.g. the response of an `eth_call` or the `input` property of a Transaction).
46
- *
47
- * See the [End-to-end Example](#end-to-end).
48
- *
49
- * :::
50
- *
51
- * @example
52
- * ```ts twoslash
53
- * import { AbiFunction } from 'ox'
54
- *
55
- * const data = '0x000000000000000000000000000000000000000000000000000000000000002a'
56
- *
57
- * const totalSupply = AbiFunction.from('function totalSupply() returns (uint256)')
58
- *
59
- * const output = AbiFunction.decodeResult(totalSupply, data)
60
- * // @log: 42n
61
- * ```
62
- *
63
- * @example
64
- * You can extract an ABI Function from a JSON ABI with {@link ox#AbiFunction.(fromAbi:function)}:
65
- *
66
- * ```ts twoslash
67
- * // @noErrors
68
- * import { Abi, AbiFunction } from 'ox'
69
- *
70
- * const data = '0x000000000000000000000000000000000000000000000000000000000000002a'
71
- *
72
- * const erc20Abi = Abi.from([...]) // [!code hl]
73
- * const totalSupply = AbiFunction.fromAbi(erc20Abi, 'totalSupply') // [!code hl]
74
- *
75
- * const output = AbiFunction.decodeResult(totalSupply, data)
76
- * // @log: 42n
77
- * ```
78
- *
79
- * @example
80
- * ### End-to-end
81
- *
82
- * Below is an end-to-end example of using `AbiFunction.decodeResult` to decode the result of a `balanceOf` contract call on the [Wagmi Mint Example contract](https://etherscan.io/address/0xfba3912ca04dd458c843e2ee08967fc04f3579c2).
83
- *
84
- * ```ts twoslash
85
- * import 'ox/window'
86
- * import { Abi, AbiFunction } from 'ox'
87
- *
88
- * // 1. Extract the Function from the Contract's ABI.
89
- * const abi = Abi.from([
90
- * // ...
91
- * {
92
- * name: 'balanceOf',
93
- * type: 'function',
94
- * inputs: [{ name: 'account', type: 'address' }],
95
- * outputs: [{ name: 'balance', type: 'uint256' }],
96
- * stateMutability: 'view',
97
- * },
98
- * // ...
99
- * ])
100
- * const balanceOf = AbiFunction.fromAbi(abi, 'balanceOf')
101
- *
102
- * // 2. Encode the Function Input.
103
- * const data = AbiFunction.encodeData(
104
- * balanceOf,
105
- * ['0xd2135CfB216b74109775236E36d4b433F1DF507B']
106
- * )
107
- *
108
- * // 3. Perform the Contract Call.
109
- * const response = await window.ethereum!.request({
110
- * method: 'eth_call',
111
- * params: [
112
- * {
113
- * data,
114
- * to: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
115
- * },
116
- * ],
117
- * })
118
- *
119
- * // 4. Decode the Function Output. // [!code focus]
120
- * const balance = AbiFunction.decodeResult(balanceOf, response) // [!code focus]
121
- * // @log: 42n
122
- * ```
123
- *
124
- * :::note
125
- *
126
- * For simplicity, the above example uses `window.ethereum.request`, but you can use any
127
- * type of JSON-RPC interface.
128
- *
129
- * :::
130
- *
131
- * @param abiFunction - ABI Function to decode
132
- * @param data - ABI-encoded function output
133
- * @param options - Decoding options
134
- * @returns Decoded function output
135
- */
136
- export function decodeResult(abiFunction, data, options = {}) {
26
+ // eslint-disable-next-line jsdoc/require-jsdoc
27
+ export function decodeResult(...parameters) {
28
+ const [abiFunction, data, options = {}] = (() => {
29
+ if (Array.isArray(parameters[0])) {
30
+ const [abi, name, data, options] = parameters;
31
+ return [fromAbi(abi, name), data, options];
32
+ }
33
+ return parameters;
34
+ })();
137
35
  const values = AbiParameters.decode(abiFunction.outputs, data, options);
138
36
  if (values && Object.keys(values).length === 0)
139
37
  return undefined;
@@ -144,136 +42,35 @@ export function decodeResult(abiFunction, data, options = {}) {
144
42
  }
145
43
  return values;
146
44
  }
147
- /**
148
- * ABI-encodes function arguments (`inputs`), prefixed with the 4 byte function selector.
149
- *
150
- * :::tip
151
- *
152
- * This function is typically used to encode a contract function and its arguments for contract calls (e.g. `data` parameter of an `eth_call` or `eth_sendTransaction`).
153
- *
154
- * See the [End-to-end Example](#end-to-end).
155
- *
156
- * :::
157
- *
158
- * @example
159
- * ```ts twoslash
160
- * import { AbiFunction } from 'ox'
161
- *
162
- * const approve = AbiFunction.from('function approve(address, uint256)')
163
- *
164
- * const data = AbiFunction.encodeData( // [!code focus]
165
- * approve, // [!code focus]
166
- * ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 69420n] // [!code focus]
167
- * ) // [!code focus]
168
- * // @log: '0x095ea7b3000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa960450000000000000000000000000000000000000000000000000000000000010f2c'
169
- * ```
170
- *
171
- * @example
172
- * You can extract an ABI Function from a JSON ABI with {@link ox#AbiFunction.(fromAbi:function)}:
173
- *
174
- * ```ts twoslash
175
- * // @noErrors
176
- * import { Abi, AbiFunction } from 'ox'
177
- *
178
- * const erc20Abi = Abi.from([...]) // [!code hl]
179
- * const approve = AbiFunction.fromAbi(erc20Abi, 'approve') // [!code hl]
180
- *
181
- * const data = AbiFunction.encodeData(
182
- * approve,
183
- * ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 69420n]
184
- * )
185
- * // @log: '0x095ea7b3000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa960450000000000000000000000000000000000000000000000000000000000010f2c'
186
- * ```
187
- *
188
- * @example
189
- * ### End-to-end
190
- *
191
- * Below is an end-to-end example of using `AbiFunction.encodeData` to encode the input of a `balanceOf` contract call on the [Wagmi Mint Example contract](https://etherscan.io/address/0xfba3912ca04dd458c843e2ee08967fc04f3579c2).
192
- *
193
- * ```ts twoslash
194
- * import 'ox/window'
195
- * import { Abi, AbiFunction } from 'ox'
196
- *
197
- * // 1. Extract the Function from the Contract's ABI.
198
- * const abi = Abi.from([
199
- * // ...
200
- * {
201
- * name: 'balanceOf',
202
- * type: 'function',
203
- * inputs: [{ name: 'account', type: 'address' }],
204
- * outputs: [{ name: 'balance', type: 'uint256' }],
205
- * stateMutability: 'view',
206
- * },
207
- * // ...
208
- * ])
209
- * const balanceOf = AbiFunction.fromAbi(abi, 'balanceOf')
210
- *
211
- * // 2. Encode the Function Input. // [!code focus]
212
- * const data = AbiFunction.encodeData( // [!code focus]
213
- * balanceOf, // [!code focus]
214
- * ['0xd2135CfB216b74109775236E36d4b433F1DF507B'] // [!code focus]
215
- * ) // [!code focus]
216
- *
217
- * // 3. Perform the Contract Call.
218
- * const response = await window.ethereum!.request({
219
- * method: 'eth_call',
220
- * params: [
221
- * {
222
- * data,
223
- * to: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
224
- * },
225
- * ],
226
- * })
227
- *
228
- * // 4. Decode the Function Output.
229
- * const balance = AbiFunction.decodeResult(balanceOf, response)
230
- * ```
231
- *
232
- * :::note
233
- *
234
- * For simplicity, the above example uses `window.ethereum.request`, but you can use any
235
- * type of JSON-RPC interface.
236
- *
237
- * :::
238
- *
239
- * @param abiFunction - ABI Function to encode
240
- * @param args - Function arguments
241
- * @returns ABI-encoded function name and arguments
242
- */
243
- export function encodeData(abiFunction, ...args) {
45
+ // eslint-disable-next-line jsdoc/require-jsdoc
46
+ export function encodeData(...parameters) {
47
+ const [abiFunction, args = []] = (() => {
48
+ if (Array.isArray(parameters[0])) {
49
+ const [abi, name, args] = parameters;
50
+ return [fromAbi(abi, name, { args }), args];
51
+ }
52
+ const [abiFunction, args] = parameters;
53
+ return [abiFunction, args];
54
+ })();
244
55
  const { overloads } = abiFunction;
245
56
  const item = overloads
246
57
  ? fromAbi([abiFunction, ...overloads], abiFunction.name, {
247
- args: args[0],
58
+ args,
248
59
  })
249
60
  : abiFunction;
250
61
  const selector = getSelector(item);
251
- const data = args.length > 0
252
- ? AbiParameters.encode(item.inputs, args[0])
253
- : undefined;
62
+ const data = args.length > 0 ? AbiParameters.encode(item.inputs, args) : undefined;
254
63
  return data ? Hex.concat(selector, data) : selector;
255
64
  }
256
- /**
257
- * ABI-encodes a function's result (`outputs`).
258
- *
259
- * @example
260
- * ```ts twoslash
261
- * import { AbiFunction } from 'ox'
262
- *
263
- * const totalSupply = AbiFunction.from('function totalSupply() returns (uint256)')
264
- * const output = AbiFunction.decodeResult(totalSupply, '0x000000000000000000000000000000000000000000000000000000000000002a')
265
- * // 42n
266
- *
267
- * const data = AbiFunction.encodeResult(totalSupply, 42n) // [!code focus]
268
- * // @log: '0x000000000000000000000000000000000000000000000000000000000000002a'
269
- * ```
270
- *
271
- * @param abiFunction - The ABI item to encode the function output for.
272
- * @param output - The function output to encode.
273
- * @param options - Encoding options.
274
- * @returns The encoded function output.
275
- */
276
- export function encodeResult(abiFunction, output, options = {}) {
65
+ // eslint-disable-next-line jsdoc/require-jsdoc
66
+ export function encodeResult(...parameters) {
67
+ const [abiFunction, output, options = {}] = (() => {
68
+ if (Array.isArray(parameters[0])) {
69
+ const [abi, name, output, options] = parameters;
70
+ return [fromAbi(abi, name), output, options];
71
+ }
72
+ return parameters;
73
+ })();
277
74
  const { as = 'Array' } = options;
278
75
  const values = (() => {
279
76
  if (abiFunction.outputs.length === 1)
@@ -1 +1 @@
1
- {"version":3,"file":"AbiFunction.js","sourceRoot":"","sources":["../../core/AbiFunction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbiFunction.js","sourceRoot":"","sources":["../../core/AbiFunction.ts"],"names":[],"mappings":"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"}