bitgo
Version:
BitGo JavaScript SDK
907 lines (874 loc) • 27.6 kB
text/typescript
/**
* @prettier
*/
import { AdaToken } from '@bitgo/sdk-coin-ada';
import { AlgoToken } from '@bitgo/sdk-coin-algo';
import { Bcha, Tbcha } from '@bitgo/sdk-coin-bcha';
import { HbarToken } from '@bitgo/sdk-coin-hbar';
import { Near, TNear, Nep141Token } from '@bitgo/sdk-coin-near';
import { SolToken } from '@bitgo/sdk-coin-sol';
import { TrxToken } from '@bitgo/sdk-coin-trx';
import { CoinFactory, CoinConstructor } from '@bitgo/sdk-core';
import {
CoinMap,
coins,
getFormattedTokens,
TokenConfig,
Erc20TokenConfig,
StellarTokenConfig,
OfcTokenConfig,
CeloTokenConfig,
EthLikeTokenConfig,
EosTokenConfig,
AvaxcTokenConfig,
SolTokenConfig,
HbarTokenConfig,
AdaTokenConfig,
AlgoTokenConfig,
TrxTokenConfig,
XrpTokenConfig,
SuiTokenConfig,
AptTokenConfig,
Sip10TokenConfig,
CoinFeature,
Nep141TokenConfig,
} from '@bitgo/statics';
import {
Ada,
Algo,
Apechain,
Apt,
AptToken,
Arbeth,
ArbethToken,
Asi,
Atom,
AvaxC,
AvaxCToken,
AvaxP,
Baby,
Bch,
Bera,
BeraToken,
Bld,
Bsc,
BscToken,
Bsv,
Btc,
Btg,
Celo,
CeloToken,
Coredao,
CoredaoToken,
Coreum,
Cronos,
Cspr,
Dash,
Doge,
Dot,
Eos,
EosToken,
Erc20Token,
Etc,
Eth,
Ethw,
EthLikeCoin,
EvmCoin,
Flr,
TethLikeCoin,
FiatAED,
FiatEur,
FiatGBP,
FiatSGD,
FiatUsd,
Gteth,
Hash,
Hbar,
Hteth,
Icp,
Initia,
Injective,
Islm,
Lnbtc,
Ltc,
Mon,
Mantra,
Ofc,
Oas,
OfcToken,
Opeth,
OpethToken,
Osmo,
Polygon,
PolygonToken,
Polyx,
Rune,
Rbtc,
Sei,
Sgb,
Sip10Token,
Sol,
Soneium,
SoneiumToken,
StellarToken,
Stx,
Stt,
Sui,
SuiToken,
Susd,
Tao,
Ton,
Tada,
Talgo,
Tapechain,
Tapt,
Tarbeth,
Tasi,
Tatom,
TavaxC,
TavaxP,
Tbaby,
Tbch,
Tbera,
Tbld,
Tbsc,
Tbsv,
Tbtc,
Tbtcsig,
Tbtc4,
Tbtcbgsig,
Tcelo,
Tcoredao,
Tcoreum,
Tcronos,
Tcspr,
Tdash,
Tdoge,
Tdot,
Teos,
Tetc,
Teth,
Tflr,
Tmon,
TfiatAED,
TfiatEur,
TfiatGBP,
TfiatSGD,
TfiatUsd,
Thash,
Thbar,
Tia,
Ticp,
Tinitia,
Tinjective,
Tislm,
Tlnbtc,
Tltc,
Tmantra,
Toas,
Tosmo,
Topeth,
Tpolygon,
Tpolyx,
Trbtc,
Trune,
Trx,
Tsgb,
Tsei,
Tsol,
Tsoneium,
Tstx,
Tstt,
Tsui,
Tsusd,
Twemix,
Tworld,
Ttao,
Ttia,
Tton,
Ttrx,
Tvet,
Txlm,
Txdc,
Txrp,
Txtz,
Tzec,
Tzeta,
Tzketh,
Vet,
Wemix,
World,
WorldToken,
Xdc,
Xlm,
Xrp,
XrpToken,
Xtz,
Zec,
Zeta,
Zketh,
ZkethToken,
} from './coins';
export function registerCoinConstructors(coinFactory: CoinFactory, coinMap: CoinMap = coins): void {
coinFactory.register('ada', Ada.createInstance);
coinFactory.register('algo', Algo.createInstance);
coinFactory.register('apechain', Apechain.createInstance);
coinFactory.register('apt', Apt.createInstance);
coinFactory.register('arbeth', Arbeth.createInstance);
coinFactory.register('asi', Asi.createInstance);
coinFactory.register('atom', Atom.createInstance);
coinFactory.register('avaxc', AvaxC.createInstance);
coinFactory.register('avaxp', AvaxP.createInstance);
coinFactory.register('baby', Baby.createInstance);
coinFactory.register('bch', Bch.createInstance);
coinFactory.register('bcha', Bcha.createInstance);
coinFactory.register('bera', Bera.createInstance);
coinFactory.register('bld', Bld.createInstance);
coinFactory.register('bsc', Bsc.createInstance);
coinFactory.register('bsv', Bsv.createInstance);
coinFactory.register('btc', Btc.createInstance);
coinFactory.register('btg', Btg.createInstance);
coinFactory.register('celo', Celo.createInstance);
coinFactory.register('coredao', Coredao.createInstance);
coinFactory.register('coreum', Coreum.createInstance);
coinFactory.register('cronos', Cronos.createInstance);
coinFactory.register('cspr', Cspr.createInstance);
coinFactory.register('dash', Dash.createInstance);
coinFactory.register('doge', Doge.createInstance);
coinFactory.register('dot', Dot.createInstance);
coinFactory.register('eos', Eos.createInstance);
coinFactory.register('etc', Etc.createInstance);
coinFactory.register('eth', Eth.createInstance);
coinFactory.register('ethw', Ethw.createInstance);
coinFactory.register('baseeth', EthLikeCoin.createInstance);
coinFactory.register('tbaseeth', TethLikeCoin.createInstance);
coinFactory.register('fiataed', FiatAED.createInstance);
coinFactory.register('fiateur', FiatEur.createInstance);
coinFactory.register('fiatgbp', FiatGBP.createInstance);
coinFactory.register('fiatsgd', FiatSGD.createInstance);
coinFactory.register('fiatusd', FiatUsd.createInstance);
coinFactory.register('flr', Flr.createInstance);
coinFactory.register('gteth', Gteth.createInstance);
coinFactory.register('hash', Hash.createInstance);
coinFactory.register('hbar', Hbar.createInstance);
coinFactory.register('hteth', Hteth.createInstance);
coinFactory.register('lnbtc', Lnbtc.createInstance);
coinFactory.register('ltc', Ltc.createInstance);
coinFactory.register('mon', Mon.createInstance);
coinFactory.register('mantra', Mantra.createInstance);
coinFactory.register('icp', Icp.createInstance);
coinFactory.register('initia', Initia.createInstance);
coinFactory.register('injective', Injective.createInstance);
coinFactory.register('islm', Islm.createInstance);
coinFactory.register('near', Near.createInstance);
coinFactory.register('oas', Oas.createInstance);
coinFactory.register('ofc', Ofc.createInstance);
coinFactory.register('opeth', Opeth.createInstance);
coinFactory.register('osmo', Osmo.createInstance);
coinFactory.register('polygon', Polygon.createInstance);
coinFactory.register('polyx', Polyx.createInstance);
coinFactory.register('rbtc', Rbtc.createInstance);
coinFactory.register('thorchain:rune', Rune.createInstance);
coinFactory.register('sei', Sei.createInstance);
coinFactory.register('sgb', Sgb.createInstance);
coinFactory.register('sol', Sol.createInstance);
coinFactory.register('soneium', Soneium.createInstance);
coinFactory.register('stx', Stx.createInstance);
coinFactory.register('stt', Stt.createInstance);
coinFactory.register('sui', Sui.createInstance);
coinFactory.register('susd', Susd.createInstance);
coinFactory.register('tao', Tao.createInstance);
coinFactory.register('tia', Tia.createInstance);
coinFactory.register('ton', Ton.createInstance);
coinFactory.register('talgo', Talgo.createInstance);
coinFactory.register('tapechain', Tapechain.createInstance);
coinFactory.register('tapt', Tapt.createInstance);
coinFactory.register('tarbeth', Tarbeth.createInstance);
coinFactory.register('tada', Tada.createInstance);
coinFactory.register('tasi', Tasi.createInstance);
coinFactory.register('tatom', Tatom.createInstance);
coinFactory.register('tavaxc', TavaxC.createInstance);
coinFactory.register('tavaxp', TavaxP.createInstance);
coinFactory.register('tbaby', Tbaby.createInstance);
coinFactory.register('tbch', Tbch.createInstance);
coinFactory.register('tbcha', Tbcha.createInstance);
coinFactory.register('tbera', Tbera.createInstance);
coinFactory.register('tbld', Tbld.createInstance);
coinFactory.register('tbsc', Tbsc.createInstance);
coinFactory.register('tbsv', Tbsv.createInstance);
coinFactory.register('tbtc', Tbtc.createInstance);
coinFactory.register('tbtcsig', Tbtcsig.createInstance);
coinFactory.register('tbtc4', Tbtc4.createInstance);
coinFactory.register('tbtcbgsig', Tbtcbgsig.createInstance);
coinFactory.register('tcelo', Tcelo.createInstance);
coinFactory.register('tcoredao', Tcoredao.createInstance);
coinFactory.register('tcoreum', Tcoreum.createInstance);
coinFactory.register('tcronos', Tcronos.createInstance);
coinFactory.register('tcspr', Tcspr.createInstance);
coinFactory.register('tdash', Tdash.createInstance);
coinFactory.register('tdoge', Tdoge.createInstance);
coinFactory.register('tdot', Tdot.createInstance);
coinFactory.register('teos', Teos.createInstance);
coinFactory.register('tetc', Tetc.createInstance);
coinFactory.register('teth', Teth.createInstance);
coinFactory.register('tfiataed', TfiatAED.createInstance);
coinFactory.register('tfiateur', TfiatEur.createInstance);
coinFactory.register('tfiatgbp', TfiatGBP.createInstance);
coinFactory.register('tfiatsgd', TfiatSGD.createInstance);
coinFactory.register('tfiatusd', TfiatUsd.createInstance);
coinFactory.register('tflr', Tflr.createInstance);
coinFactory.register('tmon', Tmon.createInstance);
coinFactory.register('thash', Thash.createInstance);
coinFactory.register('thbar', Thbar.createInstance);
coinFactory.register('ticp', Ticp.createInstance);
coinFactory.register('tinitia', Tinitia.createInstance);
coinFactory.register('tinjective', Tinjective.createInstance);
coinFactory.register('tislm', Tislm.createInstance);
coinFactory.register('tlnbtc', Tlnbtc.createInstance);
coinFactory.register('tltc', Tltc.createInstance);
coinFactory.register('tmantra', Tmantra.createInstance);
coinFactory.register('tnear', TNear.createInstance);
coinFactory.register('toas', Toas.createInstance);
coinFactory.register('topeth', Topeth.createInstance);
coinFactory.register('tosmo', Tosmo.createInstance);
coinFactory.register('tpolygon', Tpolygon.createInstance);
coinFactory.register('tpolyx', Tpolyx.createInstance);
coinFactory.register('trbtc', Trbtc.createInstance);
coinFactory.register('tsgb', Tsgb.createInstance);
coinFactory.register('tthorchain:rune', Trune.createInstance);
coinFactory.register('trx', Trx.createInstance);
coinFactory.register('tsei', Tsei.createInstance);
coinFactory.register('tsol', Tsol.createInstance);
coinFactory.register('tsoneium', Tsoneium.createInstance);
coinFactory.register('tstx', Tstx.createInstance);
coinFactory.register('tstt', Tstt.createInstance);
coinFactory.register('tsui', Tsui.createInstance);
coinFactory.register('tsusd', Tsusd.createInstance);
coinFactory.register('ttao', Ttao.createInstance);
coinFactory.register('ttia', Ttia.createInstance);
coinFactory.register('tton', Tton.createInstance);
coinFactory.register('ttrx', Ttrx.createInstance);
coinFactory.register('tvet', Tvet.createInstance);
coinFactory.register('txdc', Txdc.createInstance);
coinFactory.register('txlm', Txlm.createInstance);
coinFactory.register('txrp', Txrp.createInstance);
coinFactory.register('txtz', Txtz.createInstance);
coinFactory.register('tzec', Tzec.createInstance);
coinFactory.register('tzeta', Tzeta.createInstance);
coinFactory.register('tzketh', Tzketh.createInstance);
coinFactory.register('twemix', Twemix.createInstance);
coinFactory.register('tworld', Tworld.createInstance);
coinFactory.register('vet', Vet.createInstance);
coinFactory.register('xdc', Xdc.createInstance);
coinFactory.register('xlm', Xlm.createInstance);
coinFactory.register('xrp', Xrp.createInstance);
coinFactory.register('xtz', Xtz.createInstance);
coinFactory.register('wemix', Wemix.createInstance);
coinFactory.register('world', World.createInstance);
coinFactory.register('zec', Zec.createInstance);
coinFactory.register('zeta', Zeta.createInstance);
coinFactory.register('zketh', Zketh.createInstance);
coins
.filter((coin) => coin.features.includes(CoinFeature.SHARED_EVM_SDK))
.forEach((coin) => {
coinFactory.register(coin.name, EvmCoin.createInstance);
});
const tokens = getFormattedTokens(coinMap);
Erc20Token.createTokenConstructors([...tokens.bitcoin.eth.tokens, ...tokens.testnet.eth.tokens]).forEach(
({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
}
);
StellarToken.createTokenConstructors([...tokens.bitcoin.xlm.tokens, ...tokens.testnet.xlm.tokens]).forEach(
({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
}
);
for (const ofcToken of [...tokens.bitcoin.ofc.tokens, ...tokens.testnet.ofc.tokens]) {
const tokenConstructor = OfcToken.createTokenConstructor(ofcToken);
coinFactory.register(ofcToken.type, tokenConstructor);
}
CeloToken.createTokenConstructors([...tokens.bitcoin.celo.tokens, ...tokens.testnet.celo.tokens]).forEach(
({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
}
);
BscToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
EosToken.createTokenConstructors([...tokens.bitcoin.eos.tokens, ...tokens.testnet.eos.tokens]).forEach(
({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
}
);
AlgoToken.createTokenConstructors([...tokens.bitcoin.algo.tokens, ...tokens.testnet.algo.tokens]).forEach(
({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
}
);
AvaxCToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
PolygonToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
SoneiumToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
ArbethToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
OpethToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
ZkethToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
BeraToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
CoredaoToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
WorldToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
SolToken.createTokenConstructors([...tokens.bitcoin.sol.tokens, ...tokens.testnet.sol.tokens]).forEach(
({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
}
);
HbarToken.createTokenConstructors([...tokens.bitcoin.hbar.tokens, ...tokens.testnet.hbar.tokens]).forEach(
({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
}
);
TrxToken.createTokenConstructors([...tokens.bitcoin.trx.tokens, ...tokens.testnet.trx.tokens]).forEach(
({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
}
);
AdaToken.createTokenConstructors([...tokens.bitcoin.ada.tokens, ...tokens.testnet.ada.tokens]).forEach(
({ name, coinConstructor }) => coinFactory.register(name, coinConstructor)
);
SuiToken.createTokenConstructors([...tokens.bitcoin.sui.tokens, ...tokens.testnet.sui.tokens]).forEach(
({ name, coinConstructor }) => coinFactory.register(name, coinConstructor)
);
XrpToken.createTokenConstructors([...tokens.bitcoin.xrp.tokens, ...tokens.testnet.xrp.tokens]).forEach(
({ name, coinConstructor }) => coinFactory.register(name, coinConstructor)
);
AptToken.createTokenConstructors([...tokens.bitcoin.apt.tokens, ...tokens.testnet.apt.tokens]).forEach(
({ name, coinConstructor }) => coinFactory.register(name, coinConstructor)
);
Sip10Token.createTokenConstructors([...tokens.bitcoin.stx.tokens, ...tokens.testnet.stx.tokens]).forEach(
({ name, coinConstructor }) => coinFactory.register(name, coinConstructor)
);
Nep141Token.createTokenConstructors([...tokens.bitcoin.near.tokens, ...tokens.testnet.near.tokens]).forEach(
({ name, coinConstructor }) => coinFactory.register(name, coinConstructor)
);
}
export function getCoinConstructor(coinName: string): CoinConstructor | undefined {
const evmCoins = coins.filter((coin) => coin.features.includes(CoinFeature.SHARED_EVM_SDK));
if (evmCoins.has(coinName)) {
return EvmCoin.createInstance;
}
switch (coinName) {
case 'ada':
return Ada.createInstance;
case 'algo':
return Algo.createInstance;
case 'apechain':
return Apechain.createInstance;
case 'apt':
return Apt.createInstance;
case 'arbeth':
return Arbeth.createInstance;
case 'asi':
return Asi.createInstance;
case 'atom':
return Atom.createInstance;
case 'avaxc':
return AvaxC.createInstance;
case 'avaxp':
return AvaxP.createInstance;
case 'baby':
return Baby.createInstance;
case 'bch':
return Bch.createInstance;
case 'bcha':
return Bcha.createInstance;
case 'bera':
return Bera.createInstance;
case 'bld':
return Bld.createInstance;
case 'bsc':
return Bsc.createInstance;
case 'bsv':
return Bsv.createInstance;
case 'btc':
return Btc.createInstance;
case 'btg':
return Btg.createInstance;
case 'celo':
return Celo.createInstance;
case 'coredao':
return Coredao.createInstance;
case 'coreum':
return Coreum.createInstance;
case 'cronos':
return Cronos.createInstance;
case 'cspr':
return Cspr.createInstance;
case 'dash':
return Dash.createInstance;
case 'doge':
return Doge.createInstance;
case 'dot':
return Dot.createInstance;
case 'eos':
return Eos.createInstance;
case 'etc':
return Etc.createInstance;
case 'eth':
return Eth.createInstance;
case 'ethw':
return Ethw.createInstance;
case 'baseeth':
return EthLikeCoin.createInstance;
case 'tbaseeth':
return TethLikeCoin.createInstance;
case 'fiataed':
return FiatAED.createInstance;
case 'fiateur':
return FiatEur.createInstance;
case 'fiatgbp':
return FiatGBP.createInstance;
case 'fiatsgd':
return FiatSGD.createInstance;
case 'fiatusd':
return FiatUsd.createInstance;
case 'flr':
return Flr.createInstance;
case 'gteth':
return Gteth.createInstance;
case 'hash':
return Hash.createInstance;
case 'hbar':
return Hbar.createInstance;
case 'hteth':
return Hteth.createInstance;
case 'lnbtc':
return Lnbtc.createInstance;
case 'ltc':
return Ltc.createInstance;
case 'mon':
return Mon.createInstance;
case 'mantra':
return Mantra.createInstance;
case 'icp':
return Icp.createInstance;
case 'initia':
return Initia.createInstance;
case 'injective':
return Injective.createInstance;
case 'islm':
return Islm.createInstance;
case 'near':
return Near.createInstance;
case 'oas':
return Oas.createInstance;
case 'ofc':
return Ofc.createInstance;
case 'opeth':
return Opeth.createInstance;
case 'osmo':
return Osmo.createInstance;
case 'polygon':
return Polygon.createInstance;
case 'polyx':
return Polyx.createInstance;
case 'rbtc':
return Rbtc.createInstance;
case 'thorchain:rune':
return Rune.createInstance;
case 'sei':
return Sei.createInstance;
case 'sgb':
return Sgb.createInstance;
case 'sol':
return Sol.createInstance;
case 'soneium':
return Soneium.createInstance;
case 'stx':
return Stx.createInstance;
case 'stt':
return Stt.createInstance;
case 'sui':
return Sui.createInstance;
case 'susd':
return Susd.createInstance;
case 'tao':
return Tao.createInstance;
case 'tia':
return Tia.createInstance;
case 'ton':
return Ton.createInstance;
case 'talgo':
return Talgo.createInstance;
case 'tapechain':
return Tapechain.createInstance;
case 'tapt':
return Tapt.createInstance;
case 'tarbeth':
return Tarbeth.createInstance;
case 'tada':
return Tada.createInstance;
case 'tasi':
return Tasi.createInstance;
case 'tatom':
return Tatom.createInstance;
case 'tavaxc':
return TavaxC.createInstance;
case 'tavaxp':
return TavaxP.createInstance;
case 'tbaby':
return Tbaby.createInstance;
case 'tbch':
return Tbch.createInstance;
case 'tbcha':
return Tbcha.createInstance;
case 'tbera':
return Tbera.createInstance;
case 'tbld':
return Tbld.createInstance;
case 'tbsc':
return Tbsc.createInstance;
case 'tbsv':
return Tbsv.createInstance;
case 'tbtc':
return Tbtc.createInstance;
case 'tbtcsig':
return Tbtcsig.createInstance;
case 'tbtc4':
return Tbtc4.createInstance;
case 'tbtcbgsig':
return Tbtcbgsig.createInstance;
case 'tcelo':
return Tcelo.createInstance;
case 'tcoredao':
return Tcoredao.createInstance;
case 'tcoreum':
return Tcoreum.createInstance;
case 'tcronos':
return Tcronos.createInstance;
case 'tcspr':
return Tcspr.createInstance;
case 'tdash':
return Tdash.createInstance;
case 'tdoge':
return Tdoge.createInstance;
case 'tdot':
return Tdot.createInstance;
case 'teos':
return Teos.createInstance;
case 'tetc':
return Tetc.createInstance;
case 'teth':
return Teth.createInstance;
case 'tfiataed':
return TfiatAED.createInstance;
case 'tfiateur':
return TfiatEur.createInstance;
case 'tfiatgbp':
return TfiatGBP.createInstance;
case 'tfiatsgd':
return TfiatSGD.createInstance;
case 'tfiatusd':
return TfiatUsd.createInstance;
case 'tflr':
return Tflr.createInstance;
case 'tmon':
return Tmon.createInstance;
case 'thash':
return Thash.createInstance;
case 'thbar':
return Thbar.createInstance;
case 'ticp':
return Ticp.createInstance;
case 'tinitia':
return Tinitia.createInstance;
case 'tinjective':
return Tinjective.createInstance;
case 'tislm':
return Tislm.createInstance;
case 'tlnbtc':
return Tlnbtc.createInstance;
case 'tltc':
return Tltc.createInstance;
case 'tmantra':
return Tmantra.createInstance;
case 'tnear':
return TNear.createInstance;
case 'toas':
return Toas.createInstance;
case 'topeth':
return Topeth.createInstance;
case 'tosmo':
return Tosmo.createInstance;
case 'tpolygon':
return Tpolygon.createInstance;
case 'tpolyx':
return Tpolyx.createInstance;
case 'trbtc':
return Trbtc.createInstance;
case 'tsgb':
return Tsgb.createInstance;
case 'tthorchain:rune':
return Trune.createInstance;
case 'trx':
return Trx.createInstance;
case 'tsei':
return Tsei.createInstance;
case 'tsol':
return Tsol.createInstance;
case 'tsoneium':
return Tsoneium.createInstance;
case 'tstx':
return Tstx.createInstance;
case 'tstt':
return Tstt.createInstance;
case 'tsui':
return Tsui.createInstance;
case 'tsusd':
return Tsusd.createInstance;
case 'ttao':
return Ttao.createInstance;
case 'ttia':
return Ttia.createInstance;
case 'tton':
return Tton.createInstance;
case 'ttrx':
return Ttrx.createInstance;
case 'tvet':
return Tvet.createInstance;
case 'txdc':
return Txdc.createInstance;
case 'txlm':
return Txlm.createInstance;
case 'txrp':
return Txrp.createInstance;
case 'txtz':
return Txtz.createInstance;
case 'tzec':
return Tzec.createInstance;
case 'tzeta':
return Tzeta.createInstance;
case 'tzketh':
return Tzketh.createInstance;
case 'twemix':
return Twemix.createInstance;
case 'tworld':
return Tworld.createInstance;
case 'vet':
return Vet.createInstance;
case 'xdc':
return Xdc.createInstance;
case 'xlm':
return Xlm.createInstance;
case 'xrp':
return Xrp.createInstance;
case 'xtz':
return Xtz.createInstance;
case 'wemix':
return Wemix.createInstance;
case 'world':
return World.createInstance;
case 'zec':
return Zec.createInstance;
case 'zeta':
return Zeta.createInstance;
case 'zketh':
return Zketh.createInstance;
default:
return undefined;
}
}
export function getTokenConstructor(tokenConfig: TokenConfig): CoinConstructor | undefined {
switch (tokenConfig.coin) {
case 'eth':
case 'hteth':
return Erc20Token.createTokenConstructor(tokenConfig as Erc20TokenConfig);
case 'xlm':
case 'txlm':
return StellarToken.createTokenConstructor(tokenConfig as StellarTokenConfig);
case 'ofc':
return OfcToken.createTokenConstructor(tokenConfig as OfcTokenConfig);
case 'celo':
case 'tcelo':
return CeloToken.createTokenConstructor(tokenConfig as CeloTokenConfig);
case 'bsc':
case 'tbsc':
return BscToken.createTokenConstructor(tokenConfig as Erc20TokenConfig);
case 'eos':
case 'teos':
return EosToken.createTokenConstructor(tokenConfig as EosTokenConfig);
case 'algo':
case 'talgo':
return AlgoToken.createTokenConstructor(tokenConfig as AlgoTokenConfig);
case 'avaxc':
case 'tavaxc':
return AvaxCToken.createTokenConstructor(tokenConfig as AvaxcTokenConfig);
case 'polygon':
case 'tpolygon':
return PolygonToken.createTokenConstructor(tokenConfig as EthLikeTokenConfig);
case 'soneium':
case 'tsoneium':
return SoneiumToken.createTokenConstructor(tokenConfig as EthLikeTokenConfig);
case 'arbeth':
case 'tarbeth':
return ArbethToken.createTokenConstructor(tokenConfig as EthLikeTokenConfig);
case 'opeth':
case 'topeth':
return OpethToken.createTokenConstructor(tokenConfig as EthLikeTokenConfig);
case 'zketh':
case 'tzketh':
return ZkethToken.createTokenConstructor(tokenConfig as EthLikeTokenConfig);
case 'bera':
case 'tbera':
return BeraToken.createTokenConstructor(tokenConfig as EthLikeTokenConfig);
case 'coredao':
case 'tcoredao':
return CoredaoToken.createTokenConstructor(tokenConfig as EthLikeTokenConfig);
case 'sol':
case 'tsol':
return SolToken.createTokenConstructor(tokenConfig as SolTokenConfig);
case 'hbar':
case 'thbar':
return HbarToken.createTokenConstructor(tokenConfig as HbarTokenConfig);
case 'trx':
case 'ttrx':
return TrxToken.createTokenConstructor(tokenConfig as TrxTokenConfig);
case 'ada':
case 'tada':
return AdaToken.createTokenConstructor(tokenConfig as AdaTokenConfig);
case 'sui':
case 'tsui':
return SuiToken.createTokenConstructor(tokenConfig as SuiTokenConfig);
case 'xrp':
case 'txrp':
return XrpToken.createTokenConstructor(tokenConfig as XrpTokenConfig);
case 'apt':
case 'tapt':
return AptToken.createTokenConstructor(tokenConfig as AptTokenConfig);
case 'stx':
case 'tstx':
return Sip10Token.createTokenConstructor(tokenConfig as Sip10TokenConfig);
case 'near':
case 'tnear':
return Nep141Token.createTokenConstructor(tokenConfig as Nep141TokenConfig);
default:
return undefined;
}
}
export const GlobalCoinFactory: CoinFactory = new CoinFactory();
registerCoinConstructors(GlobalCoinFactory);