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  }