UNPKG

@reservoir0x/relay-kit-ui

Version:

Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.

59 lines 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const useCurrencyBalance_js_1 = tslib_1.__importDefault(require("../hooks/useCurrencyBalance.js")); const relay_kit_hooks_1 = require("@reservoir0x/relay-kit-hooks"); const index_js_1 = require("../hooks/index.js"); exports.default = (chain, fromChain, token, address, balanceThresholdUsd = '2', topUpAmountUsd = '2') => { const client = (0, index_js_1.useRelayClient)(); const isErc20Currency = token && token.address !== chain?.currency?.address; const enabled = token !== undefined && address !== undefined && chain !== undefined && chain?.currency?.address !== undefined && chain?.currency?.supportsBridging && chain?.vmType === 'evm' && chain.id !== fromChain?.id && chain.id !== 169 && isErc20Currency; const { value: gasBalance } = (0, useCurrencyBalance_js_1.default)({ chain, address, currency: chain?.currency?.address ? chain.currency.address : undefined, enabled }); const { data: usdTokenPriceResponse } = (0, relay_kit_hooks_1.useTokenPrice)(client?.baseApiUrl, { address: chain?.currency?.address ?? '', chainId: chain?.id ?? 0, referrer: client?.source }, { refetchInterval: 60000 * 5, refetchOnWindowFocus: false, enabled }); if (enabled && gasBalance !== undefined && usdTokenPriceResponse?.price) { const tokenDecimals = chain?.currency?.decimals ?? 18; const balanceThreshold = (BigInt(Math.floor(+balanceThresholdUsd * 10 ** 6)) * BigInt(10 ** tokenDecimals)) / BigInt(Math.floor(usdTokenPriceResponse.price * 10 ** 6)); const topUpAmount = (BigInt(Math.floor(+topUpAmountUsd * 10 ** 6)) * BigInt(10 ** tokenDecimals)) / BigInt(Math.floor(usdTokenPriceResponse.price * 10 ** 6)); const requiresTopUp = balanceThreshold > gasBalance; return { required: requiresTopUp, amount: requiresTopUp ? topUpAmount : undefined, amountUsd: requiresTopUp ? topUpAmountUsd : undefined }; } else { return { required: false, amount: undefined, amountUsd: undefined }; } }; //# sourceMappingURL=useGasTopUpRequired.js.map