cosmic-interchain-cli
Version:
A command-line utility for Cosmic Wire's interchain messaging protocol
34 lines • 1.57 kB
JavaScript
import { confirm } from '@inquirer/prompts';
import { ethers } from 'ethers';
import { logGreen, logRed } from '../logger.js';
export async function nativeBalancesAreSufficient(multiProvider, signer, chains, minGas) {
const address = await signer.getAddress();
const sufficientBalances = [];
for (const chain of chains) {
const provider = multiProvider.getProvider(chain);
const gasPrice = await provider.getGasPrice();
const minBalanceWei = gasPrice.mul(minGas).toString();
const minBalance = ethers.utils.formatEther(minBalanceWei.toString());
const balanceWei = await multiProvider
.getProvider(chain)
.getBalance(address);
const balance = ethers.utils.formatEther(balanceWei.toString());
if (balanceWei.lt(minBalanceWei)) {
const symbol = multiProvider.getChainMetadata(chain).nativeToken?.symbol ?? 'ETH';
logRed(`WARNING: ${address} has low balance on ${chain}. At least ${minBalance} ${symbol} recommended but found ${balance} ${symbol}`);
sufficientBalances.push(false);
}
}
const allSufficient = sufficientBalances.every((sufficient) => sufficient);
if (allSufficient) {
logGreen('✅ Balances are sufficient');
}
else {
const isResume = await confirm({
message: 'Deployment may fail due to insufficient balance(s). Continue?',
});
if (!isResume)
throw new Error('Canceled deployment due to low balance');
}
}
//# sourceMappingURL=balances.js.map