@bithive/relayer-api
Version:
BitHive Relayer API
50 lines • 2.08 kB
JavaScript
;
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