1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-22 01:47:00 +01:00
metamask-extension/shared/lib/token-util.ts

38 lines
1.4 KiB
TypeScript
Raw Permalink Normal View History

import { abiERC20 } from '@metamask/metamask-eth-abis';
import { Contract } from '@ethersproject/contracts';
import { Web3Provider } from '@ethersproject/providers';
/**
* Gets the '_value' parameter of the given token transaction data
* (i.e function call) per the Human Standard Token ABI, if present.
*
* @param {object} tokenData - ethers Interface token data.
* @returns {string | undefined} A decimal string value.
*/
/**
* Gets either the '_tokenId' parameter or the 'id' param of the passed token transaction data.,
* These are the parsed tokenId values returned by `parseStandardTokenTransactionData` as defined
* in the ERC721 and ERC1155 ABIs from metamask-eth-abis (https://github.com/MetaMask/metamask-eth-abis/tree/main/src/abis)
*
* @param tokenData - ethers Interface token data.
* @returns A decimal string value.
*/
export function getTokenIdParam(tokenData: any = {}): string | undefined {
return (
tokenData?.args?._tokenId?.toString() ?? tokenData?.args?.id?.toString()
);
}
export async function fetchTokenBalance(
address: string,
userAddress: string,
provider: any,
): Promise<any> {
const ethersProvider = new Web3Provider(provider);
const tokenContract = new Contract(address, abiERC20, ethersProvider);
const tokenBalancePromise = tokenContract
? tokenContract.balanceOf(userAddress)
: Promise.resolve();
return await tokenBalancePromise;
}