package main
import (
"context"
"fmt"
"log"
"net/http"
"github.com/0xsequence/go-sequence/indexer"
"github.com/0xsequence/go-sequence/lib/prototyp"
)
const indexerToken = "AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY"
func main() {
ctx := context.TODO()
seqIndexerGW := indexer.NewIndexerGatewayClient(
"https://indexer.sequence.app",
http.DefaultClient,
)
authCtx, err := indexer.WithHTTPRequestHeaders(ctx, http.Header{
"X-Access-Key": []string{indexerToken},
})
if err != nil {
log.Fatal(err)
}
accountAddress := "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9"
contractWhitelist := []prototyp.Hash{
prototyp.HashFromString("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"),
prototyp.HashFromString("0x3c499c542cef5e3811e1192ce70d8cc03d5c3359"),
prototyp.HashFromString("0xaf88d065e77c8cc2239327c5edb3a432268e5831"),
}
_, nativeBalances, balances, err := seqIndexerGW.GetTokenBalancesDetails(
authCtx,
nil, // No chainId filter
[]string{"arbitrum", "polygon", "mainnet"},
&indexer.TokenBalancesFilter{
AccountAddresses: []prototyp.Hash{
prototyp.HashFromString(accountAddress),
},
ContractWhitelist: contractWhitelist,
},
nil, // Default omitMetadata
nil, // Default page
)
if err != nil {
log.Fatal(err)
}
// Native Balances
for _, nativeBalance := range nativeBalances {
fmt.Printf("chainId: %d (native balances)\n", nativeBalance.ChainId)
for _, result := range nativeBalance.Results {
fmt.Printf("\tbalance: %s\n", result.Balance)
}
}
// Token Balances
for _, balance := range balances {
fmt.Printf("chainId: %d (token balances)\n", balance.ChainID)
for _, result := range balance.Results {
fmt.Printf("\tcontractAddress: %s, balance: %s\n",
result.ContractAddress, result.Balance)
}
}
}