@@ -904,31 +904,44 @@ export function getCoinConstructor(coinName: string): CoinConstructor | undefine
904904 }
905905}
906906
907- export const buildEthLikeChainToTestnetMap = ( ) : Record < string , string > => {
908- const map : Record < string , string > = { } ;
907+ export const buildEthLikeChainToTestnetMap = ( ) : {
908+ mainnetToTestnetMap : Record < string , string > ;
909+ testnetToMainnetMap : Record < string , string > ;
910+ } => {
911+ const testnetToMainnetMap : Record < string , string > = { } ;
912+ const mainnetToTestnetMap : Record < string , string > = { } ;
909913
910914 const enabledEvmCoins = [ 'ip' ] ;
911915
912916 // TODO: remove ip coin here and remove other evm coins from switch block, once changes are tested (Ticket: https://bitgoinc.atlassian.net/browse/WIN-7835)
913917 coins . forEach ( ( coin ) => {
914918 if ( coin . network . type === NetworkType . TESTNET && ! coin . isToken && enabledEvmCoins . includes ( coin . family ) ) {
915919 if ( coins . get ( coin . family ) ?. features . includes ( CoinFeature . SUPPORTS_ERC20 ) ) {
916- map [ coin . family ] = `${ coin . name } ` ;
920+ mainnetToTestnetMap [ coin . family ] = `${ coin . name } ` ;
921+ testnetToMainnetMap [ coin . name ] = `${ coin . family } ` ;
917922 }
918923 }
919924 } ) ;
920925
921- return map ;
926+ return { mainnetToTestnetMap , testnetToMainnetMap } ;
922927} ;
923928
924929// TODO: add IP token here and test changes (Ticket: https://bitgoinc.atlassian.net/browse/WIN-7835)
925- const ethLikeChainToTestnetMap : Record < string , string > = buildEthLikeChainToTestnetMap ( ) ;
930+ const { mainnetToTestnetMap , testnetToMainnetMap } = buildEthLikeChainToTestnetMap ( ) ;
926931
927932export function getTokenConstructor ( tokenConfig : TokenConfig ) : CoinConstructor | undefined {
928- if ( tokenConfig . coin in ethLikeChainToTestnetMap ) {
933+ const testnetCoin = mainnetToTestnetMap [ tokenConfig . coin ] ;
934+ if ( testnetCoin ) {
929935 return EthLikeErc20Token . createTokenConstructor ( tokenConfig as EthLikeTokenConfig , {
930936 Mainnet : tokenConfig . coin ,
931- Testnet : ethLikeChainToTestnetMap [ tokenConfig . coin ] ,
937+ Testnet : testnetCoin ,
938+ } ) ;
939+ }
940+ const mainnetCoin = testnetToMainnetMap [ tokenConfig . coin ] ;
941+ if ( mainnetCoin ) {
942+ return EthLikeErc20Token . createTokenConstructor ( tokenConfig as EthLikeTokenConfig , {
943+ Mainnet : mainnetCoin ,
944+ Testnet : tokenConfig . coin ,
932945 } ) ;
933946 }
934947 switch ( tokenConfig . coin ) {
0 commit comments