github.com/ava-labs/avalanchego@v1.11.11/wallet/chain/x/context.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package x 5 6 import ( 7 "context" 8 9 "github.com/ava-labs/avalanchego/api/info" 10 "github.com/ava-labs/avalanchego/vms/avm" 11 "github.com/ava-labs/avalanchego/wallet/chain/x/builder" 12 ) 13 14 func NewContextFromURI(ctx context.Context, uri string) (*builder.Context, error) { 15 infoClient := info.NewClient(uri) 16 xChainClient := avm.NewClient(uri, builder.Alias) 17 return NewContextFromClients(ctx, infoClient, xChainClient) 18 } 19 20 func NewContextFromClients( 21 ctx context.Context, 22 infoClient info.Client, 23 xChainClient avm.Client, 24 ) (*builder.Context, error) { 25 networkID, err := infoClient.GetNetworkID(ctx) 26 if err != nil { 27 return nil, err 28 } 29 30 chainID, err := infoClient.GetBlockchainID(ctx, builder.Alias) 31 if err != nil { 32 return nil, err 33 } 34 35 asset, err := xChainClient.GetAssetDescription(ctx, "AVAX") 36 if err != nil { 37 return nil, err 38 } 39 40 txFees, err := infoClient.GetTxFee(ctx) 41 if err != nil { 42 return nil, err 43 } 44 45 return &builder.Context{ 46 NetworkID: networkID, 47 BlockchainID: chainID, 48 AVAXAssetID: asset.AssetID, 49 BaseTxFee: uint64(txFees.TxFee), 50 CreateAssetTxFee: uint64(txFees.CreateAssetTxFee), 51 }, nil 52 }