UNPKG

@reown/appkit-controllers

Version:

#### 🔗 [Website](https://reown.com/appkit)

84 lines • 3.4 kB
import { AccountController } from '../controllers/AccountController.js'; import { BlockchainApiController } from '../controllers/BlockchainApiController.js'; import { ChainController } from '../controllers/ChainController.js'; import { ConnectionController } from '../controllers/ConnectionController.js'; import { BalanceUtil } from './BalanceUtil.js'; import { getActiveNetworkTokenAddress } from './ChainControllerUtil.js'; // -- Controller ---------------------------------------- // export const SwapApiUtil = { async getTokenList() { const caipNetwork = ChainController.state.activeCaipNetwork; const response = await BlockchainApiController.fetchSwapTokens({ chainId: caipNetwork?.caipNetworkId }); const tokens = response?.tokens?.map(token => ({ ...token, eip2612: false, quantity: { decimals: '0', numeric: '0' }, price: 0, value: 0 })) || []; return tokens; }, async fetchGasPrice() { const caipNetwork = ChainController.state.activeCaipNetwork; if (!caipNetwork) { return null; } try { switch (caipNetwork.chainNamespace) { case 'solana': // eslint-disable-next-line no-case-declarations const lamportsPerSignature = (await ConnectionController?.estimateGas({ chainNamespace: 'solana' }))?.toString(); return { standard: lamportsPerSignature, fast: lamportsPerSignature, instant: lamportsPerSignature }; case 'eip155': default: return await BlockchainApiController.fetchGasPrice({ chainId: caipNetwork.caipNetworkId }); } } catch { return null; } }, async fetchSwapAllowance({ tokenAddress, userAddress, sourceTokenAmount, sourceTokenDecimals }) { const response = await BlockchainApiController.fetchSwapAllowance({ tokenAddress, userAddress }); if (response?.allowance && sourceTokenAmount && sourceTokenDecimals) { const parsedValue = ConnectionController.parseUnits(sourceTokenAmount, sourceTokenDecimals) || 0; const hasAllowance = BigInt(response.allowance) >= parsedValue; return hasAllowance; } return false; }, async getMyTokensWithBalance(forceUpdate) { const balances = await BalanceUtil.getMyTokensWithBalance(forceUpdate); AccountController.setTokenBalance(balances, ChainController.state.activeChain); return this.mapBalancesToSwapTokens(balances); }, /** * Maps the balances from Blockchain API to SwapTokenWithBalance array * @param balances * @returns SwapTokenWithBalance[] */ mapBalancesToSwapTokens(balances) { return (balances?.map(token => ({ ...token, address: token?.address ? token.address : getActiveNetworkTokenAddress(), decimals: parseInt(token.quantity.decimals, 10), logoUri: token.iconUrl, eip2612: false })) || []); } }; //# sourceMappingURL=SwapApiUtil.js.map