You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: balances.go
    path of file: ./repos/evmos/tests/e2e/upgrade
    
    the code of the file until where you have to start completion: // Copyright Tharsis Labs Ltd.(Evmos)
// SPDX-License-Identifier:ENCL-1.0(https://github.com/evmos/evmos/blob/main/LICENSE)

package upgrade

import (
	"context"
	"fmt"

	"github.com/cosmos/cosmos-sdk/codec"
	sdk "github.com/cosmos/cosmos-sdk/types"
	banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
)

// GetBalance returns the account balance for the given address bech32 string through
// the CLI query.
func (m *Manager) GetBalance(ctx context.Context, chainID, address string) (sdk.Coins, error) {
	queryArgs := QueryArgs{
		Module:     "bank",
		SubCommand: "balances",
		Args:      
    
func (m *Manager) GetBalance(ctx context.Context, chainID, address string) (sdk.Coins, error) {
	queryArgs := QueryArgs{
		Module:     "bank",
		SubCommand: "balances",
		Args:       []string{address},
		ChainID:    chainID,
	}

	exec, err := m.CreateModuleQueryExec(queryArgs)
	if err != nil {
		return sdk.Coins{}, fmt.Errorf("create exec error: %w", err)
	}

	outBuff, errBuff, err := m.RunExec(ctx, exec)
	if err != nil {
		return sdk.Coins{}, fmt.Errorf("run exec error: %w", err)
	}
	if errBuff.String() != "" {
		return sdk.Coins{}, fmt.Errorf("evmos query error: %s", errBuff.String())
	}

	return UnpackBalancesResponse(m.ProtoCodec, outBuff.String())
}