Skip to main content

    Usage Examples

    Filter by Single Address

    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" }
      ]
    })
    
    // Get all transfers FROM specific address
    const topics = transferEvent.encodeTopics({
      from: "0x742d35Cc6634C0532925a3b844Bc9e7595f51e3e"
    })
    
    const logs = await provider.getLogs({
      address: tokenAddress,
      topics: topics
    })
    

    Filter by Multiple Criteria

    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" }
      ]
    })
    
    // Get transfers FROM one address TO another
    const topics = transferEvent.encodeTopics({
      from: "0x742d35Cc6634C0532925a3b844Bc9e7595f51e3e",
      to: "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4"
    })
    
    const logs = await provider.getLogs({
      address: tokenAddress,
      topics: topics
    })
    

    Partial Filtering

    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" }
      ]
    })
    
    // Only filter by TO address (FROM is any)
    const topics = transferEvent.encodeTopics({
      to: "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4"
    })
    
    // Topics array: [selector, null, toAddress]
    const logs = await provider.getLogs({
      address: tokenAddress,
      topics: topics
    })
    

    See Also