Usage Examples
Event Filtering
Copy
Ask AI
import { Event } from 'tevm'
const transferEvent = new Event({
type: "event",
name: "Transfer",
inputs: [
{ type: "address", name: "from", indexed: true },
{ type: "address", name: "to", indexed: true },
{ type: "uint256", name: "value", indexed: false }
]
})
// Get logs for Transfer events
const logs = await provider.getLogs({
address: tokenAddress,
topics: [transferEvent.getSelector()],
fromBlock: 'latest'
})
Multiple Event Types
Copy
Ask AI
import { Event } from 'tevm'
const transferEvent = new Event({
type: "event",
name: "Transfer",
inputs: [
{ type: "address", name: "from", indexed: true },
{ type: "address", name: "to", indexed: true },
{ type: "uint256", name: "value" }
]
})
const approvalEvent = new Event({
type: "event",
name: "Approval",
inputs: [
{ type: "address", name: "owner", indexed: true },
{ type: "address", name: "spender", indexed: true },
{ type: "uint256", name: "value" }
]
})
// Filter for either event type
const logs = await provider.getLogs({
address: tokenAddress,
topics: [[
transferEvent.getSelector(),
approvalEvent.getSelector()
]]
})
Event Registry
Copy
Ask AI
import { Event } from 'tevm'
const events = [
new Event({
type: "event",
name: "Transfer",
inputs: [
{ type: "address", name: "from", indexed: true },
{ type: "address", name: "to", indexed: true },
{ type: "uint256", name: "value" }
]
}),
new Event({
type: "event",
name: "Approval",
inputs: [
{ type: "address", name: "owner", indexed: true },
{ type: "address", name: "spender", indexed: true },
{ type: "uint256", name: "value" }
]
})
]
// Create selector → event mapping
const registry = new Map(
events.map(e => [e.getSelector(), e])
)
// Look up event by selector
function findEvent(log) {
const selector = log.topics[0]
return registry.get(selector)
}
See Also
- getSignature - Get event signature string
- encodeTopics - Encode indexed parameters
- decodeLog - Decode event log data

