@broxus/js-bridge-essentials
Version:
Bridge JavaScript Essentials library
47 lines (46 loc) • 1.81 kB
JavaScript
import { resolveTvmAddress } from '@broxus/js-core';
import { tonTokenApiEndpoint } from '../../constants';
import { resolveTonAddress } from '../../utils';
export class TonTokenUtils {
static async getOffchainDetails(address) {
const details = await tonTokenApiEndpoint.fetch({ address: resolveTonAddress(address).toRawString() });
if (!details.symbol) {
throw new Error('Details does not contains symbol');
}
if (!details.decimals) {
throw new Error('Details does not contains decimals');
}
if (!details.name) {
throw new Error('Details does not contains name');
}
return {
address: resolveTonAddress(address),
decimals: Number(details.decimals),
logoURI: details.imageUrl ?? undefined,
name: details.name,
symbol: details.symbol,
};
}
static async walletOf(connection, params, cachedState) {
const tokenRawAddress = resolveTonAddress(params.tokenAddress).toRawString();
const ownerRawAddress = resolveTonAddress(params.ownerAddress).toRawString();
const result = await connection.runGetter({
address: resolveTvmAddress(tokenRawAddress),
cachedState,
inputData: {
walletOwner: resolveTvmAddress(ownerRawAddress),
},
inputStructure: [
{ name: 'walletOwner', type: 'address' },
],
method: 'get_wallet_address',
outputStructure: [
{ name: 'value0', type: 'address' },
],
});
if (!result.output?.value0) {
throw new Error('Wallet not found');
}
return resolveTonAddress(result.output.value0.toString());
}
}