2021-01-29 06:45:43 +00:00
|
|
|
import axios from "axios";
|
2021-01-25 14:23:03 +00:00
|
|
|
import { TokenType } from "../generic/tokentype";
|
|
|
|
import * as config from "../config";
|
|
|
|
|
|
|
|
// Asset ID from coin symbol (diff between native and token coins)
|
|
|
|
export function assetIdSymbol(tokenId: string, nativeCoinId: string, coinType: number): string {
|
|
|
|
if (tokenId == nativeCoinId) {
|
|
|
|
return assetID(coinType)
|
|
|
|
}
|
|
|
|
return assetID(coinType, tokenId)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Asset ID from coin number and ID
|
|
|
|
export function assetID(coinType: number, tokenId = ``): string {
|
|
|
|
if (tokenId.length > 0) {
|
|
|
|
return `c${coinType}_t${tokenId}`
|
2020-10-14 01:20:42 +00:00
|
|
|
}
|
2021-01-25 14:23:03 +00:00
|
|
|
return `c${coinType}`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Token type from token symbol (diff between native and token coins)
|
|
|
|
export function tokenType(symbol: string, nativeCoinSymbol: string, tokenType: string): string {
|
|
|
|
if (symbol == nativeCoinSymbol) {
|
|
|
|
return TokenType.COIN
|
|
|
|
}
|
|
|
|
return tokenType;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Github logo URL for coin.
|
|
|
|
export function logoURI(id: string, githubChainFolder: string, nativeCoinSymbol: string): string {
|
|
|
|
if (id == nativeCoinSymbol) {
|
|
|
|
return `${config.assetsURL}/blockchains/${githubChainFolder}/info/logo.png`
|
|
|
|
}
|
|
|
|
return `${config.assetsURL}/blockchains/${githubChainFolder}/assets/${id}/logo.png`
|
|
|
|
}
|
2021-01-29 06:45:43 +00:00
|
|
|
|
|
|
|
// Token info from TW api
|
|
|
|
// e.g. {"name":"Binance-Peg Cosmos","symbol":"ATOM","type":"BEP20","decimals":18,"asset_id":"c20000714_t0x0Eb3..."}
|
|
|
|
export class TokenTwInfo {
|
|
|
|
name: string;
|
|
|
|
symbol: string;
|
|
|
|
type: string;
|
|
|
|
decimals: number;
|
|
|
|
asset_id: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
export async function tokenInfoFromTwApi(assetID: string): Promise<TokenTwInfo> {
|
|
|
|
try {
|
|
|
|
const apiUrl = `https://api.trustwallet.com/v1/assets/${assetID}`;
|
|
|
|
const result = await axios.get(apiUrl).then(r => r.data);
|
|
|
|
if (!result || !result.asset_id) {
|
|
|
|
console.log("Unexpected result", result);
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
const info = result as TokenTwInfo;
|
|
|
|
return info;
|
|
|
|
} catch (err) {
|
|
|
|
console.log("Exception:", err);
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
}
|