AbiEvent.encode
ABI-encodes the provided event input (inputs
) into an array of Event Topics.
Imports
Named
import { AbiEvent } from 'ox'
Examples
import { AbiEvent } from 'ox'
const transfer = AbiEvent.from(
'event Transfer(address indexed from, address indexed to, uint256 value)'
)
const { topics } = AbiEvent.encode(transfer)
['0x406dade31f7ae4b5dbc276258c28dde5ae6d5c2773c5745802c493a2360e55e0']
Passing Arguments
You can pass indexed
parameter values to AbiEvent.encode
.
TypeScript types will be inferred from the ABI Event, to guard you from inserting the wrong values.
For example, the Transfer
event below accepts an address
type for the from
and to
attributes.
import { AbiEvent } from 'ox'
const transfer = AbiEvent.from(
'event Transfer(address indexed from, address indexed to, uint256 value)'
)
const { topics } = AbiEvent.encode(transfer, {
from: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8'
})
[ '0x406dade31f7ae4b5dbc276258c28dde5ae6d5c2773c5745802c493a2360e55e0', '0x00000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266', '0x0000000000000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8' ]
End-to-end
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.
import 'ox/window'
import { AbiEvent, Hex } from 'ox'
// 1. Instantiate the `Transfer` ABI Event.
const transfer = AbiEvent.from(
'event Transfer(address indexed from, address indexed to, uint256 value)',
)
// 2. Encode the ABI Event into Event Topics.
const { topics } = AbiEvent.encode(transfer)
// 3. Query for events matching the encoded Topics.
const logs = await window.ethereum!.request({
method: 'eth_getLogs',
params: [
{
address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
fromBlock: Hex.fromNumber(19760235n),
toBlock: Hex.fromNumber(19760240n),
topics,
},
],
})
[ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000c04d9e9278ec5e4d424476d3ebec70cb5d648d1", "0x000000000000000000000000000000000000000000000000000000000000025b", ]
Definition
function encode<abiEvent>(
abiEvent: abiEvent | AbiEvent,
[args]: encode.Args<abiEvent>,
): encode.ReturnType
Source: src/core/AbiEvent.ts
Parameters
abiEvent
- Type:
abiEvent | AbiEvent
The event to encode.
[args]
- Type:
encode.Args<abiEvent>
Return Type
The encoded event topics.
encode.ReturnType