#!/usr/bin/env python3 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__), ".."))) import mango # nopep8 parser = argparse.ArgumentParser(description="Shows all Wrapped SOL accounts for the wallet.") 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.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 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.") else: print(f"{token.name}:") for account in token_accounts: print(f" {account.address}: {account.value}")