PHP WebShell
Текущая директория: /opt/BitGoJS/modules/statics/src
Просмотр файла: base.ts
import {
ConflictingCoinFeaturesError,
DisallowedCoinFeatureError,
InvalidIdError,
MissingRequiredCoinFeatureError,
} from './errors';
import { BaseNetwork } from './networks';
export enum CoinKind {
CRYPTO = 'crypto',
FIAT = 'fiat',
}
/**
* The coin family links related variants of a single coin together.
*
* Typically, each coin will have a testnet and mainnet variant,
* and these will both have the same coin family.
*
* For example, the coins `btc` and `tbtc` both belong to the same family, `btc`.
*/
export enum CoinFamily {
ADA = 'ada',
ALGO = 'algo',
APT = 'apt',
ARBETH = 'arbeth',
ATOM = 'atom',
AVAXC = 'avaxc',
AVAXP = 'avaxp',
BASEETH = 'baseeth',
BABY = 'baby',
BCH = 'bch',
BCHA = 'bcha',
BERA = 'bera',
BLD = 'bld', // Agoric
BSC = 'bsc',
BSV = 'bsv',
BTC = 'btc',
BTG = 'btg',
CELO = 'celo',
COREDAO = 'coredao',
COREUM = 'coreum',
CRONOS = 'cronos',
CSPR = 'cspr',
DASH = 'dash',
DOGE = 'doge',
DOT = 'dot',
ETH = 'eth',
ETH2 = 'eth2',
ETHW = 'ethw',
ETC = 'etc',
EOS = 'eos',
FETCH = 'fetch',
FIAT = 'fiat',
FLR = 'flr',
HASH = 'hash', // Provenance
HBAR = 'hbar',
ICP = 'icp',
INIT = 'init',
INJECTIVE = 'injective',
ISLM = 'islm',
KAVA = 'kava',
LNBTC = 'lnbtc',
LTC = 'ltc',
MANTRA = 'mantra',
MON = 'mon',
POLYGON = 'polygon',
POLYX = 'polyx',
NEAR = 'near',
OAS = 'oas',
OFC = 'ofc',
OPETH = 'opeth',
OSMO = 'osmo',
RBTC = 'rbtc',
SGB = 'sgb',
SEI = 'sei',
SOL = 'sol',
SONEIUM = 'soneium',
STT = 'stt',
SUI = 'sui',
STX = 'stx',
SUSD = 'susd',
TAO = 'tao',
THOR = 'thor',
TIA = 'tia', // Celestia
TON = 'ton',
TRX = 'trx',
VET = 'vet',
WORLD = 'world',
WEMIX = 'wemix',
XDC = 'xdc',
XLM = 'xlm',
XRP = 'xrp',
XTZ = 'xtz',
ZEC = 'zec',
ZETA = 'zeta',
ZKETH = 'zketh',
}
/**
* Coin features are yes or no questions about what a coin requires or is capable of.
*
* This allows coin-agnostic handling of coin-specific features. This is designed
* to replace checking the coin name against a whitelist of supported coins
* before executing some coin-specific logic, and instead allows one to check if a
* coin supports the coin-specific feature that the logic implements.
*/
export enum CoinFeature {
/*
* This coin supports creating wallets on different networks with the same keys. Only works for TSS account-base coins
*/
EVM_WALLET = 'evm-wallet',
/*
* This coin supports creating an EVM transaction using Metamask Institutional (MMI).
*/
METAMASK_INSTITUTIONAL = 'metamask-institutional',
/*
* The valueless transfer feature indicates that it is valid to send a transaction which moves zero units of the coin.
*
* An example is Ethereum, which uses zero value transactions to trigger contract calls.
*/
VALUELESS_TRANSFER = 'valueless-transfer',
/*
* Transaction data means there can be arbitrary data encoded in a transaction.
*
* Ethereum contract call data is an example.
*/
TRANSACTION_DATA = 'transaction-data',
/*
* Some coins have a higher precision range than IEEE 754 doubles, which are used to represent numbers in javascript.
*
* For these coins, we must use an arbitrary precision arithmetic library, and this feature indicates this requirement.
*/
REQUIRES_BIG_NUMBER = 'requires-big-number',
/*
* RMG requires all wallets to have a backup key held by a BitGo approved Key Recovery Service (KRS)
*/
REQUIRES_KRS_BACKUP_KEY = 'requires-krs-backup-key',
/*
* For customers which are not on a postpaid contract, we add an extra output to transactions which pays BitGo a fee.
*
* This fee is known as the "pay-as-you-go fee", or just "paygo" for short.
*
* Some coins are unable to create transactions with more than one output, so paygo outputs are not possible for these coins.
*/
PAYGO = 'paygo',
/*
* Does this coin align with the unspent model?
*
* These are typically Bitcoin and forks of it, such as Litecoin and Bitcoin Cash.
*/
UNSPENT_MODEL = 'unspent-model',
/*
* Does this coin align with the Lightning Network model?
*
* These are typically Lightning Network on unspent model coins, such as BTC and LBTC.
*/
LIGHTNING_MODEL = 'lightning-model',
/*
* Does this coin align with the account model?
*
* Examples of this coin type are Ethereum, XRP, and Stellar
*/
ACCOUNT_MODEL = 'account-model',
/*
* Does this coin support child-pays-for-parent transactions?
*
* These are special types of transactions which can accelerate the confirmation time
* of another transaction which is stuck in the mempool due to low fees.
*
* This is only possible for coins which follow the unspent model (UTXO coins).
*/
CHILD_PAYS_FOR_PARENT = 'cpfp',
/*
* Does this coin support tokens? These are distinct assets from the underlying coin, but run on the same network.
*
* For example, Ethereum's ERC 20 token standard means that it supports tokens, so it shall have this feature.
*/
SUPPORTS_TOKENS = 'supports-tokens',
/*
* Are fees for transactions of this coin paid for by the Enterprise (eg, Enterprise gas tank)?
*/
ENTERPRISE_PAYS_FEES = 'enterprise-pays-fees',
/*
* This coin requires that accounts keep a minimum balance as reserve
*/
REQUIRES_RESERVE = 'requires-reserve',
/**
* @deprecated This property is no longer valid. Please select the following custody option based on the BitGo org:
* * CUSTODY_BITGO_TRUST
* * CUSTODY_BITGO_NEW_YORK
* * CUSTODY_BITGO_GERMANY
* * CUSTODY_BITGO_SWITZERLAND
*/
CUSTODY = 'custody',
/*
This coin uses TSS for key creation and signing
*/
TSS = 'tss',
/*
* This coin supports staking
*/
STAKING = 'staking',
/*
* This coin supports liquid staking
*/
LIQUID_STAKING = 'liquid-staking',
/**
* This coin is deprecated
*/
DEPRECATED = 'deprecated',
/**
* This coin is a dummy object meant to be a placeholder for an unsupported token
*/
GENERIC_TOKEN = 'genericToken',
/*
* This coin supports custody in BitGo Trust SD entities
*/
CUSTODY_BITGO_TRUST = 'custody-bitgo-trust',
/*
* This coin supports custody in BitGo New York entities
*/
CUSTODY_BITGO_NEW_YORK = 'custody-bitgo-new-york',
/*
* This coin supports custody in BitGo Germany entities
*/
CUSTODY_BITGO_GERMANY = 'custody-bitgo-germany',
/*
* This coin supports custody in BitGo Switzerland entities
*/
CUSTODY_BITGO_SWITZERLAND = 'custody-bitgo-switzerland',
/*
* This coin supports custody in BitGo Switzerland entities
*/
CUSTODY_BITGO_FRANKFURT = 'custody-bitgo-frankfurt',
/*
* This coin supports custody in BitGo Singapore entities
*/
CUSTODY_BITGO_SINGAPORE = 'custody-bitgo-singapore',
/*
* This coin supports custody in BitGo Sister Trust 1 entities
*/
CUSTODY_BITGO_SISTER_TRUST_ONE = 'custody-bitgo-sister-trust-one',
/**
* This coin supports custody in BitGo Korea entities
*/
CUSTODY_BITGO_KOREA = 'custody-bitgo-korea',
/**
* This coin supports custody in BitGo Europe ApS entities
*/
CUSTODY_BITGO_EUROPE_APS = 'custody-bitgo-europe-aps',
/**
* This coin supports custody in BitGo MENA FZE entities
*/
CUSTODY_BITGO_MENA_FZE = 'custody-bitgo-mena-fze',
/**
* This coin supports custody in BitGo Custody MENA FZE entities
*/
CUSTODY_BITGO_CUSTODY_MENA_FZE = 'custody-bitgo-custody-mena-fze',
/*
* This coin has transactions that expire after a certain amount of time.
*/
EXPIRING_TRANSACTIONS = 'expiring-transactions',
/**
* This coin supports cold wallets that use a multisig signing protocol
*/
MULTISIG_COLD = 'multisig-cold',
/**
* This coin supports cold wallets that use a TSS signing protocol
*/
TSS_COLD = 'tss-cold',
/**
* This coin uses sha256 hash function for ECDSA TSS signatures
*/
SHA256_WITH_ECDSA_TSS = 'sha256-with-ecdsa-tss',
/**
* This coin is cosmos like coin
*/
COSMOS_LIKE_COINS = 'cosmos_like_coins',
/**
* This coin supports the ability to rebuild transactions on custody signing
*/
REBUILD_ON_CUSTODY_SIGNING = 'rebuild-on-custody-signing',
/**
* This coin supports higher limit for tx request rebuild, which is 10 by default
*/
INCREASED_TX_REQUEST_REBUILD_LIMIT = 'increased-tx-request-rebuild-limit',
/**
* This coin supports bulk transaction creation
*/
BULK_TRANSACTION = 'bulk-transaction',
/**
* This coin supports bulk ERC20 token transactions (token batching)
*/
ERC20_BULK_TRANSACTION = 'erc20-bulk-transaction',
/**
* This coin supports distributed custody wallets
*/
DISTRIBUTED_CUSTODY = 'distributed-custody',
/**
* This coin supports bulk staking transaction creation
*/
BULK_STAKING_TRANSACTION = 'bulk-staking-transaction',
/**
* This coin uses non-packed encoding for transaction data
*/
USES_NON_PACKED_ENCODING_FOR_TXDATA = 'uses-non-packed-encoding-for-txdata',
/**
* This coins supports MPCv2 for key creation and signing
*/
MPCV2 = 'mpcv2',
/**
* This coin supports acceleration or nonce filling txn for stuck transactions for tss wallet
*/
STUCK_TRANSACTION_MANAGEMENT_TSS = 'stuck-transaction-management-tss',
/**
* This coin supports acceleration or nonce filling txn for stuck transactions for onchain wallet
*/
STUCK_TRANSACTION_MANAGEMENT_ONCHAIN = 'stuck-transaction-management-onchain',
/**
* This coin is onboarded on etheruem rollup chain
*/
ETH_ROLLUP_CHAIN = 'eth-rollup-chain',
/**
* This coin supports EIP1559 proposal for transaction fee
*/
EIP1559 = 'EIP1559',
/**
* Fees for transactions of TSS wallet of this coin would be paid by the Enterprise i.e. Gas Tank
*/
TSS_ENTERPRISE_PAYS_FEES = 'tss-enterprise-pays-fees',
/**
* This coin supports alphanumeric memo id
*/
ALPHANUMERIC_MEMO_ID = 'alphanumeric-memo-id',
/**
* This coin supports WalletConnect
*/
WALLET_CONNECT_DEFI = 'wallet-connect-defi',
/**
* This coin is gated for TSS Support
*/
TSS_SUPPORT_GATED = 'tss-support-gated',
/**
* This coins is an EVM compatible coin and should use common EVM functionality
*/
SHARED_EVM_SIGNING = 'shared-evm-signing',
}
/**
* Some coins are representations of another underlying asset class. An example
* is Wrapped Bitcoin, which represents Bitcoin on the Ethereum blockchain.
*
* For these coins, the `UnderlyingAsset` provides a link to the actual
* asset for which the coin is a unit of account.
*/
export enum UnderlyingAsset {
INVALID_UNKNOWN = 'invalid_asset_type',
ADA = 'ada',
ALGO = 'algo',
APE = 'ape',
API3 = 'api3',
ARBETH = 'arbeth',
BASEETH = 'baseeth',
ATOM = 'atom',
AVAXC = 'avaxc',
AVAXP = 'avaxp',
AXL = 'AXL',
AXLV2 = 'axlv2',
BABY = 'baby',
BCH = 'bch',
BCHA = 'bcha',
BERA = 'bera',
BLD = 'bld', // Agoric
BSC = 'bsc',
BSV = 'bsv',
BTC = 'btc',
BTG = 'btg',
DASH = 'dash',
DOT = 'dot',
CELO = 'celo', // Celo main coin
COREDAO = 'coredao',
COREUM = 'coreum',
CRONOS = 'cronos',
CSPR = 'cspr',
ETH = 'eth',
ETH2 = 'eth2',
ETHW = 'ethw',
ETC = 'etc',
EOS = 'eos',
ERD = 'erd',
EURCVV0 = 'eurcvv0',
EURCV = 'eurcv',
EUROC = 'euroc',
EURR = 'eurr',
FETCH = 'fetch',
FLR = 'flr',
GTC = 'gtc',
HASH = 'hash', // Provenance
HBAR = 'hbar', // Hedera main coin
ICP = 'icp',
INIT = 'init',
INJECTIVE = 'injective',
ISLM = 'islm',
KAVA = 'kava',
LNBTC = 'lnbtc',
LTC = 'ltc',
MANTRA = 'mantra',
MON = 'mon',
NEAR = 'near',
OAS = 'oas',
OPETH = 'opeth',
OSMO = 'osmo',
POLYGON = 'polygon',
RBTC = 'rbtc', // RSK main coin
SEI = 'sei',
SGB = 'sgb',
SOL = 'sol',
SUI = 'sui',
STX = 'stx',
TIA = 'tia', // Celestia
TON = 'ton',
TRX = 'trx',
SONEIUM = 'soneium',
STT = 'stt',
VET = 'vet',
WEMIX = 'wemix',
WORLD = 'world',
XLM = 'xlm',
XDC = 'xdc',
XRP = 'xrp',
XTZ = 'xtz',
ZEC = 'zec',
ZETA = 'zeta',
ZKETH = 'zketh',
// ERC 20 tokens
'$Evmosia.com' = '$evmosia.com',
'0xREVIEW' = '0xreview',
'1INCH' = '1inch',
'1UP' = '1up',
'3CRV' = '3crv',
AAVE = 'aave',
ABT = 'abt',
ACE = 'ace',
ACEV2 = 'acev2',
ACX = 'acx',
ACXT = 'acxt',
ACH = 'ach',
ADABEAR = 'adabear',
ADABULL = 'adabull',
ADX = 'adx',
AE = 'ae',
AERGO = 'aergo',
AERGO1 = 'aergo1',
AGEUR = 'ageur',
AGI = 'agi',
AGIX = 'agix',
AGLD = 'agld',
AGWD = 'agwd',
AION = 'aion',
AJNA = 'ajna',
AKRO = 'akro',
ALCX = 'alcx',
ALD = 'ald',
ALDRIN = 'aldrin',
ALEPH = 'aleph',
ALGOBEAR = 'algobear',
ALGOBULL = 'algobull',
ALGODOOM = 'algodoom',
ALGOHEDGE = 'algohedge',
ALGOMOON = 'algomoon',
ALTDOOM = 'altdoom',
ALTMOON = 'altmoon',
ALI = 'ali',
ALICE = 'alice',
ALK = 'alk',
ALM = 'alm',
ALPHA = 'alpha',
ALTBEAR = 'altbear',
ALTBULL = 'altbull',
ALTHEDGE = 'althedge',
AMKT = 'amkt',
AMN = 'amn',
AMO = 'amo',
AMP = 'amp',
AMPL = 'ampl',
AMON = 'amon',
AMPX = 'ampx',
ANA = 'ana',
ANC = 'anc',
ANGLE = 'angle',
ANKR = 'ankr',
ANKRETH = 'ankreth',
ANML = 'anml',
ANT = 'ant',
ANTV2 = 'antv2',
AOA = 'aoa',
APPC = 'appc',
APT = 'apt',
AQT = 'aqt',
ARCT = 'arct',
ARCX = 'arcx',
ARKM = 'arkm',
ARMOR = 'armor',
ARPA = 'arpa',
ARTEQ = 'arteq',
ASD = 'asd',
AST = 'ast',
ASTO = 'asto',
ATA = 'ata',
ATF = 'atf',
ATH = 'ath',
ATL = 'atl',
ATLAS = 'atlas',
ATOMBEAR = 'atombear',
ATOMBULL = 'atombull',
ATRI = 'atri',
AUCTION = 'auction',
AUDD = 'audd',
AUDF = 'audf',
AUDIO = 'audio',
AUDX = 'audx',
AUSD = 'ausd',
AUSDT = 'ausdt',
AUST = 'aust',
AVA = 'ava',
AVT = 'avt',
AWBTC = 'awbtc',
AXPR = 'axpr',
AXS = 'axs',
AXSV2 = 'axsv2',
AYFI = 'ayfi',
AZUKI = 'azuki',
AZUKI2 = 'azuki2',
AZUKIPEPE = 'azukipepe',
BADGER = 'badger',
BAI = 'bai',
BAL = 'bal',
BAND = 'band',
BANK = 'bank',
BAO = 'bao',
BASIC = 'basic',
BAT = 'bat',
BAX = 'bax',
BBANK = 'bbank',
BBSAMO = 'bbsamo',
BBTC = 'BBTC',
BBX = 'bbx',
BCAP = 'bcap',
BCC = 'bcc',
BCHBEAR = 'bchbear',
BCHBULL = 'bchbull',
BCHDOOM = 'bchdoom',
BCHHEDGE = 'bchhedge',
BCHMOON = 'bchmoon',
BCIO = 'bcio',
BCUT = 'bcut',
BCT = 'bct',
BDXN = 'bdxn',
BEAM = 'beam',
BEAR = 'bear',
BEARSHIT = 'bearshit',
BED = 'bed',
BEND = 'bend',
BEPRO = 'bepro',
BETA = 'beta',
BGB = 'bgb',
BGBG = 'bgbg',
BICO = 'bico',
BID = 'bid',
BIDL = 'bidl',
BIGTIME = 'bigtime',
BIRD = 'bird',
BIT = 'bit',
BKT = 'bkt',
BKX = 'bkx',
BLCT = 'blct',
BLT = 'blt',
BLUR = 'blur',
BLUR0x083 = 'blur0x083',
BLUR0xb93 = 'blur0xb93',
BLZ = 'blz',
BNB = 'bnb',
BNBBEAR = 'bnbbear',
BNBBULL = 'bnbbull',
BNBDOOM = 'bnbdoom',
BNBHEDGE = 'bnbhedge',
BNBMOON = 'bnbmoon',
BNK = 'bnk',
BNL = 'bnl',
BNT = 'bnt',
BNTY = 'bnty',
BNVDA = 'bnvda',
BOB = 'bob',
BOND = 'bond',
BONK = 'bonk',
BONE = 'bone',
BORG = 'borg',
BOTTO = 'botto',
BLOCKS = 'blocks',
BOX = 'box',
BOBA = 'boba',
BRD = 'brd',
BRIBE = 'bribe',
BRZ = 'brz',
BSGG = 'bsgg',
BST = 'bst',
BSVBEAR = 'bsvbear',
BSVBULL = 'bsvbull',
BSVDOOM = 'bsvdoom',
BSVHEDGE = 'bsvhedge',
BSVMOON = 'bsvmoon',
BSX = 'bsx',
BTC2XFLI = 'btc2xfli',
BTMXBEAR = 'btmxbear',
BTMXBULL = 'btmxbull',
BTRST = 'btrst',
BTSG = 'btsg',
BTT = 'btt',
BTU = 'btu',
BUIDL = 'buidl',
BULL = 'bull',
BULLSHIT = 'bullshit',
BURP = 'burp',
BUSD = 'busd',
BUY = 'buy',
BPT = 'bpt',
BVOL = 'bvol',
BXX = 'bxx',
BXXV1 = 'bxxv1',
BZZ = 'bzz',
C3 = 'c3',
C6P = 'c6p',
C8P = 'c8p',
C98 = 'c98',
CACXT = 'cacxt',
CADX = 'cadx',
CAG = 'cag',
CANTO = 'canto',
CAPS = 'caps',
CARV = 'carv',
CASH = 'cash',
CBAT = 'cbat',
CBC = 'cbc',
CBETH = 'cbeth',
CBRL = 'cbrl',
CCAI = 'ccai',
CCT = 'cct',
CDAG = 'cdag',
CDAI = 'cdai',
CDAIV2 = 'cdaiV2',
CDT = 'cdt',
CEL = 'cel',
CELLS = 'cells',
CELR = 'celr',
CERE = 'cere',
CETH = 'ceth',
CFX = 'cfx',
CHAINLINK = 'chainlink',
CHART = 'chart',
CHO = 'cho',
CHFX = 'chfx',
CHR = 'chr',
CHSB = 'chsb',
CHZ = 'chz',
CIBO = 'cibo',
CIX100 = 'cix100',
CLIQ = 'cliq',
CLN = 'cln',
CLT = 'clt',
CLXY = 'clxy',
CLV = 'clv',
CMFI = 'cmfi',
CNFI = 'cnfi',
CNG = 'cng',
CNYX = 'cnyx',
COLLAR = 'collar',
COMBO = 'combo',
COMP = 'comp',
CONV = 'conv',
COPE = 'cope',
CORE = 'core',
COS = 'cos',
COTI = 'coti',
COVAL = 'coval',
COVER = 'cover',
COVERPROTOCOL = 'coverprotocol',
COW = 'cow',
CPAY = 'cpay',
CPLT = 'cplt',
CPOOL = 'cpool',
CQT = 'cqt',
CQX = 'cqx',
CRA = 'cra',
CRDT = 'crdt',
CRE = 'cre',
CREAM = 'cream',
CREP = 'crep',
CRI = 'cri',
CRO = 'cro',
CRV = 'crv',
CRPT = 'crpt',
CRPT1 = 'crpt1',
CSLV = 'cslv',
CSOL = 'csol',
CSP = 'csp',
CTSI = 'ctsi',
CTX = 'ctx',
CUBE = 'cube',
CUSD = 'cusd',
CUSDC = 'cusdc',
CVXFXS = 'cvxfxs',
CWAR = 'cwar',
CWBTC = 'cwbtc',
CVC = 'cvc',
CVX = 'cvx',
CXT = 'cxt',
CYBER = 'cyber',
CZRX = 'czrx',
DACXI = 'dacxi',
DADI = 'dadi',
DAMM = 'damm',
DAI = 'dai',
DAO = 'dao',
DAOLANG = 'daolang',
DAR = 'dar',
DATA = 'data',
DATAV2 = 'datav2',
DATAECON = 'dataecon',
DAWN = 'dawn',
DEC = 'dec',
DEGO = 'dego',
DENT = 'dent',
DEP = 'dep',
DEPAY = 'depay',
DEXA = 'dexa',
DEXE = 'dexe',
DFD = 'dfd',
DFI = 'dfi',
DFL = 'dfl',
DFX = 'dfx',
DGCL = 'dgcl',
DGD = 'dgd',
DGLD = 'dgld',
DGX = 'dgx',
DHT = 'dht',
DIGG = 'digg',
DIA = 'dia',
DING = 'ding',
DIPE = 'dipe',
DMG = 'dmg',
DMT = 'dmt',
DNA = 'dna',
DNT = 'dnt',
DODO = 'dodo',
DOG = 'dog',
DOGE = 'doge',
DOGEBEAR = 'dogebear',
DOGEBEAR2021 = 'dogebear2021',
DOGEBULL = 'dogebull',
DOMI = 'domi',
DOOM = 'doom',
DOOMSHIT = 'doomshit',
DOSE = 'dose',
DOTK = 'dotk',
DPAY = 'dpay',
DPI = 'dpi',
DPX = 'dpx',
DPY = 'dpy',
DRAM = 'dram',
DRGNBEAR = 'drgnbear',
DRGNBULL = 'drgnbull',
DRPU = 'drpu',
DRV = 'drv',
DUC = 'duc',
DUCK = 'duck',
DUSD = 'dusd',
DUSK = 'dusk',
DUST = 'dust',
DX1U = 'dx1u',
DXGT = 'dxgt',
DXO = 'dxo',
DXPT = 'dxpt',
DXST = 'dxst',
DYDX = 'dydx',
DYN = 'dyn',
EASY = 'easy',
EBTCQ = 'ebtcq',
ECHT = 'echt',
ECOX = 'ecox',
EDEN = 'eden',
EDISON = 'edison',
EDLC = 'edlc',
EDO = 'edo',
ELON = 'elon',
EMB = 'emb',
EDN = 'edn',
EDR = 'edr',
EFI = 'efi',
EGL = 'egl',
EGLD = 'egld',
EGOLD = 'egold',
EIGEN = 'eigen',
ELF = 'elf',
ELU = 'elu',
EMAID = 'emaid',
EMX = 'emx',
ENA = 'ena',
ENG = 'eng',
ENJ = 'enj',
ENS = 'ens',
EON = 'eon',
EOP = 'eop',
EOSBEAR = 'eosbear',
EOSBULL = 'eosbull',
EOSDOOM = 'eosdoom',
EOSHEDGE = 'eoshedge',
EOSMOON = 'eosmoon',
EQO = 'eqo',
ESE = 'ese',
ETA = 'eta',
ETHBULL = 'ethbull',
ETCBEAR = 'etcbear',
ETCBULL = 'etcbull',
ETCDOOM = 'etcdoom',
ETCHEDOOM = 'etchedoom',
ETCMOON = 'etcmoon',
ETHBEAR = 'ethbear',
ETHDOOM = 'ethdoom',
ETHFI = 'ethfi',
'eth:block' = 'eth:block',
'eth:bito' = 'eth:bito',
'ETH:ECASH' = 'eth:ecash',
'ETH:OORT' = 'eth:oort',
'eth:ultra' = 'eth:ultra',
'eth:dragonx' = 'eth:dragonx',
ETHHEDGE = 'ethhedge',
ETHMOON = 'ethmoon',
ETHOPT = 'ethopt',
ETHOS = 'ethos',
ETHTON = 'ethton',
ETHX = 'ethx',
ETV = 'etv',
ETX = 'etx',
EUL = 'eul',
EURE = 'eure',
EURL = 'eurl',
EUROE = 'euroe',
EUROP = 'europ',
EURS = 'eurs',
EURST = 'eurst',
EURT = 'eurt',
EURX = 'eurx',
EUX = 'eux',
EVER = 'ever',
EVERY = 'every',
EVRY = 'evry',
EVX = 'evx',
EXCHBEAR = 'exchbear',
EXCHBULL = 'exchbull',
EXCHDOOM = 'exchdoom',
EXCHHEDGE = 'exchhedge',
EXCHMOON = 'exchmoon',
EXE = 'exe',
FANT = 'fant',
FARM = 'farm',
FEI = 'fei',
FET = 'fet',
FET1 = 'fet1',
FDT = 'fdt',
FDUSD = 'fdusd',
FF1 = 'ff1',
FF6000 = 'ff6000',
FFT = 'fft',
FIDA = 'fida',
FIDU = 'fidu',
FIN = 'fin',
FIRE = 'fire',
FIRSTBLOOD = 'firstblood',
FIS = 'fis',
FIXED = 'fixed',
FLIP = 'flip',
FLOKI = 'floki',
FLUX = 'flux',
FLY = 'fly',
FMF = 'fmf',
FOLD = 'fold',
FOR = 'for',
FOREX = 'forex',
FORT = 'fort',
FORTH = 'forth',
FOX = 'fox',
FPIS = 'fpis',
FRAX = 'frax',
FRONT = 'front',
FT = 'ft',
FTM = 'ftm',
FTT = 'ftt',
FTT20 = 'ftt20',
FTX2 = 'ftx2',
FUCKFTX = 'fuckftx',
FUN = 'fun',
FWB = 'fwb',
FX = 'fx',
FXRT = 'fxrt',
FXS = 'fxs',
G = 'g',
GAL = 'gal',
GALA = 'gala',
GALAV2 = 'galav2',
'GAME.COM' = 'game.com',
GAMMA = 'gamma',
'sol:gari' = 'sol:gari',
'tsol:slnd' = 'tsol:slnd',
'tsol:orca' = 'tsol:orca',
'tsol:usdc' = 'tsol:usdc',
'tsol:ray' = 'tsol:ray',
'tsol:gmt' = 'tsol:gmt',
'tsol:usdt' = 'tsol:usdt',
'tsol:srm' = 'tsol:srm',
'tsol:gari' = 'tsol:gari',
GAS = 'gas',
GATE = 'gate',
GBPT = 'gbpt',
GBPX = 'gbpx',
GDT = 'gdt',
GEAR = 'gear',
GEC = 'gec',
GEL = 'gel',
GEN = 'gen',
GENE = 'gene',
GENIE = 'genie',
GF = 'gf',
GFI = 'gfi',
GHST = 'ghst',
GHUB = 'ghub',
GIGDROP = 'gigdrop',
GIV = 'giv',
GLDX = 'gldx',
GLM = 'glm',
GMT = 'gmt',
'sol:gmt' = 'sol:gmt',
GNO = 'gno',
GNT = 'gnt',
'sol:goat' = 'sol:goat',
GODS = 'gods',
GOHM = 'gohm',
GOG = 'gog',
GOLD = 'gold',
GOM = 'gom',
GOMINING = 'gomining',
GOT = 'got',
GRID = 'grid',
GRT = 'grt',
GST = 'gst',
GT = 'gt',
GTAAVE18DP = 'gtaave18dp',
GTBAT18DP = 'gtbat18dp',
GTCOMP18DP = 'gtcomp18dp',
GTGRT18DP = 'gtgrt18dp',
GTLINK18DP = 'gtlink18dp',
GTMKR18DP = 'gtmkr18dp',
GTSNX18DP = 'gtsnx18dp',
GTUNI18DP = 'gtuni18dp',
GTUSDT6DP = 'gtusdt6dp',
GTYFI18DP = 'gtyfi18dp',
GTWBTC8DP = 'gtwbtc8dp',
GTO = 'gto',
GTERC2DP = 'gterc2dp',
GTERC6DP = 'gterc6dp',
GTERC18DP = 'gterc18dp',
GUSD = 'gusd',
GUSDT = 'gusdt',
GXC = 'gxc',
GXT = 'gxt',
GYEN = 'gyen',
HBB = 'hbb',
HBTC = 'hbtc',
HCN = 'hcn',
HDO = 'hdo',
HEDG = 'hedg',
HEDGE = 'hedge',
HEDGESHIT = 'hedgeshit',
HEX = 'hex',
HFT = 'hft',
HGET = 'hget',
HIGH = 'high',
HIFI = 'hifi',
HIT = 'hit',
HKDX = 'hkdx',
HLC = 'hlc',
HMT = 'hmt',
'sol:hnt' = 'sol:hnt',
HOLD = 'hold',
HOLY = 'holy',
HOP = 'hop',
HOT = 'hot',
HPO = 'hpo',
HQG = 'hqg',
HQT = 'hqt',
HST = 'hst',
HT = 'ht',
HTBEAR = 'htbear',
HTBULL = 'htbull',
HTDOOM = 'htdoom',
'hteth:bgerchv2' = 'hteth:bgerchv2',
HTHEDGE = 'hthedge',
HTMOON = 'htmoon',
HUM = 'hum',
HUMV2 = 'humv2',
HUSD = 'husd',
HXRO = 'hxro',
HYB = 'hyb',
HYDRO = 'hydro',
HYDROPROTOCOL = 'hydroprotocol',
I8 = 'i8',
IBEUR = 'ibeur',
IBOX = 'ibox',
IBVOL = 'ibvol',
ICETH = 'iceth',
ID = 'id',
IDEX = 'idex',
IDRC = 'idrc',
IDRT = 'idrt',
ILV = 'ilv',
IMX = 'imx',
IMXV2 = 'imxv2',
INCX = 'incx',
IND = 'ind',
INDEX = 'index',
INDI = 'indi',
INF = 'inf',
INJ = 'inj',
INJV2 = 'injv2',
INST = 'inst',
INSUR = 'insur',
INV = 'inv',
INX = 'inx',
IOST = 'iost',
IOTX = 'iotx',
IP3 = 'ip3',
ISF = 'isf',
ISR = 'isr',
IVO = 'ivo',
IVY = 'ivy',
JASMY = 'jasmy',
JBC = 'jbc',
JCR = 'jcr',
JCG = 'jcg',
'sol:jet' = 'sol:jet',
JFIN = 'jfin',
JPYX = 'jpyx',
JSOL = 'jsol',
KARATE = 'karate',
KARMA = 'karma',
KAS = 'kas',
KCASH = 'kcash',
KCS = 'kcs',
KEEP = 'keep',
KEY = 'key',
KILL0 = 'kill0',
KIN = 'kin',
'sol:kin' = 'sol:kin',
KINE = 'kine',
KING = 'king',
KINTO = 'kinto',
KIRO = 'kiro',
KISHUI = 'kishui',
KITTY = 'kitty',
KNC = 'knc',
KNC2 = 'knc2',
KOIN = 'koin',
KOL = 'kol',
KOZ = 'koz',
KP3R = 'kp3r',
KRO = 'kro',
KROM = 'krom',
KTRC = 'ktrc',
KZE = 'kze',
L3 = 'l3',
L3USD = 'l3usd',
LA = 'la',
LADYS = 'ladys',
LAYER = 'layer',
LAYERZERO = 'layerzero',
LBA = 'lba',
LCX = 'lcx',
LDO = 'ldo',
LEND = 'lend',
LEO = 'leo',
LEOBEAR = 'leobear',
LEOBULL = 'leobull',
LEODOOM = 'leodoom',
LEOHEDGE = 'leohedge',
LEOMOON = 'leomoon',
LEV = 'lev',
LEVER = 'lever',
LGO = 'lgo',
LIEN = 'lien',
LIF3 = 'lif3',
LIKE = 'like',
LINA = 'lina',
LINK = 'link',
LINKBEAR = 'linkbear',
LINKBULL = 'linkbull',
LION = 'lion',
LIT = 'lit',
LITH = 'lith',
LITv2 = 'litv2',
LKR = 'lkr',
LMWR = 'lmwr',
LNC = 'lnc',
LOKA = 'loka',
LOOKS = 'looks',
LOOM = 'loom',
LOOM1 = 'loom1',
LOVE = 'love',
LOVELY = 'lovely',
LOWB = 'lowb',
LPT = 'lpt',
LQID = 'lqid',
LQTY = 'lqty',
LRC = 'lrc',
LRCV2 = 'lrcv2',
LSETH = 'lseth',
LSK = 'lsk',
LTCBEAR = 'ltcbear',
LTCBULL = 'ltcbull',
LTCDOOM = 'ltcdoom',
LTCHEDGE = 'ltchedge',
LTCMOON = 'ltcmoon',
LTO = 'lto',
LUA = 'lua',
LUNA = 'luna',
LUNAWORMHOLE = 'lunawormhole',
LYN = 'lyn',
LYXE = 'lyxe',
MAGIC = 'magic',
MANA = 'mana',
MAPS = 'maps',
MASA = 'masa',
MASK = 'mask',
MATH = 'math',
MATIC = 'matic',
MATICBEAR = 'maticbear',
MATICBEAR2021 = 'maticbear2021',
MATICBULL = 'maticbull',
MATTER = 'matter',
MAV = 'mav',
MBS = 'mbs',
MCAU = 'mcau',
MCB = 'mcb',
MCDAI = 'mcdai',
MCO = 'mco',
MCO2 = 'mco2',
MCS = 'mcs',
MCX = 'mcx',
MDFC = 'mdfc',
MDT = 'mdt',
MDX = 'mdx',
MEAN = 'mean',
MEDIA = 'media',
MEDIAv2 = 'mediav2',
MEDX = 'medx',
MEME = 'meme',
MEOW = 'meow',
MER = 'mer',
MET = 'met',
META = 'meta',
METIS = 'metis',
MEW = 'mew',
MFG = 'mfg',
MFPH = 'mfph',
MFT = 'mft',
MIDBEAR = 'midbear',
MIDBULL = 'midbull',
MIDDOOM = 'middoom',
MIDHEDGE = 'midhedge',
MIDMOON = 'midmoon',
MILKV2 = 'milkv2',
MIM = 'mim',
MIR = 'mir',
MITH = 'mith',
MIX = 'mix',
MIZN = 'mizn',
MKR = 'mkr',
MLN = 'mln',
MNS = 'mns',
MNT = 'mnt',
MNDE = 'mnde',
'sol:mnde' = 'sol:mnde',
MOC = 'moc',
MOCA = 'moca',
MOCHI = 'mochi',
MOF = 'mof',
MOG = 'mog',
MOH = 'moh',
MOON = 'moon',
MOONSHIT = 'moonshit',
MOTHER = 'mother',
MNGO = 'mngo',
MPAY = 'mpay',
MPL = 'mpl',
'sol:mplx' = 'sol:mplx',
MRTWEET = 'mrtweet',
MSN = 'msn',
MSOL = 'msol',
MTA = 'mta',
MTCN = 'mtcn',
MTH = 'mth',
MTL = 'mtl',
MTV = 'mtv',
MUSD = 'musd',
MVL = 'mvl',
MVI = 'mvi',
MWT = 'mwt',
MYRC = 'myrc',
MYTH = 'myth',
NAAI = 'naai',
NAS = 'nas',
NCT = 'nct',
NDX = 'ndx',
'NEAR-ERC20' = 'near-erc20',
NEU = 'neu',
NEWO = 'newo',
NEXO = 'nexo',
'NFCWIN-SB-2021' = 'nfcwin-sb-2021',
NFTFI = 'nftfi',
NFTX = 'nftx',
NGNT = 'ngnt',
NIAX = 'niax',
NKN = 'nkn',
NMR = 'nmr',
NOSANA = 'nosana',
NOTE = 'note',
NOVA = 'nova',
NPT = 'npt',
NPXS = 'npxs',
NS2DRP = 'ns2drp',
NU = 'nu',
NULS = 'nuls',
NUTS = 'nuts',
NXM = 'nxm',
NYM = 'nym',
NZDX = 'nzdx',
OAX = 'oax',
OCEAN = 'ocean',
OCEANV2 = 'oceanv2',
OCTAV = 'octav',
OGN = 'ogn',
OGV = 'ogv',
OKB = 'okb',
OKBBEAR = 'okbbear',
OKBBULL = 'okbbull',
OKBDOOM = 'okbdoom',
OKBHEDGE = 'okbhedge',
OKBMOON = 'okbmoon',
OM = 'om',
OMOLD = 'omold',
OMG = 'omg',
OMNI = 'omni',
OMNIA = 'omnia',
ONDO = 'ondo',
ONL = 'onl',
ONT = 'ont',
OOKI = 'ooki',
OP = 'op',
OPIUM = 'opium',
OPT = 'opt',
ORAI = 'orai',
ORBS = 'orbs',
ORC = 'orc',
ORN = 'orn',
'sol:orca' = 'sol:orca',
OS = 'os',
OSETH = 'oseth',
OUSD = 'ousd',
OUSG = 'ousg',
OWN = 'own',
OXT = 'oxt',
OXY = 'oxy',
OHM = 'ohm',
PACT = 'pact',
PAI = 'pai',
PAR = 'par',
PASS = 'pass',
PAU = 'pau',
PAX = 'pax',
PAXG = 'paxg',
PAXGBEAR = 'paxgbear',
PAXGBULL = 'paxgbull',
PAY = 'pay',
PBCH = 'pbch',
PBTC = 'pbtc',
PDA = 'PDA',
PDATA = 'pdata',
PDI = 'pdi',
PEAQ = 'peaq',
PEBBLE = 'pebble',
PEG = 'peg',
PENDLE = 'pendle',
PEOPLE = 'people',
PEPE = 'pepe',
PERL = 'perl',
PERP = 'perp',
PETH = 'peth',
PHA = 'pha',
PHNX = 'phnx',
PICK = 'pick',
PICKLE = 'pickle',
PIE = 'pie',
PINE = 'pine',
PIRATE = 'pirate',
PLAY = 'play',
PIXEL = 'pixel',
PLC = 'plc',
PFCT = 'pfct',
PLANET = 'planet',
PLNX = 'plnx',
PLX = 'plx',
PMA = 'pma',
PNT = 'pnt',
POL = 'pol',
POLIS = 'polis',
POLY = 'poly',
POLYX = 'polyx',
POLS = 'pols',
POND = 'pond',
PONYS = 'ponys',
PORT = 'port',
POWR = 'powr',
PPT = 'ppt',
PRDX = 'prdx',
PRINTS = 'prints',
PRISM = 'prism',
PRO = 'pro',
PROM = 'prom',
PROS = 'pros',
PRT = 'prt',
PRTS = 'prts',
PSOL = 'psol',
PSP = 'psp',
PSTAKE = 'pstake',
PSY = 'psy',
PTU = 'ptu',
PUNDIX = 'pundix',
PUSD = 'pusd',
PUSH = 'push',
PV01 = 'pv01',
PXP = 'pxp',
PYR = 'pyr',
PYUSD = 'pyusd',
QASH = 'qash',
QCAD = 'qcad',
'sol:qcad' = 'sol:qcad',
QOM = 'qom',
QUICK = 'quick',
QDT = 'qdt',
QKC = 'qkc',
QLINDO = 'qlindo',
QNT = 'qnt',
QRDO = 'qrdo',
QRL = 'qrl',
QSP = 'qsp',
QVT = 'qvt',
RAD = 'rad',
RADAR = 'radar',
RAIN = 'rain',
RALPH = 'ralph',
RAMP = 'ramp',
RARE = 'rare',
RARI = 'rari',
RAY = 'ray',
'sol:ray' = 'sol:ray',
RAZOR = 'razor',
RBANK = 'rbank',
RBN = 'rbn',
RBX = 'rbx',
RBY = 'rby',
RCOIN = 'rcoin',
RCT = 'rct',
RDN = 'rdn',
RDNT = 'rdnt',
REAL = 'real',
REB = 'reb',
REBL = 'rebl',
REEF = 'reef',
REF = 'ref',
REKT = 'rekt',
REKTGAME = 'rektgame',
REN = 'ren',
RENBTC = 'renbtc',
RENDOGE = 'rendoge',
REP = 'rep',
REPV2 = 'repv2',
REQ = 'REQ',
'RETH-ROCKET' = 'reth-rocket',
'RETH-STAFI' = 'reth-stafi',
'RETH-H' = 'reth-h',
RETH2 = 'reth2',
REVV = 'revv',
REZ = 'rez',
RFOX = 'rfox',
RFR = 'rfr',
RFUEL = 'rfuel',
RGT = 'rgt',
RIF = 'rif',
RINGX = 'ringx',
RIO = 'rio',
RLC = 'rlc',
RLUSD = 'rlusd',
RLY = 'rly',
RN = 'rn',
RND = 'rnd',
RNDR = 'rndr',
RNDT = 'rndt',
ROOK = 'rook',
RON = 'ron',
RONC = 'ronc',
ROOBEE = 'roobee',
RPK = 'rpk',
RPL = 'rpl',
RSR = 'rsr',
RSWETH = 'rsweth',
RUBX = 'rubx',
RUEDATK = 'ruedatk',
RUN = 'run',
RUNE = 'rune',
RVR = 'rvr',
RYOSHI = 'ryoshi',
SAFE = 'safe',
SAIL = 'sail',
SAITABIT = 'saitabit',
SALT = 'salt',
SAND = 'sand',
SASHIMI = 'sashimi',
SAMO = 'samo',
SBC = 'sbc',
'sol:sbc' = 'sol:sbc',
'sol:veur' = 'sol:veur',
'sol:vchf' = 'sol:vchf',
'sol:tbill' = 'sol:tbill',
SBF = 'sbf',
SBR = 'sbr',
// Saber IOU Token (Liquidity Mining Rewards)
SBRIOU = 'sbriou',
SCNSOL = 'scnsol',
SCOPE = 'scope',
SD = 'sd',
SDL = 'sdl',
SECO = 'seco',
SETH = 'seth',
'SETH-H' = 'seth-h',
SETH2 = 'seth2',
SEWERCOIN = 'sewercoin',
SFI = 'sfi',
SGA = 'sga',
SGDX = 'sgdx',
SGR = 'sgr',
SGT = 'sgt',
SHDW = 'shdw',
SHEESH = 'sheesh',
SHIDO = 'shido',
SHK = 'shk',
SHOPX = 'shopx',
SHOW = 'show',
SHIB = 'shib',
SHR = 'shr',
SIH = 'sih',
SILV = 'silv',
SIPHER = 'sipher',
SIS = 'sis',
SKALE = 'skale',
SLAB = 'slab',
SLC = 'slc',
SLCL = 'slcl',
'sol:slnd' = 'sol:slnd',
SLOT = 'slot',
SLP = 'slp',
SLRS = 'slrs',
SLVX = 'slvx',
SMT = 'smt',
SNC = 'snc',
SNM = 'snm',
SNOV = 'snov',
SNT = 'snt',
SNX = 'snx',
SNY = 'sny',
SOC = 'soc',
SOHM = 'sohm',
SOMM = 'somm',
SOS = 'sos',
SPA = 'spa',
SPELL = 'spell',
SPF = 'spf',
SPO = 'spo',
SOLVE = 'solve',
'SQUID2.0' = 'squid2.0',
SRNT = 'srnt',
SRM = 'srm',
'sol:srm' = 'sol:srm',
SSV = 'ssv',
STARS = 'stars',
STATE = 'state',
STBU = 'stbu',
STC = 'stc',
STCV2 = 'stcv2',
STEP = 'step',
STETH = 'steth',
STG = 'stg',
STKAAVE = 'stkaave',
STMX = 'stmx',
STORE = 'store',
STORJ = 'storj',
STORM = 'storm',
STPT = 'stpt',
STRIKE = 'strike',
STRK = 'strk',
STRONG = 'strong',
STSOL = 'stsol',
STZEN = 'stzen',
'SUI-ERC20' = 'sui-erc20',
SUN = 'sun',
SUNNY = 'sunny',
SUPER = 'super',
SUPERPERIO = 'superperio',
SUSD = 'susd',
SUSDE = 'susde',
SUSHI = 'sushi',
SQUIG = 'squig',
SVT = 'svt',
SWAG = 'swag',
SWAP = 'SWAP',
SWEAT = 'sweat',
SWETH = 'sweth',
SWISE = 'swice',
SWITCH = 'switch',
SWRV = 'swrv',
SXP = 'sxp',
SYN = 'syn',
SYNCH = 'synch',
SYRUP = 'syrup',
'SYNTH-SUSD' = 'synth-susd',
TAO = 'tao',
THRESHOLD = 'threshold',
THEU = 'theu',
TAUD = 'taud',
TBILL = 'tbill',
TBTC1 = 'tbtc1',
TBTC2 = 'tbtc2',
TCAD = 'tcad',
TCO = 'tco',
TEIGEN = 'teigen',
TEINU = 'teinu',
TEL = 'tel',
TELEGRAMDAO = 'telegramdao',
TEN = 'ten',
TENX = 'tenx',
TERC = 'terc',
TEUROC = 'teuroc',
TERC2DP = 'terc2dp',
TERC6DP = 'terc6dp',
TERC18DP = 'terc18DP',
TERC20 = 'terc20',
TERC2DP1 = 'terc2dp1',
TERC2DP2 = 'terc2dp2',
TERC2DP3 = 'terc2dp3',
TERC2DP4 = 'terc2dp4',
TERC2DP5 = 'terc2dp5',
TERC6DP1 = 'terc6dp1',
TERC6DP2 = 'terc6dp2',
TERC6DP3 = 'terc6dp3',
TERC6DP4 = 'terc6dp4',
TERC6DP5 = 'terc6dp5',
TERC18DP1 = 'terc18dp1',
TERC18DP2 = 'terc18dp2',
TERC18DP3 = 'terc18dp3',
TERC18DP4 = 'terc18dp4',
TERC18DP5 = 'terc18dp5',
TERC18DP6 = 'terc18dp6',
TERC18DP7 = 'terc18dp7',
TERC18DP8 = 'terc18dp8',
TERC18DP9 = 'terc18dp9',
TERC18DP10 = 'terc18dp10',
TERC18DP11 = 'terc18dp11',
TERC18DP12 = 'terc18dp12',
TERC18DP13 = 'terc18dp13',
TERC18DP14 = 'terc18dp14',
TERC18DP15 = 'terc18dp15',
BGERCH = 'bgerch',
TERM = 'term',
TGBP = 'tgbp',
TUSDS = 'tusds',
TGOUSD = 'tgousd',
'hteth:gousd' = 'hteth:gousd',
'hteth:usd1' = 'hteth:usd1',
THKD = 'thkd',
THUNDER = 'thunder',
TIO = 'tio',
TIOX = 'tiox',
TKMK = 'tkmk',
TKNT = 'tknt',
TKO = 'tko',
TKX = 'tkx',
TLAB = 'tlab',
TLM = 'tlm',
TLOS = 'tlos',
TMATIC = 'tmatic',
TMSN = 'tmsn',
TNT = 'tnt',
TOKAMAK = 'tokamak',
TOKE = 'toke',
TOKEN = 'token',
TOMI = 'tomi',
TOMOBEAR = 'tomobear',
TOMOBEAR2 = 'tomobear2',
TOMOBULL = 'tomobull',
TOK = 'tok',
TONCOIN = 'toncoin',
TOPM = 'topm',
TRAC = 'trac',
TRAXX = 'traxx',
TRB = 'trb',
TRIBE = 'tribe',
TRIBL = 'tribl',
TRL = 'trl',
TROY = 'troy',
TRST = 'trst',
TRU = 'tru',
TRUF = 'truf',
TRUFV2 = 'trufv2',
TRUMPLOSE = 'trumplose',
TRUMPWIN = 'trumpwin',
TRXBEAR = 'trxbear',
TRXBULL = 'trxbull',
TRXDOOM = 'trxdoom',
'TRX-ERC20' = 'TRX-ERC20',
TRXHEDGE = 'trxhedge',
TRXMOON = 'trxmoon',
// Bilira
TRYB = 'tryb',
// TRYB on Solana - https://solscan.io/token/6ry4WBDvAwAnrYJVv6MCog4J8zx6S3cPgSqnTsDZ73AR
TRYB2 = 'tryb2',
TRYBBEAR = 'trybbear',
TRYBBULL = 'trybbull',
TRYX = 'tryx',
TST = 'tst',
TSUKA = 'tsuka',
TULIP = 'tulip',
TUPOLIS = 'tupolis',
TUSD = 'tusd',
TUSDC = 'tusdc',
TUSDT = 'tusdt',
TUSRM = 'tusrm',
TWDOGE = 'twdoge',
TWETH = 'tweth',
TXL = 'txl',
TXSGD = 'txsgd',
TXUSD = 'txusd',
UAIR = 'uair',
UBXT = 'ubxt',
UCO = 'uco',
UFT = 'uft',
UKG = 'ukg',
UMA = 'uma',
UMEE = 'umee',
UNB = 'unb',
UNI = 'uni',
UOS = 'uos',
UP = 'up',
UPBTC = 'upbtc',
UPP = 'upp',
UPT = 'upt',
UPUSD = 'upusd',
UQC = 'uqc',
URHD = 'urhd',
'sol:usdt' = 'sol:usdt',
'sol:usdc' = 'sol:usdc',
USCC = 'uscc',
USDC = 'usdc',
'USDC-POS-WORMHOLE' = 'usdc-pos-wormhole',
USDD = 'usdd',
USDE = 'usde',
USDGLO = 'usdglo',
USDH = 'usdh',
USDK = 'usdk',
// Also available on EOS
USDT = 'usdt',
USDTBEAR = 'usdtbear',
USDTBULL = 'usdtbull',
USDTDOOM = 'usdtdoom',
USDTHEDGE = 'usdthedge',
USDTMOON = 'usdtmoon',
USDX = 'usdx',
USDY = 'usdy',
USG = 'usg',
USPX = 'uspx',
UST = 'ust',
USTB = 'ustb',
'UST-WORMHOLE' = 'ust-wormhole',
USX = 'usx',
USYC = 'usyc',
UTK = 'utk',
UTK1 = 'utk1',
UXB = 'uxb',
UXP = 'uxp',
VALOR = 'valor',
VANRY = 'vanry',
VBNT = 'vbnt',
VCORE = 'vcore',
VDX = 'vdx',
VEC = 'vec',
VEE = 'vee',
VEGA = 'vega',
VEXT = 'vext',
VGX = 'vgx',
VI = 'vi',
VIB = 'vib',
VIC = 'vic',
VIDT = 'vidt',
VISR = 'visr',
VIU = 'viu',
VOLT = 'volt',
VRA = 'vra',
VRGX = 'vrgx',
VRTX = 'vrtx',
VSP = 'vsp',
VXC = 'vxc',
VXV = 'vxv',
W = 'w',
// Wrapped AAVE
WAAVE = 'waave',
WABI = 'wabi',
WAFL = 'wafl',
WAGMI = 'wagmi',
// Wrapped AAVAX
WAVAX = 'wavax',
WAVES = 'waves',
WAX = 'wax',
WAXP = 'waxp',
// Wrapped BNB
WBNB = 'wbnb',
WECAN = 'wecan',
WFEE = 'wfee',
WHAT = 'what',
WOO = 'woo',
WTK = 'wtk',
WBTC = 'wbtc',
WDAIV2 = 'wdaiv2',
WDOGE = 'wdoge',
WCFG = 'wcfg',
WEC = 'wec',
'sol:wec' = 'sol:wec',
WET = 'wet',
WETH = 'weth',
WEETH = 'weeth',
WFLOW = 'wflow',
WFFT = 'wfft',
WHALE = 'whale',
WHT = 'wht',
WILD = 'wild',
WING = 'wing',
WNXM = 'wnxm',
WLD = 'wld',
WLUNA = 'wluna',
WLXT = 'wlxt',
// Wrapped SOL
'sol:wsol' = 'sol:wsol',
// Wrapped Rose
WROSE = 'wrose',
WSTETH = 'wsteth',
WPX = 'wpx',
WTAO = 'wtao',
WTC = 'wtc',
WTGXX = 'wtgxx',
// USD Coin (Wormhole)
WUSDC = 'wusdc',
WUSDCV2 = 'wusdvcv2',
WUSDM = 'wusdm',
// Tether USD (Wormhole)
WUSDTV2 = 'wusdtv2',
WXRP = 'wxrp',
WXRPV0 = 'wxrpv0',
WXT = 'wxt',
XAUD = 'xaud',
XAURY = 'xaury',
XAUT = 'xaut',
XAUTBEAR = 'xautbear',
XAUTBULL = 'xautbull',
XBGOLD = 'xbgold',
XCD = 'xcd',
XCHNG = 'xchng',
XCN = 'xcn',
XDEFI = 'xdefi',
XDOGE = 'xdoge',
XEX = 'xex',
XLMBEAR = 'xlmbear',
XLMBULL = 'xlmbull',
XRL = 'xrl',
XRPBEAR = 'xrpbear',
XRPBULL = 'xrpbull',
XRPDOOM = 'xrpdoom',
XRPHEDGE = 'xrphedge',
XRPMOON = 'xrpmoon',
XSGD = 'xsgd',
XSUSHI = 'xsushi',
XTP = 'xtp',
XTZBEAR = 'xtzbear',
XTZBULL = 'xtzbull',
XUSD = 'xusd',
XVS = 'xvs',
XX = 'xx',
XZK = 'xzk',
YAMV2 = 'yamv2',
YFDAI = 'yfdai',
YFI = 'yfi',
YFII = 'yfii',
YFL = 'yfl',
YGG = 'ygg',
YLD = 'yld',
YNG = 'yng',
YSEY = 'ysey',
ZARX = 'zarx',
ZBC = 'zbc',
ZBU = 'zbu',
ZBUV2 = 'zbuv2',
ZCO = 'zco',
ZECBEAR = 'zecbear',
ZECBULL = 'zecbull',
ZETAEVM = 'zetaevm',
ZIL = 'zil',
ZIP = 'zip',
ZIX = 'zix',
ZKL = 'zkl',
ZKS = 'zks',
ZLW = 'zlw',
ZMT = 'zmt',
ZOOM = 'zoom',
ZRO = 'zro',
'ZRO-0x320' = 'zro-0x320',
'ZRO-0xFCF' = 'zro-0xfcf',
'ZRO-0xE5C' = 'zro-0xe5c',
ZRX = 'zrx',
ZUSD = 'zusd',
'eth:usdg' = 'eth:usdg',
'eth:edu' = 'eth:edu',
'eth:telos' = 'eth:telos',
'eth:cusdo' = 'eth:cusdo',
'eth:aevo' = 'eth:aevo',
'eth:alt' = 'eth:alt',
'eth:rtbl' = 'eth:rtbl',
'eth:virtual' = 'eth:virtual',
'eth:vice' = 'eth:vice',
'eth:audu' = 'eth:audu',
'eth:wlfi' = 'eth:wlfi',
'eth:kava' = 'eth:kava',
'eth:gousd' = 'eth:gousd',
'eth:iq' = 'eth:iq',
'eth:iris' = 'eth:iris',
'eth:hard' = 'eth:hard',
'eth:hegic' = 'eth:hegic',
'eth:spx' = 'eth:spx',
'eth:exrd' = 'eth:exrd',
'eth:turbo' = 'eth:turbo',
'eth:icnt' = 'eth:icnt',
'eth:god' = 'eth:god',
'eth:sky' = 'eth:sky',
'eth:uco' = 'eth:uco',
'eth:fuel' = 'eth:fuel',
'eth:xreth' = 'eth:xreth',
'eth:xy' = 'eth:xy',
'eth:move' = 'eth:move',
'eth:mon' = 'eth:mon',
'eth:usual' = 'eth:usual',
'eth:usd1' = 'eth:usd1',
'eth:ibtc' = 'eth:ibtc',
'eth:pyr' = 'eth:pyr',
'eth:una' = 'eth:una',
'eth:ads' = 'eth:ads',
'eth:fuelv1' = 'eth:fuelv1',
'eth:cet' = 'eth:cet',
'eth:unio' = 'eth:unio',
'eth:flttx' = 'eth:flttx',
'eth:wtsix' = 'eth:wtsix',
'eth:modrx' = 'eth:modrx',
'eth:techx' = 'eth:techx',
'eth:wtsyx' = 'eth:wtsyx',
'eth:wtlgx' = 'eth:wtlgx',
'eth:wttsx' = 'eth:wttsx',
'eth:tipsx' = 'eth:tipsx',
'eth:wtstx' = 'eth:wtstx',
'eth:lngvx' = 'eth:lngvx',
'eth:eqtyx' = 'eth:eqtyx',
'eth:deuro' = 'eth:deuro',
'eth:usdf' = 'eth:usdf',
'eth:ausd' = 'eth:ausd',
'eth:gaia' = 'eth:gaia',
'eth:usds' = 'eth:usds',
'xlm:BST-GADDFE4R72YUP2AOEL67OHZN3GJQYPC3VE734N2XFMEGRR2L32CZ3XYZ' = 'xlm:BST-GADDFE4R72YUP2AOEL67OHZN3GJQYPC3VE734N2XFMEGRR2L32CZ3XYZ',
'xlm:VELO-GDM4RQUQQUVSKQA7S6EM7XBZP3FCGH4Q7CL6TABQ7B2BEJ5ERARM2M5M' = 'xlm:VELO-GDM4RQUQQUVSKQA7S6EM7XBZP3FCGH4Q7CL6TABQ7B2BEJ5ERARM2M5M',
'xlm:SLT-GCKA6K5PCQ6PNF5RQBF7PQDJWRHO6UOGFMRLK3DYHDOI244V47XKQ4GP' = 'xlm:SLT-GCKA6K5PCQ6PNF5RQBF7PQDJWRHO6UOGFMRLK3DYHDOI244V47XKQ4GP',
'xlm:USD-GDUKMGUGDZQK6YHYA5Z6AY2G4XDSZPSZ3SW5UN3ARVMO6QSRDWP5YLEX' = 'xlm:USD-GDUKMGUGDZQK6YHYA5Z6AY2G4XDSZPSZ3SW5UN3ARVMO6QSRDWP5YLEX',
'xlm:ETH-GBVOL67TMUQBGL4TZYNMY3ZQ5WGQYFPFD5VJRWXR72VA33VFNL225PL5' = 'xlm:ETH-GBVOL67TMUQBGL4TZYNMY3ZQ5WGQYFPFD5VJRWXR72VA33VFNL225PL5',
'xlm:WXT-GASBLVHS5FOABSDNW5SPPH3QRJYXY5JHA2AOA2QHH2FJLZBRXSG4SWXT' = 'xlm:WXT-GASBLVHS5FOABSDNW5SPPH3QRJYXY5JHA2AOA2QHH2FJLZBRXSG4SWXT',
'xlm:USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN' = 'xlm:USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN',
'xlm:SIX-GDMS6EECOH6MBMCP3FYRYEVRBIV3TQGLOFQIPVAITBRJUMTI6V7A2X6Z' = 'xlm:SIX-GDMS6EECOH6MBMCP3FYRYEVRBIV3TQGLOFQIPVAITBRJUMTI6V7A2X6Z',
'xlm:BRLT-GCHQ3F2BF5P74DMDNOOGHT5DUCKC773AW5DTOFINC26W4KGYFPYDPRSO' = 'xlm:BRLT-GCHQ3F2BF5P74DMDNOOGHT5DUCKC773AW5DTOFINC26W4KGYFPYDPRSO',
'xlm:ARST-GCSAZVWXZKWS4XS223M5F54H2B6XPIIXZZGP7KEAIU6YSL5HDRGCI3DG' = 'xlm:ARST-GCSAZVWXZKWS4XS223M5F54H2B6XPIIXZZGP7KEAIU6YSL5HDRGCI3DG',
'xlm:AQUA-GBNZILSTVQZ4R7IKQDGHYGY2QXL5QOFJYQMXPKWRRM5PAV7Y4M67AQUA' = 'xlm:AQUA-GBNZILSTVQZ4R7IKQDGHYGY2QXL5QOFJYQMXPKWRRM5PAV7Y4M67AQUA',
'xlm:EURC-GDHU6WRG4IEQXM5NZ4BMPKOXHW76MZM4Y2IEMFDVXBSDP6SJY4ITNPP2' = 'xlm:EURC-GDHU6WRG4IEQXM5NZ4BMPKOXHW76MZM4Y2IEMFDVXBSDP6SJY4ITNPP2',
'xlm:GYEN-GDF6VOEGRWLOZ64PQQGKD2IYWA22RLT37GJKS2EJXZHT2VLAGWLC5TOB' = 'xlm:GYEN-GDF6VOEGRWLOZ64PQQGKD2IYWA22RLT37GJKS2EJXZHT2VLAGWLC5TOB',
'xlm:ZUSD-GDF6VOEGRWLOZ64PQQGKD2IYWA22RLT37GJKS2EJXZHT2VLAGWLC5TOB' = 'xlm:ZUSD-GDF6VOEGRWLOZ64PQQGKD2IYWA22RLT37GJKS2EJXZHT2VLAGWLC5TOB',
'xlm:EURS-GC5FGCDEOGOGSNWCCNKS3OMEVDHTE3Q5A5FEQWQKV3AXA7N6KDQ2CUZJ' = 'xlm:EURS-GC5FGCDEOGOGSNWCCNKS3OMEVDHTE3Q5A5FEQWQKV3AXA7N6KDQ2CUZJ',
'xlm:VEUR-GDXLSLCOPPHTWOQXLLKSVN4VN3G67WD2ENU7UMVAROEYVJLSPSEWXIZN' = 'xlm:VEUR-GDXLSLCOPPHTWOQXLLKSVN4VN3G67WD2ENU7UMVAROEYVJLSPSEWXIZN',
'xlm:VCHF-GDXLSLCOPPHTWOQXLLKSVN4VN3G67WD2ENU7UMVAROEYVJLSPSEWXIZN' = 'xlm:VCHF-GDXLSLCOPPHTWOQXLLKSVN4VN3G67WD2ENU7UMVAROEYVJLSPSEWXIZN',
'xlm:AUDD-GDC7X2MXTYSAKUUGAIQ7J7RPEIM7GXSAIWFYWWH4GLNFECQVJJLB2EEU' = 'xlm:AUDD-GDC7X2MXTYSAKUUGAIQ7J7RPEIM7GXSAIWFYWWH4GLNFECQVJJLB2EEU',
// Eth NFTs
// generic NFTs
'erc721:token' = 'erc721:token',
'erc1155:token' = 'erc1155:token',
'nonstandard:token' = 'nonstandard:token',
// Test Eth NFTs
'terc721:token' = 'terc721:token',
'terc1155:token' = 'terc1155:token',
'tnonstandard:token' = 'tnonstandard:token',
// Algorand mainnet tokens
'algo:USDC-31566704' = 'algo:USDC-31566704',
'algo:USDt-312769' = 'algo:USDt-312769',
'algo:MCAU-6547014' = 'algo:MCAU-6547014',
'algo:QCAD-84507107' = 'algo:QCAD-84507107',
'algo:VCAD-438505559' = 'algo:VCAD-438505559',
// Kovan-only ERC20 tokens
TEST = 'test',
SCHZ = 'schz',
CAT = 'cat',
// Stellar testnet tokens
'txlm:BST-GBQTIOS3XGHB7LVYGBKQVJGCZ3R4JL5E4CBSWJ5ALIJUHBKS6263644L' = 'txlm:BST-GBQTIOS3XGHB7LVYGBKQVJGCZ3R4JL5E4CBSWJ5ALIJUHBKS6263644L',
'txlm:TST-GBQTIOS3XGHB7LVYGBKQVJGCZ3R4JL5E4CBSWJ5ALIJUHBKS6263644L' = 'txlm:TST-GBQTIOS3XGHB7LVYGBKQVJGCZ3R4JL5E4CBSWJ5ALIJUHBKS6263644L',
// Algorand testnet tokens
'talgo:USON-16026728' = 'talgo:USON-16026728',
'talgo:SPRW-16026732' = 'talgo:SPRW-16026732',
'talgo:KAL-16026733' = 'talgo:KAL-16026733',
'talgo:USDC-10458941' = 'talgo:USDC-10458941',
'talgo:USDt-180447' = 'talgo:USDt-180447',
'talgo:JPT-162085446' = 'talgo:JPT-162085446',
// EOS tokens
CHEX = 'chex',
IQ = 'iq',
EOS_BOX = 'eos:box',
// Avax Token ERC-20
'avaxc:qi' = 'avaxc:qi',
'avaxc:xava' = 'avaxc:xava',
'avaxc:klo' = 'avaxc:klo',
'avaxc:joe' = 'avaxc:joe',
'avaxc:png' = 'avaxc:png',
'avaxc:usdt' = 'avaxc:usdt',
'avaxc:usdc' = 'avaxc:usdc',
'avaxc:link' = 'avaxc:link',
'avaxc:cai' = 'avaxc:cai',
'avaxc:aave' = 'avaxc:aave',
'avaxc:btc' = 'avaxc:btc',
'avaxc:dai' = 'avaxc:dai',
'avaxc:tryb' = 'avaxc:tryb',
'avaxc:wbtc' = 'avaxc:wbtc',
'avaxc:weth' = 'avaxc:weth',
'avaxc:sbc' = 'avaxc:sbc',
'avaxc:xsgd' = 'avaxc:xsgd',
'avaxc:ticov2' = 'avaxc:ticov2',
'avaxc:nxpc' = 'avaxc:nxpc',
'tavaxc:opm' = 'tavaxc:opm',
'tavaxc:cop2peq' = 'tavaxc:cop2peq',
'tavaxc:xsgd' = 'tavaxc:xsgd',
'tavaxc:bitgo' = 'tavaxc:bitgo',
// Begin FTX missing AVAXC tokens
'avaxc:yeti' = 'avaxc:yeti',
'avaxc:spell' = 'avaxc:spell',
'avaxc:yusd' = 'avaxc:yusd',
'avaxc:yusdcrv-f' = 'avaxc:yusdcrv-f',
'avaxc:ecd' = 'avaxc:ecd',
'avaxc:blzz' = 'avaxc:blzz',
'avaxc:ptp' = 'avaxc:ptp',
'avaxc:stg' = 'avaxc:stg',
'avaxc:syn' = 'avaxc:syn',
'avaxc:aavausdc' = 'avaxc:aavausdc',
'avaxc:tusd' = 'avaxc:tusd',
'avaxc:crv' = 'avaxc:crv',
'avaxc:savax' = 'avaxc:savax',
'avaxc:ampl' = 'avaxc:ampl',
'avaxc:cnr' = 'avaxc:cnr',
'avaxc:roco' = 'avaxc:roco',
'avaxc:aavadai' = 'avaxc:aavadai',
'avaxc:vtx' = 'avaxc:vtx',
'avaxc:wavax' = 'avaxc:wavax',
'avaxc:bnb' = 'avaxc:bnb',
'avaxc:aavausdt' = 'avaxc:aavausdt',
'avaxc:acre' = 'avaxc:acre',
'avaxc:gmx' = 'avaxc:gmx',
'avaxc:gunz' = 'avaxc:gunz',
'avaxc:mim' = 'avaxc:mim',
'avaxc:axlusdc' = 'avaxc:axlusdc',
'avaxc:lot' = 'avaxc:lot',
'avaxc:av3crv' = 'avaxc:av3crv',
'avaxc:time' = 'avaxc:time',
'avaxc:uni.e' = 'avaxc:uni.e',
'avaxc:sb' = 'avaxc:sb',
'avaxc:dyp' = 'avaxc:dyp',
'avaxc:sing' = 'avaxc:sing',
'avaxc:gohm' = 'avaxc:gohm',
'avaxc:boofi' = 'avaxc:boofi',
'avaxc:eth' = 'avaxc:eth',
'avaxc:wmemo' = 'avaxc:wmemo',
'avaxc:fxs' = 'avaxc:fxs',
'avaxc:sifu' = 'avaxc:sifu',
'avaxc:sushi.e' = 'avaxc:sushi.e',
'avaxc:sushi' = 'avaxc:sushi',
'avaxc:mimatic' = 'avaxc:mimatic',
'avaxc:sspell' = 'avaxc:sspell',
'avaxc:grape' = 'avaxc:grape',
'avaxc:xjoe' = 'avaxc:xjoe',
'avaxc:bsgg' = 'avaxc:bsgg',
'avaxc:roy' = 'avaxc:roy',
'avaxc:wow' = 'avaxc:wow',
'avaxc:wine' = 'avaxc:wine',
'avaxc:mu' = 'avaxc:mu',
'avaxc:frax' = 'avaxc:frax',
'avaxc:movr' = 'avaxc:movr',
'avaxc:ice' = 'avaxc:ice',
'avaxc:note' = 'avaxc:note',
'avaxc:wrose' = 'avaxc:wrose',
'avaxc:swap' = 'avaxc:swap',
'avaxc:tico' = 'avaxc:tico',
'avaxc:shrap' = 'avaxc:shrap',
// End FTX missing AVAXC tokens
// polygon Token ERC-20
'polygon:usdc' = 'polygon:usdc',
'polygon:usdcv2' = 'polygon:usdcv2',
'polygon:usdt' = 'polygon:usdt',
'polygon:weth' = 'polygon:weth',
'polygon:cnkt' = 'polygon:cnkt',
'polygon:wbtc' = 'polygon:wbtc',
'polygon:sand' = 'polygon:sand',
'polygon:dai' = 'polygon:dai',
'polygon:woo' = 'polygon:woo',
'polygon:aave' = 'polygon:aave',
'polygon:link' = 'polygon:link',
'polygon:tusd' = 'polygon:tusd',
'polygon:cel' = 'polygon:cel',
'polygon:busd' = 'polygon:busd',
'polygon:frax' = 'polygon:frax',
'polygon:crv' = 'polygon:crv',
'polygon:uni' = 'polygon:uni',
'polygon:fcd' = 'polygon:fcd',
'polygon:ape' = 'polygon:ape',
'polygon:srm' = 'polygon:srm',
'polygon:fly' = 'polygon:fly',
'polygon:gfc' = 'polygon:gfc',
'polygon:rbw' = 'polygon:rbw',
'polygon:zed' = 'polygon:zed',
'polygon:vext' = 'polygon:vext',
'polygon:vcnt' = 'polygon:vcnt',
'polygon:sushi' = 'polygon:sushi',
'polygon:wmatic' = 'polygon:wmatic',
'polygon:1inch' = 'polygon:1inch',
'polygon:comp' = 'polygon:comp',
'polygon:sol' = 'polygon:sol',
'polygon:wavax' = 'polygon:wavax',
'polygon:wbnb' = 'polygon:wbnb',
'polygon:wftm' = 'polygon:wftm',
'polygon:yfi' = 'polygon:yfi',
'polygon:treta' = 'polygon:treta',
'polygon:orb' = 'polygon:orb',
'polygon:route' = 'polygon:route',
'polygon:sbc' = 'polygon:sbc',
'polygon:xsgd' = 'polygon:xsgd',
'polygon:dimo' = 'polygon:dimo',
'polygon:bcut' = 'polygon:bcut',
'polygon:pme' = 'polygon:pme',
'polygon:dipe' = 'polygon:dipe',
'polygon:lif3' = 'polygon:lif3',
'polygon:l3usd' = 'polygon:l3usd',
'polygon:moca' = 'polygon:moca',
'polygon:mask' = 'polygon:mask',
'polygon:nexo' = 'polygon:nexo',
'polygon:om' = 'polygon:om',
'polygon:pyr' = 'polygon:pyr',
'polygon:renbtc' = 'polygon:renbtc',
'polygon:req' = 'polygon:req',
'polygon:rndr' = 'polygon:rndr',
'polygon:snx' = 'polygon:snx',
'polygon:trb' = 'polygon:trb',
'polygon:ali' = 'polygon:ali',
'polygon:bal' = 'polygon:bal',
'polygon:elon' = 'polygon:elon',
'polygon:hex' = 'polygon:hex',
'polygon:iotx' = 'polygon:iotx',
'polygon:agix' = 'polygon:agix',
'polygon:avax' = 'polygon:avax',
'polygon:band' = 'polygon:band',
'polygon:blz' = 'polygon:blz',
'polygon:bnb' = 'polygon:bnb',
'polygon:bnt' = 'polygon:bnt',
'polygon:chz' = 'polygon:chz',
'polygon:enj' = 'polygon:enj',
'polygon:fet' = 'polygon:fet',
'polygon:forth' = 'polygon:forth',
'polygon:glm' = 'polygon:glm',
'polygon:gno' = 'polygon:gno',
'polygon:gohm' = 'polygon:gohm',
'polygon:gtc' = 'polygon:gtc',
'polygon:gusd' = 'polygon:gusd',
'polygon:hot' = 'polygon:hot',
'polygon:inj' = 'polygon:inj',
'polygon:lit' = 'polygon:lit',
'polygon:lrc' = 'polygon:lrc',
'polygon:mana' = 'polygon:mana',
'polygon:shib' = 'polygon:shib',
'polygon:sxp' = 'polygon:sxp',
'polygon:grt' = 'polygon:grt',
'polygon:mkr' = 'polygon:mkr',
'polygon:oxt' = 'polygon:oxt',
'polygon:pax' = 'polygon:pax',
'polygon:paxg' = 'polygon:paxg',
'polygon:powr' = 'polygon:powr',
'polygon:super' = 'polygon:super',
'polygon:uma' = 'polygon:uma',
'polygon:zrx' = 'polygon:zrx',
'polygon:ont' = 'polygon:ont',
'polygon:wrx' = 'polygon:wrx',
'polygon:voxel' = 'polygon:voxel',
'polygon:uft' = 'polygon:uft',
'polygon:ooki' = 'polygon:ooki',
'polygon:swap' = 'polygon:swap',
'polygon:vanry' = 'polygon:vanry',
'polygon:npt' = 'polygon:npt',
'polygon:volt' = 'polygon:volt',
'polygon:euroe' = 'polygon:euroe',
'polygon:geod' = 'polygon:geod',
'polygon:heth' = 'polygon:heth',
'polygon:copm' = 'polygon:copm',
'polygon:gmt' = 'polygon:gmt',
'polygon:uhu' = 'polygon:uhu',
'polygon:mv' = 'polygon:mv',
'polygon:bid' = 'polygon:bid',
'polygon:tcs' = 'polygon:tcs',
// Polygon NFTs
// generic NFTs
'erc721:polygontoken' = 'erc721:polygontoken',
'erc1155:polygontoken' = 'erc1155:polygontoken',
// BSC Token BEP-20
'bsc:solv' = 'bsc:solv',
'bsc:brise' = 'bsc:brise',
'bsc:bsw' = 'bsc:bsw',
'bsc:burger' = 'bsc:burger',
'bsc:cfx' = 'bsc:cfx',
'bsc:bake' = 'bsc:bake',
'bsc:bnx' = 'bsc:bnx',
'bsc:busd' = 'bsc:busd',
'bsc:hook' = 'bsc:hook',
'bsc:ksm' = 'bsc:ksm',
'bsc:usdt' = 'bsc:usdt',
'bsc:vet' = 'bsc:vet',
'bsc:cake' = 'bsc:cake',
'bsc:litt' = 'bsc:litt',
'bsc:xvs' = 'bsc:xvs',
'bsc:epx' = 'bsc:epx',
'bsc:usdc' = 'bsc:usdc',
'bsc:eth' = 'bsc:eth',
'bsc:dd' = 'bsc:dd',
'bsc:ltc' = 'bsc:ltc',
'bsc:mask' = 'bsc:mask',
'bsc:matic' = 'bsc:matic',
'bsc:mbox' = 'bsc:mbox',
'bsc:mdt' = 'bsc:mdt',
'bsc:nuls' = 'bsc:nuls',
'bsc:ont' = 'bsc:ont',
'bsc:orn' = 'bsc:orn',
'bsc:porto' = 'bsc:porto',
'bsc:reef' = 'bsc:reef',
'bsc:renbtc' = 'bsc:renbtc',
'bsc:snx' = 'bsc:snx',
'bsc:tking' = 'bsc:tking',
'bsc:tlm' = 'bsc:tlm',
'bsc:ton' = 'bsc:ton',
'bsc:trx' = 'bsc:trx',
'bsc:wbnb' = 'bsc:wbnb',
'bsc:win' = 'bsc:win',
'bsc:wrx' = 'bsc:wrx',
'bsc:yfii' = 'bsc:yfii',
'bsc:zil' = 'bsc:zil',
'bsc:1inch' = 'bsc:1inch',
'bsc:ada' = 'bsc:ada',
'bsc:alice' = 'bsc:alice',
'bsc:alpaca' = 'bsc:alpaca',
'bsc:alpine' = 'bsc:alpine',
'bsc:ankr' = 'bsc:ankr',
'bsc:avax' = 'bsc:avax',
'bsc:beta' = 'bsc:beta',
'bsc:btt' = 'bsc:btt',
'bsc:celr' = 'bsc:celr',
'bsc:chr' = 'bsc:chr',
'bsc:coti' = 'bsc:coti',
'bsc:cream' = 'bsc:cream',
'bsc:dar' = 'bsc:dar',
'bsc:degov2' = 'bsc:degov2',
'bsc:dodo' = 'bsc:dodo',
'bsc:elon' = 'bsc:elon',
'bsc:etc' = 'bsc:etc',
'bsc:firo' = 'bsc:firo',
'bsc:front' = 'bsc:front',
'bsc:hft' = 'bsc:hft',
'bsc:high' = 'bsc:high',
'bsc:inj' = 'bsc:inj',
'bsc:iotx' = 'bsc:iotx',
'bsc:auto' = 'bsc:auto',
'bsc:fet' = 'bsc:fet',
'bsc:kas' = 'bsc:kas',
'bsc:lit' = 'bsc:lit',
'bsc:mana' = 'bsc:mana',
'bsc:shib' = 'bsc:shib',
'bsc:sxp' = 'bsc:sxp',
'bsc:nnn' = 'bsc:nnn',
'bsc:nvm' = 'bsc:nvm',
'bsc:jasmy' = 'bsc:jasmy',
'bsc:near' = 'bsc:near',
'bsc:ocean' = 'bsc:ocean',
'bsc:sand' = 'bsc:sand',
'bsc:tusd' = 'bsc:tusd',
'bsc:wrose' = 'bsc:wrose',
'bsc:twt' = 'bsc:twt',
'bsc:sfp' = 'bsc:sfp',
'bsc:edu' = 'bsc:edu',
'bsc:mrs' = 'bsc:mrs',
'bsc:ong' = 'bsc:ong',
'bsc:ctk' = 'bsc:ctk',
'bsc:rndt' = 'bsc:rndt',
'bsc:mbx' = 'bsc:mbx',
'bsc:mav' = 'bsc:mav',
'bsc:mct' = 'bsc:mct',
'bsc:thunder' = 'bsc:thunder',
'bsc:atlas' = 'bsc:atlas',
'bsc:vidt' = 'bsc:vidt',
'bsc:unfi' = 'bsc:unfi',
'bsc:chess' = 'bsc:chess',
'bsc:pols' = 'bsc:pols',
'bsc:uft' = 'bsc:uft',
'bsc:wing' = 'bsc:wing',
'bsc:santos' = 'bsc:santos',
'bsc:lazio' = 'bsc:lazio',
'bsc:swap' = 'bsc:swap',
'bsc:troy' = 'bsc:troy',
'bsc:rdnt' = 'bsc:rdnt',
'bsc:pax' = 'bsc:pax',
'bsc:volt' = 'bsc:volt',
'tbsc:busd' = 'tbsc:busd',
'tbsc:usd1' = 'tbsc:usd1',
'bsc:city' = 'bsc:city',
'bsc:fdusd' = 'bsc:fdusd',
'bsc:floki' = 'bsc:floki',
'bsc:ldo' = 'bsc:ldo',
'bsc:om' = 'bsc:om',
'bsc:eos' = 'bsc:eos',
'bsc:usdd' = 'bsc:usdd',
'bsc:gft' = 'bsc:gft',
'bsc:glmr' = 'bsc:glmr',
'bsc:gmt' = 'bsc:gmt',
'bsc:tko' = 'bsc:tko',
'bsc:vite' = 'bsc:vite',
'bsc:mdx' = 'bsc:mdx',
'bsc:multi' = 'bsc:multi',
'bsc:psg' = 'bsc:psg',
'bsc:telos' = 'bsc:telos',
'bsc:flux' = 'bsc:flux',
'bsc:h2o' = 'bsc:h2o',
'bsc:lto' = 'bsc:lto',
'bsc:kmd' = 'bsc:kmd',
'bsc:farm' = 'bsc:farm',
'bsc:lina' = 'bsc:lina',
'bsc:usd1' = 'bsc:usd1',
'bsc:oort' = 'bsc:oort',
// BSC NFTs
// generic NFTs
'erc721:bsctoken' = 'erc721:bsctoken',
'erc1155:bsctoken' = 'erc1155:bsctoken',
// Test BSC NFTs
'terc721:bsctoken' = 'terc721:bsctoken',
'terc1155:bsctoken' = 'terc1155:bsctoken',
// Polygon testnet tokens
'tpolygon:derc20' = 'tpolygon:derc20',
'tpolygon:link' = 'tpolygon:link',
'tpolygon:name' = 'tpolygon:name',
'tpolygon:opm' = 'tpolygon:opm',
'tpolygon:pme' = 'tpolygon:pme',
'tpolygon:xsgd' = 'tpolygon:xsgd',
'tpolygon:terc18dp' = 'tpolygon:terc18dp',
'tpolygon:terc10dp' = 'tpolygon:terc10dp',
'tpolygon:terc6dp' = 'tpolygon:terc6dp',
'tpolygon:usdt' = 'tpolygon:usdt',
'tpolygon:usdc' = 'tpolygon:usdc',
'tpolygon:testcopm' = 'tpolygon:testcopm',
'tpolygon:BitGoTest' = 'tpolygon:BitGoTest',
// generic NFTs
'terc721:polygontoken' = 'terc721:polygontoken',
'terc1155:polygontoken' = 'terc1155:polygontoken',
// Arbitrum mainnet tokens
'arbeth:link' = 'arbeth:link',
'arbeth:usdc' = 'arbeth:usdc',
'arbeth:xsgdv2' = 'arbeth:xsgdv2',
'arbeth:usdcv2' = 'arbeth:usdcv2',
'arbeth:usdt' = 'arbeth:usdt',
'arbeth:arb' = 'arbeth:arb',
'arbeth:sqd' = 'arbeth:sqd',
'arbeth:cbl' = 'arbeth:cbl',
'arbeth:w' = 'arbeth:w',
'arbeth:comp' = 'arbeth:comp',
'arbeth:coti' = 'arbeth:coti',
'arbeth:gno' = 'arbeth:gno',
'arbeth:gohm' = 'arbeth:gohm',
'arbeth:grt' = 'arbeth:grt',
'arbeth:knc' = 'arbeth:knc',
'arbeth:trb' = 'arbeth:trb',
'arbeth:tusd' = 'arbeth:tusd',
'arbeth:uma' = 'arbeth:uma',
'arbeth:uni' = 'arbeth:uni',
'arbeth:weth' = 'arbeth:weth',
'arbeth:woo' = 'arbeth:woo',
'arbeth:yfi' = 'arbeth:yfi',
'arbeth:xsgd' = 'arbeth:xsgd',
'arbeth:ztx' = 'arbeth:ztx',
'arbeth:ldo' = 'arbeth:ldo',
'arbeth:egp' = 'arbeth:egp',
'arbeth:myrc' = 'arbeth:myrc',
'arbeth:gs' = 'arbeth:gs',
'arbeth:veur' = 'arbeth:veur',
'arbeth:vchf' = 'arbeth:vchf',
'arbeth:tbill' = 'arbeth:tbill',
'arbeth:xai' = 'arbeth:xai',
'arbeth:flttx' = 'arbeth:flttx',
'arbeth:wtsix' = 'arbeth:wtsix',
'arbeth:modrx' = 'arbeth:modrx',
'arbeth:techx' = 'arbeth:techx',
'arbeth:wtsyx' = 'arbeth:wtsyx',
'arbeth:wtlgx' = 'arbeth:wtlgx',
'arbeth:wttsx' = 'arbeth:wttsx',
'arbeth:tipsx' = 'arbeth:tipsx',
'arbeth:wtstx' = 'arbeth:wtstx',
'arbeth:wtgxx' = 'arbeth:wtgxx',
'arbeth:lngvx' = 'arbeth:lngvx',
'arbeth:eqtyx' = 'arbeth:eqtyx',
// Arbitrum testnet tokens
'tarbeth:link' = 'tarbeth:link',
'tarbeth:xsgd' = 'tarbeth:xsgd',
// Optimism mainnet tokens
'opeth:link' = 'opeth:link',
'opeth:usdc' = 'opeth:usdc',
'opeth:usdcv2' = 'opeth:usdcv2',
'opeth:usdt' = 'opeth:usdt',
'opeth:op' = 'opeth:op',
'opeth:exa' = 'opeth:exa',
'opeth:wld' = 'opeth:wld',
'opeth:wct' = 'opeth:wct',
// Optimism testnet tokens
'topeth:terc18dp' = 'topeth:terc18dp',
'topeth:wct' = 'topeth:wct',
// zkSync mainnet tokens
'zketh:link' = 'zketh:link',
// zkSync testnet tokens
'tzketh:link' = 'tzketh:link',
// Celo mainnet tokens
'celo:pact' = 'celo:pact',
// bera mainnet tokens
'bera:bgt' = 'bera:bgt',
'bera:honey' = 'bera:honey',
'bera:usdc' = 'bera:usdc',
'bera:ibera' = 'bera:ibera',
'bera:dolo' = 'bera:dolo',
// bera testnet tokens
'tbera:bgt' = 'tbera:bgt',
'tbera:honey' = 'tbera:honey',
'tbera:usdc' = 'tbera:usdc',
'tbera:ibera' = 'tbera:ibera',
ERC721 = 'erc721',
ERC1155 = 'erc1155',
NONSTANDARD = 'nonstandard',
// Cardano Token
adaTestnetToken = 'temporary-placeholder',
// solana token
'sol:bome' = 'sol:bome',
'3uejh-usdc' = '3uejh-usdc',
'avax-usdc' = 'avax-usdc',
'bop-usdc' = 'bop-usdc',
'sol:crown' = 'sol:crown',
'elu-usdt' = 'elu-usdt',
'fida-usdc' = 'fida-usdc',
'fida-usdt' = 'fida-usdt',
'ftt-ftt' = 'ftt-ftt',
'link-usdc' = 'link-usdc',
'lqid-usdc' = 'lqid-usdc',
'maticpo-usdc' = 'maticpo-usdc',
'msol-sol' = 'msol-sol',
'msol-usdc' = 'msol-usdc',
'prism-usdc' = 'prism-usdc',
'sol:pyth' = 'sol:pyth',
'rendoge-usdc' = 'rendoge-usdc',
'shdw-usdc' = 'shdw-usdc',
'sol-wtust' = 'sol-wtust',
'srm-usdc' = 'srm-usdc',
'srmet-srm' = 'srmet-srm',
'sushi-usdc' = 'sushi-usdc',
'tuatlas' = 'tuatlas',
'tucope' = 'tucope',
'tulike' = 'tulike',
'tureal' = 'tureal',
'tusamo' = 'tusamo',
'usdt-usdc' = 'usdt-usdc',
'wbwbnb-usdc' = 'wbwbnb-usdc',
'wheth-usdc' = 'wheth-usdc',
'wtust-usdt' = 'wtust-usdt',
'xcope-usdc' = 'xcope-usdc',
'xrp-sollet' = 'xrp-sollet',
'aury' = 'aury',
'dio' = 'dio',
'sol-perp' = 'sol-perp',
'sol-woo' = 'sol-woo',
'sol-weth' = 'sol-weth',
'btc-sollet' = 'btc-sollet',
'eth-sollet' = 'eth-sollet',
'sol:bonk' = 'sol:bonk',
'jto' = 'jto',
'sol:jto' = 'sol:jto',
'jup' = 'jup',
'sol:jup' = 'sol:jup',
'sol:honey' = 'sol:honey',
'mobile' = 'mobile',
'sol:mobile' = 'sol:mobile',
'wif' = 'wif',
'sol:wif' = 'sol:wif',
'natix' = 'natix',
'sol:natix' = 'sol:natix',
'sol:ks' = 'sol:ks',
'sol:apusdt' = 'sol:apusdt',
'sol:acusd' = 'sol:acusd',
'sol:solink' = 'sol:solink',
'sol:block' = 'sol:block',
'sol:render' = 'sol:render',
'sol:wen' = 'sol:wen',
'sol:mew' = 'sol:mew',
'sol:pyusd' = 'sol:pyusd',
'sol:moveusd' = 'sol:moveusd',
'sol:dxl' = 'sol:dxl',
'sol:mother' = 'sol:mother',
'sol:wrose' = 'sol:wrose',
'sol:atlas' = 'sol:atlas',
'sol:mdt' = 'sol:mdt',
'sol:io' = 'sol:io',
'sol:aave' = 'sol:aave',
'sol:ldo' = 'sol:ldo',
'sol:gt' = 'sol:gt',
'sol:popcat' = 'sol:popcat',
'sol:axs' = 'sol:axs',
'sol:sand' = 'sol:sand',
'sol:ens' = 'sol:ens',
'sol:enron' = 'sol:enron',
'sol:jitosol' = 'sol:jitosol',
'sol:zeus' = 'sol:zeus',
'sol:kmno' = 'sol:kmno',
'sol:giga' = 'sol:giga',
'sol:tnsr' = 'sol:tnsr',
'sol:ssol' = 'sol:ssol',
'sol:drift' = 'sol:drift',
'sol:spx' = 'sol:spx',
'sol:turbo' = 'sol:turbo',
'sol:fartcoin' = 'sol:fartcoin',
'sol:swarms' = 'sol:swarms',
'sol:nc' = 'sol:nc',
'sol:tai' = 'sol:tai',
'sol:pengu' = 'sol:pengu',
'sol:corn' = 'sol:corn',
'sol:yes' = 'sol:yes',
'sol:ai16z' = 'sol:ai16z',
'sol:pnut' = 'sol:pnut',
'sol:nyan' = 'sol:nyan',
'sol:virtual' = 'sol:virtual',
'sol:zerebro' = 'sol:zerebro',
'sol:arc' = 'sol:arc',
'sol:nos' = 'sol:nos',
'sol:jlp' = 'sol:jlp',
'sol:grass' = 'sol:grass',
'sol:trump' = 'sol:trump',
'sol:melania' = 'sol:melania',
'sol:ustry' = 'sol:ustry',
'sol:eurob' = 'sol:eurob',
'sol:tesouro' = 'sol:tesouro',
'sol:cetes' = 'sol:cetes',
'sol:gilts' = 'sol:gilts',
'sol:muskit' = 'sol:muskit',
'sol:matrix' = 'sol:matrix',
'sol:eurcv' = 'sol:eurcv',
'sol:layer' = 'sol:layer',
// TRX tokens
'trx:htx' = 'trx:htx',
'trx:jst' = 'trx:jst',
'trx:tusd' = 'trx:tusd',
'trx:win' = 'trx:win',
'trx:btt' = 'trx:btt',
'trx:usdd' = 'trx:usdd',
'trx:usdt' = 'trx:usdt',
// TRX testnet tokens
'ttrx:usdt' = 'ttrx:usdt',
// XRP tokens
'txrp:tst-rP9jPyP5kyvFRb6ZiRghAGw5u8SGAmU4bd' = 'txrp:tst-rP9jPyP5kyvFRb6ZiRghAGw5u8SGAmU4bd',
'xrp:rlusd' = 'xrp:rlusd',
'txrp:rlusd' = 'txrp:rlusd',
'txrp:xat' = 'txrp:xat',
'xrp:tbill' = 'xrp:tbill',
'xrp:xsgd' = 'xrp:xsgd',
'xrp:veur' = 'xrp:veur',
'xrp:vchf' = 'xrp:vchf',
'xrp:vgbp' = 'xrp:vgbp',
// XRP testnet tokens
'txrp:xsgd' = 'txrp:xsgd',
// Sui tokens
'sui:deep' = 'sui:deep',
'sui:suins' = 'sui:suins',
'sui:fdusd' = 'sui:fdusd',
'sui:usdc' = 'sui:usdc',
'sui:wusdc' = 'sui:wusdc',
'sui:sca' = 'sui:sca',
'sui:times' = 'sui:times',
'sui:fud' = 'sui:fud',
'sui:afsui' = 'sui:afsui',
'sui:navx' = 'sui:navx',
'sui:vsui' = 'sui:vsui',
'sui:send' = 'sui:send',
'sui:cetus' = 'sui:cetus',
'sui:wal' = 'sui:wal',
// Sui testnet tokens
'tsui:deep' = 'tsui:deep',
'tsui:wal' = 'tsui:wal',
// Apt tokens
'apt:usdt' = 'apt:usdt',
'apt:usdc' = 'apt:usdc',
'apt:pact' = 'apt:pact',
// Apt testnet tokens
'tapt:usdt' = 'tapt:usdt',
// Apt testnet NFT collections
'tapt:nftcollection1' = 'tapt:nftcollection1',
'tapt:beta3loanbook' = 'tapt:beta3loanbook',
// Sip10 tokens
'stx:sbtc' = 'stx:sbtc',
'stx:ststx' = 'stx:ststx',
'stx:alex' = 'stx:alex',
'stx:aeusdc' = 'stx:aeusdc',
'stx:usdh' = 'stx:usdh',
'stx:susdh' = 'stx:susdh',
'stx:welsh' = 'stx:welsh',
// Sip10 testnet tokens
'tstx:tsbtc' = 'tstx:tsbtc',
'tstx:tsip6dp' = 'tstx:tsip6dp',
'tstx:tsip8dp' = 'tstx:tsip8dp',
// Hbar tokens
'hbar:karate' = 'hbar:karate',
'hbar:sauce' = 'hbar:sauce',
'hbar:dovu' = 'hbar:dovu',
'hbar:pack' = 'hbar:pack',
'hbar:jam' = 'hbar:jam',
'hbar:berry' = 'hbar:berry',
// fiats
AED = 'aed',
EUR = 'eur',
GBP = 'gbp',
SGD = 'sgd',
USD = 'usd',
}
/**
* This is the curve BitGo signs against with the user, backup and BitGo key.
*/
export enum KeyCurve {
Secp256k1 = 'secp256k1',
Ed25519 = 'ed25519',
}
/**
* This enum contains the base units for the coins that BitGo supports
*/
export enum BaseUnit {
ATOM = 'uatom',
APT = 'octa',
ETH = 'wei',
BABY = 'ubbn',
BTC = 'satoshi',
BSC = 'jager',
XLM = 'stroop',
TRX = 'sun',
HBAR = 'tinybar',
ALGO = 'microAlgo',
EOS = 'eos', // eos has no base unit. smallest amount in eos is 4 decimals
SOL = 'lamport',
ADA = 'lovelace',
USD = 'USD',
LNBTC = 'millisatoshi',
LTC = 'microlitecoins',
DASH = 'duff',
ZEC = 'zatoshi',
CSPR = 'mote',
DOT = 'planck',
XRP = 'drop',
XTZ = 'micro xtz',
STX = 'micro-STX',
SUI = 'MIST',
TON = 'nanoton',
NEAR = 'yocto',
OFC = 'ofcCoin',
OSMO = 'uosmo',
FIAT = 'fiatCoin',
TIA = 'utia',
HASH = 'nhash',
BLD = 'ubld',
SEI = 'usei',
INJECTIVE = 'inj',
ZETA = 'azeta',
KAVA = 'ukava',
COREUM = 'ucore',
TCOREUM = 'utestcore', // Coreum testnet uses different name for native coin
ISLM = 'aISLM',
RUNE = 'rune',
TAO = 'rao',
ICP = 'e8s',
MANTRA = 'uom',
POLYX = 'micropolyx',
CRONOS = 'basecro',
FETCH = 'afet',
INIT = 'uinit',
}
export interface BaseCoinConstructorOptions {
id: string; // uuid v4
fullName: string; // full, human-readable name of this coin. Eg, "Bitcoin Cash" for bch
name: string; // unique identifier for this coin, usually the lowercase ticker or symbol. Eg, "btc" for bitcoin
alias?: string; // alternative name usually used during name migrations
prefix?: string;
suffix?: string;
baseUnit: string; // the base unit for each coin. e.g. satoshi for BTC
kind: CoinKind;
isToken: boolean;
features: CoinFeature[];
decimalPlaces: number;
asset: UnderlyingAsset;
network: BaseNetwork;
primaryKeyCurve: KeyCurve;
}
export abstract class BaseCoin {
/*
Display properties
*/
/**
* random uuid for a coin
*/
public readonly id: string;
public readonly fullName: string;
public readonly name: string;
public readonly prefix?: string;
public readonly suffix?: string;
public readonly baseUnit: string;
/*
Property to help during migration of token names.
Helps to find a coin/token with a different name than the current one
*/
public readonly alias?: string;
/*
Classification properties
*/
public readonly kind: CoinKind;
public readonly family: CoinFamily;
public readonly isToken: boolean;
/*
Coin Features. These are yes or no questions about what the coin supports and does not support.
*/
public readonly features: CoinFeature[];
/*
Coin Network. This is a list of properties which are relevant to the underlying network on which this coin exists.
*/
public readonly network: BaseNetwork;
/*
Conversion properties
*/
public readonly decimalPlaces: number;
public readonly asset: UnderlyingAsset;
/**
* The primary elliptic curve BitGo signs and generates keys against.
*/
public readonly primaryKeyCurve: KeyCurve;
/**
* Set of features which are required by a coin subclass
* @return {Set<CoinFeature>}
*/
protected abstract requiredFeatures(): Set<CoinFeature>;
/**
* Set of features which are not valid and are disallowed by a coin subclass
* @return {Set<CoinFeature>}
*/
protected abstract disallowedFeatures(): Set<CoinFeature>;
private static isValidUuidV4 = (uuid: string) => {
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
return uuidRegex.test(uuid);
};
/**
* Ensures that the base coin constructor was passed a valid set of options.
*
* This includes checking that:
* - All coin features of the new instance are allowed by the coin class
* - No features required by the coin class are missing from the new instance
* @param {BaseCoinConstructorOptions} options
* @throws {DisallowedCoinFeatureError} if any of the coin features are not allowed for the coin class
* @throws {MissingRequiredCoinFeatureError} if any features required by the coin class are missing
*/
private validateOptions(options: BaseCoinConstructorOptions) {
const requiredFeatures = this.requiredFeatures();
const disallowedFeatures = this.disallowedFeatures();
const intersectionFeatures = Array.from(requiredFeatures).filter((feat) => disallowedFeatures.has(feat));
if (intersectionFeatures.length > 0) {
throw new ConflictingCoinFeaturesError(options.name, intersectionFeatures);
}
for (const feature of options.features) {
if (disallowedFeatures.has(feature)) {
throw new DisallowedCoinFeatureError(options.name, feature);
}
if (requiredFeatures.has(feature)) {
requiredFeatures.delete(feature);
}
}
if (requiredFeatures.size > 0) {
// some required features were missing
throw new MissingRequiredCoinFeatureError(options.name, Array.from(requiredFeatures));
}
// assets require a valid uuid v4 id
if (!BaseCoin.isValidUuidV4(options.id)) {
throw new InvalidIdError(options.name, options.id);
}
}
protected constructor(options: BaseCoinConstructorOptions) {
this.validateOptions(options);
this.id = options.id;
this.fullName = options.fullName;
this.name = options.name;
this.alias = options.alias;
this.prefix = options.prefix;
this.suffix = options.suffix;
this.baseUnit = options.baseUnit;
this.kind = options.kind;
this.family = options.network.family;
this.isToken = options.isToken;
this.features = options.features;
this.decimalPlaces = options.decimalPlaces;
this.asset = options.asset;
this.network = options.network;
this.primaryKeyCurve = options.primaryKeyCurve;
}
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!