UNPKG

@bithive/relayer-api

Version:

BitHive Relayer API

50 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.waitUntilConfirmed = void 0; const common_1 = require("./common"); const client_1 = require("@trpc/client"); const statusesRecord = { Deposit: { pending: ['DepositProcessing'], success: ['DepositConfirmed', 'DepositConfirmedInvalid'], failure: ['DepositTimeout', 'DepositFailed'], }, Unstake: { pending: ['UnstakeProcessing'], success: ['UnstakeConfirmed'], failure: [], }, Withdraw: { pending: ['WithdrawChainSignProcessing', 'WithdrawProcessing'], success: ['WithdrawConfirmed'], failure: ['WithdrawTimeout', 'WithdrawFailed'], }, }; async function waitUntilConfirmed(client, action, input, options) { const start = Date.now(); while (true) { const { deposit } = await client.query('user.getDeposit', input); if (statusesRecord[action].pending.includes(deposit.status)) { if (options.preCheckOnly) { return; } else { if (Date.now() > start + options.timeout) { throw new client_1.TRPCClientError(`Waiting for ${action} action timeout with status ${deposit.status} for deposit (${deposit.depositTxHash}:${deposit.depositVout})`); } await (0, common_1.sleep)(options.interval); } } else if (statusesRecord[action].success.includes(deposit.status)) { return; } else if (statusesRecord[action].failure.includes(deposit.status)) { throw new client_1.TRPCClientError(`Waiting for ${action} action failed with status ${deposit.status} for deposit (${deposit.depositTxHash}:${deposit.depositVout})`); } else { throw new client_1.TRPCClientError(`Unexpected status ${deposit.status} for deposit (${deposit.depositTxHash}:${deposit.depositVout})`); } } } exports.waitUntilConfirmed = waitUntilConfirmed; //# sourceMappingURL=wait-until-confirmed.js.map