@qso-soft/shared
Version:
Shared library for QSO-soft
92 lines • 2.75 kB
JavaScript
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