{"version":3,"file":"balance.cjs","sourceRoot":"","sources":["../../src/utils/balance.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AAEpD,wDAAoD;AACpD,wDAAwD;AACxD,mEAAuD;AAIvD,yCAA2C;AAEpC,MAAM,iBAAiB,GAAG,KAAK,EACpC,OAAe,EACf,WAAmB,EACnB,QAAkB,EACc,EAAE;IAClC,MAAM,cAAc,GAAG,IAAI,wBAAY,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,oBAAQ,CAAC,OAAO,EAAE,4BAAQ,EAAE,cAAc,CAAC,CAAC;IACtE,MAAM,mBAAmB,GACvB,OAAO,aAAa,EAAE,SAAS,KAAK,UAAU;QAC5C,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC;QACtC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,MAAM,mBAAmB,CAAC;AACnC,CAAC,CAAC;AAZW,QAAA,iBAAiB,qBAY5B;AAEK,MAAM,oBAAoB,GAAG,KAAK,EACvC,QAAkB,EAClB,eAAuB,EACvB,YAAoB,EACpB,OAAY,EACoB,EAAE;IAClC,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,IAAA,wBAAe,EAAC,YAAY,CAAC,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,IAAI,wBAAY,CAAC,QAAQ,CAAC,CAAC;YAClD,OAAO,MAAM,cAAc,CAAC,UAAU,CAAC,IAAA,oBAAU,EAAC,eAAe,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAAM,IAAA,yBAAiB,EAAC,YAAY,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAdW,QAAA,oBAAoB,wBAc/B;AAEK,MAAM,oBAAoB,GAAG,KAAK,EACvC,QAAkB,EAClB,eAAuB,EACvB,YAAoB,EACpB,eAAuB,EACvB,OAAY,EACZ,EAAE;IACF,MAAM,eAAe,GAAG,MAAM,IAAA,4BAAoB,EAChD,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,OAAO,CACR,CAAC;IAEF,OAAO,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxE,CAAC,CAAC;AAfW,QAAA,oBAAoB,wBAe/B","sourcesContent":["import { getAddress } from '@ethersproject/address';\nimport type { BigNumber } from '@ethersproject/bignumber';\nimport { Contract } from '@ethersproject/contracts';\nimport { Web3Provider } from '@ethersproject/providers';\nimport { abiERC20 } from '@metamask/metamask-eth-abis';\nimport type { Provider } from '@metamask/network-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport { isNativeAddress } from './bridge';\n\nexport const fetchTokenBalance = async (\n  address: string,\n  userAddress: string,\n  provider: Provider,\n): Promise<BigNumber | undefined> => {\n  const ethersProvider = new Web3Provider(provider);\n  const tokenContract = new Contract(address, abiERC20, ethersProvider);\n  const tokenBalancePromise =\n    typeof tokenContract?.balanceOf === 'function'\n      ? tokenContract.balanceOf(userAddress)\n      : Promise.resolve(undefined);\n  return await tokenBalancePromise;\n};\n\nexport const calcLatestSrcBalance = async (\n  provider: Provider,\n  selectedAddress: string,\n  tokenAddress: string,\n  chainId: Hex,\n): Promise<BigNumber | undefined> => {\n  if (tokenAddress && chainId) {\n    if (isNativeAddress(tokenAddress)) {\n      const ethersProvider = new Web3Provider(provider);\n      return await ethersProvider.getBalance(getAddress(selectedAddress));\n    }\n    return await fetchTokenBalance(tokenAddress, selectedAddress, provider);\n  }\n  return undefined;\n};\n\nexport const hasSufficientBalance = async (\n  provider: Provider,\n  selectedAddress: string,\n  tokenAddress: string,\n  fromTokenAmount: string,\n  chainId: Hex,\n) => {\n  const srcTokenBalance = await calcLatestSrcBalance(\n    provider,\n    selectedAddress,\n    tokenAddress,\n    chainId,\n  );\n\n  return srcTokenBalance ? srcTokenBalance.gte(fromTokenAmount) : false;\n};\n"]}