Updated show-token-balance to work with any wallet address and mint.

This commit is contained in:
Geoff Taylor 2021-09-16 17:40:19 +01:00
parent 43be1fa192
commit 3ac729ac5c
2 changed files with 20 additions and 5 deletions

View File

@ -3,6 +3,10 @@
import argparse
import os
import sys
import typing
from decimal import Decimal
from solana.publickey import PublicKey
sys.path.insert(0, os.path.abspath(
os.path.join(os.path.dirname(__file__), "..")))
@ -13,13 +17,24 @@ mango.ContextBuilder.add_command_line_parameters(parser)
mango.Wallet.add_command_line_parameters(parser)
parser.add_argument("--symbol", type=str, required=True,
help="symbol of the token to look up, e.g. 'ETH'")
parser.add_argument("--owner", type=PublicKey,
help="wallet address of the wallet owner")
parser.add_argument("--mint", type=PublicKey,
help="mint address of the token")
parser.add_argument("--decimals", type=Decimal, default=Decimal(6),
help="number of decimal places for token values")
args: argparse.Namespace = mango.parse_args(parser)
context = mango.ContextBuilder.from_command_line_parameters(args)
wallet = mango.Wallet.from_command_line_parameters_or_raise(args)
context: mango.Context = mango.ContextBuilder.from_command_line_parameters(args)
wallet: mango.Wallet = mango.Wallet.from_command_line_parameters_or_raise(args)
owner_address: PublicKey = args.owner or wallet.address
token = context.token_lookup.find_by_symbol_or_raise(args.symbol.upper())
token_accounts = mango.TokenAccount.fetch_all_for_owner_and_token(context, wallet.address, token)
if args.mint is not None:
token: mango.Token = mango.Token(args.symbol, args.symbol, args.mint, args.decimals)
else:
token = context.token_lookup.find_by_symbol_or_raise(args.symbol.upper())
token_accounts: typing.Sequence[mango.TokenAccount] = mango.TokenAccount.fetch_all_for_owner_and_token(
context, owner_address, token)
if len(token_accounts) == 0:
print("No wrapped SOL accounts.")

View File

@ -53,7 +53,7 @@ class TokenAccount(AddressableAccount):
return TokenAccount.load(context, new_account_address)
@staticmethod
def fetch_all_for_owner_and_token(context: Context, owner_public_key: PublicKey, token: Token) -> typing.List["TokenAccount"]:
def fetch_all_for_owner_and_token(context: Context, owner_public_key: PublicKey, token: Token) -> typing.Sequence["TokenAccount"]:
opts = TokenAccountOpts(mint=token.mint)
token_accounts = context.client.get_token_accounts_by_owner(owner_public_key, opts)