Get Abi Item
Look up a function, event, or error by name or selector from a parsed ABI in viem-go
Loading...
Look up a function, event, or error by name or selector from a parsed ABI in viem-go
GetAbiItem finds a function, event, or error on a parsed ABI by name or selector (hex string). For overloaded functions, pass Args to disambiguate. Use the direct lookups (GetFunction, GetEvent, GetError, GetFunctionBySelector, GetEventByTopic, GetErrorBySelector) when you already know the kind of item or the key.
import ( "math/big" "github.com/ethereum/go-ethereum/common" "github.com/ChefBingbong/viem-go/abi")import "github.com/ChefBingbong/viem-go/abi"
// parsed is *abi.ABI from abi.Parse(...)
// By nameitem, err := parsed.GetAbiItem("transfer", nil)
// By selector (4-byte hex or 32-byte event topic hex)item, err := parsed.GetAbiItem("0xa9059cbb", nil)
// Overloaded function: disambiguate with argsitem, err := parsed.GetAbiItem("foo", &abi.GetAbiItemOptions{ Args: []any{common.HexToAddress("0x..."), big.NewInt(1)},})
// Type-assert to Function, Event, or Error (or pointer)switch v := item.(type) {case abi.Function: fmt.Println(v.Signature)case abi.Event: fmt.Println(v.Topic.Hex())case abi.Error: fmt.Println(v.Selector)}(a *ABI) GetAbiItem(nameOrSelector string, opts *GetAbiItemOptions) (AbiItem, error)When you know the item kind or key, use:
fn, err := parsed.GetFunction("transfer")
ev, err := parsed.GetEventByTopic(topic)
errItem, err := parsed.GetErrorBySelector(selector)