UNPKG

@qso-soft/shared

Version:

Shared library for QSO-soft

92 lines 2.75 kB
import { WITHDRAW_ERROR } from '../../constants'; import { makeBinanceWithdraw, makeOkxWithdraw } from '../../modules'; import { BINANCE_NETWORKS, OKX_NETWORKS, } from '../../types'; export const runAutoGas = async ({ wallet, logger, client, network }) => { const logTemplate = { action: 'runAutoGas', status: 'in progress', }; const { autoGas } = QsoGlobal.settings; const currentAutoGasNetwork = AUTOGAS_SETTING_MAP[network]; if (!currentAutoGasNetwork || !(currentAutoGasNetwork in autoGas)) { return; } const currentAutoGas = autoGas[currentAutoGasNetwork]; const { useAutoGas, minBalance, withdrawToAmount, withdrawSleep, cex, expectedBalance } = currentAutoGas; const nativeToken = client.chainData.nativeCurrency.symbol; const { int: currentBalance } = await client.getNativeBalance(); if (!useAutoGas) { return; } if (currentBalance >= minBalance) { return; } const baseWithdrawArgs = { wallet, withdrawSleep, tokenToWithdraw: nativeToken, minAndMaxAmount: withdrawToAmount, minNativeBalance: minBalance, hideExtraLogs: true, logger, expectedBalance, }; let isDone = false; let successMessage; let errorMessage; if (cex === 'okx' && OKX_NETWORKS.includes(network)) { const res = await makeOkxWithdraw({ okxWithdrawNetwork: network, ...baseWithdrawArgs, }); isDone = res.status === 'success'; if (res.status === 'success') { isDone = true; successMessage = res.message; } else { errorMessage = res.message; } } if (cex === 'binance' && BINANCE_NETWORKS.includes(network)) { const res = await makeBinanceWithdraw({ binanceWithdrawNetwork: network, ...baseWithdrawArgs, }); if (res.status === 'success') { isDone = true; successMessage = res.message; } else { errorMessage = res.message; } } if (!isDone) { if (errorMessage) { throw new Error(errorMessage); } else { throw new Error(WITHDRAW_ERROR); } } if (successMessage) { logger.success(successMessage, logTemplate); } }; const AUTOGAS_SETTING_MAP = { bsc: 'BSC', opBNB: 'opBNB', eth: 'ERC20', polygon: 'Polygon', arbitrum: 'Arbitrum', avalanche: 'Avalanche', optimism: 'Optimism', zkSync: 'zkSync', base: 'Base', linea: 'Linea', fantom: 'Fantom', core: 'Core', celo: 'Celo', klay: 'Klayn', }; //# sourceMappingURL=auto-gas.js.map