package examples
import (
"fmt"
syPallet "github.com/availproject/avail-go-sdk/metadata/pallets/system"
"github.com/availproject/avail-go-sdk/primitives"
SDK "github.com/availproject/avail-go-sdk/sdk"
)
func RunAccountBalance() {
sdk, err := SDK.NewSDK(SDK.TuringEndpoint)
PanicOnError(err)
accountId, err := primitives.NewAccountIdFromAddress("5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY")
PanicOnError(err)
// Via Storage RPC
storageAt, err := sdk.Client.StorageAt(primitives.None[primitives.H256]())
PanicOnError(err)
storage := syPallet.StorageAccount{}
val, err := storage.Fetch(&storageAt, accountId)
PanicOnError(err)
fmt.Println("Free Balance: ", val.Value.AccountData.Free.ToHuman())
fmt.Println("Reserved Balance: ", val.Value.AccountData.Reserved.ToHuman())
fmt.Println("Frozen Balance: ", val.Value.AccountData.Frozen.ToHuman())
// Via Abstraction
balance, err := SDK.Account.Balance(sdk.Client, accountId)
PanicOnError(err)
fmt.Println("Free Balance: ", balance.Free.ToHuman())
fmt.Println("Reserved Balance: ", balance.Reserved.ToHuman())
fmt.Println("Frozen Balance: ", balance.Frozen.ToHuman())
fmt.Println("RunAccountBalance finished correctly.")
}